##// END OF EJS Templates
silence a PyQt4 warning message reported on IPython-user...
darren.dale -
Show More
@@ -1,1199 +1,1205 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 3006 2008-02-01 18:00:26Z fperez $"""
7 $Id: Shell.py 3024 2008-02-07 15:34:42Z darren.dale $"""
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 # Stdlib imports
21 # Stdlib imports
22 import __builtin__
22 import __builtin__
23 import __main__
23 import __main__
24 import Queue
24 import Queue
25 import inspect
25 import inspect
26 import os
26 import os
27 import sys
27 import sys
28 import thread
28 import thread
29 import threading
29 import threading
30 import time
30 import time
31
31
32 from signal import signal, SIGINT
32 from signal import signal, SIGINT
33
33
34 try:
34 try:
35 import ctypes
35 import ctypes
36 HAS_CTYPES = True
36 HAS_CTYPES = True
37 except ImportError:
37 except ImportError:
38 HAS_CTYPES = False
38 HAS_CTYPES = False
39
39
40 # IPython imports
40 # IPython imports
41 import IPython
41 import IPython
42 from IPython import ultraTB, ipapi
42 from IPython import ultraTB, ipapi
43 from IPython.genutils import Term,warn,error,flag_calls, ask_yes_no
43 from IPython.genutils import Term,warn,error,flag_calls, ask_yes_no
44 from IPython.iplib import InteractiveShell
44 from IPython.iplib import InteractiveShell
45 from IPython.ipmaker import make_IPython
45 from IPython.ipmaker import make_IPython
46 from IPython.Magic import Magic
46 from IPython.Magic import Magic
47 from IPython.ipstruct import Struct
47 from IPython.ipstruct import Struct
48
48
49 # Globals
49 # Globals
50 # global flag to pass around information about Ctrl-C without exceptions
50 # global flag to pass around information about Ctrl-C without exceptions
51 KBINT = False
51 KBINT = False
52
52
53 # global flag to turn on/off Tk support.
53 # global flag to turn on/off Tk support.
54 USE_TK = False
54 USE_TK = False
55
55
56 # ID for the main thread, used for cross-thread exceptions
56 # ID for the main thread, used for cross-thread exceptions
57 MAIN_THREAD_ID = thread.get_ident()
57 MAIN_THREAD_ID = thread.get_ident()
58
58
59 # Tag when runcode() is active, for exception handling
59 # Tag when runcode() is active, for exception handling
60 CODE_RUN = None
60 CODE_RUN = None
61
61
62 #-----------------------------------------------------------------------------
62 #-----------------------------------------------------------------------------
63 # This class is trivial now, but I want to have it in to publish a clean
63 # This class is trivial now, but I want to have it in to publish a clean
64 # interface. Later when the internals are reorganized, code that uses this
64 # interface. Later when the internals are reorganized, code that uses this
65 # shouldn't have to change.
65 # shouldn't have to change.
66
66
67 class IPShell:
67 class IPShell:
68 """Create an IPython instance."""
68 """Create an IPython instance."""
69
69
70 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
70 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
71 debug=1,shell_class=InteractiveShell):
71 debug=1,shell_class=InteractiveShell):
72 self.IP = make_IPython(argv,user_ns=user_ns,
72 self.IP = make_IPython(argv,user_ns=user_ns,
73 user_global_ns=user_global_ns,
73 user_global_ns=user_global_ns,
74 debug=debug,shell_class=shell_class)
74 debug=debug,shell_class=shell_class)
75
75
76 def mainloop(self,sys_exit=0,banner=None):
76 def mainloop(self,sys_exit=0,banner=None):
77 self.IP.mainloop(banner)
77 self.IP.mainloop(banner)
78 if sys_exit:
78 if sys_exit:
79 sys.exit()
79 sys.exit()
80
80
81 #-----------------------------------------------------------------------------
81 #-----------------------------------------------------------------------------
82 def kill_embedded(self,parameter_s=''):
82 def kill_embedded(self,parameter_s=''):
83 """%kill_embedded : deactivate for good the current embedded IPython.
83 """%kill_embedded : deactivate for good the current embedded IPython.
84
84
85 This function (after asking for confirmation) sets an internal flag so that
85 This function (after asking for confirmation) sets an internal flag so that
86 an embedded IPython will never activate again. This is useful to
86 an embedded IPython will never activate again. This is useful to
87 permanently disable a shell that is being called inside a loop: once you've
87 permanently disable a shell that is being called inside a loop: once you've
88 figured out what you needed from it, you may then kill it and the program
88 figured out what you needed from it, you may then kill it and the program
89 will then continue to run without the interactive shell interfering again.
89 will then continue to run without the interactive shell interfering again.
90 """
90 """
91
91
92 kill = ask_yes_no("Are you sure you want to kill this embedded instance "
92 kill = ask_yes_no("Are you sure you want to kill this embedded instance "
93 "(y/n)? [y/N] ",'n')
93 "(y/n)? [y/N] ",'n')
94 if kill:
94 if kill:
95 self.shell.embedded_active = False
95 self.shell.embedded_active = False
96 print "This embedded IPython will not reactivate anymore once you exit."
96 print "This embedded IPython will not reactivate anymore once you exit."
97
97
98 class IPShellEmbed:
98 class IPShellEmbed:
99 """Allow embedding an IPython shell into a running program.
99 """Allow embedding an IPython shell into a running program.
100
100
101 Instances of this class are callable, with the __call__ method being an
101 Instances of this class are callable, with the __call__ method being an
102 alias to the embed() method of an InteractiveShell instance.
102 alias to the embed() method of an InteractiveShell instance.
103
103
104 Usage (see also the example-embed.py file for a running example):
104 Usage (see also the example-embed.py file for a running example):
105
105
106 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
106 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
107
107
108 - argv: list containing valid command-line options for IPython, as they
108 - argv: list containing valid command-line options for IPython, as they
109 would appear in sys.argv[1:].
109 would appear in sys.argv[1:].
110
110
111 For example, the following command-line options:
111 For example, the following command-line options:
112
112
113 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
113 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
114
114
115 would be passed in the argv list as:
115 would be passed in the argv list as:
116
116
117 ['-prompt_in1','Input <\\#>','-colors','LightBG']
117 ['-prompt_in1','Input <\\#>','-colors','LightBG']
118
118
119 - banner: string which gets printed every time the interpreter starts.
119 - banner: string which gets printed every time the interpreter starts.
120
120
121 - exit_msg: string which gets printed every time the interpreter exits.
121 - exit_msg: string which gets printed every time the interpreter exits.
122
122
123 - rc_override: a dict or Struct of configuration options such as those
123 - rc_override: a dict or Struct of configuration options such as those
124 used by IPython. These options are read from your ~/.ipython/ipythonrc
124 used by IPython. These options are read from your ~/.ipython/ipythonrc
125 file when the Shell object is created. Passing an explicit rc_override
125 file when the Shell object is created. Passing an explicit rc_override
126 dict with any options you want allows you to override those values at
126 dict with any options you want allows you to override those values at
127 creation time without having to modify the file. This way you can create
127 creation time without having to modify the file. This way you can create
128 embeddable instances configured in any way you want without editing any
128 embeddable instances configured in any way you want without editing any
129 global files (thus keeping your interactive IPython configuration
129 global files (thus keeping your interactive IPython configuration
130 unchanged).
130 unchanged).
131
131
132 Then the ipshell instance can be called anywhere inside your code:
132 Then the ipshell instance can be called anywhere inside your code:
133
133
134 ipshell(header='') -> Opens up an IPython shell.
134 ipshell(header='') -> Opens up an IPython shell.
135
135
136 - header: string printed by the IPython shell upon startup. This can let
136 - header: string printed by the IPython shell upon startup. This can let
137 you know where in your code you are when dropping into the shell. Note
137 you know where in your code you are when dropping into the shell. Note
138 that 'banner' gets prepended to all calls, so header is used for
138 that 'banner' gets prepended to all calls, so header is used for
139 location-specific information.
139 location-specific information.
140
140
141 For more details, see the __call__ method below.
141 For more details, see the __call__ method below.
142
142
143 When the IPython shell is exited with Ctrl-D, normal program execution
143 When the IPython shell is exited with Ctrl-D, normal program execution
144 resumes.
144 resumes.
145
145
146 This functionality was inspired by a posting on comp.lang.python by cmkl
146 This functionality was inspired by a posting on comp.lang.python by cmkl
147 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
147 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
148 by the IDL stop/continue commands."""
148 by the IDL stop/continue commands."""
149
149
150 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None,
150 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None,
151 user_ns=None):
151 user_ns=None):
152 """Note that argv here is a string, NOT a list."""
152 """Note that argv here is a string, NOT a list."""
153 self.set_banner(banner)
153 self.set_banner(banner)
154 self.set_exit_msg(exit_msg)
154 self.set_exit_msg(exit_msg)
155 self.set_dummy_mode(0)
155 self.set_dummy_mode(0)
156
156
157 # sys.displayhook is a global, we need to save the user's original
157 # sys.displayhook is a global, we need to save the user's original
158 # Don't rely on __displayhook__, as the user may have changed that.
158 # Don't rely on __displayhook__, as the user may have changed that.
159 self.sys_displayhook_ori = sys.displayhook
159 self.sys_displayhook_ori = sys.displayhook
160
160
161 # save readline completer status
161 # save readline completer status
162 try:
162 try:
163 #print 'Save completer',sys.ipcompleter # dbg
163 #print 'Save completer',sys.ipcompleter # dbg
164 self.sys_ipcompleter_ori = sys.ipcompleter
164 self.sys_ipcompleter_ori = sys.ipcompleter
165 except:
165 except:
166 pass # not nested with IPython
166 pass # not nested with IPython
167
167
168 self.IP = make_IPython(argv,rc_override=rc_override,
168 self.IP = make_IPython(argv,rc_override=rc_override,
169 embedded=True,
169 embedded=True,
170 user_ns=user_ns)
170 user_ns=user_ns)
171
171
172 ip = ipapi.IPApi(self.IP)
172 ip = ipapi.IPApi(self.IP)
173 ip.expose_magic("kill_embedded",kill_embedded)
173 ip.expose_magic("kill_embedded",kill_embedded)
174
174
175 # copy our own displayhook also
175 # copy our own displayhook also
176 self.sys_displayhook_embed = sys.displayhook
176 self.sys_displayhook_embed = sys.displayhook
177 # and leave the system's display hook clean
177 # and leave the system's display hook clean
178 sys.displayhook = self.sys_displayhook_ori
178 sys.displayhook = self.sys_displayhook_ori
179 # don't use the ipython crash handler so that user exceptions aren't
179 # don't use the ipython crash handler so that user exceptions aren't
180 # trapped
180 # trapped
181 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
181 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
182 mode = self.IP.rc.xmode,
182 mode = self.IP.rc.xmode,
183 call_pdb = self.IP.rc.pdb)
183 call_pdb = self.IP.rc.pdb)
184 self.restore_system_completer()
184 self.restore_system_completer()
185
185
186 def restore_system_completer(self):
186 def restore_system_completer(self):
187 """Restores the readline completer which was in place.
187 """Restores the readline completer which was in place.
188
188
189 This allows embedded IPython within IPython not to disrupt the
189 This allows embedded IPython within IPython not to disrupt the
190 parent's completion.
190 parent's completion.
191 """
191 """
192
192
193 try:
193 try:
194 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
194 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
195 sys.ipcompleter = self.sys_ipcompleter_ori
195 sys.ipcompleter = self.sys_ipcompleter_ori
196 except:
196 except:
197 pass
197 pass
198
198
199 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
199 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
200 """Activate the interactive interpreter.
200 """Activate the interactive interpreter.
201
201
202 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
202 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
203 the interpreter shell with the given local and global namespaces, and
203 the interpreter shell with the given local and global namespaces, and
204 optionally print a header string at startup.
204 optionally print a header string at startup.
205
205
206 The shell can be globally activated/deactivated using the
206 The shell can be globally activated/deactivated using the
207 set/get_dummy_mode methods. This allows you to turn off a shell used
207 set/get_dummy_mode methods. This allows you to turn off a shell used
208 for debugging globally.
208 for debugging globally.
209
209
210 However, *each* time you call the shell you can override the current
210 However, *each* time you call the shell you can override the current
211 state of dummy_mode with the optional keyword parameter 'dummy'. For
211 state of dummy_mode with the optional keyword parameter 'dummy'. For
212 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
212 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
213 can still have a specific call work by making it as IPShell(dummy=0).
213 can still have a specific call work by making it as IPShell(dummy=0).
214
214
215 The optional keyword parameter dummy controls whether the call
215 The optional keyword parameter dummy controls whether the call
216 actually does anything. """
216 actually does anything. """
217
217
218 # If the user has turned it off, go away
218 # If the user has turned it off, go away
219 if not self.IP.embedded_active:
219 if not self.IP.embedded_active:
220 return
220 return
221
221
222 # Normal exits from interactive mode set this flag, so the shell can't
222 # Normal exits from interactive mode set this flag, so the shell can't
223 # re-enter (it checks this variable at the start of interactive mode).
223 # re-enter (it checks this variable at the start of interactive mode).
224 self.IP.exit_now = False
224 self.IP.exit_now = False
225
225
226 # Allow the dummy parameter to override the global __dummy_mode
226 # Allow the dummy parameter to override the global __dummy_mode
227 if dummy or (dummy != 0 and self.__dummy_mode):
227 if dummy or (dummy != 0 and self.__dummy_mode):
228 return
228 return
229
229
230 # Set global subsystems (display,completions) to our values
230 # Set global subsystems (display,completions) to our values
231 sys.displayhook = self.sys_displayhook_embed
231 sys.displayhook = self.sys_displayhook_embed
232 if self.IP.has_readline:
232 if self.IP.has_readline:
233 self.IP.set_completer()
233 self.IP.set_completer()
234
234
235 if self.banner and header:
235 if self.banner and header:
236 format = '%s\n%s\n'
236 format = '%s\n%s\n'
237 else:
237 else:
238 format = '%s%s\n'
238 format = '%s%s\n'
239 banner = format % (self.banner,header)
239 banner = format % (self.banner,header)
240
240
241 # Call the embedding code with a stack depth of 1 so it can skip over
241 # Call the embedding code with a stack depth of 1 so it can skip over
242 # our call and get the original caller's namespaces.
242 # our call and get the original caller's namespaces.
243 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
243 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
244
244
245 if self.exit_msg:
245 if self.exit_msg:
246 print self.exit_msg
246 print self.exit_msg
247
247
248 # Restore global systems (display, completion)
248 # Restore global systems (display, completion)
249 sys.displayhook = self.sys_displayhook_ori
249 sys.displayhook = self.sys_displayhook_ori
250 self.restore_system_completer()
250 self.restore_system_completer()
251
251
252 def set_dummy_mode(self,dummy):
252 def set_dummy_mode(self,dummy):
253 """Sets the embeddable shell's dummy mode parameter.
253 """Sets the embeddable shell's dummy mode parameter.
254
254
255 set_dummy_mode(dummy): dummy = 0 or 1.
255 set_dummy_mode(dummy): dummy = 0 or 1.
256
256
257 This parameter is persistent and makes calls to the embeddable shell
257 This parameter is persistent and makes calls to the embeddable shell
258 silently return without performing any action. This allows you to
258 silently return without performing any action. This allows you to
259 globally activate or deactivate a shell you're using with a single call.
259 globally activate or deactivate a shell you're using with a single call.
260
260
261 If you need to manually"""
261 If you need to manually"""
262
262
263 if dummy not in [0,1,False,True]:
263 if dummy not in [0,1,False,True]:
264 raise ValueError,'dummy parameter must be boolean'
264 raise ValueError,'dummy parameter must be boolean'
265 self.__dummy_mode = dummy
265 self.__dummy_mode = dummy
266
266
267 def get_dummy_mode(self):
267 def get_dummy_mode(self):
268 """Return the current value of the dummy mode parameter.
268 """Return the current value of the dummy mode parameter.
269 """
269 """
270 return self.__dummy_mode
270 return self.__dummy_mode
271
271
272 def set_banner(self,banner):
272 def set_banner(self,banner):
273 """Sets the global banner.
273 """Sets the global banner.
274
274
275 This banner gets prepended to every header printed when the shell
275 This banner gets prepended to every header printed when the shell
276 instance is called."""
276 instance is called."""
277
277
278 self.banner = banner
278 self.banner = banner
279
279
280 def set_exit_msg(self,exit_msg):
280 def set_exit_msg(self,exit_msg):
281 """Sets the global exit_msg.
281 """Sets the global exit_msg.
282
282
283 This exit message gets printed upon exiting every time the embedded
283 This exit message gets printed upon exiting every time the embedded
284 shell is called. It is None by default. """
284 shell is called. It is None by default. """
285
285
286 self.exit_msg = exit_msg
286 self.exit_msg = exit_msg
287
287
288 #-----------------------------------------------------------------------------
288 #-----------------------------------------------------------------------------
289 if HAS_CTYPES:
289 if HAS_CTYPES:
290 # Add async exception support. Trick taken from:
290 # Add async exception support. Trick taken from:
291 # http://sebulba.wikispaces.com/recipe+thread2
291 # http://sebulba.wikispaces.com/recipe+thread2
292 def _async_raise(tid, exctype):
292 def _async_raise(tid, exctype):
293 """raises the exception, performs cleanup if needed"""
293 """raises the exception, performs cleanup if needed"""
294 if not inspect.isclass(exctype):
294 if not inspect.isclass(exctype):
295 raise TypeError("Only types can be raised (not instances)")
295 raise TypeError("Only types can be raised (not instances)")
296 res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid,
296 res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid,
297 ctypes.py_object(exctype))
297 ctypes.py_object(exctype))
298 if res == 0:
298 if res == 0:
299 raise ValueError("invalid thread id")
299 raise ValueError("invalid thread id")
300 elif res != 1:
300 elif res != 1:
301 # """if it returns a number greater than one, you're in trouble,
301 # """if it returns a number greater than one, you're in trouble,
302 # and you should call it again with exc=NULL to revert the effect"""
302 # and you should call it again with exc=NULL to revert the effect"""
303 ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
303 ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
304 raise SystemError("PyThreadState_SetAsyncExc failed")
304 raise SystemError("PyThreadState_SetAsyncExc failed")
305
305
306 def sigint_handler (signum,stack_frame):
306 def sigint_handler (signum,stack_frame):
307 """Sigint handler for threaded apps.
307 """Sigint handler for threaded apps.
308
308
309 This is a horrible hack to pass information about SIGINT _without_
309 This is a horrible hack to pass information about SIGINT _without_
310 using exceptions, since I haven't been able to properly manage
310 using exceptions, since I haven't been able to properly manage
311 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
311 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
312 done (or at least that's my understanding from a c.l.py thread where
312 done (or at least that's my understanding from a c.l.py thread where
313 this was discussed)."""
313 this was discussed)."""
314
314
315 global KBINT
315 global KBINT
316
316
317 if CODE_RUN:
317 if CODE_RUN:
318 _async_raise(MAIN_THREAD_ID,KeyboardInterrupt)
318 _async_raise(MAIN_THREAD_ID,KeyboardInterrupt)
319 else:
319 else:
320 KBINT = True
320 KBINT = True
321 print '\nKeyboardInterrupt - Press <Enter> to continue.',
321 print '\nKeyboardInterrupt - Press <Enter> to continue.',
322 Term.cout.flush()
322 Term.cout.flush()
323
323
324 else:
324 else:
325 def sigint_handler (signum,stack_frame):
325 def sigint_handler (signum,stack_frame):
326 """Sigint handler for threaded apps.
326 """Sigint handler for threaded apps.
327
327
328 This is a horrible hack to pass information about SIGINT _without_
328 This is a horrible hack to pass information about SIGINT _without_
329 using exceptions, since I haven't been able to properly manage
329 using exceptions, since I haven't been able to properly manage
330 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
330 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
331 done (or at least that's my understanding from a c.l.py thread where
331 done (or at least that's my understanding from a c.l.py thread where
332 this was discussed)."""
332 this was discussed)."""
333
333
334 global KBINT
334 global KBINT
335
335
336 print '\nKeyboardInterrupt - Press <Enter> to continue.',
336 print '\nKeyboardInterrupt - Press <Enter> to continue.',
337 Term.cout.flush()
337 Term.cout.flush()
338 # Set global flag so that runsource can know that Ctrl-C was hit
338 # Set global flag so that runsource can know that Ctrl-C was hit
339 KBINT = True
339 KBINT = True
340
340
341
341
342 class MTInteractiveShell(InteractiveShell):
342 class MTInteractiveShell(InteractiveShell):
343 """Simple multi-threaded shell."""
343 """Simple multi-threaded shell."""
344
344
345 # Threading strategy taken from:
345 # Threading strategy taken from:
346 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
346 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
347 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
347 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
348 # from the pygtk mailing list, to avoid lockups with system calls.
348 # from the pygtk mailing list, to avoid lockups with system calls.
349
349
350 # class attribute to indicate whether the class supports threads or not.
350 # class attribute to indicate whether the class supports threads or not.
351 # Subclasses with thread support should override this as needed.
351 # Subclasses with thread support should override this as needed.
352 isthreaded = True
352 isthreaded = True
353
353
354 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
354 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
355 user_ns=None,user_global_ns=None,banner2='',**kw):
355 user_ns=None,user_global_ns=None,banner2='',**kw):
356 """Similar to the normal InteractiveShell, but with threading control"""
356 """Similar to the normal InteractiveShell, but with threading control"""
357
357
358 InteractiveShell.__init__(self,name,usage,rc,user_ns,
358 InteractiveShell.__init__(self,name,usage,rc,user_ns,
359 user_global_ns,banner2)
359 user_global_ns,banner2)
360
360
361 # Locking control variable.
361 # Locking control variable.
362 self.thread_ready = threading.Condition(threading.RLock())
362 self.thread_ready = threading.Condition(threading.RLock())
363
363
364 # A queue to hold the code to be executed. A scalar variable is NOT
364 # A queue to hold the code to be executed. A scalar variable is NOT
365 # enough, because uses like macros cause reentrancy.
365 # enough, because uses like macros cause reentrancy.
366 self.code_queue = Queue.Queue()
366 self.code_queue = Queue.Queue()
367
367
368 # Stuff to do at closing time
368 # Stuff to do at closing time
369 self._kill = False
369 self._kill = False
370 on_kill = kw.get('on_kill')
370 on_kill = kw.get('on_kill')
371 if on_kill is None:
371 if on_kill is None:
372 on_kill = []
372 on_kill = []
373 # Check that all things to kill are callable:
373 # Check that all things to kill are callable:
374 for t in on_kill:
374 for t in on_kill:
375 if not callable(t):
375 if not callable(t):
376 raise TypeError,'on_kill must be a list of callables'
376 raise TypeError,'on_kill must be a list of callables'
377 self.on_kill = on_kill
377 self.on_kill = on_kill
378
378
379 def runsource(self, source, filename="<input>", symbol="single"):
379 def runsource(self, source, filename="<input>", symbol="single"):
380 """Compile and run some source in the interpreter.
380 """Compile and run some source in the interpreter.
381
381
382 Modified version of code.py's runsource(), to handle threading issues.
382 Modified version of code.py's runsource(), to handle threading issues.
383 See the original for full docstring details."""
383 See the original for full docstring details."""
384
384
385 global KBINT
385 global KBINT
386
386
387 # If Ctrl-C was typed, we reset the flag and return right away
387 # If Ctrl-C was typed, we reset the flag and return right away
388 if KBINT:
388 if KBINT:
389 KBINT = False
389 KBINT = False
390 return False
390 return False
391
391
392 try:
392 try:
393 code = self.compile(source, filename, symbol)
393 code = self.compile(source, filename, symbol)
394 except (OverflowError, SyntaxError, ValueError):
394 except (OverflowError, SyntaxError, ValueError):
395 # Case 1
395 # Case 1
396 self.showsyntaxerror(filename)
396 self.showsyntaxerror(filename)
397 return False
397 return False
398
398
399 if code is None:
399 if code is None:
400 # Case 2
400 # Case 2
401 return True
401 return True
402
402
403 # Case 3
403 # Case 3
404 # Store code in queue, so the execution thread can handle it.
404 # Store code in queue, so the execution thread can handle it.
405
405
406 # Note that with macros and other applications, we MAY re-enter this
406 # Note that with macros and other applications, we MAY re-enter this
407 # section, so we have to acquire the lock with non-blocking semantics,
407 # section, so we have to acquire the lock with non-blocking semantics,
408 # else we deadlock.
408 # else we deadlock.
409 got_lock = self.thread_ready.acquire()
409 got_lock = self.thread_ready.acquire()
410 self.code_queue.put(code)
410 self.code_queue.put(code)
411 if got_lock:
411 if got_lock:
412 self.thread_ready.wait() # Wait until processed in timeout interval
412 self.thread_ready.wait() # Wait until processed in timeout interval
413 self.thread_ready.release()
413 self.thread_ready.release()
414
414
415 return False
415 return False
416
416
417 def runcode(self):
417 def runcode(self):
418 """Execute a code object.
418 """Execute a code object.
419
419
420 Multithreaded wrapper around IPython's runcode()."""
420 Multithreaded wrapper around IPython's runcode()."""
421
421
422 global CODE_RUN
422 global CODE_RUN
423
423
424 # lock thread-protected stuff
424 # lock thread-protected stuff
425 got_lock = self.thread_ready.acquire()
425 got_lock = self.thread_ready.acquire()
426
426
427 if self._kill:
427 if self._kill:
428 print >>Term.cout, 'Closing threads...',
428 print >>Term.cout, 'Closing threads...',
429 Term.cout.flush()
429 Term.cout.flush()
430 for tokill in self.on_kill:
430 for tokill in self.on_kill:
431 tokill()
431 tokill()
432 print >>Term.cout, 'Done.'
432 print >>Term.cout, 'Done.'
433
433
434 # Install sigint handler. We do it every time to ensure that if user
434 # Install sigint handler. We do it every time to ensure that if user
435 # code modifies it, we restore our own handling.
435 # code modifies it, we restore our own handling.
436 try:
436 try:
437 signal(SIGINT,sigint_handler)
437 signal(SIGINT,sigint_handler)
438 except SystemError:
438 except SystemError:
439 # This happens under Windows, which seems to have all sorts
439 # This happens under Windows, which seems to have all sorts
440 # of problems with signal handling. Oh well...
440 # of problems with signal handling. Oh well...
441 pass
441 pass
442
442
443 # Flush queue of pending code by calling the run methood of the parent
443 # Flush queue of pending code by calling the run methood of the parent
444 # class with all items which may be in the queue.
444 # class with all items which may be in the queue.
445 code_to_run = None
445 code_to_run = None
446 while 1:
446 while 1:
447 try:
447 try:
448 code_to_run = self.code_queue.get_nowait()
448 code_to_run = self.code_queue.get_nowait()
449 except Queue.Empty:
449 except Queue.Empty:
450 break
450 break
451
451
452 # Exceptions need to be raised differently depending on which
452 # Exceptions need to be raised differently depending on which
453 # thread is active. This convoluted try/except is only there to
453 # thread is active. This convoluted try/except is only there to
454 # protect against asynchronous exceptions, to ensure that a KBINT
454 # protect against asynchronous exceptions, to ensure that a KBINT
455 # at the wrong time doesn't deadlock everything. The global
455 # at the wrong time doesn't deadlock everything. The global
456 # CODE_TO_RUN is set to true/false as close as possible to the
456 # CODE_TO_RUN is set to true/false as close as possible to the
457 # runcode() call, so that the KBINT handler is correctly informed.
457 # runcode() call, so that the KBINT handler is correctly informed.
458 try:
458 try:
459 try:
459 try:
460 CODE_RUN = True
460 CODE_RUN = True
461 InteractiveShell.runcode(self,code_to_run)
461 InteractiveShell.runcode(self,code_to_run)
462 except KeyboardInterrupt:
462 except KeyboardInterrupt:
463 print "Keyboard interrupted in mainloop"
463 print "Keyboard interrupted in mainloop"
464 while not self.code_queue.empty():
464 while not self.code_queue.empty():
465 self.code_queue.get_nowait()
465 self.code_queue.get_nowait()
466 break
466 break
467 finally:
467 finally:
468 if got_lock:
468 if got_lock:
469 CODE_RUN = False
469 CODE_RUN = False
470
470
471 # We're done with thread-protected variables
471 # We're done with thread-protected variables
472 if code_to_run is not None:
472 if code_to_run is not None:
473 self.thread_ready.notify()
473 self.thread_ready.notify()
474 self.thread_ready.release()
474 self.thread_ready.release()
475
475
476 # We're done...
476 # We're done...
477 CODE_RUN = False
477 CODE_RUN = False
478 # This MUST return true for gtk threading to work
478 # This MUST return true for gtk threading to work
479 return True
479 return True
480
480
481 def kill(self):
481 def kill(self):
482 """Kill the thread, returning when it has been shut down."""
482 """Kill the thread, returning when it has been shut down."""
483 got_lock = self.thread_ready.acquire(False)
483 got_lock = self.thread_ready.acquire(False)
484 self._kill = True
484 self._kill = True
485 if got_lock:
485 if got_lock:
486 self.thread_ready.release()
486 self.thread_ready.release()
487
487
488 class MatplotlibShellBase:
488 class MatplotlibShellBase:
489 """Mixin class to provide the necessary modifications to regular IPython
489 """Mixin class to provide the necessary modifications to regular IPython
490 shell classes for matplotlib support.
490 shell classes for matplotlib support.
491
491
492 Given Python's MRO, this should be used as the FIRST class in the
492 Given Python's MRO, this should be used as the FIRST class in the
493 inheritance hierarchy, so that it overrides the relevant methods."""
493 inheritance hierarchy, so that it overrides the relevant methods."""
494
494
495 def _matplotlib_config(self,name,user_ns):
495 def _matplotlib_config(self,name,user_ns):
496 """Return items needed to setup the user's shell with matplotlib"""
496 """Return items needed to setup the user's shell with matplotlib"""
497
497
498 # Initialize matplotlib to interactive mode always
498 # Initialize matplotlib to interactive mode always
499 import matplotlib
499 import matplotlib
500 from matplotlib import backends
500 from matplotlib import backends
501 matplotlib.interactive(True)
501 matplotlib.interactive(True)
502
502
503 def use(arg):
503 def use(arg):
504 """IPython wrapper for matplotlib's backend switcher.
504 """IPython wrapper for matplotlib's backend switcher.
505
505
506 In interactive use, we can not allow switching to a different
506 In interactive use, we can not allow switching to a different
507 interactive backend, since thread conflicts will most likely crash
507 interactive backend, since thread conflicts will most likely crash
508 the python interpreter. This routine does a safety check first,
508 the python interpreter. This routine does a safety check first,
509 and refuses to perform a dangerous switch. It still allows
509 and refuses to perform a dangerous switch. It still allows
510 switching to non-interactive backends."""
510 switching to non-interactive backends."""
511
511
512 if arg in backends.interactive_bk and arg != self.mpl_backend:
512 if arg in backends.interactive_bk and arg != self.mpl_backend:
513 m=('invalid matplotlib backend switch.\n'
513 m=('invalid matplotlib backend switch.\n'
514 'This script attempted to switch to the interactive '
514 'This script attempted to switch to the interactive '
515 'backend: `%s`\n'
515 'backend: `%s`\n'
516 'Your current choice of interactive backend is: `%s`\n\n'
516 'Your current choice of interactive backend is: `%s`\n\n'
517 'Switching interactive matplotlib backends at runtime\n'
517 'Switching interactive matplotlib backends at runtime\n'
518 'would crash the python interpreter, '
518 'would crash the python interpreter, '
519 'and IPython has blocked it.\n\n'
519 'and IPython has blocked it.\n\n'
520 'You need to either change your choice of matplotlib backend\n'
520 'You need to either change your choice of matplotlib backend\n'
521 'by editing your .matplotlibrc file, or run this script as a \n'
521 'by editing your .matplotlibrc file, or run this script as a \n'
522 'standalone file from the command line, not using IPython.\n' %
522 'standalone file from the command line, not using IPython.\n' %
523 (arg,self.mpl_backend) )
523 (arg,self.mpl_backend) )
524 raise RuntimeError, m
524 raise RuntimeError, m
525 else:
525 else:
526 self.mpl_use(arg)
526 self.mpl_use(arg)
527 self.mpl_use._called = True
527 self.mpl_use._called = True
528
528
529 self.matplotlib = matplotlib
529 self.matplotlib = matplotlib
530 self.mpl_backend = matplotlib.rcParams['backend']
530 self.mpl_backend = matplotlib.rcParams['backend']
531
531
532 # we also need to block switching of interactive backends by use()
532 # we also need to block switching of interactive backends by use()
533 self.mpl_use = matplotlib.use
533 self.mpl_use = matplotlib.use
534 self.mpl_use._called = False
534 self.mpl_use._called = False
535 # overwrite the original matplotlib.use with our wrapper
535 # overwrite the original matplotlib.use with our wrapper
536 matplotlib.use = use
536 matplotlib.use = use
537
537
538 # This must be imported last in the matplotlib series, after
538 # This must be imported last in the matplotlib series, after
539 # backend/interactivity choices have been made
539 # backend/interactivity choices have been made
540 import matplotlib.pylab as pylab
540 import matplotlib.pylab as pylab
541 self.pylab = pylab
541 self.pylab = pylab
542
542
543 self.pylab.show._needmain = False
543 self.pylab.show._needmain = False
544 # We need to detect at runtime whether show() is called by the user.
544 # We need to detect at runtime whether show() is called by the user.
545 # For this, we wrap it into a decorator which adds a 'called' flag.
545 # For this, we wrap it into a decorator which adds a 'called' flag.
546 self.pylab.draw_if_interactive = flag_calls(self.pylab.draw_if_interactive)
546 self.pylab.draw_if_interactive = flag_calls(self.pylab.draw_if_interactive)
547
547
548 # Build a user namespace initialized with matplotlib/matlab features.
548 # Build a user namespace initialized with matplotlib/matlab features.
549 user_ns = IPython.ipapi.make_user_ns(user_ns)
549 user_ns = IPython.ipapi.make_user_ns(user_ns)
550
550
551 exec ("import matplotlib\n"
551 exec ("import matplotlib\n"
552 "import matplotlib.pylab as pylab\n") in user_ns
552 "import matplotlib.pylab as pylab\n") in user_ns
553
553
554 # Build matplotlib info banner
554 # Build matplotlib info banner
555 b="""
555 b="""
556 Welcome to pylab, a matplotlib-based Python environment.
556 Welcome to pylab, a matplotlib-based Python environment.
557 For more information, type 'help(pylab)'.
557 For more information, type 'help(pylab)'.
558 """
558 """
559 return user_ns,b
559 return user_ns,b
560
560
561 def mplot_exec(self,fname,*where,**kw):
561 def mplot_exec(self,fname,*where,**kw):
562 """Execute a matplotlib script.
562 """Execute a matplotlib script.
563
563
564 This is a call to execfile(), but wrapped in safeties to properly
564 This is a call to execfile(), but wrapped in safeties to properly
565 handle interactive rendering and backend switching."""
565 handle interactive rendering and backend switching."""
566
566
567 #print '*** Matplotlib runner ***' # dbg
567 #print '*** Matplotlib runner ***' # dbg
568 # turn off rendering until end of script
568 # turn off rendering until end of script
569 isInteractive = self.matplotlib.rcParams['interactive']
569 isInteractive = self.matplotlib.rcParams['interactive']
570 self.matplotlib.interactive(False)
570 self.matplotlib.interactive(False)
571 self.safe_execfile(fname,*where,**kw)
571 self.safe_execfile(fname,*where,**kw)
572 self.matplotlib.interactive(isInteractive)
572 self.matplotlib.interactive(isInteractive)
573 # make rendering call now, if the user tried to do it
573 # make rendering call now, if the user tried to do it
574 if self.pylab.draw_if_interactive.called:
574 if self.pylab.draw_if_interactive.called:
575 self.pylab.draw()
575 self.pylab.draw()
576 self.pylab.draw_if_interactive.called = False
576 self.pylab.draw_if_interactive.called = False
577
577
578 # if a backend switch was performed, reverse it now
578 # if a backend switch was performed, reverse it now
579 if self.mpl_use._called:
579 if self.mpl_use._called:
580 self.matplotlib.rcParams['backend'] = self.mpl_backend
580 self.matplotlib.rcParams['backend'] = self.mpl_backend
581
581
582 def magic_run(self,parameter_s=''):
582 def magic_run(self,parameter_s=''):
583 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
583 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
584
584
585 # Fix the docstring so users see the original as well
585 # Fix the docstring so users see the original as well
586 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
586 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
587 "\n *** Modified %run for Matplotlib,"
587 "\n *** Modified %run for Matplotlib,"
588 " with proper interactive handling ***")
588 " with proper interactive handling ***")
589
589
590 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
590 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
591 # and multithreaded. Note that these are meant for internal use, the IPShell*
591 # and multithreaded. Note that these are meant for internal use, the IPShell*
592 # classes below are the ones meant for public consumption.
592 # classes below are the ones meant for public consumption.
593
593
594 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
594 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
595 """Single-threaded shell with matplotlib support."""
595 """Single-threaded shell with matplotlib support."""
596
596
597 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
597 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
598 user_ns=None,user_global_ns=None,**kw):
598 user_ns=None,user_global_ns=None,**kw):
599 user_ns,b2 = self._matplotlib_config(name,user_ns)
599 user_ns,b2 = self._matplotlib_config(name,user_ns)
600 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
600 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
601 banner2=b2,**kw)
601 banner2=b2,**kw)
602
602
603 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
603 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
604 """Multi-threaded shell with matplotlib support."""
604 """Multi-threaded shell with matplotlib support."""
605
605
606 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
606 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
607 user_ns=None,user_global_ns=None, **kw):
607 user_ns=None,user_global_ns=None, **kw):
608 user_ns,b2 = self._matplotlib_config(name,user_ns)
608 user_ns,b2 = self._matplotlib_config(name,user_ns)
609 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
609 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
610 banner2=b2,**kw)
610 banner2=b2,**kw)
611
611
612 #-----------------------------------------------------------------------------
612 #-----------------------------------------------------------------------------
613 # Utility functions for the different GUI enabled IPShell* classes.
613 # Utility functions for the different GUI enabled IPShell* classes.
614
614
615 def get_tk():
615 def get_tk():
616 """Tries to import Tkinter and returns a withdrawn Tkinter root
616 """Tries to import Tkinter and returns a withdrawn Tkinter root
617 window. If Tkinter is already imported or not available, this
617 window. If Tkinter is already imported or not available, this
618 returns None. This function calls `hijack_tk` underneath.
618 returns None. This function calls `hijack_tk` underneath.
619 """
619 """
620 if not USE_TK or sys.modules.has_key('Tkinter'):
620 if not USE_TK or sys.modules.has_key('Tkinter'):
621 return None
621 return None
622 else:
622 else:
623 try:
623 try:
624 import Tkinter
624 import Tkinter
625 except ImportError:
625 except ImportError:
626 return None
626 return None
627 else:
627 else:
628 hijack_tk()
628 hijack_tk()
629 r = Tkinter.Tk()
629 r = Tkinter.Tk()
630 r.withdraw()
630 r.withdraw()
631 return r
631 return r
632
632
633 def hijack_tk():
633 def hijack_tk():
634 """Modifies Tkinter's mainloop with a dummy so when a module calls
634 """Modifies Tkinter's mainloop with a dummy so when a module calls
635 mainloop, it does not block.
635 mainloop, it does not block.
636
636
637 """
637 """
638 def misc_mainloop(self, n=0):
638 def misc_mainloop(self, n=0):
639 pass
639 pass
640 def tkinter_mainloop(n=0):
640 def tkinter_mainloop(n=0):
641 pass
641 pass
642
642
643 import Tkinter
643 import Tkinter
644 Tkinter.Misc.mainloop = misc_mainloop
644 Tkinter.Misc.mainloop = misc_mainloop
645 Tkinter.mainloop = tkinter_mainloop
645 Tkinter.mainloop = tkinter_mainloop
646
646
647 def update_tk(tk):
647 def update_tk(tk):
648 """Updates the Tkinter event loop. This is typically called from
648 """Updates the Tkinter event loop. This is typically called from
649 the respective WX or GTK mainloops.
649 the respective WX or GTK mainloops.
650 """
650 """
651 if tk:
651 if tk:
652 tk.update()
652 tk.update()
653
653
654 def hijack_wx():
654 def hijack_wx():
655 """Modifies wxPython's MainLoop with a dummy so user code does not
655 """Modifies wxPython's MainLoop with a dummy so user code does not
656 block IPython. The hijacked mainloop function is returned.
656 block IPython. The hijacked mainloop function is returned.
657 """
657 """
658 def dummy_mainloop(*args, **kw):
658 def dummy_mainloop(*args, **kw):
659 pass
659 pass
660
660
661 try:
661 try:
662 import wx
662 import wx
663 except ImportError:
663 except ImportError:
664 # For very old versions of WX
664 # For very old versions of WX
665 import wxPython as wx
665 import wxPython as wx
666
666
667 ver = wx.__version__
667 ver = wx.__version__
668 orig_mainloop = None
668 orig_mainloop = None
669 if ver[:3] >= '2.5':
669 if ver[:3] >= '2.5':
670 import wx
670 import wx
671 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
671 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
672 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
672 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
673 else: raise AttributeError('Could not find wx core module')
673 else: raise AttributeError('Could not find wx core module')
674 orig_mainloop = core.PyApp_MainLoop
674 orig_mainloop = core.PyApp_MainLoop
675 core.PyApp_MainLoop = dummy_mainloop
675 core.PyApp_MainLoop = dummy_mainloop
676 elif ver[:3] == '2.4':
676 elif ver[:3] == '2.4':
677 orig_mainloop = wx.wxc.wxPyApp_MainLoop
677 orig_mainloop = wx.wxc.wxPyApp_MainLoop
678 wx.wxc.wxPyApp_MainLoop = dummy_mainloop
678 wx.wxc.wxPyApp_MainLoop = dummy_mainloop
679 else:
679 else:
680 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
680 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
681 return orig_mainloop
681 return orig_mainloop
682
682
683 def hijack_gtk():
683 def hijack_gtk():
684 """Modifies pyGTK's mainloop with a dummy so user code does not
684 """Modifies pyGTK's mainloop with a dummy so user code does not
685 block IPython. This function returns the original `gtk.mainloop`
685 block IPython. This function returns the original `gtk.mainloop`
686 function that has been hijacked.
686 function that has been hijacked.
687 """
687 """
688 def dummy_mainloop(*args, **kw):
688 def dummy_mainloop(*args, **kw):
689 pass
689 pass
690 import gtk
690 import gtk
691 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
691 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
692 else: orig_mainloop = gtk.mainloop
692 else: orig_mainloop = gtk.mainloop
693 gtk.mainloop = dummy_mainloop
693 gtk.mainloop = dummy_mainloop
694 gtk.main = dummy_mainloop
694 gtk.main = dummy_mainloop
695 return orig_mainloop
695 return orig_mainloop
696
696
697 def hijack_qt():
697 def hijack_qt():
698 """Modifies PyQt's mainloop with a dummy so user code does not
698 """Modifies PyQt's mainloop with a dummy so user code does not
699 block IPython. This function returns the original
699 block IPython. This function returns the original
700 `qt.qApp.exec_loop` function that has been hijacked.
700 `qt.qApp.exec_loop` function that has been hijacked.
701 """
701 """
702 def dummy_mainloop(*args, **kw):
702 def dummy_mainloop(*args, **kw):
703 pass
703 pass
704 import qt
704 import qt
705 orig_mainloop = qt.qApp.exec_loop
705 orig_mainloop = qt.qApp.exec_loop
706 qt.qApp.exec_loop = dummy_mainloop
706 qt.qApp.exec_loop = dummy_mainloop
707 qt.QApplication.exec_loop = dummy_mainloop
707 qt.QApplication.exec_loop = dummy_mainloop
708 return orig_mainloop
708 return orig_mainloop
709
709
710 def hijack_qt4():
710 def hijack_qt4():
711 """Modifies PyQt4's mainloop with a dummy so user code does not
711 """Modifies PyQt4's mainloop with a dummy so user code does not
712 block IPython. This function returns the original
712 block IPython. This function returns the original
713 `QtGui.qApp.exec_` function that has been hijacked.
713 `QtGui.qApp.exec_` function that has been hijacked.
714 """
714 """
715 def dummy_mainloop(*args, **kw):
715 def dummy_mainloop(*args, **kw):
716 pass
716 pass
717 from PyQt4 import QtGui, QtCore
717 from PyQt4 import QtGui, QtCore
718 orig_mainloop = QtGui.qApp.exec_
718 orig_mainloop = QtGui.qApp.exec_
719 QtGui.qApp.exec_ = dummy_mainloop
719 QtGui.qApp.exec_ = dummy_mainloop
720 QtGui.QApplication.exec_ = dummy_mainloop
720 QtGui.QApplication.exec_ = dummy_mainloop
721 QtCore.QCoreApplication.exec_ = dummy_mainloop
721 QtCore.QCoreApplication.exec_ = dummy_mainloop
722 return orig_mainloop
722 return orig_mainloop
723
723
724 #-----------------------------------------------------------------------------
724 #-----------------------------------------------------------------------------
725 # The IPShell* classes below are the ones meant to be run by external code as
725 # The IPShell* classes below are the ones meant to be run by external code as
726 # IPython instances. Note that unless a specific threading strategy is
726 # IPython instances. Note that unless a specific threading strategy is
727 # desired, the factory function start() below should be used instead (it
727 # desired, the factory function start() below should be used instead (it
728 # selects the proper threaded class).
728 # selects the proper threaded class).
729
729
730 class IPThread(threading.Thread):
730 class IPThread(threading.Thread):
731 def run(self):
731 def run(self):
732 self.IP.mainloop(self._banner)
732 self.IP.mainloop(self._banner)
733 self.IP.kill()
733 self.IP.kill()
734
734
735 class IPShellGTK(IPThread):
735 class IPShellGTK(IPThread):
736 """Run a gtk mainloop() in a separate thread.
736 """Run a gtk mainloop() in a separate thread.
737
737
738 Python commands can be passed to the thread where they will be executed.
738 Python commands can be passed to the thread where they will be executed.
739 This is implemented by periodically checking for passed code using a
739 This is implemented by periodically checking for passed code using a
740 GTK timeout callback."""
740 GTK timeout callback."""
741
741
742 TIMEOUT = 100 # Millisecond interval between timeouts.
742 TIMEOUT = 100 # Millisecond interval between timeouts.
743
743
744 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
744 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
745 debug=1,shell_class=MTInteractiveShell):
745 debug=1,shell_class=MTInteractiveShell):
746
746
747 import gtk
747 import gtk
748
748
749 self.gtk = gtk
749 self.gtk = gtk
750 self.gtk_mainloop = hijack_gtk()
750 self.gtk_mainloop = hijack_gtk()
751
751
752 # Allows us to use both Tk and GTK.
752 # Allows us to use both Tk and GTK.
753 self.tk = get_tk()
753 self.tk = get_tk()
754
754
755 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
755 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
756 else: mainquit = self.gtk.mainquit
756 else: mainquit = self.gtk.mainquit
757
757
758 self.IP = make_IPython(argv,user_ns=user_ns,
758 self.IP = make_IPython(argv,user_ns=user_ns,
759 user_global_ns=user_global_ns,
759 user_global_ns=user_global_ns,
760 debug=debug,
760 debug=debug,
761 shell_class=shell_class,
761 shell_class=shell_class,
762 on_kill=[mainquit])
762 on_kill=[mainquit])
763
763
764 # HACK: slot for banner in self; it will be passed to the mainloop
764 # HACK: slot for banner in self; it will be passed to the mainloop
765 # method only and .run() needs it. The actual value will be set by
765 # method only and .run() needs it. The actual value will be set by
766 # .mainloop().
766 # .mainloop().
767 self._banner = None
767 self._banner = None
768
768
769 threading.Thread.__init__(self)
769 threading.Thread.__init__(self)
770
770
771 def mainloop(self,sys_exit=0,banner=None):
771 def mainloop(self,sys_exit=0,banner=None):
772
772
773 self._banner = banner
773 self._banner = banner
774
774
775 if self.gtk.pygtk_version >= (2,4,0):
775 if self.gtk.pygtk_version >= (2,4,0):
776 import gobject
776 import gobject
777 gobject.idle_add(self.on_timer)
777 gobject.idle_add(self.on_timer)
778 else:
778 else:
779 self.gtk.idle_add(self.on_timer)
779 self.gtk.idle_add(self.on_timer)
780
780
781 if sys.platform != 'win32':
781 if sys.platform != 'win32':
782 try:
782 try:
783 if self.gtk.gtk_version[0] >= 2:
783 if self.gtk.gtk_version[0] >= 2:
784 self.gtk.gdk.threads_init()
784 self.gtk.gdk.threads_init()
785 except AttributeError:
785 except AttributeError:
786 pass
786 pass
787 except RuntimeError:
787 except RuntimeError:
788 error('Your pyGTK likely has not been compiled with '
788 error('Your pyGTK likely has not been compiled with '
789 'threading support.\n'
789 'threading support.\n'
790 'The exception printout is below.\n'
790 'The exception printout is below.\n'
791 'You can either rebuild pyGTK with threads, or '
791 'You can either rebuild pyGTK with threads, or '
792 'try using \n'
792 'try using \n'
793 'matplotlib with a different backend (like Tk or WX).\n'
793 'matplotlib with a different backend (like Tk or WX).\n'
794 'Note that matplotlib will most likely not work in its '
794 'Note that matplotlib will most likely not work in its '
795 'current state!')
795 'current state!')
796 self.IP.InteractiveTB()
796 self.IP.InteractiveTB()
797
797
798 self.start()
798 self.start()
799 self.gtk.gdk.threads_enter()
799 self.gtk.gdk.threads_enter()
800 self.gtk_mainloop()
800 self.gtk_mainloop()
801 self.gtk.gdk.threads_leave()
801 self.gtk.gdk.threads_leave()
802 self.join()
802 self.join()
803
803
804 def on_timer(self):
804 def on_timer(self):
805 """Called when GTK is idle.
805 """Called when GTK is idle.
806
806
807 Must return True always, otherwise GTK stops calling it"""
807 Must return True always, otherwise GTK stops calling it"""
808
808
809 update_tk(self.tk)
809 update_tk(self.tk)
810 self.IP.runcode()
810 self.IP.runcode()
811 time.sleep(0.01)
811 time.sleep(0.01)
812 return True
812 return True
813
813
814
814
815 class IPShellWX(IPThread):
815 class IPShellWX(IPThread):
816 """Run a wx mainloop() in a separate thread.
816 """Run a wx mainloop() in a separate thread.
817
817
818 Python commands can be passed to the thread where they will be executed.
818 Python commands can be passed to the thread where they will be executed.
819 This is implemented by periodically checking for passed code using a
819 This is implemented by periodically checking for passed code using a
820 GTK timeout callback."""
820 GTK timeout callback."""
821
821
822 TIMEOUT = 100 # Millisecond interval between timeouts.
822 TIMEOUT = 100 # Millisecond interval between timeouts.
823
823
824 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
824 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
825 debug=1,shell_class=MTInteractiveShell):
825 debug=1,shell_class=MTInteractiveShell):
826
826
827 self.IP = make_IPython(argv,user_ns=user_ns,
827 self.IP = make_IPython(argv,user_ns=user_ns,
828 user_global_ns=user_global_ns,
828 user_global_ns=user_global_ns,
829 debug=debug,
829 debug=debug,
830 shell_class=shell_class,
830 shell_class=shell_class,
831 on_kill=[self.wxexit])
831 on_kill=[self.wxexit])
832
832
833 wantedwxversion=self.IP.rc.wxversion
833 wantedwxversion=self.IP.rc.wxversion
834 if wantedwxversion!="0":
834 if wantedwxversion!="0":
835 try:
835 try:
836 import wxversion
836 import wxversion
837 except ImportError:
837 except ImportError:
838 error('The wxversion module is needed for WX version selection')
838 error('The wxversion module is needed for WX version selection')
839 else:
839 else:
840 try:
840 try:
841 wxversion.select(wantedwxversion)
841 wxversion.select(wantedwxversion)
842 except:
842 except:
843 self.IP.InteractiveTB()
843 self.IP.InteractiveTB()
844 error('Requested wxPython version %s could not be loaded' %
844 error('Requested wxPython version %s could not be loaded' %
845 wantedwxversion)
845 wantedwxversion)
846
846
847 import wx
847 import wx
848
848
849 threading.Thread.__init__(self)
849 threading.Thread.__init__(self)
850 self.wx = wx
850 self.wx = wx
851 self.wx_mainloop = hijack_wx()
851 self.wx_mainloop = hijack_wx()
852
852
853 # Allows us to use both Tk and GTK.
853 # Allows us to use both Tk and GTK.
854 self.tk = get_tk()
854 self.tk = get_tk()
855
855
856 # HACK: slot for banner in self; it will be passed to the mainloop
856 # HACK: slot for banner in self; it will be passed to the mainloop
857 # method only and .run() needs it. The actual value will be set by
857 # method only and .run() needs it. The actual value will be set by
858 # .mainloop().
858 # .mainloop().
859 self._banner = None
859 self._banner = None
860
860
861 self.app = None
861 self.app = None
862
862
863 def wxexit(self, *args):
863 def wxexit(self, *args):
864 if self.app is not None:
864 if self.app is not None:
865 self.app.agent.timer.Stop()
865 self.app.agent.timer.Stop()
866 self.app.ExitMainLoop()
866 self.app.ExitMainLoop()
867
867
868 def mainloop(self,sys_exit=0,banner=None):
868 def mainloop(self,sys_exit=0,banner=None):
869
869
870 self._banner = banner
870 self._banner = banner
871
871
872 self.start()
872 self.start()
873
873
874 class TimerAgent(self.wx.MiniFrame):
874 class TimerAgent(self.wx.MiniFrame):
875 wx = self.wx
875 wx = self.wx
876 IP = self.IP
876 IP = self.IP
877 tk = self.tk
877 tk = self.tk
878 def __init__(self, parent, interval):
878 def __init__(self, parent, interval):
879 style = self.wx.DEFAULT_FRAME_STYLE | self.wx.TINY_CAPTION_HORIZ
879 style = self.wx.DEFAULT_FRAME_STYLE | self.wx.TINY_CAPTION_HORIZ
880 self.wx.MiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
880 self.wx.MiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
881 size=(100, 100),style=style)
881 size=(100, 100),style=style)
882 self.Show(False)
882 self.Show(False)
883 self.interval = interval
883 self.interval = interval
884 self.timerId = self.wx.NewId()
884 self.timerId = self.wx.NewId()
885
885
886 def StartWork(self):
886 def StartWork(self):
887 self.timer = self.wx.Timer(self, self.timerId)
887 self.timer = self.wx.Timer(self, self.timerId)
888 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
888 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
889 self.timer.Start(self.interval)
889 self.timer.Start(self.interval)
890
890
891 def OnTimer(self, event):
891 def OnTimer(self, event):
892 update_tk(self.tk)
892 update_tk(self.tk)
893 self.IP.runcode()
893 self.IP.runcode()
894
894
895 class App(self.wx.App):
895 class App(self.wx.App):
896 wx = self.wx
896 wx = self.wx
897 TIMEOUT = self.TIMEOUT
897 TIMEOUT = self.TIMEOUT
898 def OnInit(self):
898 def OnInit(self):
899 'Create the main window and insert the custom frame'
899 'Create the main window and insert the custom frame'
900 self.agent = TimerAgent(None, self.TIMEOUT)
900 self.agent = TimerAgent(None, self.TIMEOUT)
901 self.agent.Show(False)
901 self.agent.Show(False)
902 self.agent.StartWork()
902 self.agent.StartWork()
903 return True
903 return True
904
904
905 self.app = App(redirect=False)
905 self.app = App(redirect=False)
906 self.wx_mainloop(self.app)
906 self.wx_mainloop(self.app)
907 self.join()
907 self.join()
908
908
909
909
910 class IPShellQt(IPThread):
910 class IPShellQt(IPThread):
911 """Run a Qt event loop in a separate thread.
911 """Run a Qt event loop in a separate thread.
912
912
913 Python commands can be passed to the thread where they will be executed.
913 Python commands can be passed to the thread where they will be executed.
914 This is implemented by periodically checking for passed code using a
914 This is implemented by periodically checking for passed code using a
915 Qt timer / slot."""
915 Qt timer / slot."""
916
916
917 TIMEOUT = 100 # Millisecond interval between timeouts.
917 TIMEOUT = 100 # Millisecond interval between timeouts.
918
918
919 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
919 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
920 debug=0, shell_class=MTInteractiveShell):
920 debug=0, shell_class=MTInteractiveShell):
921
921
922 import qt
922 import qt
923
923
924 self.exec_loop = hijack_qt()
924 self.exec_loop = hijack_qt()
925
925
926 # Allows us to use both Tk and QT.
926 # Allows us to use both Tk and QT.
927 self.tk = get_tk()
927 self.tk = get_tk()
928
928
929 self.IP = make_IPython(argv,
929 self.IP = make_IPython(argv,
930 user_ns=user_ns,
930 user_ns=user_ns,
931 user_global_ns=user_global_ns,
931 user_global_ns=user_global_ns,
932 debug=debug,
932 debug=debug,
933 shell_class=shell_class,
933 shell_class=shell_class,
934 on_kill=[qt.qApp.exit])
934 on_kill=[qt.qApp.exit])
935
935
936 # HACK: slot for banner in self; it will be passed to the mainloop
936 # HACK: slot for banner in self; it will be passed to the mainloop
937 # method only and .run() needs it. The actual value will be set by
937 # method only and .run() needs it. The actual value will be set by
938 # .mainloop().
938 # .mainloop().
939 self._banner = None
939 self._banner = None
940
940
941 threading.Thread.__init__(self)
941 threading.Thread.__init__(self)
942
942
943 def mainloop(self, sys_exit=0, banner=None):
943 def mainloop(self, sys_exit=0, banner=None):
944
944
945 import qt
945 import qt
946
946
947 self._banner = banner
947 self._banner = banner
948
948
949 if qt.QApplication.startingUp():
949 if qt.QApplication.startingUp():
950 a = qt.QApplication(sys.argv)
950 a = qt.QApplication(sys.argv)
951
951
952 self.timer = qt.QTimer()
952 self.timer = qt.QTimer()
953 qt.QObject.connect(self.timer,
953 qt.QObject.connect(self.timer,
954 qt.SIGNAL('timeout()'),
954 qt.SIGNAL('timeout()'),
955 self.on_timer)
955 self.on_timer)
956
956
957 self.start()
957 self.start()
958 self.timer.start(self.TIMEOUT, True)
958 self.timer.start(self.TIMEOUT, True)
959 while True:
959 while True:
960 if self.IP._kill: break
960 if self.IP._kill: break
961 self.exec_loop()
961 self.exec_loop()
962 self.join()
962 self.join()
963
963
964 def on_timer(self):
964 def on_timer(self):
965 update_tk(self.tk)
965 update_tk(self.tk)
966 result = self.IP.runcode()
966 result = self.IP.runcode()
967 self.timer.start(self.TIMEOUT, True)
967 self.timer.start(self.TIMEOUT, True)
968 return result
968 return result
969
969
970
970
971 class IPShellQt4(IPThread):
971 class IPShellQt4(IPThread):
972 """Run a Qt event loop in a separate thread.
972 """Run a Qt event loop in a separate thread.
973
973
974 Python commands can be passed to the thread where they will be executed.
974 Python commands can be passed to the thread where they will be executed.
975 This is implemented by periodically checking for passed code using a
975 This is implemented by periodically checking for passed code using a
976 Qt timer / slot."""
976 Qt timer / slot."""
977
977
978 TIMEOUT = 100 # Millisecond interval between timeouts.
978 TIMEOUT = 100 # Millisecond interval between timeouts.
979
979
980 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
980 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
981 debug=0, shell_class=MTInteractiveShell):
981 debug=0, shell_class=MTInteractiveShell):
982
982
983 from PyQt4 import QtCore, QtGui
983 from PyQt4 import QtCore, QtGui
984
984
985 try:
986 # present in PyQt4-4.2.1 or later
987 QtCore.pyqtRemoveInputHook()
988 except AttributeError:
989 pass
990
985 if QtCore.PYQT_VERSION_STR == '4.3':
991 if QtCore.PYQT_VERSION_STR == '4.3':
986 warn('''PyQt4 version 4.3 detected.
992 warn('''PyQt4 version 4.3 detected.
987 If you experience repeated threading warnings, please update PyQt4.
993 If you experience repeated threading warnings, please update PyQt4.
988 ''')
994 ''')
989
995
990 self.exec_ = hijack_qt4()
996 self.exec_ = hijack_qt4()
991
997
992 # Allows us to use both Tk and QT.
998 # Allows us to use both Tk and QT.
993 self.tk = get_tk()
999 self.tk = get_tk()
994
1000
995 self.IP = make_IPython(argv,
1001 self.IP = make_IPython(argv,
996 user_ns=user_ns,
1002 user_ns=user_ns,
997 user_global_ns=user_global_ns,
1003 user_global_ns=user_global_ns,
998 debug=debug,
1004 debug=debug,
999 shell_class=shell_class,
1005 shell_class=shell_class,
1000 on_kill=[QtGui.qApp.exit])
1006 on_kill=[QtGui.qApp.exit])
1001
1007
1002 # HACK: slot for banner in self; it will be passed to the mainloop
1008 # HACK: slot for banner in self; it will be passed to the mainloop
1003 # method only and .run() needs it. The actual value will be set by
1009 # method only and .run() needs it. The actual value will be set by
1004 # .mainloop().
1010 # .mainloop().
1005 self._banner = None
1011 self._banner = None
1006
1012
1007 threading.Thread.__init__(self)
1013 threading.Thread.__init__(self)
1008
1014
1009 def mainloop(self, sys_exit=0, banner=None):
1015 def mainloop(self, sys_exit=0, banner=None):
1010
1016
1011 from PyQt4 import QtCore, QtGui
1017 from PyQt4 import QtCore, QtGui
1012
1018
1013 self._banner = banner
1019 self._banner = banner
1014
1020
1015 if QtGui.QApplication.startingUp():
1021 if QtGui.QApplication.startingUp():
1016 a = QtGui.QApplication(sys.argv)
1022 a = QtGui.QApplication(sys.argv)
1017
1023
1018 self.timer = QtCore.QTimer()
1024 self.timer = QtCore.QTimer()
1019 QtCore.QObject.connect(self.timer,
1025 QtCore.QObject.connect(self.timer,
1020 QtCore.SIGNAL('timeout()'),
1026 QtCore.SIGNAL('timeout()'),
1021 self.on_timer)
1027 self.on_timer)
1022
1028
1023 self.start()
1029 self.start()
1024 self.timer.start(self.TIMEOUT)
1030 self.timer.start(self.TIMEOUT)
1025 while True:
1031 while True:
1026 if self.IP._kill: break
1032 if self.IP._kill: break
1027 self.exec_()
1033 self.exec_()
1028 self.join()
1034 self.join()
1029
1035
1030 def on_timer(self):
1036 def on_timer(self):
1031 update_tk(self.tk)
1037 update_tk(self.tk)
1032 result = self.IP.runcode()
1038 result = self.IP.runcode()
1033 self.timer.start(self.TIMEOUT)
1039 self.timer.start(self.TIMEOUT)
1034 return result
1040 return result
1035
1041
1036
1042
1037 # A set of matplotlib public IPython shell classes, for single-threaded (Tk*
1043 # A set of matplotlib public IPython shell classes, for single-threaded (Tk*
1038 # and FLTK*) and multithreaded (GTK*, WX* and Qt*) backends to use.
1044 # and FLTK*) and multithreaded (GTK*, WX* and Qt*) backends to use.
1039 def _load_pylab(user_ns):
1045 def _load_pylab(user_ns):
1040 """Allow users to disable pulling all of pylab into the top-level
1046 """Allow users to disable pulling all of pylab into the top-level
1041 namespace.
1047 namespace.
1042
1048
1043 This little utility must be called AFTER the actual ipython instance is
1049 This little utility must be called AFTER the actual ipython instance is
1044 running, since only then will the options file have been fully parsed."""
1050 running, since only then will the options file have been fully parsed."""
1045
1051
1046 ip = IPython.ipapi.get()
1052 ip = IPython.ipapi.get()
1047 if ip.options.pylab_import_all:
1053 if ip.options.pylab_import_all:
1048 exec "from matplotlib.pylab import *" in user_ns
1054 exec "from matplotlib.pylab import *" in user_ns
1049
1055
1050 class IPShellMatplotlib(IPShell):
1056 class IPShellMatplotlib(IPShell):
1051 """Subclass IPShell with MatplotlibShell as the internal shell.
1057 """Subclass IPShell with MatplotlibShell as the internal shell.
1052
1058
1053 Single-threaded class, meant for the Tk* and FLTK* backends.
1059 Single-threaded class, meant for the Tk* and FLTK* backends.
1054
1060
1055 Having this on a separate class simplifies the external driver code."""
1061 Having this on a separate class simplifies the external driver code."""
1056
1062
1057 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1063 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1058 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
1064 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
1059 shell_class=MatplotlibShell)
1065 shell_class=MatplotlibShell)
1060 _load_pylab(self.IP.user_ns)
1066 _load_pylab(self.IP.user_ns)
1061
1067
1062 class IPShellMatplotlibGTK(IPShellGTK):
1068 class IPShellMatplotlibGTK(IPShellGTK):
1063 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
1069 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
1064
1070
1065 Multi-threaded class, meant for the GTK* backends."""
1071 Multi-threaded class, meant for the GTK* backends."""
1066
1072
1067 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1073 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1068 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
1074 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
1069 shell_class=MatplotlibMTShell)
1075 shell_class=MatplotlibMTShell)
1070 _load_pylab(self.IP.user_ns)
1076 _load_pylab(self.IP.user_ns)
1071
1077
1072 class IPShellMatplotlibWX(IPShellWX):
1078 class IPShellMatplotlibWX(IPShellWX):
1073 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
1079 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
1074
1080
1075 Multi-threaded class, meant for the WX* backends."""
1081 Multi-threaded class, meant for the WX* backends."""
1076
1082
1077 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1083 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1078 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
1084 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
1079 shell_class=MatplotlibMTShell)
1085 shell_class=MatplotlibMTShell)
1080 _load_pylab(self.IP.user_ns)
1086 _load_pylab(self.IP.user_ns)
1081
1087
1082 class IPShellMatplotlibQt(IPShellQt):
1088 class IPShellMatplotlibQt(IPShellQt):
1083 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
1089 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
1084
1090
1085 Multi-threaded class, meant for the Qt* backends."""
1091 Multi-threaded class, meant for the Qt* backends."""
1086
1092
1087 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1093 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1088 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
1094 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
1089 shell_class=MatplotlibMTShell)
1095 shell_class=MatplotlibMTShell)
1090 _load_pylab(self.IP.user_ns)
1096 _load_pylab(self.IP.user_ns)
1091
1097
1092 class IPShellMatplotlibQt4(IPShellQt4):
1098 class IPShellMatplotlibQt4(IPShellQt4):
1093 """Subclass IPShellQt4 with MatplotlibMTShell as the internal shell.
1099 """Subclass IPShellQt4 with MatplotlibMTShell as the internal shell.
1094
1100
1095 Multi-threaded class, meant for the Qt4* backends."""
1101 Multi-threaded class, meant for the Qt4* backends."""
1096
1102
1097 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1103 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1098 IPShellQt4.__init__(self,argv,user_ns,user_global_ns,debug,
1104 IPShellQt4.__init__(self,argv,user_ns,user_global_ns,debug,
1099 shell_class=MatplotlibMTShell)
1105 shell_class=MatplotlibMTShell)
1100 _load_pylab(self.IP.user_ns)
1106 _load_pylab(self.IP.user_ns)
1101
1107
1102 #-----------------------------------------------------------------------------
1108 #-----------------------------------------------------------------------------
1103 # Factory functions to actually start the proper thread-aware shell
1109 # Factory functions to actually start the proper thread-aware shell
1104
1110
1105 def _select_shell(argv):
1111 def _select_shell(argv):
1106 """Select a shell from the given argv vector.
1112 """Select a shell from the given argv vector.
1107
1113
1108 This function implements the threading selection policy, allowing runtime
1114 This function implements the threading selection policy, allowing runtime
1109 control of the threading mode, both for general users and for matplotlib.
1115 control of the threading mode, both for general users and for matplotlib.
1110
1116
1111 Return:
1117 Return:
1112 Shell class to be instantiated for runtime operation.
1118 Shell class to be instantiated for runtime operation.
1113 """
1119 """
1114
1120
1115 global USE_TK
1121 global USE_TK
1116
1122
1117 mpl_shell = {'gthread' : IPShellMatplotlibGTK,
1123 mpl_shell = {'gthread' : IPShellMatplotlibGTK,
1118 'wthread' : IPShellMatplotlibWX,
1124 'wthread' : IPShellMatplotlibWX,
1119 'qthread' : IPShellMatplotlibQt,
1125 'qthread' : IPShellMatplotlibQt,
1120 'q4thread' : IPShellMatplotlibQt4,
1126 'q4thread' : IPShellMatplotlibQt4,
1121 'tkthread' : IPShellMatplotlib, # Tk is built-in
1127 'tkthread' : IPShellMatplotlib, # Tk is built-in
1122 }
1128 }
1123
1129
1124 th_shell = {'gthread' : IPShellGTK,
1130 th_shell = {'gthread' : IPShellGTK,
1125 'wthread' : IPShellWX,
1131 'wthread' : IPShellWX,
1126 'qthread' : IPShellQt,
1132 'qthread' : IPShellQt,
1127 'q4thread' : IPShellQt4,
1133 'q4thread' : IPShellQt4,
1128 'tkthread' : IPShell, # Tk is built-in
1134 'tkthread' : IPShell, # Tk is built-in
1129 }
1135 }
1130
1136
1131 backends = {'gthread' : 'GTKAgg',
1137 backends = {'gthread' : 'GTKAgg',
1132 'wthread' : 'WXAgg',
1138 'wthread' : 'WXAgg',
1133 'qthread' : 'QtAgg',
1139 'qthread' : 'QtAgg',
1134 'q4thread' :'Qt4Agg',
1140 'q4thread' :'Qt4Agg',
1135 'tkthread' :'TkAgg',
1141 'tkthread' :'TkAgg',
1136 }
1142 }
1137
1143
1138 all_opts = set(['tk','pylab','gthread','qthread','q4thread','wthread',
1144 all_opts = set(['tk','pylab','gthread','qthread','q4thread','wthread',
1139 'tkthread'])
1145 'tkthread'])
1140 user_opts = set([s.replace('-','') for s in argv[:3]])
1146 user_opts = set([s.replace('-','') for s in argv[:3]])
1141 special_opts = user_opts & all_opts
1147 special_opts = user_opts & all_opts
1142
1148
1143 if 'tk' in special_opts:
1149 if 'tk' in special_opts:
1144 USE_TK = True
1150 USE_TK = True
1145 special_opts.remove('tk')
1151 special_opts.remove('tk')
1146
1152
1147 if 'pylab' in special_opts:
1153 if 'pylab' in special_opts:
1148
1154
1149 try:
1155 try:
1150 import matplotlib
1156 import matplotlib
1151 except ImportError:
1157 except ImportError:
1152 error('matplotlib could NOT be imported! Starting normal IPython.')
1158 error('matplotlib could NOT be imported! Starting normal IPython.')
1153 return IPShell
1159 return IPShell
1154
1160
1155 special_opts.remove('pylab')
1161 special_opts.remove('pylab')
1156 # If there's any option left, it means the user wants to force the
1162 # If there's any option left, it means the user wants to force the
1157 # threading backend, else it's auto-selected from the rc file
1163 # threading backend, else it's auto-selected from the rc file
1158 if special_opts:
1164 if special_opts:
1159 th_mode = special_opts.pop()
1165 th_mode = special_opts.pop()
1160 matplotlib.rcParams['backend'] = backends[th_mode]
1166 matplotlib.rcParams['backend'] = backends[th_mode]
1161 else:
1167 else:
1162 backend = matplotlib.rcParams['backend']
1168 backend = matplotlib.rcParams['backend']
1163 if backend.startswith('GTK'):
1169 if backend.startswith('GTK'):
1164 th_mode = 'gthread'
1170 th_mode = 'gthread'
1165 elif backend.startswith('WX'):
1171 elif backend.startswith('WX'):
1166 th_mode = 'wthread'
1172 th_mode = 'wthread'
1167 elif backend.startswith('Qt4'):
1173 elif backend.startswith('Qt4'):
1168 th_mode = 'q4thread'
1174 th_mode = 'q4thread'
1169 elif backend.startswith('Qt'):
1175 elif backend.startswith('Qt'):
1170 th_mode = 'qthread'
1176 th_mode = 'qthread'
1171 else:
1177 else:
1172 # Any other backend, use plain Tk
1178 # Any other backend, use plain Tk
1173 th_mode = 'tkthread'
1179 th_mode = 'tkthread'
1174
1180
1175 return mpl_shell[th_mode]
1181 return mpl_shell[th_mode]
1176 else:
1182 else:
1177 # No pylab requested, just plain threads
1183 # No pylab requested, just plain threads
1178 try:
1184 try:
1179 th_mode = special_opts.pop()
1185 th_mode = special_opts.pop()
1180 except KeyError:
1186 except KeyError:
1181 th_mode = 'tkthread'
1187 th_mode = 'tkthread'
1182 return th_shell[th_mode]
1188 return th_shell[th_mode]
1183
1189
1184
1190
1185 # This is the one which should be called by external code.
1191 # This is the one which should be called by external code.
1186 def start(user_ns = None):
1192 def start(user_ns = None):
1187 """Return a running shell instance, dealing with threading options.
1193 """Return a running shell instance, dealing with threading options.
1188
1194
1189 This is a factory function which will instantiate the proper IPython shell
1195 This is a factory function which will instantiate the proper IPython shell
1190 based on the user's threading choice. Such a selector is needed because
1196 based on the user's threading choice. Such a selector is needed because
1191 different GUI toolkits require different thread handling details."""
1197 different GUI toolkits require different thread handling details."""
1192
1198
1193 shell = _select_shell(sys.argv)
1199 shell = _select_shell(sys.argv)
1194 return shell(user_ns = user_ns)
1200 return shell(user_ns = user_ns)
1195
1201
1196 # Some aliases for backwards compatibility
1202 # Some aliases for backwards compatibility
1197 IPythonShell = IPShell
1203 IPythonShell = IPShell
1198 IPythonShellEmbed = IPShellEmbed
1204 IPythonShellEmbed = IPShellEmbed
1199 #************************ End of file <Shell.py> ***************************
1205 #************************ End of file <Shell.py> ***************************
@@ -1,7424 +1,7433 b''
1 2008-02-07 Darren Dale <darren.dale@cornell.edu>
2
3 * IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating
4 an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve
5 interaction in the interpreter (like Tkinter does), but it seems to
6 partially interfere with the IPython implementation and exec_()
7 still seems to block. So we disable the PyQt implementation and
8 stick with the IPython one for now.
9
1 2008-02-02 Walter Doerwald <walter@livinglogic.de>
10 2008-02-02 Walter Doerwald <walter@livinglogic.de>
2
11
3 * ipipe.py: A new ipipe table has been added: ialias produces all
12 * ipipe.py: A new ipipe table has been added: ialias produces all
4 entries from IPython's alias table.
13 entries from IPython's alias table.
5
14
6 2008-02-01 Fernando Perez <Fernando.Perez@colorado.edu>
15 2008-02-01 Fernando Perez <Fernando.Perez@colorado.edu>
7
16
8 * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
17 * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
9 of KBINT in threaded shells. After code provided by Marc in #212.
18 of KBINT in threaded shells. After code provided by Marc in #212.
10
19
11 2008-01-30 Fernando Perez <Fernando.Perez@colorado.edu>
20 2008-01-30 Fernando Perez <Fernando.Perez@colorado.edu>
12
21
13 * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
22 * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
14 that could occur due to a race condition in threaded shells.
23 that could occur due to a race condition in threaded shells.
15 Thanks to code provided by Marc, as #210.
24 Thanks to code provided by Marc, as #210.
16
25
17 2008-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
26 2008-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
18
27
19 * IPython/Magic.py (magic_doctest_mode): respect the user's
28 * IPython/Magic.py (magic_doctest_mode): respect the user's
20 settings for input separators rather than overriding them. After
29 settings for input separators rather than overriding them. After
21 a report by Jeff Kowalczyk <jtk-AT-yahoo.com>
30 a report by Jeff Kowalczyk <jtk-AT-yahoo.com>
22
31
23 * IPython/history.py (magic_history): Add support for declaring an
32 * IPython/history.py (magic_history): Add support for declaring an
24 output file directly from the history command.
33 output file directly from the history command.
25
34
26 2008-01-21 Walter Doerwald <walter@livinglogic.de>
35 2008-01-21 Walter Doerwald <walter@livinglogic.de>
27
36
28 * ipipe.py: Register ipipe's displayhooks via the generic function
37 * ipipe.py: Register ipipe's displayhooks via the generic function
29 generics.result_display() instead of using ipapi.set_hook().
38 generics.result_display() instead of using ipapi.set_hook().
30
39
31 2008-01-19 Walter Doerwald <walter@livinglogic.de>
40 2008-01-19 Walter Doerwald <walter@livinglogic.de>
32
41
33 * ibrowse.py, igrid.py, ipipe.py:
42 * ibrowse.py, igrid.py, ipipe.py:
34 The input object can now be passed to the constructor of the display classes.
43 The input object can now be passed to the constructor of the display classes.
35 This makes it possible to use them with objects that implement __or__.
44 This makes it possible to use them with objects that implement __or__.
36 Use this constructor in the displayhook instead of piping.
45 Use this constructor in the displayhook instead of piping.
37
46
38 * ipipe.py: Importing astyle.py is done as late as possible to
47 * ipipe.py: Importing astyle.py is done as late as possible to
39 avoid problems with circular imports.
48 avoid problems with circular imports.
40
49
41 2008-01-19 Ville Vainio <vivainio@gmail.com>
50 2008-01-19 Ville Vainio <vivainio@gmail.com>
42
51
43 * hooks.py, iplib.py: Added 'shell_hook' to customize how
52 * hooks.py, iplib.py: Added 'shell_hook' to customize how
44 IPython calls shell.
53 IPython calls shell.
45
54
46 * hooks.py, iplib.py: Added 'show_in_pager' hook to specify
55 * hooks.py, iplib.py: Added 'show_in_pager' hook to specify
47 how IPython pages text (%page, %pycat, %pdoc etc.)
56 how IPython pages text (%page, %pycat, %pdoc etc.)
48
57
49 * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
58 * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
50 and '%kill' to kill hanging processes that won't obey ctrl+C.
59 and '%kill' to kill hanging processes that won't obey ctrl+C.
51
60
52 2008-01-16 Ville Vainio <vivainio@gmail.com>
61 2008-01-16 Ville Vainio <vivainio@gmail.com>
53
62
54 * ipy_completers.py: pyw extension support for %run completer.
63 * ipy_completers.py: pyw extension support for %run completer.
55
64
56 2008-01-11 Ville Vainio <vivainio@gmail.com>
65 2008-01-11 Ville Vainio <vivainio@gmail.com>
57
66
58 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
67 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
59 of ipython commands to be run when IPython has started up
68 of ipython commands to be run when IPython has started up
60 (just before running the scripts and -c arg on command line).
69 (just before running the scripts and -c arg on command line).
61
70
62 * ipy_user_conf.py: Added an example on how to change term
71 * ipy_user_conf.py: Added an example on how to change term
63 colors in config file (through using autoexec).
72 colors in config file (through using autoexec).
64
73
65 * completer.py, test_completer.py: Ability to specify custom
74 * completer.py, test_completer.py: Ability to specify custom
66 get_endidx to replace readline.get_endidx. For emacs users.
75 get_endidx to replace readline.get_endidx. For emacs users.
67
76
68 2008-01-10 Ville Vainio <vivainio@gmail.com>
77 2008-01-10 Ville Vainio <vivainio@gmail.com>
69
78
70 * Prompts.py (set_p_str): do not crash on illegal prompt strings
79 * Prompts.py (set_p_str): do not crash on illegal prompt strings
71
80
72 2008-01-08 Ville Vainio <vivainio@gmail.com>
81 2008-01-08 Ville Vainio <vivainio@gmail.com>
73
82
74 * '%macro -r' (raw mode) is now default in sh profile.
83 * '%macro -r' (raw mode) is now default in sh profile.
75
84
76 2007-12-31 Ville Vainio <vivainio@gmail.com>
85 2007-12-31 Ville Vainio <vivainio@gmail.com>
77
86
78 * completer.py: custom completer matching is now case sensitive
87 * completer.py: custom completer matching is now case sensitive
79 (#207).
88 (#207).
80
89
81 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
90 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
82 an attempt to prevent occasional crashes.
91 an attempt to prevent occasional crashes.
83
92
84 * CrashHandler.py: Crash log dump now asks user to press enter
93 * CrashHandler.py: Crash log dump now asks user to press enter
85 before exiting.
94 before exiting.
86
95
87 * Store _ip in user_ns instead of __builtin__, enabling safer
96 * Store _ip in user_ns instead of __builtin__, enabling safer
88 coexistence of multiple IPython instances in the same python
97 coexistence of multiple IPython instances in the same python
89 interpreter (#197).
98 interpreter (#197).
90
99
91 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
100 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
92 switch to enable pydb in post-mortem debugging and %run -d.
101 switch to enable pydb in post-mortem debugging and %run -d.
93
102
94 2007-12-28 Ville Vainio <vivainio@gmail.com>
103 2007-12-28 Ville Vainio <vivainio@gmail.com>
95
104
96 * ipy_server.py: TCP socket server for "remote control" of an IPython
105 * ipy_server.py: TCP socket server for "remote control" of an IPython
97 instance.
106 instance.
98
107
99 * Debugger.py: Change to PSF license
108 * Debugger.py: Change to PSF license
100
109
101 * simplegeneric.py: Add license & author notes.
110 * simplegeneric.py: Add license & author notes.
102
111
103 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
112 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
104 to navigate file system with a custom completer. Run
113 to navigate file system with a custom completer. Run
105 ipy_fsops.test_pathobj() to play with it.
114 ipy_fsops.test_pathobj() to play with it.
106
115
107 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
116 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
108
117
109 * IPython/dtutils.py: Add utilities for interactively running
118 * IPython/dtutils.py: Add utilities for interactively running
110 doctests. Still needs work to more easily handle the namespace of
119 doctests. Still needs work to more easily handle the namespace of
111 the package one may be working on, but the basics are in place.
120 the package one may be working on, but the basics are in place.
112
121
113 2007-12-27 Ville Vainio <vivainio@gmail.com>
122 2007-12-27 Ville Vainio <vivainio@gmail.com>
114
123
115 * ipy_completers.py: Applied arno's patch to get proper list of
124 * ipy_completers.py: Applied arno's patch to get proper list of
116 packages in import completer. Closes #196.
125 packages in import completer. Closes #196.
117
126
118 2007-12-20 Ville Vainio <vivainio@gmail.com>
127 2007-12-20 Ville Vainio <vivainio@gmail.com>
119
128
120 * completer.py, generics.py(complete_object): Allow
129 * completer.py, generics.py(complete_object): Allow
121 custom complers based on python objects via simplegeneric.
130 custom complers based on python objects via simplegeneric.
122 See generics.py / my_demo_complete_object
131 See generics.py / my_demo_complete_object
123
132
124 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
133 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
125
134
126 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
135 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
127 behavior to prompt objects, useful for display hooks to adjust
136 behavior to prompt objects, useful for display hooks to adjust
128 themselves depending on whether prompts will be there or not.
137 themselves depending on whether prompts will be there or not.
129
138
130 2007-12-13 Ville Vainio <vivainio@gmail.com>
139 2007-12-13 Ville Vainio <vivainio@gmail.com>
131
140
132 * iplib.py(raw_input): unix readline does not allow unicode in
141 * iplib.py(raw_input): unix readline does not allow unicode in
133 history, encode to normal string. After patch by Tiago.
142 history, encode to normal string. After patch by Tiago.
134 Close #201
143 Close #201
135
144
136 2007-12-12 Ville Vainio <vivainio@gmail.com>
145 2007-12-12 Ville Vainio <vivainio@gmail.com>
137
146
138 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
147 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
139 current directory.
148 current directory.
140
149
141 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
150 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
142
151
143 * IPython/Shell.py (_select_shell): add support for controlling
152 * IPython/Shell.py (_select_shell): add support for controlling
144 the pylab threading mode directly at the command line, without
153 the pylab threading mode directly at the command line, without
145 having to modify MPL config files. Added unit tests for this
154 having to modify MPL config files. Added unit tests for this
146 feature, though manual/docs update is still pending, will do later.
155 feature, though manual/docs update is still pending, will do later.
147
156
148 2007-12-11 Ville Vainio <vivainio@gmail.com>
157 2007-12-11 Ville Vainio <vivainio@gmail.com>
149
158
150 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
159 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
151 use in scripts)
160 use in scripts)
152
161
153 2007-12-07 Ville Vainio <vivainio@gmail.com>
162 2007-12-07 Ville Vainio <vivainio@gmail.com>
154
163
155 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
164 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
156 anymore (to \#) - even if it is a comment char that is implicitly
165 anymore (to \#) - even if it is a comment char that is implicitly
157 escaped in some unix shells in interactive mode, it is ok to leave
166 escaped in some unix shells in interactive mode, it is ok to leave
158 it in IPython as such.
167 it in IPython as such.
159
168
160
169
161 2007-12-01 Robert Kern <robert.kern@gmail.com>
170 2007-12-01 Robert Kern <robert.kern@gmail.com>
162
171
163 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
172 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
164 inspect.findsource(). It can now find source lines inside zipped
173 inspect.findsource(). It can now find source lines inside zipped
165 packages.
174 packages.
166
175
167 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
176 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
168 in the frame's namespace before trusting the filename in the code object
177 in the frame's namespace before trusting the filename in the code object
169 which created the frame.
178 which created the frame.
170
179
171 2007-11-29 *** Released version 0.8.2
180 2007-11-29 *** Released version 0.8.2
172
181
173 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
182 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
174
183
175 * IPython/Logger.py (Logger.logstop): add a proper logstop()
184 * IPython/Logger.py (Logger.logstop): add a proper logstop()
176 method to fully stop the logger, along with a corresponding
185 method to fully stop the logger, along with a corresponding
177 %logstop magic for interactive use.
186 %logstop magic for interactive use.
178
187
179 * IPython/Extensions/ipy_host_completers.py: added new host
188 * IPython/Extensions/ipy_host_completers.py: added new host
180 completers functionality, contributed by Gael Pasgrimaud
189 completers functionality, contributed by Gael Pasgrimaud
181 <gawel-AT-afpy.org>.
190 <gawel-AT-afpy.org>.
182
191
183 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
192 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
184
193
185 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
194 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
186 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
195 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
187 options handling. Unicode fix in %whos (committed a while ago)
196 options handling. Unicode fix in %whos (committed a while ago)
188 was also contributed by Paul.
197 was also contributed by Paul.
189
198
190 2007-11-23 Darren Dale <darren.dale@cornell.edu>
199 2007-11-23 Darren Dale <darren.dale@cornell.edu>
191 * ipy_traits_completer.py: let traits_completer respect the user's
200 * ipy_traits_completer.py: let traits_completer respect the user's
192 readline_omit__names setting.
201 readline_omit__names setting.
193
202
194 2007-11-08 Ville Vainio <vivainio@gmail.com>
203 2007-11-08 Ville Vainio <vivainio@gmail.com>
195
204
196 * ipy_completers.py (import completer): assume 'xml' module exists.
205 * ipy_completers.py (import completer): assume 'xml' module exists.
197 Do not add every module twice anymore. Closes #196.
206 Do not add every module twice anymore. Closes #196.
198
207
199 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
208 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
200 completer that uses apt-cache to search for existing packages.
209 completer that uses apt-cache to search for existing packages.
201
210
202 2007-11-06 Ville Vainio <vivainio@gmail.com>
211 2007-11-06 Ville Vainio <vivainio@gmail.com>
203
212
204 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
213 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
205 true. Closes #194.
214 true. Closes #194.
206
215
207 2007-11-01 Brian Granger <ellisonbg@gmail.com>
216 2007-11-01 Brian Granger <ellisonbg@gmail.com>
208
217
209 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
218 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
210 working with OS X 10.5 libedit implementation of readline.
219 working with OS X 10.5 libedit implementation of readline.
211
220
212 2007-10-24 Ville Vainio <vivainio@gmail.com>
221 2007-10-24 Ville Vainio <vivainio@gmail.com>
213
222
214 * iplib.py(user_setup): To route around buggy installations where
223 * iplib.py(user_setup): To route around buggy installations where
215 UserConfig is not available, create a minimal _ipython.
224 UserConfig is not available, create a minimal _ipython.
216
225
217 * iplib.py: Unicode fixes from Jorgen.
226 * iplib.py: Unicode fixes from Jorgen.
218
227
219 * genutils.py: Slist now has new method 'fields()' for extraction of
228 * genutils.py: Slist now has new method 'fields()' for extraction of
220 whitespace-separated fields from line-oriented data.
229 whitespace-separated fields from line-oriented data.
221
230
222 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
231 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
223
232
224 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
233 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
225 when querying objects with no __class__ attribute (such as
234 when querying objects with no __class__ attribute (such as
226 f2py-generated modules).
235 f2py-generated modules).
227
236
228 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
237 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
229
238
230 * IPython/Magic.py (magic_time): track compilation time and report
239 * IPython/Magic.py (magic_time): track compilation time and report
231 it if longer than 0.1s (fix done to %time and %timeit). After a
240 it if longer than 0.1s (fix done to %time and %timeit). After a
232 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
241 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
233
242
234 2007-09-18 Ville Vainio <vivainio@gmail.com>
243 2007-09-18 Ville Vainio <vivainio@gmail.com>
235
244
236 * genutils.py(make_quoted_expr): Do not use Itpl, it does
245 * genutils.py(make_quoted_expr): Do not use Itpl, it does
237 not support unicode at the moment. Fixes (many) magic calls with
246 not support unicode at the moment. Fixes (many) magic calls with
238 special characters.
247 special characters.
239
248
240 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
249 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
241
250
242 * IPython/genutils.py (doctest_reload): expose the doctest
251 * IPython/genutils.py (doctest_reload): expose the doctest
243 reloader to the user so that people can easily reset doctest while
252 reloader to the user so that people can easily reset doctest while
244 using it interactively. Fixes a problem reported by Jorgen.
253 using it interactively. Fixes a problem reported by Jorgen.
245
254
246 * IPython/iplib.py (InteractiveShell.__init__): protect the
255 * IPython/iplib.py (InteractiveShell.__init__): protect the
247 FakeModule instances used for __main__ in %run calls from
256 FakeModule instances used for __main__ in %run calls from
248 deletion, so that user code defined in them isn't left with
257 deletion, so that user code defined in them isn't left with
249 dangling references due to the Python module deletion machinery.
258 dangling references due to the Python module deletion machinery.
250 This should fix the problems reported by Darren.
259 This should fix the problems reported by Darren.
251
260
252 2007-09-10 Darren Dale <dd55@cornell.edu>
261 2007-09-10 Darren Dale <dd55@cornell.edu>
253
262
254 * Cleanup of IPShellQt and IPShellQt4
263 * Cleanup of IPShellQt and IPShellQt4
255
264
256 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
265 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
257
266
258 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
267 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
259 doctest support.
268 doctest support.
260
269
261 * IPython/iplib.py (safe_execfile): minor docstring improvements.
270 * IPython/iplib.py (safe_execfile): minor docstring improvements.
262
271
263 2007-09-08 Ville Vainio <vivainio@gmail.com>
272 2007-09-08 Ville Vainio <vivainio@gmail.com>
264
273
265 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
274 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
266 directory, not the target directory.
275 directory, not the target directory.
267
276
268 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
277 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
269 exception that won't print the tracebacks. Switched many magics to
278 exception that won't print the tracebacks. Switched many magics to
270 raise them on error situations, also GetoptError is not printed
279 raise them on error situations, also GetoptError is not printed
271 anymore.
280 anymore.
272
281
273 2007-09-07 Ville Vainio <vivainio@gmail.com>
282 2007-09-07 Ville Vainio <vivainio@gmail.com>
274
283
275 * iplib.py: do not auto-alias "dir", it screws up other dir auto
284 * iplib.py: do not auto-alias "dir", it screws up other dir auto
276 aliases.
285 aliases.
277
286
278 * genutils.py: SList.grep() implemented.
287 * genutils.py: SList.grep() implemented.
279
288
280 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
289 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
281 for easy "out of the box" setup of several common editors, so that
290 for easy "out of the box" setup of several common editors, so that
282 e.g. '%edit os.path.isfile' will jump to the correct line
291 e.g. '%edit os.path.isfile' will jump to the correct line
283 automatically. Contributions for command lines of your favourite
292 automatically. Contributions for command lines of your favourite
284 editors welcome.
293 editors welcome.
285
294
286 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
295 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
287
296
288 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
297 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
289 preventing source display in certain cases. In reality I think
298 preventing source display in certain cases. In reality I think
290 the problem is with Ubuntu's Python build, but this change works
299 the problem is with Ubuntu's Python build, but this change works
291 around the issue in some cases (not in all, unfortunately). I'd
300 around the issue in some cases (not in all, unfortunately). I'd
292 filed a Python bug on this with more details, but in the change of
301 filed a Python bug on this with more details, but in the change of
293 bug trackers it seems to have been lost.
302 bug trackers it seems to have been lost.
294
303
295 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
304 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
296 not the same, it's not self-documenting, doesn't allow range
305 not the same, it's not self-documenting, doesn't allow range
297 selection, and sorts alphabetically instead of numerically.
306 selection, and sorts alphabetically instead of numerically.
298 (magic_r): restore %r. No, "up + enter. One char magic" is not
307 (magic_r): restore %r. No, "up + enter. One char magic" is not
299 the same thing, since %r takes parameters to allow fast retrieval
308 the same thing, since %r takes parameters to allow fast retrieval
300 of old commands. I've received emails from users who use this a
309 of old commands. I've received emails from users who use this a
301 LOT, so it stays.
310 LOT, so it stays.
302 (magic_automagic): restore %automagic. "use _ip.option.automagic"
311 (magic_automagic): restore %automagic. "use _ip.option.automagic"
303 is not a valid replacement b/c it doesn't provide an complete
312 is not a valid replacement b/c it doesn't provide an complete
304 explanation (which the automagic docstring does).
313 explanation (which the automagic docstring does).
305 (magic_autocall): restore %autocall, with improved docstring.
314 (magic_autocall): restore %autocall, with improved docstring.
306 Same argument as for others, "use _ip.options.autocall" is not a
315 Same argument as for others, "use _ip.options.autocall" is not a
307 valid replacement.
316 valid replacement.
308 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
317 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
309 tutorials and online docs.
318 tutorials and online docs.
310
319
311 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
320 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
312
321
313 * IPython/usage.py (quick_reference): mention magics in quickref,
322 * IPython/usage.py (quick_reference): mention magics in quickref,
314 modified main banner to mention %quickref.
323 modified main banner to mention %quickref.
315
324
316 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
325 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
317
326
318 2007-09-06 Ville Vainio <vivainio@gmail.com>
327 2007-09-06 Ville Vainio <vivainio@gmail.com>
319
328
320 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
329 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
321 Callable aliases now pass the _ip as first arg. This breaks
330 Callable aliases now pass the _ip as first arg. This breaks
322 compatibility with earlier 0.8.2.svn series! (though they should
331 compatibility with earlier 0.8.2.svn series! (though they should
323 not have been in use yet outside these few extensions)
332 not have been in use yet outside these few extensions)
324
333
325 2007-09-05 Ville Vainio <vivainio@gmail.com>
334 2007-09-05 Ville Vainio <vivainio@gmail.com>
326
335
327 * external/mglob.py: expand('dirname') => ['dirname'], instead
336 * external/mglob.py: expand('dirname') => ['dirname'], instead
328 of ['dirname/foo','dirname/bar', ...].
337 of ['dirname/foo','dirname/bar', ...].
329
338
330 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
339 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
331 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
340 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
332 is useful for others as well).
341 is useful for others as well).
333
342
334 * iplib.py: on callable aliases (as opposed to old style aliases),
343 * iplib.py: on callable aliases (as opposed to old style aliases),
335 do var_expand() immediately, and use make_quoted_expr instead
344 do var_expand() immediately, and use make_quoted_expr instead
336 of hardcoded r"""
345 of hardcoded r"""
337
346
338 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
347 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
339 if not available load ipy_fsops.py for cp, mv, etc. replacements
348 if not available load ipy_fsops.py for cp, mv, etc. replacements
340
349
341 * OInspect.py, ipy_which.py: improve %which and obj? for callable
350 * OInspect.py, ipy_which.py: improve %which and obj? for callable
342 aliases
351 aliases
343
352
344 2007-09-04 Ville Vainio <vivainio@gmail.com>
353 2007-09-04 Ville Vainio <vivainio@gmail.com>
345
354
346 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
355 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
347 Relicensed under BSD with the authors approval.
356 Relicensed under BSD with the authors approval.
348
357
349 * ipmaker.py, usage.py: Remove %magic from default banner, improve
358 * ipmaker.py, usage.py: Remove %magic from default banner, improve
350 %quickref
359 %quickref
351
360
352 2007-09-03 Ville Vainio <vivainio@gmail.com>
361 2007-09-03 Ville Vainio <vivainio@gmail.com>
353
362
354 * Magic.py: %time now passes expression through prefilter,
363 * Magic.py: %time now passes expression through prefilter,
355 allowing IPython syntax.
364 allowing IPython syntax.
356
365
357 2007-09-01 Ville Vainio <vivainio@gmail.com>
366 2007-09-01 Ville Vainio <vivainio@gmail.com>
358
367
359 * ipmaker.py: Always show full traceback when newstyle config fails
368 * ipmaker.py: Always show full traceback when newstyle config fails
360
369
361 2007-08-27 Ville Vainio <vivainio@gmail.com>
370 2007-08-27 Ville Vainio <vivainio@gmail.com>
362
371
363 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
372 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
364
373
365 2007-08-26 Ville Vainio <vivainio@gmail.com>
374 2007-08-26 Ville Vainio <vivainio@gmail.com>
366
375
367 * ipmaker.py: Command line args have the highest priority again
376 * ipmaker.py: Command line args have the highest priority again
368
377
369 * iplib.py, ipmaker.py: -i command line argument now behaves as in
378 * iplib.py, ipmaker.py: -i command line argument now behaves as in
370 normal python, i.e. leaves the IPython session running after -c
379 normal python, i.e. leaves the IPython session running after -c
371 command or running a batch file from command line.
380 command or running a batch file from command line.
372
381
373 2007-08-22 Ville Vainio <vivainio@gmail.com>
382 2007-08-22 Ville Vainio <vivainio@gmail.com>
374
383
375 * iplib.py: no extra empty (last) line in raw hist w/ multiline
384 * iplib.py: no extra empty (last) line in raw hist w/ multiline
376 statements
385 statements
377
386
378 * logger.py: Fix bug where blank lines in history were not
387 * logger.py: Fix bug where blank lines in history were not
379 added until AFTER adding the current line; translated and raw
388 added until AFTER adding the current line; translated and raw
380 history should finally be in sync with prompt now.
389 history should finally be in sync with prompt now.
381
390
382 * ipy_completers.py: quick_completer now makes it easy to create
391 * ipy_completers.py: quick_completer now makes it easy to create
383 trivial custom completers
392 trivial custom completers
384
393
385 * clearcmd.py: shadow history compression & erasing, fixed input hist
394 * clearcmd.py: shadow history compression & erasing, fixed input hist
386 clearing.
395 clearing.
387
396
388 * envpersist.py, history.py: %env (sh profile only), %hist completers
397 * envpersist.py, history.py: %env (sh profile only), %hist completers
389
398
390 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
399 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
391 term title now include the drive letter, and always use / instead of
400 term title now include the drive letter, and always use / instead of
392 os.sep (as per recommended approach for win32 ipython in general).
401 os.sep (as per recommended approach for win32 ipython in general).
393
402
394 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
403 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
395 plain python scripts from ipykit command line by running
404 plain python scripts from ipykit command line by running
396 "py myscript.py", even w/o installed python.
405 "py myscript.py", even w/o installed python.
397
406
398 2007-08-21 Ville Vainio <vivainio@gmail.com>
407 2007-08-21 Ville Vainio <vivainio@gmail.com>
399
408
400 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
409 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
401 (for backwards compatibility)
410 (for backwards compatibility)
402
411
403 * history.py: switch back to %hist -t from %hist -r as default.
412 * history.py: switch back to %hist -t from %hist -r as default.
404 At least until raw history is fixed for good.
413 At least until raw history is fixed for good.
405
414
406 2007-08-20 Ville Vainio <vivainio@gmail.com>
415 2007-08-20 Ville Vainio <vivainio@gmail.com>
407
416
408 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
417 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
409 locate alias redeclarations etc. Also, avoid handling
418 locate alias redeclarations etc. Also, avoid handling
410 _ip.IP.alias_table directly, prefer using _ip.defalias.
419 _ip.IP.alias_table directly, prefer using _ip.defalias.
411
420
412
421
413 2007-08-15 Ville Vainio <vivainio@gmail.com>
422 2007-08-15 Ville Vainio <vivainio@gmail.com>
414
423
415 * prefilter.py: ! is now always served first
424 * prefilter.py: ! is now always served first
416
425
417 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
426 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
418
427
419 * IPython/iplib.py (safe_execfile): fix the SystemExit
428 * IPython/iplib.py (safe_execfile): fix the SystemExit
420 auto-suppression code to work in Python2.4 (the internal structure
429 auto-suppression code to work in Python2.4 (the internal structure
421 of that exception changed and I'd only tested the code with 2.5).
430 of that exception changed and I'd only tested the code with 2.5).
422 Bug reported by a SciPy attendee.
431 Bug reported by a SciPy attendee.
423
432
424 2007-08-13 Ville Vainio <vivainio@gmail.com>
433 2007-08-13 Ville Vainio <vivainio@gmail.com>
425
434
426 * prefilter.py: reverted !c:/bin/foo fix, made % in
435 * prefilter.py: reverted !c:/bin/foo fix, made % in
427 multiline specials work again
436 multiline specials work again
428
437
429 2007-08-13 Ville Vainio <vivainio@gmail.com>
438 2007-08-13 Ville Vainio <vivainio@gmail.com>
430
439
431 * prefilter.py: Take more care to special-case !, so that
440 * prefilter.py: Take more care to special-case !, so that
432 !c:/bin/foo.exe works.
441 !c:/bin/foo.exe works.
433
442
434 * setup.py: if we are building eggs, strip all docs and
443 * setup.py: if we are building eggs, strip all docs and
435 examples (it doesn't make sense to bytecompile examples,
444 examples (it doesn't make sense to bytecompile examples,
436 and docs would be in an awkward place anyway).
445 and docs would be in an awkward place anyway).
437
446
438 * Ryan Krauss' patch fixes start menu shortcuts when IPython
447 * Ryan Krauss' patch fixes start menu shortcuts when IPython
439 is installed into a directory that has spaces in the name.
448 is installed into a directory that has spaces in the name.
440
449
441 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
450 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
442
451
443 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
452 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
444 doctest profile and %doctest_mode, so they actually generate the
453 doctest profile and %doctest_mode, so they actually generate the
445 blank lines needed by doctest to separate individual tests.
454 blank lines needed by doctest to separate individual tests.
446
455
447 * IPython/iplib.py (safe_execfile): modify so that running code
456 * IPython/iplib.py (safe_execfile): modify so that running code
448 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
457 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
449 doesn't get a printed traceback. Any other value in sys.exit(),
458 doesn't get a printed traceback. Any other value in sys.exit(),
450 including the empty call, still generates a traceback. This
459 including the empty call, still generates a traceback. This
451 enables use of %run without having to pass '-e' for codes that
460 enables use of %run without having to pass '-e' for codes that
452 correctly set the exit status flag.
461 correctly set the exit status flag.
453
462
454 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
463 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
455
464
456 * IPython/iplib.py (InteractiveShell.post_config_initialization):
465 * IPython/iplib.py (InteractiveShell.post_config_initialization):
457 fix problems with doctests failing when run inside IPython due to
466 fix problems with doctests failing when run inside IPython due to
458 IPython's modifications of sys.displayhook.
467 IPython's modifications of sys.displayhook.
459
468
460 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
469 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
461
470
462 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
471 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
463 a string with names.
472 a string with names.
464
473
465 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
474 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
466
475
467 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
476 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
468 magic to toggle on/off the doctest pasting support without having
477 magic to toggle on/off the doctest pasting support without having
469 to leave a session to switch to a separate profile.
478 to leave a session to switch to a separate profile.
470
479
471 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
480 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
472
481
473 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
482 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
474 introduce a blank line between inputs, to conform to doctest
483 introduce a blank line between inputs, to conform to doctest
475 requirements.
484 requirements.
476
485
477 * IPython/OInspect.py (Inspector.pinfo): fix another part where
486 * IPython/OInspect.py (Inspector.pinfo): fix another part where
478 auto-generated docstrings for new-style classes were showing up.
487 auto-generated docstrings for new-style classes were showing up.
479
488
480 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
489 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
481
490
482 * api_changes: Add new file to track backward-incompatible
491 * api_changes: Add new file to track backward-incompatible
483 user-visible changes.
492 user-visible changes.
484
493
485 2007-08-06 Ville Vainio <vivainio@gmail.com>
494 2007-08-06 Ville Vainio <vivainio@gmail.com>
486
495
487 * ipmaker.py: fix bug where user_config_ns didn't exist at all
496 * ipmaker.py: fix bug where user_config_ns didn't exist at all
488 before all the config files were handled.
497 before all the config files were handled.
489
498
490 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
499 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
491
500
492 * IPython/irunner.py (RunnerFactory): Add new factory class for
501 * IPython/irunner.py (RunnerFactory): Add new factory class for
493 creating reusable runners based on filenames.
502 creating reusable runners based on filenames.
494
503
495 * IPython/Extensions/ipy_profile_doctest.py: New profile for
504 * IPython/Extensions/ipy_profile_doctest.py: New profile for
496 doctest support. It sets prompts/exceptions as similar to
505 doctest support. It sets prompts/exceptions as similar to
497 standard Python as possible, so that ipython sessions in this
506 standard Python as possible, so that ipython sessions in this
498 profile can be easily pasted as doctests with minimal
507 profile can be easily pasted as doctests with minimal
499 modifications. It also enables pasting of doctests from external
508 modifications. It also enables pasting of doctests from external
500 sources (even if they have leading whitespace), so that you can
509 sources (even if they have leading whitespace), so that you can
501 rerun doctests from existing sources.
510 rerun doctests from existing sources.
502
511
503 * IPython/iplib.py (_prefilter): fix a buglet where after entering
512 * IPython/iplib.py (_prefilter): fix a buglet where after entering
504 some whitespace, the prompt would become a continuation prompt
513 some whitespace, the prompt would become a continuation prompt
505 with no way of exiting it other than Ctrl-C. This fix brings us
514 with no way of exiting it other than Ctrl-C. This fix brings us
506 into conformity with how the default python prompt works.
515 into conformity with how the default python prompt works.
507
516
508 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
517 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
509 Add support for pasting not only lines that start with '>>>', but
518 Add support for pasting not only lines that start with '>>>', but
510 also with ' >>>'. That is, arbitrary whitespace can now precede
519 also with ' >>>'. That is, arbitrary whitespace can now precede
511 the prompts. This makes the system useful for pasting doctests
520 the prompts. This makes the system useful for pasting doctests
512 from docstrings back into a normal session.
521 from docstrings back into a normal session.
513
522
514 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
523 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
515
524
516 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
525 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
517 r1357, which had killed multiple invocations of an embedded
526 r1357, which had killed multiple invocations of an embedded
518 ipython (this means that example-embed has been broken for over 1
527 ipython (this means that example-embed has been broken for over 1
519 year!!!). Rather than possibly breaking the batch stuff for which
528 year!!!). Rather than possibly breaking the batch stuff for which
520 the code in iplib.py/interact was introduced, I worked around the
529 the code in iplib.py/interact was introduced, I worked around the
521 problem in the embedding class in Shell.py. We really need a
530 problem in the embedding class in Shell.py. We really need a
522 bloody test suite for this code, I'm sick of finding stuff that
531 bloody test suite for this code, I'm sick of finding stuff that
523 used to work breaking left and right every time I use an old
532 used to work breaking left and right every time I use an old
524 feature I hadn't touched in a few months.
533 feature I hadn't touched in a few months.
525 (kill_embedded): Add a new magic that only shows up in embedded
534 (kill_embedded): Add a new magic that only shows up in embedded
526 mode, to allow users to permanently deactivate an embedded instance.
535 mode, to allow users to permanently deactivate an embedded instance.
527
536
528 2007-08-01 Ville Vainio <vivainio@gmail.com>
537 2007-08-01 Ville Vainio <vivainio@gmail.com>
529
538
530 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
539 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
531 history gets out of sync on runlines (e.g. when running macros).
540 history gets out of sync on runlines (e.g. when running macros).
532
541
533 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
542 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
534
543
535 * IPython/Magic.py (magic_colors): fix win32-related error message
544 * IPython/Magic.py (magic_colors): fix win32-related error message
536 that could appear under *nix when readline was missing. Patch by
545 that could appear under *nix when readline was missing. Patch by
537 Scott Jackson, closes #175.
546 Scott Jackson, closes #175.
538
547
539 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
548 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
540
549
541 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
550 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
542 completer that it traits-aware, so that traits objects don't show
551 completer that it traits-aware, so that traits objects don't show
543 all of their internal attributes all the time.
552 all of their internal attributes all the time.
544
553
545 * IPython/genutils.py (dir2): moved this code from inside
554 * IPython/genutils.py (dir2): moved this code from inside
546 completer.py to expose it publicly, so I could use it in the
555 completer.py to expose it publicly, so I could use it in the
547 wildcards bugfix.
556 wildcards bugfix.
548
557
549 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
558 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
550 Stefan with Traits.
559 Stefan with Traits.
551
560
552 * IPython/completer.py (Completer.attr_matches): change internal
561 * IPython/completer.py (Completer.attr_matches): change internal
553 var name from 'object' to 'obj', since 'object' is now a builtin
562 var name from 'object' to 'obj', since 'object' is now a builtin
554 and this can lead to weird bugs if reusing this code elsewhere.
563 and this can lead to weird bugs if reusing this code elsewhere.
555
564
556 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
565 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
557
566
558 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
567 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
559 'foo?' and update the code to prevent printing of default
568 'foo?' and update the code to prevent printing of default
560 docstrings that started appearing after I added support for
569 docstrings that started appearing after I added support for
561 new-style classes. The approach I'm using isn't ideal (I just
570 new-style classes. The approach I'm using isn't ideal (I just
562 special-case those strings) but I'm not sure how to more robustly
571 special-case those strings) but I'm not sure how to more robustly
563 differentiate between truly user-written strings and Python's
572 differentiate between truly user-written strings and Python's
564 automatic ones.
573 automatic ones.
565
574
566 2007-07-09 Ville Vainio <vivainio@gmail.com>
575 2007-07-09 Ville Vainio <vivainio@gmail.com>
567
576
568 * completer.py: Applied Matthew Neeley's patch:
577 * completer.py: Applied Matthew Neeley's patch:
569 Dynamic attributes from trait_names and _getAttributeNames are added
578 Dynamic attributes from trait_names and _getAttributeNames are added
570 to the list of tab completions, but when this happens, the attribute
579 to the list of tab completions, but when this happens, the attribute
571 list is turned into a set, so the attributes are unordered when
580 list is turned into a set, so the attributes are unordered when
572 printed, which makes it hard to find the right completion. This patch
581 printed, which makes it hard to find the right completion. This patch
573 turns this set back into a list and sort it.
582 turns this set back into a list and sort it.
574
583
575 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
584 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
576
585
577 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
586 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
578 classes in various inspector functions.
587 classes in various inspector functions.
579
588
580 2007-06-28 Ville Vainio <vivainio@gmail.com>
589 2007-06-28 Ville Vainio <vivainio@gmail.com>
581
590
582 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
591 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
583 Implement "shadow" namespace, and callable aliases that reside there.
592 Implement "shadow" namespace, and callable aliases that reside there.
584 Use them by:
593 Use them by:
585
594
586 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
595 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
587
596
588 foo hello world
597 foo hello world
589 (gets translated to:)
598 (gets translated to:)
590 _sh.foo(r"""hello world""")
599 _sh.foo(r"""hello world""")
591
600
592 In practice, this kind of alias can take the role of a magic function
601 In practice, this kind of alias can take the role of a magic function
593
602
594 * New generic inspect_object, called on obj? and obj??
603 * New generic inspect_object, called on obj? and obj??
595
604
596 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
605 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
597
606
598 * IPython/ultraTB.py (findsource): fix a problem with
607 * IPython/ultraTB.py (findsource): fix a problem with
599 inspect.getfile that can cause crashes during traceback construction.
608 inspect.getfile that can cause crashes during traceback construction.
600
609
601 2007-06-14 Ville Vainio <vivainio@gmail.com>
610 2007-06-14 Ville Vainio <vivainio@gmail.com>
602
611
603 * iplib.py (handle_auto): Try to use ascii for printing "--->"
612 * iplib.py (handle_auto): Try to use ascii for printing "--->"
604 autocall rewrite indication, becausesometimes unicode fails to print
613 autocall rewrite indication, becausesometimes unicode fails to print
605 properly (and you get ' - - - '). Use plain uncoloured ---> for
614 properly (and you get ' - - - '). Use plain uncoloured ---> for
606 unicode.
615 unicode.
607
616
608 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
617 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
609
618
610 . pickleshare 'hash' commands (hget, hset, hcompress,
619 . pickleshare 'hash' commands (hget, hset, hcompress,
611 hdict) for efficient shadow history storage.
620 hdict) for efficient shadow history storage.
612
621
613 2007-06-13 Ville Vainio <vivainio@gmail.com>
622 2007-06-13 Ville Vainio <vivainio@gmail.com>
614
623
615 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
624 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
616 Added kw arg 'interactive', tell whether vars should be visible
625 Added kw arg 'interactive', tell whether vars should be visible
617 with %whos.
626 with %whos.
618
627
619 2007-06-11 Ville Vainio <vivainio@gmail.com>
628 2007-06-11 Ville Vainio <vivainio@gmail.com>
620
629
621 * pspersistence.py, Magic.py, iplib.py: directory history now saved
630 * pspersistence.py, Magic.py, iplib.py: directory history now saved
622 to db
631 to db
623
632
624 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
633 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
625 Also, it exits IPython immediately after evaluating the command (just like
634 Also, it exits IPython immediately after evaluating the command (just like
626 std python)
635 std python)
627
636
628 2007-06-05 Walter Doerwald <walter@livinglogic.de>
637 2007-06-05 Walter Doerwald <walter@livinglogic.de>
629
638
630 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
639 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
631 Python string and captures the output. (Idea and original patch by
640 Python string and captures the output. (Idea and original patch by
632 Stefan van der Walt)
641 Stefan van der Walt)
633
642
634 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
643 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
635
644
636 * IPython/ultraTB.py (VerboseTB.text): update printing of
645 * IPython/ultraTB.py (VerboseTB.text): update printing of
637 exception types for Python 2.5 (now all exceptions in the stdlib
646 exception types for Python 2.5 (now all exceptions in the stdlib
638 are new-style classes).
647 are new-style classes).
639
648
640 2007-05-31 Walter Doerwald <walter@livinglogic.de>
649 2007-05-31 Walter Doerwald <walter@livinglogic.de>
641
650
642 * IPython/Extensions/igrid.py: Add new commands refresh and
651 * IPython/Extensions/igrid.py: Add new commands refresh and
643 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
652 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
644 the iterator once (refresh) or after every x seconds (refresh_timer).
653 the iterator once (refresh) or after every x seconds (refresh_timer).
645 Add a working implementation of "searchexpression", where the text
654 Add a working implementation of "searchexpression", where the text
646 entered is not the text to search for, but an expression that must
655 entered is not the text to search for, but an expression that must
647 be true. Added display of shortcuts to the menu. Added commands "pickinput"
656 be true. Added display of shortcuts to the menu. Added commands "pickinput"
648 and "pickinputattr" that put the object or attribute under the cursor
657 and "pickinputattr" that put the object or attribute under the cursor
649 in the input line. Split the statusbar to be able to display the currently
658 in the input line. Split the statusbar to be able to display the currently
650 active refresh interval. (Patch by Nik Tautenhahn)
659 active refresh interval. (Patch by Nik Tautenhahn)
651
660
652 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
661 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
653
662
654 * fixing set_term_title to use ctypes as default
663 * fixing set_term_title to use ctypes as default
655
664
656 * fixing set_term_title fallback to work when curent dir
665 * fixing set_term_title fallback to work when curent dir
657 is on a windows network share
666 is on a windows network share
658
667
659 2007-05-28 Ville Vainio <vivainio@gmail.com>
668 2007-05-28 Ville Vainio <vivainio@gmail.com>
660
669
661 * %cpaste: strip + with > from left (diffs).
670 * %cpaste: strip + with > from left (diffs).
662
671
663 * iplib.py: Fix crash when readline not installed
672 * iplib.py: Fix crash when readline not installed
664
673
665 2007-05-26 Ville Vainio <vivainio@gmail.com>
674 2007-05-26 Ville Vainio <vivainio@gmail.com>
666
675
667 * generics.py: introduce easy to extend result_display generic
676 * generics.py: introduce easy to extend result_display generic
668 function (using simplegeneric.py).
677 function (using simplegeneric.py).
669
678
670 * Fixed the append functionality of %set.
679 * Fixed the append functionality of %set.
671
680
672 2007-05-25 Ville Vainio <vivainio@gmail.com>
681 2007-05-25 Ville Vainio <vivainio@gmail.com>
673
682
674 * New magic: %rep (fetch / run old commands from history)
683 * New magic: %rep (fetch / run old commands from history)
675
684
676 * New extension: mglob (%mglob magic), for powerful glob / find /filter
685 * New extension: mglob (%mglob magic), for powerful glob / find /filter
677 like functionality
686 like functionality
678
687
679 % maghistory.py: %hist -g PATTERM greps the history for pattern
688 % maghistory.py: %hist -g PATTERM greps the history for pattern
680
689
681 2007-05-24 Walter Doerwald <walter@livinglogic.de>
690 2007-05-24 Walter Doerwald <walter@livinglogic.de>
682
691
683 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
692 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
684 browse the IPython input history
693 browse the IPython input history
685
694
686 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
695 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
687 (mapped to "i") can be used to put the object under the curser in the input
696 (mapped to "i") can be used to put the object under the curser in the input
688 line. pickinputattr (mapped to "I") does the same for the attribute under
697 line. pickinputattr (mapped to "I") does the same for the attribute under
689 the cursor.
698 the cursor.
690
699
691 2007-05-24 Ville Vainio <vivainio@gmail.com>
700 2007-05-24 Ville Vainio <vivainio@gmail.com>
692
701
693 * Grand magic cleansing (changeset [2380]):
702 * Grand magic cleansing (changeset [2380]):
694
703
695 * Introduce ipy_legacy.py where the following magics were
704 * Introduce ipy_legacy.py where the following magics were
696 moved:
705 moved:
697
706
698 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
707 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
699
708
700 If you need them, either use default profile or "import ipy_legacy"
709 If you need them, either use default profile or "import ipy_legacy"
701 in your ipy_user_conf.py
710 in your ipy_user_conf.py
702
711
703 * Move sh and scipy profile to Extensions from UserConfig. this implies
712 * Move sh and scipy profile to Extensions from UserConfig. this implies
704 you should not edit them, but you don't need to run %upgrade when
713 you should not edit them, but you don't need to run %upgrade when
705 upgrading IPython anymore.
714 upgrading IPython anymore.
706
715
707 * %hist/%history now operates in "raw" mode by default. To get the old
716 * %hist/%history now operates in "raw" mode by default. To get the old
708 behaviour, run '%hist -n' (native mode).
717 behaviour, run '%hist -n' (native mode).
709
718
710 * split ipy_stock_completers.py to ipy_stock_completers.py and
719 * split ipy_stock_completers.py to ipy_stock_completers.py and
711 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
720 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
712 installed as default.
721 installed as default.
713
722
714 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
723 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
715 handling.
724 handling.
716
725
717 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
726 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
718 input if readline is available.
727 input if readline is available.
719
728
720 2007-05-23 Ville Vainio <vivainio@gmail.com>
729 2007-05-23 Ville Vainio <vivainio@gmail.com>
721
730
722 * macro.py: %store uses __getstate__ properly
731 * macro.py: %store uses __getstate__ properly
723
732
724 * exesetup.py: added new setup script for creating
733 * exesetup.py: added new setup script for creating
725 standalone IPython executables with py2exe (i.e.
734 standalone IPython executables with py2exe (i.e.
726 no python installation required).
735 no python installation required).
727
736
728 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
737 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
729 its place.
738 its place.
730
739
731 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
740 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
732
741
733 2007-05-21 Ville Vainio <vivainio@gmail.com>
742 2007-05-21 Ville Vainio <vivainio@gmail.com>
734
743
735 * platutil_win32.py (set_term_title): handle
744 * platutil_win32.py (set_term_title): handle
736 failure of 'title' system call properly.
745 failure of 'title' system call properly.
737
746
738 2007-05-17 Walter Doerwald <walter@livinglogic.de>
747 2007-05-17 Walter Doerwald <walter@livinglogic.de>
739
748
740 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
749 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
741 (Bug detected by Paul Mueller).
750 (Bug detected by Paul Mueller).
742
751
743 2007-05-16 Ville Vainio <vivainio@gmail.com>
752 2007-05-16 Ville Vainio <vivainio@gmail.com>
744
753
745 * ipy_profile_sci.py, ipython_win_post_install.py: Create
754 * ipy_profile_sci.py, ipython_win_post_install.py: Create
746 new "sci" profile, effectively a modern version of the old
755 new "sci" profile, effectively a modern version of the old
747 "scipy" profile (which is now slated for deprecation).
756 "scipy" profile (which is now slated for deprecation).
748
757
749 2007-05-15 Ville Vainio <vivainio@gmail.com>
758 2007-05-15 Ville Vainio <vivainio@gmail.com>
750
759
751 * pycolorize.py, pycolor.1: Paul Mueller's patches that
760 * pycolorize.py, pycolor.1: Paul Mueller's patches that
752 make pycolorize read input from stdin when run without arguments.
761 make pycolorize read input from stdin when run without arguments.
753
762
754 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
763 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
755
764
756 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
765 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
757 it in sh profile (instead of ipy_system_conf.py).
766 it in sh profile (instead of ipy_system_conf.py).
758
767
759 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
768 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
760 aliases are now lower case on windows (MyCommand.exe => mycommand).
769 aliases are now lower case on windows (MyCommand.exe => mycommand).
761
770
762 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
771 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
763 Macros are now callable objects that inherit from ipapi.IPyAutocall,
772 Macros are now callable objects that inherit from ipapi.IPyAutocall,
764 i.e. get autocalled regardless of system autocall setting.
773 i.e. get autocalled regardless of system autocall setting.
765
774
766 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
775 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
767
776
768 * IPython/rlineimpl.py: check for clear_history in readline and
777 * IPython/rlineimpl.py: check for clear_history in readline and
769 make it a dummy no-op if not available. This function isn't
778 make it a dummy no-op if not available. This function isn't
770 guaranteed to be in the API and appeared in Python 2.4, so we need
779 guaranteed to be in the API and appeared in Python 2.4, so we need
771 to check it ourselves. Also, clean up this file quite a bit.
780 to check it ourselves. Also, clean up this file quite a bit.
772
781
773 * ipython.1: update man page and full manual with information
782 * ipython.1: update man page and full manual with information
774 about threads (remove outdated warning). Closes #151.
783 about threads (remove outdated warning). Closes #151.
775
784
776 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
785 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
777
786
778 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
787 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
779 in trunk (note that this made it into the 0.8.1 release already,
788 in trunk (note that this made it into the 0.8.1 release already,
780 but the changelogs didn't get coordinated). Many thanks to Gael
789 but the changelogs didn't get coordinated). Many thanks to Gael
781 Varoquaux <gael.varoquaux-AT-normalesup.org>
790 Varoquaux <gael.varoquaux-AT-normalesup.org>
782
791
783 2007-05-09 *** Released version 0.8.1
792 2007-05-09 *** Released version 0.8.1
784
793
785 2007-05-10 Walter Doerwald <walter@livinglogic.de>
794 2007-05-10 Walter Doerwald <walter@livinglogic.de>
786
795
787 * IPython/Extensions/igrid.py: Incorporate html help into
796 * IPython/Extensions/igrid.py: Incorporate html help into
788 the module, so we don't have to search for the file.
797 the module, so we don't have to search for the file.
789
798
790 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
799 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
791
800
792 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
801 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
793
802
794 2007-04-30 Ville Vainio <vivainio@gmail.com>
803 2007-04-30 Ville Vainio <vivainio@gmail.com>
795
804
796 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
805 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
797 user has illegal (non-ascii) home directory name
806 user has illegal (non-ascii) home directory name
798
807
799 2007-04-27 Ville Vainio <vivainio@gmail.com>
808 2007-04-27 Ville Vainio <vivainio@gmail.com>
800
809
801 * platutils_win32.py: implement set_term_title for windows
810 * platutils_win32.py: implement set_term_title for windows
802
811
803 * Update version number
812 * Update version number
804
813
805 * ipy_profile_sh.py: more informative prompt (2 dir levels)
814 * ipy_profile_sh.py: more informative prompt (2 dir levels)
806
815
807 2007-04-26 Walter Doerwald <walter@livinglogic.de>
816 2007-04-26 Walter Doerwald <walter@livinglogic.de>
808
817
809 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
818 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
810 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
819 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
811 bug discovered by Ville).
820 bug discovered by Ville).
812
821
813 2007-04-26 Ville Vainio <vivainio@gmail.com>
822 2007-04-26 Ville Vainio <vivainio@gmail.com>
814
823
815 * Extensions/ipy_completers.py: Olivier's module completer now
824 * Extensions/ipy_completers.py: Olivier's module completer now
816 saves the list of root modules if it takes > 4 secs on the first run.
825 saves the list of root modules if it takes > 4 secs on the first run.
817
826
818 * Magic.py (%rehashx): %rehashx now clears the completer cache
827 * Magic.py (%rehashx): %rehashx now clears the completer cache
819
828
820
829
821 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
830 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
822
831
823 * ipython.el: fix incorrect color scheme, reported by Stefan.
832 * ipython.el: fix incorrect color scheme, reported by Stefan.
824 Closes #149.
833 Closes #149.
825
834
826 * IPython/PyColorize.py (Parser.format2): fix state-handling
835 * IPython/PyColorize.py (Parser.format2): fix state-handling
827 logic. I still don't like how that code handles state, but at
836 logic. I still don't like how that code handles state, but at
828 least now it should be correct, if inelegant. Closes #146.
837 least now it should be correct, if inelegant. Closes #146.
829
838
830 2007-04-25 Ville Vainio <vivainio@gmail.com>
839 2007-04-25 Ville Vainio <vivainio@gmail.com>
831
840
832 * Extensions/ipy_which.py: added extension for %which magic, works
841 * Extensions/ipy_which.py: added extension for %which magic, works
833 a lot like unix 'which' but also finds and expands aliases, and
842 a lot like unix 'which' but also finds and expands aliases, and
834 allows wildcards.
843 allows wildcards.
835
844
836 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
845 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
837 as opposed to returning nothing.
846 as opposed to returning nothing.
838
847
839 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
848 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
840 ipy_stock_completers on default profile, do import on sh profile.
849 ipy_stock_completers on default profile, do import on sh profile.
841
850
842 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
851 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
843
852
844 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
853 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
845 like ipython.py foo.py which raised a IndexError.
854 like ipython.py foo.py which raised a IndexError.
846
855
847 2007-04-21 Ville Vainio <vivainio@gmail.com>
856 2007-04-21 Ville Vainio <vivainio@gmail.com>
848
857
849 * Extensions/ipy_extutil.py: added extension to manage other ipython
858 * Extensions/ipy_extutil.py: added extension to manage other ipython
850 extensions. Now only supports 'ls' == list extensions.
859 extensions. Now only supports 'ls' == list extensions.
851
860
852 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
861 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
853
862
854 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
863 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
855 would prevent use of the exception system outside of a running
864 would prevent use of the exception system outside of a running
856 IPython instance.
865 IPython instance.
857
866
858 2007-04-20 Ville Vainio <vivainio@gmail.com>
867 2007-04-20 Ville Vainio <vivainio@gmail.com>
859
868
860 * Extensions/ipy_render.py: added extension for easy
869 * Extensions/ipy_render.py: added extension for easy
861 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
870 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
862 'Iptl' template notation,
871 'Iptl' template notation,
863
872
864 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
873 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
865 safer & faster 'import' completer.
874 safer & faster 'import' completer.
866
875
867 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
876 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
868 and _ip.defalias(name, command).
877 and _ip.defalias(name, command).
869
878
870 * Extensions/ipy_exportdb.py: New extension for exporting all the
879 * Extensions/ipy_exportdb.py: New extension for exporting all the
871 %store'd data in a portable format (normal ipapi calls like
880 %store'd data in a portable format (normal ipapi calls like
872 defmacro() etc.)
881 defmacro() etc.)
873
882
874 2007-04-19 Ville Vainio <vivainio@gmail.com>
883 2007-04-19 Ville Vainio <vivainio@gmail.com>
875
884
876 * upgrade_dir.py: skip junk files like *.pyc
885 * upgrade_dir.py: skip junk files like *.pyc
877
886
878 * Release.py: version number to 0.8.1
887 * Release.py: version number to 0.8.1
879
888
880 2007-04-18 Ville Vainio <vivainio@gmail.com>
889 2007-04-18 Ville Vainio <vivainio@gmail.com>
881
890
882 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
891 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
883 and later on win32.
892 and later on win32.
884
893
885 2007-04-16 Ville Vainio <vivainio@gmail.com>
894 2007-04-16 Ville Vainio <vivainio@gmail.com>
886
895
887 * iplib.py (showtraceback): Do not crash when running w/o readline.
896 * iplib.py (showtraceback): Do not crash when running w/o readline.
888
897
889 2007-04-12 Walter Doerwald <walter@livinglogic.de>
898 2007-04-12 Walter Doerwald <walter@livinglogic.de>
890
899
891 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
900 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
892 sorted (case sensitive with files and dirs mixed).
901 sorted (case sensitive with files and dirs mixed).
893
902
894 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
903 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
895
904
896 * IPython/Release.py (version): Open trunk for 0.8.1 development.
905 * IPython/Release.py (version): Open trunk for 0.8.1 development.
897
906
898 2007-04-10 *** Released version 0.8.0
907 2007-04-10 *** Released version 0.8.0
899
908
900 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
909 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
901
910
902 * Tag 0.8.0 for release.
911 * Tag 0.8.0 for release.
903
912
904 * IPython/iplib.py (reloadhist): add API function to cleanly
913 * IPython/iplib.py (reloadhist): add API function to cleanly
905 reload the readline history, which was growing inappropriately on
914 reload the readline history, which was growing inappropriately on
906 every %run call.
915 every %run call.
907
916
908 * win32_manual_post_install.py (run): apply last part of Nicolas
917 * win32_manual_post_install.py (run): apply last part of Nicolas
909 Pernetty's patch (I'd accidentally applied it in a different
918 Pernetty's patch (I'd accidentally applied it in a different
910 directory and this particular file didn't get patched).
919 directory and this particular file didn't get patched).
911
920
912 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
921 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
913
922
914 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
923 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
915 find the main thread id and use the proper API call. Thanks to
924 find the main thread id and use the proper API call. Thanks to
916 Stefan for the fix.
925 Stefan for the fix.
917
926
918 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
927 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
919 unit tests to reflect fixed ticket #52, and add more tests sent by
928 unit tests to reflect fixed ticket #52, and add more tests sent by
920 him.
929 him.
921
930
922 * IPython/iplib.py (raw_input): restore the readline completer
931 * IPython/iplib.py (raw_input): restore the readline completer
923 state on every input, in case third-party code messed it up.
932 state on every input, in case third-party code messed it up.
924 (_prefilter): revert recent addition of early-escape checks which
933 (_prefilter): revert recent addition of early-escape checks which
925 prevent many valid alias calls from working.
934 prevent many valid alias calls from working.
926
935
927 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
936 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
928 flag for sigint handler so we don't run a full signal() call on
937 flag for sigint handler so we don't run a full signal() call on
929 each runcode access.
938 each runcode access.
930
939
931 * IPython/Magic.py (magic_whos): small improvement to diagnostic
940 * IPython/Magic.py (magic_whos): small improvement to diagnostic
932 message.
941 message.
933
942
934 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
943 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
935
944
936 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
945 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
937 asynchronous exceptions working, i.e., Ctrl-C can actually
946 asynchronous exceptions working, i.e., Ctrl-C can actually
938 interrupt long-running code in the multithreaded shells.
947 interrupt long-running code in the multithreaded shells.
939
948
940 This is using Tomer Filiba's great ctypes-based trick:
949 This is using Tomer Filiba's great ctypes-based trick:
941 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
950 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
942 this in the past, but hadn't been able to make it work before. So
951 this in the past, but hadn't been able to make it work before. So
943 far it looks like it's actually running, but this needs more
952 far it looks like it's actually running, but this needs more
944 testing. If it really works, I'll be *very* happy, and we'll owe
953 testing. If it really works, I'll be *very* happy, and we'll owe
945 a huge thank you to Tomer. My current implementation is ugly,
954 a huge thank you to Tomer. My current implementation is ugly,
946 hackish and uses nasty globals, but I don't want to try and clean
955 hackish and uses nasty globals, but I don't want to try and clean
947 anything up until we know if it actually works.
956 anything up until we know if it actually works.
948
957
949 NOTE: this feature needs ctypes to work. ctypes is included in
958 NOTE: this feature needs ctypes to work. ctypes is included in
950 Python2.5, but 2.4 users will need to manually install it. This
959 Python2.5, but 2.4 users will need to manually install it. This
951 feature makes multi-threaded shells so much more usable that it's
960 feature makes multi-threaded shells so much more usable that it's
952 a minor price to pay (ctypes is very easy to install, already a
961 a minor price to pay (ctypes is very easy to install, already a
953 requirement for win32 and available in major linux distros).
962 requirement for win32 and available in major linux distros).
954
963
955 2007-04-04 Ville Vainio <vivainio@gmail.com>
964 2007-04-04 Ville Vainio <vivainio@gmail.com>
956
965
957 * Extensions/ipy_completers.py, ipy_stock_completers.py:
966 * Extensions/ipy_completers.py, ipy_stock_completers.py:
958 Moved implementations of 'bundled' completers to ipy_completers.py,
967 Moved implementations of 'bundled' completers to ipy_completers.py,
959 they are only enabled in ipy_stock_completers.py.
968 they are only enabled in ipy_stock_completers.py.
960
969
961 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
970 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
962
971
963 * IPython/PyColorize.py (Parser.format2): Fix identation of
972 * IPython/PyColorize.py (Parser.format2): Fix identation of
964 colorzied output and return early if color scheme is NoColor, to
973 colorzied output and return early if color scheme is NoColor, to
965 avoid unnecessary and expensive tokenization. Closes #131.
974 avoid unnecessary and expensive tokenization. Closes #131.
966
975
967 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
976 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
968
977
969 * IPython/Debugger.py: disable the use of pydb version 1.17. It
978 * IPython/Debugger.py: disable the use of pydb version 1.17. It
970 has a critical bug (a missing import that makes post-mortem not
979 has a critical bug (a missing import that makes post-mortem not
971 work at all). Unfortunately as of this time, this is the version
980 work at all). Unfortunately as of this time, this is the version
972 shipped with Ubuntu Edgy, so quite a few people have this one. I
981 shipped with Ubuntu Edgy, so quite a few people have this one. I
973 hope Edgy will update to a more recent package.
982 hope Edgy will update to a more recent package.
974
983
975 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
984 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
976
985
977 * IPython/iplib.py (_prefilter): close #52, second part of a patch
986 * IPython/iplib.py (_prefilter): close #52, second part of a patch
978 set by Stefan (only the first part had been applied before).
987 set by Stefan (only the first part had been applied before).
979
988
980 * IPython/Extensions/ipy_stock_completers.py (module_completer):
989 * IPython/Extensions/ipy_stock_completers.py (module_completer):
981 remove usage of the dangerous pkgutil.walk_packages(). See
990 remove usage of the dangerous pkgutil.walk_packages(). See
982 details in comments left in the code.
991 details in comments left in the code.
983
992
984 * IPython/Magic.py (magic_whos): add support for numpy arrays
993 * IPython/Magic.py (magic_whos): add support for numpy arrays
985 similar to what we had for Numeric.
994 similar to what we had for Numeric.
986
995
987 * IPython/completer.py (IPCompleter.complete): extend the
996 * IPython/completer.py (IPCompleter.complete): extend the
988 complete() call API to support completions by other mechanisms
997 complete() call API to support completions by other mechanisms
989 than readline. Closes #109.
998 than readline. Closes #109.
990
999
991 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
1000 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
992 protect against a bug in Python's execfile(). Closes #123.
1001 protect against a bug in Python's execfile(). Closes #123.
993
1002
994 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
1003 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
995
1004
996 * IPython/iplib.py (split_user_input): ensure that when splitting
1005 * IPython/iplib.py (split_user_input): ensure that when splitting
997 user input, the part that can be treated as a python name is pure
1006 user input, the part that can be treated as a python name is pure
998 ascii (Python identifiers MUST be pure ascii). Part of the
1007 ascii (Python identifiers MUST be pure ascii). Part of the
999 ongoing Unicode support work.
1008 ongoing Unicode support work.
1000
1009
1001 * IPython/Prompts.py (prompt_specials_color): Add \N for the
1010 * IPython/Prompts.py (prompt_specials_color): Add \N for the
1002 actual prompt number, without any coloring. This allows users to
1011 actual prompt number, without any coloring. This allows users to
1003 produce numbered prompts with their own colors. Added after a
1012 produce numbered prompts with their own colors. Added after a
1004 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
1013 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
1005
1014
1006 2007-03-31 Walter Doerwald <walter@livinglogic.de>
1015 2007-03-31 Walter Doerwald <walter@livinglogic.de>
1007
1016
1008 * IPython/Extensions/igrid.py: Map the return key
1017 * IPython/Extensions/igrid.py: Map the return key
1009 to enter() and shift-return to enterattr().
1018 to enter() and shift-return to enterattr().
1010
1019
1011 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
1020 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
1012
1021
1013 * IPython/Magic.py (magic_psearch): add unicode support by
1022 * IPython/Magic.py (magic_psearch): add unicode support by
1014 encoding to ascii the input, since this routine also only deals
1023 encoding to ascii the input, since this routine also only deals
1015 with valid Python names. Fixes a bug reported by Stefan.
1024 with valid Python names. Fixes a bug reported by Stefan.
1016
1025
1017 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
1026 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
1018
1027
1019 * IPython/Magic.py (_inspect): convert unicode input into ascii
1028 * IPython/Magic.py (_inspect): convert unicode input into ascii
1020 before trying to evaluate it as a Python identifier. This fixes a
1029 before trying to evaluate it as a Python identifier. This fixes a
1021 problem that the new unicode support had introduced when analyzing
1030 problem that the new unicode support had introduced when analyzing
1022 long definition lines for functions.
1031 long definition lines for functions.
1023
1032
1024 2007-03-24 Walter Doerwald <walter@livinglogic.de>
1033 2007-03-24 Walter Doerwald <walter@livinglogic.de>
1025
1034
1026 * IPython/Extensions/igrid.py: Fix picking. Using
1035 * IPython/Extensions/igrid.py: Fix picking. Using
1027 igrid with wxPython 2.6 and -wthread should work now.
1036 igrid with wxPython 2.6 and -wthread should work now.
1028 igrid.display() simply tries to create a frame without
1037 igrid.display() simply tries to create a frame without
1029 an application. Only if this fails an application is created.
1038 an application. Only if this fails an application is created.
1030
1039
1031 2007-03-23 Walter Doerwald <walter@livinglogic.de>
1040 2007-03-23 Walter Doerwald <walter@livinglogic.de>
1032
1041
1033 * IPython/Extensions/path.py: Updated to version 2.2.
1042 * IPython/Extensions/path.py: Updated to version 2.2.
1034
1043
1035 2007-03-23 Ville Vainio <vivainio@gmail.com>
1044 2007-03-23 Ville Vainio <vivainio@gmail.com>
1036
1045
1037 * iplib.py: recursive alias expansion now works better, so that
1046 * iplib.py: recursive alias expansion now works better, so that
1038 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
1047 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
1039 doesn't trip up the process, if 'd' has been aliased to 'ls'.
1048 doesn't trip up the process, if 'd' has been aliased to 'ls'.
1040
1049
1041 * Extensions/ipy_gnuglobal.py added, provides %global magic
1050 * Extensions/ipy_gnuglobal.py added, provides %global magic
1042 for users of http://www.gnu.org/software/global
1051 for users of http://www.gnu.org/software/global
1043
1052
1044 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
1053 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
1045 Closes #52. Patch by Stefan van der Walt.
1054 Closes #52. Patch by Stefan van der Walt.
1046
1055
1047 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
1056 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
1048
1057
1049 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
1058 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
1050 respect the __file__ attribute when using %run. Thanks to a bug
1059 respect the __file__ attribute when using %run. Thanks to a bug
1051 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
1060 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
1052
1061
1053 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
1062 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
1054
1063
1055 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1064 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1056 input. Patch sent by Stefan.
1065 input. Patch sent by Stefan.
1057
1066
1058 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1067 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1059 * IPython/Extensions/ipy_stock_completer.py
1068 * IPython/Extensions/ipy_stock_completer.py
1060 shlex_split, fix bug in shlex_split. len function
1069 shlex_split, fix bug in shlex_split. len function
1061 call was missing an if statement. Caused shlex_split to
1070 call was missing an if statement. Caused shlex_split to
1062 sometimes return "" as last element.
1071 sometimes return "" as last element.
1063
1072
1064 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1073 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1065
1074
1066 * IPython/completer.py
1075 * IPython/completer.py
1067 (IPCompleter.file_matches.single_dir_expand): fix a problem
1076 (IPCompleter.file_matches.single_dir_expand): fix a problem
1068 reported by Stefan, where directories containign a single subdir
1077 reported by Stefan, where directories containign a single subdir
1069 would be completed too early.
1078 would be completed too early.
1070
1079
1071 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1080 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1072 pylab import *' when -pylab is given be optional. A new flag,
1081 pylab import *' when -pylab is given be optional. A new flag,
1073 pylab_import_all controls this behavior, the default is True for
1082 pylab_import_all controls this behavior, the default is True for
1074 backwards compatibility.
1083 backwards compatibility.
1075
1084
1076 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1085 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1077 modified) R. Bernstein's patch for fully syntax highlighted
1086 modified) R. Bernstein's patch for fully syntax highlighted
1078 tracebacks. The functionality is also available under ultraTB for
1087 tracebacks. The functionality is also available under ultraTB for
1079 non-ipython users (someone using ultraTB but outside an ipython
1088 non-ipython users (someone using ultraTB but outside an ipython
1080 session). They can select the color scheme by setting the
1089 session). They can select the color scheme by setting the
1081 module-level global DEFAULT_SCHEME. The highlight functionality
1090 module-level global DEFAULT_SCHEME. The highlight functionality
1082 also works when debugging.
1091 also works when debugging.
1083
1092
1084 * IPython/genutils.py (IOStream.close): small patch by
1093 * IPython/genutils.py (IOStream.close): small patch by
1085 R. Bernstein for improved pydb support.
1094 R. Bernstein for improved pydb support.
1086
1095
1087 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1096 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1088 DaveS <davls@telus.net> to improve support of debugging under
1097 DaveS <davls@telus.net> to improve support of debugging under
1089 NTEmacs, including improved pydb behavior.
1098 NTEmacs, including improved pydb behavior.
1090
1099
1091 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1100 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1092 Python 2.5, where the stats object API changed a little. Thanks
1101 Python 2.5, where the stats object API changed a little. Thanks
1093 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1102 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1094
1103
1095 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1104 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1096 Pernetty's patch to improve support for (X)Emacs under Win32.
1105 Pernetty's patch to improve support for (X)Emacs under Win32.
1097
1106
1098 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1107 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1099
1108
1100 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1109 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1101 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1110 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1102 a report by Nik Tautenhahn.
1111 a report by Nik Tautenhahn.
1103
1112
1104 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1113 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1105
1114
1106 * setup.py: Add the igrid help files to the list of data files
1115 * setup.py: Add the igrid help files to the list of data files
1107 to be installed alongside igrid.
1116 to be installed alongside igrid.
1108 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1117 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1109 Show the input object of the igrid browser as the window tile.
1118 Show the input object of the igrid browser as the window tile.
1110 Show the object the cursor is on in the statusbar.
1119 Show the object the cursor is on in the statusbar.
1111
1120
1112 2007-03-15 Ville Vainio <vivainio@gmail.com>
1121 2007-03-15 Ville Vainio <vivainio@gmail.com>
1113
1122
1114 * Extensions/ipy_stock_completers.py: Fixed exception
1123 * Extensions/ipy_stock_completers.py: Fixed exception
1115 on mismatching quotes in %run completer. Patch by
1124 on mismatching quotes in %run completer. Patch by
1116 Jorgen Stenarson. Closes #127.
1125 Jorgen Stenarson. Closes #127.
1117
1126
1118 2007-03-14 Ville Vainio <vivainio@gmail.com>
1127 2007-03-14 Ville Vainio <vivainio@gmail.com>
1119
1128
1120 * Extensions/ext_rehashdir.py: Do not do auto_alias
1129 * Extensions/ext_rehashdir.py: Do not do auto_alias
1121 in %rehashdir, it clobbers %store'd aliases.
1130 in %rehashdir, it clobbers %store'd aliases.
1122
1131
1123 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1132 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1124 (beefed up %env) imported for sh profile.
1133 (beefed up %env) imported for sh profile.
1125
1134
1126 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1135 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1127
1136
1128 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1137 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1129 as the default browser.
1138 as the default browser.
1130 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1139 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1131 As igrid displays all attributes it ever encounters, fetch() (which has
1140 As igrid displays all attributes it ever encounters, fetch() (which has
1132 been renamed to _fetch()) doesn't have to recalculate the display attributes
1141 been renamed to _fetch()) doesn't have to recalculate the display attributes
1133 every time a new item is fetched. This should speed up scrolling.
1142 every time a new item is fetched. This should speed up scrolling.
1134
1143
1135 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1144 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1136
1145
1137 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1146 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1138 Schmolck's recently reported tab-completion bug (my previous one
1147 Schmolck's recently reported tab-completion bug (my previous one
1139 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1148 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1140
1149
1141 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1150 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1142
1151
1143 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1152 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1144 Close help window if exiting igrid.
1153 Close help window if exiting igrid.
1145
1154
1146 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1155 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1147
1156
1148 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1157 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1149 before calling functions from readline.
1158 before calling functions from readline.
1150
1159
1151 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1160 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1152
1161
1153 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1162 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1154 igrid is a wxPython-based display object for ipipe. If your system has
1163 igrid is a wxPython-based display object for ipipe. If your system has
1155 wx installed igrid will be the default display. Without wx ipipe falls
1164 wx installed igrid will be the default display. Without wx ipipe falls
1156 back to ibrowse (which needs curses). If no curses is installed ipipe
1165 back to ibrowse (which needs curses). If no curses is installed ipipe
1157 falls back to idump.
1166 falls back to idump.
1158
1167
1159 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1168 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1160
1169
1161 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1170 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1162 my changes from yesterday, they introduced bugs. Will reactivate
1171 my changes from yesterday, they introduced bugs. Will reactivate
1163 once I get a correct solution, which will be much easier thanks to
1172 once I get a correct solution, which will be much easier thanks to
1164 Dan Milstein's new prefilter test suite.
1173 Dan Milstein's new prefilter test suite.
1165
1174
1166 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1175 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1167
1176
1168 * IPython/iplib.py (split_user_input): fix input splitting so we
1177 * IPython/iplib.py (split_user_input): fix input splitting so we
1169 don't attempt attribute accesses on things that can't possibly be
1178 don't attempt attribute accesses on things that can't possibly be
1170 valid Python attributes. After a bug report by Alex Schmolck.
1179 valid Python attributes. After a bug report by Alex Schmolck.
1171 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1180 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1172 %magic with explicit % prefix.
1181 %magic with explicit % prefix.
1173
1182
1174 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1183 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1175
1184
1176 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1185 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1177 avoid a DeprecationWarning from GTK.
1186 avoid a DeprecationWarning from GTK.
1178
1187
1179 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1188 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1180
1189
1181 * IPython/genutils.py (clock): I modified clock() to return total
1190 * IPython/genutils.py (clock): I modified clock() to return total
1182 time, user+system. This is a more commonly needed metric. I also
1191 time, user+system. This is a more commonly needed metric. I also
1183 introduced the new clocku/clocks to get only user/system time if
1192 introduced the new clocku/clocks to get only user/system time if
1184 one wants those instead.
1193 one wants those instead.
1185
1194
1186 ***WARNING: API CHANGE*** clock() used to return only user time,
1195 ***WARNING: API CHANGE*** clock() used to return only user time,
1187 so if you want exactly the same results as before, use clocku
1196 so if you want exactly the same results as before, use clocku
1188 instead.
1197 instead.
1189
1198
1190 2007-02-22 Ville Vainio <vivainio@gmail.com>
1199 2007-02-22 Ville Vainio <vivainio@gmail.com>
1191
1200
1192 * IPython/Extensions/ipy_p4.py: Extension for improved
1201 * IPython/Extensions/ipy_p4.py: Extension for improved
1193 p4 (perforce version control system) experience.
1202 p4 (perforce version control system) experience.
1194 Adds %p4 magic with p4 command completion and
1203 Adds %p4 magic with p4 command completion and
1195 automatic -G argument (marshall output as python dict)
1204 automatic -G argument (marshall output as python dict)
1196
1205
1197 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1206 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1198
1207
1199 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1208 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1200 stop marks.
1209 stop marks.
1201 (ClearingMixin): a simple mixin to easily make a Demo class clear
1210 (ClearingMixin): a simple mixin to easily make a Demo class clear
1202 the screen in between blocks and have empty marquees. The
1211 the screen in between blocks and have empty marquees. The
1203 ClearDemo and ClearIPDemo classes that use it are included.
1212 ClearDemo and ClearIPDemo classes that use it are included.
1204
1213
1205 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1214 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1206
1215
1207 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1216 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1208 protect against exceptions at Python shutdown time. Patch
1217 protect against exceptions at Python shutdown time. Patch
1209 sumbmitted to upstream.
1218 sumbmitted to upstream.
1210
1219
1211 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1220 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1212
1221
1213 * IPython/Extensions/ibrowse.py: If entering the first object level
1222 * IPython/Extensions/ibrowse.py: If entering the first object level
1214 (i.e. the object for which the browser has been started) fails,
1223 (i.e. the object for which the browser has been started) fails,
1215 now the error is raised directly (aborting the browser) instead of
1224 now the error is raised directly (aborting the browser) instead of
1216 running into an empty levels list later.
1225 running into an empty levels list later.
1217
1226
1218 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1227 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1219
1228
1220 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1229 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1221 for the noitem object.
1230 for the noitem object.
1222
1231
1223 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1232 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1224
1233
1225 * IPython/completer.py (Completer.attr_matches): Fix small
1234 * IPython/completer.py (Completer.attr_matches): Fix small
1226 tab-completion bug with Enthought Traits objects with units.
1235 tab-completion bug with Enthought Traits objects with units.
1227 Thanks to a bug report by Tom Denniston
1236 Thanks to a bug report by Tom Denniston
1228 <tom.denniston-AT-alum.dartmouth.org>.
1237 <tom.denniston-AT-alum.dartmouth.org>.
1229
1238
1230 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1239 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1231
1240
1232 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1241 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1233 bug where only .ipy or .py would be completed. Once the first
1242 bug where only .ipy or .py would be completed. Once the first
1234 argument to %run has been given, all completions are valid because
1243 argument to %run has been given, all completions are valid because
1235 they are the arguments to the script, which may well be non-python
1244 they are the arguments to the script, which may well be non-python
1236 filenames.
1245 filenames.
1237
1246
1238 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1247 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1239 to irunner to allow it to correctly support real doctesting of
1248 to irunner to allow it to correctly support real doctesting of
1240 out-of-process ipython code.
1249 out-of-process ipython code.
1241
1250
1242 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1251 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1243 title an option (-noterm_title) because it completely breaks
1252 title an option (-noterm_title) because it completely breaks
1244 doctesting.
1253 doctesting.
1245
1254
1246 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1255 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1247
1256
1248 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1257 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1249
1258
1250 * IPython/irunner.py (main): fix small bug where extensions were
1259 * IPython/irunner.py (main): fix small bug where extensions were
1251 not being correctly recognized.
1260 not being correctly recognized.
1252
1261
1253 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1262 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1254
1263
1255 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1264 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1256 a string containing a single line yields the string itself as the
1265 a string containing a single line yields the string itself as the
1257 only item.
1266 only item.
1258
1267
1259 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1268 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1260 object if it's the same as the one on the last level (This avoids
1269 object if it's the same as the one on the last level (This avoids
1261 infinite recursion for one line strings).
1270 infinite recursion for one line strings).
1262
1271
1263 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1272 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1264
1273
1265 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1274 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1266 all output streams before printing tracebacks. This ensures that
1275 all output streams before printing tracebacks. This ensures that
1267 user output doesn't end up interleaved with traceback output.
1276 user output doesn't end up interleaved with traceback output.
1268
1277
1269 2007-01-10 Ville Vainio <vivainio@gmail.com>
1278 2007-01-10 Ville Vainio <vivainio@gmail.com>
1270
1279
1271 * Extensions/envpersist.py: Turbocharged %env that remembers
1280 * Extensions/envpersist.py: Turbocharged %env that remembers
1272 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1281 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1273 "%env VISUAL=jed".
1282 "%env VISUAL=jed".
1274
1283
1275 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1284 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1276
1285
1277 * IPython/iplib.py (showtraceback): ensure that we correctly call
1286 * IPython/iplib.py (showtraceback): ensure that we correctly call
1278 custom handlers in all cases (some with pdb were slipping through,
1287 custom handlers in all cases (some with pdb were slipping through,
1279 but I'm not exactly sure why).
1288 but I'm not exactly sure why).
1280
1289
1281 * IPython/Debugger.py (Tracer.__init__): added new class to
1290 * IPython/Debugger.py (Tracer.__init__): added new class to
1282 support set_trace-like usage of IPython's enhanced debugger.
1291 support set_trace-like usage of IPython's enhanced debugger.
1283
1292
1284 2006-12-24 Ville Vainio <vivainio@gmail.com>
1293 2006-12-24 Ville Vainio <vivainio@gmail.com>
1285
1294
1286 * ipmaker.py: more informative message when ipy_user_conf
1295 * ipmaker.py: more informative message when ipy_user_conf
1287 import fails (suggest running %upgrade).
1296 import fails (suggest running %upgrade).
1288
1297
1289 * tools/run_ipy_in_profiler.py: Utility to see where
1298 * tools/run_ipy_in_profiler.py: Utility to see where
1290 the time during IPython startup is spent.
1299 the time during IPython startup is spent.
1291
1300
1292 2006-12-20 Ville Vainio <vivainio@gmail.com>
1301 2006-12-20 Ville Vainio <vivainio@gmail.com>
1293
1302
1294 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1303 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1295
1304
1296 * ipapi.py: Add new ipapi method, expand_alias.
1305 * ipapi.py: Add new ipapi method, expand_alias.
1297
1306
1298 * Release.py: Bump up version to 0.7.4.svn
1307 * Release.py: Bump up version to 0.7.4.svn
1299
1308
1300 2006-12-17 Ville Vainio <vivainio@gmail.com>
1309 2006-12-17 Ville Vainio <vivainio@gmail.com>
1301
1310
1302 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1311 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1303 to work properly on posix too
1312 to work properly on posix too
1304
1313
1305 * Release.py: Update revnum (version is still just 0.7.3).
1314 * Release.py: Update revnum (version is still just 0.7.3).
1306
1315
1307 2006-12-15 Ville Vainio <vivainio@gmail.com>
1316 2006-12-15 Ville Vainio <vivainio@gmail.com>
1308
1317
1309 * scripts/ipython_win_post_install: create ipython.py in
1318 * scripts/ipython_win_post_install: create ipython.py in
1310 prefix + "/scripts".
1319 prefix + "/scripts".
1311
1320
1312 * Release.py: Update version to 0.7.3.
1321 * Release.py: Update version to 0.7.3.
1313
1322
1314 2006-12-14 Ville Vainio <vivainio@gmail.com>
1323 2006-12-14 Ville Vainio <vivainio@gmail.com>
1315
1324
1316 * scripts/ipython_win_post_install: Overwrite old shortcuts
1325 * scripts/ipython_win_post_install: Overwrite old shortcuts
1317 if they already exist
1326 if they already exist
1318
1327
1319 * Release.py: release 0.7.3rc2
1328 * Release.py: release 0.7.3rc2
1320
1329
1321 2006-12-13 Ville Vainio <vivainio@gmail.com>
1330 2006-12-13 Ville Vainio <vivainio@gmail.com>
1322
1331
1323 * Branch and update Release.py for 0.7.3rc1
1332 * Branch and update Release.py for 0.7.3rc1
1324
1333
1325 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1334 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1326
1335
1327 * IPython/Shell.py (IPShellWX): update for current WX naming
1336 * IPython/Shell.py (IPShellWX): update for current WX naming
1328 conventions, to avoid a deprecation warning with current WX
1337 conventions, to avoid a deprecation warning with current WX
1329 versions. Thanks to a report by Danny Shevitz.
1338 versions. Thanks to a report by Danny Shevitz.
1330
1339
1331 2006-12-12 Ville Vainio <vivainio@gmail.com>
1340 2006-12-12 Ville Vainio <vivainio@gmail.com>
1332
1341
1333 * ipmaker.py: apply david cournapeau's patch to make
1342 * ipmaker.py: apply david cournapeau's patch to make
1334 import_some work properly even when ipythonrc does
1343 import_some work properly even when ipythonrc does
1335 import_some on empty list (it was an old bug!).
1344 import_some on empty list (it was an old bug!).
1336
1345
1337 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1346 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1338 Add deprecation note to ipythonrc and a url to wiki
1347 Add deprecation note to ipythonrc and a url to wiki
1339 in ipy_user_conf.py
1348 in ipy_user_conf.py
1340
1349
1341
1350
1342 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1351 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1343 as if it was typed on IPython command prompt, i.e.
1352 as if it was typed on IPython command prompt, i.e.
1344 as IPython script.
1353 as IPython script.
1345
1354
1346 * example-magic.py, magic_grepl.py: remove outdated examples
1355 * example-magic.py, magic_grepl.py: remove outdated examples
1347
1356
1348 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1357 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1349
1358
1350 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1359 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1351 is called before any exception has occurred.
1360 is called before any exception has occurred.
1352
1361
1353 2006-12-08 Ville Vainio <vivainio@gmail.com>
1362 2006-12-08 Ville Vainio <vivainio@gmail.com>
1354
1363
1355 * Extensions/ipy_stock_completers.py: fix cd completer
1364 * Extensions/ipy_stock_completers.py: fix cd completer
1356 to translate /'s to \'s again.
1365 to translate /'s to \'s again.
1357
1366
1358 * completer.py: prevent traceback on file completions w/
1367 * completer.py: prevent traceback on file completions w/
1359 backslash.
1368 backslash.
1360
1369
1361 * Release.py: Update release number to 0.7.3b3 for release
1370 * Release.py: Update release number to 0.7.3b3 for release
1362
1371
1363 2006-12-07 Ville Vainio <vivainio@gmail.com>
1372 2006-12-07 Ville Vainio <vivainio@gmail.com>
1364
1373
1365 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1374 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1366 while executing external code. Provides more shell-like behaviour
1375 while executing external code. Provides more shell-like behaviour
1367 and overall better response to ctrl + C / ctrl + break.
1376 and overall better response to ctrl + C / ctrl + break.
1368
1377
1369 * tools/make_tarball.py: new script to create tarball straight from svn
1378 * tools/make_tarball.py: new script to create tarball straight from svn
1370 (setup.py sdist doesn't work on win32).
1379 (setup.py sdist doesn't work on win32).
1371
1380
1372 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1381 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1373 on dirnames with spaces and use the default completer instead.
1382 on dirnames with spaces and use the default completer instead.
1374
1383
1375 * Revision.py: Change version to 0.7.3b2 for release.
1384 * Revision.py: Change version to 0.7.3b2 for release.
1376
1385
1377 2006-12-05 Ville Vainio <vivainio@gmail.com>
1386 2006-12-05 Ville Vainio <vivainio@gmail.com>
1378
1387
1379 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1388 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1380 pydb patch 4 (rm debug printing, py 2.5 checking)
1389 pydb patch 4 (rm debug printing, py 2.5 checking)
1381
1390
1382 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1391 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1383 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1392 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1384 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1393 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1385 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1394 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1386 object the cursor was on before the refresh. The command "markrange" is
1395 object the cursor was on before the refresh. The command "markrange" is
1387 mapped to "%" now.
1396 mapped to "%" now.
1388 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1397 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1389
1398
1390 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1399 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1391
1400
1392 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1401 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1393 interactive debugger on the last traceback, without having to call
1402 interactive debugger on the last traceback, without having to call
1394 %pdb and rerun your code. Made minor changes in various modules,
1403 %pdb and rerun your code. Made minor changes in various modules,
1395 should automatically recognize pydb if available.
1404 should automatically recognize pydb if available.
1396
1405
1397 2006-11-28 Ville Vainio <vivainio@gmail.com>
1406 2006-11-28 Ville Vainio <vivainio@gmail.com>
1398
1407
1399 * completer.py: If the text start with !, show file completions
1408 * completer.py: If the text start with !, show file completions
1400 properly. This helps when trying to complete command name
1409 properly. This helps when trying to complete command name
1401 for shell escapes.
1410 for shell escapes.
1402
1411
1403 2006-11-27 Ville Vainio <vivainio@gmail.com>
1412 2006-11-27 Ville Vainio <vivainio@gmail.com>
1404
1413
1405 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1414 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1406 der Walt. Clean up svn and hg completers by using a common
1415 der Walt. Clean up svn and hg completers by using a common
1407 vcs_completer.
1416 vcs_completer.
1408
1417
1409 2006-11-26 Ville Vainio <vivainio@gmail.com>
1418 2006-11-26 Ville Vainio <vivainio@gmail.com>
1410
1419
1411 * Remove ipconfig and %config; you should use _ip.options structure
1420 * Remove ipconfig and %config; you should use _ip.options structure
1412 directly instead!
1421 directly instead!
1413
1422
1414 * genutils.py: add wrap_deprecated function for deprecating callables
1423 * genutils.py: add wrap_deprecated function for deprecating callables
1415
1424
1416 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1425 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1417 _ip.system instead. ipalias is redundant.
1426 _ip.system instead. ipalias is redundant.
1418
1427
1419 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1428 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1420 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1429 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1421 explicit.
1430 explicit.
1422
1431
1423 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1432 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1424 completer. Try it by entering 'hg ' and pressing tab.
1433 completer. Try it by entering 'hg ' and pressing tab.
1425
1434
1426 * macro.py: Give Macro a useful __repr__ method
1435 * macro.py: Give Macro a useful __repr__ method
1427
1436
1428 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1437 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1429
1438
1430 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1439 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1431 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1440 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1432 we don't get a duplicate ipipe module, where registration of the xrepr
1441 we don't get a duplicate ipipe module, where registration of the xrepr
1433 implementation for Text is useless.
1442 implementation for Text is useless.
1434
1443
1435 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1444 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1436
1445
1437 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1446 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1438
1447
1439 2006-11-24 Ville Vainio <vivainio@gmail.com>
1448 2006-11-24 Ville Vainio <vivainio@gmail.com>
1440
1449
1441 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1450 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1442 try to use "cProfile" instead of the slower pure python
1451 try to use "cProfile" instead of the slower pure python
1443 "profile"
1452 "profile"
1444
1453
1445 2006-11-23 Ville Vainio <vivainio@gmail.com>
1454 2006-11-23 Ville Vainio <vivainio@gmail.com>
1446
1455
1447 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1456 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1448 Qt+IPython+Designer link in documentation.
1457 Qt+IPython+Designer link in documentation.
1449
1458
1450 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1459 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1451 correct Pdb object to %pydb.
1460 correct Pdb object to %pydb.
1452
1461
1453
1462
1454 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1463 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1455 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1464 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1456 generic xrepr(), otherwise the list implementation would kick in.
1465 generic xrepr(), otherwise the list implementation would kick in.
1457
1466
1458 2006-11-21 Ville Vainio <vivainio@gmail.com>
1467 2006-11-21 Ville Vainio <vivainio@gmail.com>
1459
1468
1460 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1469 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1461 with one from UserConfig.
1470 with one from UserConfig.
1462
1471
1463 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1472 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1464 it was missing which broke the sh profile.
1473 it was missing which broke the sh profile.
1465
1474
1466 * completer.py: file completer now uses explicit '/' instead
1475 * completer.py: file completer now uses explicit '/' instead
1467 of os.path.join, expansion of 'foo' was broken on win32
1476 of os.path.join, expansion of 'foo' was broken on win32
1468 if there was one directory with name 'foobar'.
1477 if there was one directory with name 'foobar'.
1469
1478
1470 * A bunch of patches from Kirill Smelkov:
1479 * A bunch of patches from Kirill Smelkov:
1471
1480
1472 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1481 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1473
1482
1474 * [patch 7/9] Implement %page -r (page in raw mode) -
1483 * [patch 7/9] Implement %page -r (page in raw mode) -
1475
1484
1476 * [patch 5/9] ScientificPython webpage has moved
1485 * [patch 5/9] ScientificPython webpage has moved
1477
1486
1478 * [patch 4/9] The manual mentions %ds, should be %dhist
1487 * [patch 4/9] The manual mentions %ds, should be %dhist
1479
1488
1480 * [patch 3/9] Kill old bits from %prun doc.
1489 * [patch 3/9] Kill old bits from %prun doc.
1481
1490
1482 * [patch 1/9] Fix typos here and there.
1491 * [patch 1/9] Fix typos here and there.
1483
1492
1484 2006-11-08 Ville Vainio <vivainio@gmail.com>
1493 2006-11-08 Ville Vainio <vivainio@gmail.com>
1485
1494
1486 * completer.py (attr_matches): catch all exceptions raised
1495 * completer.py (attr_matches): catch all exceptions raised
1487 by eval of expr with dots.
1496 by eval of expr with dots.
1488
1497
1489 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1498 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1490
1499
1491 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1500 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1492 input if it starts with whitespace. This allows you to paste
1501 input if it starts with whitespace. This allows you to paste
1493 indented input from any editor without manually having to type in
1502 indented input from any editor without manually having to type in
1494 the 'if 1:', which is convenient when working interactively.
1503 the 'if 1:', which is convenient when working interactively.
1495 Slightly modifed version of a patch by Bo Peng
1504 Slightly modifed version of a patch by Bo Peng
1496 <bpeng-AT-rice.edu>.
1505 <bpeng-AT-rice.edu>.
1497
1506
1498 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1507 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1499
1508
1500 * IPython/irunner.py (main): modified irunner so it automatically
1509 * IPython/irunner.py (main): modified irunner so it automatically
1501 recognizes the right runner to use based on the extension (.py for
1510 recognizes the right runner to use based on the extension (.py for
1502 python, .ipy for ipython and .sage for sage).
1511 python, .ipy for ipython and .sage for sage).
1503
1512
1504 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1513 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1505 visible in ipapi as ip.config(), to programatically control the
1514 visible in ipapi as ip.config(), to programatically control the
1506 internal rc object. There's an accompanying %config magic for
1515 internal rc object. There's an accompanying %config magic for
1507 interactive use, which has been enhanced to match the
1516 interactive use, which has been enhanced to match the
1508 funtionality in ipconfig.
1517 funtionality in ipconfig.
1509
1518
1510 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1519 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1511 so it's not just a toggle, it now takes an argument. Add support
1520 so it's not just a toggle, it now takes an argument. Add support
1512 for a customizable header when making system calls, as the new
1521 for a customizable header when making system calls, as the new
1513 system_header variable in the ipythonrc file.
1522 system_header variable in the ipythonrc file.
1514
1523
1515 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1524 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1516
1525
1517 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1526 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1518 generic functions (using Philip J. Eby's simplegeneric package).
1527 generic functions (using Philip J. Eby's simplegeneric package).
1519 This makes it possible to customize the display of third-party classes
1528 This makes it possible to customize the display of third-party classes
1520 without having to monkeypatch them. xiter() no longer supports a mode
1529 without having to monkeypatch them. xiter() no longer supports a mode
1521 argument and the XMode class has been removed. The same functionality can
1530 argument and the XMode class has been removed. The same functionality can
1522 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1531 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1523 One consequence of the switch to generic functions is that xrepr() and
1532 One consequence of the switch to generic functions is that xrepr() and
1524 xattrs() implementation must define the default value for the mode
1533 xattrs() implementation must define the default value for the mode
1525 argument themselves and xattrs() implementations must return real
1534 argument themselves and xattrs() implementations must return real
1526 descriptors.
1535 descriptors.
1527
1536
1528 * IPython/external: This new subpackage will contain all third-party
1537 * IPython/external: This new subpackage will contain all third-party
1529 packages that are bundled with IPython. (The first one is simplegeneric).
1538 packages that are bundled with IPython. (The first one is simplegeneric).
1530
1539
1531 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1540 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1532 directory which as been dropped in r1703.
1541 directory which as been dropped in r1703.
1533
1542
1534 * IPython/Extensions/ipipe.py (iless): Fixed.
1543 * IPython/Extensions/ipipe.py (iless): Fixed.
1535
1544
1536 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1545 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1537
1546
1538 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1547 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1539
1548
1540 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1549 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1541 handling in variable expansion so that shells and magics recognize
1550 handling in variable expansion so that shells and magics recognize
1542 function local scopes correctly. Bug reported by Brian.
1551 function local scopes correctly. Bug reported by Brian.
1543
1552
1544 * scripts/ipython: remove the very first entry in sys.path which
1553 * scripts/ipython: remove the very first entry in sys.path which
1545 Python auto-inserts for scripts, so that sys.path under IPython is
1554 Python auto-inserts for scripts, so that sys.path under IPython is
1546 as similar as possible to that under plain Python.
1555 as similar as possible to that under plain Python.
1547
1556
1548 * IPython/completer.py (IPCompleter.file_matches): Fix
1557 * IPython/completer.py (IPCompleter.file_matches): Fix
1549 tab-completion so that quotes are not closed unless the completion
1558 tab-completion so that quotes are not closed unless the completion
1550 is unambiguous. After a request by Stefan. Minor cleanups in
1559 is unambiguous. After a request by Stefan. Minor cleanups in
1551 ipy_stock_completers.
1560 ipy_stock_completers.
1552
1561
1553 2006-11-02 Ville Vainio <vivainio@gmail.com>
1562 2006-11-02 Ville Vainio <vivainio@gmail.com>
1554
1563
1555 * ipy_stock_completers.py: Add %run and %cd completers.
1564 * ipy_stock_completers.py: Add %run and %cd completers.
1556
1565
1557 * completer.py: Try running custom completer for both
1566 * completer.py: Try running custom completer for both
1558 "foo" and "%foo" if the command is just "foo". Ignore case
1567 "foo" and "%foo" if the command is just "foo". Ignore case
1559 when filtering possible completions.
1568 when filtering possible completions.
1560
1569
1561 * UserConfig/ipy_user_conf.py: install stock completers as default
1570 * UserConfig/ipy_user_conf.py: install stock completers as default
1562
1571
1563 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1572 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1564 simplified readline history save / restore through a wrapper
1573 simplified readline history save / restore through a wrapper
1565 function
1574 function
1566
1575
1567
1576
1568 2006-10-31 Ville Vainio <vivainio@gmail.com>
1577 2006-10-31 Ville Vainio <vivainio@gmail.com>
1569
1578
1570 * strdispatch.py, completer.py, ipy_stock_completers.py:
1579 * strdispatch.py, completer.py, ipy_stock_completers.py:
1571 Allow str_key ("command") in completer hooks. Implement
1580 Allow str_key ("command") in completer hooks. Implement
1572 trivial completer for 'import' (stdlib modules only). Rename
1581 trivial completer for 'import' (stdlib modules only). Rename
1573 ipy_linux_package_managers.py to ipy_stock_completers.py.
1582 ipy_linux_package_managers.py to ipy_stock_completers.py.
1574 SVN completer.
1583 SVN completer.
1575
1584
1576 * Extensions/ledit.py: %magic line editor for easily and
1585 * Extensions/ledit.py: %magic line editor for easily and
1577 incrementally manipulating lists of strings. The magic command
1586 incrementally manipulating lists of strings. The magic command
1578 name is %led.
1587 name is %led.
1579
1588
1580 2006-10-30 Ville Vainio <vivainio@gmail.com>
1589 2006-10-30 Ville Vainio <vivainio@gmail.com>
1581
1590
1582 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1591 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1583 Bernsteins's patches for pydb integration.
1592 Bernsteins's patches for pydb integration.
1584 http://bashdb.sourceforge.net/pydb/
1593 http://bashdb.sourceforge.net/pydb/
1585
1594
1586 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1595 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1587 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1596 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1588 custom completer hook to allow the users to implement their own
1597 custom completer hook to allow the users to implement their own
1589 completers. See ipy_linux_package_managers.py for example. The
1598 completers. See ipy_linux_package_managers.py for example. The
1590 hook name is 'complete_command'.
1599 hook name is 'complete_command'.
1591
1600
1592 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1601 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1593
1602
1594 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1603 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1595 Numeric leftovers.
1604 Numeric leftovers.
1596
1605
1597 * ipython.el (py-execute-region): apply Stefan's patch to fix
1606 * ipython.el (py-execute-region): apply Stefan's patch to fix
1598 garbled results if the python shell hasn't been previously started.
1607 garbled results if the python shell hasn't been previously started.
1599
1608
1600 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1609 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1601 pretty generic function and useful for other things.
1610 pretty generic function and useful for other things.
1602
1611
1603 * IPython/OInspect.py (getsource): Add customizable source
1612 * IPython/OInspect.py (getsource): Add customizable source
1604 extractor. After a request/patch form W. Stein (SAGE).
1613 extractor. After a request/patch form W. Stein (SAGE).
1605
1614
1606 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1615 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1607 window size to a more reasonable value from what pexpect does,
1616 window size to a more reasonable value from what pexpect does,
1608 since their choice causes wrapping bugs with long input lines.
1617 since their choice causes wrapping bugs with long input lines.
1609
1618
1610 2006-10-28 Ville Vainio <vivainio@gmail.com>
1619 2006-10-28 Ville Vainio <vivainio@gmail.com>
1611
1620
1612 * Magic.py (%run): Save and restore the readline history from
1621 * Magic.py (%run): Save and restore the readline history from
1613 file around %run commands to prevent side effects from
1622 file around %run commands to prevent side effects from
1614 %runned programs that might use readline (e.g. pydb).
1623 %runned programs that might use readline (e.g. pydb).
1615
1624
1616 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1625 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1617 invoking the pydb enhanced debugger.
1626 invoking the pydb enhanced debugger.
1618
1627
1619 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1628 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1620
1629
1621 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1630 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1622 call the base class method and propagate the return value to
1631 call the base class method and propagate the return value to
1623 ifile. This is now done by path itself.
1632 ifile. This is now done by path itself.
1624
1633
1625 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1634 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1626
1635
1627 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1636 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1628 api: set_crash_handler(), to expose the ability to change the
1637 api: set_crash_handler(), to expose the ability to change the
1629 internal crash handler.
1638 internal crash handler.
1630
1639
1631 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1640 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1632 the various parameters of the crash handler so that apps using
1641 the various parameters of the crash handler so that apps using
1633 IPython as their engine can customize crash handling. Ipmlemented
1642 IPython as their engine can customize crash handling. Ipmlemented
1634 at the request of SAGE.
1643 at the request of SAGE.
1635
1644
1636 2006-10-14 Ville Vainio <vivainio@gmail.com>
1645 2006-10-14 Ville Vainio <vivainio@gmail.com>
1637
1646
1638 * Magic.py, ipython.el: applied first "safe" part of Rocky
1647 * Magic.py, ipython.el: applied first "safe" part of Rocky
1639 Bernstein's patch set for pydb integration.
1648 Bernstein's patch set for pydb integration.
1640
1649
1641 * Magic.py (%unalias, %alias): %store'd aliases can now be
1650 * Magic.py (%unalias, %alias): %store'd aliases can now be
1642 removed with '%unalias'. %alias w/o args now shows most
1651 removed with '%unalias'. %alias w/o args now shows most
1643 interesting (stored / manually defined) aliases last
1652 interesting (stored / manually defined) aliases last
1644 where they catch the eye w/o scrolling.
1653 where they catch the eye w/o scrolling.
1645
1654
1646 * Magic.py (%rehashx), ext_rehashdir.py: files with
1655 * Magic.py (%rehashx), ext_rehashdir.py: files with
1647 'py' extension are always considered executable, even
1656 'py' extension are always considered executable, even
1648 when not in PATHEXT environment variable.
1657 when not in PATHEXT environment variable.
1649
1658
1650 2006-10-12 Ville Vainio <vivainio@gmail.com>
1659 2006-10-12 Ville Vainio <vivainio@gmail.com>
1651
1660
1652 * jobctrl.py: Add new "jobctrl" extension for spawning background
1661 * jobctrl.py: Add new "jobctrl" extension for spawning background
1653 processes with "&find /". 'import jobctrl' to try it out. Requires
1662 processes with "&find /". 'import jobctrl' to try it out. Requires
1654 'subprocess' module, standard in python 2.4+.
1663 'subprocess' module, standard in python 2.4+.
1655
1664
1656 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1665 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1657 so if foo -> bar and bar -> baz, then foo -> baz.
1666 so if foo -> bar and bar -> baz, then foo -> baz.
1658
1667
1659 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1668 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1660
1669
1661 * IPython/Magic.py (Magic.parse_options): add a new posix option
1670 * IPython/Magic.py (Magic.parse_options): add a new posix option
1662 to allow parsing of input args in magics that doesn't strip quotes
1671 to allow parsing of input args in magics that doesn't strip quotes
1663 (if posix=False). This also closes %timeit bug reported by
1672 (if posix=False). This also closes %timeit bug reported by
1664 Stefan.
1673 Stefan.
1665
1674
1666 2006-10-03 Ville Vainio <vivainio@gmail.com>
1675 2006-10-03 Ville Vainio <vivainio@gmail.com>
1667
1676
1668 * iplib.py (raw_input, interact): Return ValueError catching for
1677 * iplib.py (raw_input, interact): Return ValueError catching for
1669 raw_input. Fixes infinite loop for sys.stdin.close() or
1678 raw_input. Fixes infinite loop for sys.stdin.close() or
1670 sys.stdout.close().
1679 sys.stdout.close().
1671
1680
1672 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1681 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1673
1682
1674 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1683 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1675 to help in handling doctests. irunner is now pretty useful for
1684 to help in handling doctests. irunner is now pretty useful for
1676 running standalone scripts and simulate a full interactive session
1685 running standalone scripts and simulate a full interactive session
1677 in a format that can be then pasted as a doctest.
1686 in a format that can be then pasted as a doctest.
1678
1687
1679 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1688 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1680 on top of the default (useless) ones. This also fixes the nasty
1689 on top of the default (useless) ones. This also fixes the nasty
1681 way in which 2.5's Quitter() exits (reverted [1785]).
1690 way in which 2.5's Quitter() exits (reverted [1785]).
1682
1691
1683 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1692 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1684 2.5.
1693 2.5.
1685
1694
1686 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1695 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1687 color scheme is updated as well when color scheme is changed
1696 color scheme is updated as well when color scheme is changed
1688 interactively.
1697 interactively.
1689
1698
1690 2006-09-27 Ville Vainio <vivainio@gmail.com>
1699 2006-09-27 Ville Vainio <vivainio@gmail.com>
1691
1700
1692 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1701 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1693 infinite loop and just exit. It's a hack, but will do for a while.
1702 infinite loop and just exit. It's a hack, but will do for a while.
1694
1703
1695 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1704 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1696
1705
1697 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1706 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1698 the constructor, this makes it possible to get a list of only directories
1707 the constructor, this makes it possible to get a list of only directories
1699 or only files.
1708 or only files.
1700
1709
1701 2006-08-12 Ville Vainio <vivainio@gmail.com>
1710 2006-08-12 Ville Vainio <vivainio@gmail.com>
1702
1711
1703 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1712 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1704 they broke unittest
1713 they broke unittest
1705
1714
1706 2006-08-11 Ville Vainio <vivainio@gmail.com>
1715 2006-08-11 Ville Vainio <vivainio@gmail.com>
1707
1716
1708 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1717 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1709 by resolving issue properly, i.e. by inheriting FakeModule
1718 by resolving issue properly, i.e. by inheriting FakeModule
1710 from types.ModuleType. Pickling ipython interactive data
1719 from types.ModuleType. Pickling ipython interactive data
1711 should still work as usual (testing appreciated).
1720 should still work as usual (testing appreciated).
1712
1721
1713 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1722 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1714
1723
1715 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1724 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1716 running under python 2.3 with code from 2.4 to fix a bug with
1725 running under python 2.3 with code from 2.4 to fix a bug with
1717 help(). Reported by the Debian maintainers, Norbert Tretkowski
1726 help(). Reported by the Debian maintainers, Norbert Tretkowski
1718 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1727 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1719 <afayolle-AT-debian.org>.
1728 <afayolle-AT-debian.org>.
1720
1729
1721 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1730 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1722
1731
1723 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1732 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1724 (which was displaying "quit" twice).
1733 (which was displaying "quit" twice).
1725
1734
1726 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1735 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1727
1736
1728 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1737 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1729 the mode argument).
1738 the mode argument).
1730
1739
1731 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1740 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1732
1741
1733 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1742 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1734 not running under IPython.
1743 not running under IPython.
1735
1744
1736 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1745 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1737 and make it iterable (iterating over the attribute itself). Add two new
1746 and make it iterable (iterating over the attribute itself). Add two new
1738 magic strings for __xattrs__(): If the string starts with "-", the attribute
1747 magic strings for __xattrs__(): If the string starts with "-", the attribute
1739 will not be displayed in ibrowse's detail view (but it can still be
1748 will not be displayed in ibrowse's detail view (but it can still be
1740 iterated over). This makes it possible to add attributes that are large
1749 iterated over). This makes it possible to add attributes that are large
1741 lists or generator methods to the detail view. Replace magic attribute names
1750 lists or generator methods to the detail view. Replace magic attribute names
1742 and _attrname() and _getattr() with "descriptors": For each type of magic
1751 and _attrname() and _getattr() with "descriptors": For each type of magic
1743 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1752 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1744 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1753 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1745 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1754 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1746 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1755 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1747 are still supported.
1756 are still supported.
1748
1757
1749 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1758 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1750 fails in ibrowse.fetch(), the exception object is added as the last item
1759 fails in ibrowse.fetch(), the exception object is added as the last item
1751 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1760 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1752 a generator throws an exception midway through execution.
1761 a generator throws an exception midway through execution.
1753
1762
1754 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1763 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1755 encoding into methods.
1764 encoding into methods.
1756
1765
1757 2006-07-26 Ville Vainio <vivainio@gmail.com>
1766 2006-07-26 Ville Vainio <vivainio@gmail.com>
1758
1767
1759 * iplib.py: history now stores multiline input as single
1768 * iplib.py: history now stores multiline input as single
1760 history entries. Patch by Jorgen Cederlof.
1769 history entries. Patch by Jorgen Cederlof.
1761
1770
1762 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1771 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1763
1772
1764 * IPython/Extensions/ibrowse.py: Make cursor visible over
1773 * IPython/Extensions/ibrowse.py: Make cursor visible over
1765 non existing attributes.
1774 non existing attributes.
1766
1775
1767 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1776 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1768
1777
1769 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1778 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1770 error output of the running command doesn't mess up the screen.
1779 error output of the running command doesn't mess up the screen.
1771
1780
1772 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1781 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1773
1782
1774 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1783 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1775 argument. This sorts the items themselves.
1784 argument. This sorts the items themselves.
1776
1785
1777 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1786 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1778
1787
1779 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1788 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1780 Compile expression strings into code objects. This should speed
1789 Compile expression strings into code objects. This should speed
1781 up ifilter and friends somewhat.
1790 up ifilter and friends somewhat.
1782
1791
1783 2006-07-08 Ville Vainio <vivainio@gmail.com>
1792 2006-07-08 Ville Vainio <vivainio@gmail.com>
1784
1793
1785 * Magic.py: %cpaste now strips > from the beginning of lines
1794 * Magic.py: %cpaste now strips > from the beginning of lines
1786 to ease pasting quoted code from emails. Contributed by
1795 to ease pasting quoted code from emails. Contributed by
1787 Stefan van der Walt.
1796 Stefan van der Walt.
1788
1797
1789 2006-06-29 Ville Vainio <vivainio@gmail.com>
1798 2006-06-29 Ville Vainio <vivainio@gmail.com>
1790
1799
1791 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1800 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1792 mode, patch contributed by Darren Dale. NEEDS TESTING!
1801 mode, patch contributed by Darren Dale. NEEDS TESTING!
1793
1802
1794 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1803 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1795
1804
1796 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1805 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1797 a blue background. Fix fetching new display rows when the browser
1806 a blue background. Fix fetching new display rows when the browser
1798 scrolls more than a screenful (e.g. by using the goto command).
1807 scrolls more than a screenful (e.g. by using the goto command).
1799
1808
1800 2006-06-27 Ville Vainio <vivainio@gmail.com>
1809 2006-06-27 Ville Vainio <vivainio@gmail.com>
1801
1810
1802 * Magic.py (_inspect, _ofind) Apply David Huard's
1811 * Magic.py (_inspect, _ofind) Apply David Huard's
1803 patch for displaying the correct docstring for 'property'
1812 patch for displaying the correct docstring for 'property'
1804 attributes.
1813 attributes.
1805
1814
1806 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1815 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1807
1816
1808 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1817 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1809 commands into the methods implementing them.
1818 commands into the methods implementing them.
1810
1819
1811 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1820 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1812
1821
1813 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1822 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1814 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1823 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1815 autoindent support was authored by Jin Liu.
1824 autoindent support was authored by Jin Liu.
1816
1825
1817 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1826 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1818
1827
1819 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1828 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1820 for keymaps with a custom class that simplifies handling.
1829 for keymaps with a custom class that simplifies handling.
1821
1830
1822 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1831 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1823
1832
1824 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1833 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1825 resizing. This requires Python 2.5 to work.
1834 resizing. This requires Python 2.5 to work.
1826
1835
1827 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1836 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1828
1837
1829 * IPython/Extensions/ibrowse.py: Add two new commands to
1838 * IPython/Extensions/ibrowse.py: Add two new commands to
1830 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1839 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1831 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1840 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1832 attributes again. Remapped the help command to "?". Display
1841 attributes again. Remapped the help command to "?". Display
1833 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1842 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1834 as keys for the "home" and "end" commands. Add three new commands
1843 as keys for the "home" and "end" commands. Add three new commands
1835 to the input mode for "find" and friends: "delend" (CTRL-K)
1844 to the input mode for "find" and friends: "delend" (CTRL-K)
1836 deletes to the end of line. "incsearchup" searches upwards in the
1845 deletes to the end of line. "incsearchup" searches upwards in the
1837 command history for an input that starts with the text before the cursor.
1846 command history for an input that starts with the text before the cursor.
1838 "incsearchdown" does the same downwards. Removed a bogus mapping of
1847 "incsearchdown" does the same downwards. Removed a bogus mapping of
1839 the x key to "delete".
1848 the x key to "delete".
1840
1849
1841 2006-06-15 Ville Vainio <vivainio@gmail.com>
1850 2006-06-15 Ville Vainio <vivainio@gmail.com>
1842
1851
1843 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1852 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1844 used to create prompts dynamically, instead of the "old" way of
1853 used to create prompts dynamically, instead of the "old" way of
1845 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1854 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1846 way still works (it's invoked by the default hook), of course.
1855 way still works (it's invoked by the default hook), of course.
1847
1856
1848 * Prompts.py: added generate_output_prompt hook for altering output
1857 * Prompts.py: added generate_output_prompt hook for altering output
1849 prompt
1858 prompt
1850
1859
1851 * Release.py: Changed version string to 0.7.3.svn.
1860 * Release.py: Changed version string to 0.7.3.svn.
1852
1861
1853 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1862 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1854
1863
1855 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1864 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1856 the call to fetch() always tries to fetch enough data for at least one
1865 the call to fetch() always tries to fetch enough data for at least one
1857 full screen. This makes it possible to simply call moveto(0,0,True) in
1866 full screen. This makes it possible to simply call moveto(0,0,True) in
1858 the constructor. Fix typos and removed the obsolete goto attribute.
1867 the constructor. Fix typos and removed the obsolete goto attribute.
1859
1868
1860 2006-06-12 Ville Vainio <vivainio@gmail.com>
1869 2006-06-12 Ville Vainio <vivainio@gmail.com>
1861
1870
1862 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1871 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1863 allowing $variable interpolation within multiline statements,
1872 allowing $variable interpolation within multiline statements,
1864 though so far only with "sh" profile for a testing period.
1873 though so far only with "sh" profile for a testing period.
1865 The patch also enables splitting long commands with \ but it
1874 The patch also enables splitting long commands with \ but it
1866 doesn't work properly yet.
1875 doesn't work properly yet.
1867
1876
1868 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1877 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1869
1878
1870 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1879 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1871 input history and the position of the cursor in the input history for
1880 input history and the position of the cursor in the input history for
1872 the find, findbackwards and goto command.
1881 the find, findbackwards and goto command.
1873
1882
1874 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1883 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1875
1884
1876 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1885 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1877 implements the basic functionality of browser commands that require
1886 implements the basic functionality of browser commands that require
1878 input. Reimplement the goto, find and findbackwards commands as
1887 input. Reimplement the goto, find and findbackwards commands as
1879 subclasses of _CommandInput. Add an input history and keymaps to those
1888 subclasses of _CommandInput. Add an input history and keymaps to those
1880 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1889 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1881 execute commands.
1890 execute commands.
1882
1891
1883 2006-06-07 Ville Vainio <vivainio@gmail.com>
1892 2006-06-07 Ville Vainio <vivainio@gmail.com>
1884
1893
1885 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1894 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1886 running the batch files instead of leaving the session open.
1895 running the batch files instead of leaving the session open.
1887
1896
1888 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1897 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1889
1898
1890 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1899 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1891 the original fix was incomplete. Patch submitted by W. Maier.
1900 the original fix was incomplete. Patch submitted by W. Maier.
1892
1901
1893 2006-06-07 Ville Vainio <vivainio@gmail.com>
1902 2006-06-07 Ville Vainio <vivainio@gmail.com>
1894
1903
1895 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1904 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1896 Confirmation prompts can be supressed by 'quiet' option.
1905 Confirmation prompts can be supressed by 'quiet' option.
1897 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1906 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1898
1907
1899 2006-06-06 *** Released version 0.7.2
1908 2006-06-06 *** Released version 0.7.2
1900
1909
1901 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1910 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1902
1911
1903 * IPython/Release.py (version): Made 0.7.2 final for release.
1912 * IPython/Release.py (version): Made 0.7.2 final for release.
1904 Repo tagged and release cut.
1913 Repo tagged and release cut.
1905
1914
1906 2006-06-05 Ville Vainio <vivainio@gmail.com>
1915 2006-06-05 Ville Vainio <vivainio@gmail.com>
1907
1916
1908 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1917 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1909 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1918 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1910
1919
1911 * upgrade_dir.py: try import 'path' module a bit harder
1920 * upgrade_dir.py: try import 'path' module a bit harder
1912 (for %upgrade)
1921 (for %upgrade)
1913
1922
1914 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1923 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1915
1924
1916 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1925 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1917 instead of looping 20 times.
1926 instead of looping 20 times.
1918
1927
1919 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1928 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1920 correctly at initialization time. Bug reported by Krishna Mohan
1929 correctly at initialization time. Bug reported by Krishna Mohan
1921 Gundu <gkmohan-AT-gmail.com> on the user list.
1930 Gundu <gkmohan-AT-gmail.com> on the user list.
1922
1931
1923 * IPython/Release.py (version): Mark 0.7.2 version to start
1932 * IPython/Release.py (version): Mark 0.7.2 version to start
1924 testing for release on 06/06.
1933 testing for release on 06/06.
1925
1934
1926 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1935 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1927
1936
1928 * scripts/irunner: thin script interface so users don't have to
1937 * scripts/irunner: thin script interface so users don't have to
1929 find the module and call it as an executable, since modules rarely
1938 find the module and call it as an executable, since modules rarely
1930 live in people's PATH.
1939 live in people's PATH.
1931
1940
1932 * IPython/irunner.py (InteractiveRunner.__init__): added
1941 * IPython/irunner.py (InteractiveRunner.__init__): added
1933 delaybeforesend attribute to control delays with newer versions of
1942 delaybeforesend attribute to control delays with newer versions of
1934 pexpect. Thanks to detailed help from pexpect's author, Noah
1943 pexpect. Thanks to detailed help from pexpect's author, Noah
1935 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1944 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1936 correctly (it works in NoColor mode).
1945 correctly (it works in NoColor mode).
1937
1946
1938 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1947 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1939 SAGE list, from improper log() calls.
1948 SAGE list, from improper log() calls.
1940
1949
1941 2006-05-31 Ville Vainio <vivainio@gmail.com>
1950 2006-05-31 Ville Vainio <vivainio@gmail.com>
1942
1951
1943 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1952 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1944 with args in parens to work correctly with dirs that have spaces.
1953 with args in parens to work correctly with dirs that have spaces.
1945
1954
1946 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1955 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1947
1956
1948 * IPython/Logger.py (Logger.logstart): add option to log raw input
1957 * IPython/Logger.py (Logger.logstart): add option to log raw input
1949 instead of the processed one. A -r flag was added to the
1958 instead of the processed one. A -r flag was added to the
1950 %logstart magic used for controlling logging.
1959 %logstart magic used for controlling logging.
1951
1960
1952 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1961 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1953
1962
1954 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1963 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1955 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1964 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1956 recognize the option. After a bug report by Will Maier. This
1965 recognize the option. After a bug report by Will Maier. This
1957 closes #64 (will do it after confirmation from W. Maier).
1966 closes #64 (will do it after confirmation from W. Maier).
1958
1967
1959 * IPython/irunner.py: New module to run scripts as if manually
1968 * IPython/irunner.py: New module to run scripts as if manually
1960 typed into an interactive environment, based on pexpect. After a
1969 typed into an interactive environment, based on pexpect. After a
1961 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1970 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1962 ipython-user list. Simple unittests in the tests/ directory.
1971 ipython-user list. Simple unittests in the tests/ directory.
1963
1972
1964 * tools/release: add Will Maier, OpenBSD port maintainer, to
1973 * tools/release: add Will Maier, OpenBSD port maintainer, to
1965 recepients list. We are now officially part of the OpenBSD ports:
1974 recepients list. We are now officially part of the OpenBSD ports:
1966 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1975 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1967 work.
1976 work.
1968
1977
1969 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1978 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1970
1979
1971 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1980 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1972 so that it doesn't break tkinter apps.
1981 so that it doesn't break tkinter apps.
1973
1982
1974 * IPython/iplib.py (_prefilter): fix bug where aliases would
1983 * IPython/iplib.py (_prefilter): fix bug where aliases would
1975 shadow variables when autocall was fully off. Reported by SAGE
1984 shadow variables when autocall was fully off. Reported by SAGE
1976 author William Stein.
1985 author William Stein.
1977
1986
1978 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1987 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1979 at what detail level strings are computed when foo? is requested.
1988 at what detail level strings are computed when foo? is requested.
1980 This allows users to ask for example that the string form of an
1989 This allows users to ask for example that the string form of an
1981 object is only computed when foo?? is called, or even never, by
1990 object is only computed when foo?? is called, or even never, by
1982 setting the object_info_string_level >= 2 in the configuration
1991 setting the object_info_string_level >= 2 in the configuration
1983 file. This new option has been added and documented. After a
1992 file. This new option has been added and documented. After a
1984 request by SAGE to be able to control the printing of very large
1993 request by SAGE to be able to control the printing of very large
1985 objects more easily.
1994 objects more easily.
1986
1995
1987 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1996 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1988
1997
1989 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1998 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1990 from sys.argv, to be 100% consistent with how Python itself works
1999 from sys.argv, to be 100% consistent with how Python itself works
1991 (as seen for example with python -i file.py). After a bug report
2000 (as seen for example with python -i file.py). After a bug report
1992 by Jeffrey Collins.
2001 by Jeffrey Collins.
1993
2002
1994 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
2003 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1995 nasty bug which was preventing custom namespaces with -pylab,
2004 nasty bug which was preventing custom namespaces with -pylab,
1996 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
2005 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1997 compatibility (long gone from mpl).
2006 compatibility (long gone from mpl).
1998
2007
1999 * IPython/ipapi.py (make_session): name change: create->make. We
2008 * IPython/ipapi.py (make_session): name change: create->make. We
2000 use make in other places (ipmaker,...), it's shorter and easier to
2009 use make in other places (ipmaker,...), it's shorter and easier to
2001 type and say, etc. I'm trying to clean things before 0.7.2 so
2010 type and say, etc. I'm trying to clean things before 0.7.2 so
2002 that I can keep things stable wrt to ipapi in the chainsaw branch.
2011 that I can keep things stable wrt to ipapi in the chainsaw branch.
2003
2012
2004 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
2013 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
2005 python-mode recognizes our debugger mode. Add support for
2014 python-mode recognizes our debugger mode. Add support for
2006 autoindent inside (X)emacs. After a patch sent in by Jin Liu
2015 autoindent inside (X)emacs. After a patch sent in by Jin Liu
2007 <m.liu.jin-AT-gmail.com> originally written by
2016 <m.liu.jin-AT-gmail.com> originally written by
2008 doxgen-AT-newsmth.net (with minor modifications for xemacs
2017 doxgen-AT-newsmth.net (with minor modifications for xemacs
2009 compatibility)
2018 compatibility)
2010
2019
2011 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
2020 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
2012 tracebacks when walking the stack so that the stack tracking system
2021 tracebacks when walking the stack so that the stack tracking system
2013 in emacs' python-mode can identify the frames correctly.
2022 in emacs' python-mode can identify the frames correctly.
2014
2023
2015 * IPython/ipmaker.py (make_IPython): make the internal (and
2024 * IPython/ipmaker.py (make_IPython): make the internal (and
2016 default config) autoedit_syntax value false by default. Too many
2025 default config) autoedit_syntax value false by default. Too many
2017 users have complained to me (both on and off-list) about problems
2026 users have complained to me (both on and off-list) about problems
2018 with this option being on by default, so I'm making it default to
2027 with this option being on by default, so I'm making it default to
2019 off. It can still be enabled by anyone via the usual mechanisms.
2028 off. It can still be enabled by anyone via the usual mechanisms.
2020
2029
2021 * IPython/completer.py (Completer.attr_matches): add support for
2030 * IPython/completer.py (Completer.attr_matches): add support for
2022 PyCrust-style _getAttributeNames magic method. Patch contributed
2031 PyCrust-style _getAttributeNames magic method. Patch contributed
2023 by <mscott-AT-goldenspud.com>. Closes #50.
2032 by <mscott-AT-goldenspud.com>. Closes #50.
2024
2033
2025 * IPython/iplib.py (InteractiveShell.__init__): remove the
2034 * IPython/iplib.py (InteractiveShell.__init__): remove the
2026 deletion of exit/quit from __builtin__, which can break
2035 deletion of exit/quit from __builtin__, which can break
2027 third-party tools like the Zope debugging console. The
2036 third-party tools like the Zope debugging console. The
2028 %exit/%quit magics remain. In general, it's probably a good idea
2037 %exit/%quit magics remain. In general, it's probably a good idea
2029 not to delete anything from __builtin__, since we never know what
2038 not to delete anything from __builtin__, since we never know what
2030 that will break. In any case, python now (for 2.5) will support
2039 that will break. In any case, python now (for 2.5) will support
2031 'real' exit/quit, so this issue is moot. Closes #55.
2040 'real' exit/quit, so this issue is moot. Closes #55.
2032
2041
2033 * IPython/genutils.py (with_obj): rename the 'with' function to
2042 * IPython/genutils.py (with_obj): rename the 'with' function to
2034 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
2043 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
2035 becomes a language keyword. Closes #53.
2044 becomes a language keyword. Closes #53.
2036
2045
2037 * IPython/FakeModule.py (FakeModule.__init__): add a proper
2046 * IPython/FakeModule.py (FakeModule.__init__): add a proper
2038 __file__ attribute to this so it fools more things into thinking
2047 __file__ attribute to this so it fools more things into thinking
2039 it is a real module. Closes #59.
2048 it is a real module. Closes #59.
2040
2049
2041 * IPython/Magic.py (magic_edit): add -n option to open the editor
2050 * IPython/Magic.py (magic_edit): add -n option to open the editor
2042 at a specific line number. After a patch by Stefan van der Walt.
2051 at a specific line number. After a patch by Stefan van der Walt.
2043
2052
2044 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
2053 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
2045
2054
2046 * IPython/iplib.py (edit_syntax_error): fix crash when for some
2055 * IPython/iplib.py (edit_syntax_error): fix crash when for some
2047 reason the file could not be opened. After automatic crash
2056 reason the file could not be opened. After automatic crash
2048 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
2057 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
2049 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
2058 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
2050 (_should_recompile): Don't fire editor if using %bg, since there
2059 (_should_recompile): Don't fire editor if using %bg, since there
2051 is no file in the first place. From the same report as above.
2060 is no file in the first place. From the same report as above.
2052 (raw_input): protect against faulty third-party prefilters. After
2061 (raw_input): protect against faulty third-party prefilters. After
2053 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
2062 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
2054 while running under SAGE.
2063 while running under SAGE.
2055
2064
2056 2006-05-23 Ville Vainio <vivainio@gmail.com>
2065 2006-05-23 Ville Vainio <vivainio@gmail.com>
2057
2066
2058 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2067 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2059 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2068 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2060 now returns None (again), unless dummy is specifically allowed by
2069 now returns None (again), unless dummy is specifically allowed by
2061 ipapi.get(allow_dummy=True).
2070 ipapi.get(allow_dummy=True).
2062
2071
2063 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2072 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2064
2073
2065 * IPython: remove all 2.2-compatibility objects and hacks from
2074 * IPython: remove all 2.2-compatibility objects and hacks from
2066 everywhere, since we only support 2.3 at this point. Docs
2075 everywhere, since we only support 2.3 at this point. Docs
2067 updated.
2076 updated.
2068
2077
2069 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2078 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2070 Anything requiring extra validation can be turned into a Python
2079 Anything requiring extra validation can be turned into a Python
2071 property in the future. I used a property for the db one b/c
2080 property in the future. I used a property for the db one b/c
2072 there was a nasty circularity problem with the initialization
2081 there was a nasty circularity problem with the initialization
2073 order, which right now I don't have time to clean up.
2082 order, which right now I don't have time to clean up.
2074
2083
2075 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2084 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2076 another locking bug reported by Jorgen. I'm not 100% sure though,
2085 another locking bug reported by Jorgen. I'm not 100% sure though,
2077 so more testing is needed...
2086 so more testing is needed...
2078
2087
2079 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2088 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2080
2089
2081 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2090 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2082 local variables from any routine in user code (typically executed
2091 local variables from any routine in user code (typically executed
2083 with %run) directly into the interactive namespace. Very useful
2092 with %run) directly into the interactive namespace. Very useful
2084 when doing complex debugging.
2093 when doing complex debugging.
2085 (IPythonNotRunning): Changed the default None object to a dummy
2094 (IPythonNotRunning): Changed the default None object to a dummy
2086 whose attributes can be queried as well as called without
2095 whose attributes can be queried as well as called without
2087 exploding, to ease writing code which works transparently both in
2096 exploding, to ease writing code which works transparently both in
2088 and out of ipython and uses some of this API.
2097 and out of ipython and uses some of this API.
2089
2098
2090 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2099 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2091
2100
2092 * IPython/hooks.py (result_display): Fix the fact that our display
2101 * IPython/hooks.py (result_display): Fix the fact that our display
2093 hook was using str() instead of repr(), as the default python
2102 hook was using str() instead of repr(), as the default python
2094 console does. This had gone unnoticed b/c it only happened if
2103 console does. This had gone unnoticed b/c it only happened if
2095 %Pprint was off, but the inconsistency was there.
2104 %Pprint was off, but the inconsistency was there.
2096
2105
2097 2006-05-15 Ville Vainio <vivainio@gmail.com>
2106 2006-05-15 Ville Vainio <vivainio@gmail.com>
2098
2107
2099 * Oinspect.py: Only show docstring for nonexisting/binary files
2108 * Oinspect.py: Only show docstring for nonexisting/binary files
2100 when doing object??, closing ticket #62
2109 when doing object??, closing ticket #62
2101
2110
2102 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2111 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2103
2112
2104 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2113 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2105 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2114 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2106 was being released in a routine which hadn't checked if it had
2115 was being released in a routine which hadn't checked if it had
2107 been the one to acquire it.
2116 been the one to acquire it.
2108
2117
2109 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2118 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2110
2119
2111 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2120 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2112
2121
2113 2006-04-11 Ville Vainio <vivainio@gmail.com>
2122 2006-04-11 Ville Vainio <vivainio@gmail.com>
2114
2123
2115 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2124 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2116 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2125 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2117 prefilters, allowing stuff like magics and aliases in the file.
2126 prefilters, allowing stuff like magics and aliases in the file.
2118
2127
2119 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2128 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2120 added. Supported now are "%clear in" and "%clear out" (clear input and
2129 added. Supported now are "%clear in" and "%clear out" (clear input and
2121 output history, respectively). Also fixed CachedOutput.flush to
2130 output history, respectively). Also fixed CachedOutput.flush to
2122 properly flush the output cache.
2131 properly flush the output cache.
2123
2132
2124 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2133 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2125 half-success (and fail explicitly).
2134 half-success (and fail explicitly).
2126
2135
2127 2006-03-28 Ville Vainio <vivainio@gmail.com>
2136 2006-03-28 Ville Vainio <vivainio@gmail.com>
2128
2137
2129 * iplib.py: Fix quoting of aliases so that only argless ones
2138 * iplib.py: Fix quoting of aliases so that only argless ones
2130 are quoted
2139 are quoted
2131
2140
2132 2006-03-28 Ville Vainio <vivainio@gmail.com>
2141 2006-03-28 Ville Vainio <vivainio@gmail.com>
2133
2142
2134 * iplib.py: Quote aliases with spaces in the name.
2143 * iplib.py: Quote aliases with spaces in the name.
2135 "c:\program files\blah\bin" is now legal alias target.
2144 "c:\program files\blah\bin" is now legal alias target.
2136
2145
2137 * ext_rehashdir.py: Space no longer allowed as arg
2146 * ext_rehashdir.py: Space no longer allowed as arg
2138 separator, since space is legal in path names.
2147 separator, since space is legal in path names.
2139
2148
2140 2006-03-16 Ville Vainio <vivainio@gmail.com>
2149 2006-03-16 Ville Vainio <vivainio@gmail.com>
2141
2150
2142 * upgrade_dir.py: Take path.py from Extensions, correcting
2151 * upgrade_dir.py: Take path.py from Extensions, correcting
2143 %upgrade magic
2152 %upgrade magic
2144
2153
2145 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2154 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2146
2155
2147 * hooks.py: Only enclose editor binary in quotes if legal and
2156 * hooks.py: Only enclose editor binary in quotes if legal and
2148 necessary (space in the name, and is an existing file). Fixes a bug
2157 necessary (space in the name, and is an existing file). Fixes a bug
2149 reported by Zachary Pincus.
2158 reported by Zachary Pincus.
2150
2159
2151 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2160 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2152
2161
2153 * Manual: thanks to a tip on proper color handling for Emacs, by
2162 * Manual: thanks to a tip on proper color handling for Emacs, by
2154 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2163 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2155
2164
2156 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2165 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2157 by applying the provided patch. Thanks to Liu Jin
2166 by applying the provided patch. Thanks to Liu Jin
2158 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2167 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2159 XEmacs/Linux, I'm trusting the submitter that it actually helps
2168 XEmacs/Linux, I'm trusting the submitter that it actually helps
2160 under win32/GNU Emacs. Will revisit if any problems are reported.
2169 under win32/GNU Emacs. Will revisit if any problems are reported.
2161
2170
2162 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2171 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2163
2172
2164 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2173 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2165 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2174 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2166
2175
2167 2006-03-12 Ville Vainio <vivainio@gmail.com>
2176 2006-03-12 Ville Vainio <vivainio@gmail.com>
2168
2177
2169 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2178 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2170 Torsten Marek.
2179 Torsten Marek.
2171
2180
2172 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2181 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2173
2182
2174 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2183 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2175 line ranges works again.
2184 line ranges works again.
2176
2185
2177 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2186 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2178
2187
2179 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2188 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2180 and friends, after a discussion with Zach Pincus on ipython-user.
2189 and friends, after a discussion with Zach Pincus on ipython-user.
2181 I'm not 100% sure, but after thinking about it quite a bit, it may
2190 I'm not 100% sure, but after thinking about it quite a bit, it may
2182 be OK. Testing with the multithreaded shells didn't reveal any
2191 be OK. Testing with the multithreaded shells didn't reveal any
2183 problems, but let's keep an eye out.
2192 problems, but let's keep an eye out.
2184
2193
2185 In the process, I fixed a few things which were calling
2194 In the process, I fixed a few things which were calling
2186 self.InteractiveTB() directly (like safe_execfile), which is a
2195 self.InteractiveTB() directly (like safe_execfile), which is a
2187 mistake: ALL exception reporting should be done by calling
2196 mistake: ALL exception reporting should be done by calling
2188 self.showtraceback(), which handles state and tab-completion and
2197 self.showtraceback(), which handles state and tab-completion and
2189 more.
2198 more.
2190
2199
2191 2006-03-01 Ville Vainio <vivainio@gmail.com>
2200 2006-03-01 Ville Vainio <vivainio@gmail.com>
2192
2201
2193 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2202 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2194 To use, do "from ipipe import *".
2203 To use, do "from ipipe import *".
2195
2204
2196 2006-02-24 Ville Vainio <vivainio@gmail.com>
2205 2006-02-24 Ville Vainio <vivainio@gmail.com>
2197
2206
2198 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2207 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2199 "cleanly" and safely than the older upgrade mechanism.
2208 "cleanly" and safely than the older upgrade mechanism.
2200
2209
2201 2006-02-21 Ville Vainio <vivainio@gmail.com>
2210 2006-02-21 Ville Vainio <vivainio@gmail.com>
2202
2211
2203 * Magic.py: %save works again.
2212 * Magic.py: %save works again.
2204
2213
2205 2006-02-15 Ville Vainio <vivainio@gmail.com>
2214 2006-02-15 Ville Vainio <vivainio@gmail.com>
2206
2215
2207 * Magic.py: %Pprint works again
2216 * Magic.py: %Pprint works again
2208
2217
2209 * Extensions/ipy_sane_defaults.py: Provide everything provided
2218 * Extensions/ipy_sane_defaults.py: Provide everything provided
2210 in default ipythonrc, to make it possible to have a completely empty
2219 in default ipythonrc, to make it possible to have a completely empty
2211 ipythonrc (and thus completely rc-file free configuration)
2220 ipythonrc (and thus completely rc-file free configuration)
2212
2221
2213 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2222 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2214
2223
2215 * IPython/hooks.py (editor): quote the call to the editor command,
2224 * IPython/hooks.py (editor): quote the call to the editor command,
2216 to allow commands with spaces in them. Problem noted by watching
2225 to allow commands with spaces in them. Problem noted by watching
2217 Ian Oswald's video about textpad under win32 at
2226 Ian Oswald's video about textpad under win32 at
2218 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2227 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2219
2228
2220 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2229 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2221 describing magics (we haven't used @ for a loong time).
2230 describing magics (we haven't used @ for a loong time).
2222
2231
2223 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2232 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2224 contributed by marienz to close
2233 contributed by marienz to close
2225 http://www.scipy.net/roundup/ipython/issue53.
2234 http://www.scipy.net/roundup/ipython/issue53.
2226
2235
2227 2006-02-10 Ville Vainio <vivainio@gmail.com>
2236 2006-02-10 Ville Vainio <vivainio@gmail.com>
2228
2237
2229 * genutils.py: getoutput now works in win32 too
2238 * genutils.py: getoutput now works in win32 too
2230
2239
2231 * completer.py: alias and magic completion only invoked
2240 * completer.py: alias and magic completion only invoked
2232 at the first "item" in the line, to avoid "cd %store"
2241 at the first "item" in the line, to avoid "cd %store"
2233 nonsense.
2242 nonsense.
2234
2243
2235 2006-02-09 Ville Vainio <vivainio@gmail.com>
2244 2006-02-09 Ville Vainio <vivainio@gmail.com>
2236
2245
2237 * test/*: Added a unit testing framework (finally).
2246 * test/*: Added a unit testing framework (finally).
2238 '%run runtests.py' to run test_*.
2247 '%run runtests.py' to run test_*.
2239
2248
2240 * ipapi.py: Exposed runlines and set_custom_exc
2249 * ipapi.py: Exposed runlines and set_custom_exc
2241
2250
2242 2006-02-07 Ville Vainio <vivainio@gmail.com>
2251 2006-02-07 Ville Vainio <vivainio@gmail.com>
2243
2252
2244 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2253 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2245 instead use "f(1 2)" as before.
2254 instead use "f(1 2)" as before.
2246
2255
2247 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2256 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2248
2257
2249 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2258 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2250 facilities, for demos processed by the IPython input filter
2259 facilities, for demos processed by the IPython input filter
2251 (IPythonDemo), and for running a script one-line-at-a-time as a
2260 (IPythonDemo), and for running a script one-line-at-a-time as a
2252 demo, both for pure Python (LineDemo) and for IPython-processed
2261 demo, both for pure Python (LineDemo) and for IPython-processed
2253 input (IPythonLineDemo). After a request by Dave Kohel, from the
2262 input (IPythonLineDemo). After a request by Dave Kohel, from the
2254 SAGE team.
2263 SAGE team.
2255 (Demo.edit): added an edit() method to the demo objects, to edit
2264 (Demo.edit): added an edit() method to the demo objects, to edit
2256 the in-memory copy of the last executed block.
2265 the in-memory copy of the last executed block.
2257
2266
2258 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2267 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2259 processing to %edit, %macro and %save. These commands can now be
2268 processing to %edit, %macro and %save. These commands can now be
2260 invoked on the unprocessed input as it was typed by the user
2269 invoked on the unprocessed input as it was typed by the user
2261 (without any prefilters applied). After requests by the SAGE team
2270 (without any prefilters applied). After requests by the SAGE team
2262 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2271 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2263
2272
2264 2006-02-01 Ville Vainio <vivainio@gmail.com>
2273 2006-02-01 Ville Vainio <vivainio@gmail.com>
2265
2274
2266 * setup.py, eggsetup.py: easy_install ipython==dev works
2275 * setup.py, eggsetup.py: easy_install ipython==dev works
2267 correctly now (on Linux)
2276 correctly now (on Linux)
2268
2277
2269 * ipy_user_conf,ipmaker: user config changes, removed spurious
2278 * ipy_user_conf,ipmaker: user config changes, removed spurious
2270 warnings
2279 warnings
2271
2280
2272 * iplib: if rc.banner is string, use it as is.
2281 * iplib: if rc.banner is string, use it as is.
2273
2282
2274 * Magic: %pycat accepts a string argument and pages it's contents.
2283 * Magic: %pycat accepts a string argument and pages it's contents.
2275
2284
2276
2285
2277 2006-01-30 Ville Vainio <vivainio@gmail.com>
2286 2006-01-30 Ville Vainio <vivainio@gmail.com>
2278
2287
2279 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2288 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2280 Now %store and bookmarks work through PickleShare, meaning that
2289 Now %store and bookmarks work through PickleShare, meaning that
2281 concurrent access is possible and all ipython sessions see the
2290 concurrent access is possible and all ipython sessions see the
2282 same database situation all the time, instead of snapshot of
2291 same database situation all the time, instead of snapshot of
2283 the situation when the session was started. Hence, %bookmark
2292 the situation when the session was started. Hence, %bookmark
2284 results are immediately accessible from othes sessions. The database
2293 results are immediately accessible from othes sessions. The database
2285 is also available for use by user extensions. See:
2294 is also available for use by user extensions. See:
2286 http://www.python.org/pypi/pickleshare
2295 http://www.python.org/pypi/pickleshare
2287
2296
2288 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2297 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2289
2298
2290 * aliases can now be %store'd
2299 * aliases can now be %store'd
2291
2300
2292 * path.py moved to Extensions so that pickleshare does not need
2301 * path.py moved to Extensions so that pickleshare does not need
2293 IPython-specific import. Extensions added to pythonpath right
2302 IPython-specific import. Extensions added to pythonpath right
2294 at __init__.
2303 at __init__.
2295
2304
2296 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2305 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2297 called with _ip.system and the pre-transformed command string.
2306 called with _ip.system and the pre-transformed command string.
2298
2307
2299 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2308 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2300
2309
2301 * IPython/iplib.py (interact): Fix that we were not catching
2310 * IPython/iplib.py (interact): Fix that we were not catching
2302 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2311 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2303 logic here had to change, but it's fixed now.
2312 logic here had to change, but it's fixed now.
2304
2313
2305 2006-01-29 Ville Vainio <vivainio@gmail.com>
2314 2006-01-29 Ville Vainio <vivainio@gmail.com>
2306
2315
2307 * iplib.py: Try to import pyreadline on Windows.
2316 * iplib.py: Try to import pyreadline on Windows.
2308
2317
2309 2006-01-27 Ville Vainio <vivainio@gmail.com>
2318 2006-01-27 Ville Vainio <vivainio@gmail.com>
2310
2319
2311 * iplib.py: Expose ipapi as _ip in builtin namespace.
2320 * iplib.py: Expose ipapi as _ip in builtin namespace.
2312 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2321 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2313 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2322 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2314 syntax now produce _ip.* variant of the commands.
2323 syntax now produce _ip.* variant of the commands.
2315
2324
2316 * "_ip.options().autoedit_syntax = 2" automatically throws
2325 * "_ip.options().autoedit_syntax = 2" automatically throws
2317 user to editor for syntax error correction without prompting.
2326 user to editor for syntax error correction without prompting.
2318
2327
2319 2006-01-27 Ville Vainio <vivainio@gmail.com>
2328 2006-01-27 Ville Vainio <vivainio@gmail.com>
2320
2329
2321 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2330 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2322 'ipython' at argv[0]) executed through command line.
2331 'ipython' at argv[0]) executed through command line.
2323 NOTE: this DEPRECATES calling ipython with multiple scripts
2332 NOTE: this DEPRECATES calling ipython with multiple scripts
2324 ("ipython a.py b.py c.py")
2333 ("ipython a.py b.py c.py")
2325
2334
2326 * iplib.py, hooks.py: Added configurable input prefilter,
2335 * iplib.py, hooks.py: Added configurable input prefilter,
2327 named 'input_prefilter'. See ext_rescapture.py for example
2336 named 'input_prefilter'. See ext_rescapture.py for example
2328 usage.
2337 usage.
2329
2338
2330 * ext_rescapture.py, Magic.py: Better system command output capture
2339 * ext_rescapture.py, Magic.py: Better system command output capture
2331 through 'var = !ls' (deprecates user-visible %sc). Same notation
2340 through 'var = !ls' (deprecates user-visible %sc). Same notation
2332 applies for magics, 'var = %alias' assigns alias list to var.
2341 applies for magics, 'var = %alias' assigns alias list to var.
2333
2342
2334 * ipapi.py: added meta() for accessing extension-usable data store.
2343 * ipapi.py: added meta() for accessing extension-usable data store.
2335
2344
2336 * iplib.py: added InteractiveShell.getapi(). New magics should be
2345 * iplib.py: added InteractiveShell.getapi(). New magics should be
2337 written doing self.getapi() instead of using the shell directly.
2346 written doing self.getapi() instead of using the shell directly.
2338
2347
2339 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2348 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2340 %store foo >> ~/myfoo.txt to store variables to files (in clean
2349 %store foo >> ~/myfoo.txt to store variables to files (in clean
2341 textual form, not a restorable pickle).
2350 textual form, not a restorable pickle).
2342
2351
2343 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2352 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2344
2353
2345 * usage.py, Magic.py: added %quickref
2354 * usage.py, Magic.py: added %quickref
2346
2355
2347 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2356 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2348
2357
2349 * GetoptErrors when invoking magics etc. with wrong args
2358 * GetoptErrors when invoking magics etc. with wrong args
2350 are now more helpful:
2359 are now more helpful:
2351 GetoptError: option -l not recognized (allowed: "qb" )
2360 GetoptError: option -l not recognized (allowed: "qb" )
2352
2361
2353 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2362 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2354
2363
2355 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2364 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2356 computationally intensive blocks don't appear to stall the demo.
2365 computationally intensive blocks don't appear to stall the demo.
2357
2366
2358 2006-01-24 Ville Vainio <vivainio@gmail.com>
2367 2006-01-24 Ville Vainio <vivainio@gmail.com>
2359
2368
2360 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2369 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2361 value to manipulate resulting history entry.
2370 value to manipulate resulting history entry.
2362
2371
2363 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2372 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2364 to instance methods of IPApi class, to make extending an embedded
2373 to instance methods of IPApi class, to make extending an embedded
2365 IPython feasible. See ext_rehashdir.py for example usage.
2374 IPython feasible. See ext_rehashdir.py for example usage.
2366
2375
2367 * Merged 1071-1076 from branches/0.7.1
2376 * Merged 1071-1076 from branches/0.7.1
2368
2377
2369
2378
2370 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2379 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2371
2380
2372 * tools/release (daystamp): Fix build tools to use the new
2381 * tools/release (daystamp): Fix build tools to use the new
2373 eggsetup.py script to build lightweight eggs.
2382 eggsetup.py script to build lightweight eggs.
2374
2383
2375 * Applied changesets 1062 and 1064 before 0.7.1 release.
2384 * Applied changesets 1062 and 1064 before 0.7.1 release.
2376
2385
2377 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2386 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2378 see the raw input history (without conversions like %ls ->
2387 see the raw input history (without conversions like %ls ->
2379 ipmagic("ls")). After a request from W. Stein, SAGE
2388 ipmagic("ls")). After a request from W. Stein, SAGE
2380 (http://modular.ucsd.edu/sage) developer. This information is
2389 (http://modular.ucsd.edu/sage) developer. This information is
2381 stored in the input_hist_raw attribute of the IPython instance, so
2390 stored in the input_hist_raw attribute of the IPython instance, so
2382 developers can access it if needed (it's an InputList instance).
2391 developers can access it if needed (it's an InputList instance).
2383
2392
2384 * Versionstring = 0.7.2.svn
2393 * Versionstring = 0.7.2.svn
2385
2394
2386 * eggsetup.py: A separate script for constructing eggs, creates
2395 * eggsetup.py: A separate script for constructing eggs, creates
2387 proper launch scripts even on Windows (an .exe file in
2396 proper launch scripts even on Windows (an .exe file in
2388 \python24\scripts).
2397 \python24\scripts).
2389
2398
2390 * ipapi.py: launch_new_instance, launch entry point needed for the
2399 * ipapi.py: launch_new_instance, launch entry point needed for the
2391 egg.
2400 egg.
2392
2401
2393 2006-01-23 Ville Vainio <vivainio@gmail.com>
2402 2006-01-23 Ville Vainio <vivainio@gmail.com>
2394
2403
2395 * Added %cpaste magic for pasting python code
2404 * Added %cpaste magic for pasting python code
2396
2405
2397 2006-01-22 Ville Vainio <vivainio@gmail.com>
2406 2006-01-22 Ville Vainio <vivainio@gmail.com>
2398
2407
2399 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2408 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2400
2409
2401 * Versionstring = 0.7.2.svn
2410 * Versionstring = 0.7.2.svn
2402
2411
2403 * eggsetup.py: A separate script for constructing eggs, creates
2412 * eggsetup.py: A separate script for constructing eggs, creates
2404 proper launch scripts even on Windows (an .exe file in
2413 proper launch scripts even on Windows (an .exe file in
2405 \python24\scripts).
2414 \python24\scripts).
2406
2415
2407 * ipapi.py: launch_new_instance, launch entry point needed for the
2416 * ipapi.py: launch_new_instance, launch entry point needed for the
2408 egg.
2417 egg.
2409
2418
2410 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2419 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2411
2420
2412 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2421 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2413 %pfile foo would print the file for foo even if it was a binary.
2422 %pfile foo would print the file for foo even if it was a binary.
2414 Now, extensions '.so' and '.dll' are skipped.
2423 Now, extensions '.so' and '.dll' are skipped.
2415
2424
2416 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2425 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2417 bug, where macros would fail in all threaded modes. I'm not 100%
2426 bug, where macros would fail in all threaded modes. I'm not 100%
2418 sure, so I'm going to put out an rc instead of making a release
2427 sure, so I'm going to put out an rc instead of making a release
2419 today, and wait for feedback for at least a few days.
2428 today, and wait for feedback for at least a few days.
2420
2429
2421 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2430 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2422 it...) the handling of pasting external code with autoindent on.
2431 it...) the handling of pasting external code with autoindent on.
2423 To get out of a multiline input, the rule will appear for most
2432 To get out of a multiline input, the rule will appear for most
2424 users unchanged: two blank lines or change the indent level
2433 users unchanged: two blank lines or change the indent level
2425 proposed by IPython. But there is a twist now: you can
2434 proposed by IPython. But there is a twist now: you can
2426 add/subtract only *one or two spaces*. If you add/subtract three
2435 add/subtract only *one or two spaces*. If you add/subtract three
2427 or more (unless you completely delete the line), IPython will
2436 or more (unless you completely delete the line), IPython will
2428 accept that line, and you'll need to enter a second one of pure
2437 accept that line, and you'll need to enter a second one of pure
2429 whitespace. I know it sounds complicated, but I can't find a
2438 whitespace. I know it sounds complicated, but I can't find a
2430 different solution that covers all the cases, with the right
2439 different solution that covers all the cases, with the right
2431 heuristics. Hopefully in actual use, nobody will really notice
2440 heuristics. Hopefully in actual use, nobody will really notice
2432 all these strange rules and things will 'just work'.
2441 all these strange rules and things will 'just work'.
2433
2442
2434 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2443 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2435
2444
2436 * IPython/iplib.py (interact): catch exceptions which can be
2445 * IPython/iplib.py (interact): catch exceptions which can be
2437 triggered asynchronously by signal handlers. Thanks to an
2446 triggered asynchronously by signal handlers. Thanks to an
2438 automatic crash report, submitted by Colin Kingsley
2447 automatic crash report, submitted by Colin Kingsley
2439 <tercel-AT-gentoo.org>.
2448 <tercel-AT-gentoo.org>.
2440
2449
2441 2006-01-20 Ville Vainio <vivainio@gmail.com>
2450 2006-01-20 Ville Vainio <vivainio@gmail.com>
2442
2451
2443 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2452 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2444 (%rehashdir, very useful, try it out) of how to extend ipython
2453 (%rehashdir, very useful, try it out) of how to extend ipython
2445 with new magics. Also added Extensions dir to pythonpath to make
2454 with new magics. Also added Extensions dir to pythonpath to make
2446 importing extensions easy.
2455 importing extensions easy.
2447
2456
2448 * %store now complains when trying to store interactively declared
2457 * %store now complains when trying to store interactively declared
2449 classes / instances of those classes.
2458 classes / instances of those classes.
2450
2459
2451 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2460 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2452 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2461 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2453 if they exist, and ipy_user_conf.py with some defaults is created for
2462 if they exist, and ipy_user_conf.py with some defaults is created for
2454 the user.
2463 the user.
2455
2464
2456 * Startup rehashing done by the config file, not InterpreterExec.
2465 * Startup rehashing done by the config file, not InterpreterExec.
2457 This means system commands are available even without selecting the
2466 This means system commands are available even without selecting the
2458 pysh profile. It's the sensible default after all.
2467 pysh profile. It's the sensible default after all.
2459
2468
2460 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2469 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2461
2470
2462 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2471 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2463 multiline code with autoindent on working. But I am really not
2472 multiline code with autoindent on working. But I am really not
2464 sure, so this needs more testing. Will commit a debug-enabled
2473 sure, so this needs more testing. Will commit a debug-enabled
2465 version for now, while I test it some more, so that Ville and
2474 version for now, while I test it some more, so that Ville and
2466 others may also catch any problems. Also made
2475 others may also catch any problems. Also made
2467 self.indent_current_str() a method, to ensure that there's no
2476 self.indent_current_str() a method, to ensure that there's no
2468 chance of the indent space count and the corresponding string
2477 chance of the indent space count and the corresponding string
2469 falling out of sync. All code needing the string should just call
2478 falling out of sync. All code needing the string should just call
2470 the method.
2479 the method.
2471
2480
2472 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2481 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2473
2482
2474 * IPython/Magic.py (magic_edit): fix check for when users don't
2483 * IPython/Magic.py (magic_edit): fix check for when users don't
2475 save their output files, the try/except was in the wrong section.
2484 save their output files, the try/except was in the wrong section.
2476
2485
2477 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2486 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2478
2487
2479 * IPython/Magic.py (magic_run): fix __file__ global missing from
2488 * IPython/Magic.py (magic_run): fix __file__ global missing from
2480 script's namespace when executed via %run. After a report by
2489 script's namespace when executed via %run. After a report by
2481 Vivian.
2490 Vivian.
2482
2491
2483 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2492 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2484 when using python 2.4. The parent constructor changed in 2.4, and
2493 when using python 2.4. The parent constructor changed in 2.4, and
2485 we need to track it directly (we can't call it, as it messes up
2494 we need to track it directly (we can't call it, as it messes up
2486 readline and tab-completion inside our pdb would stop working).
2495 readline and tab-completion inside our pdb would stop working).
2487 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2496 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2488
2497
2489 2006-01-16 Ville Vainio <vivainio@gmail.com>
2498 2006-01-16 Ville Vainio <vivainio@gmail.com>
2490
2499
2491 * Ipython/magic.py: Reverted back to old %edit functionality
2500 * Ipython/magic.py: Reverted back to old %edit functionality
2492 that returns file contents on exit.
2501 that returns file contents on exit.
2493
2502
2494 * IPython/path.py: Added Jason Orendorff's "path" module to
2503 * IPython/path.py: Added Jason Orendorff's "path" module to
2495 IPython tree, http://www.jorendorff.com/articles/python/path/.
2504 IPython tree, http://www.jorendorff.com/articles/python/path/.
2496 You can get path objects conveniently through %sc, and !!, e.g.:
2505 You can get path objects conveniently through %sc, and !!, e.g.:
2497 sc files=ls
2506 sc files=ls
2498 for p in files.paths: # or files.p
2507 for p in files.paths: # or files.p
2499 print p,p.mtime
2508 print p,p.mtime
2500
2509
2501 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2510 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2502 now work again without considering the exclusion regexp -
2511 now work again without considering the exclusion regexp -
2503 hence, things like ',foo my/path' turn to 'foo("my/path")'
2512 hence, things like ',foo my/path' turn to 'foo("my/path")'
2504 instead of syntax error.
2513 instead of syntax error.
2505
2514
2506
2515
2507 2006-01-14 Ville Vainio <vivainio@gmail.com>
2516 2006-01-14 Ville Vainio <vivainio@gmail.com>
2508
2517
2509 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2518 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2510 ipapi decorators for python 2.4 users, options() provides access to rc
2519 ipapi decorators for python 2.4 users, options() provides access to rc
2511 data.
2520 data.
2512
2521
2513 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2522 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2514 as path separators (even on Linux ;-). Space character after
2523 as path separators (even on Linux ;-). Space character after
2515 backslash (as yielded by tab completer) is still space;
2524 backslash (as yielded by tab completer) is still space;
2516 "%cd long\ name" works as expected.
2525 "%cd long\ name" works as expected.
2517
2526
2518 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2527 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2519 as "chain of command", with priority. API stays the same,
2528 as "chain of command", with priority. API stays the same,
2520 TryNext exception raised by a hook function signals that
2529 TryNext exception raised by a hook function signals that
2521 current hook failed and next hook should try handling it, as
2530 current hook failed and next hook should try handling it, as
2522 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2531 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2523 requested configurable display hook, which is now implemented.
2532 requested configurable display hook, which is now implemented.
2524
2533
2525 2006-01-13 Ville Vainio <vivainio@gmail.com>
2534 2006-01-13 Ville Vainio <vivainio@gmail.com>
2526
2535
2527 * IPython/platutils*.py: platform specific utility functions,
2536 * IPython/platutils*.py: platform specific utility functions,
2528 so far only set_term_title is implemented (change terminal
2537 so far only set_term_title is implemented (change terminal
2529 label in windowing systems). %cd now changes the title to
2538 label in windowing systems). %cd now changes the title to
2530 current dir.
2539 current dir.
2531
2540
2532 * IPython/Release.py: Added myself to "authors" list,
2541 * IPython/Release.py: Added myself to "authors" list,
2533 had to create new files.
2542 had to create new files.
2534
2543
2535 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2544 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2536 shell escape; not a known bug but had potential to be one in the
2545 shell escape; not a known bug but had potential to be one in the
2537 future.
2546 future.
2538
2547
2539 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2548 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2540 extension API for IPython! See the module for usage example. Fix
2549 extension API for IPython! See the module for usage example. Fix
2541 OInspect for docstring-less magic functions.
2550 OInspect for docstring-less magic functions.
2542
2551
2543
2552
2544 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2553 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2545
2554
2546 * IPython/iplib.py (raw_input): temporarily deactivate all
2555 * IPython/iplib.py (raw_input): temporarily deactivate all
2547 attempts at allowing pasting of code with autoindent on. It
2556 attempts at allowing pasting of code with autoindent on. It
2548 introduced bugs (reported by Prabhu) and I can't seem to find a
2557 introduced bugs (reported by Prabhu) and I can't seem to find a
2549 robust combination which works in all cases. Will have to revisit
2558 robust combination which works in all cases. Will have to revisit
2550 later.
2559 later.
2551
2560
2552 * IPython/genutils.py: remove isspace() function. We've dropped
2561 * IPython/genutils.py: remove isspace() function. We've dropped
2553 2.2 compatibility, so it's OK to use the string method.
2562 2.2 compatibility, so it's OK to use the string method.
2554
2563
2555 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2564 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2556
2565
2557 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2566 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2558 matching what NOT to autocall on, to include all python binary
2567 matching what NOT to autocall on, to include all python binary
2559 operators (including things like 'and', 'or', 'is' and 'in').
2568 operators (including things like 'and', 'or', 'is' and 'in').
2560 Prompted by a bug report on 'foo & bar', but I realized we had
2569 Prompted by a bug report on 'foo & bar', but I realized we had
2561 many more potential bug cases with other operators. The regexp is
2570 many more potential bug cases with other operators. The regexp is
2562 self.re_exclude_auto, it's fairly commented.
2571 self.re_exclude_auto, it's fairly commented.
2563
2572
2564 2006-01-12 Ville Vainio <vivainio@gmail.com>
2573 2006-01-12 Ville Vainio <vivainio@gmail.com>
2565
2574
2566 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2575 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2567 Prettified and hardened string/backslash quoting with ipsystem(),
2576 Prettified and hardened string/backslash quoting with ipsystem(),
2568 ipalias() and ipmagic(). Now even \ characters are passed to
2577 ipalias() and ipmagic(). Now even \ characters are passed to
2569 %magics, !shell escapes and aliases exactly as they are in the
2578 %magics, !shell escapes and aliases exactly as they are in the
2570 ipython command line. Should improve backslash experience,
2579 ipython command line. Should improve backslash experience,
2571 particularly in Windows (path delimiter for some commands that
2580 particularly in Windows (path delimiter for some commands that
2572 won't understand '/'), but Unix benefits as well (regexps). %cd
2581 won't understand '/'), but Unix benefits as well (regexps). %cd
2573 magic still doesn't support backslash path delimiters, though. Also
2582 magic still doesn't support backslash path delimiters, though. Also
2574 deleted all pretense of supporting multiline command strings in
2583 deleted all pretense of supporting multiline command strings in
2575 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2584 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2576
2585
2577 * doc/build_doc_instructions.txt added. Documentation on how to
2586 * doc/build_doc_instructions.txt added. Documentation on how to
2578 use doc/update_manual.py, added yesterday. Both files contributed
2587 use doc/update_manual.py, added yesterday. Both files contributed
2579 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2588 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2580 doc/*.sh for deprecation at a later date.
2589 doc/*.sh for deprecation at a later date.
2581
2590
2582 * /ipython.py Added ipython.py to root directory for
2591 * /ipython.py Added ipython.py to root directory for
2583 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2592 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2584 ipython.py) and development convenience (no need to keep doing
2593 ipython.py) and development convenience (no need to keep doing
2585 "setup.py install" between changes).
2594 "setup.py install" between changes).
2586
2595
2587 * Made ! and !! shell escapes work (again) in multiline expressions:
2596 * Made ! and !! shell escapes work (again) in multiline expressions:
2588 if 1:
2597 if 1:
2589 !ls
2598 !ls
2590 !!ls
2599 !!ls
2591
2600
2592 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2601 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2593
2602
2594 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2603 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2595 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2604 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2596 module in case-insensitive installation. Was causing crashes
2605 module in case-insensitive installation. Was causing crashes
2597 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2606 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2598
2607
2599 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2608 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2600 <marienz-AT-gentoo.org>, closes
2609 <marienz-AT-gentoo.org>, closes
2601 http://www.scipy.net/roundup/ipython/issue51.
2610 http://www.scipy.net/roundup/ipython/issue51.
2602
2611
2603 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2612 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2604
2613
2605 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2614 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2606 problem of excessive CPU usage under *nix and keyboard lag under
2615 problem of excessive CPU usage under *nix and keyboard lag under
2607 win32.
2616 win32.
2608
2617
2609 2006-01-10 *** Released version 0.7.0
2618 2006-01-10 *** Released version 0.7.0
2610
2619
2611 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2620 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2612
2621
2613 * IPython/Release.py (revision): tag version number to 0.7.0,
2622 * IPython/Release.py (revision): tag version number to 0.7.0,
2614 ready for release.
2623 ready for release.
2615
2624
2616 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2625 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2617 it informs the user of the name of the temp. file used. This can
2626 it informs the user of the name of the temp. file used. This can
2618 help if you decide later to reuse that same file, so you know
2627 help if you decide later to reuse that same file, so you know
2619 where to copy the info from.
2628 where to copy the info from.
2620
2629
2621 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2630 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2622
2631
2623 * setup_bdist_egg.py: little script to build an egg. Added
2632 * setup_bdist_egg.py: little script to build an egg. Added
2624 support in the release tools as well.
2633 support in the release tools as well.
2625
2634
2626 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2635 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2627
2636
2628 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2637 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2629 version selection (new -wxversion command line and ipythonrc
2638 version selection (new -wxversion command line and ipythonrc
2630 parameter). Patch contributed by Arnd Baecker
2639 parameter). Patch contributed by Arnd Baecker
2631 <arnd.baecker-AT-web.de>.
2640 <arnd.baecker-AT-web.de>.
2632
2641
2633 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2642 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2634 embedded instances, for variables defined at the interactive
2643 embedded instances, for variables defined at the interactive
2635 prompt of the embedded ipython. Reported by Arnd.
2644 prompt of the embedded ipython. Reported by Arnd.
2636
2645
2637 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2646 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2638 it can be used as a (stateful) toggle, or with a direct parameter.
2647 it can be used as a (stateful) toggle, or with a direct parameter.
2639
2648
2640 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2649 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2641 could be triggered in certain cases and cause the traceback
2650 could be triggered in certain cases and cause the traceback
2642 printer not to work.
2651 printer not to work.
2643
2652
2644 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2653 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2645
2654
2646 * IPython/iplib.py (_should_recompile): Small fix, closes
2655 * IPython/iplib.py (_should_recompile): Small fix, closes
2647 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2656 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2648
2657
2649 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2658 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2650
2659
2651 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2660 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2652 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2661 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2653 Moad for help with tracking it down.
2662 Moad for help with tracking it down.
2654
2663
2655 * IPython/iplib.py (handle_auto): fix autocall handling for
2664 * IPython/iplib.py (handle_auto): fix autocall handling for
2656 objects which support BOTH __getitem__ and __call__ (so that f [x]
2665 objects which support BOTH __getitem__ and __call__ (so that f [x]
2657 is left alone, instead of becoming f([x]) automatically).
2666 is left alone, instead of becoming f([x]) automatically).
2658
2667
2659 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2668 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2660 Ville's patch.
2669 Ville's patch.
2661
2670
2662 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2671 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2663
2672
2664 * IPython/iplib.py (handle_auto): changed autocall semantics to
2673 * IPython/iplib.py (handle_auto): changed autocall semantics to
2665 include 'smart' mode, where the autocall transformation is NOT
2674 include 'smart' mode, where the autocall transformation is NOT
2666 applied if there are no arguments on the line. This allows you to
2675 applied if there are no arguments on the line. This allows you to
2667 just type 'foo' if foo is a callable to see its internal form,
2676 just type 'foo' if foo is a callable to see its internal form,
2668 instead of having it called with no arguments (typically a
2677 instead of having it called with no arguments (typically a
2669 mistake). The old 'full' autocall still exists: for that, you
2678 mistake). The old 'full' autocall still exists: for that, you
2670 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2679 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2671
2680
2672 * IPython/completer.py (Completer.attr_matches): add
2681 * IPython/completer.py (Completer.attr_matches): add
2673 tab-completion support for Enthoughts' traits. After a report by
2682 tab-completion support for Enthoughts' traits. After a report by
2674 Arnd and a patch by Prabhu.
2683 Arnd and a patch by Prabhu.
2675
2684
2676 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2685 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2677
2686
2678 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2687 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2679 Schmolck's patch to fix inspect.getinnerframes().
2688 Schmolck's patch to fix inspect.getinnerframes().
2680
2689
2681 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2690 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2682 for embedded instances, regarding handling of namespaces and items
2691 for embedded instances, regarding handling of namespaces and items
2683 added to the __builtin__ one. Multiple embedded instances and
2692 added to the __builtin__ one. Multiple embedded instances and
2684 recursive embeddings should work better now (though I'm not sure
2693 recursive embeddings should work better now (though I'm not sure
2685 I've got all the corner cases fixed, that code is a bit of a brain
2694 I've got all the corner cases fixed, that code is a bit of a brain
2686 twister).
2695 twister).
2687
2696
2688 * IPython/Magic.py (magic_edit): added support to edit in-memory
2697 * IPython/Magic.py (magic_edit): added support to edit in-memory
2689 macros (automatically creates the necessary temp files). %edit
2698 macros (automatically creates the necessary temp files). %edit
2690 also doesn't return the file contents anymore, it's just noise.
2699 also doesn't return the file contents anymore, it's just noise.
2691
2700
2692 * IPython/completer.py (Completer.attr_matches): revert change to
2701 * IPython/completer.py (Completer.attr_matches): revert change to
2693 complete only on attributes listed in __all__. I realized it
2702 complete only on attributes listed in __all__. I realized it
2694 cripples the tab-completion system as a tool for exploring the
2703 cripples the tab-completion system as a tool for exploring the
2695 internals of unknown libraries (it renders any non-__all__
2704 internals of unknown libraries (it renders any non-__all__
2696 attribute off-limits). I got bit by this when trying to see
2705 attribute off-limits). I got bit by this when trying to see
2697 something inside the dis module.
2706 something inside the dis module.
2698
2707
2699 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2708 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2700
2709
2701 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2710 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2702 namespace for users and extension writers to hold data in. This
2711 namespace for users and extension writers to hold data in. This
2703 follows the discussion in
2712 follows the discussion in
2704 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2713 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2705
2714
2706 * IPython/completer.py (IPCompleter.complete): small patch to help
2715 * IPython/completer.py (IPCompleter.complete): small patch to help
2707 tab-completion under Emacs, after a suggestion by John Barnard
2716 tab-completion under Emacs, after a suggestion by John Barnard
2708 <barnarj-AT-ccf.org>.
2717 <barnarj-AT-ccf.org>.
2709
2718
2710 * IPython/Magic.py (Magic.extract_input_slices): added support for
2719 * IPython/Magic.py (Magic.extract_input_slices): added support for
2711 the slice notation in magics to use N-M to represent numbers N...M
2720 the slice notation in magics to use N-M to represent numbers N...M
2712 (closed endpoints). This is used by %macro and %save.
2721 (closed endpoints). This is used by %macro and %save.
2713
2722
2714 * IPython/completer.py (Completer.attr_matches): for modules which
2723 * IPython/completer.py (Completer.attr_matches): for modules which
2715 define __all__, complete only on those. After a patch by Jeffrey
2724 define __all__, complete only on those. After a patch by Jeffrey
2716 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2725 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2717 speed up this routine.
2726 speed up this routine.
2718
2727
2719 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2728 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2720 don't know if this is the end of it, but the behavior now is
2729 don't know if this is the end of it, but the behavior now is
2721 certainly much more correct. Note that coupled with macros,
2730 certainly much more correct. Note that coupled with macros,
2722 slightly surprising (at first) behavior may occur: a macro will in
2731 slightly surprising (at first) behavior may occur: a macro will in
2723 general expand to multiple lines of input, so upon exiting, the
2732 general expand to multiple lines of input, so upon exiting, the
2724 in/out counters will both be bumped by the corresponding amount
2733 in/out counters will both be bumped by the corresponding amount
2725 (as if the macro's contents had been typed interactively). Typing
2734 (as if the macro's contents had been typed interactively). Typing
2726 %hist will reveal the intermediate (silently processed) lines.
2735 %hist will reveal the intermediate (silently processed) lines.
2727
2736
2728 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2737 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2729 pickle to fail (%run was overwriting __main__ and not restoring
2738 pickle to fail (%run was overwriting __main__ and not restoring
2730 it, but pickle relies on __main__ to operate).
2739 it, but pickle relies on __main__ to operate).
2731
2740
2732 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2741 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2733 using properties, but forgot to make the main InteractiveShell
2742 using properties, but forgot to make the main InteractiveShell
2734 class a new-style class. Properties fail silently, and
2743 class a new-style class. Properties fail silently, and
2735 mysteriously, with old-style class (getters work, but
2744 mysteriously, with old-style class (getters work, but
2736 setters don't do anything).
2745 setters don't do anything).
2737
2746
2738 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2747 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2739
2748
2740 * IPython/Magic.py (magic_history): fix history reporting bug (I
2749 * IPython/Magic.py (magic_history): fix history reporting bug (I
2741 know some nasties are still there, I just can't seem to find a
2750 know some nasties are still there, I just can't seem to find a
2742 reproducible test case to track them down; the input history is
2751 reproducible test case to track them down; the input history is
2743 falling out of sync...)
2752 falling out of sync...)
2744
2753
2745 * IPython/iplib.py (handle_shell_escape): fix bug where both
2754 * IPython/iplib.py (handle_shell_escape): fix bug where both
2746 aliases and system accesses where broken for indented code (such
2755 aliases and system accesses where broken for indented code (such
2747 as loops).
2756 as loops).
2748
2757
2749 * IPython/genutils.py (shell): fix small but critical bug for
2758 * IPython/genutils.py (shell): fix small but critical bug for
2750 win32 system access.
2759 win32 system access.
2751
2760
2752 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2761 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2753
2762
2754 * IPython/iplib.py (showtraceback): remove use of the
2763 * IPython/iplib.py (showtraceback): remove use of the
2755 sys.last_{type/value/traceback} structures, which are non
2764 sys.last_{type/value/traceback} structures, which are non
2756 thread-safe.
2765 thread-safe.
2757 (_prefilter): change control flow to ensure that we NEVER
2766 (_prefilter): change control flow to ensure that we NEVER
2758 introspect objects when autocall is off. This will guarantee that
2767 introspect objects when autocall is off. This will guarantee that
2759 having an input line of the form 'x.y', where access to attribute
2768 having an input line of the form 'x.y', where access to attribute
2760 'y' has side effects, doesn't trigger the side effect TWICE. It
2769 'y' has side effects, doesn't trigger the side effect TWICE. It
2761 is important to note that, with autocall on, these side effects
2770 is important to note that, with autocall on, these side effects
2762 can still happen.
2771 can still happen.
2763 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2772 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2764 trio. IPython offers these three kinds of special calls which are
2773 trio. IPython offers these three kinds of special calls which are
2765 not python code, and it's a good thing to have their call method
2774 not python code, and it's a good thing to have their call method
2766 be accessible as pure python functions (not just special syntax at
2775 be accessible as pure python functions (not just special syntax at
2767 the command line). It gives us a better internal implementation
2776 the command line). It gives us a better internal implementation
2768 structure, as well as exposing these for user scripting more
2777 structure, as well as exposing these for user scripting more
2769 cleanly.
2778 cleanly.
2770
2779
2771 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2780 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2772 file. Now that they'll be more likely to be used with the
2781 file. Now that they'll be more likely to be used with the
2773 persistance system (%store), I want to make sure their module path
2782 persistance system (%store), I want to make sure their module path
2774 doesn't change in the future, so that we don't break things for
2783 doesn't change in the future, so that we don't break things for
2775 users' persisted data.
2784 users' persisted data.
2776
2785
2777 * IPython/iplib.py (autoindent_update): move indentation
2786 * IPython/iplib.py (autoindent_update): move indentation
2778 management into the _text_ processing loop, not the keyboard
2787 management into the _text_ processing loop, not the keyboard
2779 interactive one. This is necessary to correctly process non-typed
2788 interactive one. This is necessary to correctly process non-typed
2780 multiline input (such as macros).
2789 multiline input (such as macros).
2781
2790
2782 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2791 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2783 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2792 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2784 which was producing problems in the resulting manual.
2793 which was producing problems in the resulting manual.
2785 (magic_whos): improve reporting of instances (show their class,
2794 (magic_whos): improve reporting of instances (show their class,
2786 instead of simply printing 'instance' which isn't terribly
2795 instead of simply printing 'instance' which isn't terribly
2787 informative).
2796 informative).
2788
2797
2789 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2798 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2790 (minor mods) to support network shares under win32.
2799 (minor mods) to support network shares under win32.
2791
2800
2792 * IPython/winconsole.py (get_console_size): add new winconsole
2801 * IPython/winconsole.py (get_console_size): add new winconsole
2793 module and fixes to page_dumb() to improve its behavior under
2802 module and fixes to page_dumb() to improve its behavior under
2794 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2803 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2795
2804
2796 * IPython/Magic.py (Macro): simplified Macro class to just
2805 * IPython/Magic.py (Macro): simplified Macro class to just
2797 subclass list. We've had only 2.2 compatibility for a very long
2806 subclass list. We've had only 2.2 compatibility for a very long
2798 time, yet I was still avoiding subclassing the builtin types. No
2807 time, yet I was still avoiding subclassing the builtin types. No
2799 more (I'm also starting to use properties, though I won't shift to
2808 more (I'm also starting to use properties, though I won't shift to
2800 2.3-specific features quite yet).
2809 2.3-specific features quite yet).
2801 (magic_store): added Ville's patch for lightweight variable
2810 (magic_store): added Ville's patch for lightweight variable
2802 persistence, after a request on the user list by Matt Wilkie
2811 persistence, after a request on the user list by Matt Wilkie
2803 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2812 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2804 details.
2813 details.
2805
2814
2806 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2815 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2807 changed the default logfile name from 'ipython.log' to
2816 changed the default logfile name from 'ipython.log' to
2808 'ipython_log.py'. These logs are real python files, and now that
2817 'ipython_log.py'. These logs are real python files, and now that
2809 we have much better multiline support, people are more likely to
2818 we have much better multiline support, people are more likely to
2810 want to use them as such. Might as well name them correctly.
2819 want to use them as such. Might as well name them correctly.
2811
2820
2812 * IPython/Magic.py: substantial cleanup. While we can't stop
2821 * IPython/Magic.py: substantial cleanup. While we can't stop
2813 using magics as mixins, due to the existing customizations 'out
2822 using magics as mixins, due to the existing customizations 'out
2814 there' which rely on the mixin naming conventions, at least I
2823 there' which rely on the mixin naming conventions, at least I
2815 cleaned out all cross-class name usage. So once we are OK with
2824 cleaned out all cross-class name usage. So once we are OK with
2816 breaking compatibility, the two systems can be separated.
2825 breaking compatibility, the two systems can be separated.
2817
2826
2818 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2827 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2819 anymore, and the class is a fair bit less hideous as well. New
2828 anymore, and the class is a fair bit less hideous as well. New
2820 features were also introduced: timestamping of input, and logging
2829 features were also introduced: timestamping of input, and logging
2821 of output results. These are user-visible with the -t and -o
2830 of output results. These are user-visible with the -t and -o
2822 options to %logstart. Closes
2831 options to %logstart. Closes
2823 http://www.scipy.net/roundup/ipython/issue11 and a request by
2832 http://www.scipy.net/roundup/ipython/issue11 and a request by
2824 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2833 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2825
2834
2826 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2835 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2827
2836
2828 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2837 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2829 better handle backslashes in paths. See the thread 'More Windows
2838 better handle backslashes in paths. See the thread 'More Windows
2830 questions part 2 - \/ characters revisited' on the iypthon user
2839 questions part 2 - \/ characters revisited' on the iypthon user
2831 list:
2840 list:
2832 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2841 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2833
2842
2834 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2843 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2835
2844
2836 (InteractiveShell.__init__): change threaded shells to not use the
2845 (InteractiveShell.__init__): change threaded shells to not use the
2837 ipython crash handler. This was causing more problems than not,
2846 ipython crash handler. This was causing more problems than not,
2838 as exceptions in the main thread (GUI code, typically) would
2847 as exceptions in the main thread (GUI code, typically) would
2839 always show up as a 'crash', when they really weren't.
2848 always show up as a 'crash', when they really weren't.
2840
2849
2841 The colors and exception mode commands (%colors/%xmode) have been
2850 The colors and exception mode commands (%colors/%xmode) have been
2842 synchronized to also take this into account, so users can get
2851 synchronized to also take this into account, so users can get
2843 verbose exceptions for their threaded code as well. I also added
2852 verbose exceptions for their threaded code as well. I also added
2844 support for activating pdb inside this exception handler as well,
2853 support for activating pdb inside this exception handler as well,
2845 so now GUI authors can use IPython's enhanced pdb at runtime.
2854 so now GUI authors can use IPython's enhanced pdb at runtime.
2846
2855
2847 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2856 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2848 true by default, and add it to the shipped ipythonrc file. Since
2857 true by default, and add it to the shipped ipythonrc file. Since
2849 this asks the user before proceeding, I think it's OK to make it
2858 this asks the user before proceeding, I think it's OK to make it
2850 true by default.
2859 true by default.
2851
2860
2852 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2861 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2853 of the previous special-casing of input in the eval loop. I think
2862 of the previous special-casing of input in the eval loop. I think
2854 this is cleaner, as they really are commands and shouldn't have
2863 this is cleaner, as they really are commands and shouldn't have
2855 a special role in the middle of the core code.
2864 a special role in the middle of the core code.
2856
2865
2857 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2866 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2858
2867
2859 * IPython/iplib.py (edit_syntax_error): added support for
2868 * IPython/iplib.py (edit_syntax_error): added support for
2860 automatically reopening the editor if the file had a syntax error
2869 automatically reopening the editor if the file had a syntax error
2861 in it. Thanks to scottt who provided the patch at:
2870 in it. Thanks to scottt who provided the patch at:
2862 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2871 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2863 version committed).
2872 version committed).
2864
2873
2865 * IPython/iplib.py (handle_normal): add suport for multi-line
2874 * IPython/iplib.py (handle_normal): add suport for multi-line
2866 input with emtpy lines. This fixes
2875 input with emtpy lines. This fixes
2867 http://www.scipy.net/roundup/ipython/issue43 and a similar
2876 http://www.scipy.net/roundup/ipython/issue43 and a similar
2868 discussion on the user list.
2877 discussion on the user list.
2869
2878
2870 WARNING: a behavior change is necessarily introduced to support
2879 WARNING: a behavior change is necessarily introduced to support
2871 blank lines: now a single blank line with whitespace does NOT
2880 blank lines: now a single blank line with whitespace does NOT
2872 break the input loop, which means that when autoindent is on, by
2881 break the input loop, which means that when autoindent is on, by
2873 default hitting return on the next (indented) line does NOT exit.
2882 default hitting return on the next (indented) line does NOT exit.
2874
2883
2875 Instead, to exit a multiline input you can either have:
2884 Instead, to exit a multiline input you can either have:
2876
2885
2877 - TWO whitespace lines (just hit return again), or
2886 - TWO whitespace lines (just hit return again), or
2878 - a single whitespace line of a different length than provided
2887 - a single whitespace line of a different length than provided
2879 by the autoindent (add or remove a space).
2888 by the autoindent (add or remove a space).
2880
2889
2881 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2890 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2882 module to better organize all readline-related functionality.
2891 module to better organize all readline-related functionality.
2883 I've deleted FlexCompleter and put all completion clases here.
2892 I've deleted FlexCompleter and put all completion clases here.
2884
2893
2885 * IPython/iplib.py (raw_input): improve indentation management.
2894 * IPython/iplib.py (raw_input): improve indentation management.
2886 It is now possible to paste indented code with autoindent on, and
2895 It is now possible to paste indented code with autoindent on, and
2887 the code is interpreted correctly (though it still looks bad on
2896 the code is interpreted correctly (though it still looks bad on
2888 screen, due to the line-oriented nature of ipython).
2897 screen, due to the line-oriented nature of ipython).
2889 (MagicCompleter.complete): change behavior so that a TAB key on an
2898 (MagicCompleter.complete): change behavior so that a TAB key on an
2890 otherwise empty line actually inserts a tab, instead of completing
2899 otherwise empty line actually inserts a tab, instead of completing
2891 on the entire global namespace. This makes it easier to use the
2900 on the entire global namespace. This makes it easier to use the
2892 TAB key for indentation. After a request by Hans Meine
2901 TAB key for indentation. After a request by Hans Meine
2893 <hans_meine-AT-gmx.net>
2902 <hans_meine-AT-gmx.net>
2894 (_prefilter): add support so that typing plain 'exit' or 'quit'
2903 (_prefilter): add support so that typing plain 'exit' or 'quit'
2895 does a sensible thing. Originally I tried to deviate as little as
2904 does a sensible thing. Originally I tried to deviate as little as
2896 possible from the default python behavior, but even that one may
2905 possible from the default python behavior, but even that one may
2897 change in this direction (thread on python-dev to that effect).
2906 change in this direction (thread on python-dev to that effect).
2898 Regardless, ipython should do the right thing even if CPython's
2907 Regardless, ipython should do the right thing even if CPython's
2899 '>>>' prompt doesn't.
2908 '>>>' prompt doesn't.
2900 (InteractiveShell): removed subclassing code.InteractiveConsole
2909 (InteractiveShell): removed subclassing code.InteractiveConsole
2901 class. By now we'd overridden just about all of its methods: I've
2910 class. By now we'd overridden just about all of its methods: I've
2902 copied the remaining two over, and now ipython is a standalone
2911 copied the remaining two over, and now ipython is a standalone
2903 class. This will provide a clearer picture for the chainsaw
2912 class. This will provide a clearer picture for the chainsaw
2904 branch refactoring.
2913 branch refactoring.
2905
2914
2906 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2915 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2907
2916
2908 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2917 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2909 failures for objects which break when dir() is called on them.
2918 failures for objects which break when dir() is called on them.
2910
2919
2911 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2920 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2912 distinct local and global namespaces in the completer API. This
2921 distinct local and global namespaces in the completer API. This
2913 change allows us to properly handle completion with distinct
2922 change allows us to properly handle completion with distinct
2914 scopes, including in embedded instances (this had never really
2923 scopes, including in embedded instances (this had never really
2915 worked correctly).
2924 worked correctly).
2916
2925
2917 Note: this introduces a change in the constructor for
2926 Note: this introduces a change in the constructor for
2918 MagicCompleter, as a new global_namespace parameter is now the
2927 MagicCompleter, as a new global_namespace parameter is now the
2919 second argument (the others were bumped one position).
2928 second argument (the others were bumped one position).
2920
2929
2921 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2930 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2922
2931
2923 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2932 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2924 embedded instances (which can be done now thanks to Vivian's
2933 embedded instances (which can be done now thanks to Vivian's
2925 frame-handling fixes for pdb).
2934 frame-handling fixes for pdb).
2926 (InteractiveShell.__init__): Fix namespace handling problem in
2935 (InteractiveShell.__init__): Fix namespace handling problem in
2927 embedded instances. We were overwriting __main__ unconditionally,
2936 embedded instances. We were overwriting __main__ unconditionally,
2928 and this should only be done for 'full' (non-embedded) IPython;
2937 and this should only be done for 'full' (non-embedded) IPython;
2929 embedded instances must respect the caller's __main__. Thanks to
2938 embedded instances must respect the caller's __main__. Thanks to
2930 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2939 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2931
2940
2932 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2941 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2933
2942
2934 * setup.py: added download_url to setup(). This registers the
2943 * setup.py: added download_url to setup(). This registers the
2935 download address at PyPI, which is not only useful to humans
2944 download address at PyPI, which is not only useful to humans
2936 browsing the site, but is also picked up by setuptools (the Eggs
2945 browsing the site, but is also picked up by setuptools (the Eggs
2937 machinery). Thanks to Ville and R. Kern for the info/discussion
2946 machinery). Thanks to Ville and R. Kern for the info/discussion
2938 on this.
2947 on this.
2939
2948
2940 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2949 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2941
2950
2942 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2951 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2943 This brings a lot of nice functionality to the pdb mode, which now
2952 This brings a lot of nice functionality to the pdb mode, which now
2944 has tab-completion, syntax highlighting, and better stack handling
2953 has tab-completion, syntax highlighting, and better stack handling
2945 than before. Many thanks to Vivian De Smedt
2954 than before. Many thanks to Vivian De Smedt
2946 <vivian-AT-vdesmedt.com> for the original patches.
2955 <vivian-AT-vdesmedt.com> for the original patches.
2947
2956
2948 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2957 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2949
2958
2950 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2959 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2951 sequence to consistently accept the banner argument. The
2960 sequence to consistently accept the banner argument. The
2952 inconsistency was tripping SAGE, thanks to Gary Zablackis
2961 inconsistency was tripping SAGE, thanks to Gary Zablackis
2953 <gzabl-AT-yahoo.com> for the report.
2962 <gzabl-AT-yahoo.com> for the report.
2954
2963
2955 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2964 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2956
2965
2957 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2966 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2958 Fix bug where a naked 'alias' call in the ipythonrc file would
2967 Fix bug where a naked 'alias' call in the ipythonrc file would
2959 cause a crash. Bug reported by Jorgen Stenarson.
2968 cause a crash. Bug reported by Jorgen Stenarson.
2960
2969
2961 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2970 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2962
2971
2963 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2972 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2964 startup time.
2973 startup time.
2965
2974
2966 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2975 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2967 instances had introduced a bug with globals in normal code. Now
2976 instances had introduced a bug with globals in normal code. Now
2968 it's working in all cases.
2977 it's working in all cases.
2969
2978
2970 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2979 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2971 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2980 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2972 has been introduced to set the default case sensitivity of the
2981 has been introduced to set the default case sensitivity of the
2973 searches. Users can still select either mode at runtime on a
2982 searches. Users can still select either mode at runtime on a
2974 per-search basis.
2983 per-search basis.
2975
2984
2976 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2985 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2977
2986
2978 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2987 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2979 attributes in wildcard searches for subclasses. Modified version
2988 attributes in wildcard searches for subclasses. Modified version
2980 of a patch by Jorgen.
2989 of a patch by Jorgen.
2981
2990
2982 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2991 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2983
2992
2984 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2993 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2985 embedded instances. I added a user_global_ns attribute to the
2994 embedded instances. I added a user_global_ns attribute to the
2986 InteractiveShell class to handle this.
2995 InteractiveShell class to handle this.
2987
2996
2988 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2997 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2989
2998
2990 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2999 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2991 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
3000 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2992 (reported under win32, but may happen also in other platforms).
3001 (reported under win32, but may happen also in other platforms).
2993 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
3002 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2994
3003
2995 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
3004 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2996
3005
2997 * IPython/Magic.py (magic_psearch): new support for wildcard
3006 * IPython/Magic.py (magic_psearch): new support for wildcard
2998 patterns. Now, typing ?a*b will list all names which begin with a
3007 patterns. Now, typing ?a*b will list all names which begin with a
2999 and end in b, for example. The %psearch magic has full
3008 and end in b, for example. The %psearch magic has full
3000 docstrings. Many thanks to JΓΆrgen Stenarson
3009 docstrings. Many thanks to JΓΆrgen Stenarson
3001 <jorgen.stenarson-AT-bostream.nu>, author of the patches
3010 <jorgen.stenarson-AT-bostream.nu>, author of the patches
3002 implementing this functionality.
3011 implementing this functionality.
3003
3012
3004 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3013 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3005
3014
3006 * Manual: fixed long-standing annoyance of double-dashes (as in
3015 * Manual: fixed long-standing annoyance of double-dashes (as in
3007 --prefix=~, for example) being stripped in the HTML version. This
3016 --prefix=~, for example) being stripped in the HTML version. This
3008 is a latex2html bug, but a workaround was provided. Many thanks
3017 is a latex2html bug, but a workaround was provided. Many thanks
3009 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
3018 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
3010 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
3019 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
3011 rolling. This seemingly small issue had tripped a number of users
3020 rolling. This seemingly small issue had tripped a number of users
3012 when first installing, so I'm glad to see it gone.
3021 when first installing, so I'm glad to see it gone.
3013
3022
3014 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3023 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3015
3024
3016 * IPython/Extensions/numeric_formats.py: fix missing import,
3025 * IPython/Extensions/numeric_formats.py: fix missing import,
3017 reported by Stephen Walton.
3026 reported by Stephen Walton.
3018
3027
3019 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
3028 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
3020
3029
3021 * IPython/demo.py: finish demo module, fully documented now.
3030 * IPython/demo.py: finish demo module, fully documented now.
3022
3031
3023 * IPython/genutils.py (file_read): simple little utility to read a
3032 * IPython/genutils.py (file_read): simple little utility to read a
3024 file and ensure it's closed afterwards.
3033 file and ensure it's closed afterwards.
3025
3034
3026 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
3035 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
3027
3036
3028 * IPython/demo.py (Demo.__init__): added support for individually
3037 * IPython/demo.py (Demo.__init__): added support for individually
3029 tagging blocks for automatic execution.
3038 tagging blocks for automatic execution.
3030
3039
3031 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
3040 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
3032 syntax-highlighted python sources, requested by John.
3041 syntax-highlighted python sources, requested by John.
3033
3042
3034 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
3043 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
3035
3044
3036 * IPython/demo.py (Demo.again): fix bug where again() blocks after
3045 * IPython/demo.py (Demo.again): fix bug where again() blocks after
3037 finishing.
3046 finishing.
3038
3047
3039 * IPython/genutils.py (shlex_split): moved from Magic to here,
3048 * IPython/genutils.py (shlex_split): moved from Magic to here,
3040 where all 2.2 compatibility stuff lives. I needed it for demo.py.
3049 where all 2.2 compatibility stuff lives. I needed it for demo.py.
3041
3050
3042 * IPython/demo.py (Demo.__init__): added support for silent
3051 * IPython/demo.py (Demo.__init__): added support for silent
3043 blocks, improved marks as regexps, docstrings written.
3052 blocks, improved marks as regexps, docstrings written.
3044 (Demo.__init__): better docstring, added support for sys.argv.
3053 (Demo.__init__): better docstring, added support for sys.argv.
3045
3054
3046 * IPython/genutils.py (marquee): little utility used by the demo
3055 * IPython/genutils.py (marquee): little utility used by the demo
3047 code, handy in general.
3056 code, handy in general.
3048
3057
3049 * IPython/demo.py (Demo.__init__): new class for interactive
3058 * IPython/demo.py (Demo.__init__): new class for interactive
3050 demos. Not documented yet, I just wrote it in a hurry for
3059 demos. Not documented yet, I just wrote it in a hurry for
3051 scipy'05. Will docstring later.
3060 scipy'05. Will docstring later.
3052
3061
3053 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
3062 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
3054
3063
3055 * IPython/Shell.py (sigint_handler): Drastic simplification which
3064 * IPython/Shell.py (sigint_handler): Drastic simplification which
3056 also seems to make Ctrl-C work correctly across threads! This is
3065 also seems to make Ctrl-C work correctly across threads! This is
3057 so simple, that I can't beleive I'd missed it before. Needs more
3066 so simple, that I can't beleive I'd missed it before. Needs more
3058 testing, though.
3067 testing, though.
3059 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3068 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3060 like this before...
3069 like this before...
3061
3070
3062 * IPython/genutils.py (get_home_dir): add protection against
3071 * IPython/genutils.py (get_home_dir): add protection against
3063 non-dirs in win32 registry.
3072 non-dirs in win32 registry.
3064
3073
3065 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3074 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3066 bug where dict was mutated while iterating (pysh crash).
3075 bug where dict was mutated while iterating (pysh crash).
3067
3076
3068 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3077 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3069
3078
3070 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3079 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3071 spurious newlines added by this routine. After a report by
3080 spurious newlines added by this routine. After a report by
3072 F. Mantegazza.
3081 F. Mantegazza.
3073
3082
3074 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3083 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3075
3084
3076 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3085 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3077 calls. These were a leftover from the GTK 1.x days, and can cause
3086 calls. These were a leftover from the GTK 1.x days, and can cause
3078 problems in certain cases (after a report by John Hunter).
3087 problems in certain cases (after a report by John Hunter).
3079
3088
3080 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3089 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3081 os.getcwd() fails at init time. Thanks to patch from David Remahl
3090 os.getcwd() fails at init time. Thanks to patch from David Remahl
3082 <chmod007-AT-mac.com>.
3091 <chmod007-AT-mac.com>.
3083 (InteractiveShell.__init__): prevent certain special magics from
3092 (InteractiveShell.__init__): prevent certain special magics from
3084 being shadowed by aliases. Closes
3093 being shadowed by aliases. Closes
3085 http://www.scipy.net/roundup/ipython/issue41.
3094 http://www.scipy.net/roundup/ipython/issue41.
3086
3095
3087 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3096 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3088
3097
3089 * IPython/iplib.py (InteractiveShell.complete): Added new
3098 * IPython/iplib.py (InteractiveShell.complete): Added new
3090 top-level completion method to expose the completion mechanism
3099 top-level completion method to expose the completion mechanism
3091 beyond readline-based environments.
3100 beyond readline-based environments.
3092
3101
3093 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3102 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3094
3103
3095 * tools/ipsvnc (svnversion): fix svnversion capture.
3104 * tools/ipsvnc (svnversion): fix svnversion capture.
3096
3105
3097 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3106 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3098 attribute to self, which was missing. Before, it was set by a
3107 attribute to self, which was missing. Before, it was set by a
3099 routine which in certain cases wasn't being called, so the
3108 routine which in certain cases wasn't being called, so the
3100 instance could end up missing the attribute. This caused a crash.
3109 instance could end up missing the attribute. This caused a crash.
3101 Closes http://www.scipy.net/roundup/ipython/issue40.
3110 Closes http://www.scipy.net/roundup/ipython/issue40.
3102
3111
3103 2005-08-16 Fernando Perez <fperez@colorado.edu>
3112 2005-08-16 Fernando Perez <fperez@colorado.edu>
3104
3113
3105 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3114 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3106 contains non-string attribute. Closes
3115 contains non-string attribute. Closes
3107 http://www.scipy.net/roundup/ipython/issue38.
3116 http://www.scipy.net/roundup/ipython/issue38.
3108
3117
3109 2005-08-14 Fernando Perez <fperez@colorado.edu>
3118 2005-08-14 Fernando Perez <fperez@colorado.edu>
3110
3119
3111 * tools/ipsvnc: Minor improvements, to add changeset info.
3120 * tools/ipsvnc: Minor improvements, to add changeset info.
3112
3121
3113 2005-08-12 Fernando Perez <fperez@colorado.edu>
3122 2005-08-12 Fernando Perez <fperez@colorado.edu>
3114
3123
3115 * IPython/iplib.py (runsource): remove self.code_to_run_src
3124 * IPython/iplib.py (runsource): remove self.code_to_run_src
3116 attribute. I realized this is nothing more than
3125 attribute. I realized this is nothing more than
3117 '\n'.join(self.buffer), and having the same data in two different
3126 '\n'.join(self.buffer), and having the same data in two different
3118 places is just asking for synchronization bugs. This may impact
3127 places is just asking for synchronization bugs. This may impact
3119 people who have custom exception handlers, so I need to warn
3128 people who have custom exception handlers, so I need to warn
3120 ipython-dev about it (F. Mantegazza may use them).
3129 ipython-dev about it (F. Mantegazza may use them).
3121
3130
3122 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3131 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3123
3132
3124 * IPython/genutils.py: fix 2.2 compatibility (generators)
3133 * IPython/genutils.py: fix 2.2 compatibility (generators)
3125
3134
3126 2005-07-18 Fernando Perez <fperez@colorado.edu>
3135 2005-07-18 Fernando Perez <fperez@colorado.edu>
3127
3136
3128 * IPython/genutils.py (get_home_dir): fix to help users with
3137 * IPython/genutils.py (get_home_dir): fix to help users with
3129 invalid $HOME under win32.
3138 invalid $HOME under win32.
3130
3139
3131 2005-07-17 Fernando Perez <fperez@colorado.edu>
3140 2005-07-17 Fernando Perez <fperez@colorado.edu>
3132
3141
3133 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3142 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3134 some old hacks and clean up a bit other routines; code should be
3143 some old hacks and clean up a bit other routines; code should be
3135 simpler and a bit faster.
3144 simpler and a bit faster.
3136
3145
3137 * IPython/iplib.py (interact): removed some last-resort attempts
3146 * IPython/iplib.py (interact): removed some last-resort attempts
3138 to survive broken stdout/stderr. That code was only making it
3147 to survive broken stdout/stderr. That code was only making it
3139 harder to abstract out the i/o (necessary for gui integration),
3148 harder to abstract out the i/o (necessary for gui integration),
3140 and the crashes it could prevent were extremely rare in practice
3149 and the crashes it could prevent were extremely rare in practice
3141 (besides being fully user-induced in a pretty violent manner).
3150 (besides being fully user-induced in a pretty violent manner).
3142
3151
3143 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3152 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3144 Nothing major yet, but the code is simpler to read; this should
3153 Nothing major yet, but the code is simpler to read; this should
3145 make it easier to do more serious modifications in the future.
3154 make it easier to do more serious modifications in the future.
3146
3155
3147 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3156 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3148 which broke in .15 (thanks to a report by Ville).
3157 which broke in .15 (thanks to a report by Ville).
3149
3158
3150 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3159 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3151 be quite correct, I know next to nothing about unicode). This
3160 be quite correct, I know next to nothing about unicode). This
3152 will allow unicode strings to be used in prompts, amongst other
3161 will allow unicode strings to be used in prompts, amongst other
3153 cases. It also will prevent ipython from crashing when unicode
3162 cases. It also will prevent ipython from crashing when unicode
3154 shows up unexpectedly in many places. If ascii encoding fails, we
3163 shows up unexpectedly in many places. If ascii encoding fails, we
3155 assume utf_8. Currently the encoding is not a user-visible
3164 assume utf_8. Currently the encoding is not a user-visible
3156 setting, though it could be made so if there is demand for it.
3165 setting, though it could be made so if there is demand for it.
3157
3166
3158 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3167 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3159
3168
3160 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3169 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3161
3170
3162 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3171 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3163
3172
3164 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3173 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3165 code can work transparently for 2.2/2.3.
3174 code can work transparently for 2.2/2.3.
3166
3175
3167 2005-07-16 Fernando Perez <fperez@colorado.edu>
3176 2005-07-16 Fernando Perez <fperez@colorado.edu>
3168
3177
3169 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3178 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3170 out of the color scheme table used for coloring exception
3179 out of the color scheme table used for coloring exception
3171 tracebacks. This allows user code to add new schemes at runtime.
3180 tracebacks. This allows user code to add new schemes at runtime.
3172 This is a minimally modified version of the patch at
3181 This is a minimally modified version of the patch at
3173 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3182 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3174 for the contribution.
3183 for the contribution.
3175
3184
3176 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3185 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3177 slightly modified version of the patch in
3186 slightly modified version of the patch in
3178 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3187 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3179 to remove the previous try/except solution (which was costlier).
3188 to remove the previous try/except solution (which was costlier).
3180 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3189 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3181
3190
3182 2005-06-08 Fernando Perez <fperez@colorado.edu>
3191 2005-06-08 Fernando Perez <fperez@colorado.edu>
3183
3192
3184 * IPython/iplib.py (write/write_err): Add methods to abstract all
3193 * IPython/iplib.py (write/write_err): Add methods to abstract all
3185 I/O a bit more.
3194 I/O a bit more.
3186
3195
3187 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3196 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3188 warning, reported by Aric Hagberg, fix by JD Hunter.
3197 warning, reported by Aric Hagberg, fix by JD Hunter.
3189
3198
3190 2005-06-02 *** Released version 0.6.15
3199 2005-06-02 *** Released version 0.6.15
3191
3200
3192 2005-06-01 Fernando Perez <fperez@colorado.edu>
3201 2005-06-01 Fernando Perez <fperez@colorado.edu>
3193
3202
3194 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3203 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3195 tab-completion of filenames within open-quoted strings. Note that
3204 tab-completion of filenames within open-quoted strings. Note that
3196 this requires that in ~/.ipython/ipythonrc, users change the
3205 this requires that in ~/.ipython/ipythonrc, users change the
3197 readline delimiters configuration to read:
3206 readline delimiters configuration to read:
3198
3207
3199 readline_remove_delims -/~
3208 readline_remove_delims -/~
3200
3209
3201
3210
3202 2005-05-31 *** Released version 0.6.14
3211 2005-05-31 *** Released version 0.6.14
3203
3212
3204 2005-05-29 Fernando Perez <fperez@colorado.edu>
3213 2005-05-29 Fernando Perez <fperez@colorado.edu>
3205
3214
3206 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3215 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3207 with files not on the filesystem. Reported by Eliyahu Sandler
3216 with files not on the filesystem. Reported by Eliyahu Sandler
3208 <eli@gondolin.net>
3217 <eli@gondolin.net>
3209
3218
3210 2005-05-22 Fernando Perez <fperez@colorado.edu>
3219 2005-05-22 Fernando Perez <fperez@colorado.edu>
3211
3220
3212 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3221 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3213 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3222 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3214
3223
3215 2005-05-19 Fernando Perez <fperez@colorado.edu>
3224 2005-05-19 Fernando Perez <fperez@colorado.edu>
3216
3225
3217 * IPython/iplib.py (safe_execfile): close a file which could be
3226 * IPython/iplib.py (safe_execfile): close a file which could be
3218 left open (causing problems in win32, which locks open files).
3227 left open (causing problems in win32, which locks open files).
3219 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3228 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3220
3229
3221 2005-05-18 Fernando Perez <fperez@colorado.edu>
3230 2005-05-18 Fernando Perez <fperez@colorado.edu>
3222
3231
3223 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3232 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3224 keyword arguments correctly to safe_execfile().
3233 keyword arguments correctly to safe_execfile().
3225
3234
3226 2005-05-13 Fernando Perez <fperez@colorado.edu>
3235 2005-05-13 Fernando Perez <fperez@colorado.edu>
3227
3236
3228 * ipython.1: Added info about Qt to manpage, and threads warning
3237 * ipython.1: Added info about Qt to manpage, and threads warning
3229 to usage page (invoked with --help).
3238 to usage page (invoked with --help).
3230
3239
3231 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3240 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3232 new matcher (it goes at the end of the priority list) to do
3241 new matcher (it goes at the end of the priority list) to do
3233 tab-completion on named function arguments. Submitted by George
3242 tab-completion on named function arguments. Submitted by George
3234 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3243 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3235 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3244 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3236 for more details.
3245 for more details.
3237
3246
3238 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3247 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3239 SystemExit exceptions in the script being run. Thanks to a report
3248 SystemExit exceptions in the script being run. Thanks to a report
3240 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3249 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3241 producing very annoying behavior when running unit tests.
3250 producing very annoying behavior when running unit tests.
3242
3251
3243 2005-05-12 Fernando Perez <fperez@colorado.edu>
3252 2005-05-12 Fernando Perez <fperez@colorado.edu>
3244
3253
3245 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3254 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3246 which I'd broken (again) due to a changed regexp. In the process,
3255 which I'd broken (again) due to a changed regexp. In the process,
3247 added ';' as an escape to auto-quote the whole line without
3256 added ';' as an escape to auto-quote the whole line without
3248 splitting its arguments. Thanks to a report by Jerry McRae
3257 splitting its arguments. Thanks to a report by Jerry McRae
3249 <qrs0xyc02-AT-sneakemail.com>.
3258 <qrs0xyc02-AT-sneakemail.com>.
3250
3259
3251 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3260 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3252 possible crashes caused by a TokenError. Reported by Ed Schofield
3261 possible crashes caused by a TokenError. Reported by Ed Schofield
3253 <schofield-AT-ftw.at>.
3262 <schofield-AT-ftw.at>.
3254
3263
3255 2005-05-06 Fernando Perez <fperez@colorado.edu>
3264 2005-05-06 Fernando Perez <fperez@colorado.edu>
3256
3265
3257 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3266 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3258
3267
3259 2005-04-29 Fernando Perez <fperez@colorado.edu>
3268 2005-04-29 Fernando Perez <fperez@colorado.edu>
3260
3269
3261 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3270 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3262 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3271 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3263 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3272 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3264 which provides support for Qt interactive usage (similar to the
3273 which provides support for Qt interactive usage (similar to the
3265 existing one for WX and GTK). This had been often requested.
3274 existing one for WX and GTK). This had been often requested.
3266
3275
3267 2005-04-14 *** Released version 0.6.13
3276 2005-04-14 *** Released version 0.6.13
3268
3277
3269 2005-04-08 Fernando Perez <fperez@colorado.edu>
3278 2005-04-08 Fernando Perez <fperez@colorado.edu>
3270
3279
3271 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3280 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3272 from _ofind, which gets called on almost every input line. Now,
3281 from _ofind, which gets called on almost every input line. Now,
3273 we only try to get docstrings if they are actually going to be
3282 we only try to get docstrings if they are actually going to be
3274 used (the overhead of fetching unnecessary docstrings can be
3283 used (the overhead of fetching unnecessary docstrings can be
3275 noticeable for certain objects, such as Pyro proxies).
3284 noticeable for certain objects, such as Pyro proxies).
3276
3285
3277 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3286 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3278 for completers. For some reason I had been passing them the state
3287 for completers. For some reason I had been passing them the state
3279 variable, which completers never actually need, and was in
3288 variable, which completers never actually need, and was in
3280 conflict with the rlcompleter API. Custom completers ONLY need to
3289 conflict with the rlcompleter API. Custom completers ONLY need to
3281 take the text parameter.
3290 take the text parameter.
3282
3291
3283 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3292 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3284 work correctly in pysh. I've also moved all the logic which used
3293 work correctly in pysh. I've also moved all the logic which used
3285 to be in pysh.py here, which will prevent problems with future
3294 to be in pysh.py here, which will prevent problems with future
3286 upgrades. However, this time I must warn users to update their
3295 upgrades. However, this time I must warn users to update their
3287 pysh profile to include the line
3296 pysh profile to include the line
3288
3297
3289 import_all IPython.Extensions.InterpreterExec
3298 import_all IPython.Extensions.InterpreterExec
3290
3299
3291 because otherwise things won't work for them. They MUST also
3300 because otherwise things won't work for them. They MUST also
3292 delete pysh.py and the line
3301 delete pysh.py and the line
3293
3302
3294 execfile pysh.py
3303 execfile pysh.py
3295
3304
3296 from their ipythonrc-pysh.
3305 from their ipythonrc-pysh.
3297
3306
3298 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3307 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3299 robust in the face of objects whose dir() returns non-strings
3308 robust in the face of objects whose dir() returns non-strings
3300 (which it shouldn't, but some broken libs like ITK do). Thanks to
3309 (which it shouldn't, but some broken libs like ITK do). Thanks to
3301 a patch by John Hunter (implemented differently, though). Also
3310 a patch by John Hunter (implemented differently, though). Also
3302 minor improvements by using .extend instead of + on lists.
3311 minor improvements by using .extend instead of + on lists.
3303
3312
3304 * pysh.py:
3313 * pysh.py:
3305
3314
3306 2005-04-06 Fernando Perez <fperez@colorado.edu>
3315 2005-04-06 Fernando Perez <fperez@colorado.edu>
3307
3316
3308 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3317 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3309 by default, so that all users benefit from it. Those who don't
3318 by default, so that all users benefit from it. Those who don't
3310 want it can still turn it off.
3319 want it can still turn it off.
3311
3320
3312 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3321 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3313 config file, I'd forgotten about this, so users were getting it
3322 config file, I'd forgotten about this, so users were getting it
3314 off by default.
3323 off by default.
3315
3324
3316 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3325 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3317 consistency. Now magics can be called in multiline statements,
3326 consistency. Now magics can be called in multiline statements,
3318 and python variables can be expanded in magic calls via $var.
3327 and python variables can be expanded in magic calls via $var.
3319 This makes the magic system behave just like aliases or !system
3328 This makes the magic system behave just like aliases or !system
3320 calls.
3329 calls.
3321
3330
3322 2005-03-28 Fernando Perez <fperez@colorado.edu>
3331 2005-03-28 Fernando Perez <fperez@colorado.edu>
3323
3332
3324 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3333 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3325 expensive string additions for building command. Add support for
3334 expensive string additions for building command. Add support for
3326 trailing ';' when autocall is used.
3335 trailing ';' when autocall is used.
3327
3336
3328 2005-03-26 Fernando Perez <fperez@colorado.edu>
3337 2005-03-26 Fernando Perez <fperez@colorado.edu>
3329
3338
3330 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3339 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3331 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3340 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3332 ipython.el robust against prompts with any number of spaces
3341 ipython.el robust against prompts with any number of spaces
3333 (including 0) after the ':' character.
3342 (including 0) after the ':' character.
3334
3343
3335 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3344 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3336 continuation prompt, which misled users to think the line was
3345 continuation prompt, which misled users to think the line was
3337 already indented. Closes debian Bug#300847, reported to me by
3346 already indented. Closes debian Bug#300847, reported to me by
3338 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3347 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3339
3348
3340 2005-03-23 Fernando Perez <fperez@colorado.edu>
3349 2005-03-23 Fernando Perez <fperez@colorado.edu>
3341
3350
3342 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3351 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3343 properly aligned if they have embedded newlines.
3352 properly aligned if they have embedded newlines.
3344
3353
3345 * IPython/iplib.py (runlines): Add a public method to expose
3354 * IPython/iplib.py (runlines): Add a public method to expose
3346 IPython's code execution machinery, so that users can run strings
3355 IPython's code execution machinery, so that users can run strings
3347 as if they had been typed at the prompt interactively.
3356 as if they had been typed at the prompt interactively.
3348 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3357 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3349 methods which can call the system shell, but with python variable
3358 methods which can call the system shell, but with python variable
3350 expansion. The three such methods are: __IPYTHON__.system,
3359 expansion. The three such methods are: __IPYTHON__.system,
3351 .getoutput and .getoutputerror. These need to be documented in a
3360 .getoutput and .getoutputerror. These need to be documented in a
3352 'public API' section (to be written) of the manual.
3361 'public API' section (to be written) of the manual.
3353
3362
3354 2005-03-20 Fernando Perez <fperez@colorado.edu>
3363 2005-03-20 Fernando Perez <fperez@colorado.edu>
3355
3364
3356 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3365 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3357 for custom exception handling. This is quite powerful, and it
3366 for custom exception handling. This is quite powerful, and it
3358 allows for user-installable exception handlers which can trap
3367 allows for user-installable exception handlers which can trap
3359 custom exceptions at runtime and treat them separately from
3368 custom exceptions at runtime and treat them separately from
3360 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3369 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3361 Mantegazza <mantegazza-AT-ill.fr>.
3370 Mantegazza <mantegazza-AT-ill.fr>.
3362 (InteractiveShell.set_custom_completer): public API function to
3371 (InteractiveShell.set_custom_completer): public API function to
3363 add new completers at runtime.
3372 add new completers at runtime.
3364
3373
3365 2005-03-19 Fernando Perez <fperez@colorado.edu>
3374 2005-03-19 Fernando Perez <fperez@colorado.edu>
3366
3375
3367 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3376 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3368 allow objects which provide their docstrings via non-standard
3377 allow objects which provide their docstrings via non-standard
3369 mechanisms (like Pyro proxies) to still be inspected by ipython's
3378 mechanisms (like Pyro proxies) to still be inspected by ipython's
3370 ? system.
3379 ? system.
3371
3380
3372 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3381 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3373 automatic capture system. I tried quite hard to make it work
3382 automatic capture system. I tried quite hard to make it work
3374 reliably, and simply failed. I tried many combinations with the
3383 reliably, and simply failed. I tried many combinations with the
3375 subprocess module, but eventually nothing worked in all needed
3384 subprocess module, but eventually nothing worked in all needed
3376 cases (not blocking stdin for the child, duplicating stdout
3385 cases (not blocking stdin for the child, duplicating stdout
3377 without blocking, etc). The new %sc/%sx still do capture to these
3386 without blocking, etc). The new %sc/%sx still do capture to these
3378 magical list/string objects which make shell use much more
3387 magical list/string objects which make shell use much more
3379 conveninent, so not all is lost.
3388 conveninent, so not all is lost.
3380
3389
3381 XXX - FIX MANUAL for the change above!
3390 XXX - FIX MANUAL for the change above!
3382
3391
3383 (runsource): I copied code.py's runsource() into ipython to modify
3392 (runsource): I copied code.py's runsource() into ipython to modify
3384 it a bit. Now the code object and source to be executed are
3393 it a bit. Now the code object and source to be executed are
3385 stored in ipython. This makes this info accessible to third-party
3394 stored in ipython. This makes this info accessible to third-party
3386 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3395 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3387 Mantegazza <mantegazza-AT-ill.fr>.
3396 Mantegazza <mantegazza-AT-ill.fr>.
3388
3397
3389 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3398 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3390 history-search via readline (like C-p/C-n). I'd wanted this for a
3399 history-search via readline (like C-p/C-n). I'd wanted this for a
3391 long time, but only recently found out how to do it. For users
3400 long time, but only recently found out how to do it. For users
3392 who already have their ipythonrc files made and want this, just
3401 who already have their ipythonrc files made and want this, just
3393 add:
3402 add:
3394
3403
3395 readline_parse_and_bind "\e[A": history-search-backward
3404 readline_parse_and_bind "\e[A": history-search-backward
3396 readline_parse_and_bind "\e[B": history-search-forward
3405 readline_parse_and_bind "\e[B": history-search-forward
3397
3406
3398 2005-03-18 Fernando Perez <fperez@colorado.edu>
3407 2005-03-18 Fernando Perez <fperez@colorado.edu>
3399
3408
3400 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3409 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3401 LSString and SList classes which allow transparent conversions
3410 LSString and SList classes which allow transparent conversions
3402 between list mode and whitespace-separated string.
3411 between list mode and whitespace-separated string.
3403 (magic_r): Fix recursion problem in %r.
3412 (magic_r): Fix recursion problem in %r.
3404
3413
3405 * IPython/genutils.py (LSString): New class to be used for
3414 * IPython/genutils.py (LSString): New class to be used for
3406 automatic storage of the results of all alias/system calls in _o
3415 automatic storage of the results of all alias/system calls in _o
3407 and _e (stdout/err). These provide a .l/.list attribute which
3416 and _e (stdout/err). These provide a .l/.list attribute which
3408 does automatic splitting on newlines. This means that for most
3417 does automatic splitting on newlines. This means that for most
3409 uses, you'll never need to do capturing of output with %sc/%sx
3418 uses, you'll never need to do capturing of output with %sc/%sx
3410 anymore, since ipython keeps this always done for you. Note that
3419 anymore, since ipython keeps this always done for you. Note that
3411 only the LAST results are stored, the _o/e variables are
3420 only the LAST results are stored, the _o/e variables are
3412 overwritten on each call. If you need to save their contents
3421 overwritten on each call. If you need to save their contents
3413 further, simply bind them to any other name.
3422 further, simply bind them to any other name.
3414
3423
3415 2005-03-17 Fernando Perez <fperez@colorado.edu>
3424 2005-03-17 Fernando Perez <fperez@colorado.edu>
3416
3425
3417 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3426 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3418 prompt namespace handling.
3427 prompt namespace handling.
3419
3428
3420 2005-03-16 Fernando Perez <fperez@colorado.edu>
3429 2005-03-16 Fernando Perez <fperez@colorado.edu>
3421
3430
3422 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3431 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3423 classic prompts to be '>>> ' (final space was missing, and it
3432 classic prompts to be '>>> ' (final space was missing, and it
3424 trips the emacs python mode).
3433 trips the emacs python mode).
3425 (BasePrompt.__str__): Added safe support for dynamic prompt
3434 (BasePrompt.__str__): Added safe support for dynamic prompt
3426 strings. Now you can set your prompt string to be '$x', and the
3435 strings. Now you can set your prompt string to be '$x', and the
3427 value of x will be printed from your interactive namespace. The
3436 value of x will be printed from your interactive namespace. The
3428 interpolation syntax includes the full Itpl support, so
3437 interpolation syntax includes the full Itpl support, so
3429 ${foo()+x+bar()} is a valid prompt string now, and the function
3438 ${foo()+x+bar()} is a valid prompt string now, and the function
3430 calls will be made at runtime.
3439 calls will be made at runtime.
3431
3440
3432 2005-03-15 Fernando Perez <fperez@colorado.edu>
3441 2005-03-15 Fernando Perez <fperez@colorado.edu>
3433
3442
3434 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3443 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3435 avoid name clashes in pylab. %hist still works, it just forwards
3444 avoid name clashes in pylab. %hist still works, it just forwards
3436 the call to %history.
3445 the call to %history.
3437
3446
3438 2005-03-02 *** Released version 0.6.12
3447 2005-03-02 *** Released version 0.6.12
3439
3448
3440 2005-03-02 Fernando Perez <fperez@colorado.edu>
3449 2005-03-02 Fernando Perez <fperez@colorado.edu>
3441
3450
3442 * IPython/iplib.py (handle_magic): log magic calls properly as
3451 * IPython/iplib.py (handle_magic): log magic calls properly as
3443 ipmagic() function calls.
3452 ipmagic() function calls.
3444
3453
3445 * IPython/Magic.py (magic_time): Improved %time to support
3454 * IPython/Magic.py (magic_time): Improved %time to support
3446 statements and provide wall-clock as well as CPU time.
3455 statements and provide wall-clock as well as CPU time.
3447
3456
3448 2005-02-27 Fernando Perez <fperez@colorado.edu>
3457 2005-02-27 Fernando Perez <fperez@colorado.edu>
3449
3458
3450 * IPython/hooks.py: New hooks module, to expose user-modifiable
3459 * IPython/hooks.py: New hooks module, to expose user-modifiable
3451 IPython functionality in a clean manner. For now only the editor
3460 IPython functionality in a clean manner. For now only the editor
3452 hook is actually written, and other thigns which I intend to turn
3461 hook is actually written, and other thigns which I intend to turn
3453 into proper hooks aren't yet there. The display and prefilter
3462 into proper hooks aren't yet there. The display and prefilter
3454 stuff, for example, should be hooks. But at least now the
3463 stuff, for example, should be hooks. But at least now the
3455 framework is in place, and the rest can be moved here with more
3464 framework is in place, and the rest can be moved here with more
3456 time later. IPython had had a .hooks variable for a long time for
3465 time later. IPython had had a .hooks variable for a long time for
3457 this purpose, but I'd never actually used it for anything.
3466 this purpose, but I'd never actually used it for anything.
3458
3467
3459 2005-02-26 Fernando Perez <fperez@colorado.edu>
3468 2005-02-26 Fernando Perez <fperez@colorado.edu>
3460
3469
3461 * IPython/ipmaker.py (make_IPython): make the default ipython
3470 * IPython/ipmaker.py (make_IPython): make the default ipython
3462 directory be called _ipython under win32, to follow more the
3471 directory be called _ipython under win32, to follow more the
3463 naming peculiarities of that platform (where buggy software like
3472 naming peculiarities of that platform (where buggy software like
3464 Visual Sourcesafe breaks with .named directories). Reported by
3473 Visual Sourcesafe breaks with .named directories). Reported by
3465 Ville Vainio.
3474 Ville Vainio.
3466
3475
3467 2005-02-23 Fernando Perez <fperez@colorado.edu>
3476 2005-02-23 Fernando Perez <fperez@colorado.edu>
3468
3477
3469 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3478 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3470 auto_aliases for win32 which were causing problems. Users can
3479 auto_aliases for win32 which were causing problems. Users can
3471 define the ones they personally like.
3480 define the ones they personally like.
3472
3481
3473 2005-02-21 Fernando Perez <fperez@colorado.edu>
3482 2005-02-21 Fernando Perez <fperez@colorado.edu>
3474
3483
3475 * IPython/Magic.py (magic_time): new magic to time execution of
3484 * IPython/Magic.py (magic_time): new magic to time execution of
3476 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3485 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3477
3486
3478 2005-02-19 Fernando Perez <fperez@colorado.edu>
3487 2005-02-19 Fernando Perez <fperez@colorado.edu>
3479
3488
3480 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3489 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3481 into keys (for prompts, for example).
3490 into keys (for prompts, for example).
3482
3491
3483 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3492 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3484 prompts in case users want them. This introduces a small behavior
3493 prompts in case users want them. This introduces a small behavior
3485 change: ipython does not automatically add a space to all prompts
3494 change: ipython does not automatically add a space to all prompts
3486 anymore. To get the old prompts with a space, users should add it
3495 anymore. To get the old prompts with a space, users should add it
3487 manually to their ipythonrc file, so for example prompt_in1 should
3496 manually to their ipythonrc file, so for example prompt_in1 should
3488 now read 'In [\#]: ' instead of 'In [\#]:'.
3497 now read 'In [\#]: ' instead of 'In [\#]:'.
3489 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3498 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3490 file) to control left-padding of secondary prompts.
3499 file) to control left-padding of secondary prompts.
3491
3500
3492 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3501 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3493 the profiler can't be imported. Fix for Debian, which removed
3502 the profiler can't be imported. Fix for Debian, which removed
3494 profile.py because of License issues. I applied a slightly
3503 profile.py because of License issues. I applied a slightly
3495 modified version of the original Debian patch at
3504 modified version of the original Debian patch at
3496 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3505 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3497
3506
3498 2005-02-17 Fernando Perez <fperez@colorado.edu>
3507 2005-02-17 Fernando Perez <fperez@colorado.edu>
3499
3508
3500 * IPython/genutils.py (native_line_ends): Fix bug which would
3509 * IPython/genutils.py (native_line_ends): Fix bug which would
3501 cause improper line-ends under win32 b/c I was not opening files
3510 cause improper line-ends under win32 b/c I was not opening files
3502 in binary mode. Bug report and fix thanks to Ville.
3511 in binary mode. Bug report and fix thanks to Ville.
3503
3512
3504 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3513 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3505 trying to catch spurious foo[1] autocalls. My fix actually broke
3514 trying to catch spurious foo[1] autocalls. My fix actually broke
3506 ',/' autoquote/call with explicit escape (bad regexp).
3515 ',/' autoquote/call with explicit escape (bad regexp).
3507
3516
3508 2005-02-15 *** Released version 0.6.11
3517 2005-02-15 *** Released version 0.6.11
3509
3518
3510 2005-02-14 Fernando Perez <fperez@colorado.edu>
3519 2005-02-14 Fernando Perez <fperez@colorado.edu>
3511
3520
3512 * IPython/background_jobs.py: New background job management
3521 * IPython/background_jobs.py: New background job management
3513 subsystem. This is implemented via a new set of classes, and
3522 subsystem. This is implemented via a new set of classes, and
3514 IPython now provides a builtin 'jobs' object for background job
3523 IPython now provides a builtin 'jobs' object for background job
3515 execution. A convenience %bg magic serves as a lightweight
3524 execution. A convenience %bg magic serves as a lightweight
3516 frontend for starting the more common type of calls. This was
3525 frontend for starting the more common type of calls. This was
3517 inspired by discussions with B. Granger and the BackgroundCommand
3526 inspired by discussions with B. Granger and the BackgroundCommand
3518 class described in the book Python Scripting for Computational
3527 class described in the book Python Scripting for Computational
3519 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3528 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3520 (although ultimately no code from this text was used, as IPython's
3529 (although ultimately no code from this text was used, as IPython's
3521 system is a separate implementation).
3530 system is a separate implementation).
3522
3531
3523 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3532 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3524 to control the completion of single/double underscore names
3533 to control the completion of single/double underscore names
3525 separately. As documented in the example ipytonrc file, the
3534 separately. As documented in the example ipytonrc file, the
3526 readline_omit__names variable can now be set to 2, to omit even
3535 readline_omit__names variable can now be set to 2, to omit even
3527 single underscore names. Thanks to a patch by Brian Wong
3536 single underscore names. Thanks to a patch by Brian Wong
3528 <BrianWong-AT-AirgoNetworks.Com>.
3537 <BrianWong-AT-AirgoNetworks.Com>.
3529 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3538 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3530 be autocalled as foo([1]) if foo were callable. A problem for
3539 be autocalled as foo([1]) if foo were callable. A problem for
3531 things which are both callable and implement __getitem__.
3540 things which are both callable and implement __getitem__.
3532 (init_readline): Fix autoindentation for win32. Thanks to a patch
3541 (init_readline): Fix autoindentation for win32. Thanks to a patch
3533 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3542 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3534
3543
3535 2005-02-12 Fernando Perez <fperez@colorado.edu>
3544 2005-02-12 Fernando Perez <fperez@colorado.edu>
3536
3545
3537 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3546 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3538 which I had written long ago to sort out user error messages which
3547 which I had written long ago to sort out user error messages which
3539 may occur during startup. This seemed like a good idea initially,
3548 may occur during startup. This seemed like a good idea initially,
3540 but it has proven a disaster in retrospect. I don't want to
3549 but it has proven a disaster in retrospect. I don't want to
3541 change much code for now, so my fix is to set the internal 'debug'
3550 change much code for now, so my fix is to set the internal 'debug'
3542 flag to true everywhere, whose only job was precisely to control
3551 flag to true everywhere, whose only job was precisely to control
3543 this subsystem. This closes issue 28 (as well as avoiding all
3552 this subsystem. This closes issue 28 (as well as avoiding all
3544 sorts of strange hangups which occur from time to time).
3553 sorts of strange hangups which occur from time to time).
3545
3554
3546 2005-02-07 Fernando Perez <fperez@colorado.edu>
3555 2005-02-07 Fernando Perez <fperez@colorado.edu>
3547
3556
3548 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3557 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3549 previous call produced a syntax error.
3558 previous call produced a syntax error.
3550
3559
3551 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3560 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3552 classes without constructor.
3561 classes without constructor.
3553
3562
3554 2005-02-06 Fernando Perez <fperez@colorado.edu>
3563 2005-02-06 Fernando Perez <fperez@colorado.edu>
3555
3564
3556 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3565 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3557 completions with the results of each matcher, so we return results
3566 completions with the results of each matcher, so we return results
3558 to the user from all namespaces. This breaks with ipython
3567 to the user from all namespaces. This breaks with ipython
3559 tradition, but I think it's a nicer behavior. Now you get all
3568 tradition, but I think it's a nicer behavior. Now you get all
3560 possible completions listed, from all possible namespaces (python,
3569 possible completions listed, from all possible namespaces (python,
3561 filesystem, magics...) After a request by John Hunter
3570 filesystem, magics...) After a request by John Hunter
3562 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3571 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3563
3572
3564 2005-02-05 Fernando Perez <fperez@colorado.edu>
3573 2005-02-05 Fernando Perez <fperez@colorado.edu>
3565
3574
3566 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3575 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3567 the call had quote characters in it (the quotes were stripped).
3576 the call had quote characters in it (the quotes were stripped).
3568
3577
3569 2005-01-31 Fernando Perez <fperez@colorado.edu>
3578 2005-01-31 Fernando Perez <fperez@colorado.edu>
3570
3579
3571 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3580 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3572 Itpl.itpl() to make the code more robust against psyco
3581 Itpl.itpl() to make the code more robust against psyco
3573 optimizations.
3582 optimizations.
3574
3583
3575 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3584 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3576 of causing an exception. Quicker, cleaner.
3585 of causing an exception. Quicker, cleaner.
3577
3586
3578 2005-01-28 Fernando Perez <fperez@colorado.edu>
3587 2005-01-28 Fernando Perez <fperez@colorado.edu>
3579
3588
3580 * scripts/ipython_win_post_install.py (install): hardcode
3589 * scripts/ipython_win_post_install.py (install): hardcode
3581 sys.prefix+'python.exe' as the executable path. It turns out that
3590 sys.prefix+'python.exe' as the executable path. It turns out that
3582 during the post-installation run, sys.executable resolves to the
3591 during the post-installation run, sys.executable resolves to the
3583 name of the binary installer! I should report this as a distutils
3592 name of the binary installer! I should report this as a distutils
3584 bug, I think. I updated the .10 release with this tiny fix, to
3593 bug, I think. I updated the .10 release with this tiny fix, to
3585 avoid annoying the lists further.
3594 avoid annoying the lists further.
3586
3595
3587 2005-01-27 *** Released version 0.6.10
3596 2005-01-27 *** Released version 0.6.10
3588
3597
3589 2005-01-27 Fernando Perez <fperez@colorado.edu>
3598 2005-01-27 Fernando Perez <fperez@colorado.edu>
3590
3599
3591 * IPython/numutils.py (norm): Added 'inf' as optional name for
3600 * IPython/numutils.py (norm): Added 'inf' as optional name for
3592 L-infinity norm, included references to mathworld.com for vector
3601 L-infinity norm, included references to mathworld.com for vector
3593 norm definitions.
3602 norm definitions.
3594 (amin/amax): added amin/amax for array min/max. Similar to what
3603 (amin/amax): added amin/amax for array min/max. Similar to what
3595 pylab ships with after the recent reorganization of names.
3604 pylab ships with after the recent reorganization of names.
3596 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3605 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3597
3606
3598 * ipython.el: committed Alex's recent fixes and improvements.
3607 * ipython.el: committed Alex's recent fixes and improvements.
3599 Tested with python-mode from CVS, and it looks excellent. Since
3608 Tested with python-mode from CVS, and it looks excellent. Since
3600 python-mode hasn't released anything in a while, I'm temporarily
3609 python-mode hasn't released anything in a while, I'm temporarily
3601 putting a copy of today's CVS (v 4.70) of python-mode in:
3610 putting a copy of today's CVS (v 4.70) of python-mode in:
3602 http://ipython.scipy.org/tmp/python-mode.el
3611 http://ipython.scipy.org/tmp/python-mode.el
3603
3612
3604 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3613 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3605 sys.executable for the executable name, instead of assuming it's
3614 sys.executable for the executable name, instead of assuming it's
3606 called 'python.exe' (the post-installer would have produced broken
3615 called 'python.exe' (the post-installer would have produced broken
3607 setups on systems with a differently named python binary).
3616 setups on systems with a differently named python binary).
3608
3617
3609 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3618 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3610 references to os.linesep, to make the code more
3619 references to os.linesep, to make the code more
3611 platform-independent. This is also part of the win32 coloring
3620 platform-independent. This is also part of the win32 coloring
3612 fixes.
3621 fixes.
3613
3622
3614 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3623 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3615 lines, which actually cause coloring bugs because the length of
3624 lines, which actually cause coloring bugs because the length of
3616 the line is very difficult to correctly compute with embedded
3625 the line is very difficult to correctly compute with embedded
3617 escapes. This was the source of all the coloring problems under
3626 escapes. This was the source of all the coloring problems under
3618 Win32. I think that _finally_, Win32 users have a properly
3627 Win32. I think that _finally_, Win32 users have a properly
3619 working ipython in all respects. This would never have happened
3628 working ipython in all respects. This would never have happened
3620 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3629 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3621
3630
3622 2005-01-26 *** Released version 0.6.9
3631 2005-01-26 *** Released version 0.6.9
3623
3632
3624 2005-01-25 Fernando Perez <fperez@colorado.edu>
3633 2005-01-25 Fernando Perez <fperez@colorado.edu>
3625
3634
3626 * setup.py: finally, we have a true Windows installer, thanks to
3635 * setup.py: finally, we have a true Windows installer, thanks to
3627 the excellent work of Viktor Ransmayr
3636 the excellent work of Viktor Ransmayr
3628 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3637 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3629 Windows users. The setup routine is quite a bit cleaner thanks to
3638 Windows users. The setup routine is quite a bit cleaner thanks to
3630 this, and the post-install script uses the proper functions to
3639 this, and the post-install script uses the proper functions to
3631 allow a clean de-installation using the standard Windows Control
3640 allow a clean de-installation using the standard Windows Control
3632 Panel.
3641 Panel.
3633
3642
3634 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3643 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3635 environment variable under all OSes (including win32) if
3644 environment variable under all OSes (including win32) if
3636 available. This will give consistency to win32 users who have set
3645 available. This will give consistency to win32 users who have set
3637 this variable for any reason. If os.environ['HOME'] fails, the
3646 this variable for any reason. If os.environ['HOME'] fails, the
3638 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3647 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3639
3648
3640 2005-01-24 Fernando Perez <fperez@colorado.edu>
3649 2005-01-24 Fernando Perez <fperez@colorado.edu>
3641
3650
3642 * IPython/numutils.py (empty_like): add empty_like(), similar to
3651 * IPython/numutils.py (empty_like): add empty_like(), similar to
3643 zeros_like() but taking advantage of the new empty() Numeric routine.
3652 zeros_like() but taking advantage of the new empty() Numeric routine.
3644
3653
3645 2005-01-23 *** Released version 0.6.8
3654 2005-01-23 *** Released version 0.6.8
3646
3655
3647 2005-01-22 Fernando Perez <fperez@colorado.edu>
3656 2005-01-22 Fernando Perez <fperez@colorado.edu>
3648
3657
3649 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3658 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3650 automatic show() calls. After discussing things with JDH, it
3659 automatic show() calls. After discussing things with JDH, it
3651 turns out there are too many corner cases where this can go wrong.
3660 turns out there are too many corner cases where this can go wrong.
3652 It's best not to try to be 'too smart', and simply have ipython
3661 It's best not to try to be 'too smart', and simply have ipython
3653 reproduce as much as possible the default behavior of a normal
3662 reproduce as much as possible the default behavior of a normal
3654 python shell.
3663 python shell.
3655
3664
3656 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3665 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3657 line-splitting regexp and _prefilter() to avoid calling getattr()
3666 line-splitting regexp and _prefilter() to avoid calling getattr()
3658 on assignments. This closes
3667 on assignments. This closes
3659 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3668 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3660 readline uses getattr(), so a simple <TAB> keypress is still
3669 readline uses getattr(), so a simple <TAB> keypress is still
3661 enough to trigger getattr() calls on an object.
3670 enough to trigger getattr() calls on an object.
3662
3671
3663 2005-01-21 Fernando Perez <fperez@colorado.edu>
3672 2005-01-21 Fernando Perez <fperez@colorado.edu>
3664
3673
3665 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3674 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3666 docstring under pylab so it doesn't mask the original.
3675 docstring under pylab so it doesn't mask the original.
3667
3676
3668 2005-01-21 *** Released version 0.6.7
3677 2005-01-21 *** Released version 0.6.7
3669
3678
3670 2005-01-21 Fernando Perez <fperez@colorado.edu>
3679 2005-01-21 Fernando Perez <fperez@colorado.edu>
3671
3680
3672 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3681 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3673 signal handling for win32 users in multithreaded mode.
3682 signal handling for win32 users in multithreaded mode.
3674
3683
3675 2005-01-17 Fernando Perez <fperez@colorado.edu>
3684 2005-01-17 Fernando Perez <fperez@colorado.edu>
3676
3685
3677 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3686 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3678 instances with no __init__. After a crash report by Norbert Nemec
3687 instances with no __init__. After a crash report by Norbert Nemec
3679 <Norbert-AT-nemec-online.de>.
3688 <Norbert-AT-nemec-online.de>.
3680
3689
3681 2005-01-14 Fernando Perez <fperez@colorado.edu>
3690 2005-01-14 Fernando Perez <fperez@colorado.edu>
3682
3691
3683 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3692 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3684 names for verbose exceptions, when multiple dotted names and the
3693 names for verbose exceptions, when multiple dotted names and the
3685 'parent' object were present on the same line.
3694 'parent' object were present on the same line.
3686
3695
3687 2005-01-11 Fernando Perez <fperez@colorado.edu>
3696 2005-01-11 Fernando Perez <fperez@colorado.edu>
3688
3697
3689 * IPython/genutils.py (flag_calls): new utility to trap and flag
3698 * IPython/genutils.py (flag_calls): new utility to trap and flag
3690 calls in functions. I need it to clean up matplotlib support.
3699 calls in functions. I need it to clean up matplotlib support.
3691 Also removed some deprecated code in genutils.
3700 Also removed some deprecated code in genutils.
3692
3701
3693 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3702 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3694 that matplotlib scripts called with %run, which don't call show()
3703 that matplotlib scripts called with %run, which don't call show()
3695 themselves, still have their plotting windows open.
3704 themselves, still have their plotting windows open.
3696
3705
3697 2005-01-05 Fernando Perez <fperez@colorado.edu>
3706 2005-01-05 Fernando Perez <fperez@colorado.edu>
3698
3707
3699 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3708 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3700 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3709 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3701
3710
3702 2004-12-19 Fernando Perez <fperez@colorado.edu>
3711 2004-12-19 Fernando Perez <fperez@colorado.edu>
3703
3712
3704 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3713 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3705 parent_runcode, which was an eyesore. The same result can be
3714 parent_runcode, which was an eyesore. The same result can be
3706 obtained with Python's regular superclass mechanisms.
3715 obtained with Python's regular superclass mechanisms.
3707
3716
3708 2004-12-17 Fernando Perez <fperez@colorado.edu>
3717 2004-12-17 Fernando Perez <fperez@colorado.edu>
3709
3718
3710 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3719 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3711 reported by Prabhu.
3720 reported by Prabhu.
3712 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3721 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3713 sys.stderr) instead of explicitly calling sys.stderr. This helps
3722 sys.stderr) instead of explicitly calling sys.stderr. This helps
3714 maintain our I/O abstractions clean, for future GUI embeddings.
3723 maintain our I/O abstractions clean, for future GUI embeddings.
3715
3724
3716 * IPython/genutils.py (info): added new utility for sys.stderr
3725 * IPython/genutils.py (info): added new utility for sys.stderr
3717 unified info message handling (thin wrapper around warn()).
3726 unified info message handling (thin wrapper around warn()).
3718
3727
3719 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3728 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3720 composite (dotted) names on verbose exceptions.
3729 composite (dotted) names on verbose exceptions.
3721 (VerboseTB.nullrepr): harden against another kind of errors which
3730 (VerboseTB.nullrepr): harden against another kind of errors which
3722 Python's inspect module can trigger, and which were crashing
3731 Python's inspect module can trigger, and which were crashing
3723 IPython. Thanks to a report by Marco Lombardi
3732 IPython. Thanks to a report by Marco Lombardi
3724 <mlombard-AT-ma010192.hq.eso.org>.
3733 <mlombard-AT-ma010192.hq.eso.org>.
3725
3734
3726 2004-12-13 *** Released version 0.6.6
3735 2004-12-13 *** Released version 0.6.6
3727
3736
3728 2004-12-12 Fernando Perez <fperez@colorado.edu>
3737 2004-12-12 Fernando Perez <fperez@colorado.edu>
3729
3738
3730 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3739 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3731 generated by pygtk upon initialization if it was built without
3740 generated by pygtk upon initialization if it was built without
3732 threads (for matplotlib users). After a crash reported by
3741 threads (for matplotlib users). After a crash reported by
3733 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3742 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3734
3743
3735 * IPython/ipmaker.py (make_IPython): fix small bug in the
3744 * IPython/ipmaker.py (make_IPython): fix small bug in the
3736 import_some parameter for multiple imports.
3745 import_some parameter for multiple imports.
3737
3746
3738 * IPython/iplib.py (ipmagic): simplified the interface of
3747 * IPython/iplib.py (ipmagic): simplified the interface of
3739 ipmagic() to take a single string argument, just as it would be
3748 ipmagic() to take a single string argument, just as it would be
3740 typed at the IPython cmd line.
3749 typed at the IPython cmd line.
3741 (ipalias): Added new ipalias() with an interface identical to
3750 (ipalias): Added new ipalias() with an interface identical to
3742 ipmagic(). This completes exposing a pure python interface to the
3751 ipmagic(). This completes exposing a pure python interface to the
3743 alias and magic system, which can be used in loops or more complex
3752 alias and magic system, which can be used in loops or more complex
3744 code where IPython's automatic line mangling is not active.
3753 code where IPython's automatic line mangling is not active.
3745
3754
3746 * IPython/genutils.py (timing): changed interface of timing to
3755 * IPython/genutils.py (timing): changed interface of timing to
3747 simply run code once, which is the most common case. timings()
3756 simply run code once, which is the most common case. timings()
3748 remains unchanged, for the cases where you want multiple runs.
3757 remains unchanged, for the cases where you want multiple runs.
3749
3758
3750 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3759 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3751 bug where Python2.2 crashes with exec'ing code which does not end
3760 bug where Python2.2 crashes with exec'ing code which does not end
3752 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3761 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3753 before.
3762 before.
3754
3763
3755 2004-12-10 Fernando Perez <fperez@colorado.edu>
3764 2004-12-10 Fernando Perez <fperez@colorado.edu>
3756
3765
3757 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3766 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3758 -t to -T, to accomodate the new -t flag in %run (the %run and
3767 -t to -T, to accomodate the new -t flag in %run (the %run and
3759 %prun options are kind of intermixed, and it's not easy to change
3768 %prun options are kind of intermixed, and it's not easy to change
3760 this with the limitations of python's getopt).
3769 this with the limitations of python's getopt).
3761
3770
3762 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3771 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3763 the execution of scripts. It's not as fine-tuned as timeit.py,
3772 the execution of scripts. It's not as fine-tuned as timeit.py,
3764 but it works from inside ipython (and under 2.2, which lacks
3773 but it works from inside ipython (and under 2.2, which lacks
3765 timeit.py). Optionally a number of runs > 1 can be given for
3774 timeit.py). Optionally a number of runs > 1 can be given for
3766 timing very short-running code.
3775 timing very short-running code.
3767
3776
3768 * IPython/genutils.py (uniq_stable): new routine which returns a
3777 * IPython/genutils.py (uniq_stable): new routine which returns a
3769 list of unique elements in any iterable, but in stable order of
3778 list of unique elements in any iterable, but in stable order of
3770 appearance. I needed this for the ultraTB fixes, and it's a handy
3779 appearance. I needed this for the ultraTB fixes, and it's a handy
3771 utility.
3780 utility.
3772
3781
3773 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3782 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3774 dotted names in Verbose exceptions. This had been broken since
3783 dotted names in Verbose exceptions. This had been broken since
3775 the very start, now x.y will properly be printed in a Verbose
3784 the very start, now x.y will properly be printed in a Verbose
3776 traceback, instead of x being shown and y appearing always as an
3785 traceback, instead of x being shown and y appearing always as an
3777 'undefined global'. Getting this to work was a bit tricky,
3786 'undefined global'. Getting this to work was a bit tricky,
3778 because by default python tokenizers are stateless. Saved by
3787 because by default python tokenizers are stateless. Saved by
3779 python's ability to easily add a bit of state to an arbitrary
3788 python's ability to easily add a bit of state to an arbitrary
3780 function (without needing to build a full-blown callable object).
3789 function (without needing to build a full-blown callable object).
3781
3790
3782 Also big cleanup of this code, which had horrendous runtime
3791 Also big cleanup of this code, which had horrendous runtime
3783 lookups of zillions of attributes for colorization. Moved all
3792 lookups of zillions of attributes for colorization. Moved all
3784 this code into a few templates, which make it cleaner and quicker.
3793 this code into a few templates, which make it cleaner and quicker.
3785
3794
3786 Printout quality was also improved for Verbose exceptions: one
3795 Printout quality was also improved for Verbose exceptions: one
3787 variable per line, and memory addresses are printed (this can be
3796 variable per line, and memory addresses are printed (this can be
3788 quite handy in nasty debugging situations, which is what Verbose
3797 quite handy in nasty debugging situations, which is what Verbose
3789 is for).
3798 is for).
3790
3799
3791 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3800 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3792 the command line as scripts to be loaded by embedded instances.
3801 the command line as scripts to be loaded by embedded instances.
3793 Doing so has the potential for an infinite recursion if there are
3802 Doing so has the potential for an infinite recursion if there are
3794 exceptions thrown in the process. This fixes a strange crash
3803 exceptions thrown in the process. This fixes a strange crash
3795 reported by Philippe MULLER <muller-AT-irit.fr>.
3804 reported by Philippe MULLER <muller-AT-irit.fr>.
3796
3805
3797 2004-12-09 Fernando Perez <fperez@colorado.edu>
3806 2004-12-09 Fernando Perez <fperez@colorado.edu>
3798
3807
3799 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3808 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3800 to reflect new names in matplotlib, which now expose the
3809 to reflect new names in matplotlib, which now expose the
3801 matlab-compatible interface via a pylab module instead of the
3810 matlab-compatible interface via a pylab module instead of the
3802 'matlab' name. The new code is backwards compatible, so users of
3811 'matlab' name. The new code is backwards compatible, so users of
3803 all matplotlib versions are OK. Patch by J. Hunter.
3812 all matplotlib versions are OK. Patch by J. Hunter.
3804
3813
3805 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3814 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3806 of __init__ docstrings for instances (class docstrings are already
3815 of __init__ docstrings for instances (class docstrings are already
3807 automatically printed). Instances with customized docstrings
3816 automatically printed). Instances with customized docstrings
3808 (indep. of the class) are also recognized and all 3 separate
3817 (indep. of the class) are also recognized and all 3 separate
3809 docstrings are printed (instance, class, constructor). After some
3818 docstrings are printed (instance, class, constructor). After some
3810 comments/suggestions by J. Hunter.
3819 comments/suggestions by J. Hunter.
3811
3820
3812 2004-12-05 Fernando Perez <fperez@colorado.edu>
3821 2004-12-05 Fernando Perez <fperez@colorado.edu>
3813
3822
3814 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3823 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3815 warnings when tab-completion fails and triggers an exception.
3824 warnings when tab-completion fails and triggers an exception.
3816
3825
3817 2004-12-03 Fernando Perez <fperez@colorado.edu>
3826 2004-12-03 Fernando Perez <fperez@colorado.edu>
3818
3827
3819 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3828 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3820 be triggered when using 'run -p'. An incorrect option flag was
3829 be triggered when using 'run -p'. An incorrect option flag was
3821 being set ('d' instead of 'D').
3830 being set ('d' instead of 'D').
3822 (manpage): fix missing escaped \- sign.
3831 (manpage): fix missing escaped \- sign.
3823
3832
3824 2004-11-30 *** Released version 0.6.5
3833 2004-11-30 *** Released version 0.6.5
3825
3834
3826 2004-11-30 Fernando Perez <fperez@colorado.edu>
3835 2004-11-30 Fernando Perez <fperez@colorado.edu>
3827
3836
3828 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3837 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3829 setting with -d option.
3838 setting with -d option.
3830
3839
3831 * setup.py (docfiles): Fix problem where the doc glob I was using
3840 * setup.py (docfiles): Fix problem where the doc glob I was using
3832 was COMPLETELY BROKEN. It was giving the right files by pure
3841 was COMPLETELY BROKEN. It was giving the right files by pure
3833 accident, but failed once I tried to include ipython.el. Note:
3842 accident, but failed once I tried to include ipython.el. Note:
3834 glob() does NOT allow you to do exclusion on multiple endings!
3843 glob() does NOT allow you to do exclusion on multiple endings!
3835
3844
3836 2004-11-29 Fernando Perez <fperez@colorado.edu>
3845 2004-11-29 Fernando Perez <fperez@colorado.edu>
3837
3846
3838 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3847 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3839 the manpage as the source. Better formatting & consistency.
3848 the manpage as the source. Better formatting & consistency.
3840
3849
3841 * IPython/Magic.py (magic_run): Added new -d option, to run
3850 * IPython/Magic.py (magic_run): Added new -d option, to run
3842 scripts under the control of the python pdb debugger. Note that
3851 scripts under the control of the python pdb debugger. Note that
3843 this required changing the %prun option -d to -D, to avoid a clash
3852 this required changing the %prun option -d to -D, to avoid a clash
3844 (since %run must pass options to %prun, and getopt is too dumb to
3853 (since %run must pass options to %prun, and getopt is too dumb to
3845 handle options with string values with embedded spaces). Thanks
3854 handle options with string values with embedded spaces). Thanks
3846 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3855 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3847 (magic_who_ls): added type matching to %who and %whos, so that one
3856 (magic_who_ls): added type matching to %who and %whos, so that one
3848 can filter their output to only include variables of certain
3857 can filter their output to only include variables of certain
3849 types. Another suggestion by Matthew.
3858 types. Another suggestion by Matthew.
3850 (magic_whos): Added memory summaries in kb and Mb for arrays.
3859 (magic_whos): Added memory summaries in kb and Mb for arrays.
3851 (magic_who): Improve formatting (break lines every 9 vars).
3860 (magic_who): Improve formatting (break lines every 9 vars).
3852
3861
3853 2004-11-28 Fernando Perez <fperez@colorado.edu>
3862 2004-11-28 Fernando Perez <fperez@colorado.edu>
3854
3863
3855 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3864 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3856 cache when empty lines were present.
3865 cache when empty lines were present.
3857
3866
3858 2004-11-24 Fernando Perez <fperez@colorado.edu>
3867 2004-11-24 Fernando Perez <fperez@colorado.edu>
3859
3868
3860 * IPython/usage.py (__doc__): document the re-activated threading
3869 * IPython/usage.py (__doc__): document the re-activated threading
3861 options for WX and GTK.
3870 options for WX and GTK.
3862
3871
3863 2004-11-23 Fernando Perez <fperez@colorado.edu>
3872 2004-11-23 Fernando Perez <fperez@colorado.edu>
3864
3873
3865 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3874 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3866 the -wthread and -gthread options, along with a new -tk one to try
3875 the -wthread and -gthread options, along with a new -tk one to try
3867 and coordinate Tk threading with wx/gtk. The tk support is very
3876 and coordinate Tk threading with wx/gtk. The tk support is very
3868 platform dependent, since it seems to require Tcl and Tk to be
3877 platform dependent, since it seems to require Tcl and Tk to be
3869 built with threads (Fedora1/2 appears NOT to have it, but in
3878 built with threads (Fedora1/2 appears NOT to have it, but in
3870 Prabhu's Debian boxes it works OK). But even with some Tk
3879 Prabhu's Debian boxes it works OK). But even with some Tk
3871 limitations, this is a great improvement.
3880 limitations, this is a great improvement.
3872
3881
3873 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3882 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3874 info in user prompts. Patch by Prabhu.
3883 info in user prompts. Patch by Prabhu.
3875
3884
3876 2004-11-18 Fernando Perez <fperez@colorado.edu>
3885 2004-11-18 Fernando Perez <fperez@colorado.edu>
3877
3886
3878 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3887 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3879 EOFErrors and bail, to avoid infinite loops if a non-terminating
3888 EOFErrors and bail, to avoid infinite loops if a non-terminating
3880 file is fed into ipython. Patch submitted in issue 19 by user,
3889 file is fed into ipython. Patch submitted in issue 19 by user,
3881 many thanks.
3890 many thanks.
3882
3891
3883 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3892 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3884 autoquote/parens in continuation prompts, which can cause lots of
3893 autoquote/parens in continuation prompts, which can cause lots of
3885 problems. Closes roundup issue 20.
3894 problems. Closes roundup issue 20.
3886
3895
3887 2004-11-17 Fernando Perez <fperez@colorado.edu>
3896 2004-11-17 Fernando Perez <fperez@colorado.edu>
3888
3897
3889 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3898 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3890 reported as debian bug #280505. I'm not sure my local changelog
3899 reported as debian bug #280505. I'm not sure my local changelog
3891 entry has the proper debian format (Jack?).
3900 entry has the proper debian format (Jack?).
3892
3901
3893 2004-11-08 *** Released version 0.6.4
3902 2004-11-08 *** Released version 0.6.4
3894
3903
3895 2004-11-08 Fernando Perez <fperez@colorado.edu>
3904 2004-11-08 Fernando Perez <fperez@colorado.edu>
3896
3905
3897 * IPython/iplib.py (init_readline): Fix exit message for Windows
3906 * IPython/iplib.py (init_readline): Fix exit message for Windows
3898 when readline is active. Thanks to a report by Eric Jones
3907 when readline is active. Thanks to a report by Eric Jones
3899 <eric-AT-enthought.com>.
3908 <eric-AT-enthought.com>.
3900
3909
3901 2004-11-07 Fernando Perez <fperez@colorado.edu>
3910 2004-11-07 Fernando Perez <fperez@colorado.edu>
3902
3911
3903 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3912 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3904 sometimes seen by win2k/cygwin users.
3913 sometimes seen by win2k/cygwin users.
3905
3914
3906 2004-11-06 Fernando Perez <fperez@colorado.edu>
3915 2004-11-06 Fernando Perez <fperez@colorado.edu>
3907
3916
3908 * IPython/iplib.py (interact): Change the handling of %Exit from
3917 * IPython/iplib.py (interact): Change the handling of %Exit from
3909 trying to propagate a SystemExit to an internal ipython flag.
3918 trying to propagate a SystemExit to an internal ipython flag.
3910 This is less elegant than using Python's exception mechanism, but
3919 This is less elegant than using Python's exception mechanism, but
3911 I can't get that to work reliably with threads, so under -pylab
3920 I can't get that to work reliably with threads, so under -pylab
3912 %Exit was hanging IPython. Cross-thread exception handling is
3921 %Exit was hanging IPython. Cross-thread exception handling is
3913 really a bitch. Thaks to a bug report by Stephen Walton
3922 really a bitch. Thaks to a bug report by Stephen Walton
3914 <stephen.walton-AT-csun.edu>.
3923 <stephen.walton-AT-csun.edu>.
3915
3924
3916 2004-11-04 Fernando Perez <fperez@colorado.edu>
3925 2004-11-04 Fernando Perez <fperez@colorado.edu>
3917
3926
3918 * IPython/iplib.py (raw_input_original): store a pointer to the
3927 * IPython/iplib.py (raw_input_original): store a pointer to the
3919 true raw_input to harden against code which can modify it
3928 true raw_input to harden against code which can modify it
3920 (wx.py.PyShell does this and would otherwise crash ipython).
3929 (wx.py.PyShell does this and would otherwise crash ipython).
3921 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3930 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3922
3931
3923 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3932 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3924 Ctrl-C problem, which does not mess up the input line.
3933 Ctrl-C problem, which does not mess up the input line.
3925
3934
3926 2004-11-03 Fernando Perez <fperez@colorado.edu>
3935 2004-11-03 Fernando Perez <fperez@colorado.edu>
3927
3936
3928 * IPython/Release.py: Changed licensing to BSD, in all files.
3937 * IPython/Release.py: Changed licensing to BSD, in all files.
3929 (name): lowercase name for tarball/RPM release.
3938 (name): lowercase name for tarball/RPM release.
3930
3939
3931 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3940 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3932 use throughout ipython.
3941 use throughout ipython.
3933
3942
3934 * IPython/Magic.py (Magic._ofind): Switch to using the new
3943 * IPython/Magic.py (Magic._ofind): Switch to using the new
3935 OInspect.getdoc() function.
3944 OInspect.getdoc() function.
3936
3945
3937 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3946 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3938 of the line currently being canceled via Ctrl-C. It's extremely
3947 of the line currently being canceled via Ctrl-C. It's extremely
3939 ugly, but I don't know how to do it better (the problem is one of
3948 ugly, but I don't know how to do it better (the problem is one of
3940 handling cross-thread exceptions).
3949 handling cross-thread exceptions).
3941
3950
3942 2004-10-28 Fernando Perez <fperez@colorado.edu>
3951 2004-10-28 Fernando Perez <fperez@colorado.edu>
3943
3952
3944 * IPython/Shell.py (signal_handler): add signal handlers to trap
3953 * IPython/Shell.py (signal_handler): add signal handlers to trap
3945 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3954 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3946 report by Francesc Alted.
3955 report by Francesc Alted.
3947
3956
3948 2004-10-21 Fernando Perez <fperez@colorado.edu>
3957 2004-10-21 Fernando Perez <fperez@colorado.edu>
3949
3958
3950 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3959 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3951 to % for pysh syntax extensions.
3960 to % for pysh syntax extensions.
3952
3961
3953 2004-10-09 Fernando Perez <fperez@colorado.edu>
3962 2004-10-09 Fernando Perez <fperez@colorado.edu>
3954
3963
3955 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3964 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3956 arrays to print a more useful summary, without calling str(arr).
3965 arrays to print a more useful summary, without calling str(arr).
3957 This avoids the problem of extremely lengthy computations which
3966 This avoids the problem of extremely lengthy computations which
3958 occur if arr is large, and appear to the user as a system lockup
3967 occur if arr is large, and appear to the user as a system lockup
3959 with 100% cpu activity. After a suggestion by Kristian Sandberg
3968 with 100% cpu activity. After a suggestion by Kristian Sandberg
3960 <Kristian.Sandberg@colorado.edu>.
3969 <Kristian.Sandberg@colorado.edu>.
3961 (Magic.__init__): fix bug in global magic escapes not being
3970 (Magic.__init__): fix bug in global magic escapes not being
3962 correctly set.
3971 correctly set.
3963
3972
3964 2004-10-08 Fernando Perez <fperez@colorado.edu>
3973 2004-10-08 Fernando Perez <fperez@colorado.edu>
3965
3974
3966 * IPython/Magic.py (__license__): change to absolute imports of
3975 * IPython/Magic.py (__license__): change to absolute imports of
3967 ipython's own internal packages, to start adapting to the absolute
3976 ipython's own internal packages, to start adapting to the absolute
3968 import requirement of PEP-328.
3977 import requirement of PEP-328.
3969
3978
3970 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3979 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3971 files, and standardize author/license marks through the Release
3980 files, and standardize author/license marks through the Release
3972 module instead of having per/file stuff (except for files with
3981 module instead of having per/file stuff (except for files with
3973 particular licenses, like the MIT/PSF-licensed codes).
3982 particular licenses, like the MIT/PSF-licensed codes).
3974
3983
3975 * IPython/Debugger.py: remove dead code for python 2.1
3984 * IPython/Debugger.py: remove dead code for python 2.1
3976
3985
3977 2004-10-04 Fernando Perez <fperez@colorado.edu>
3986 2004-10-04 Fernando Perez <fperez@colorado.edu>
3978
3987
3979 * IPython/iplib.py (ipmagic): New function for accessing magics
3988 * IPython/iplib.py (ipmagic): New function for accessing magics
3980 via a normal python function call.
3989 via a normal python function call.
3981
3990
3982 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3991 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3983 from '@' to '%', to accomodate the new @decorator syntax of python
3992 from '@' to '%', to accomodate the new @decorator syntax of python
3984 2.4.
3993 2.4.
3985
3994
3986 2004-09-29 Fernando Perez <fperez@colorado.edu>
3995 2004-09-29 Fernando Perez <fperez@colorado.edu>
3987
3996
3988 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3997 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3989 matplotlib.use to prevent running scripts which try to switch
3998 matplotlib.use to prevent running scripts which try to switch
3990 interactive backends from within ipython. This will just crash
3999 interactive backends from within ipython. This will just crash
3991 the python interpreter, so we can't allow it (but a detailed error
4000 the python interpreter, so we can't allow it (but a detailed error
3992 is given to the user).
4001 is given to the user).
3993
4002
3994 2004-09-28 Fernando Perez <fperez@colorado.edu>
4003 2004-09-28 Fernando Perez <fperez@colorado.edu>
3995
4004
3996 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
4005 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3997 matplotlib-related fixes so that using @run with non-matplotlib
4006 matplotlib-related fixes so that using @run with non-matplotlib
3998 scripts doesn't pop up spurious plot windows. This requires
4007 scripts doesn't pop up spurious plot windows. This requires
3999 matplotlib >= 0.63, where I had to make some changes as well.
4008 matplotlib >= 0.63, where I had to make some changes as well.
4000
4009
4001 * IPython/ipmaker.py (make_IPython): update version requirement to
4010 * IPython/ipmaker.py (make_IPython): update version requirement to
4002 python 2.2.
4011 python 2.2.
4003
4012
4004 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
4013 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
4005 banner arg for embedded customization.
4014 banner arg for embedded customization.
4006
4015
4007 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
4016 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
4008 explicit uses of __IP as the IPython's instance name. Now things
4017 explicit uses of __IP as the IPython's instance name. Now things
4009 are properly handled via the shell.name value. The actual code
4018 are properly handled via the shell.name value. The actual code
4010 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
4019 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
4011 is much better than before. I'll clean things completely when the
4020 is much better than before. I'll clean things completely when the
4012 magic stuff gets a real overhaul.
4021 magic stuff gets a real overhaul.
4013
4022
4014 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
4023 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
4015 minor changes to debian dir.
4024 minor changes to debian dir.
4016
4025
4017 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
4026 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
4018 pointer to the shell itself in the interactive namespace even when
4027 pointer to the shell itself in the interactive namespace even when
4019 a user-supplied dict is provided. This is needed for embedding
4028 a user-supplied dict is provided. This is needed for embedding
4020 purposes (found by tests with Michel Sanner).
4029 purposes (found by tests with Michel Sanner).
4021
4030
4022 2004-09-27 Fernando Perez <fperez@colorado.edu>
4031 2004-09-27 Fernando Perez <fperez@colorado.edu>
4023
4032
4024 * IPython/UserConfig/ipythonrc: remove []{} from
4033 * IPython/UserConfig/ipythonrc: remove []{} from
4025 readline_remove_delims, so that things like [modname.<TAB> do
4034 readline_remove_delims, so that things like [modname.<TAB> do
4026 proper completion. This disables [].TAB, but that's a less common
4035 proper completion. This disables [].TAB, but that's a less common
4027 case than module names in list comprehensions, for example.
4036 case than module names in list comprehensions, for example.
4028 Thanks to a report by Andrea Riciputi.
4037 Thanks to a report by Andrea Riciputi.
4029
4038
4030 2004-09-09 Fernando Perez <fperez@colorado.edu>
4039 2004-09-09 Fernando Perez <fperez@colorado.edu>
4031
4040
4032 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
4041 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
4033 blocking problems in win32 and osx. Fix by John.
4042 blocking problems in win32 and osx. Fix by John.
4034
4043
4035 2004-09-08 Fernando Perez <fperez@colorado.edu>
4044 2004-09-08 Fernando Perez <fperez@colorado.edu>
4036
4045
4037 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
4046 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
4038 for Win32 and OSX. Fix by John Hunter.
4047 for Win32 and OSX. Fix by John Hunter.
4039
4048
4040 2004-08-30 *** Released version 0.6.3
4049 2004-08-30 *** Released version 0.6.3
4041
4050
4042 2004-08-30 Fernando Perez <fperez@colorado.edu>
4051 2004-08-30 Fernando Perez <fperez@colorado.edu>
4043
4052
4044 * setup.py (isfile): Add manpages to list of dependent files to be
4053 * setup.py (isfile): Add manpages to list of dependent files to be
4045 updated.
4054 updated.
4046
4055
4047 2004-08-27 Fernando Perez <fperez@colorado.edu>
4056 2004-08-27 Fernando Perez <fperez@colorado.edu>
4048
4057
4049 * IPython/Shell.py (start): I've disabled -wthread and -gthread
4058 * IPython/Shell.py (start): I've disabled -wthread and -gthread
4050 for now. They don't really work with standalone WX/GTK code
4059 for now. They don't really work with standalone WX/GTK code
4051 (though matplotlib IS working fine with both of those backends).
4060 (though matplotlib IS working fine with both of those backends).
4052 This will neeed much more testing. I disabled most things with
4061 This will neeed much more testing. I disabled most things with
4053 comments, so turning it back on later should be pretty easy.
4062 comments, so turning it back on later should be pretty easy.
4054
4063
4055 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4064 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4056 autocalling of expressions like r'foo', by modifying the line
4065 autocalling of expressions like r'foo', by modifying the line
4057 split regexp. Closes
4066 split regexp. Closes
4058 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4067 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4059 Riley <ipythonbugs-AT-sabi.net>.
4068 Riley <ipythonbugs-AT-sabi.net>.
4060 (InteractiveShell.mainloop): honor --nobanner with banner
4069 (InteractiveShell.mainloop): honor --nobanner with banner
4061 extensions.
4070 extensions.
4062
4071
4063 * IPython/Shell.py: Significant refactoring of all classes, so
4072 * IPython/Shell.py: Significant refactoring of all classes, so
4064 that we can really support ALL matplotlib backends and threading
4073 that we can really support ALL matplotlib backends and threading
4065 models (John spotted a bug with Tk which required this). Now we
4074 models (John spotted a bug with Tk which required this). Now we
4066 should support single-threaded, WX-threads and GTK-threads, both
4075 should support single-threaded, WX-threads and GTK-threads, both
4067 for generic code and for matplotlib.
4076 for generic code and for matplotlib.
4068
4077
4069 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4078 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4070 -pylab, to simplify things for users. Will also remove the pylab
4079 -pylab, to simplify things for users. Will also remove the pylab
4071 profile, since now all of matplotlib configuration is directly
4080 profile, since now all of matplotlib configuration is directly
4072 handled here. This also reduces startup time.
4081 handled here. This also reduces startup time.
4073
4082
4074 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4083 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4075 shell wasn't being correctly called. Also in IPShellWX.
4084 shell wasn't being correctly called. Also in IPShellWX.
4076
4085
4077 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4086 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4078 fine-tune banner.
4087 fine-tune banner.
4079
4088
4080 * IPython/numutils.py (spike): Deprecate these spike functions,
4089 * IPython/numutils.py (spike): Deprecate these spike functions,
4081 delete (long deprecated) gnuplot_exec handler.
4090 delete (long deprecated) gnuplot_exec handler.
4082
4091
4083 2004-08-26 Fernando Perez <fperez@colorado.edu>
4092 2004-08-26 Fernando Perez <fperez@colorado.edu>
4084
4093
4085 * ipython.1: Update for threading options, plus some others which
4094 * ipython.1: Update for threading options, plus some others which
4086 were missing.
4095 were missing.
4087
4096
4088 * IPython/ipmaker.py (__call__): Added -wthread option for
4097 * IPython/ipmaker.py (__call__): Added -wthread option for
4089 wxpython thread handling. Make sure threading options are only
4098 wxpython thread handling. Make sure threading options are only
4090 valid at the command line.
4099 valid at the command line.
4091
4100
4092 * scripts/ipython: moved shell selection into a factory function
4101 * scripts/ipython: moved shell selection into a factory function
4093 in Shell.py, to keep the starter script to a minimum.
4102 in Shell.py, to keep the starter script to a minimum.
4094
4103
4095 2004-08-25 Fernando Perez <fperez@colorado.edu>
4104 2004-08-25 Fernando Perez <fperez@colorado.edu>
4096
4105
4097 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4106 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4098 John. Along with some recent changes he made to matplotlib, the
4107 John. Along with some recent changes he made to matplotlib, the
4099 next versions of both systems should work very well together.
4108 next versions of both systems should work very well together.
4100
4109
4101 2004-08-24 Fernando Perez <fperez@colorado.edu>
4110 2004-08-24 Fernando Perez <fperez@colorado.edu>
4102
4111
4103 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4112 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4104 tried to switch the profiling to using hotshot, but I'm getting
4113 tried to switch the profiling to using hotshot, but I'm getting
4105 strange errors from prof.runctx() there. I may be misreading the
4114 strange errors from prof.runctx() there. I may be misreading the
4106 docs, but it looks weird. For now the profiling code will
4115 docs, but it looks weird. For now the profiling code will
4107 continue to use the standard profiler.
4116 continue to use the standard profiler.
4108
4117
4109 2004-08-23 Fernando Perez <fperez@colorado.edu>
4118 2004-08-23 Fernando Perez <fperez@colorado.edu>
4110
4119
4111 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4120 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4112 threaded shell, by John Hunter. It's not quite ready yet, but
4121 threaded shell, by John Hunter. It's not quite ready yet, but
4113 close.
4122 close.
4114
4123
4115 2004-08-22 Fernando Perez <fperez@colorado.edu>
4124 2004-08-22 Fernando Perez <fperez@colorado.edu>
4116
4125
4117 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4126 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4118 in Magic and ultraTB.
4127 in Magic and ultraTB.
4119
4128
4120 * ipython.1: document threading options in manpage.
4129 * ipython.1: document threading options in manpage.
4121
4130
4122 * scripts/ipython: Changed name of -thread option to -gthread,
4131 * scripts/ipython: Changed name of -thread option to -gthread,
4123 since this is GTK specific. I want to leave the door open for a
4132 since this is GTK specific. I want to leave the door open for a
4124 -wthread option for WX, which will most likely be necessary. This
4133 -wthread option for WX, which will most likely be necessary. This
4125 change affects usage and ipmaker as well.
4134 change affects usage and ipmaker as well.
4126
4135
4127 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4136 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4128 handle the matplotlib shell issues. Code by John Hunter
4137 handle the matplotlib shell issues. Code by John Hunter
4129 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4138 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4130 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4139 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4131 broken (and disabled for end users) for now, but it puts the
4140 broken (and disabled for end users) for now, but it puts the
4132 infrastructure in place.
4141 infrastructure in place.
4133
4142
4134 2004-08-21 Fernando Perez <fperez@colorado.edu>
4143 2004-08-21 Fernando Perez <fperez@colorado.edu>
4135
4144
4136 * ipythonrc-pylab: Add matplotlib support.
4145 * ipythonrc-pylab: Add matplotlib support.
4137
4146
4138 * matplotlib_config.py: new files for matplotlib support, part of
4147 * matplotlib_config.py: new files for matplotlib support, part of
4139 the pylab profile.
4148 the pylab profile.
4140
4149
4141 * IPython/usage.py (__doc__): documented the threading options.
4150 * IPython/usage.py (__doc__): documented the threading options.
4142
4151
4143 2004-08-20 Fernando Perez <fperez@colorado.edu>
4152 2004-08-20 Fernando Perez <fperez@colorado.edu>
4144
4153
4145 * ipython: Modified the main calling routine to handle the -thread
4154 * ipython: Modified the main calling routine to handle the -thread
4146 and -mpthread options. This needs to be done as a top-level hack,
4155 and -mpthread options. This needs to be done as a top-level hack,
4147 because it determines which class to instantiate for IPython
4156 because it determines which class to instantiate for IPython
4148 itself.
4157 itself.
4149
4158
4150 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4159 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4151 classes to support multithreaded GTK operation without blocking,
4160 classes to support multithreaded GTK operation without blocking,
4152 and matplotlib with all backends. This is a lot of still very
4161 and matplotlib with all backends. This is a lot of still very
4153 experimental code, and threads are tricky. So it may still have a
4162 experimental code, and threads are tricky. So it may still have a
4154 few rough edges... This code owes a lot to
4163 few rough edges... This code owes a lot to
4155 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4164 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4156 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4165 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4157 to John Hunter for all the matplotlib work.
4166 to John Hunter for all the matplotlib work.
4158
4167
4159 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4168 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4160 options for gtk thread and matplotlib support.
4169 options for gtk thread and matplotlib support.
4161
4170
4162 2004-08-16 Fernando Perez <fperez@colorado.edu>
4171 2004-08-16 Fernando Perez <fperez@colorado.edu>
4163
4172
4164 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4173 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4165 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4174 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4166 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4175 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4167
4176
4168 2004-08-11 Fernando Perez <fperez@colorado.edu>
4177 2004-08-11 Fernando Perez <fperez@colorado.edu>
4169
4178
4170 * setup.py (isfile): Fix build so documentation gets updated for
4179 * setup.py (isfile): Fix build so documentation gets updated for
4171 rpms (it was only done for .tgz builds).
4180 rpms (it was only done for .tgz builds).
4172
4181
4173 2004-08-10 Fernando Perez <fperez@colorado.edu>
4182 2004-08-10 Fernando Perez <fperez@colorado.edu>
4174
4183
4175 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4184 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4176
4185
4177 * iplib.py : Silence syntax error exceptions in tab-completion.
4186 * iplib.py : Silence syntax error exceptions in tab-completion.
4178
4187
4179 2004-08-05 Fernando Perez <fperez@colorado.edu>
4188 2004-08-05 Fernando Perez <fperez@colorado.edu>
4180
4189
4181 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4190 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4182 'color off' mark for continuation prompts. This was causing long
4191 'color off' mark for continuation prompts. This was causing long
4183 continuation lines to mis-wrap.
4192 continuation lines to mis-wrap.
4184
4193
4185 2004-08-01 Fernando Perez <fperez@colorado.edu>
4194 2004-08-01 Fernando Perez <fperez@colorado.edu>
4186
4195
4187 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4196 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4188 for building ipython to be a parameter. All this is necessary
4197 for building ipython to be a parameter. All this is necessary
4189 right now to have a multithreaded version, but this insane
4198 right now to have a multithreaded version, but this insane
4190 non-design will be cleaned up soon. For now, it's a hack that
4199 non-design will be cleaned up soon. For now, it's a hack that
4191 works.
4200 works.
4192
4201
4193 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4202 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4194 args in various places. No bugs so far, but it's a dangerous
4203 args in various places. No bugs so far, but it's a dangerous
4195 practice.
4204 practice.
4196
4205
4197 2004-07-31 Fernando Perez <fperez@colorado.edu>
4206 2004-07-31 Fernando Perez <fperez@colorado.edu>
4198
4207
4199 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4208 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4200 fix completion of files with dots in their names under most
4209 fix completion of files with dots in their names under most
4201 profiles (pysh was OK because the completion order is different).
4210 profiles (pysh was OK because the completion order is different).
4202
4211
4203 2004-07-27 Fernando Perez <fperez@colorado.edu>
4212 2004-07-27 Fernando Perez <fperez@colorado.edu>
4204
4213
4205 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4214 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4206 keywords manually, b/c the one in keyword.py was removed in python
4215 keywords manually, b/c the one in keyword.py was removed in python
4207 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4216 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4208 This is NOT a bug under python 2.3 and earlier.
4217 This is NOT a bug under python 2.3 and earlier.
4209
4218
4210 2004-07-26 Fernando Perez <fperez@colorado.edu>
4219 2004-07-26 Fernando Perez <fperez@colorado.edu>
4211
4220
4212 * IPython/ultraTB.py (VerboseTB.text): Add another
4221 * IPython/ultraTB.py (VerboseTB.text): Add another
4213 linecache.checkcache() call to try to prevent inspect.py from
4222 linecache.checkcache() call to try to prevent inspect.py from
4214 crashing under python 2.3. I think this fixes
4223 crashing under python 2.3. I think this fixes
4215 http://www.scipy.net/roundup/ipython/issue17.
4224 http://www.scipy.net/roundup/ipython/issue17.
4216
4225
4217 2004-07-26 *** Released version 0.6.2
4226 2004-07-26 *** Released version 0.6.2
4218
4227
4219 2004-07-26 Fernando Perez <fperez@colorado.edu>
4228 2004-07-26 Fernando Perez <fperez@colorado.edu>
4220
4229
4221 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4230 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4222 fail for any number.
4231 fail for any number.
4223 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4232 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4224 empty bookmarks.
4233 empty bookmarks.
4225
4234
4226 2004-07-26 *** Released version 0.6.1
4235 2004-07-26 *** Released version 0.6.1
4227
4236
4228 2004-07-26 Fernando Perez <fperez@colorado.edu>
4237 2004-07-26 Fernando Perez <fperez@colorado.edu>
4229
4238
4230 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4239 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4231
4240
4232 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4241 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4233 escaping '()[]{}' in filenames.
4242 escaping '()[]{}' in filenames.
4234
4243
4235 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4244 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4236 Python 2.2 users who lack a proper shlex.split.
4245 Python 2.2 users who lack a proper shlex.split.
4237
4246
4238 2004-07-19 Fernando Perez <fperez@colorado.edu>
4247 2004-07-19 Fernando Perez <fperez@colorado.edu>
4239
4248
4240 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4249 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4241 for reading readline's init file. I follow the normal chain:
4250 for reading readline's init file. I follow the normal chain:
4242 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4251 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4243 report by Mike Heeter. This closes
4252 report by Mike Heeter. This closes
4244 http://www.scipy.net/roundup/ipython/issue16.
4253 http://www.scipy.net/roundup/ipython/issue16.
4245
4254
4246 2004-07-18 Fernando Perez <fperez@colorado.edu>
4255 2004-07-18 Fernando Perez <fperez@colorado.edu>
4247
4256
4248 * IPython/iplib.py (__init__): Add better handling of '\' under
4257 * IPython/iplib.py (__init__): Add better handling of '\' under
4249 Win32 for filenames. After a patch by Ville.
4258 Win32 for filenames. After a patch by Ville.
4250
4259
4251 2004-07-17 Fernando Perez <fperez@colorado.edu>
4260 2004-07-17 Fernando Perez <fperez@colorado.edu>
4252
4261
4253 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4262 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4254 autocalling would be triggered for 'foo is bar' if foo is
4263 autocalling would be triggered for 'foo is bar' if foo is
4255 callable. I also cleaned up the autocall detection code to use a
4264 callable. I also cleaned up the autocall detection code to use a
4256 regexp, which is faster. Bug reported by Alexander Schmolck.
4265 regexp, which is faster. Bug reported by Alexander Schmolck.
4257
4266
4258 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4267 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4259 '?' in them would confuse the help system. Reported by Alex
4268 '?' in them would confuse the help system. Reported by Alex
4260 Schmolck.
4269 Schmolck.
4261
4270
4262 2004-07-16 Fernando Perez <fperez@colorado.edu>
4271 2004-07-16 Fernando Perez <fperez@colorado.edu>
4263
4272
4264 * IPython/GnuplotInteractive.py (__all__): added plot2.
4273 * IPython/GnuplotInteractive.py (__all__): added plot2.
4265
4274
4266 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4275 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4267 plotting dictionaries, lists or tuples of 1d arrays.
4276 plotting dictionaries, lists or tuples of 1d arrays.
4268
4277
4269 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4278 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4270 optimizations.
4279 optimizations.
4271
4280
4272 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4281 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4273 the information which was there from Janko's original IPP code:
4282 the information which was there from Janko's original IPP code:
4274
4283
4275 03.05.99 20:53 porto.ifm.uni-kiel.de
4284 03.05.99 20:53 porto.ifm.uni-kiel.de
4276 --Started changelog.
4285 --Started changelog.
4277 --make clear do what it say it does
4286 --make clear do what it say it does
4278 --added pretty output of lines from inputcache
4287 --added pretty output of lines from inputcache
4279 --Made Logger a mixin class, simplifies handling of switches
4288 --Made Logger a mixin class, simplifies handling of switches
4280 --Added own completer class. .string<TAB> expands to last history
4289 --Added own completer class. .string<TAB> expands to last history
4281 line which starts with string. The new expansion is also present
4290 line which starts with string. The new expansion is also present
4282 with Ctrl-r from the readline library. But this shows, who this
4291 with Ctrl-r from the readline library. But this shows, who this
4283 can be done for other cases.
4292 can be done for other cases.
4284 --Added convention that all shell functions should accept a
4293 --Added convention that all shell functions should accept a
4285 parameter_string This opens the door for different behaviour for
4294 parameter_string This opens the door for different behaviour for
4286 each function. @cd is a good example of this.
4295 each function. @cd is a good example of this.
4287
4296
4288 04.05.99 12:12 porto.ifm.uni-kiel.de
4297 04.05.99 12:12 porto.ifm.uni-kiel.de
4289 --added logfile rotation
4298 --added logfile rotation
4290 --added new mainloop method which freezes first the namespace
4299 --added new mainloop method which freezes first the namespace
4291
4300
4292 07.05.99 21:24 porto.ifm.uni-kiel.de
4301 07.05.99 21:24 porto.ifm.uni-kiel.de
4293 --added the docreader classes. Now there is a help system.
4302 --added the docreader classes. Now there is a help system.
4294 -This is only a first try. Currently it's not easy to put new
4303 -This is only a first try. Currently it's not easy to put new
4295 stuff in the indices. But this is the way to go. Info would be
4304 stuff in the indices. But this is the way to go. Info would be
4296 better, but HTML is every where and not everybody has an info
4305 better, but HTML is every where and not everybody has an info
4297 system installed and it's not so easy to change html-docs to info.
4306 system installed and it's not so easy to change html-docs to info.
4298 --added global logfile option
4307 --added global logfile option
4299 --there is now a hook for object inspection method pinfo needs to
4308 --there is now a hook for object inspection method pinfo needs to
4300 be provided for this. Can be reached by two '??'.
4309 be provided for this. Can be reached by two '??'.
4301
4310
4302 08.05.99 20:51 porto.ifm.uni-kiel.de
4311 08.05.99 20:51 porto.ifm.uni-kiel.de
4303 --added a README
4312 --added a README
4304 --bug in rc file. Something has changed so functions in the rc
4313 --bug in rc file. Something has changed so functions in the rc
4305 file need to reference the shell and not self. Not clear if it's a
4314 file need to reference the shell and not self. Not clear if it's a
4306 bug or feature.
4315 bug or feature.
4307 --changed rc file for new behavior
4316 --changed rc file for new behavior
4308
4317
4309 2004-07-15 Fernando Perez <fperez@colorado.edu>
4318 2004-07-15 Fernando Perez <fperez@colorado.edu>
4310
4319
4311 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4320 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4312 cache was falling out of sync in bizarre manners when multi-line
4321 cache was falling out of sync in bizarre manners when multi-line
4313 input was present. Minor optimizations and cleanup.
4322 input was present. Minor optimizations and cleanup.
4314
4323
4315 (Logger): Remove old Changelog info for cleanup. This is the
4324 (Logger): Remove old Changelog info for cleanup. This is the
4316 information which was there from Janko's original code:
4325 information which was there from Janko's original code:
4317
4326
4318 Changes to Logger: - made the default log filename a parameter
4327 Changes to Logger: - made the default log filename a parameter
4319
4328
4320 - put a check for lines beginning with !@? in log(). Needed
4329 - put a check for lines beginning with !@? in log(). Needed
4321 (even if the handlers properly log their lines) for mid-session
4330 (even if the handlers properly log their lines) for mid-session
4322 logging activation to work properly. Without this, lines logged
4331 logging activation to work properly. Without this, lines logged
4323 in mid session, which get read from the cache, would end up
4332 in mid session, which get read from the cache, would end up
4324 'bare' (with !@? in the open) in the log. Now they are caught
4333 'bare' (with !@? in the open) in the log. Now they are caught
4325 and prepended with a #.
4334 and prepended with a #.
4326
4335
4327 * IPython/iplib.py (InteractiveShell.init_readline): added check
4336 * IPython/iplib.py (InteractiveShell.init_readline): added check
4328 in case MagicCompleter fails to be defined, so we don't crash.
4337 in case MagicCompleter fails to be defined, so we don't crash.
4329
4338
4330 2004-07-13 Fernando Perez <fperez@colorado.edu>
4339 2004-07-13 Fernando Perez <fperez@colorado.edu>
4331
4340
4332 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4341 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4333 of EPS if the requested filename ends in '.eps'.
4342 of EPS if the requested filename ends in '.eps'.
4334
4343
4335 2004-07-04 Fernando Perez <fperez@colorado.edu>
4344 2004-07-04 Fernando Perez <fperez@colorado.edu>
4336
4345
4337 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4346 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4338 escaping of quotes when calling the shell.
4347 escaping of quotes when calling the shell.
4339
4348
4340 2004-07-02 Fernando Perez <fperez@colorado.edu>
4349 2004-07-02 Fernando Perez <fperez@colorado.edu>
4341
4350
4342 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4351 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4343 gettext not working because we were clobbering '_'. Fixes
4352 gettext not working because we were clobbering '_'. Fixes
4344 http://www.scipy.net/roundup/ipython/issue6.
4353 http://www.scipy.net/roundup/ipython/issue6.
4345
4354
4346 2004-07-01 Fernando Perez <fperez@colorado.edu>
4355 2004-07-01 Fernando Perez <fperez@colorado.edu>
4347
4356
4348 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4357 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4349 into @cd. Patch by Ville.
4358 into @cd. Patch by Ville.
4350
4359
4351 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4360 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4352 new function to store things after ipmaker runs. Patch by Ville.
4361 new function to store things after ipmaker runs. Patch by Ville.
4353 Eventually this will go away once ipmaker is removed and the class
4362 Eventually this will go away once ipmaker is removed and the class
4354 gets cleaned up, but for now it's ok. Key functionality here is
4363 gets cleaned up, but for now it's ok. Key functionality here is
4355 the addition of the persistent storage mechanism, a dict for
4364 the addition of the persistent storage mechanism, a dict for
4356 keeping data across sessions (for now just bookmarks, but more can
4365 keeping data across sessions (for now just bookmarks, but more can
4357 be implemented later).
4366 be implemented later).
4358
4367
4359 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4368 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4360 persistent across sections. Patch by Ville, I modified it
4369 persistent across sections. Patch by Ville, I modified it
4361 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4370 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4362 added a '-l' option to list all bookmarks.
4371 added a '-l' option to list all bookmarks.
4363
4372
4364 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4373 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4365 center for cleanup. Registered with atexit.register(). I moved
4374 center for cleanup. Registered with atexit.register(). I moved
4366 here the old exit_cleanup(). After a patch by Ville.
4375 here the old exit_cleanup(). After a patch by Ville.
4367
4376
4368 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4377 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4369 characters in the hacked shlex_split for python 2.2.
4378 characters in the hacked shlex_split for python 2.2.
4370
4379
4371 * IPython/iplib.py (file_matches): more fixes to filenames with
4380 * IPython/iplib.py (file_matches): more fixes to filenames with
4372 whitespace in them. It's not perfect, but limitations in python's
4381 whitespace in them. It's not perfect, but limitations in python's
4373 readline make it impossible to go further.
4382 readline make it impossible to go further.
4374
4383
4375 2004-06-29 Fernando Perez <fperez@colorado.edu>
4384 2004-06-29 Fernando Perez <fperez@colorado.edu>
4376
4385
4377 * IPython/iplib.py (file_matches): escape whitespace correctly in
4386 * IPython/iplib.py (file_matches): escape whitespace correctly in
4378 filename completions. Bug reported by Ville.
4387 filename completions. Bug reported by Ville.
4379
4388
4380 2004-06-28 Fernando Perez <fperez@colorado.edu>
4389 2004-06-28 Fernando Perez <fperez@colorado.edu>
4381
4390
4382 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4391 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4383 the history file will be called 'history-PROFNAME' (or just
4392 the history file will be called 'history-PROFNAME' (or just
4384 'history' if no profile is loaded). I was getting annoyed at
4393 'history' if no profile is loaded). I was getting annoyed at
4385 getting my Numerical work history clobbered by pysh sessions.
4394 getting my Numerical work history clobbered by pysh sessions.
4386
4395
4387 * IPython/iplib.py (InteractiveShell.__init__): Internal
4396 * IPython/iplib.py (InteractiveShell.__init__): Internal
4388 getoutputerror() function so that we can honor the system_verbose
4397 getoutputerror() function so that we can honor the system_verbose
4389 flag for _all_ system calls. I also added escaping of #
4398 flag for _all_ system calls. I also added escaping of #
4390 characters here to avoid confusing Itpl.
4399 characters here to avoid confusing Itpl.
4391
4400
4392 * IPython/Magic.py (shlex_split): removed call to shell in
4401 * IPython/Magic.py (shlex_split): removed call to shell in
4393 parse_options and replaced it with shlex.split(). The annoying
4402 parse_options and replaced it with shlex.split(). The annoying
4394 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4403 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4395 to backport it from 2.3, with several frail hacks (the shlex
4404 to backport it from 2.3, with several frail hacks (the shlex
4396 module is rather limited in 2.2). Thanks to a suggestion by Ville
4405 module is rather limited in 2.2). Thanks to a suggestion by Ville
4397 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4406 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4398 problem.
4407 problem.
4399
4408
4400 (Magic.magic_system_verbose): new toggle to print the actual
4409 (Magic.magic_system_verbose): new toggle to print the actual
4401 system calls made by ipython. Mainly for debugging purposes.
4410 system calls made by ipython. Mainly for debugging purposes.
4402
4411
4403 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4412 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4404 doesn't support persistence. Reported (and fix suggested) by
4413 doesn't support persistence. Reported (and fix suggested) by
4405 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4414 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4406
4415
4407 2004-06-26 Fernando Perez <fperez@colorado.edu>
4416 2004-06-26 Fernando Perez <fperez@colorado.edu>
4408
4417
4409 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4418 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4410 continue prompts.
4419 continue prompts.
4411
4420
4412 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4421 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4413 function (basically a big docstring) and a few more things here to
4422 function (basically a big docstring) and a few more things here to
4414 speedup startup. pysh.py is now very lightweight. We want because
4423 speedup startup. pysh.py is now very lightweight. We want because
4415 it gets execfile'd, while InterpreterExec gets imported, so
4424 it gets execfile'd, while InterpreterExec gets imported, so
4416 byte-compilation saves time.
4425 byte-compilation saves time.
4417
4426
4418 2004-06-25 Fernando Perez <fperez@colorado.edu>
4427 2004-06-25 Fernando Perez <fperez@colorado.edu>
4419
4428
4420 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4429 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4421 -NUM', which was recently broken.
4430 -NUM', which was recently broken.
4422
4431
4423 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4432 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4424 in multi-line input (but not !!, which doesn't make sense there).
4433 in multi-line input (but not !!, which doesn't make sense there).
4425
4434
4426 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4435 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4427 It's just too useful, and people can turn it off in the less
4436 It's just too useful, and people can turn it off in the less
4428 common cases where it's a problem.
4437 common cases where it's a problem.
4429
4438
4430 2004-06-24 Fernando Perez <fperez@colorado.edu>
4439 2004-06-24 Fernando Perez <fperez@colorado.edu>
4431
4440
4432 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4441 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4433 special syntaxes (like alias calling) is now allied in multi-line
4442 special syntaxes (like alias calling) is now allied in multi-line
4434 input. This is still _very_ experimental, but it's necessary for
4443 input. This is still _very_ experimental, but it's necessary for
4435 efficient shell usage combining python looping syntax with system
4444 efficient shell usage combining python looping syntax with system
4436 calls. For now it's restricted to aliases, I don't think it
4445 calls. For now it's restricted to aliases, I don't think it
4437 really even makes sense to have this for magics.
4446 really even makes sense to have this for magics.
4438
4447
4439 2004-06-23 Fernando Perez <fperez@colorado.edu>
4448 2004-06-23 Fernando Perez <fperez@colorado.edu>
4440
4449
4441 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4450 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4442 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4451 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4443
4452
4444 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4453 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4445 extensions under Windows (after code sent by Gary Bishop). The
4454 extensions under Windows (after code sent by Gary Bishop). The
4446 extensions considered 'executable' are stored in IPython's rc
4455 extensions considered 'executable' are stored in IPython's rc
4447 structure as win_exec_ext.
4456 structure as win_exec_ext.
4448
4457
4449 * IPython/genutils.py (shell): new function, like system() but
4458 * IPython/genutils.py (shell): new function, like system() but
4450 without return value. Very useful for interactive shell work.
4459 without return value. Very useful for interactive shell work.
4451
4460
4452 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4461 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4453 delete aliases.
4462 delete aliases.
4454
4463
4455 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4464 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4456 sure that the alias table doesn't contain python keywords.
4465 sure that the alias table doesn't contain python keywords.
4457
4466
4458 2004-06-21 Fernando Perez <fperez@colorado.edu>
4467 2004-06-21 Fernando Perez <fperez@colorado.edu>
4459
4468
4460 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4469 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4461 non-existent items are found in $PATH. Reported by Thorsten.
4470 non-existent items are found in $PATH. Reported by Thorsten.
4462
4471
4463 2004-06-20 Fernando Perez <fperez@colorado.edu>
4472 2004-06-20 Fernando Perez <fperez@colorado.edu>
4464
4473
4465 * IPython/iplib.py (complete): modified the completer so that the
4474 * IPython/iplib.py (complete): modified the completer so that the
4466 order of priorities can be easily changed at runtime.
4475 order of priorities can be easily changed at runtime.
4467
4476
4468 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4477 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4469 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4478 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4470
4479
4471 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4480 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4472 expand Python variables prepended with $ in all system calls. The
4481 expand Python variables prepended with $ in all system calls. The
4473 same was done to InteractiveShell.handle_shell_escape. Now all
4482 same was done to InteractiveShell.handle_shell_escape. Now all
4474 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4483 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4475 expansion of python variables and expressions according to the
4484 expansion of python variables and expressions according to the
4476 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4485 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4477
4486
4478 Though PEP-215 has been rejected, a similar (but simpler) one
4487 Though PEP-215 has been rejected, a similar (but simpler) one
4479 seems like it will go into Python 2.4, PEP-292 -
4488 seems like it will go into Python 2.4, PEP-292 -
4480 http://www.python.org/peps/pep-0292.html.
4489 http://www.python.org/peps/pep-0292.html.
4481
4490
4482 I'll keep the full syntax of PEP-215, since IPython has since the
4491 I'll keep the full syntax of PEP-215, since IPython has since the
4483 start used Ka-Ping Yee's reference implementation discussed there
4492 start used Ka-Ping Yee's reference implementation discussed there
4484 (Itpl), and I actually like the powerful semantics it offers.
4493 (Itpl), and I actually like the powerful semantics it offers.
4485
4494
4486 In order to access normal shell variables, the $ has to be escaped
4495 In order to access normal shell variables, the $ has to be escaped
4487 via an extra $. For example:
4496 via an extra $. For example:
4488
4497
4489 In [7]: PATH='a python variable'
4498 In [7]: PATH='a python variable'
4490
4499
4491 In [8]: !echo $PATH
4500 In [8]: !echo $PATH
4492 a python variable
4501 a python variable
4493
4502
4494 In [9]: !echo $$PATH
4503 In [9]: !echo $$PATH
4495 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4504 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4496
4505
4497 (Magic.parse_options): escape $ so the shell doesn't evaluate
4506 (Magic.parse_options): escape $ so the shell doesn't evaluate
4498 things prematurely.
4507 things prematurely.
4499
4508
4500 * IPython/iplib.py (InteractiveShell.call_alias): added the
4509 * IPython/iplib.py (InteractiveShell.call_alias): added the
4501 ability for aliases to expand python variables via $.
4510 ability for aliases to expand python variables via $.
4502
4511
4503 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4512 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4504 system, now there's a @rehash/@rehashx pair of magics. These work
4513 system, now there's a @rehash/@rehashx pair of magics. These work
4505 like the csh rehash command, and can be invoked at any time. They
4514 like the csh rehash command, and can be invoked at any time. They
4506 build a table of aliases to everything in the user's $PATH
4515 build a table of aliases to everything in the user's $PATH
4507 (@rehash uses everything, @rehashx is slower but only adds
4516 (@rehash uses everything, @rehashx is slower but only adds
4508 executable files). With this, the pysh.py-based shell profile can
4517 executable files). With this, the pysh.py-based shell profile can
4509 now simply call rehash upon startup, and full access to all
4518 now simply call rehash upon startup, and full access to all
4510 programs in the user's path is obtained.
4519 programs in the user's path is obtained.
4511
4520
4512 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4521 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4513 functionality is now fully in place. I removed the old dynamic
4522 functionality is now fully in place. I removed the old dynamic
4514 code generation based approach, in favor of a much lighter one
4523 code generation based approach, in favor of a much lighter one
4515 based on a simple dict. The advantage is that this allows me to
4524 based on a simple dict. The advantage is that this allows me to
4516 now have thousands of aliases with negligible cost (unthinkable
4525 now have thousands of aliases with negligible cost (unthinkable
4517 with the old system).
4526 with the old system).
4518
4527
4519 2004-06-19 Fernando Perez <fperez@colorado.edu>
4528 2004-06-19 Fernando Perez <fperez@colorado.edu>
4520
4529
4521 * IPython/iplib.py (__init__): extended MagicCompleter class to
4530 * IPython/iplib.py (__init__): extended MagicCompleter class to
4522 also complete (last in priority) on user aliases.
4531 also complete (last in priority) on user aliases.
4523
4532
4524 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4533 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4525 call to eval.
4534 call to eval.
4526 (ItplNS.__init__): Added a new class which functions like Itpl,
4535 (ItplNS.__init__): Added a new class which functions like Itpl,
4527 but allows configuring the namespace for the evaluation to occur
4536 but allows configuring the namespace for the evaluation to occur
4528 in.
4537 in.
4529
4538
4530 2004-06-18 Fernando Perez <fperez@colorado.edu>
4539 2004-06-18 Fernando Perez <fperez@colorado.edu>
4531
4540
4532 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4541 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4533 better message when 'exit' or 'quit' are typed (a common newbie
4542 better message when 'exit' or 'quit' are typed (a common newbie
4534 confusion).
4543 confusion).
4535
4544
4536 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4545 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4537 check for Windows users.
4546 check for Windows users.
4538
4547
4539 * IPython/iplib.py (InteractiveShell.user_setup): removed
4548 * IPython/iplib.py (InteractiveShell.user_setup): removed
4540 disabling of colors for Windows. I'll test at runtime and issue a
4549 disabling of colors for Windows. I'll test at runtime and issue a
4541 warning if Gary's readline isn't found, as to nudge users to
4550 warning if Gary's readline isn't found, as to nudge users to
4542 download it.
4551 download it.
4543
4552
4544 2004-06-16 Fernando Perez <fperez@colorado.edu>
4553 2004-06-16 Fernando Perez <fperez@colorado.edu>
4545
4554
4546 * IPython/genutils.py (Stream.__init__): changed to print errors
4555 * IPython/genutils.py (Stream.__init__): changed to print errors
4547 to sys.stderr. I had a circular dependency here. Now it's
4556 to sys.stderr. I had a circular dependency here. Now it's
4548 possible to run ipython as IDLE's shell (consider this pre-alpha,
4557 possible to run ipython as IDLE's shell (consider this pre-alpha,
4549 since true stdout things end up in the starting terminal instead
4558 since true stdout things end up in the starting terminal instead
4550 of IDLE's out).
4559 of IDLE's out).
4551
4560
4552 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4561 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4553 users who haven't # updated their prompt_in2 definitions. Remove
4562 users who haven't # updated their prompt_in2 definitions. Remove
4554 eventually.
4563 eventually.
4555 (multiple_replace): added credit to original ASPN recipe.
4564 (multiple_replace): added credit to original ASPN recipe.
4556
4565
4557 2004-06-15 Fernando Perez <fperez@colorado.edu>
4566 2004-06-15 Fernando Perez <fperez@colorado.edu>
4558
4567
4559 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4568 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4560 list of auto-defined aliases.
4569 list of auto-defined aliases.
4561
4570
4562 2004-06-13 Fernando Perez <fperez@colorado.edu>
4571 2004-06-13 Fernando Perez <fperez@colorado.edu>
4563
4572
4564 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4573 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4565 install was really requested (so setup.py can be used for other
4574 install was really requested (so setup.py can be used for other
4566 things under Windows).
4575 things under Windows).
4567
4576
4568 2004-06-10 Fernando Perez <fperez@colorado.edu>
4577 2004-06-10 Fernando Perez <fperez@colorado.edu>
4569
4578
4570 * IPython/Logger.py (Logger.create_log): Manually remove any old
4579 * IPython/Logger.py (Logger.create_log): Manually remove any old
4571 backup, since os.remove may fail under Windows. Fixes bug
4580 backup, since os.remove may fail under Windows. Fixes bug
4572 reported by Thorsten.
4581 reported by Thorsten.
4573
4582
4574 2004-06-09 Fernando Perez <fperez@colorado.edu>
4583 2004-06-09 Fernando Perez <fperez@colorado.edu>
4575
4584
4576 * examples/example-embed.py: fixed all references to %n (replaced
4585 * examples/example-embed.py: fixed all references to %n (replaced
4577 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4586 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4578 for all examples and the manual as well.
4587 for all examples and the manual as well.
4579
4588
4580 2004-06-08 Fernando Perez <fperez@colorado.edu>
4589 2004-06-08 Fernando Perez <fperez@colorado.edu>
4581
4590
4582 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4591 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4583 alignment and color management. All 3 prompt subsystems now
4592 alignment and color management. All 3 prompt subsystems now
4584 inherit from BasePrompt.
4593 inherit from BasePrompt.
4585
4594
4586 * tools/release: updates for windows installer build and tag rpms
4595 * tools/release: updates for windows installer build and tag rpms
4587 with python version (since paths are fixed).
4596 with python version (since paths are fixed).
4588
4597
4589 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4598 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4590 which will become eventually obsolete. Also fixed the default
4599 which will become eventually obsolete. Also fixed the default
4591 prompt_in2 to use \D, so at least new users start with the correct
4600 prompt_in2 to use \D, so at least new users start with the correct
4592 defaults.
4601 defaults.
4593 WARNING: Users with existing ipythonrc files will need to apply
4602 WARNING: Users with existing ipythonrc files will need to apply
4594 this fix manually!
4603 this fix manually!
4595
4604
4596 * setup.py: make windows installer (.exe). This is finally the
4605 * setup.py: make windows installer (.exe). This is finally the
4597 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4606 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4598 which I hadn't included because it required Python 2.3 (or recent
4607 which I hadn't included because it required Python 2.3 (or recent
4599 distutils).
4608 distutils).
4600
4609
4601 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4610 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4602 usage of new '\D' escape.
4611 usage of new '\D' escape.
4603
4612
4604 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4613 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4605 lacks os.getuid())
4614 lacks os.getuid())
4606 (CachedOutput.set_colors): Added the ability to turn coloring
4615 (CachedOutput.set_colors): Added the ability to turn coloring
4607 on/off with @colors even for manually defined prompt colors. It
4616 on/off with @colors even for manually defined prompt colors. It
4608 uses a nasty global, but it works safely and via the generic color
4617 uses a nasty global, but it works safely and via the generic color
4609 handling mechanism.
4618 handling mechanism.
4610 (Prompt2.__init__): Introduced new escape '\D' for continuation
4619 (Prompt2.__init__): Introduced new escape '\D' for continuation
4611 prompts. It represents the counter ('\#') as dots.
4620 prompts. It represents the counter ('\#') as dots.
4612 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4621 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4613 need to update their ipythonrc files and replace '%n' with '\D' in
4622 need to update their ipythonrc files and replace '%n' with '\D' in
4614 their prompt_in2 settings everywhere. Sorry, but there's
4623 their prompt_in2 settings everywhere. Sorry, but there's
4615 otherwise no clean way to get all prompts to properly align. The
4624 otherwise no clean way to get all prompts to properly align. The
4616 ipythonrc shipped with IPython has been updated.
4625 ipythonrc shipped with IPython has been updated.
4617
4626
4618 2004-06-07 Fernando Perez <fperez@colorado.edu>
4627 2004-06-07 Fernando Perez <fperez@colorado.edu>
4619
4628
4620 * setup.py (isfile): Pass local_icons option to latex2html, so the
4629 * setup.py (isfile): Pass local_icons option to latex2html, so the
4621 resulting HTML file is self-contained. Thanks to
4630 resulting HTML file is self-contained. Thanks to
4622 dryice-AT-liu.com.cn for the tip.
4631 dryice-AT-liu.com.cn for the tip.
4623
4632
4624 * pysh.py: I created a new profile 'shell', which implements a
4633 * pysh.py: I created a new profile 'shell', which implements a
4625 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4634 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4626 system shell, nor will it become one anytime soon. It's mainly
4635 system shell, nor will it become one anytime soon. It's mainly
4627 meant to illustrate the use of the new flexible bash-like prompts.
4636 meant to illustrate the use of the new flexible bash-like prompts.
4628 I guess it could be used by hardy souls for true shell management,
4637 I guess it could be used by hardy souls for true shell management,
4629 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4638 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4630 profile. This uses the InterpreterExec extension provided by
4639 profile. This uses the InterpreterExec extension provided by
4631 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4640 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4632
4641
4633 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4642 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4634 auto-align itself with the length of the previous input prompt
4643 auto-align itself with the length of the previous input prompt
4635 (taking into account the invisible color escapes).
4644 (taking into account the invisible color escapes).
4636 (CachedOutput.__init__): Large restructuring of this class. Now
4645 (CachedOutput.__init__): Large restructuring of this class. Now
4637 all three prompts (primary1, primary2, output) are proper objects,
4646 all three prompts (primary1, primary2, output) are proper objects,
4638 managed by the 'parent' CachedOutput class. The code is still a
4647 managed by the 'parent' CachedOutput class. The code is still a
4639 bit hackish (all prompts share state via a pointer to the cache),
4648 bit hackish (all prompts share state via a pointer to the cache),
4640 but it's overall far cleaner than before.
4649 but it's overall far cleaner than before.
4641
4650
4642 * IPython/genutils.py (getoutputerror): modified to add verbose,
4651 * IPython/genutils.py (getoutputerror): modified to add verbose,
4643 debug and header options. This makes the interface of all getout*
4652 debug and header options. This makes the interface of all getout*
4644 functions uniform.
4653 functions uniform.
4645 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4654 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4646
4655
4647 * IPython/Magic.py (Magic.default_option): added a function to
4656 * IPython/Magic.py (Magic.default_option): added a function to
4648 allow registering default options for any magic command. This
4657 allow registering default options for any magic command. This
4649 makes it easy to have profiles which customize the magics globally
4658 makes it easy to have profiles which customize the magics globally
4650 for a certain use. The values set through this function are
4659 for a certain use. The values set through this function are
4651 picked up by the parse_options() method, which all magics should
4660 picked up by the parse_options() method, which all magics should
4652 use to parse their options.
4661 use to parse their options.
4653
4662
4654 * IPython/genutils.py (warn): modified the warnings framework to
4663 * IPython/genutils.py (warn): modified the warnings framework to
4655 use the Term I/O class. I'm trying to slowly unify all of
4664 use the Term I/O class. I'm trying to slowly unify all of
4656 IPython's I/O operations to pass through Term.
4665 IPython's I/O operations to pass through Term.
4657
4666
4658 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4667 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4659 the secondary prompt to correctly match the length of the primary
4668 the secondary prompt to correctly match the length of the primary
4660 one for any prompt. Now multi-line code will properly line up
4669 one for any prompt. Now multi-line code will properly line up
4661 even for path dependent prompts, such as the new ones available
4670 even for path dependent prompts, such as the new ones available
4662 via the prompt_specials.
4671 via the prompt_specials.
4663
4672
4664 2004-06-06 Fernando Perez <fperez@colorado.edu>
4673 2004-06-06 Fernando Perez <fperez@colorado.edu>
4665
4674
4666 * IPython/Prompts.py (prompt_specials): Added the ability to have
4675 * IPython/Prompts.py (prompt_specials): Added the ability to have
4667 bash-like special sequences in the prompts, which get
4676 bash-like special sequences in the prompts, which get
4668 automatically expanded. Things like hostname, current working
4677 automatically expanded. Things like hostname, current working
4669 directory and username are implemented already, but it's easy to
4678 directory and username are implemented already, but it's easy to
4670 add more in the future. Thanks to a patch by W.J. van der Laan
4679 add more in the future. Thanks to a patch by W.J. van der Laan
4671 <gnufnork-AT-hetdigitalegat.nl>
4680 <gnufnork-AT-hetdigitalegat.nl>
4672 (prompt_specials): Added color support for prompt strings, so
4681 (prompt_specials): Added color support for prompt strings, so
4673 users can define arbitrary color setups for their prompts.
4682 users can define arbitrary color setups for their prompts.
4674
4683
4675 2004-06-05 Fernando Perez <fperez@colorado.edu>
4684 2004-06-05 Fernando Perez <fperez@colorado.edu>
4676
4685
4677 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4686 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4678 code to load Gary Bishop's readline and configure it
4687 code to load Gary Bishop's readline and configure it
4679 automatically. Thanks to Gary for help on this.
4688 automatically. Thanks to Gary for help on this.
4680
4689
4681 2004-06-01 Fernando Perez <fperez@colorado.edu>
4690 2004-06-01 Fernando Perez <fperez@colorado.edu>
4682
4691
4683 * IPython/Logger.py (Logger.create_log): fix bug for logging
4692 * IPython/Logger.py (Logger.create_log): fix bug for logging
4684 with no filename (previous fix was incomplete).
4693 with no filename (previous fix was incomplete).
4685
4694
4686 2004-05-25 Fernando Perez <fperez@colorado.edu>
4695 2004-05-25 Fernando Perez <fperez@colorado.edu>
4687
4696
4688 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4697 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4689 parens would get passed to the shell.
4698 parens would get passed to the shell.
4690
4699
4691 2004-05-20 Fernando Perez <fperez@colorado.edu>
4700 2004-05-20 Fernando Perez <fperez@colorado.edu>
4692
4701
4693 * IPython/Magic.py (Magic.magic_prun): changed default profile
4702 * IPython/Magic.py (Magic.magic_prun): changed default profile
4694 sort order to 'time' (the more common profiling need).
4703 sort order to 'time' (the more common profiling need).
4695
4704
4696 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4705 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4697 so that source code shown is guaranteed in sync with the file on
4706 so that source code shown is guaranteed in sync with the file on
4698 disk (also changed in psource). Similar fix to the one for
4707 disk (also changed in psource). Similar fix to the one for
4699 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4708 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4700 <yann.ledu-AT-noos.fr>.
4709 <yann.ledu-AT-noos.fr>.
4701
4710
4702 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4711 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4703 with a single option would not be correctly parsed. Closes
4712 with a single option would not be correctly parsed. Closes
4704 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4713 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4705 introduced in 0.6.0 (on 2004-05-06).
4714 introduced in 0.6.0 (on 2004-05-06).
4706
4715
4707 2004-05-13 *** Released version 0.6.0
4716 2004-05-13 *** Released version 0.6.0
4708
4717
4709 2004-05-13 Fernando Perez <fperez@colorado.edu>
4718 2004-05-13 Fernando Perez <fperez@colorado.edu>
4710
4719
4711 * debian/: Added debian/ directory to CVS, so that debian support
4720 * debian/: Added debian/ directory to CVS, so that debian support
4712 is publicly accessible. The debian package is maintained by Jack
4721 is publicly accessible. The debian package is maintained by Jack
4713 Moffit <jack-AT-xiph.org>.
4722 Moffit <jack-AT-xiph.org>.
4714
4723
4715 * Documentation: included the notes about an ipython-based system
4724 * Documentation: included the notes about an ipython-based system
4716 shell (the hypothetical 'pysh') into the new_design.pdf document,
4725 shell (the hypothetical 'pysh') into the new_design.pdf document,
4717 so that these ideas get distributed to users along with the
4726 so that these ideas get distributed to users along with the
4718 official documentation.
4727 official documentation.
4719
4728
4720 2004-05-10 Fernando Perez <fperez@colorado.edu>
4729 2004-05-10 Fernando Perez <fperez@colorado.edu>
4721
4730
4722 * IPython/Logger.py (Logger.create_log): fix recently introduced
4731 * IPython/Logger.py (Logger.create_log): fix recently introduced
4723 bug (misindented line) where logstart would fail when not given an
4732 bug (misindented line) where logstart would fail when not given an
4724 explicit filename.
4733 explicit filename.
4725
4734
4726 2004-05-09 Fernando Perez <fperez@colorado.edu>
4735 2004-05-09 Fernando Perez <fperez@colorado.edu>
4727
4736
4728 * IPython/Magic.py (Magic.parse_options): skip system call when
4737 * IPython/Magic.py (Magic.parse_options): skip system call when
4729 there are no options to look for. Faster, cleaner for the common
4738 there are no options to look for. Faster, cleaner for the common
4730 case.
4739 case.
4731
4740
4732 * Documentation: many updates to the manual: describing Windows
4741 * Documentation: many updates to the manual: describing Windows
4733 support better, Gnuplot updates, credits, misc small stuff. Also
4742 support better, Gnuplot updates, credits, misc small stuff. Also
4734 updated the new_design doc a bit.
4743 updated the new_design doc a bit.
4735
4744
4736 2004-05-06 *** Released version 0.6.0.rc1
4745 2004-05-06 *** Released version 0.6.0.rc1
4737
4746
4738 2004-05-06 Fernando Perez <fperez@colorado.edu>
4747 2004-05-06 Fernando Perez <fperez@colorado.edu>
4739
4748
4740 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4749 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4741 operations to use the vastly more efficient list/''.join() method.
4750 operations to use the vastly more efficient list/''.join() method.
4742 (FormattedTB.text): Fix
4751 (FormattedTB.text): Fix
4743 http://www.scipy.net/roundup/ipython/issue12 - exception source
4752 http://www.scipy.net/roundup/ipython/issue12 - exception source
4744 extract not updated after reload. Thanks to Mike Salib
4753 extract not updated after reload. Thanks to Mike Salib
4745 <msalib-AT-mit.edu> for pinning the source of the problem.
4754 <msalib-AT-mit.edu> for pinning the source of the problem.
4746 Fortunately, the solution works inside ipython and doesn't require
4755 Fortunately, the solution works inside ipython and doesn't require
4747 any changes to python proper.
4756 any changes to python proper.
4748
4757
4749 * IPython/Magic.py (Magic.parse_options): Improved to process the
4758 * IPython/Magic.py (Magic.parse_options): Improved to process the
4750 argument list as a true shell would (by actually using the
4759 argument list as a true shell would (by actually using the
4751 underlying system shell). This way, all @magics automatically get
4760 underlying system shell). This way, all @magics automatically get
4752 shell expansion for variables. Thanks to a comment by Alex
4761 shell expansion for variables. Thanks to a comment by Alex
4753 Schmolck.
4762 Schmolck.
4754
4763
4755 2004-04-04 Fernando Perez <fperez@colorado.edu>
4764 2004-04-04 Fernando Perez <fperez@colorado.edu>
4756
4765
4757 * IPython/iplib.py (InteractiveShell.interact): Added a special
4766 * IPython/iplib.py (InteractiveShell.interact): Added a special
4758 trap for a debugger quit exception, which is basically impossible
4767 trap for a debugger quit exception, which is basically impossible
4759 to handle by normal mechanisms, given what pdb does to the stack.
4768 to handle by normal mechanisms, given what pdb does to the stack.
4760 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4769 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4761
4770
4762 2004-04-03 Fernando Perez <fperez@colorado.edu>
4771 2004-04-03 Fernando Perez <fperez@colorado.edu>
4763
4772
4764 * IPython/genutils.py (Term): Standardized the names of the Term
4773 * IPython/genutils.py (Term): Standardized the names of the Term
4765 class streams to cin/cout/cerr, following C++ naming conventions
4774 class streams to cin/cout/cerr, following C++ naming conventions
4766 (I can't use in/out/err because 'in' is not a valid attribute
4775 (I can't use in/out/err because 'in' is not a valid attribute
4767 name).
4776 name).
4768
4777
4769 * IPython/iplib.py (InteractiveShell.interact): don't increment
4778 * IPython/iplib.py (InteractiveShell.interact): don't increment
4770 the prompt if there's no user input. By Daniel 'Dang' Griffith
4779 the prompt if there's no user input. By Daniel 'Dang' Griffith
4771 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4780 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4772 Francois Pinard.
4781 Francois Pinard.
4773
4782
4774 2004-04-02 Fernando Perez <fperez@colorado.edu>
4783 2004-04-02 Fernando Perez <fperez@colorado.edu>
4775
4784
4776 * IPython/genutils.py (Stream.__init__): Modified to survive at
4785 * IPython/genutils.py (Stream.__init__): Modified to survive at
4777 least importing in contexts where stdin/out/err aren't true file
4786 least importing in contexts where stdin/out/err aren't true file
4778 objects, such as PyCrust (they lack fileno() and mode). However,
4787 objects, such as PyCrust (they lack fileno() and mode). However,
4779 the recovery facilities which rely on these things existing will
4788 the recovery facilities which rely on these things existing will
4780 not work.
4789 not work.
4781
4790
4782 2004-04-01 Fernando Perez <fperez@colorado.edu>
4791 2004-04-01 Fernando Perez <fperez@colorado.edu>
4783
4792
4784 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4793 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4785 use the new getoutputerror() function, so it properly
4794 use the new getoutputerror() function, so it properly
4786 distinguishes stdout/err.
4795 distinguishes stdout/err.
4787
4796
4788 * IPython/genutils.py (getoutputerror): added a function to
4797 * IPython/genutils.py (getoutputerror): added a function to
4789 capture separately the standard output and error of a command.
4798 capture separately the standard output and error of a command.
4790 After a comment from dang on the mailing lists. This code is
4799 After a comment from dang on the mailing lists. This code is
4791 basically a modified version of commands.getstatusoutput(), from
4800 basically a modified version of commands.getstatusoutput(), from
4792 the standard library.
4801 the standard library.
4793
4802
4794 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4803 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4795 '!!' as a special syntax (shorthand) to access @sx.
4804 '!!' as a special syntax (shorthand) to access @sx.
4796
4805
4797 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4806 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4798 command and return its output as a list split on '\n'.
4807 command and return its output as a list split on '\n'.
4799
4808
4800 2004-03-31 Fernando Perez <fperez@colorado.edu>
4809 2004-03-31 Fernando Perez <fperez@colorado.edu>
4801
4810
4802 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4811 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4803 method to dictionaries used as FakeModule instances if they lack
4812 method to dictionaries used as FakeModule instances if they lack
4804 it. At least pydoc in python2.3 breaks for runtime-defined
4813 it. At least pydoc in python2.3 breaks for runtime-defined
4805 functions without this hack. At some point I need to _really_
4814 functions without this hack. At some point I need to _really_
4806 understand what FakeModule is doing, because it's a gross hack.
4815 understand what FakeModule is doing, because it's a gross hack.
4807 But it solves Arnd's problem for now...
4816 But it solves Arnd's problem for now...
4808
4817
4809 2004-02-27 Fernando Perez <fperez@colorado.edu>
4818 2004-02-27 Fernando Perez <fperez@colorado.edu>
4810
4819
4811 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4820 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4812 mode would behave erratically. Also increased the number of
4821 mode would behave erratically. Also increased the number of
4813 possible logs in rotate mod to 999. Thanks to Rod Holland
4822 possible logs in rotate mod to 999. Thanks to Rod Holland
4814 <rhh@StructureLABS.com> for the report and fixes.
4823 <rhh@StructureLABS.com> for the report and fixes.
4815
4824
4816 2004-02-26 Fernando Perez <fperez@colorado.edu>
4825 2004-02-26 Fernando Perez <fperez@colorado.edu>
4817
4826
4818 * IPython/genutils.py (page): Check that the curses module really
4827 * IPython/genutils.py (page): Check that the curses module really
4819 has the initscr attribute before trying to use it. For some
4828 has the initscr attribute before trying to use it. For some
4820 reason, the Solaris curses module is missing this. I think this
4829 reason, the Solaris curses module is missing this. I think this
4821 should be considered a Solaris python bug, but I'm not sure.
4830 should be considered a Solaris python bug, but I'm not sure.
4822
4831
4823 2004-01-17 Fernando Perez <fperez@colorado.edu>
4832 2004-01-17 Fernando Perez <fperez@colorado.edu>
4824
4833
4825 * IPython/genutils.py (Stream.__init__): Changes to try to make
4834 * IPython/genutils.py (Stream.__init__): Changes to try to make
4826 ipython robust against stdin/out/err being closed by the user.
4835 ipython robust against stdin/out/err being closed by the user.
4827 This is 'user error' (and blocks a normal python session, at least
4836 This is 'user error' (and blocks a normal python session, at least
4828 the stdout case). However, Ipython should be able to survive such
4837 the stdout case). However, Ipython should be able to survive such
4829 instances of abuse as gracefully as possible. To simplify the
4838 instances of abuse as gracefully as possible. To simplify the
4830 coding and maintain compatibility with Gary Bishop's Term
4839 coding and maintain compatibility with Gary Bishop's Term
4831 contributions, I've made use of classmethods for this. I think
4840 contributions, I've made use of classmethods for this. I think
4832 this introduces a dependency on python 2.2.
4841 this introduces a dependency on python 2.2.
4833
4842
4834 2004-01-13 Fernando Perez <fperez@colorado.edu>
4843 2004-01-13 Fernando Perez <fperez@colorado.edu>
4835
4844
4836 * IPython/numutils.py (exp_safe): simplified the code a bit and
4845 * IPython/numutils.py (exp_safe): simplified the code a bit and
4837 removed the need for importing the kinds module altogether.
4846 removed the need for importing the kinds module altogether.
4838
4847
4839 2004-01-06 Fernando Perez <fperez@colorado.edu>
4848 2004-01-06 Fernando Perez <fperez@colorado.edu>
4840
4849
4841 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4850 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4842 a magic function instead, after some community feedback. No
4851 a magic function instead, after some community feedback. No
4843 special syntax will exist for it, but its name is deliberately
4852 special syntax will exist for it, but its name is deliberately
4844 very short.
4853 very short.
4845
4854
4846 2003-12-20 Fernando Perez <fperez@colorado.edu>
4855 2003-12-20 Fernando Perez <fperez@colorado.edu>
4847
4856
4848 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4857 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4849 new functionality, to automagically assign the result of a shell
4858 new functionality, to automagically assign the result of a shell
4850 command to a variable. I'll solicit some community feedback on
4859 command to a variable. I'll solicit some community feedback on
4851 this before making it permanent.
4860 this before making it permanent.
4852
4861
4853 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4862 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4854 requested about callables for which inspect couldn't obtain a
4863 requested about callables for which inspect couldn't obtain a
4855 proper argspec. Thanks to a crash report sent by Etienne
4864 proper argspec. Thanks to a crash report sent by Etienne
4856 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4865 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4857
4866
4858 2003-12-09 Fernando Perez <fperez@colorado.edu>
4867 2003-12-09 Fernando Perez <fperez@colorado.edu>
4859
4868
4860 * IPython/genutils.py (page): patch for the pager to work across
4869 * IPython/genutils.py (page): patch for the pager to work across
4861 various versions of Windows. By Gary Bishop.
4870 various versions of Windows. By Gary Bishop.
4862
4871
4863 2003-12-04 Fernando Perez <fperez@colorado.edu>
4872 2003-12-04 Fernando Perez <fperez@colorado.edu>
4864
4873
4865 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4874 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4866 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4875 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4867 While I tested this and it looks ok, there may still be corner
4876 While I tested this and it looks ok, there may still be corner
4868 cases I've missed.
4877 cases I've missed.
4869
4878
4870 2003-12-01 Fernando Perez <fperez@colorado.edu>
4879 2003-12-01 Fernando Perez <fperez@colorado.edu>
4871
4880
4872 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4881 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4873 where a line like 'p,q=1,2' would fail because the automagic
4882 where a line like 'p,q=1,2' would fail because the automagic
4874 system would be triggered for @p.
4883 system would be triggered for @p.
4875
4884
4876 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4885 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4877 cleanups, code unmodified.
4886 cleanups, code unmodified.
4878
4887
4879 * IPython/genutils.py (Term): added a class for IPython to handle
4888 * IPython/genutils.py (Term): added a class for IPython to handle
4880 output. In most cases it will just be a proxy for stdout/err, but
4889 output. In most cases it will just be a proxy for stdout/err, but
4881 having this allows modifications to be made for some platforms,
4890 having this allows modifications to be made for some platforms,
4882 such as handling color escapes under Windows. All of this code
4891 such as handling color escapes under Windows. All of this code
4883 was contributed by Gary Bishop, with minor modifications by me.
4892 was contributed by Gary Bishop, with minor modifications by me.
4884 The actual changes affect many files.
4893 The actual changes affect many files.
4885
4894
4886 2003-11-30 Fernando Perez <fperez@colorado.edu>
4895 2003-11-30 Fernando Perez <fperez@colorado.edu>
4887
4896
4888 * IPython/iplib.py (file_matches): new completion code, courtesy
4897 * IPython/iplib.py (file_matches): new completion code, courtesy
4889 of Jeff Collins. This enables filename completion again under
4898 of Jeff Collins. This enables filename completion again under
4890 python 2.3, which disabled it at the C level.
4899 python 2.3, which disabled it at the C level.
4891
4900
4892 2003-11-11 Fernando Perez <fperez@colorado.edu>
4901 2003-11-11 Fernando Perez <fperez@colorado.edu>
4893
4902
4894 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4903 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4895 for Numeric.array(map(...)), but often convenient.
4904 for Numeric.array(map(...)), but often convenient.
4896
4905
4897 2003-11-05 Fernando Perez <fperez@colorado.edu>
4906 2003-11-05 Fernando Perez <fperez@colorado.edu>
4898
4907
4899 * IPython/numutils.py (frange): Changed a call from int() to
4908 * IPython/numutils.py (frange): Changed a call from int() to
4900 int(round()) to prevent a problem reported with arange() in the
4909 int(round()) to prevent a problem reported with arange() in the
4901 numpy list.
4910 numpy list.
4902
4911
4903 2003-10-06 Fernando Perez <fperez@colorado.edu>
4912 2003-10-06 Fernando Perez <fperez@colorado.edu>
4904
4913
4905 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4914 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4906 prevent crashes if sys lacks an argv attribute (it happens with
4915 prevent crashes if sys lacks an argv attribute (it happens with
4907 embedded interpreters which build a bare-bones sys module).
4916 embedded interpreters which build a bare-bones sys module).
4908 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4917 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4909
4918
4910 2003-09-24 Fernando Perez <fperez@colorado.edu>
4919 2003-09-24 Fernando Perez <fperez@colorado.edu>
4911
4920
4912 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4921 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4913 to protect against poorly written user objects where __getattr__
4922 to protect against poorly written user objects where __getattr__
4914 raises exceptions other than AttributeError. Thanks to a bug
4923 raises exceptions other than AttributeError. Thanks to a bug
4915 report by Oliver Sander <osander-AT-gmx.de>.
4924 report by Oliver Sander <osander-AT-gmx.de>.
4916
4925
4917 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4926 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4918 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4927 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4919
4928
4920 2003-09-09 Fernando Perez <fperez@colorado.edu>
4929 2003-09-09 Fernando Perez <fperez@colorado.edu>
4921
4930
4922 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4931 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4923 unpacking a list whith a callable as first element would
4932 unpacking a list whith a callable as first element would
4924 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4933 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4925 Collins.
4934 Collins.
4926
4935
4927 2003-08-25 *** Released version 0.5.0
4936 2003-08-25 *** Released version 0.5.0
4928
4937
4929 2003-08-22 Fernando Perez <fperez@colorado.edu>
4938 2003-08-22 Fernando Perez <fperez@colorado.edu>
4930
4939
4931 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4940 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4932 improperly defined user exceptions. Thanks to feedback from Mark
4941 improperly defined user exceptions. Thanks to feedback from Mark
4933 Russell <mrussell-AT-verio.net>.
4942 Russell <mrussell-AT-verio.net>.
4934
4943
4935 2003-08-20 Fernando Perez <fperez@colorado.edu>
4944 2003-08-20 Fernando Perez <fperez@colorado.edu>
4936
4945
4937 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4946 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4938 printing so that it would print multi-line string forms starting
4947 printing so that it would print multi-line string forms starting
4939 with a new line. This way the formatting is better respected for
4948 with a new line. This way the formatting is better respected for
4940 objects which work hard to make nice string forms.
4949 objects which work hard to make nice string forms.
4941
4950
4942 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4951 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4943 autocall would overtake data access for objects with both
4952 autocall would overtake data access for objects with both
4944 __getitem__ and __call__.
4953 __getitem__ and __call__.
4945
4954
4946 2003-08-19 *** Released version 0.5.0-rc1
4955 2003-08-19 *** Released version 0.5.0-rc1
4947
4956
4948 2003-08-19 Fernando Perez <fperez@colorado.edu>
4957 2003-08-19 Fernando Perez <fperez@colorado.edu>
4949
4958
4950 * IPython/deep_reload.py (load_tail): single tiny change here
4959 * IPython/deep_reload.py (load_tail): single tiny change here
4951 seems to fix the long-standing bug of dreload() failing to work
4960 seems to fix the long-standing bug of dreload() failing to work
4952 for dotted names. But this module is pretty tricky, so I may have
4961 for dotted names. But this module is pretty tricky, so I may have
4953 missed some subtlety. Needs more testing!.
4962 missed some subtlety. Needs more testing!.
4954
4963
4955 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4964 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4956 exceptions which have badly implemented __str__ methods.
4965 exceptions which have badly implemented __str__ methods.
4957 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4966 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4958 which I've been getting reports about from Python 2.3 users. I
4967 which I've been getting reports about from Python 2.3 users. I
4959 wish I had a simple test case to reproduce the problem, so I could
4968 wish I had a simple test case to reproduce the problem, so I could
4960 either write a cleaner workaround or file a bug report if
4969 either write a cleaner workaround or file a bug report if
4961 necessary.
4970 necessary.
4962
4971
4963 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4972 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4964 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4973 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4965 a bug report by Tjabo Kloppenburg.
4974 a bug report by Tjabo Kloppenburg.
4966
4975
4967 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4976 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4968 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4977 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4969 seems rather unstable. Thanks to a bug report by Tjabo
4978 seems rather unstable. Thanks to a bug report by Tjabo
4970 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4979 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4971
4980
4972 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4981 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4973 this out soon because of the critical fixes in the inner loop for
4982 this out soon because of the critical fixes in the inner loop for
4974 generators.
4983 generators.
4975
4984
4976 * IPython/Magic.py (Magic.getargspec): removed. This (and
4985 * IPython/Magic.py (Magic.getargspec): removed. This (and
4977 _get_def) have been obsoleted by OInspect for a long time, I
4986 _get_def) have been obsoleted by OInspect for a long time, I
4978 hadn't noticed that they were dead code.
4987 hadn't noticed that they were dead code.
4979 (Magic._ofind): restored _ofind functionality for a few literals
4988 (Magic._ofind): restored _ofind functionality for a few literals
4980 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4989 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4981 for things like "hello".capitalize?, since that would require a
4990 for things like "hello".capitalize?, since that would require a
4982 potentially dangerous eval() again.
4991 potentially dangerous eval() again.
4983
4992
4984 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4993 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4985 logic a bit more to clean up the escapes handling and minimize the
4994 logic a bit more to clean up the escapes handling and minimize the
4986 use of _ofind to only necessary cases. The interactive 'feel' of
4995 use of _ofind to only necessary cases. The interactive 'feel' of
4987 IPython should have improved quite a bit with the changes in
4996 IPython should have improved quite a bit with the changes in
4988 _prefilter and _ofind (besides being far safer than before).
4997 _prefilter and _ofind (besides being far safer than before).
4989
4998
4990 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4999 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4991 obscure, never reported). Edit would fail to find the object to
5000 obscure, never reported). Edit would fail to find the object to
4992 edit under some circumstances.
5001 edit under some circumstances.
4993 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
5002 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4994 which were causing double-calling of generators. Those eval calls
5003 which were causing double-calling of generators. Those eval calls
4995 were _very_ dangerous, since code with side effects could be
5004 were _very_ dangerous, since code with side effects could be
4996 triggered. As they say, 'eval is evil'... These were the
5005 triggered. As they say, 'eval is evil'... These were the
4997 nastiest evals in IPython. Besides, _ofind is now far simpler,
5006 nastiest evals in IPython. Besides, _ofind is now far simpler,
4998 and it should also be quite a bit faster. Its use of inspect is
5007 and it should also be quite a bit faster. Its use of inspect is
4999 also safer, so perhaps some of the inspect-related crashes I've
5008 also safer, so perhaps some of the inspect-related crashes I've
5000 seen lately with Python 2.3 might be taken care of. That will
5009 seen lately with Python 2.3 might be taken care of. That will
5001 need more testing.
5010 need more testing.
5002
5011
5003 2003-08-17 Fernando Perez <fperez@colorado.edu>
5012 2003-08-17 Fernando Perez <fperez@colorado.edu>
5004
5013
5005 * IPython/iplib.py (InteractiveShell._prefilter): significant
5014 * IPython/iplib.py (InteractiveShell._prefilter): significant
5006 simplifications to the logic for handling user escapes. Faster
5015 simplifications to the logic for handling user escapes. Faster
5007 and simpler code.
5016 and simpler code.
5008
5017
5009 2003-08-14 Fernando Perez <fperez@colorado.edu>
5018 2003-08-14 Fernando Perez <fperez@colorado.edu>
5010
5019
5011 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
5020 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
5012 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
5021 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
5013 but it should be quite a bit faster. And the recursive version
5022 but it should be quite a bit faster. And the recursive version
5014 generated O(log N) intermediate storage for all rank>1 arrays,
5023 generated O(log N) intermediate storage for all rank>1 arrays,
5015 even if they were contiguous.
5024 even if they were contiguous.
5016 (l1norm): Added this function.
5025 (l1norm): Added this function.
5017 (norm): Added this function for arbitrary norms (including
5026 (norm): Added this function for arbitrary norms (including
5018 l-infinity). l1 and l2 are still special cases for convenience
5027 l-infinity). l1 and l2 are still special cases for convenience
5019 and speed.
5028 and speed.
5020
5029
5021 2003-08-03 Fernando Perez <fperez@colorado.edu>
5030 2003-08-03 Fernando Perez <fperez@colorado.edu>
5022
5031
5023 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
5032 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
5024 exceptions, which now raise PendingDeprecationWarnings in Python
5033 exceptions, which now raise PendingDeprecationWarnings in Python
5025 2.3. There were some in Magic and some in Gnuplot2.
5034 2.3. There were some in Magic and some in Gnuplot2.
5026
5035
5027 2003-06-30 Fernando Perez <fperez@colorado.edu>
5036 2003-06-30 Fernando Perez <fperez@colorado.edu>
5028
5037
5029 * IPython/genutils.py (page): modified to call curses only for
5038 * IPython/genutils.py (page): modified to call curses only for
5030 terminals where TERM=='xterm'. After problems under many other
5039 terminals where TERM=='xterm'. After problems under many other
5031 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
5040 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
5032
5041
5033 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
5042 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
5034 would be triggered when readline was absent. This was just an old
5043 would be triggered when readline was absent. This was just an old
5035 debugging statement I'd forgotten to take out.
5044 debugging statement I'd forgotten to take out.
5036
5045
5037 2003-06-20 Fernando Perez <fperez@colorado.edu>
5046 2003-06-20 Fernando Perez <fperez@colorado.edu>
5038
5047
5039 * IPython/genutils.py (clock): modified to return only user time
5048 * IPython/genutils.py (clock): modified to return only user time
5040 (not counting system time), after a discussion on scipy. While
5049 (not counting system time), after a discussion on scipy. While
5041 system time may be a useful quantity occasionally, it may much
5050 system time may be a useful quantity occasionally, it may much
5042 more easily be skewed by occasional swapping or other similar
5051 more easily be skewed by occasional swapping or other similar
5043 activity.
5052 activity.
5044
5053
5045 2003-06-05 Fernando Perez <fperez@colorado.edu>
5054 2003-06-05 Fernando Perez <fperez@colorado.edu>
5046
5055
5047 * IPython/numutils.py (identity): new function, for building
5056 * IPython/numutils.py (identity): new function, for building
5048 arbitrary rank Kronecker deltas (mostly backwards compatible with
5057 arbitrary rank Kronecker deltas (mostly backwards compatible with
5049 Numeric.identity)
5058 Numeric.identity)
5050
5059
5051 2003-06-03 Fernando Perez <fperez@colorado.edu>
5060 2003-06-03 Fernando Perez <fperez@colorado.edu>
5052
5061
5053 * IPython/iplib.py (InteractiveShell.handle_magic): protect
5062 * IPython/iplib.py (InteractiveShell.handle_magic): protect
5054 arguments passed to magics with spaces, to allow trailing '\' to
5063 arguments passed to magics with spaces, to allow trailing '\' to
5055 work normally (mainly for Windows users).
5064 work normally (mainly for Windows users).
5056
5065
5057 2003-05-29 Fernando Perez <fperez@colorado.edu>
5066 2003-05-29 Fernando Perez <fperez@colorado.edu>
5058
5067
5059 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5068 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5060 instead of pydoc.help. This fixes a bizarre behavior where
5069 instead of pydoc.help. This fixes a bizarre behavior where
5061 printing '%s' % locals() would trigger the help system. Now
5070 printing '%s' % locals() would trigger the help system. Now
5062 ipython behaves like normal python does.
5071 ipython behaves like normal python does.
5063
5072
5064 Note that if one does 'from pydoc import help', the bizarre
5073 Note that if one does 'from pydoc import help', the bizarre
5065 behavior returns, but this will also happen in normal python, so
5074 behavior returns, but this will also happen in normal python, so
5066 it's not an ipython bug anymore (it has to do with how pydoc.help
5075 it's not an ipython bug anymore (it has to do with how pydoc.help
5067 is implemented).
5076 is implemented).
5068
5077
5069 2003-05-22 Fernando Perez <fperez@colorado.edu>
5078 2003-05-22 Fernando Perez <fperez@colorado.edu>
5070
5079
5071 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5080 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5072 return [] instead of None when nothing matches, also match to end
5081 return [] instead of None when nothing matches, also match to end
5073 of line. Patch by Gary Bishop.
5082 of line. Patch by Gary Bishop.
5074
5083
5075 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5084 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5076 protection as before, for files passed on the command line. This
5085 protection as before, for files passed on the command line. This
5077 prevents the CrashHandler from kicking in if user files call into
5086 prevents the CrashHandler from kicking in if user files call into
5078 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5087 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5079 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5088 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5080
5089
5081 2003-05-20 *** Released version 0.4.0
5090 2003-05-20 *** Released version 0.4.0
5082
5091
5083 2003-05-20 Fernando Perez <fperez@colorado.edu>
5092 2003-05-20 Fernando Perez <fperez@colorado.edu>
5084
5093
5085 * setup.py: added support for manpages. It's a bit hackish b/c of
5094 * setup.py: added support for manpages. It's a bit hackish b/c of
5086 a bug in the way the bdist_rpm distutils target handles gzipped
5095 a bug in the way the bdist_rpm distutils target handles gzipped
5087 manpages, but it works. After a patch by Jack.
5096 manpages, but it works. After a patch by Jack.
5088
5097
5089 2003-05-19 Fernando Perez <fperez@colorado.edu>
5098 2003-05-19 Fernando Perez <fperez@colorado.edu>
5090
5099
5091 * IPython/numutils.py: added a mockup of the kinds module, since
5100 * IPython/numutils.py: added a mockup of the kinds module, since
5092 it was recently removed from Numeric. This way, numutils will
5101 it was recently removed from Numeric. This way, numutils will
5093 work for all users even if they are missing kinds.
5102 work for all users even if they are missing kinds.
5094
5103
5095 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5104 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5096 failure, which can occur with SWIG-wrapped extensions. After a
5105 failure, which can occur with SWIG-wrapped extensions. After a
5097 crash report from Prabhu.
5106 crash report from Prabhu.
5098
5107
5099 2003-05-16 Fernando Perez <fperez@colorado.edu>
5108 2003-05-16 Fernando Perez <fperez@colorado.edu>
5100
5109
5101 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5110 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5102 protect ipython from user code which may call directly
5111 protect ipython from user code which may call directly
5103 sys.excepthook (this looks like an ipython crash to the user, even
5112 sys.excepthook (this looks like an ipython crash to the user, even
5104 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5113 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5105 This is especially important to help users of WxWindows, but may
5114 This is especially important to help users of WxWindows, but may
5106 also be useful in other cases.
5115 also be useful in other cases.
5107
5116
5108 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5117 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5109 an optional tb_offset to be specified, and to preserve exception
5118 an optional tb_offset to be specified, and to preserve exception
5110 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5119 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5111
5120
5112 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5121 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5113
5122
5114 2003-05-15 Fernando Perez <fperez@colorado.edu>
5123 2003-05-15 Fernando Perez <fperez@colorado.edu>
5115
5124
5116 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5125 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5117 installing for a new user under Windows.
5126 installing for a new user under Windows.
5118
5127
5119 2003-05-12 Fernando Perez <fperez@colorado.edu>
5128 2003-05-12 Fernando Perez <fperez@colorado.edu>
5120
5129
5121 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5130 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5122 handler for Emacs comint-based lines. Currently it doesn't do
5131 handler for Emacs comint-based lines. Currently it doesn't do
5123 much (but importantly, it doesn't update the history cache). In
5132 much (but importantly, it doesn't update the history cache). In
5124 the future it may be expanded if Alex needs more functionality
5133 the future it may be expanded if Alex needs more functionality
5125 there.
5134 there.
5126
5135
5127 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5136 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5128 info to crash reports.
5137 info to crash reports.
5129
5138
5130 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5139 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5131 just like Python's -c. Also fixed crash with invalid -color
5140 just like Python's -c. Also fixed crash with invalid -color
5132 option value at startup. Thanks to Will French
5141 option value at startup. Thanks to Will French
5133 <wfrench-AT-bestweb.net> for the bug report.
5142 <wfrench-AT-bestweb.net> for the bug report.
5134
5143
5135 2003-05-09 Fernando Perez <fperez@colorado.edu>
5144 2003-05-09 Fernando Perez <fperez@colorado.edu>
5136
5145
5137 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5146 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5138 to EvalDict (it's a mapping, after all) and simplified its code
5147 to EvalDict (it's a mapping, after all) and simplified its code
5139 quite a bit, after a nice discussion on c.l.py where Gustavo
5148 quite a bit, after a nice discussion on c.l.py where Gustavo
5140 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5149 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5141
5150
5142 2003-04-30 Fernando Perez <fperez@colorado.edu>
5151 2003-04-30 Fernando Perez <fperez@colorado.edu>
5143
5152
5144 * IPython/genutils.py (timings_out): modified it to reduce its
5153 * IPython/genutils.py (timings_out): modified it to reduce its
5145 overhead in the common reps==1 case.
5154 overhead in the common reps==1 case.
5146
5155
5147 2003-04-29 Fernando Perez <fperez@colorado.edu>
5156 2003-04-29 Fernando Perez <fperez@colorado.edu>
5148
5157
5149 * IPython/genutils.py (timings_out): Modified to use the resource
5158 * IPython/genutils.py (timings_out): Modified to use the resource
5150 module, which avoids the wraparound problems of time.clock().
5159 module, which avoids the wraparound problems of time.clock().
5151
5160
5152 2003-04-17 *** Released version 0.2.15pre4
5161 2003-04-17 *** Released version 0.2.15pre4
5153
5162
5154 2003-04-17 Fernando Perez <fperez@colorado.edu>
5163 2003-04-17 Fernando Perez <fperez@colorado.edu>
5155
5164
5156 * setup.py (scriptfiles): Split windows-specific stuff over to a
5165 * setup.py (scriptfiles): Split windows-specific stuff over to a
5157 separate file, in an attempt to have a Windows GUI installer.
5166 separate file, in an attempt to have a Windows GUI installer.
5158 That didn't work, but part of the groundwork is done.
5167 That didn't work, but part of the groundwork is done.
5159
5168
5160 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5169 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5161 indent/unindent with 4 spaces. Particularly useful in combination
5170 indent/unindent with 4 spaces. Particularly useful in combination
5162 with the new auto-indent option.
5171 with the new auto-indent option.
5163
5172
5164 2003-04-16 Fernando Perez <fperez@colorado.edu>
5173 2003-04-16 Fernando Perez <fperez@colorado.edu>
5165
5174
5166 * IPython/Magic.py: various replacements of self.rc for
5175 * IPython/Magic.py: various replacements of self.rc for
5167 self.shell.rc. A lot more remains to be done to fully disentangle
5176 self.shell.rc. A lot more remains to be done to fully disentangle
5168 this class from the main Shell class.
5177 this class from the main Shell class.
5169
5178
5170 * IPython/GnuplotRuntime.py: added checks for mouse support so
5179 * IPython/GnuplotRuntime.py: added checks for mouse support so
5171 that we don't try to enable it if the current gnuplot doesn't
5180 that we don't try to enable it if the current gnuplot doesn't
5172 really support it. Also added checks so that we don't try to
5181 really support it. Also added checks so that we don't try to
5173 enable persist under Windows (where Gnuplot doesn't recognize the
5182 enable persist under Windows (where Gnuplot doesn't recognize the
5174 option).
5183 option).
5175
5184
5176 * IPython/iplib.py (InteractiveShell.interact): Added optional
5185 * IPython/iplib.py (InteractiveShell.interact): Added optional
5177 auto-indenting code, after a patch by King C. Shu
5186 auto-indenting code, after a patch by King C. Shu
5178 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5187 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5179 get along well with pasting indented code. If I ever figure out
5188 get along well with pasting indented code. If I ever figure out
5180 how to make that part go well, it will become on by default.
5189 how to make that part go well, it will become on by default.
5181
5190
5182 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5191 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5183 crash ipython if there was an unmatched '%' in the user's prompt
5192 crash ipython if there was an unmatched '%' in the user's prompt
5184 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5193 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5185
5194
5186 * IPython/iplib.py (InteractiveShell.interact): removed the
5195 * IPython/iplib.py (InteractiveShell.interact): removed the
5187 ability to ask the user whether he wants to crash or not at the
5196 ability to ask the user whether he wants to crash or not at the
5188 'last line' exception handler. Calling functions at that point
5197 'last line' exception handler. Calling functions at that point
5189 changes the stack, and the error reports would have incorrect
5198 changes the stack, and the error reports would have incorrect
5190 tracebacks.
5199 tracebacks.
5191
5200
5192 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5201 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5193 pass through a peger a pretty-printed form of any object. After a
5202 pass through a peger a pretty-printed form of any object. After a
5194 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5203 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5195
5204
5196 2003-04-14 Fernando Perez <fperez@colorado.edu>
5205 2003-04-14 Fernando Perez <fperez@colorado.edu>
5197
5206
5198 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5207 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5199 all files in ~ would be modified at first install (instead of
5208 all files in ~ would be modified at first install (instead of
5200 ~/.ipython). This could be potentially disastrous, as the
5209 ~/.ipython). This could be potentially disastrous, as the
5201 modification (make line-endings native) could damage binary files.
5210 modification (make line-endings native) could damage binary files.
5202
5211
5203 2003-04-10 Fernando Perez <fperez@colorado.edu>
5212 2003-04-10 Fernando Perez <fperez@colorado.edu>
5204
5213
5205 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5214 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5206 handle only lines which are invalid python. This now means that
5215 handle only lines which are invalid python. This now means that
5207 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5216 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5208 for the bug report.
5217 for the bug report.
5209
5218
5210 2003-04-01 Fernando Perez <fperez@colorado.edu>
5219 2003-04-01 Fernando Perez <fperez@colorado.edu>
5211
5220
5212 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5221 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5213 where failing to set sys.last_traceback would crash pdb.pm().
5222 where failing to set sys.last_traceback would crash pdb.pm().
5214 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5223 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5215 report.
5224 report.
5216
5225
5217 2003-03-25 Fernando Perez <fperez@colorado.edu>
5226 2003-03-25 Fernando Perez <fperez@colorado.edu>
5218
5227
5219 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5228 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5220 before printing it (it had a lot of spurious blank lines at the
5229 before printing it (it had a lot of spurious blank lines at the
5221 end).
5230 end).
5222
5231
5223 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5232 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5224 output would be sent 21 times! Obviously people don't use this
5233 output would be sent 21 times! Obviously people don't use this
5225 too often, or I would have heard about it.
5234 too often, or I would have heard about it.
5226
5235
5227 2003-03-24 Fernando Perez <fperez@colorado.edu>
5236 2003-03-24 Fernando Perez <fperez@colorado.edu>
5228
5237
5229 * setup.py (scriptfiles): renamed the data_files parameter from
5238 * setup.py (scriptfiles): renamed the data_files parameter from
5230 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5239 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5231 for the patch.
5240 for the patch.
5232
5241
5233 2003-03-20 Fernando Perez <fperez@colorado.edu>
5242 2003-03-20 Fernando Perez <fperez@colorado.edu>
5234
5243
5235 * IPython/genutils.py (error): added error() and fatal()
5244 * IPython/genutils.py (error): added error() and fatal()
5236 functions.
5245 functions.
5237
5246
5238 2003-03-18 *** Released version 0.2.15pre3
5247 2003-03-18 *** Released version 0.2.15pre3
5239
5248
5240 2003-03-18 Fernando Perez <fperez@colorado.edu>
5249 2003-03-18 Fernando Perez <fperez@colorado.edu>
5241
5250
5242 * setupext/install_data_ext.py
5251 * setupext/install_data_ext.py
5243 (install_data_ext.initialize_options): Class contributed by Jack
5252 (install_data_ext.initialize_options): Class contributed by Jack
5244 Moffit for fixing the old distutils hack. He is sending this to
5253 Moffit for fixing the old distutils hack. He is sending this to
5245 the distutils folks so in the future we may not need it as a
5254 the distutils folks so in the future we may not need it as a
5246 private fix.
5255 private fix.
5247
5256
5248 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5257 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5249 changes for Debian packaging. See his patch for full details.
5258 changes for Debian packaging. See his patch for full details.
5250 The old distutils hack of making the ipythonrc* files carry a
5259 The old distutils hack of making the ipythonrc* files carry a
5251 bogus .py extension is gone, at last. Examples were moved to a
5260 bogus .py extension is gone, at last. Examples were moved to a
5252 separate subdir under doc/, and the separate executable scripts
5261 separate subdir under doc/, and the separate executable scripts
5253 now live in their own directory. Overall a great cleanup. The
5262 now live in their own directory. Overall a great cleanup. The
5254 manual was updated to use the new files, and setup.py has been
5263 manual was updated to use the new files, and setup.py has been
5255 fixed for this setup.
5264 fixed for this setup.
5256
5265
5257 * IPython/PyColorize.py (Parser.usage): made non-executable and
5266 * IPython/PyColorize.py (Parser.usage): made non-executable and
5258 created a pycolor wrapper around it to be included as a script.
5267 created a pycolor wrapper around it to be included as a script.
5259
5268
5260 2003-03-12 *** Released version 0.2.15pre2
5269 2003-03-12 *** Released version 0.2.15pre2
5261
5270
5262 2003-03-12 Fernando Perez <fperez@colorado.edu>
5271 2003-03-12 Fernando Perez <fperez@colorado.edu>
5263
5272
5264 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5273 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5265 long-standing problem with garbage characters in some terminals.
5274 long-standing problem with garbage characters in some terminals.
5266 The issue was really that the \001 and \002 escapes must _only_ be
5275 The issue was really that the \001 and \002 escapes must _only_ be
5267 passed to input prompts (which call readline), but _never_ to
5276 passed to input prompts (which call readline), but _never_ to
5268 normal text to be printed on screen. I changed ColorANSI to have
5277 normal text to be printed on screen. I changed ColorANSI to have
5269 two classes: TermColors and InputTermColors, each with the
5278 two classes: TermColors and InputTermColors, each with the
5270 appropriate escapes for input prompts or normal text. The code in
5279 appropriate escapes for input prompts or normal text. The code in
5271 Prompts.py got slightly more complicated, but this very old and
5280 Prompts.py got slightly more complicated, but this very old and
5272 annoying bug is finally fixed.
5281 annoying bug is finally fixed.
5273
5282
5274 All the credit for nailing down the real origin of this problem
5283 All the credit for nailing down the real origin of this problem
5275 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5284 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5276 *Many* thanks to him for spending quite a bit of effort on this.
5285 *Many* thanks to him for spending quite a bit of effort on this.
5277
5286
5278 2003-03-05 *** Released version 0.2.15pre1
5287 2003-03-05 *** Released version 0.2.15pre1
5279
5288
5280 2003-03-03 Fernando Perez <fperez@colorado.edu>
5289 2003-03-03 Fernando Perez <fperez@colorado.edu>
5281
5290
5282 * IPython/FakeModule.py: Moved the former _FakeModule to a
5291 * IPython/FakeModule.py: Moved the former _FakeModule to a
5283 separate file, because it's also needed by Magic (to fix a similar
5292 separate file, because it's also needed by Magic (to fix a similar
5284 pickle-related issue in @run).
5293 pickle-related issue in @run).
5285
5294
5286 2003-03-02 Fernando Perez <fperez@colorado.edu>
5295 2003-03-02 Fernando Perez <fperez@colorado.edu>
5287
5296
5288 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5297 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5289 the autocall option at runtime.
5298 the autocall option at runtime.
5290 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5299 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5291 across Magic.py to start separating Magic from InteractiveShell.
5300 across Magic.py to start separating Magic from InteractiveShell.
5292 (Magic._ofind): Fixed to return proper namespace for dotted
5301 (Magic._ofind): Fixed to return proper namespace for dotted
5293 names. Before, a dotted name would always return 'not currently
5302 names. Before, a dotted name would always return 'not currently
5294 defined', because it would find the 'parent'. s.x would be found,
5303 defined', because it would find the 'parent'. s.x would be found,
5295 but since 'x' isn't defined by itself, it would get confused.
5304 but since 'x' isn't defined by itself, it would get confused.
5296 (Magic.magic_run): Fixed pickling problems reported by Ralf
5305 (Magic.magic_run): Fixed pickling problems reported by Ralf
5297 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5306 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5298 that I'd used when Mike Heeter reported similar issues at the
5307 that I'd used when Mike Heeter reported similar issues at the
5299 top-level, but now for @run. It boils down to injecting the
5308 top-level, but now for @run. It boils down to injecting the
5300 namespace where code is being executed with something that looks
5309 namespace where code is being executed with something that looks
5301 enough like a module to fool pickle.dump(). Since a pickle stores
5310 enough like a module to fool pickle.dump(). Since a pickle stores
5302 a named reference to the importing module, we need this for
5311 a named reference to the importing module, we need this for
5303 pickles to save something sensible.
5312 pickles to save something sensible.
5304
5313
5305 * IPython/ipmaker.py (make_IPython): added an autocall option.
5314 * IPython/ipmaker.py (make_IPython): added an autocall option.
5306
5315
5307 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5316 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5308 the auto-eval code. Now autocalling is an option, and the code is
5317 the auto-eval code. Now autocalling is an option, and the code is
5309 also vastly safer. There is no more eval() involved at all.
5318 also vastly safer. There is no more eval() involved at all.
5310
5319
5311 2003-03-01 Fernando Perez <fperez@colorado.edu>
5320 2003-03-01 Fernando Perez <fperez@colorado.edu>
5312
5321
5313 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5322 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5314 dict with named keys instead of a tuple.
5323 dict with named keys instead of a tuple.
5315
5324
5316 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5325 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5317
5326
5318 * setup.py (make_shortcut): Fixed message about directories
5327 * setup.py (make_shortcut): Fixed message about directories
5319 created during Windows installation (the directories were ok, just
5328 created during Windows installation (the directories were ok, just
5320 the printed message was misleading). Thanks to Chris Liechti
5329 the printed message was misleading). Thanks to Chris Liechti
5321 <cliechti-AT-gmx.net> for the heads up.
5330 <cliechti-AT-gmx.net> for the heads up.
5322
5331
5323 2003-02-21 Fernando Perez <fperez@colorado.edu>
5332 2003-02-21 Fernando Perez <fperez@colorado.edu>
5324
5333
5325 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5334 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5326 of ValueError exception when checking for auto-execution. This
5335 of ValueError exception when checking for auto-execution. This
5327 one is raised by things like Numeric arrays arr.flat when the
5336 one is raised by things like Numeric arrays arr.flat when the
5328 array is non-contiguous.
5337 array is non-contiguous.
5329
5338
5330 2003-01-31 Fernando Perez <fperez@colorado.edu>
5339 2003-01-31 Fernando Perez <fperez@colorado.edu>
5331
5340
5332 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5341 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5333 not return any value at all (even though the command would get
5342 not return any value at all (even though the command would get
5334 executed).
5343 executed).
5335 (xsys): Flush stdout right after printing the command to ensure
5344 (xsys): Flush stdout right after printing the command to ensure
5336 proper ordering of commands and command output in the total
5345 proper ordering of commands and command output in the total
5337 output.
5346 output.
5338 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5347 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5339 system/getoutput as defaults. The old ones are kept for
5348 system/getoutput as defaults. The old ones are kept for
5340 compatibility reasons, so no code which uses this library needs
5349 compatibility reasons, so no code which uses this library needs
5341 changing.
5350 changing.
5342
5351
5343 2003-01-27 *** Released version 0.2.14
5352 2003-01-27 *** Released version 0.2.14
5344
5353
5345 2003-01-25 Fernando Perez <fperez@colorado.edu>
5354 2003-01-25 Fernando Perez <fperez@colorado.edu>
5346
5355
5347 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5356 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5348 functions defined in previous edit sessions could not be re-edited
5357 functions defined in previous edit sessions could not be re-edited
5349 (because the temp files were immediately removed). Now temp files
5358 (because the temp files were immediately removed). Now temp files
5350 are removed only at IPython's exit.
5359 are removed only at IPython's exit.
5351 (Magic.magic_run): Improved @run to perform shell-like expansions
5360 (Magic.magic_run): Improved @run to perform shell-like expansions
5352 on its arguments (~users and $VARS). With this, @run becomes more
5361 on its arguments (~users and $VARS). With this, @run becomes more
5353 like a normal command-line.
5362 like a normal command-line.
5354
5363
5355 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5364 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5356 bugs related to embedding and cleaned up that code. A fairly
5365 bugs related to embedding and cleaned up that code. A fairly
5357 important one was the impossibility to access the global namespace
5366 important one was the impossibility to access the global namespace
5358 through the embedded IPython (only local variables were visible).
5367 through the embedded IPython (only local variables were visible).
5359
5368
5360 2003-01-14 Fernando Perez <fperez@colorado.edu>
5369 2003-01-14 Fernando Perez <fperez@colorado.edu>
5361
5370
5362 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5371 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5363 auto-calling to be a bit more conservative. Now it doesn't get
5372 auto-calling to be a bit more conservative. Now it doesn't get
5364 triggered if any of '!=()<>' are in the rest of the input line, to
5373 triggered if any of '!=()<>' are in the rest of the input line, to
5365 allow comparing callables. Thanks to Alex for the heads up.
5374 allow comparing callables. Thanks to Alex for the heads up.
5366
5375
5367 2003-01-07 Fernando Perez <fperez@colorado.edu>
5376 2003-01-07 Fernando Perez <fperez@colorado.edu>
5368
5377
5369 * IPython/genutils.py (page): fixed estimation of the number of
5378 * IPython/genutils.py (page): fixed estimation of the number of
5370 lines in a string to be paged to simply count newlines. This
5379 lines in a string to be paged to simply count newlines. This
5371 prevents over-guessing due to embedded escape sequences. A better
5380 prevents over-guessing due to embedded escape sequences. A better
5372 long-term solution would involve stripping out the control chars
5381 long-term solution would involve stripping out the control chars
5373 for the count, but it's potentially so expensive I just don't
5382 for the count, but it's potentially so expensive I just don't
5374 think it's worth doing.
5383 think it's worth doing.
5375
5384
5376 2002-12-19 *** Released version 0.2.14pre50
5385 2002-12-19 *** Released version 0.2.14pre50
5377
5386
5378 2002-12-19 Fernando Perez <fperez@colorado.edu>
5387 2002-12-19 Fernando Perez <fperez@colorado.edu>
5379
5388
5380 * tools/release (version): Changed release scripts to inform
5389 * tools/release (version): Changed release scripts to inform
5381 Andrea and build a NEWS file with a list of recent changes.
5390 Andrea and build a NEWS file with a list of recent changes.
5382
5391
5383 * IPython/ColorANSI.py (__all__): changed terminal detection
5392 * IPython/ColorANSI.py (__all__): changed terminal detection
5384 code. Seems to work better for xterms without breaking
5393 code. Seems to work better for xterms without breaking
5385 konsole. Will need more testing to determine if WinXP and Mac OSX
5394 konsole. Will need more testing to determine if WinXP and Mac OSX
5386 also work ok.
5395 also work ok.
5387
5396
5388 2002-12-18 *** Released version 0.2.14pre49
5397 2002-12-18 *** Released version 0.2.14pre49
5389
5398
5390 2002-12-18 Fernando Perez <fperez@colorado.edu>
5399 2002-12-18 Fernando Perez <fperez@colorado.edu>
5391
5400
5392 * Docs: added new info about Mac OSX, from Andrea.
5401 * Docs: added new info about Mac OSX, from Andrea.
5393
5402
5394 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5403 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5395 allow direct plotting of python strings whose format is the same
5404 allow direct plotting of python strings whose format is the same
5396 of gnuplot data files.
5405 of gnuplot data files.
5397
5406
5398 2002-12-16 Fernando Perez <fperez@colorado.edu>
5407 2002-12-16 Fernando Perez <fperez@colorado.edu>
5399
5408
5400 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5409 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5401 value of exit question to be acknowledged.
5410 value of exit question to be acknowledged.
5402
5411
5403 2002-12-03 Fernando Perez <fperez@colorado.edu>
5412 2002-12-03 Fernando Perez <fperez@colorado.edu>
5404
5413
5405 * IPython/ipmaker.py: removed generators, which had been added
5414 * IPython/ipmaker.py: removed generators, which had been added
5406 by mistake in an earlier debugging run. This was causing trouble
5415 by mistake in an earlier debugging run. This was causing trouble
5407 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5416 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5408 for pointing this out.
5417 for pointing this out.
5409
5418
5410 2002-11-17 Fernando Perez <fperez@colorado.edu>
5419 2002-11-17 Fernando Perez <fperez@colorado.edu>
5411
5420
5412 * Manual: updated the Gnuplot section.
5421 * Manual: updated the Gnuplot section.
5413
5422
5414 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5423 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5415 a much better split of what goes in Runtime and what goes in
5424 a much better split of what goes in Runtime and what goes in
5416 Interactive.
5425 Interactive.
5417
5426
5418 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5427 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5419 being imported from iplib.
5428 being imported from iplib.
5420
5429
5421 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5430 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5422 for command-passing. Now the global Gnuplot instance is called
5431 for command-passing. Now the global Gnuplot instance is called
5423 'gp' instead of 'g', which was really a far too fragile and
5432 'gp' instead of 'g', which was really a far too fragile and
5424 common name.
5433 common name.
5425
5434
5426 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5435 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5427 bounding boxes generated by Gnuplot for square plots.
5436 bounding boxes generated by Gnuplot for square plots.
5428
5437
5429 * IPython/genutils.py (popkey): new function added. I should
5438 * IPython/genutils.py (popkey): new function added. I should
5430 suggest this on c.l.py as a dict method, it seems useful.
5439 suggest this on c.l.py as a dict method, it seems useful.
5431
5440
5432 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5441 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5433 to transparently handle PostScript generation. MUCH better than
5442 to transparently handle PostScript generation. MUCH better than
5434 the previous plot_eps/replot_eps (which I removed now). The code
5443 the previous plot_eps/replot_eps (which I removed now). The code
5435 is also fairly clean and well documented now (including
5444 is also fairly clean and well documented now (including
5436 docstrings).
5445 docstrings).
5437
5446
5438 2002-11-13 Fernando Perez <fperez@colorado.edu>
5447 2002-11-13 Fernando Perez <fperez@colorado.edu>
5439
5448
5440 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5449 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5441 (inconsistent with options).
5450 (inconsistent with options).
5442
5451
5443 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5452 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5444 manually disabled, I don't know why. Fixed it.
5453 manually disabled, I don't know why. Fixed it.
5445 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5454 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5446 eps output.
5455 eps output.
5447
5456
5448 2002-11-12 Fernando Perez <fperez@colorado.edu>
5457 2002-11-12 Fernando Perez <fperez@colorado.edu>
5449
5458
5450 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5459 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5451 don't propagate up to caller. Fixes crash reported by François
5460 don't propagate up to caller. Fixes crash reported by François
5452 Pinard.
5461 Pinard.
5453
5462
5454 2002-11-09 Fernando Perez <fperez@colorado.edu>
5463 2002-11-09 Fernando Perez <fperez@colorado.edu>
5455
5464
5456 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5465 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5457 history file for new users.
5466 history file for new users.
5458 (make_IPython): fixed bug where initial install would leave the
5467 (make_IPython): fixed bug where initial install would leave the
5459 user running in the .ipython dir.
5468 user running in the .ipython dir.
5460 (make_IPython): fixed bug where config dir .ipython would be
5469 (make_IPython): fixed bug where config dir .ipython would be
5461 created regardless of the given -ipythondir option. Thanks to Cory
5470 created regardless of the given -ipythondir option. Thanks to Cory
5462 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5471 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5463
5472
5464 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5473 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5465 type confirmations. Will need to use it in all of IPython's code
5474 type confirmations. Will need to use it in all of IPython's code
5466 consistently.
5475 consistently.
5467
5476
5468 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5477 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5469 context to print 31 lines instead of the default 5. This will make
5478 context to print 31 lines instead of the default 5. This will make
5470 the crash reports extremely detailed in case the problem is in
5479 the crash reports extremely detailed in case the problem is in
5471 libraries I don't have access to.
5480 libraries I don't have access to.
5472
5481
5473 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5482 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5474 line of defense' code to still crash, but giving users fair
5483 line of defense' code to still crash, but giving users fair
5475 warning. I don't want internal errors to go unreported: if there's
5484 warning. I don't want internal errors to go unreported: if there's
5476 an internal problem, IPython should crash and generate a full
5485 an internal problem, IPython should crash and generate a full
5477 report.
5486 report.
5478
5487
5479 2002-11-08 Fernando Perez <fperez@colorado.edu>
5488 2002-11-08 Fernando Perez <fperez@colorado.edu>
5480
5489
5481 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5490 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5482 otherwise uncaught exceptions which can appear if people set
5491 otherwise uncaught exceptions which can appear if people set
5483 sys.stdout to something badly broken. Thanks to a crash report
5492 sys.stdout to something badly broken. Thanks to a crash report
5484 from henni-AT-mail.brainbot.com.
5493 from henni-AT-mail.brainbot.com.
5485
5494
5486 2002-11-04 Fernando Perez <fperez@colorado.edu>
5495 2002-11-04 Fernando Perez <fperez@colorado.edu>
5487
5496
5488 * IPython/iplib.py (InteractiveShell.interact): added
5497 * IPython/iplib.py (InteractiveShell.interact): added
5489 __IPYTHON__active to the builtins. It's a flag which goes on when
5498 __IPYTHON__active to the builtins. It's a flag which goes on when
5490 the interaction starts and goes off again when it stops. This
5499 the interaction starts and goes off again when it stops. This
5491 allows embedding code to detect being inside IPython. Before this
5500 allows embedding code to detect being inside IPython. Before this
5492 was done via __IPYTHON__, but that only shows that an IPython
5501 was done via __IPYTHON__, but that only shows that an IPython
5493 instance has been created.
5502 instance has been created.
5494
5503
5495 * IPython/Magic.py (Magic.magic_env): I realized that in a
5504 * IPython/Magic.py (Magic.magic_env): I realized that in a
5496 UserDict, instance.data holds the data as a normal dict. So I
5505 UserDict, instance.data holds the data as a normal dict. So I
5497 modified @env to return os.environ.data instead of rebuilding a
5506 modified @env to return os.environ.data instead of rebuilding a
5498 dict by hand.
5507 dict by hand.
5499
5508
5500 2002-11-02 Fernando Perez <fperez@colorado.edu>
5509 2002-11-02 Fernando Perez <fperez@colorado.edu>
5501
5510
5502 * IPython/genutils.py (warn): changed so that level 1 prints no
5511 * IPython/genutils.py (warn): changed so that level 1 prints no
5503 header. Level 2 is now the default (with 'WARNING' header, as
5512 header. Level 2 is now the default (with 'WARNING' header, as
5504 before). I think I tracked all places where changes were needed in
5513 before). I think I tracked all places where changes were needed in
5505 IPython, but outside code using the old level numbering may have
5514 IPython, but outside code using the old level numbering may have
5506 broken.
5515 broken.
5507
5516
5508 * IPython/iplib.py (InteractiveShell.runcode): added this to
5517 * IPython/iplib.py (InteractiveShell.runcode): added this to
5509 handle the tracebacks in SystemExit traps correctly. The previous
5518 handle the tracebacks in SystemExit traps correctly. The previous
5510 code (through interact) was printing more of the stack than
5519 code (through interact) was printing more of the stack than
5511 necessary, showing IPython internal code to the user.
5520 necessary, showing IPython internal code to the user.
5512
5521
5513 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5522 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5514 default. Now that the default at the confirmation prompt is yes,
5523 default. Now that the default at the confirmation prompt is yes,
5515 it's not so intrusive. François' argument that ipython sessions
5524 it's not so intrusive. François' argument that ipython sessions
5516 tend to be complex enough not to lose them from an accidental C-d,
5525 tend to be complex enough not to lose them from an accidental C-d,
5517 is a valid one.
5526 is a valid one.
5518
5527
5519 * IPython/iplib.py (InteractiveShell.interact): added a
5528 * IPython/iplib.py (InteractiveShell.interact): added a
5520 showtraceback() call to the SystemExit trap, and modified the exit
5529 showtraceback() call to the SystemExit trap, and modified the exit
5521 confirmation to have yes as the default.
5530 confirmation to have yes as the default.
5522
5531
5523 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5532 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5524 this file. It's been gone from the code for a long time, this was
5533 this file. It's been gone from the code for a long time, this was
5525 simply leftover junk.
5534 simply leftover junk.
5526
5535
5527 2002-11-01 Fernando Perez <fperez@colorado.edu>
5536 2002-11-01 Fernando Perez <fperez@colorado.edu>
5528
5537
5529 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5538 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5530 added. If set, IPython now traps EOF and asks for
5539 added. If set, IPython now traps EOF and asks for
5531 confirmation. After a request by François Pinard.
5540 confirmation. After a request by François Pinard.
5532
5541
5533 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5542 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5534 of @abort, and with a new (better) mechanism for handling the
5543 of @abort, and with a new (better) mechanism for handling the
5535 exceptions.
5544 exceptions.
5536
5545
5537 2002-10-27 Fernando Perez <fperez@colorado.edu>
5546 2002-10-27 Fernando Perez <fperez@colorado.edu>
5538
5547
5539 * IPython/usage.py (__doc__): updated the --help information and
5548 * IPython/usage.py (__doc__): updated the --help information and
5540 the ipythonrc file to indicate that -log generates
5549 the ipythonrc file to indicate that -log generates
5541 ./ipython.log. Also fixed the corresponding info in @logstart.
5550 ./ipython.log. Also fixed the corresponding info in @logstart.
5542 This and several other fixes in the manuals thanks to reports by
5551 This and several other fixes in the manuals thanks to reports by
5543 François Pinard <pinard-AT-iro.umontreal.ca>.
5552 François Pinard <pinard-AT-iro.umontreal.ca>.
5544
5553
5545 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5554 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5546 refer to @logstart (instead of @log, which doesn't exist).
5555 refer to @logstart (instead of @log, which doesn't exist).
5547
5556
5548 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5557 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5549 AttributeError crash. Thanks to Christopher Armstrong
5558 AttributeError crash. Thanks to Christopher Armstrong
5550 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5559 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5551 introduced recently (in 0.2.14pre37) with the fix to the eval
5560 introduced recently (in 0.2.14pre37) with the fix to the eval
5552 problem mentioned below.
5561 problem mentioned below.
5553
5562
5554 2002-10-17 Fernando Perez <fperez@colorado.edu>
5563 2002-10-17 Fernando Perez <fperez@colorado.edu>
5555
5564
5556 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5565 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5557 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5566 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5558
5567
5559 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5568 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5560 this function to fix a problem reported by Alex Schmolck. He saw
5569 this function to fix a problem reported by Alex Schmolck. He saw
5561 it with list comprehensions and generators, which were getting
5570 it with list comprehensions and generators, which were getting
5562 called twice. The real problem was an 'eval' call in testing for
5571 called twice. The real problem was an 'eval' call in testing for
5563 automagic which was evaluating the input line silently.
5572 automagic which was evaluating the input line silently.
5564
5573
5565 This is a potentially very nasty bug, if the input has side
5574 This is a potentially very nasty bug, if the input has side
5566 effects which must not be repeated. The code is much cleaner now,
5575 effects which must not be repeated. The code is much cleaner now,
5567 without any blanket 'except' left and with a regexp test for
5576 without any blanket 'except' left and with a regexp test for
5568 actual function names.
5577 actual function names.
5569
5578
5570 But an eval remains, which I'm not fully comfortable with. I just
5579 But an eval remains, which I'm not fully comfortable with. I just
5571 don't know how to find out if an expression could be a callable in
5580 don't know how to find out if an expression could be a callable in
5572 the user's namespace without doing an eval on the string. However
5581 the user's namespace without doing an eval on the string. However
5573 that string is now much more strictly checked so that no code
5582 that string is now much more strictly checked so that no code
5574 slips by, so the eval should only happen for things that can
5583 slips by, so the eval should only happen for things that can
5575 really be only function/method names.
5584 really be only function/method names.
5576
5585
5577 2002-10-15 Fernando Perez <fperez@colorado.edu>
5586 2002-10-15 Fernando Perez <fperez@colorado.edu>
5578
5587
5579 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5588 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5580 OSX information to main manual, removed README_Mac_OSX file from
5589 OSX information to main manual, removed README_Mac_OSX file from
5581 distribution. Also updated credits for recent additions.
5590 distribution. Also updated credits for recent additions.
5582
5591
5583 2002-10-10 Fernando Perez <fperez@colorado.edu>
5592 2002-10-10 Fernando Perez <fperez@colorado.edu>
5584
5593
5585 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5594 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5586 terminal-related issues. Many thanks to Andrea Riciputi
5595 terminal-related issues. Many thanks to Andrea Riciputi
5587 <andrea.riciputi-AT-libero.it> for writing it.
5596 <andrea.riciputi-AT-libero.it> for writing it.
5588
5597
5589 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5598 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5590 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5599 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5591
5600
5592 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5601 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5593 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5602 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5594 <syver-en-AT-online.no> who both submitted patches for this problem.
5603 <syver-en-AT-online.no> who both submitted patches for this problem.
5595
5604
5596 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5605 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5597 global embedding to make sure that things don't overwrite user
5606 global embedding to make sure that things don't overwrite user
5598 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5607 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5599
5608
5600 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5609 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5601 compatibility. Thanks to Hayden Callow
5610 compatibility. Thanks to Hayden Callow
5602 <h.callow-AT-elec.canterbury.ac.nz>
5611 <h.callow-AT-elec.canterbury.ac.nz>
5603
5612
5604 2002-10-04 Fernando Perez <fperez@colorado.edu>
5613 2002-10-04 Fernando Perez <fperez@colorado.edu>
5605
5614
5606 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5615 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5607 Gnuplot.File objects.
5616 Gnuplot.File objects.
5608
5617
5609 2002-07-23 Fernando Perez <fperez@colorado.edu>
5618 2002-07-23 Fernando Perez <fperez@colorado.edu>
5610
5619
5611 * IPython/genutils.py (timing): Added timings() and timing() for
5620 * IPython/genutils.py (timing): Added timings() and timing() for
5612 quick access to the most commonly needed data, the execution
5621 quick access to the most commonly needed data, the execution
5613 times. Old timing() renamed to timings_out().
5622 times. Old timing() renamed to timings_out().
5614
5623
5615 2002-07-18 Fernando Perez <fperez@colorado.edu>
5624 2002-07-18 Fernando Perez <fperez@colorado.edu>
5616
5625
5617 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5626 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5618 bug with nested instances disrupting the parent's tab completion.
5627 bug with nested instances disrupting the parent's tab completion.
5619
5628
5620 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5629 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5621 all_completions code to begin the emacs integration.
5630 all_completions code to begin the emacs integration.
5622
5631
5623 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5632 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5624 argument to allow titling individual arrays when plotting.
5633 argument to allow titling individual arrays when plotting.
5625
5634
5626 2002-07-15 Fernando Perez <fperez@colorado.edu>
5635 2002-07-15 Fernando Perez <fperez@colorado.edu>
5627
5636
5628 * setup.py (make_shortcut): changed to retrieve the value of
5637 * setup.py (make_shortcut): changed to retrieve the value of
5629 'Program Files' directory from the registry (this value changes in
5638 'Program Files' directory from the registry (this value changes in
5630 non-english versions of Windows). Thanks to Thomas Fanslau
5639 non-english versions of Windows). Thanks to Thomas Fanslau
5631 <tfanslau-AT-gmx.de> for the report.
5640 <tfanslau-AT-gmx.de> for the report.
5632
5641
5633 2002-07-10 Fernando Perez <fperez@colorado.edu>
5642 2002-07-10 Fernando Perez <fperez@colorado.edu>
5634
5643
5635 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5644 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5636 a bug in pdb, which crashes if a line with only whitespace is
5645 a bug in pdb, which crashes if a line with only whitespace is
5637 entered. Bug report submitted to sourceforge.
5646 entered. Bug report submitted to sourceforge.
5638
5647
5639 2002-07-09 Fernando Perez <fperez@colorado.edu>
5648 2002-07-09 Fernando Perez <fperez@colorado.edu>
5640
5649
5641 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5650 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5642 reporting exceptions (it's a bug in inspect.py, I just set a
5651 reporting exceptions (it's a bug in inspect.py, I just set a
5643 workaround).
5652 workaround).
5644
5653
5645 2002-07-08 Fernando Perez <fperez@colorado.edu>
5654 2002-07-08 Fernando Perez <fperez@colorado.edu>
5646
5655
5647 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5656 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5648 __IPYTHON__ in __builtins__ to show up in user_ns.
5657 __IPYTHON__ in __builtins__ to show up in user_ns.
5649
5658
5650 2002-07-03 Fernando Perez <fperez@colorado.edu>
5659 2002-07-03 Fernando Perez <fperez@colorado.edu>
5651
5660
5652 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5661 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5653 name from @gp_set_instance to @gp_set_default.
5662 name from @gp_set_instance to @gp_set_default.
5654
5663
5655 * IPython/ipmaker.py (make_IPython): default editor value set to
5664 * IPython/ipmaker.py (make_IPython): default editor value set to
5656 '0' (a string), to match the rc file. Otherwise will crash when
5665 '0' (a string), to match the rc file. Otherwise will crash when
5657 .strip() is called on it.
5666 .strip() is called on it.
5658
5667
5659
5668
5660 2002-06-28 Fernando Perez <fperez@colorado.edu>
5669 2002-06-28 Fernando Perez <fperez@colorado.edu>
5661
5670
5662 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5671 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5663 of files in current directory when a file is executed via
5672 of files in current directory when a file is executed via
5664 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5673 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5665
5674
5666 * setup.py (manfiles): fix for rpm builds, submitted by RA
5675 * setup.py (manfiles): fix for rpm builds, submitted by RA
5667 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5676 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5668
5677
5669 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5678 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5670 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5679 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5671 string!). A. Schmolck caught this one.
5680 string!). A. Schmolck caught this one.
5672
5681
5673 2002-06-27 Fernando Perez <fperez@colorado.edu>
5682 2002-06-27 Fernando Perez <fperez@colorado.edu>
5674
5683
5675 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5684 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5676 defined files at the cmd line. __name__ wasn't being set to
5685 defined files at the cmd line. __name__ wasn't being set to
5677 __main__.
5686 __main__.
5678
5687
5679 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5688 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5680 regular lists and tuples besides Numeric arrays.
5689 regular lists and tuples besides Numeric arrays.
5681
5690
5682 * IPython/Prompts.py (CachedOutput.__call__): Added output
5691 * IPython/Prompts.py (CachedOutput.__call__): Added output
5683 supression for input ending with ';'. Similar to Mathematica and
5692 supression for input ending with ';'. Similar to Mathematica and
5684 Matlab. The _* vars and Out[] list are still updated, just like
5693 Matlab. The _* vars and Out[] list are still updated, just like
5685 Mathematica behaves.
5694 Mathematica behaves.
5686
5695
5687 2002-06-25 Fernando Perez <fperez@colorado.edu>
5696 2002-06-25 Fernando Perez <fperez@colorado.edu>
5688
5697
5689 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5698 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5690 .ini extensions for profiels under Windows.
5699 .ini extensions for profiels under Windows.
5691
5700
5692 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5701 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5693 string form. Fix contributed by Alexander Schmolck
5702 string form. Fix contributed by Alexander Schmolck
5694 <a.schmolck-AT-gmx.net>
5703 <a.schmolck-AT-gmx.net>
5695
5704
5696 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5705 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5697 pre-configured Gnuplot instance.
5706 pre-configured Gnuplot instance.
5698
5707
5699 2002-06-21 Fernando Perez <fperez@colorado.edu>
5708 2002-06-21 Fernando Perez <fperez@colorado.edu>
5700
5709
5701 * IPython/numutils.py (exp_safe): new function, works around the
5710 * IPython/numutils.py (exp_safe): new function, works around the
5702 underflow problems in Numeric.
5711 underflow problems in Numeric.
5703 (log2): New fn. Safe log in base 2: returns exact integer answer
5712 (log2): New fn. Safe log in base 2: returns exact integer answer
5704 for exact integer powers of 2.
5713 for exact integer powers of 2.
5705
5714
5706 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5715 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5707 properly.
5716 properly.
5708
5717
5709 2002-06-20 Fernando Perez <fperez@colorado.edu>
5718 2002-06-20 Fernando Perez <fperez@colorado.edu>
5710
5719
5711 * IPython/genutils.py (timing): new function like
5720 * IPython/genutils.py (timing): new function like
5712 Mathematica's. Similar to time_test, but returns more info.
5721 Mathematica's. Similar to time_test, but returns more info.
5713
5722
5714 2002-06-18 Fernando Perez <fperez@colorado.edu>
5723 2002-06-18 Fernando Perez <fperez@colorado.edu>
5715
5724
5716 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5725 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5717 according to Mike Heeter's suggestions.
5726 according to Mike Heeter's suggestions.
5718
5727
5719 2002-06-16 Fernando Perez <fperez@colorado.edu>
5728 2002-06-16 Fernando Perez <fperez@colorado.edu>
5720
5729
5721 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5730 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5722 system. GnuplotMagic is gone as a user-directory option. New files
5731 system. GnuplotMagic is gone as a user-directory option. New files
5723 make it easier to use all the gnuplot stuff both from external
5732 make it easier to use all the gnuplot stuff both from external
5724 programs as well as from IPython. Had to rewrite part of
5733 programs as well as from IPython. Had to rewrite part of
5725 hardcopy() b/c of a strange bug: often the ps files simply don't
5734 hardcopy() b/c of a strange bug: often the ps files simply don't
5726 get created, and require a repeat of the command (often several
5735 get created, and require a repeat of the command (often several
5727 times).
5736 times).
5728
5737
5729 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5738 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5730 resolve output channel at call time, so that if sys.stderr has
5739 resolve output channel at call time, so that if sys.stderr has
5731 been redirected by user this gets honored.
5740 been redirected by user this gets honored.
5732
5741
5733 2002-06-13 Fernando Perez <fperez@colorado.edu>
5742 2002-06-13 Fernando Perez <fperez@colorado.edu>
5734
5743
5735 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5744 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5736 IPShell. Kept a copy with the old names to avoid breaking people's
5745 IPShell. Kept a copy with the old names to avoid breaking people's
5737 embedded code.
5746 embedded code.
5738
5747
5739 * IPython/ipython: simplified it to the bare minimum after
5748 * IPython/ipython: simplified it to the bare minimum after
5740 Holger's suggestions. Added info about how to use it in
5749 Holger's suggestions. Added info about how to use it in
5741 PYTHONSTARTUP.
5750 PYTHONSTARTUP.
5742
5751
5743 * IPython/Shell.py (IPythonShell): changed the options passing
5752 * IPython/Shell.py (IPythonShell): changed the options passing
5744 from a string with funky %s replacements to a straight list. Maybe
5753 from a string with funky %s replacements to a straight list. Maybe
5745 a bit more typing, but it follows sys.argv conventions, so there's
5754 a bit more typing, but it follows sys.argv conventions, so there's
5746 less special-casing to remember.
5755 less special-casing to remember.
5747
5756
5748 2002-06-12 Fernando Perez <fperez@colorado.edu>
5757 2002-06-12 Fernando Perez <fperez@colorado.edu>
5749
5758
5750 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5759 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5751 command. Thanks to a suggestion by Mike Heeter.
5760 command. Thanks to a suggestion by Mike Heeter.
5752 (Magic.magic_pfile): added behavior to look at filenames if given
5761 (Magic.magic_pfile): added behavior to look at filenames if given
5753 arg is not a defined object.
5762 arg is not a defined object.
5754 (Magic.magic_save): New @save function to save code snippets. Also
5763 (Magic.magic_save): New @save function to save code snippets. Also
5755 a Mike Heeter idea.
5764 a Mike Heeter idea.
5756
5765
5757 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5766 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5758 plot() and replot(). Much more convenient now, especially for
5767 plot() and replot(). Much more convenient now, especially for
5759 interactive use.
5768 interactive use.
5760
5769
5761 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5770 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5762 filenames.
5771 filenames.
5763
5772
5764 2002-06-02 Fernando Perez <fperez@colorado.edu>
5773 2002-06-02 Fernando Perez <fperez@colorado.edu>
5765
5774
5766 * IPython/Struct.py (Struct.__init__): modified to admit
5775 * IPython/Struct.py (Struct.__init__): modified to admit
5767 initialization via another struct.
5776 initialization via another struct.
5768
5777
5769 * IPython/genutils.py (SystemExec.__init__): New stateful
5778 * IPython/genutils.py (SystemExec.__init__): New stateful
5770 interface to xsys and bq. Useful for writing system scripts.
5779 interface to xsys and bq. Useful for writing system scripts.
5771
5780
5772 2002-05-30 Fernando Perez <fperez@colorado.edu>
5781 2002-05-30 Fernando Perez <fperez@colorado.edu>
5773
5782
5774 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5783 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5775 documents. This will make the user download smaller (it's getting
5784 documents. This will make the user download smaller (it's getting
5776 too big).
5785 too big).
5777
5786
5778 2002-05-29 Fernando Perez <fperez@colorado.edu>
5787 2002-05-29 Fernando Perez <fperez@colorado.edu>
5779
5788
5780 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5789 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5781 fix problems with shelve and pickle. Seems to work, but I don't
5790 fix problems with shelve and pickle. Seems to work, but I don't
5782 know if corner cases break it. Thanks to Mike Heeter
5791 know if corner cases break it. Thanks to Mike Heeter
5783 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5792 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5784
5793
5785 2002-05-24 Fernando Perez <fperez@colorado.edu>
5794 2002-05-24 Fernando Perez <fperez@colorado.edu>
5786
5795
5787 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5796 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5788 macros having broken.
5797 macros having broken.
5789
5798
5790 2002-05-21 Fernando Perez <fperez@colorado.edu>
5799 2002-05-21 Fernando Perez <fperez@colorado.edu>
5791
5800
5792 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5801 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5793 introduced logging bug: all history before logging started was
5802 introduced logging bug: all history before logging started was
5794 being written one character per line! This came from the redesign
5803 being written one character per line! This came from the redesign
5795 of the input history as a special list which slices to strings,
5804 of the input history as a special list which slices to strings,
5796 not to lists.
5805 not to lists.
5797
5806
5798 2002-05-20 Fernando Perez <fperez@colorado.edu>
5807 2002-05-20 Fernando Perez <fperez@colorado.edu>
5799
5808
5800 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5809 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5801 be an attribute of all classes in this module. The design of these
5810 be an attribute of all classes in this module. The design of these
5802 classes needs some serious overhauling.
5811 classes needs some serious overhauling.
5803
5812
5804 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5813 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5805 which was ignoring '_' in option names.
5814 which was ignoring '_' in option names.
5806
5815
5807 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5816 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5808 'Verbose_novars' to 'Context' and made it the new default. It's a
5817 'Verbose_novars' to 'Context' and made it the new default. It's a
5809 bit more readable and also safer than verbose.
5818 bit more readable and also safer than verbose.
5810
5819
5811 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5820 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5812 triple-quoted strings.
5821 triple-quoted strings.
5813
5822
5814 * IPython/OInspect.py (__all__): new module exposing the object
5823 * IPython/OInspect.py (__all__): new module exposing the object
5815 introspection facilities. Now the corresponding magics are dummy
5824 introspection facilities. Now the corresponding magics are dummy
5816 wrappers around this. Having this module will make it much easier
5825 wrappers around this. Having this module will make it much easier
5817 to put these functions into our modified pdb.
5826 to put these functions into our modified pdb.
5818 This new object inspector system uses the new colorizing module,
5827 This new object inspector system uses the new colorizing module,
5819 so source code and other things are nicely syntax highlighted.
5828 so source code and other things are nicely syntax highlighted.
5820
5829
5821 2002-05-18 Fernando Perez <fperez@colorado.edu>
5830 2002-05-18 Fernando Perez <fperez@colorado.edu>
5822
5831
5823 * IPython/ColorANSI.py: Split the coloring tools into a separate
5832 * IPython/ColorANSI.py: Split the coloring tools into a separate
5824 module so I can use them in other code easier (they were part of
5833 module so I can use them in other code easier (they were part of
5825 ultraTB).
5834 ultraTB).
5826
5835
5827 2002-05-17 Fernando Perez <fperez@colorado.edu>
5836 2002-05-17 Fernando Perez <fperez@colorado.edu>
5828
5837
5829 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5838 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5830 fixed it to set the global 'g' also to the called instance, as
5839 fixed it to set the global 'g' also to the called instance, as
5831 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5840 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5832 user's 'g' variables).
5841 user's 'g' variables).
5833
5842
5834 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5843 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5835 global variables (aliases to _ih,_oh) so that users which expect
5844 global variables (aliases to _ih,_oh) so that users which expect
5836 In[5] or Out[7] to work aren't unpleasantly surprised.
5845 In[5] or Out[7] to work aren't unpleasantly surprised.
5837 (InputList.__getslice__): new class to allow executing slices of
5846 (InputList.__getslice__): new class to allow executing slices of
5838 input history directly. Very simple class, complements the use of
5847 input history directly. Very simple class, complements the use of
5839 macros.
5848 macros.
5840
5849
5841 2002-05-16 Fernando Perez <fperez@colorado.edu>
5850 2002-05-16 Fernando Perez <fperez@colorado.edu>
5842
5851
5843 * setup.py (docdirbase): make doc directory be just doc/IPython
5852 * setup.py (docdirbase): make doc directory be just doc/IPython
5844 without version numbers, it will reduce clutter for users.
5853 without version numbers, it will reduce clutter for users.
5845
5854
5846 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5855 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5847 execfile call to prevent possible memory leak. See for details:
5856 execfile call to prevent possible memory leak. See for details:
5848 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5857 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5849
5858
5850 2002-05-15 Fernando Perez <fperez@colorado.edu>
5859 2002-05-15 Fernando Perez <fperez@colorado.edu>
5851
5860
5852 * IPython/Magic.py (Magic.magic_psource): made the object
5861 * IPython/Magic.py (Magic.magic_psource): made the object
5853 introspection names be more standard: pdoc, pdef, pfile and
5862 introspection names be more standard: pdoc, pdef, pfile and
5854 psource. They all print/page their output, and it makes
5863 psource. They all print/page their output, and it makes
5855 remembering them easier. Kept old names for compatibility as
5864 remembering them easier. Kept old names for compatibility as
5856 aliases.
5865 aliases.
5857
5866
5858 2002-05-14 Fernando Perez <fperez@colorado.edu>
5867 2002-05-14 Fernando Perez <fperez@colorado.edu>
5859
5868
5860 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5869 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5861 what the mouse problem was. The trick is to use gnuplot with temp
5870 what the mouse problem was. The trick is to use gnuplot with temp
5862 files and NOT with pipes (for data communication), because having
5871 files and NOT with pipes (for data communication), because having
5863 both pipes and the mouse on is bad news.
5872 both pipes and the mouse on is bad news.
5864
5873
5865 2002-05-13 Fernando Perez <fperez@colorado.edu>
5874 2002-05-13 Fernando Perez <fperez@colorado.edu>
5866
5875
5867 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5876 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5868 bug. Information would be reported about builtins even when
5877 bug. Information would be reported about builtins even when
5869 user-defined functions overrode them.
5878 user-defined functions overrode them.
5870
5879
5871 2002-05-11 Fernando Perez <fperez@colorado.edu>
5880 2002-05-11 Fernando Perez <fperez@colorado.edu>
5872
5881
5873 * IPython/__init__.py (__all__): removed FlexCompleter from
5882 * IPython/__init__.py (__all__): removed FlexCompleter from
5874 __all__ so that things don't fail in platforms without readline.
5883 __all__ so that things don't fail in platforms without readline.
5875
5884
5876 2002-05-10 Fernando Perez <fperez@colorado.edu>
5885 2002-05-10 Fernando Perez <fperez@colorado.edu>
5877
5886
5878 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5887 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5879 it requires Numeric, effectively making Numeric a dependency for
5888 it requires Numeric, effectively making Numeric a dependency for
5880 IPython.
5889 IPython.
5881
5890
5882 * Released 0.2.13
5891 * Released 0.2.13
5883
5892
5884 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5893 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5885 profiler interface. Now all the major options from the profiler
5894 profiler interface. Now all the major options from the profiler
5886 module are directly supported in IPython, both for single
5895 module are directly supported in IPython, both for single
5887 expressions (@prun) and for full programs (@run -p).
5896 expressions (@prun) and for full programs (@run -p).
5888
5897
5889 2002-05-09 Fernando Perez <fperez@colorado.edu>
5898 2002-05-09 Fernando Perez <fperez@colorado.edu>
5890
5899
5891 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5900 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5892 magic properly formatted for screen.
5901 magic properly formatted for screen.
5893
5902
5894 * setup.py (make_shortcut): Changed things to put pdf version in
5903 * setup.py (make_shortcut): Changed things to put pdf version in
5895 doc/ instead of doc/manual (had to change lyxport a bit).
5904 doc/ instead of doc/manual (had to change lyxport a bit).
5896
5905
5897 * IPython/Magic.py (Profile.string_stats): made profile runs go
5906 * IPython/Magic.py (Profile.string_stats): made profile runs go
5898 through pager (they are long and a pager allows searching, saving,
5907 through pager (they are long and a pager allows searching, saving,
5899 etc.)
5908 etc.)
5900
5909
5901 2002-05-08 Fernando Perez <fperez@colorado.edu>
5910 2002-05-08 Fernando Perez <fperez@colorado.edu>
5902
5911
5903 * Released 0.2.12
5912 * Released 0.2.12
5904
5913
5905 2002-05-06 Fernando Perez <fperez@colorado.edu>
5914 2002-05-06 Fernando Perez <fperez@colorado.edu>
5906
5915
5907 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5916 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5908 introduced); 'hist n1 n2' was broken.
5917 introduced); 'hist n1 n2' was broken.
5909 (Magic.magic_pdb): added optional on/off arguments to @pdb
5918 (Magic.magic_pdb): added optional on/off arguments to @pdb
5910 (Magic.magic_run): added option -i to @run, which executes code in
5919 (Magic.magic_run): added option -i to @run, which executes code in
5911 the IPython namespace instead of a clean one. Also added @irun as
5920 the IPython namespace instead of a clean one. Also added @irun as
5912 an alias to @run -i.
5921 an alias to @run -i.
5913
5922
5914 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5923 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5915 fixed (it didn't really do anything, the namespaces were wrong).
5924 fixed (it didn't really do anything, the namespaces were wrong).
5916
5925
5917 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5926 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5918
5927
5919 * IPython/__init__.py (__all__): Fixed package namespace, now
5928 * IPython/__init__.py (__all__): Fixed package namespace, now
5920 'import IPython' does give access to IPython.<all> as
5929 'import IPython' does give access to IPython.<all> as
5921 expected. Also renamed __release__ to Release.
5930 expected. Also renamed __release__ to Release.
5922
5931
5923 * IPython/Debugger.py (__license__): created new Pdb class which
5932 * IPython/Debugger.py (__license__): created new Pdb class which
5924 functions like a drop-in for the normal pdb.Pdb but does NOT
5933 functions like a drop-in for the normal pdb.Pdb but does NOT
5925 import readline by default. This way it doesn't muck up IPython's
5934 import readline by default. This way it doesn't muck up IPython's
5926 readline handling, and now tab-completion finally works in the
5935 readline handling, and now tab-completion finally works in the
5927 debugger -- sort of. It completes things globally visible, but the
5936 debugger -- sort of. It completes things globally visible, but the
5928 completer doesn't track the stack as pdb walks it. That's a bit
5937 completer doesn't track the stack as pdb walks it. That's a bit
5929 tricky, and I'll have to implement it later.
5938 tricky, and I'll have to implement it later.
5930
5939
5931 2002-05-05 Fernando Perez <fperez@colorado.edu>
5940 2002-05-05 Fernando Perez <fperez@colorado.edu>
5932
5941
5933 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5942 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5934 magic docstrings when printed via ? (explicit \'s were being
5943 magic docstrings when printed via ? (explicit \'s were being
5935 printed).
5944 printed).
5936
5945
5937 * IPython/ipmaker.py (make_IPython): fixed namespace
5946 * IPython/ipmaker.py (make_IPython): fixed namespace
5938 identification bug. Now variables loaded via logs or command-line
5947 identification bug. Now variables loaded via logs or command-line
5939 files are recognized in the interactive namespace by @who.
5948 files are recognized in the interactive namespace by @who.
5940
5949
5941 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5950 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5942 log replay system stemming from the string form of Structs.
5951 log replay system stemming from the string form of Structs.
5943
5952
5944 * IPython/Magic.py (Macro.__init__): improved macros to properly
5953 * IPython/Magic.py (Macro.__init__): improved macros to properly
5945 handle magic commands in them.
5954 handle magic commands in them.
5946 (Magic.magic_logstart): usernames are now expanded so 'logstart
5955 (Magic.magic_logstart): usernames are now expanded so 'logstart
5947 ~/mylog' now works.
5956 ~/mylog' now works.
5948
5957
5949 * IPython/iplib.py (complete): fixed bug where paths starting with
5958 * IPython/iplib.py (complete): fixed bug where paths starting with
5950 '/' would be completed as magic names.
5959 '/' would be completed as magic names.
5951
5960
5952 2002-05-04 Fernando Perez <fperez@colorado.edu>
5961 2002-05-04 Fernando Perez <fperez@colorado.edu>
5953
5962
5954 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5963 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5955 allow running full programs under the profiler's control.
5964 allow running full programs under the profiler's control.
5956
5965
5957 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5966 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5958 mode to report exceptions verbosely but without formatting
5967 mode to report exceptions verbosely but without formatting
5959 variables. This addresses the issue of ipython 'freezing' (it's
5968 variables. This addresses the issue of ipython 'freezing' (it's
5960 not frozen, but caught in an expensive formatting loop) when huge
5969 not frozen, but caught in an expensive formatting loop) when huge
5961 variables are in the context of an exception.
5970 variables are in the context of an exception.
5962 (VerboseTB.text): Added '--->' markers at line where exception was
5971 (VerboseTB.text): Added '--->' markers at line where exception was
5963 triggered. Much clearer to read, especially in NoColor modes.
5972 triggered. Much clearer to read, especially in NoColor modes.
5964
5973
5965 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5974 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5966 implemented in reverse when changing to the new parse_options().
5975 implemented in reverse when changing to the new parse_options().
5967
5976
5968 2002-05-03 Fernando Perez <fperez@colorado.edu>
5977 2002-05-03 Fernando Perez <fperez@colorado.edu>
5969
5978
5970 * IPython/Magic.py (Magic.parse_options): new function so that
5979 * IPython/Magic.py (Magic.parse_options): new function so that
5971 magics can parse options easier.
5980 magics can parse options easier.
5972 (Magic.magic_prun): new function similar to profile.run(),
5981 (Magic.magic_prun): new function similar to profile.run(),
5973 suggested by Chris Hart.
5982 suggested by Chris Hart.
5974 (Magic.magic_cd): fixed behavior so that it only changes if
5983 (Magic.magic_cd): fixed behavior so that it only changes if
5975 directory actually is in history.
5984 directory actually is in history.
5976
5985
5977 * IPython/usage.py (__doc__): added information about potential
5986 * IPython/usage.py (__doc__): added information about potential
5978 slowness of Verbose exception mode when there are huge data
5987 slowness of Verbose exception mode when there are huge data
5979 structures to be formatted (thanks to Archie Paulson).
5988 structures to be formatted (thanks to Archie Paulson).
5980
5989
5981 * IPython/ipmaker.py (make_IPython): Changed default logging
5990 * IPython/ipmaker.py (make_IPython): Changed default logging
5982 (when simply called with -log) to use curr_dir/ipython.log in
5991 (when simply called with -log) to use curr_dir/ipython.log in
5983 rotate mode. Fixed crash which was occuring with -log before
5992 rotate mode. Fixed crash which was occuring with -log before
5984 (thanks to Jim Boyle).
5993 (thanks to Jim Boyle).
5985
5994
5986 2002-05-01 Fernando Perez <fperez@colorado.edu>
5995 2002-05-01 Fernando Perez <fperez@colorado.edu>
5987
5996
5988 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5997 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5989 was nasty -- though somewhat of a corner case).
5998 was nasty -- though somewhat of a corner case).
5990
5999
5991 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
6000 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5992 text (was a bug).
6001 text (was a bug).
5993
6002
5994 2002-04-30 Fernando Perez <fperez@colorado.edu>
6003 2002-04-30 Fernando Perez <fperez@colorado.edu>
5995
6004
5996 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
6005 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5997 a print after ^D or ^C from the user so that the In[] prompt
6006 a print after ^D or ^C from the user so that the In[] prompt
5998 doesn't over-run the gnuplot one.
6007 doesn't over-run the gnuplot one.
5999
6008
6000 2002-04-29 Fernando Perez <fperez@colorado.edu>
6009 2002-04-29 Fernando Perez <fperez@colorado.edu>
6001
6010
6002 * Released 0.2.10
6011 * Released 0.2.10
6003
6012
6004 * IPython/__release__.py (version): get date dynamically.
6013 * IPython/__release__.py (version): get date dynamically.
6005
6014
6006 * Misc. documentation updates thanks to Arnd's comments. Also ran
6015 * Misc. documentation updates thanks to Arnd's comments. Also ran
6007 a full spellcheck on the manual (hadn't been done in a while).
6016 a full spellcheck on the manual (hadn't been done in a while).
6008
6017
6009 2002-04-27 Fernando Perez <fperez@colorado.edu>
6018 2002-04-27 Fernando Perez <fperez@colorado.edu>
6010
6019
6011 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
6020 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
6012 starting a log in mid-session would reset the input history list.
6021 starting a log in mid-session would reset the input history list.
6013
6022
6014 2002-04-26 Fernando Perez <fperez@colorado.edu>
6023 2002-04-26 Fernando Perez <fperez@colorado.edu>
6015
6024
6016 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
6025 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
6017 all files were being included in an update. Now anything in
6026 all files were being included in an update. Now anything in
6018 UserConfig that matches [A-Za-z]*.py will go (this excludes
6027 UserConfig that matches [A-Za-z]*.py will go (this excludes
6019 __init__.py)
6028 __init__.py)
6020
6029
6021 2002-04-25 Fernando Perez <fperez@colorado.edu>
6030 2002-04-25 Fernando Perez <fperez@colorado.edu>
6022
6031
6023 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
6032 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
6024 to __builtins__ so that any form of embedded or imported code can
6033 to __builtins__ so that any form of embedded or imported code can
6025 test for being inside IPython.
6034 test for being inside IPython.
6026
6035
6027 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
6036 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
6028 changed to GnuplotMagic because it's now an importable module,
6037 changed to GnuplotMagic because it's now an importable module,
6029 this makes the name follow that of the standard Gnuplot module.
6038 this makes the name follow that of the standard Gnuplot module.
6030 GnuplotMagic can now be loaded at any time in mid-session.
6039 GnuplotMagic can now be loaded at any time in mid-session.
6031
6040
6032 2002-04-24 Fernando Perez <fperez@colorado.edu>
6041 2002-04-24 Fernando Perez <fperez@colorado.edu>
6033
6042
6034 * IPython/numutils.py: removed SIUnits. It doesn't properly set
6043 * IPython/numutils.py: removed SIUnits. It doesn't properly set
6035 the globals (IPython has its own namespace) and the
6044 the globals (IPython has its own namespace) and the
6036 PhysicalQuantity stuff is much better anyway.
6045 PhysicalQuantity stuff is much better anyway.
6037
6046
6038 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
6047 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
6039 embedding example to standard user directory for
6048 embedding example to standard user directory for
6040 distribution. Also put it in the manual.
6049 distribution. Also put it in the manual.
6041
6050
6042 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
6051 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
6043 instance as first argument (so it doesn't rely on some obscure
6052 instance as first argument (so it doesn't rely on some obscure
6044 hidden global).
6053 hidden global).
6045
6054
6046 * IPython/UserConfig/ipythonrc.py: put () back in accepted
6055 * IPython/UserConfig/ipythonrc.py: put () back in accepted
6047 delimiters. While it prevents ().TAB from working, it allows
6056 delimiters. While it prevents ().TAB from working, it allows
6048 completions in open (... expressions. This is by far a more common
6057 completions in open (... expressions. This is by far a more common
6049 case.
6058 case.
6050
6059
6051 2002-04-23 Fernando Perez <fperez@colorado.edu>
6060 2002-04-23 Fernando Perez <fperez@colorado.edu>
6052
6061
6053 * IPython/Extensions/InterpreterPasteInput.py: new
6062 * IPython/Extensions/InterpreterPasteInput.py: new
6054 syntax-processing module for pasting lines with >>> or ... at the
6063 syntax-processing module for pasting lines with >>> or ... at the
6055 start.
6064 start.
6056
6065
6057 * IPython/Extensions/PhysicalQ_Interactive.py
6066 * IPython/Extensions/PhysicalQ_Interactive.py
6058 (PhysicalQuantityInteractive.__int__): fixed to work with either
6067 (PhysicalQuantityInteractive.__int__): fixed to work with either
6059 Numeric or math.
6068 Numeric or math.
6060
6069
6061 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6070 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6062 provided profiles. Now we have:
6071 provided profiles. Now we have:
6063 -math -> math module as * and cmath with its own namespace.
6072 -math -> math module as * and cmath with its own namespace.
6064 -numeric -> Numeric as *, plus gnuplot & grace
6073 -numeric -> Numeric as *, plus gnuplot & grace
6065 -physics -> same as before
6074 -physics -> same as before
6066
6075
6067 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6076 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6068 user-defined magics wouldn't be found by @magic if they were
6077 user-defined magics wouldn't be found by @magic if they were
6069 defined as class methods. Also cleaned up the namespace search
6078 defined as class methods. Also cleaned up the namespace search
6070 logic and the string building (to use %s instead of many repeated
6079 logic and the string building (to use %s instead of many repeated
6071 string adds).
6080 string adds).
6072
6081
6073 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6082 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6074 of user-defined magics to operate with class methods (cleaner, in
6083 of user-defined magics to operate with class methods (cleaner, in
6075 line with the gnuplot code).
6084 line with the gnuplot code).
6076
6085
6077 2002-04-22 Fernando Perez <fperez@colorado.edu>
6086 2002-04-22 Fernando Perez <fperez@colorado.edu>
6078
6087
6079 * setup.py: updated dependency list so that manual is updated when
6088 * setup.py: updated dependency list so that manual is updated when
6080 all included files change.
6089 all included files change.
6081
6090
6082 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6091 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6083 the delimiter removal option (the fix is ugly right now).
6092 the delimiter removal option (the fix is ugly right now).
6084
6093
6085 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6094 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6086 all of the math profile (quicker loading, no conflict between
6095 all of the math profile (quicker loading, no conflict between
6087 g-9.8 and g-gnuplot).
6096 g-9.8 and g-gnuplot).
6088
6097
6089 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6098 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6090 name of post-mortem files to IPython_crash_report.txt.
6099 name of post-mortem files to IPython_crash_report.txt.
6091
6100
6092 * Cleanup/update of the docs. Added all the new readline info and
6101 * Cleanup/update of the docs. Added all the new readline info and
6093 formatted all lists as 'real lists'.
6102 formatted all lists as 'real lists'.
6094
6103
6095 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6104 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6096 tab-completion options, since the full readline parse_and_bind is
6105 tab-completion options, since the full readline parse_and_bind is
6097 now accessible.
6106 now accessible.
6098
6107
6099 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6108 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6100 handling of readline options. Now users can specify any string to
6109 handling of readline options. Now users can specify any string to
6101 be passed to parse_and_bind(), as well as the delimiters to be
6110 be passed to parse_and_bind(), as well as the delimiters to be
6102 removed.
6111 removed.
6103 (InteractiveShell.__init__): Added __name__ to the global
6112 (InteractiveShell.__init__): Added __name__ to the global
6104 namespace so that things like Itpl which rely on its existence
6113 namespace so that things like Itpl which rely on its existence
6105 don't crash.
6114 don't crash.
6106 (InteractiveShell._prefilter): Defined the default with a _ so
6115 (InteractiveShell._prefilter): Defined the default with a _ so
6107 that prefilter() is easier to override, while the default one
6116 that prefilter() is easier to override, while the default one
6108 remains available.
6117 remains available.
6109
6118
6110 2002-04-18 Fernando Perez <fperez@colorado.edu>
6119 2002-04-18 Fernando Perez <fperez@colorado.edu>
6111
6120
6112 * Added information about pdb in the docs.
6121 * Added information about pdb in the docs.
6113
6122
6114 2002-04-17 Fernando Perez <fperez@colorado.edu>
6123 2002-04-17 Fernando Perez <fperez@colorado.edu>
6115
6124
6116 * IPython/ipmaker.py (make_IPython): added rc_override option to
6125 * IPython/ipmaker.py (make_IPython): added rc_override option to
6117 allow passing config options at creation time which may override
6126 allow passing config options at creation time which may override
6118 anything set in the config files or command line. This is
6127 anything set in the config files or command line. This is
6119 particularly useful for configuring embedded instances.
6128 particularly useful for configuring embedded instances.
6120
6129
6121 2002-04-15 Fernando Perez <fperez@colorado.edu>
6130 2002-04-15 Fernando Perez <fperez@colorado.edu>
6122
6131
6123 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6132 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6124 crash embedded instances because of the input cache falling out of
6133 crash embedded instances because of the input cache falling out of
6125 sync with the output counter.
6134 sync with the output counter.
6126
6135
6127 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6136 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6128 mode which calls pdb after an uncaught exception in IPython itself.
6137 mode which calls pdb after an uncaught exception in IPython itself.
6129
6138
6130 2002-04-14 Fernando Perez <fperez@colorado.edu>
6139 2002-04-14 Fernando Perez <fperez@colorado.edu>
6131
6140
6132 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6141 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6133 readline, fix it back after each call.
6142 readline, fix it back after each call.
6134
6143
6135 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6144 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6136 method to force all access via __call__(), which guarantees that
6145 method to force all access via __call__(), which guarantees that
6137 traceback references are properly deleted.
6146 traceback references are properly deleted.
6138
6147
6139 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6148 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6140 improve printing when pprint is in use.
6149 improve printing when pprint is in use.
6141
6150
6142 2002-04-13 Fernando Perez <fperez@colorado.edu>
6151 2002-04-13 Fernando Perez <fperez@colorado.edu>
6143
6152
6144 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6153 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6145 exceptions aren't caught anymore. If the user triggers one, he
6154 exceptions aren't caught anymore. If the user triggers one, he
6146 should know why he's doing it and it should go all the way up,
6155 should know why he's doing it and it should go all the way up,
6147 just like any other exception. So now @abort will fully kill the
6156 just like any other exception. So now @abort will fully kill the
6148 embedded interpreter and the embedding code (unless that happens
6157 embedded interpreter and the embedding code (unless that happens
6149 to catch SystemExit).
6158 to catch SystemExit).
6150
6159
6151 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6160 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6152 and a debugger() method to invoke the interactive pdb debugger
6161 and a debugger() method to invoke the interactive pdb debugger
6153 after printing exception information. Also added the corresponding
6162 after printing exception information. Also added the corresponding
6154 -pdb option and @pdb magic to control this feature, and updated
6163 -pdb option and @pdb magic to control this feature, and updated
6155 the docs. After a suggestion from Christopher Hart
6164 the docs. After a suggestion from Christopher Hart
6156 (hart-AT-caltech.edu).
6165 (hart-AT-caltech.edu).
6157
6166
6158 2002-04-12 Fernando Perez <fperez@colorado.edu>
6167 2002-04-12 Fernando Perez <fperez@colorado.edu>
6159
6168
6160 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6169 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6161 the exception handlers defined by the user (not the CrashHandler)
6170 the exception handlers defined by the user (not the CrashHandler)
6162 so that user exceptions don't trigger an ipython bug report.
6171 so that user exceptions don't trigger an ipython bug report.
6163
6172
6164 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6173 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6165 configurable (it should have always been so).
6174 configurable (it should have always been so).
6166
6175
6167 2002-03-26 Fernando Perez <fperez@colorado.edu>
6176 2002-03-26 Fernando Perez <fperez@colorado.edu>
6168
6177
6169 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6178 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6170 and there to fix embedding namespace issues. This should all be
6179 and there to fix embedding namespace issues. This should all be
6171 done in a more elegant way.
6180 done in a more elegant way.
6172
6181
6173 2002-03-25 Fernando Perez <fperez@colorado.edu>
6182 2002-03-25 Fernando Perez <fperez@colorado.edu>
6174
6183
6175 * IPython/genutils.py (get_home_dir): Try to make it work under
6184 * IPython/genutils.py (get_home_dir): Try to make it work under
6176 win9x also.
6185 win9x also.
6177
6186
6178 2002-03-20 Fernando Perez <fperez@colorado.edu>
6187 2002-03-20 Fernando Perez <fperez@colorado.edu>
6179
6188
6180 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6189 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6181 sys.displayhook untouched upon __init__.
6190 sys.displayhook untouched upon __init__.
6182
6191
6183 2002-03-19 Fernando Perez <fperez@colorado.edu>
6192 2002-03-19 Fernando Perez <fperez@colorado.edu>
6184
6193
6185 * Released 0.2.9 (for embedding bug, basically).
6194 * Released 0.2.9 (for embedding bug, basically).
6186
6195
6187 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6196 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6188 exceptions so that enclosing shell's state can be restored.
6197 exceptions so that enclosing shell's state can be restored.
6189
6198
6190 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6199 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6191 naming conventions in the .ipython/ dir.
6200 naming conventions in the .ipython/ dir.
6192
6201
6193 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6202 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6194 from delimiters list so filenames with - in them get expanded.
6203 from delimiters list so filenames with - in them get expanded.
6195
6204
6196 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6205 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6197 sys.displayhook not being properly restored after an embedded call.
6206 sys.displayhook not being properly restored after an embedded call.
6198
6207
6199 2002-03-18 Fernando Perez <fperez@colorado.edu>
6208 2002-03-18 Fernando Perez <fperez@colorado.edu>
6200
6209
6201 * Released 0.2.8
6210 * Released 0.2.8
6202
6211
6203 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6212 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6204 some files weren't being included in a -upgrade.
6213 some files weren't being included in a -upgrade.
6205 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6214 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6206 on' so that the first tab completes.
6215 on' so that the first tab completes.
6207 (InteractiveShell.handle_magic): fixed bug with spaces around
6216 (InteractiveShell.handle_magic): fixed bug with spaces around
6208 quotes breaking many magic commands.
6217 quotes breaking many magic commands.
6209
6218
6210 * setup.py: added note about ignoring the syntax error messages at
6219 * setup.py: added note about ignoring the syntax error messages at
6211 installation.
6220 installation.
6212
6221
6213 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6222 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6214 streamlining the gnuplot interface, now there's only one magic @gp.
6223 streamlining the gnuplot interface, now there's only one magic @gp.
6215
6224
6216 2002-03-17 Fernando Perez <fperez@colorado.edu>
6225 2002-03-17 Fernando Perez <fperez@colorado.edu>
6217
6226
6218 * IPython/UserConfig/magic_gnuplot.py: new name for the
6227 * IPython/UserConfig/magic_gnuplot.py: new name for the
6219 example-magic_pm.py file. Much enhanced system, now with a shell
6228 example-magic_pm.py file. Much enhanced system, now with a shell
6220 for communicating directly with gnuplot, one command at a time.
6229 for communicating directly with gnuplot, one command at a time.
6221
6230
6222 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6231 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6223 setting __name__=='__main__'.
6232 setting __name__=='__main__'.
6224
6233
6225 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6234 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6226 mini-shell for accessing gnuplot from inside ipython. Should
6235 mini-shell for accessing gnuplot from inside ipython. Should
6227 extend it later for grace access too. Inspired by Arnd's
6236 extend it later for grace access too. Inspired by Arnd's
6228 suggestion.
6237 suggestion.
6229
6238
6230 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6239 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6231 calling magic functions with () in their arguments. Thanks to Arnd
6240 calling magic functions with () in their arguments. Thanks to Arnd
6232 Baecker for pointing this to me.
6241 Baecker for pointing this to me.
6233
6242
6234 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6243 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6235 infinitely for integer or complex arrays (only worked with floats).
6244 infinitely for integer or complex arrays (only worked with floats).
6236
6245
6237 2002-03-16 Fernando Perez <fperez@colorado.edu>
6246 2002-03-16 Fernando Perez <fperez@colorado.edu>
6238
6247
6239 * setup.py: Merged setup and setup_windows into a single script
6248 * setup.py: Merged setup and setup_windows into a single script
6240 which properly handles things for windows users.
6249 which properly handles things for windows users.
6241
6250
6242 2002-03-15 Fernando Perez <fperez@colorado.edu>
6251 2002-03-15 Fernando Perez <fperez@colorado.edu>
6243
6252
6244 * Big change to the manual: now the magics are all automatically
6253 * Big change to the manual: now the magics are all automatically
6245 documented. This information is generated from their docstrings
6254 documented. This information is generated from their docstrings
6246 and put in a latex file included by the manual lyx file. This way
6255 and put in a latex file included by the manual lyx file. This way
6247 we get always up to date information for the magics. The manual
6256 we get always up to date information for the magics. The manual
6248 now also has proper version information, also auto-synced.
6257 now also has proper version information, also auto-synced.
6249
6258
6250 For this to work, an undocumented --magic_docstrings option was added.
6259 For this to work, an undocumented --magic_docstrings option was added.
6251
6260
6252 2002-03-13 Fernando Perez <fperez@colorado.edu>
6261 2002-03-13 Fernando Perez <fperez@colorado.edu>
6253
6262
6254 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6263 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6255 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6264 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6256
6265
6257 2002-03-12 Fernando Perez <fperez@colorado.edu>
6266 2002-03-12 Fernando Perez <fperez@colorado.edu>
6258
6267
6259 * IPython/ultraTB.py (TermColors): changed color escapes again to
6268 * IPython/ultraTB.py (TermColors): changed color escapes again to
6260 fix the (old, reintroduced) line-wrapping bug. Basically, if
6269 fix the (old, reintroduced) line-wrapping bug. Basically, if
6261 \001..\002 aren't given in the color escapes, lines get wrapped
6270 \001..\002 aren't given in the color escapes, lines get wrapped
6262 weirdly. But giving those screws up old xterms and emacs terms. So
6271 weirdly. But giving those screws up old xterms and emacs terms. So
6263 I added some logic for emacs terms to be ok, but I can't identify old
6272 I added some logic for emacs terms to be ok, but I can't identify old
6264 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6273 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6265
6274
6266 2002-03-10 Fernando Perez <fperez@colorado.edu>
6275 2002-03-10 Fernando Perez <fperez@colorado.edu>
6267
6276
6268 * IPython/usage.py (__doc__): Various documentation cleanups and
6277 * IPython/usage.py (__doc__): Various documentation cleanups and
6269 updates, both in usage docstrings and in the manual.
6278 updates, both in usage docstrings and in the manual.
6270
6279
6271 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6280 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6272 handling of caching. Set minimum acceptabe value for having a
6281 handling of caching. Set minimum acceptabe value for having a
6273 cache at 20 values.
6282 cache at 20 values.
6274
6283
6275 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6284 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6276 install_first_time function to a method, renamed it and added an
6285 install_first_time function to a method, renamed it and added an
6277 'upgrade' mode. Now people can update their config directory with
6286 'upgrade' mode. Now people can update their config directory with
6278 a simple command line switch (-upgrade, also new).
6287 a simple command line switch (-upgrade, also new).
6279
6288
6280 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6289 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6281 @file (convenient for automagic users under Python >= 2.2).
6290 @file (convenient for automagic users under Python >= 2.2).
6282 Removed @files (it seemed more like a plural than an abbrev. of
6291 Removed @files (it seemed more like a plural than an abbrev. of
6283 'file show').
6292 'file show').
6284
6293
6285 * IPython/iplib.py (install_first_time): Fixed crash if there were
6294 * IPython/iplib.py (install_first_time): Fixed crash if there were
6286 backup files ('~') in .ipython/ install directory.
6295 backup files ('~') in .ipython/ install directory.
6287
6296
6288 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6297 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6289 system. Things look fine, but these changes are fairly
6298 system. Things look fine, but these changes are fairly
6290 intrusive. Test them for a few days.
6299 intrusive. Test them for a few days.
6291
6300
6292 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6301 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6293 the prompts system. Now all in/out prompt strings are user
6302 the prompts system. Now all in/out prompt strings are user
6294 controllable. This is particularly useful for embedding, as one
6303 controllable. This is particularly useful for embedding, as one
6295 can tag embedded instances with particular prompts.
6304 can tag embedded instances with particular prompts.
6296
6305
6297 Also removed global use of sys.ps1/2, which now allows nested
6306 Also removed global use of sys.ps1/2, which now allows nested
6298 embeddings without any problems. Added command-line options for
6307 embeddings without any problems. Added command-line options for
6299 the prompt strings.
6308 the prompt strings.
6300
6309
6301 2002-03-08 Fernando Perez <fperez@colorado.edu>
6310 2002-03-08 Fernando Perez <fperez@colorado.edu>
6302
6311
6303 * IPython/UserConfig/example-embed-short.py (ipshell): added
6312 * IPython/UserConfig/example-embed-short.py (ipshell): added
6304 example file with the bare minimum code for embedding.
6313 example file with the bare minimum code for embedding.
6305
6314
6306 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6315 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6307 functionality for the embeddable shell to be activated/deactivated
6316 functionality for the embeddable shell to be activated/deactivated
6308 either globally or at each call.
6317 either globally or at each call.
6309
6318
6310 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6319 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6311 rewriting the prompt with '--->' for auto-inputs with proper
6320 rewriting the prompt with '--->' for auto-inputs with proper
6312 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6321 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6313 this is handled by the prompts class itself, as it should.
6322 this is handled by the prompts class itself, as it should.
6314
6323
6315 2002-03-05 Fernando Perez <fperez@colorado.edu>
6324 2002-03-05 Fernando Perez <fperez@colorado.edu>
6316
6325
6317 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6326 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6318 @logstart to avoid name clashes with the math log function.
6327 @logstart to avoid name clashes with the math log function.
6319
6328
6320 * Big updates to X/Emacs section of the manual.
6329 * Big updates to X/Emacs section of the manual.
6321
6330
6322 * Removed ipython_emacs. Milan explained to me how to pass
6331 * Removed ipython_emacs. Milan explained to me how to pass
6323 arguments to ipython through Emacs. Some day I'm going to end up
6332 arguments to ipython through Emacs. Some day I'm going to end up
6324 learning some lisp...
6333 learning some lisp...
6325
6334
6326 2002-03-04 Fernando Perez <fperez@colorado.edu>
6335 2002-03-04 Fernando Perez <fperez@colorado.edu>
6327
6336
6328 * IPython/ipython_emacs: Created script to be used as the
6337 * IPython/ipython_emacs: Created script to be used as the
6329 py-python-command Emacs variable so we can pass IPython
6338 py-python-command Emacs variable so we can pass IPython
6330 parameters. I can't figure out how to tell Emacs directly to pass
6339 parameters. I can't figure out how to tell Emacs directly to pass
6331 parameters to IPython, so a dummy shell script will do it.
6340 parameters to IPython, so a dummy shell script will do it.
6332
6341
6333 Other enhancements made for things to work better under Emacs'
6342 Other enhancements made for things to work better under Emacs'
6334 various types of terminals. Many thanks to Milan Zamazal
6343 various types of terminals. Many thanks to Milan Zamazal
6335 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6344 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6336
6345
6337 2002-03-01 Fernando Perez <fperez@colorado.edu>
6346 2002-03-01 Fernando Perez <fperez@colorado.edu>
6338
6347
6339 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6348 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6340 that loading of readline is now optional. This gives better
6349 that loading of readline is now optional. This gives better
6341 control to emacs users.
6350 control to emacs users.
6342
6351
6343 * IPython/ultraTB.py (__date__): Modified color escape sequences
6352 * IPython/ultraTB.py (__date__): Modified color escape sequences
6344 and now things work fine under xterm and in Emacs' term buffers
6353 and now things work fine under xterm and in Emacs' term buffers
6345 (though not shell ones). Well, in emacs you get colors, but all
6354 (though not shell ones). Well, in emacs you get colors, but all
6346 seem to be 'light' colors (no difference between dark and light
6355 seem to be 'light' colors (no difference between dark and light
6347 ones). But the garbage chars are gone, and also in xterms. It
6356 ones). But the garbage chars are gone, and also in xterms. It
6348 seems that now I'm using 'cleaner' ansi sequences.
6357 seems that now I'm using 'cleaner' ansi sequences.
6349
6358
6350 2002-02-21 Fernando Perez <fperez@colorado.edu>
6359 2002-02-21 Fernando Perez <fperez@colorado.edu>
6351
6360
6352 * Released 0.2.7 (mainly to publish the scoping fix).
6361 * Released 0.2.7 (mainly to publish the scoping fix).
6353
6362
6354 * IPython/Logger.py (Logger.logstate): added. A corresponding
6363 * IPython/Logger.py (Logger.logstate): added. A corresponding
6355 @logstate magic was created.
6364 @logstate magic was created.
6356
6365
6357 * IPython/Magic.py: fixed nested scoping problem under Python
6366 * IPython/Magic.py: fixed nested scoping problem under Python
6358 2.1.x (automagic wasn't working).
6367 2.1.x (automagic wasn't working).
6359
6368
6360 2002-02-20 Fernando Perez <fperez@colorado.edu>
6369 2002-02-20 Fernando Perez <fperez@colorado.edu>
6361
6370
6362 * Released 0.2.6.
6371 * Released 0.2.6.
6363
6372
6364 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6373 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6365 option so that logs can come out without any headers at all.
6374 option so that logs can come out without any headers at all.
6366
6375
6367 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6376 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6368 SciPy.
6377 SciPy.
6369
6378
6370 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6379 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6371 that embedded IPython calls don't require vars() to be explicitly
6380 that embedded IPython calls don't require vars() to be explicitly
6372 passed. Now they are extracted from the caller's frame (code
6381 passed. Now they are extracted from the caller's frame (code
6373 snatched from Eric Jones' weave). Added better documentation to
6382 snatched from Eric Jones' weave). Added better documentation to
6374 the section on embedding and the example file.
6383 the section on embedding and the example file.
6375
6384
6376 * IPython/genutils.py (page): Changed so that under emacs, it just
6385 * IPython/genutils.py (page): Changed so that under emacs, it just
6377 prints the string. You can then page up and down in the emacs
6386 prints the string. You can then page up and down in the emacs
6378 buffer itself. This is how the builtin help() works.
6387 buffer itself. This is how the builtin help() works.
6379
6388
6380 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6389 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6381 macro scoping: macros need to be executed in the user's namespace
6390 macro scoping: macros need to be executed in the user's namespace
6382 to work as if they had been typed by the user.
6391 to work as if they had been typed by the user.
6383
6392
6384 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6393 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6385 execute automatically (no need to type 'exec...'). They then
6394 execute automatically (no need to type 'exec...'). They then
6386 behave like 'true macros'. The printing system was also modified
6395 behave like 'true macros'. The printing system was also modified
6387 for this to work.
6396 for this to work.
6388
6397
6389 2002-02-19 Fernando Perez <fperez@colorado.edu>
6398 2002-02-19 Fernando Perez <fperez@colorado.edu>
6390
6399
6391 * IPython/genutils.py (page_file): new function for paging files
6400 * IPython/genutils.py (page_file): new function for paging files
6392 in an OS-independent way. Also necessary for file viewing to work
6401 in an OS-independent way. Also necessary for file viewing to work
6393 well inside Emacs buffers.
6402 well inside Emacs buffers.
6394 (page): Added checks for being in an emacs buffer.
6403 (page): Added checks for being in an emacs buffer.
6395 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6404 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6396 same bug in iplib.
6405 same bug in iplib.
6397
6406
6398 2002-02-18 Fernando Perez <fperez@colorado.edu>
6407 2002-02-18 Fernando Perez <fperez@colorado.edu>
6399
6408
6400 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6409 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6401 of readline so that IPython can work inside an Emacs buffer.
6410 of readline so that IPython can work inside an Emacs buffer.
6402
6411
6403 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6412 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6404 method signatures (they weren't really bugs, but it looks cleaner
6413 method signatures (they weren't really bugs, but it looks cleaner
6405 and keeps PyChecker happy).
6414 and keeps PyChecker happy).
6406
6415
6407 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6416 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6408 for implementing various user-defined hooks. Currently only
6417 for implementing various user-defined hooks. Currently only
6409 display is done.
6418 display is done.
6410
6419
6411 * IPython/Prompts.py (CachedOutput._display): changed display
6420 * IPython/Prompts.py (CachedOutput._display): changed display
6412 functions so that they can be dynamically changed by users easily.
6421 functions so that they can be dynamically changed by users easily.
6413
6422
6414 * IPython/Extensions/numeric_formats.py (num_display): added an
6423 * IPython/Extensions/numeric_formats.py (num_display): added an
6415 extension for printing NumPy arrays in flexible manners. It
6424 extension for printing NumPy arrays in flexible manners. It
6416 doesn't do anything yet, but all the structure is in
6425 doesn't do anything yet, but all the structure is in
6417 place. Ultimately the plan is to implement output format control
6426 place. Ultimately the plan is to implement output format control
6418 like in Octave.
6427 like in Octave.
6419
6428
6420 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6429 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6421 methods are found at run-time by all the automatic machinery.
6430 methods are found at run-time by all the automatic machinery.
6422
6431
6423 2002-02-17 Fernando Perez <fperez@colorado.edu>
6432 2002-02-17 Fernando Perez <fperez@colorado.edu>
6424
6433
6425 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6434 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6426 whole file a little.
6435 whole file a little.
6427
6436
6428 * ToDo: closed this document. Now there's a new_design.lyx
6437 * ToDo: closed this document. Now there's a new_design.lyx
6429 document for all new ideas. Added making a pdf of it for the
6438 document for all new ideas. Added making a pdf of it for the
6430 end-user distro.
6439 end-user distro.
6431
6440
6432 * IPython/Logger.py (Logger.switch_log): Created this to replace
6441 * IPython/Logger.py (Logger.switch_log): Created this to replace
6433 logon() and logoff(). It also fixes a nasty crash reported by
6442 logon() and logoff(). It also fixes a nasty crash reported by
6434 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6443 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6435
6444
6436 * IPython/iplib.py (complete): got auto-completion to work with
6445 * IPython/iplib.py (complete): got auto-completion to work with
6437 automagic (I had wanted this for a long time).
6446 automagic (I had wanted this for a long time).
6438
6447
6439 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6448 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6440 to @file, since file() is now a builtin and clashes with automagic
6449 to @file, since file() is now a builtin and clashes with automagic
6441 for @file.
6450 for @file.
6442
6451
6443 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6452 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6444 of this was previously in iplib, which had grown to more than 2000
6453 of this was previously in iplib, which had grown to more than 2000
6445 lines, way too long. No new functionality, but it makes managing
6454 lines, way too long. No new functionality, but it makes managing
6446 the code a bit easier.
6455 the code a bit easier.
6447
6456
6448 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6457 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6449 information to crash reports.
6458 information to crash reports.
6450
6459
6451 2002-02-12 Fernando Perez <fperez@colorado.edu>
6460 2002-02-12 Fernando Perez <fperez@colorado.edu>
6452
6461
6453 * Released 0.2.5.
6462 * Released 0.2.5.
6454
6463
6455 2002-02-11 Fernando Perez <fperez@colorado.edu>
6464 2002-02-11 Fernando Perez <fperez@colorado.edu>
6456
6465
6457 * Wrote a relatively complete Windows installer. It puts
6466 * Wrote a relatively complete Windows installer. It puts
6458 everything in place, creates Start Menu entries and fixes the
6467 everything in place, creates Start Menu entries and fixes the
6459 color issues. Nothing fancy, but it works.
6468 color issues. Nothing fancy, but it works.
6460
6469
6461 2002-02-10 Fernando Perez <fperez@colorado.edu>
6470 2002-02-10 Fernando Perez <fperez@colorado.edu>
6462
6471
6463 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6472 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6464 os.path.expanduser() call so that we can type @run ~/myfile.py and
6473 os.path.expanduser() call so that we can type @run ~/myfile.py and
6465 have thigs work as expected.
6474 have thigs work as expected.
6466
6475
6467 * IPython/genutils.py (page): fixed exception handling so things
6476 * IPython/genutils.py (page): fixed exception handling so things
6468 work both in Unix and Windows correctly. Quitting a pager triggers
6477 work both in Unix and Windows correctly. Quitting a pager triggers
6469 an IOError/broken pipe in Unix, and in windows not finding a pager
6478 an IOError/broken pipe in Unix, and in windows not finding a pager
6470 is also an IOError, so I had to actually look at the return value
6479 is also an IOError, so I had to actually look at the return value
6471 of the exception, not just the exception itself. Should be ok now.
6480 of the exception, not just the exception itself. Should be ok now.
6472
6481
6473 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6482 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6474 modified to allow case-insensitive color scheme changes.
6483 modified to allow case-insensitive color scheme changes.
6475
6484
6476 2002-02-09 Fernando Perez <fperez@colorado.edu>
6485 2002-02-09 Fernando Perez <fperez@colorado.edu>
6477
6486
6478 * IPython/genutils.py (native_line_ends): new function to leave
6487 * IPython/genutils.py (native_line_ends): new function to leave
6479 user config files with os-native line-endings.
6488 user config files with os-native line-endings.
6480
6489
6481 * README and manual updates.
6490 * README and manual updates.
6482
6491
6483 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6492 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6484 instead of StringType to catch Unicode strings.
6493 instead of StringType to catch Unicode strings.
6485
6494
6486 * IPython/genutils.py (filefind): fixed bug for paths with
6495 * IPython/genutils.py (filefind): fixed bug for paths with
6487 embedded spaces (very common in Windows).
6496 embedded spaces (very common in Windows).
6488
6497
6489 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6498 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6490 files under Windows, so that they get automatically associated
6499 files under Windows, so that they get automatically associated
6491 with a text editor. Windows makes it a pain to handle
6500 with a text editor. Windows makes it a pain to handle
6492 extension-less files.
6501 extension-less files.
6493
6502
6494 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6503 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6495 warning about readline only occur for Posix. In Windows there's no
6504 warning about readline only occur for Posix. In Windows there's no
6496 way to get readline, so why bother with the warning.
6505 way to get readline, so why bother with the warning.
6497
6506
6498 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6507 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6499 for __str__ instead of dir(self), since dir() changed in 2.2.
6508 for __str__ instead of dir(self), since dir() changed in 2.2.
6500
6509
6501 * Ported to Windows! Tested on XP, I suspect it should work fine
6510 * Ported to Windows! Tested on XP, I suspect it should work fine
6502 on NT/2000, but I don't think it will work on 98 et al. That
6511 on NT/2000, but I don't think it will work on 98 et al. That
6503 series of Windows is such a piece of junk anyway that I won't try
6512 series of Windows is such a piece of junk anyway that I won't try
6504 porting it there. The XP port was straightforward, showed a few
6513 porting it there. The XP port was straightforward, showed a few
6505 bugs here and there (fixed all), in particular some string
6514 bugs here and there (fixed all), in particular some string
6506 handling stuff which required considering Unicode strings (which
6515 handling stuff which required considering Unicode strings (which
6507 Windows uses). This is good, but hasn't been too tested :) No
6516 Windows uses). This is good, but hasn't been too tested :) No
6508 fancy installer yet, I'll put a note in the manual so people at
6517 fancy installer yet, I'll put a note in the manual so people at
6509 least make manually a shortcut.
6518 least make manually a shortcut.
6510
6519
6511 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6520 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6512 into a single one, "colors". This now controls both prompt and
6521 into a single one, "colors". This now controls both prompt and
6513 exception color schemes, and can be changed both at startup
6522 exception color schemes, and can be changed both at startup
6514 (either via command-line switches or via ipythonrc files) and at
6523 (either via command-line switches or via ipythonrc files) and at
6515 runtime, with @colors.
6524 runtime, with @colors.
6516 (Magic.magic_run): renamed @prun to @run and removed the old
6525 (Magic.magic_run): renamed @prun to @run and removed the old
6517 @run. The two were too similar to warrant keeping both.
6526 @run. The two were too similar to warrant keeping both.
6518
6527
6519 2002-02-03 Fernando Perez <fperez@colorado.edu>
6528 2002-02-03 Fernando Perez <fperez@colorado.edu>
6520
6529
6521 * IPython/iplib.py (install_first_time): Added comment on how to
6530 * IPython/iplib.py (install_first_time): Added comment on how to
6522 configure the color options for first-time users. Put a <return>
6531 configure the color options for first-time users. Put a <return>
6523 request at the end so that small-terminal users get a chance to
6532 request at the end so that small-terminal users get a chance to
6524 read the startup info.
6533 read the startup info.
6525
6534
6526 2002-01-23 Fernando Perez <fperez@colorado.edu>
6535 2002-01-23 Fernando Perez <fperez@colorado.edu>
6527
6536
6528 * IPython/iplib.py (CachedOutput.update): Changed output memory
6537 * IPython/iplib.py (CachedOutput.update): Changed output memory
6529 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6538 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6530 input history we still use _i. Did this b/c these variable are
6539 input history we still use _i. Did this b/c these variable are
6531 very commonly used in interactive work, so the less we need to
6540 very commonly used in interactive work, so the less we need to
6532 type the better off we are.
6541 type the better off we are.
6533 (Magic.magic_prun): updated @prun to better handle the namespaces
6542 (Magic.magic_prun): updated @prun to better handle the namespaces
6534 the file will run in, including a fix for __name__ not being set
6543 the file will run in, including a fix for __name__ not being set
6535 before.
6544 before.
6536
6545
6537 2002-01-20 Fernando Perez <fperez@colorado.edu>
6546 2002-01-20 Fernando Perez <fperez@colorado.edu>
6538
6547
6539 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6548 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6540 extra garbage for Python 2.2. Need to look more carefully into
6549 extra garbage for Python 2.2. Need to look more carefully into
6541 this later.
6550 this later.
6542
6551
6543 2002-01-19 Fernando Perez <fperez@colorado.edu>
6552 2002-01-19 Fernando Perez <fperez@colorado.edu>
6544
6553
6545 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6554 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6546 display SyntaxError exceptions properly formatted when they occur
6555 display SyntaxError exceptions properly formatted when they occur
6547 (they can be triggered by imported code).
6556 (they can be triggered by imported code).
6548
6557
6549 2002-01-18 Fernando Perez <fperez@colorado.edu>
6558 2002-01-18 Fernando Perez <fperez@colorado.edu>
6550
6559
6551 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6560 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6552 SyntaxError exceptions are reported nicely formatted, instead of
6561 SyntaxError exceptions are reported nicely formatted, instead of
6553 spitting out only offset information as before.
6562 spitting out only offset information as before.
6554 (Magic.magic_prun): Added the @prun function for executing
6563 (Magic.magic_prun): Added the @prun function for executing
6555 programs with command line args inside IPython.
6564 programs with command line args inside IPython.
6556
6565
6557 2002-01-16 Fernando Perez <fperez@colorado.edu>
6566 2002-01-16 Fernando Perez <fperez@colorado.edu>
6558
6567
6559 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6568 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6560 to *not* include the last item given in a range. This brings their
6569 to *not* include the last item given in a range. This brings their
6561 behavior in line with Python's slicing:
6570 behavior in line with Python's slicing:
6562 a[n1:n2] -> a[n1]...a[n2-1]
6571 a[n1:n2] -> a[n1]...a[n2-1]
6563 It may be a bit less convenient, but I prefer to stick to Python's
6572 It may be a bit less convenient, but I prefer to stick to Python's
6564 conventions *everywhere*, so users never have to wonder.
6573 conventions *everywhere*, so users never have to wonder.
6565 (Magic.magic_macro): Added @macro function to ease the creation of
6574 (Magic.magic_macro): Added @macro function to ease the creation of
6566 macros.
6575 macros.
6567
6576
6568 2002-01-05 Fernando Perez <fperez@colorado.edu>
6577 2002-01-05 Fernando Perez <fperez@colorado.edu>
6569
6578
6570 * Released 0.2.4.
6579 * Released 0.2.4.
6571
6580
6572 * IPython/iplib.py (Magic.magic_pdef):
6581 * IPython/iplib.py (Magic.magic_pdef):
6573 (InteractiveShell.safe_execfile): report magic lines and error
6582 (InteractiveShell.safe_execfile): report magic lines and error
6574 lines without line numbers so one can easily copy/paste them for
6583 lines without line numbers so one can easily copy/paste them for
6575 re-execution.
6584 re-execution.
6576
6585
6577 * Updated manual with recent changes.
6586 * Updated manual with recent changes.
6578
6587
6579 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6588 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6580 docstring printing when class? is called. Very handy for knowing
6589 docstring printing when class? is called. Very handy for knowing
6581 how to create class instances (as long as __init__ is well
6590 how to create class instances (as long as __init__ is well
6582 documented, of course :)
6591 documented, of course :)
6583 (Magic.magic_doc): print both class and constructor docstrings.
6592 (Magic.magic_doc): print both class and constructor docstrings.
6584 (Magic.magic_pdef): give constructor info if passed a class and
6593 (Magic.magic_pdef): give constructor info if passed a class and
6585 __call__ info for callable object instances.
6594 __call__ info for callable object instances.
6586
6595
6587 2002-01-04 Fernando Perez <fperez@colorado.edu>
6596 2002-01-04 Fernando Perez <fperez@colorado.edu>
6588
6597
6589 * Made deep_reload() off by default. It doesn't always work
6598 * Made deep_reload() off by default. It doesn't always work
6590 exactly as intended, so it's probably safer to have it off. It's
6599 exactly as intended, so it's probably safer to have it off. It's
6591 still available as dreload() anyway, so nothing is lost.
6600 still available as dreload() anyway, so nothing is lost.
6592
6601
6593 2002-01-02 Fernando Perez <fperez@colorado.edu>
6602 2002-01-02 Fernando Perez <fperez@colorado.edu>
6594
6603
6595 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6604 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6596 so I wanted an updated release).
6605 so I wanted an updated release).
6597
6606
6598 2001-12-27 Fernando Perez <fperez@colorado.edu>
6607 2001-12-27 Fernando Perez <fperez@colorado.edu>
6599
6608
6600 * IPython/iplib.py (InteractiveShell.interact): Added the original
6609 * IPython/iplib.py (InteractiveShell.interact): Added the original
6601 code from 'code.py' for this module in order to change the
6610 code from 'code.py' for this module in order to change the
6602 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6611 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6603 the history cache would break when the user hit Ctrl-C, and
6612 the history cache would break when the user hit Ctrl-C, and
6604 interact() offers no way to add any hooks to it.
6613 interact() offers no way to add any hooks to it.
6605
6614
6606 2001-12-23 Fernando Perez <fperez@colorado.edu>
6615 2001-12-23 Fernando Perez <fperez@colorado.edu>
6607
6616
6608 * setup.py: added check for 'MANIFEST' before trying to remove
6617 * setup.py: added check for 'MANIFEST' before trying to remove
6609 it. Thanks to Sean Reifschneider.
6618 it. Thanks to Sean Reifschneider.
6610
6619
6611 2001-12-22 Fernando Perez <fperez@colorado.edu>
6620 2001-12-22 Fernando Perez <fperez@colorado.edu>
6612
6621
6613 * Released 0.2.2.
6622 * Released 0.2.2.
6614
6623
6615 * Finished (reasonably) writing the manual. Later will add the
6624 * Finished (reasonably) writing the manual. Later will add the
6616 python-standard navigation stylesheets, but for the time being
6625 python-standard navigation stylesheets, but for the time being
6617 it's fairly complete. Distribution will include html and pdf
6626 it's fairly complete. Distribution will include html and pdf
6618 versions.
6627 versions.
6619
6628
6620 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6629 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6621 (MayaVi author).
6630 (MayaVi author).
6622
6631
6623 2001-12-21 Fernando Perez <fperez@colorado.edu>
6632 2001-12-21 Fernando Perez <fperez@colorado.edu>
6624
6633
6625 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6634 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6626 good public release, I think (with the manual and the distutils
6635 good public release, I think (with the manual and the distutils
6627 installer). The manual can use some work, but that can go
6636 installer). The manual can use some work, but that can go
6628 slowly. Otherwise I think it's quite nice for end users. Next
6637 slowly. Otherwise I think it's quite nice for end users. Next
6629 summer, rewrite the guts of it...
6638 summer, rewrite the guts of it...
6630
6639
6631 * Changed format of ipythonrc files to use whitespace as the
6640 * Changed format of ipythonrc files to use whitespace as the
6632 separator instead of an explicit '='. Cleaner.
6641 separator instead of an explicit '='. Cleaner.
6633
6642
6634 2001-12-20 Fernando Perez <fperez@colorado.edu>
6643 2001-12-20 Fernando Perez <fperez@colorado.edu>
6635
6644
6636 * Started a manual in LyX. For now it's just a quick merge of the
6645 * Started a manual in LyX. For now it's just a quick merge of the
6637 various internal docstrings and READMEs. Later it may grow into a
6646 various internal docstrings and READMEs. Later it may grow into a
6638 nice, full-blown manual.
6647 nice, full-blown manual.
6639
6648
6640 * Set up a distutils based installer. Installation should now be
6649 * Set up a distutils based installer. Installation should now be
6641 trivially simple for end-users.
6650 trivially simple for end-users.
6642
6651
6643 2001-12-11 Fernando Perez <fperez@colorado.edu>
6652 2001-12-11 Fernando Perez <fperez@colorado.edu>
6644
6653
6645 * Released 0.2.0. First public release, announced it at
6654 * Released 0.2.0. First public release, announced it at
6646 comp.lang.python. From now on, just bugfixes...
6655 comp.lang.python. From now on, just bugfixes...
6647
6656
6648 * Went through all the files, set copyright/license notices and
6657 * Went through all the files, set copyright/license notices and
6649 cleaned up things. Ready for release.
6658 cleaned up things. Ready for release.
6650
6659
6651 2001-12-10 Fernando Perez <fperez@colorado.edu>
6660 2001-12-10 Fernando Perez <fperez@colorado.edu>
6652
6661
6653 * Changed the first-time installer not to use tarfiles. It's more
6662 * Changed the first-time installer not to use tarfiles. It's more
6654 robust now and less unix-dependent. Also makes it easier for
6663 robust now and less unix-dependent. Also makes it easier for
6655 people to later upgrade versions.
6664 people to later upgrade versions.
6656
6665
6657 * Changed @exit to @abort to reflect the fact that it's pretty
6666 * Changed @exit to @abort to reflect the fact that it's pretty
6658 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6667 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6659 becomes significant only when IPyhton is embedded: in that case,
6668 becomes significant only when IPyhton is embedded: in that case,
6660 C-D closes IPython only, but @abort kills the enclosing program
6669 C-D closes IPython only, but @abort kills the enclosing program
6661 too (unless it had called IPython inside a try catching
6670 too (unless it had called IPython inside a try catching
6662 SystemExit).
6671 SystemExit).
6663
6672
6664 * Created Shell module which exposes the actuall IPython Shell
6673 * Created Shell module which exposes the actuall IPython Shell
6665 classes, currently the normal and the embeddable one. This at
6674 classes, currently the normal and the embeddable one. This at
6666 least offers a stable interface we won't need to change when
6675 least offers a stable interface we won't need to change when
6667 (later) the internals are rewritten. That rewrite will be confined
6676 (later) the internals are rewritten. That rewrite will be confined
6668 to iplib and ipmaker, but the Shell interface should remain as is.
6677 to iplib and ipmaker, but the Shell interface should remain as is.
6669
6678
6670 * Added embed module which offers an embeddable IPShell object,
6679 * Added embed module which offers an embeddable IPShell object,
6671 useful to fire up IPython *inside* a running program. Great for
6680 useful to fire up IPython *inside* a running program. Great for
6672 debugging or dynamical data analysis.
6681 debugging or dynamical data analysis.
6673
6682
6674 2001-12-08 Fernando Perez <fperez@colorado.edu>
6683 2001-12-08 Fernando Perez <fperez@colorado.edu>
6675
6684
6676 * Fixed small bug preventing seeing info from methods of defined
6685 * Fixed small bug preventing seeing info from methods of defined
6677 objects (incorrect namespace in _ofind()).
6686 objects (incorrect namespace in _ofind()).
6678
6687
6679 * Documentation cleanup. Moved the main usage docstrings to a
6688 * Documentation cleanup. Moved the main usage docstrings to a
6680 separate file, usage.py (cleaner to maintain, and hopefully in the
6689 separate file, usage.py (cleaner to maintain, and hopefully in the
6681 future some perlpod-like way of producing interactive, man and
6690 future some perlpod-like way of producing interactive, man and
6682 html docs out of it will be found).
6691 html docs out of it will be found).
6683
6692
6684 * Added @profile to see your profile at any time.
6693 * Added @profile to see your profile at any time.
6685
6694
6686 * Added @p as an alias for 'print'. It's especially convenient if
6695 * Added @p as an alias for 'print'. It's especially convenient if
6687 using automagic ('p x' prints x).
6696 using automagic ('p x' prints x).
6688
6697
6689 * Small cleanups and fixes after a pychecker run.
6698 * Small cleanups and fixes after a pychecker run.
6690
6699
6691 * Changed the @cd command to handle @cd - and @cd -<n> for
6700 * Changed the @cd command to handle @cd - and @cd -<n> for
6692 visiting any directory in _dh.
6701 visiting any directory in _dh.
6693
6702
6694 * Introduced _dh, a history of visited directories. @dhist prints
6703 * Introduced _dh, a history of visited directories. @dhist prints
6695 it out with numbers.
6704 it out with numbers.
6696
6705
6697 2001-12-07 Fernando Perez <fperez@colorado.edu>
6706 2001-12-07 Fernando Perez <fperez@colorado.edu>
6698
6707
6699 * Released 0.1.22
6708 * Released 0.1.22
6700
6709
6701 * Made initialization a bit more robust against invalid color
6710 * Made initialization a bit more robust against invalid color
6702 options in user input (exit, not traceback-crash).
6711 options in user input (exit, not traceback-crash).
6703
6712
6704 * Changed the bug crash reporter to write the report only in the
6713 * Changed the bug crash reporter to write the report only in the
6705 user's .ipython directory. That way IPython won't litter people's
6714 user's .ipython directory. That way IPython won't litter people's
6706 hard disks with crash files all over the place. Also print on
6715 hard disks with crash files all over the place. Also print on
6707 screen the necessary mail command.
6716 screen the necessary mail command.
6708
6717
6709 * With the new ultraTB, implemented LightBG color scheme for light
6718 * With the new ultraTB, implemented LightBG color scheme for light
6710 background terminals. A lot of people like white backgrounds, so I
6719 background terminals. A lot of people like white backgrounds, so I
6711 guess we should at least give them something readable.
6720 guess we should at least give them something readable.
6712
6721
6713 2001-12-06 Fernando Perez <fperez@colorado.edu>
6722 2001-12-06 Fernando Perez <fperez@colorado.edu>
6714
6723
6715 * Modified the structure of ultraTB. Now there's a proper class
6724 * Modified the structure of ultraTB. Now there's a proper class
6716 for tables of color schemes which allow adding schemes easily and
6725 for tables of color schemes which allow adding schemes easily and
6717 switching the active scheme without creating a new instance every
6726 switching the active scheme without creating a new instance every
6718 time (which was ridiculous). The syntax for creating new schemes
6727 time (which was ridiculous). The syntax for creating new schemes
6719 is also cleaner. I think ultraTB is finally done, with a clean
6728 is also cleaner. I think ultraTB is finally done, with a clean
6720 class structure. Names are also much cleaner (now there's proper
6729 class structure. Names are also much cleaner (now there's proper
6721 color tables, no need for every variable to also have 'color' in
6730 color tables, no need for every variable to also have 'color' in
6722 its name).
6731 its name).
6723
6732
6724 * Broke down genutils into separate files. Now genutils only
6733 * Broke down genutils into separate files. Now genutils only
6725 contains utility functions, and classes have been moved to their
6734 contains utility functions, and classes have been moved to their
6726 own files (they had enough independent functionality to warrant
6735 own files (they had enough independent functionality to warrant
6727 it): ConfigLoader, OutputTrap, Struct.
6736 it): ConfigLoader, OutputTrap, Struct.
6728
6737
6729 2001-12-05 Fernando Perez <fperez@colorado.edu>
6738 2001-12-05 Fernando Perez <fperez@colorado.edu>
6730
6739
6731 * IPython turns 21! Released version 0.1.21, as a candidate for
6740 * IPython turns 21! Released version 0.1.21, as a candidate for
6732 public consumption. If all goes well, release in a few days.
6741 public consumption. If all goes well, release in a few days.
6733
6742
6734 * Fixed path bug (files in Extensions/ directory wouldn't be found
6743 * Fixed path bug (files in Extensions/ directory wouldn't be found
6735 unless IPython/ was explicitly in sys.path).
6744 unless IPython/ was explicitly in sys.path).
6736
6745
6737 * Extended the FlexCompleter class as MagicCompleter to allow
6746 * Extended the FlexCompleter class as MagicCompleter to allow
6738 completion of @-starting lines.
6747 completion of @-starting lines.
6739
6748
6740 * Created __release__.py file as a central repository for release
6749 * Created __release__.py file as a central repository for release
6741 info that other files can read from.
6750 info that other files can read from.
6742
6751
6743 * Fixed small bug in logging: when logging was turned on in
6752 * Fixed small bug in logging: when logging was turned on in
6744 mid-session, old lines with special meanings (!@?) were being
6753 mid-session, old lines with special meanings (!@?) were being
6745 logged without the prepended comment, which is necessary since
6754 logged without the prepended comment, which is necessary since
6746 they are not truly valid python syntax. This should make session
6755 they are not truly valid python syntax. This should make session
6747 restores produce less errors.
6756 restores produce less errors.
6748
6757
6749 * The namespace cleanup forced me to make a FlexCompleter class
6758 * The namespace cleanup forced me to make a FlexCompleter class
6750 which is nothing but a ripoff of rlcompleter, but with selectable
6759 which is nothing but a ripoff of rlcompleter, but with selectable
6751 namespace (rlcompleter only works in __main__.__dict__). I'll try
6760 namespace (rlcompleter only works in __main__.__dict__). I'll try
6752 to submit a note to the authors to see if this change can be
6761 to submit a note to the authors to see if this change can be
6753 incorporated in future rlcompleter releases (Dec.6: done)
6762 incorporated in future rlcompleter releases (Dec.6: done)
6754
6763
6755 * More fixes to namespace handling. It was a mess! Now all
6764 * More fixes to namespace handling. It was a mess! Now all
6756 explicit references to __main__.__dict__ are gone (except when
6765 explicit references to __main__.__dict__ are gone (except when
6757 really needed) and everything is handled through the namespace
6766 really needed) and everything is handled through the namespace
6758 dicts in the IPython instance. We seem to be getting somewhere
6767 dicts in the IPython instance. We seem to be getting somewhere
6759 with this, finally...
6768 with this, finally...
6760
6769
6761 * Small documentation updates.
6770 * Small documentation updates.
6762
6771
6763 * Created the Extensions directory under IPython (with an
6772 * Created the Extensions directory under IPython (with an
6764 __init__.py). Put the PhysicalQ stuff there. This directory should
6773 __init__.py). Put the PhysicalQ stuff there. This directory should
6765 be used for all special-purpose extensions.
6774 be used for all special-purpose extensions.
6766
6775
6767 * File renaming:
6776 * File renaming:
6768 ipythonlib --> ipmaker
6777 ipythonlib --> ipmaker
6769 ipplib --> iplib
6778 ipplib --> iplib
6770 This makes a bit more sense in terms of what these files actually do.
6779 This makes a bit more sense in terms of what these files actually do.
6771
6780
6772 * Moved all the classes and functions in ipythonlib to ipplib, so
6781 * Moved all the classes and functions in ipythonlib to ipplib, so
6773 now ipythonlib only has make_IPython(). This will ease up its
6782 now ipythonlib only has make_IPython(). This will ease up its
6774 splitting in smaller functional chunks later.
6783 splitting in smaller functional chunks later.
6775
6784
6776 * Cleaned up (done, I think) output of @whos. Better column
6785 * Cleaned up (done, I think) output of @whos. Better column
6777 formatting, and now shows str(var) for as much as it can, which is
6786 formatting, and now shows str(var) for as much as it can, which is
6778 typically what one gets with a 'print var'.
6787 typically what one gets with a 'print var'.
6779
6788
6780 2001-12-04 Fernando Perez <fperez@colorado.edu>
6789 2001-12-04 Fernando Perez <fperez@colorado.edu>
6781
6790
6782 * Fixed namespace problems. Now builtin/IPyhton/user names get
6791 * Fixed namespace problems. Now builtin/IPyhton/user names get
6783 properly reported in their namespace. Internal namespace handling
6792 properly reported in their namespace. Internal namespace handling
6784 is finally getting decent (not perfect yet, but much better than
6793 is finally getting decent (not perfect yet, but much better than
6785 the ad-hoc mess we had).
6794 the ad-hoc mess we had).
6786
6795
6787 * Removed -exit option. If people just want to run a python
6796 * Removed -exit option. If people just want to run a python
6788 script, that's what the normal interpreter is for. Less
6797 script, that's what the normal interpreter is for. Less
6789 unnecessary options, less chances for bugs.
6798 unnecessary options, less chances for bugs.
6790
6799
6791 * Added a crash handler which generates a complete post-mortem if
6800 * Added a crash handler which generates a complete post-mortem if
6792 IPython crashes. This will help a lot in tracking bugs down the
6801 IPython crashes. This will help a lot in tracking bugs down the
6793 road.
6802 road.
6794
6803
6795 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6804 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6796 which were boud to functions being reassigned would bypass the
6805 which were boud to functions being reassigned would bypass the
6797 logger, breaking the sync of _il with the prompt counter. This
6806 logger, breaking the sync of _il with the prompt counter. This
6798 would then crash IPython later when a new line was logged.
6807 would then crash IPython later when a new line was logged.
6799
6808
6800 2001-12-02 Fernando Perez <fperez@colorado.edu>
6809 2001-12-02 Fernando Perez <fperez@colorado.edu>
6801
6810
6802 * Made IPython a package. This means people don't have to clutter
6811 * Made IPython a package. This means people don't have to clutter
6803 their sys.path with yet another directory. Changed the INSTALL
6812 their sys.path with yet another directory. Changed the INSTALL
6804 file accordingly.
6813 file accordingly.
6805
6814
6806 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6815 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6807 sorts its output (so @who shows it sorted) and @whos formats the
6816 sorts its output (so @who shows it sorted) and @whos formats the
6808 table according to the width of the first column. Nicer, easier to
6817 table according to the width of the first column. Nicer, easier to
6809 read. Todo: write a generic table_format() which takes a list of
6818 read. Todo: write a generic table_format() which takes a list of
6810 lists and prints it nicely formatted, with optional row/column
6819 lists and prints it nicely formatted, with optional row/column
6811 separators and proper padding and justification.
6820 separators and proper padding and justification.
6812
6821
6813 * Released 0.1.20
6822 * Released 0.1.20
6814
6823
6815 * Fixed bug in @log which would reverse the inputcache list (a
6824 * Fixed bug in @log which would reverse the inputcache list (a
6816 copy operation was missing).
6825 copy operation was missing).
6817
6826
6818 * Code cleanup. @config was changed to use page(). Better, since
6827 * Code cleanup. @config was changed to use page(). Better, since
6819 its output is always quite long.
6828 its output is always quite long.
6820
6829
6821 * Itpl is back as a dependency. I was having too many problems
6830 * Itpl is back as a dependency. I was having too many problems
6822 getting the parametric aliases to work reliably, and it's just
6831 getting the parametric aliases to work reliably, and it's just
6823 easier to code weird string operations with it than playing %()s
6832 easier to code weird string operations with it than playing %()s
6824 games. It's only ~6k, so I don't think it's too big a deal.
6833 games. It's only ~6k, so I don't think it's too big a deal.
6825
6834
6826 * Found (and fixed) a very nasty bug with history. !lines weren't
6835 * Found (and fixed) a very nasty bug with history. !lines weren't
6827 getting cached, and the out of sync caches would crash
6836 getting cached, and the out of sync caches would crash
6828 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6837 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6829 division of labor a bit better. Bug fixed, cleaner structure.
6838 division of labor a bit better. Bug fixed, cleaner structure.
6830
6839
6831 2001-12-01 Fernando Perez <fperez@colorado.edu>
6840 2001-12-01 Fernando Perez <fperez@colorado.edu>
6832
6841
6833 * Released 0.1.19
6842 * Released 0.1.19
6834
6843
6835 * Added option -n to @hist to prevent line number printing. Much
6844 * Added option -n to @hist to prevent line number printing. Much
6836 easier to copy/paste code this way.
6845 easier to copy/paste code this way.
6837
6846
6838 * Created global _il to hold the input list. Allows easy
6847 * Created global _il to hold the input list. Allows easy
6839 re-execution of blocks of code by slicing it (inspired by Janko's
6848 re-execution of blocks of code by slicing it (inspired by Janko's
6840 comment on 'macros').
6849 comment on 'macros').
6841
6850
6842 * Small fixes and doc updates.
6851 * Small fixes and doc updates.
6843
6852
6844 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6853 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6845 much too fragile with automagic. Handles properly multi-line
6854 much too fragile with automagic. Handles properly multi-line
6846 statements and takes parameters.
6855 statements and takes parameters.
6847
6856
6848 2001-11-30 Fernando Perez <fperez@colorado.edu>
6857 2001-11-30 Fernando Perez <fperez@colorado.edu>
6849
6858
6850 * Version 0.1.18 released.
6859 * Version 0.1.18 released.
6851
6860
6852 * Fixed nasty namespace bug in initial module imports.
6861 * Fixed nasty namespace bug in initial module imports.
6853
6862
6854 * Added copyright/license notes to all code files (except
6863 * Added copyright/license notes to all code files (except
6855 DPyGetOpt). For the time being, LGPL. That could change.
6864 DPyGetOpt). For the time being, LGPL. That could change.
6856
6865
6857 * Rewrote a much nicer README, updated INSTALL, cleaned up
6866 * Rewrote a much nicer README, updated INSTALL, cleaned up
6858 ipythonrc-* samples.
6867 ipythonrc-* samples.
6859
6868
6860 * Overall code/documentation cleanup. Basically ready for
6869 * Overall code/documentation cleanup. Basically ready for
6861 release. Only remaining thing: licence decision (LGPL?).
6870 release. Only remaining thing: licence decision (LGPL?).
6862
6871
6863 * Converted load_config to a class, ConfigLoader. Now recursion
6872 * Converted load_config to a class, ConfigLoader. Now recursion
6864 control is better organized. Doesn't include the same file twice.
6873 control is better organized. Doesn't include the same file twice.
6865
6874
6866 2001-11-29 Fernando Perez <fperez@colorado.edu>
6875 2001-11-29 Fernando Perez <fperez@colorado.edu>
6867
6876
6868 * Got input history working. Changed output history variables from
6877 * Got input history working. Changed output history variables from
6869 _p to _o so that _i is for input and _o for output. Just cleaner
6878 _p to _o so that _i is for input and _o for output. Just cleaner
6870 convention.
6879 convention.
6871
6880
6872 * Implemented parametric aliases. This pretty much allows the
6881 * Implemented parametric aliases. This pretty much allows the
6873 alias system to offer full-blown shell convenience, I think.
6882 alias system to offer full-blown shell convenience, I think.
6874
6883
6875 * Version 0.1.17 released, 0.1.18 opened.
6884 * Version 0.1.17 released, 0.1.18 opened.
6876
6885
6877 * dot_ipython/ipythonrc (alias): added documentation.
6886 * dot_ipython/ipythonrc (alias): added documentation.
6878 (xcolor): Fixed small bug (xcolors -> xcolor)
6887 (xcolor): Fixed small bug (xcolors -> xcolor)
6879
6888
6880 * Changed the alias system. Now alias is a magic command to define
6889 * Changed the alias system. Now alias is a magic command to define
6881 aliases just like the shell. Rationale: the builtin magics should
6890 aliases just like the shell. Rationale: the builtin magics should
6882 be there for things deeply connected to IPython's
6891 be there for things deeply connected to IPython's
6883 architecture. And this is a much lighter system for what I think
6892 architecture. And this is a much lighter system for what I think
6884 is the really important feature: allowing users to define quickly
6893 is the really important feature: allowing users to define quickly
6885 magics that will do shell things for them, so they can customize
6894 magics that will do shell things for them, so they can customize
6886 IPython easily to match their work habits. If someone is really
6895 IPython easily to match their work habits. If someone is really
6887 desperate to have another name for a builtin alias, they can
6896 desperate to have another name for a builtin alias, they can
6888 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6897 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6889 works.
6898 works.
6890
6899
6891 2001-11-28 Fernando Perez <fperez@colorado.edu>
6900 2001-11-28 Fernando Perez <fperez@colorado.edu>
6892
6901
6893 * Changed @file so that it opens the source file at the proper
6902 * Changed @file so that it opens the source file at the proper
6894 line. Since it uses less, if your EDITOR environment is
6903 line. Since it uses less, if your EDITOR environment is
6895 configured, typing v will immediately open your editor of choice
6904 configured, typing v will immediately open your editor of choice
6896 right at the line where the object is defined. Not as quick as
6905 right at the line where the object is defined. Not as quick as
6897 having a direct @edit command, but for all intents and purposes it
6906 having a direct @edit command, but for all intents and purposes it
6898 works. And I don't have to worry about writing @edit to deal with
6907 works. And I don't have to worry about writing @edit to deal with
6899 all the editors, less does that.
6908 all the editors, less does that.
6900
6909
6901 * Version 0.1.16 released, 0.1.17 opened.
6910 * Version 0.1.16 released, 0.1.17 opened.
6902
6911
6903 * Fixed some nasty bugs in the page/page_dumb combo that could
6912 * Fixed some nasty bugs in the page/page_dumb combo that could
6904 crash IPython.
6913 crash IPython.
6905
6914
6906 2001-11-27 Fernando Perez <fperez@colorado.edu>
6915 2001-11-27 Fernando Perez <fperez@colorado.edu>
6907
6916
6908 * Version 0.1.15 released, 0.1.16 opened.
6917 * Version 0.1.15 released, 0.1.16 opened.
6909
6918
6910 * Finally got ? and ?? to work for undefined things: now it's
6919 * Finally got ? and ?? to work for undefined things: now it's
6911 possible to type {}.get? and get information about the get method
6920 possible to type {}.get? and get information about the get method
6912 of dicts, or os.path? even if only os is defined (so technically
6921 of dicts, or os.path? even if only os is defined (so technically
6913 os.path isn't). Works at any level. For example, after import os,
6922 os.path isn't). Works at any level. For example, after import os,
6914 os?, os.path?, os.path.abspath? all work. This is great, took some
6923 os?, os.path?, os.path.abspath? all work. This is great, took some
6915 work in _ofind.
6924 work in _ofind.
6916
6925
6917 * Fixed more bugs with logging. The sanest way to do it was to add
6926 * Fixed more bugs with logging. The sanest way to do it was to add
6918 to @log a 'mode' parameter. Killed two in one shot (this mode
6927 to @log a 'mode' parameter. Killed two in one shot (this mode
6919 option was a request of Janko's). I think it's finally clean
6928 option was a request of Janko's). I think it's finally clean
6920 (famous last words).
6929 (famous last words).
6921
6930
6922 * Added a page_dumb() pager which does a decent job of paging on
6931 * Added a page_dumb() pager which does a decent job of paging on
6923 screen, if better things (like less) aren't available. One less
6932 screen, if better things (like less) aren't available. One less
6924 unix dependency (someday maybe somebody will port this to
6933 unix dependency (someday maybe somebody will port this to
6925 windows).
6934 windows).
6926
6935
6927 * Fixed problem in magic_log: would lock of logging out if log
6936 * Fixed problem in magic_log: would lock of logging out if log
6928 creation failed (because it would still think it had succeeded).
6937 creation failed (because it would still think it had succeeded).
6929
6938
6930 * Improved the page() function using curses to auto-detect screen
6939 * Improved the page() function using curses to auto-detect screen
6931 size. Now it can make a much better decision on whether to print
6940 size. Now it can make a much better decision on whether to print
6932 or page a string. Option screen_length was modified: a value 0
6941 or page a string. Option screen_length was modified: a value 0
6933 means auto-detect, and that's the default now.
6942 means auto-detect, and that's the default now.
6934
6943
6935 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6944 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6936 go out. I'll test it for a few days, then talk to Janko about
6945 go out. I'll test it for a few days, then talk to Janko about
6937 licences and announce it.
6946 licences and announce it.
6938
6947
6939 * Fixed the length of the auto-generated ---> prompt which appears
6948 * Fixed the length of the auto-generated ---> prompt which appears
6940 for auto-parens and auto-quotes. Getting this right isn't trivial,
6949 for auto-parens and auto-quotes. Getting this right isn't trivial,
6941 with all the color escapes, different prompt types and optional
6950 with all the color escapes, different prompt types and optional
6942 separators. But it seems to be working in all the combinations.
6951 separators. But it seems to be working in all the combinations.
6943
6952
6944 2001-11-26 Fernando Perez <fperez@colorado.edu>
6953 2001-11-26 Fernando Perez <fperez@colorado.edu>
6945
6954
6946 * Wrote a regexp filter to get option types from the option names
6955 * Wrote a regexp filter to get option types from the option names
6947 string. This eliminates the need to manually keep two duplicate
6956 string. This eliminates the need to manually keep two duplicate
6948 lists.
6957 lists.
6949
6958
6950 * Removed the unneeded check_option_names. Now options are handled
6959 * Removed the unneeded check_option_names. Now options are handled
6951 in a much saner manner and it's easy to visually check that things
6960 in a much saner manner and it's easy to visually check that things
6952 are ok.
6961 are ok.
6953
6962
6954 * Updated version numbers on all files I modified to carry a
6963 * Updated version numbers on all files I modified to carry a
6955 notice so Janko and Nathan have clear version markers.
6964 notice so Janko and Nathan have clear version markers.
6956
6965
6957 * Updated docstring for ultraTB with my changes. I should send
6966 * Updated docstring for ultraTB with my changes. I should send
6958 this to Nathan.
6967 this to Nathan.
6959
6968
6960 * Lots of small fixes. Ran everything through pychecker again.
6969 * Lots of small fixes. Ran everything through pychecker again.
6961
6970
6962 * Made loading of deep_reload an cmd line option. If it's not too
6971 * Made loading of deep_reload an cmd line option. If it's not too
6963 kosher, now people can just disable it. With -nodeep_reload it's
6972 kosher, now people can just disable it. With -nodeep_reload it's
6964 still available as dreload(), it just won't overwrite reload().
6973 still available as dreload(), it just won't overwrite reload().
6965
6974
6966 * Moved many options to the no| form (-opt and -noopt
6975 * Moved many options to the no| form (-opt and -noopt
6967 accepted). Cleaner.
6976 accepted). Cleaner.
6968
6977
6969 * Changed magic_log so that if called with no parameters, it uses
6978 * Changed magic_log so that if called with no parameters, it uses
6970 'rotate' mode. That way auto-generated logs aren't automatically
6979 'rotate' mode. That way auto-generated logs aren't automatically
6971 over-written. For normal logs, now a backup is made if it exists
6980 over-written. For normal logs, now a backup is made if it exists
6972 (only 1 level of backups). A new 'backup' mode was added to the
6981 (only 1 level of backups). A new 'backup' mode was added to the
6973 Logger class to support this. This was a request by Janko.
6982 Logger class to support this. This was a request by Janko.
6974
6983
6975 * Added @logoff/@logon to stop/restart an active log.
6984 * Added @logoff/@logon to stop/restart an active log.
6976
6985
6977 * Fixed a lot of bugs in log saving/replay. It was pretty
6986 * Fixed a lot of bugs in log saving/replay. It was pretty
6978 broken. Now special lines (!@,/) appear properly in the command
6987 broken. Now special lines (!@,/) appear properly in the command
6979 history after a log replay.
6988 history after a log replay.
6980
6989
6981 * Tried and failed to implement full session saving via pickle. My
6990 * Tried and failed to implement full session saving via pickle. My
6982 idea was to pickle __main__.__dict__, but modules can't be
6991 idea was to pickle __main__.__dict__, but modules can't be
6983 pickled. This would be a better alternative to replaying logs, but
6992 pickled. This would be a better alternative to replaying logs, but
6984 seems quite tricky to get to work. Changed -session to be called
6993 seems quite tricky to get to work. Changed -session to be called
6985 -logplay, which more accurately reflects what it does. And if we
6994 -logplay, which more accurately reflects what it does. And if we
6986 ever get real session saving working, -session is now available.
6995 ever get real session saving working, -session is now available.
6987
6996
6988 * Implemented color schemes for prompts also. As for tracebacks,
6997 * Implemented color schemes for prompts also. As for tracebacks,
6989 currently only NoColor and Linux are supported. But now the
6998 currently only NoColor and Linux are supported. But now the
6990 infrastructure is in place, based on a generic ColorScheme
6999 infrastructure is in place, based on a generic ColorScheme
6991 class. So writing and activating new schemes both for the prompts
7000 class. So writing and activating new schemes both for the prompts
6992 and the tracebacks should be straightforward.
7001 and the tracebacks should be straightforward.
6993
7002
6994 * Version 0.1.13 released, 0.1.14 opened.
7003 * Version 0.1.13 released, 0.1.14 opened.
6995
7004
6996 * Changed handling of options for output cache. Now counter is
7005 * Changed handling of options for output cache. Now counter is
6997 hardwired starting at 1 and one specifies the maximum number of
7006 hardwired starting at 1 and one specifies the maximum number of
6998 entries *in the outcache* (not the max prompt counter). This is
7007 entries *in the outcache* (not the max prompt counter). This is
6999 much better, since many statements won't increase the cache
7008 much better, since many statements won't increase the cache
7000 count. It also eliminated some confusing options, now there's only
7009 count. It also eliminated some confusing options, now there's only
7001 one: cache_size.
7010 one: cache_size.
7002
7011
7003 * Added 'alias' magic function and magic_alias option in the
7012 * Added 'alias' magic function and magic_alias option in the
7004 ipythonrc file. Now the user can easily define whatever names he
7013 ipythonrc file. Now the user can easily define whatever names he
7005 wants for the magic functions without having to play weird
7014 wants for the magic functions without having to play weird
7006 namespace games. This gives IPython a real shell-like feel.
7015 namespace games. This gives IPython a real shell-like feel.
7007
7016
7008 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
7017 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
7009 @ or not).
7018 @ or not).
7010
7019
7011 This was one of the last remaining 'visible' bugs (that I know
7020 This was one of the last remaining 'visible' bugs (that I know
7012 of). I think if I can clean up the session loading so it works
7021 of). I think if I can clean up the session loading so it works
7013 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
7022 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
7014 about licensing).
7023 about licensing).
7015
7024
7016 2001-11-25 Fernando Perez <fperez@colorado.edu>
7025 2001-11-25 Fernando Perez <fperez@colorado.edu>
7017
7026
7018 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
7027 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
7019 there's a cleaner distinction between what ? and ?? show.
7028 there's a cleaner distinction between what ? and ?? show.
7020
7029
7021 * Added screen_length option. Now the user can define his own
7030 * Added screen_length option. Now the user can define his own
7022 screen size for page() operations.
7031 screen size for page() operations.
7023
7032
7024 * Implemented magic shell-like functions with automatic code
7033 * Implemented magic shell-like functions with automatic code
7025 generation. Now adding another function is just a matter of adding
7034 generation. Now adding another function is just a matter of adding
7026 an entry to a dict, and the function is dynamically generated at
7035 an entry to a dict, and the function is dynamically generated at
7027 run-time. Python has some really cool features!
7036 run-time. Python has some really cool features!
7028
7037
7029 * Renamed many options to cleanup conventions a little. Now all
7038 * Renamed many options to cleanup conventions a little. Now all
7030 are lowercase, and only underscores where needed. Also in the code
7039 are lowercase, and only underscores where needed. Also in the code
7031 option name tables are clearer.
7040 option name tables are clearer.
7032
7041
7033 * Changed prompts a little. Now input is 'In [n]:' instead of
7042 * Changed prompts a little. Now input is 'In [n]:' instead of
7034 'In[n]:='. This allows it the numbers to be aligned with the
7043 'In[n]:='. This allows it the numbers to be aligned with the
7035 Out[n] numbers, and removes usage of ':=' which doesn't exist in
7044 Out[n] numbers, and removes usage of ':=' which doesn't exist in
7036 Python (it was a Mathematica thing). The '...' continuation prompt
7045 Python (it was a Mathematica thing). The '...' continuation prompt
7037 was also changed a little to align better.
7046 was also changed a little to align better.
7038
7047
7039 * Fixed bug when flushing output cache. Not all _p<n> variables
7048 * Fixed bug when flushing output cache. Not all _p<n> variables
7040 exist, so their deletion needs to be wrapped in a try:
7049 exist, so their deletion needs to be wrapped in a try:
7041
7050
7042 * Figured out how to properly use inspect.formatargspec() (it
7051 * Figured out how to properly use inspect.formatargspec() (it
7043 requires the args preceded by *). So I removed all the code from
7052 requires the args preceded by *). So I removed all the code from
7044 _get_pdef in Magic, which was just replicating that.
7053 _get_pdef in Magic, which was just replicating that.
7045
7054
7046 * Added test to prefilter to allow redefining magic function names
7055 * Added test to prefilter to allow redefining magic function names
7047 as variables. This is ok, since the @ form is always available,
7056 as variables. This is ok, since the @ form is always available,
7048 but whe should allow the user to define a variable called 'ls' if
7057 but whe should allow the user to define a variable called 'ls' if
7049 he needs it.
7058 he needs it.
7050
7059
7051 * Moved the ToDo information from README into a separate ToDo.
7060 * Moved the ToDo information from README into a separate ToDo.
7052
7061
7053 * General code cleanup and small bugfixes. I think it's close to a
7062 * General code cleanup and small bugfixes. I think it's close to a
7054 state where it can be released, obviously with a big 'beta'
7063 state where it can be released, obviously with a big 'beta'
7055 warning on it.
7064 warning on it.
7056
7065
7057 * Got the magic function split to work. Now all magics are defined
7066 * Got the magic function split to work. Now all magics are defined
7058 in a separate class. It just organizes things a bit, and now
7067 in a separate class. It just organizes things a bit, and now
7059 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7068 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7060 was too long).
7069 was too long).
7061
7070
7062 * Changed @clear to @reset to avoid potential confusions with
7071 * Changed @clear to @reset to avoid potential confusions with
7063 the shell command clear. Also renamed @cl to @clear, which does
7072 the shell command clear. Also renamed @cl to @clear, which does
7064 exactly what people expect it to from their shell experience.
7073 exactly what people expect it to from their shell experience.
7065
7074
7066 Added a check to the @reset command (since it's so
7075 Added a check to the @reset command (since it's so
7067 destructive, it's probably a good idea to ask for confirmation).
7076 destructive, it's probably a good idea to ask for confirmation).
7068 But now reset only works for full namespace resetting. Since the
7077 But now reset only works for full namespace resetting. Since the
7069 del keyword is already there for deleting a few specific
7078 del keyword is already there for deleting a few specific
7070 variables, I don't see the point of having a redundant magic
7079 variables, I don't see the point of having a redundant magic
7071 function for the same task.
7080 function for the same task.
7072
7081
7073 2001-11-24 Fernando Perez <fperez@colorado.edu>
7082 2001-11-24 Fernando Perez <fperez@colorado.edu>
7074
7083
7075 * Updated the builtin docs (esp. the ? ones).
7084 * Updated the builtin docs (esp. the ? ones).
7076
7085
7077 * Ran all the code through pychecker. Not terribly impressed with
7086 * Ran all the code through pychecker. Not terribly impressed with
7078 it: lots of spurious warnings and didn't really find anything of
7087 it: lots of spurious warnings and didn't really find anything of
7079 substance (just a few modules being imported and not used).
7088 substance (just a few modules being imported and not used).
7080
7089
7081 * Implemented the new ultraTB functionality into IPython. New
7090 * Implemented the new ultraTB functionality into IPython. New
7082 option: xcolors. This chooses color scheme. xmode now only selects
7091 option: xcolors. This chooses color scheme. xmode now only selects
7083 between Plain and Verbose. Better orthogonality.
7092 between Plain and Verbose. Better orthogonality.
7084
7093
7085 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7094 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7086 mode and color scheme for the exception handlers. Now it's
7095 mode and color scheme for the exception handlers. Now it's
7087 possible to have the verbose traceback with no coloring.
7096 possible to have the verbose traceback with no coloring.
7088
7097
7089 2001-11-23 Fernando Perez <fperez@colorado.edu>
7098 2001-11-23 Fernando Perez <fperez@colorado.edu>
7090
7099
7091 * Version 0.1.12 released, 0.1.13 opened.
7100 * Version 0.1.12 released, 0.1.13 opened.
7092
7101
7093 * Removed option to set auto-quote and auto-paren escapes by
7102 * Removed option to set auto-quote and auto-paren escapes by
7094 user. The chances of breaking valid syntax are just too high. If
7103 user. The chances of breaking valid syntax are just too high. If
7095 someone *really* wants, they can always dig into the code.
7104 someone *really* wants, they can always dig into the code.
7096
7105
7097 * Made prompt separators configurable.
7106 * Made prompt separators configurable.
7098
7107
7099 2001-11-22 Fernando Perez <fperez@colorado.edu>
7108 2001-11-22 Fernando Perez <fperez@colorado.edu>
7100
7109
7101 * Small bugfixes in many places.
7110 * Small bugfixes in many places.
7102
7111
7103 * Removed the MyCompleter class from ipplib. It seemed redundant
7112 * Removed the MyCompleter class from ipplib. It seemed redundant
7104 with the C-p,C-n history search functionality. Less code to
7113 with the C-p,C-n history search functionality. Less code to
7105 maintain.
7114 maintain.
7106
7115
7107 * Moved all the original ipython.py code into ipythonlib.py. Right
7116 * Moved all the original ipython.py code into ipythonlib.py. Right
7108 now it's just one big dump into a function called make_IPython, so
7117 now it's just one big dump into a function called make_IPython, so
7109 no real modularity has been gained. But at least it makes the
7118 no real modularity has been gained. But at least it makes the
7110 wrapper script tiny, and since ipythonlib is a module, it gets
7119 wrapper script tiny, and since ipythonlib is a module, it gets
7111 compiled and startup is much faster.
7120 compiled and startup is much faster.
7112
7121
7113 This is a reasobably 'deep' change, so we should test it for a
7122 This is a reasobably 'deep' change, so we should test it for a
7114 while without messing too much more with the code.
7123 while without messing too much more with the code.
7115
7124
7116 2001-11-21 Fernando Perez <fperez@colorado.edu>
7125 2001-11-21 Fernando Perez <fperez@colorado.edu>
7117
7126
7118 * Version 0.1.11 released, 0.1.12 opened for further work.
7127 * Version 0.1.11 released, 0.1.12 opened for further work.
7119
7128
7120 * Removed dependency on Itpl. It was only needed in one place. It
7129 * Removed dependency on Itpl. It was only needed in one place. It
7121 would be nice if this became part of python, though. It makes life
7130 would be nice if this became part of python, though. It makes life
7122 *a lot* easier in some cases.
7131 *a lot* easier in some cases.
7123
7132
7124 * Simplified the prefilter code a bit. Now all handlers are
7133 * Simplified the prefilter code a bit. Now all handlers are
7125 expected to explicitly return a value (at least a blank string).
7134 expected to explicitly return a value (at least a blank string).
7126
7135
7127 * Heavy edits in ipplib. Removed the help system altogether. Now
7136 * Heavy edits in ipplib. Removed the help system altogether. Now
7128 obj?/?? is used for inspecting objects, a magic @doc prints
7137 obj?/?? is used for inspecting objects, a magic @doc prints
7129 docstrings, and full-blown Python help is accessed via the 'help'
7138 docstrings, and full-blown Python help is accessed via the 'help'
7130 keyword. This cleans up a lot of code (less to maintain) and does
7139 keyword. This cleans up a lot of code (less to maintain) and does
7131 the job. Since 'help' is now a standard Python component, might as
7140 the job. Since 'help' is now a standard Python component, might as
7132 well use it and remove duplicate functionality.
7141 well use it and remove duplicate functionality.
7133
7142
7134 Also removed the option to use ipplib as a standalone program. By
7143 Also removed the option to use ipplib as a standalone program. By
7135 now it's too dependent on other parts of IPython to function alone.
7144 now it's too dependent on other parts of IPython to function alone.
7136
7145
7137 * Fixed bug in genutils.pager. It would crash if the pager was
7146 * Fixed bug in genutils.pager. It would crash if the pager was
7138 exited immediately after opening (broken pipe).
7147 exited immediately after opening (broken pipe).
7139
7148
7140 * Trimmed down the VerboseTB reporting a little. The header is
7149 * Trimmed down the VerboseTB reporting a little. The header is
7141 much shorter now and the repeated exception arguments at the end
7150 much shorter now and the repeated exception arguments at the end
7142 have been removed. For interactive use the old header seemed a bit
7151 have been removed. For interactive use the old header seemed a bit
7143 excessive.
7152 excessive.
7144
7153
7145 * Fixed small bug in output of @whos for variables with multi-word
7154 * Fixed small bug in output of @whos for variables with multi-word
7146 types (only first word was displayed).
7155 types (only first word was displayed).
7147
7156
7148 2001-11-17 Fernando Perez <fperez@colorado.edu>
7157 2001-11-17 Fernando Perez <fperez@colorado.edu>
7149
7158
7150 * Version 0.1.10 released, 0.1.11 opened for further work.
7159 * Version 0.1.10 released, 0.1.11 opened for further work.
7151
7160
7152 * Modified dirs and friends. dirs now *returns* the stack (not
7161 * Modified dirs and friends. dirs now *returns* the stack (not
7153 prints), so one can manipulate it as a variable. Convenient to
7162 prints), so one can manipulate it as a variable. Convenient to
7154 travel along many directories.
7163 travel along many directories.
7155
7164
7156 * Fixed bug in magic_pdef: would only work with functions with
7165 * Fixed bug in magic_pdef: would only work with functions with
7157 arguments with default values.
7166 arguments with default values.
7158
7167
7159 2001-11-14 Fernando Perez <fperez@colorado.edu>
7168 2001-11-14 Fernando Perez <fperez@colorado.edu>
7160
7169
7161 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7170 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7162 example with IPython. Various other minor fixes and cleanups.
7171 example with IPython. Various other minor fixes and cleanups.
7163
7172
7164 * Version 0.1.9 released, 0.1.10 opened for further work.
7173 * Version 0.1.9 released, 0.1.10 opened for further work.
7165
7174
7166 * Added sys.path to the list of directories searched in the
7175 * Added sys.path to the list of directories searched in the
7167 execfile= option. It used to be the current directory and the
7176 execfile= option. It used to be the current directory and the
7168 user's IPYTHONDIR only.
7177 user's IPYTHONDIR only.
7169
7178
7170 2001-11-13 Fernando Perez <fperez@colorado.edu>
7179 2001-11-13 Fernando Perez <fperez@colorado.edu>
7171
7180
7172 * Reinstated the raw_input/prefilter separation that Janko had
7181 * Reinstated the raw_input/prefilter separation that Janko had
7173 initially. This gives a more convenient setup for extending the
7182 initially. This gives a more convenient setup for extending the
7174 pre-processor from the outside: raw_input always gets a string,
7183 pre-processor from the outside: raw_input always gets a string,
7175 and prefilter has to process it. We can then redefine prefilter
7184 and prefilter has to process it. We can then redefine prefilter
7176 from the outside and implement extensions for special
7185 from the outside and implement extensions for special
7177 purposes.
7186 purposes.
7178
7187
7179 Today I got one for inputting PhysicalQuantity objects
7188 Today I got one for inputting PhysicalQuantity objects
7180 (from Scientific) without needing any function calls at
7189 (from Scientific) without needing any function calls at
7181 all. Extremely convenient, and it's all done as a user-level
7190 all. Extremely convenient, and it's all done as a user-level
7182 extension (no IPython code was touched). Now instead of:
7191 extension (no IPython code was touched). Now instead of:
7183 a = PhysicalQuantity(4.2,'m/s**2')
7192 a = PhysicalQuantity(4.2,'m/s**2')
7184 one can simply say
7193 one can simply say
7185 a = 4.2 m/s**2
7194 a = 4.2 m/s**2
7186 or even
7195 or even
7187 a = 4.2 m/s^2
7196 a = 4.2 m/s^2
7188
7197
7189 I use this, but it's also a proof of concept: IPython really is
7198 I use this, but it's also a proof of concept: IPython really is
7190 fully user-extensible, even at the level of the parsing of the
7199 fully user-extensible, even at the level of the parsing of the
7191 command line. It's not trivial, but it's perfectly doable.
7200 command line. It's not trivial, but it's perfectly doable.
7192
7201
7193 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7202 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7194 the problem of modules being loaded in the inverse order in which
7203 the problem of modules being loaded in the inverse order in which
7195 they were defined in
7204 they were defined in
7196
7205
7197 * Version 0.1.8 released, 0.1.9 opened for further work.
7206 * Version 0.1.8 released, 0.1.9 opened for further work.
7198
7207
7199 * Added magics pdef, source and file. They respectively show the
7208 * Added magics pdef, source and file. They respectively show the
7200 definition line ('prototype' in C), source code and full python
7209 definition line ('prototype' in C), source code and full python
7201 file for any callable object. The object inspector oinfo uses
7210 file for any callable object. The object inspector oinfo uses
7202 these to show the same information.
7211 these to show the same information.
7203
7212
7204 * Version 0.1.7 released, 0.1.8 opened for further work.
7213 * Version 0.1.7 released, 0.1.8 opened for further work.
7205
7214
7206 * Separated all the magic functions into a class called Magic. The
7215 * Separated all the magic functions into a class called Magic. The
7207 InteractiveShell class was becoming too big for Xemacs to handle
7216 InteractiveShell class was becoming too big for Xemacs to handle
7208 (de-indenting a line would lock it up for 10 seconds while it
7217 (de-indenting a line would lock it up for 10 seconds while it
7209 backtracked on the whole class!)
7218 backtracked on the whole class!)
7210
7219
7211 FIXME: didn't work. It can be done, but right now namespaces are
7220 FIXME: didn't work. It can be done, but right now namespaces are
7212 all messed up. Do it later (reverted it for now, so at least
7221 all messed up. Do it later (reverted it for now, so at least
7213 everything works as before).
7222 everything works as before).
7214
7223
7215 * Got the object introspection system (magic_oinfo) working! I
7224 * Got the object introspection system (magic_oinfo) working! I
7216 think this is pretty much ready for release to Janko, so he can
7225 think this is pretty much ready for release to Janko, so he can
7217 test it for a while and then announce it. Pretty much 100% of what
7226 test it for a while and then announce it. Pretty much 100% of what
7218 I wanted for the 'phase 1' release is ready. Happy, tired.
7227 I wanted for the 'phase 1' release is ready. Happy, tired.
7219
7228
7220 2001-11-12 Fernando Perez <fperez@colorado.edu>
7229 2001-11-12 Fernando Perez <fperez@colorado.edu>
7221
7230
7222 * Version 0.1.6 released, 0.1.7 opened for further work.
7231 * Version 0.1.6 released, 0.1.7 opened for further work.
7223
7232
7224 * Fixed bug in printing: it used to test for truth before
7233 * Fixed bug in printing: it used to test for truth before
7225 printing, so 0 wouldn't print. Now checks for None.
7234 printing, so 0 wouldn't print. Now checks for None.
7226
7235
7227 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7236 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7228 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7237 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7229 reaches by hand into the outputcache. Think of a better way to do
7238 reaches by hand into the outputcache. Think of a better way to do
7230 this later.
7239 this later.
7231
7240
7232 * Various small fixes thanks to Nathan's comments.
7241 * Various small fixes thanks to Nathan's comments.
7233
7242
7234 * Changed magic_pprint to magic_Pprint. This way it doesn't
7243 * Changed magic_pprint to magic_Pprint. This way it doesn't
7235 collide with pprint() and the name is consistent with the command
7244 collide with pprint() and the name is consistent with the command
7236 line option.
7245 line option.
7237
7246
7238 * Changed prompt counter behavior to be fully like
7247 * Changed prompt counter behavior to be fully like
7239 Mathematica's. That is, even input that doesn't return a result
7248 Mathematica's. That is, even input that doesn't return a result
7240 raises the prompt counter. The old behavior was kind of confusing
7249 raises the prompt counter. The old behavior was kind of confusing
7241 (getting the same prompt number several times if the operation
7250 (getting the same prompt number several times if the operation
7242 didn't return a result).
7251 didn't return a result).
7243
7252
7244 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7253 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7245
7254
7246 * Fixed -Classic mode (wasn't working anymore).
7255 * Fixed -Classic mode (wasn't working anymore).
7247
7256
7248 * Added colored prompts using Nathan's new code. Colors are
7257 * Added colored prompts using Nathan's new code. Colors are
7249 currently hardwired, they can be user-configurable. For
7258 currently hardwired, they can be user-configurable. For
7250 developers, they can be chosen in file ipythonlib.py, at the
7259 developers, they can be chosen in file ipythonlib.py, at the
7251 beginning of the CachedOutput class def.
7260 beginning of the CachedOutput class def.
7252
7261
7253 2001-11-11 Fernando Perez <fperez@colorado.edu>
7262 2001-11-11 Fernando Perez <fperez@colorado.edu>
7254
7263
7255 * Version 0.1.5 released, 0.1.6 opened for further work.
7264 * Version 0.1.5 released, 0.1.6 opened for further work.
7256
7265
7257 * Changed magic_env to *return* the environment as a dict (not to
7266 * Changed magic_env to *return* the environment as a dict (not to
7258 print it). This way it prints, but it can also be processed.
7267 print it). This way it prints, but it can also be processed.
7259
7268
7260 * Added Verbose exception reporting to interactive
7269 * Added Verbose exception reporting to interactive
7261 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7270 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7262 traceback. Had to make some changes to the ultraTB file. This is
7271 traceback. Had to make some changes to the ultraTB file. This is
7263 probably the last 'big' thing in my mental todo list. This ties
7272 probably the last 'big' thing in my mental todo list. This ties
7264 in with the next entry:
7273 in with the next entry:
7265
7274
7266 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7275 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7267 has to specify is Plain, Color or Verbose for all exception
7276 has to specify is Plain, Color or Verbose for all exception
7268 handling.
7277 handling.
7269
7278
7270 * Removed ShellServices option. All this can really be done via
7279 * Removed ShellServices option. All this can really be done via
7271 the magic system. It's easier to extend, cleaner and has automatic
7280 the magic system. It's easier to extend, cleaner and has automatic
7272 namespace protection and documentation.
7281 namespace protection and documentation.
7273
7282
7274 2001-11-09 Fernando Perez <fperez@colorado.edu>
7283 2001-11-09 Fernando Perez <fperez@colorado.edu>
7275
7284
7276 * Fixed bug in output cache flushing (missing parameter to
7285 * Fixed bug in output cache flushing (missing parameter to
7277 __init__). Other small bugs fixed (found using pychecker).
7286 __init__). Other small bugs fixed (found using pychecker).
7278
7287
7279 * Version 0.1.4 opened for bugfixing.
7288 * Version 0.1.4 opened for bugfixing.
7280
7289
7281 2001-11-07 Fernando Perez <fperez@colorado.edu>
7290 2001-11-07 Fernando Perez <fperez@colorado.edu>
7282
7291
7283 * Version 0.1.3 released, mainly because of the raw_input bug.
7292 * Version 0.1.3 released, mainly because of the raw_input bug.
7284
7293
7285 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7294 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7286 and when testing for whether things were callable, a call could
7295 and when testing for whether things were callable, a call could
7287 actually be made to certain functions. They would get called again
7296 actually be made to certain functions. They would get called again
7288 once 'really' executed, with a resulting double call. A disaster
7297 once 'really' executed, with a resulting double call. A disaster
7289 in many cases (list.reverse() would never work!).
7298 in many cases (list.reverse() would never work!).
7290
7299
7291 * Removed prefilter() function, moved its code to raw_input (which
7300 * Removed prefilter() function, moved its code to raw_input (which
7292 after all was just a near-empty caller for prefilter). This saves
7301 after all was just a near-empty caller for prefilter). This saves
7293 a function call on every prompt, and simplifies the class a tiny bit.
7302 a function call on every prompt, and simplifies the class a tiny bit.
7294
7303
7295 * Fix _ip to __ip name in magic example file.
7304 * Fix _ip to __ip name in magic example file.
7296
7305
7297 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7306 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7298 work with non-gnu versions of tar.
7307 work with non-gnu versions of tar.
7299
7308
7300 2001-11-06 Fernando Perez <fperez@colorado.edu>
7309 2001-11-06 Fernando Perez <fperez@colorado.edu>
7301
7310
7302 * Version 0.1.2. Just to keep track of the recent changes.
7311 * Version 0.1.2. Just to keep track of the recent changes.
7303
7312
7304 * Fixed nasty bug in output prompt routine. It used to check 'if
7313 * Fixed nasty bug in output prompt routine. It used to check 'if
7305 arg != None...'. Problem is, this fails if arg implements a
7314 arg != None...'. Problem is, this fails if arg implements a
7306 special comparison (__cmp__) which disallows comparing to
7315 special comparison (__cmp__) which disallows comparing to
7307 None. Found it when trying to use the PhysicalQuantity module from
7316 None. Found it when trying to use the PhysicalQuantity module from
7308 ScientificPython.
7317 ScientificPython.
7309
7318
7310 2001-11-05 Fernando Perez <fperez@colorado.edu>
7319 2001-11-05 Fernando Perez <fperez@colorado.edu>
7311
7320
7312 * Also added dirs. Now the pushd/popd/dirs family functions
7321 * Also added dirs. Now the pushd/popd/dirs family functions
7313 basically like the shell, with the added convenience of going home
7322 basically like the shell, with the added convenience of going home
7314 when called with no args.
7323 when called with no args.
7315
7324
7316 * pushd/popd slightly modified to mimic shell behavior more
7325 * pushd/popd slightly modified to mimic shell behavior more
7317 closely.
7326 closely.
7318
7327
7319 * Added env,pushd,popd from ShellServices as magic functions. I
7328 * Added env,pushd,popd from ShellServices as magic functions. I
7320 think the cleanest will be to port all desired functions from
7329 think the cleanest will be to port all desired functions from
7321 ShellServices as magics and remove ShellServices altogether. This
7330 ShellServices as magics and remove ShellServices altogether. This
7322 will provide a single, clean way of adding functionality
7331 will provide a single, clean way of adding functionality
7323 (shell-type or otherwise) to IP.
7332 (shell-type or otherwise) to IP.
7324
7333
7325 2001-11-04 Fernando Perez <fperez@colorado.edu>
7334 2001-11-04 Fernando Perez <fperez@colorado.edu>
7326
7335
7327 * Added .ipython/ directory to sys.path. This way users can keep
7336 * Added .ipython/ directory to sys.path. This way users can keep
7328 customizations there and access them via import.
7337 customizations there and access them via import.
7329
7338
7330 2001-11-03 Fernando Perez <fperez@colorado.edu>
7339 2001-11-03 Fernando Perez <fperez@colorado.edu>
7331
7340
7332 * Opened version 0.1.1 for new changes.
7341 * Opened version 0.1.1 for new changes.
7333
7342
7334 * Changed version number to 0.1.0: first 'public' release, sent to
7343 * Changed version number to 0.1.0: first 'public' release, sent to
7335 Nathan and Janko.
7344 Nathan and Janko.
7336
7345
7337 * Lots of small fixes and tweaks.
7346 * Lots of small fixes and tweaks.
7338
7347
7339 * Minor changes to whos format. Now strings are shown, snipped if
7348 * Minor changes to whos format. Now strings are shown, snipped if
7340 too long.
7349 too long.
7341
7350
7342 * Changed ShellServices to work on __main__ so they show up in @who
7351 * Changed ShellServices to work on __main__ so they show up in @who
7343
7352
7344 * Help also works with ? at the end of a line:
7353 * Help also works with ? at the end of a line:
7345 ?sin and sin?
7354 ?sin and sin?
7346 both produce the same effect. This is nice, as often I use the
7355 both produce the same effect. This is nice, as often I use the
7347 tab-complete to find the name of a method, but I used to then have
7356 tab-complete to find the name of a method, but I used to then have
7348 to go to the beginning of the line to put a ? if I wanted more
7357 to go to the beginning of the line to put a ? if I wanted more
7349 info. Now I can just add the ? and hit return. Convenient.
7358 info. Now I can just add the ? and hit return. Convenient.
7350
7359
7351 2001-11-02 Fernando Perez <fperez@colorado.edu>
7360 2001-11-02 Fernando Perez <fperez@colorado.edu>
7352
7361
7353 * Python version check (>=2.1) added.
7362 * Python version check (>=2.1) added.
7354
7363
7355 * Added LazyPython documentation. At this point the docs are quite
7364 * Added LazyPython documentation. At this point the docs are quite
7356 a mess. A cleanup is in order.
7365 a mess. A cleanup is in order.
7357
7366
7358 * Auto-installer created. For some bizarre reason, the zipfiles
7367 * Auto-installer created. For some bizarre reason, the zipfiles
7359 module isn't working on my system. So I made a tar version
7368 module isn't working on my system. So I made a tar version
7360 (hopefully the command line options in various systems won't kill
7369 (hopefully the command line options in various systems won't kill
7361 me).
7370 me).
7362
7371
7363 * Fixes to Struct in genutils. Now all dictionary-like methods are
7372 * Fixes to Struct in genutils. Now all dictionary-like methods are
7364 protected (reasonably).
7373 protected (reasonably).
7365
7374
7366 * Added pager function to genutils and changed ? to print usage
7375 * Added pager function to genutils and changed ? to print usage
7367 note through it (it was too long).
7376 note through it (it was too long).
7368
7377
7369 * Added the LazyPython functionality. Works great! I changed the
7378 * Added the LazyPython functionality. Works great! I changed the
7370 auto-quote escape to ';', it's on home row and next to '. But
7379 auto-quote escape to ';', it's on home row and next to '. But
7371 both auto-quote and auto-paren (still /) escapes are command-line
7380 both auto-quote and auto-paren (still /) escapes are command-line
7372 parameters.
7381 parameters.
7373
7382
7374
7383
7375 2001-11-01 Fernando Perez <fperez@colorado.edu>
7384 2001-11-01 Fernando Perez <fperez@colorado.edu>
7376
7385
7377 * Version changed to 0.0.7. Fairly large change: configuration now
7386 * Version changed to 0.0.7. Fairly large change: configuration now
7378 is all stored in a directory, by default .ipython. There, all
7387 is all stored in a directory, by default .ipython. There, all
7379 config files have normal looking names (not .names)
7388 config files have normal looking names (not .names)
7380
7389
7381 * Version 0.0.6 Released first to Lucas and Archie as a test
7390 * Version 0.0.6 Released first to Lucas and Archie as a test
7382 run. Since it's the first 'semi-public' release, change version to
7391 run. Since it's the first 'semi-public' release, change version to
7383 > 0.0.6 for any changes now.
7392 > 0.0.6 for any changes now.
7384
7393
7385 * Stuff I had put in the ipplib.py changelog:
7394 * Stuff I had put in the ipplib.py changelog:
7386
7395
7387 Changes to InteractiveShell:
7396 Changes to InteractiveShell:
7388
7397
7389 - Made the usage message a parameter.
7398 - Made the usage message a parameter.
7390
7399
7391 - Require the name of the shell variable to be given. It's a bit
7400 - Require the name of the shell variable to be given. It's a bit
7392 of a hack, but allows the name 'shell' not to be hardwired in the
7401 of a hack, but allows the name 'shell' not to be hardwired in the
7393 magic (@) handler, which is problematic b/c it requires
7402 magic (@) handler, which is problematic b/c it requires
7394 polluting the global namespace with 'shell'. This in turn is
7403 polluting the global namespace with 'shell'. This in turn is
7395 fragile: if a user redefines a variable called shell, things
7404 fragile: if a user redefines a variable called shell, things
7396 break.
7405 break.
7397
7406
7398 - magic @: all functions available through @ need to be defined
7407 - magic @: all functions available through @ need to be defined
7399 as magic_<name>, even though they can be called simply as
7408 as magic_<name>, even though they can be called simply as
7400 @<name>. This allows the special command @magic to gather
7409 @<name>. This allows the special command @magic to gather
7401 information automatically about all existing magic functions,
7410 information automatically about all existing magic functions,
7402 even if they are run-time user extensions, by parsing the shell
7411 even if they are run-time user extensions, by parsing the shell
7403 instance __dict__ looking for special magic_ names.
7412 instance __dict__ looking for special magic_ names.
7404
7413
7405 - mainloop: added *two* local namespace parameters. This allows
7414 - mainloop: added *two* local namespace parameters. This allows
7406 the class to differentiate between parameters which were there
7415 the class to differentiate between parameters which were there
7407 before and after command line initialization was processed. This
7416 before and after command line initialization was processed. This
7408 way, later @who can show things loaded at startup by the
7417 way, later @who can show things loaded at startup by the
7409 user. This trick was necessary to make session saving/reloading
7418 user. This trick was necessary to make session saving/reloading
7410 really work: ideally after saving/exiting/reloading a session,
7419 really work: ideally after saving/exiting/reloading a session,
7411 *everything* should look the same, including the output of @who. I
7420 *everything* should look the same, including the output of @who. I
7412 was only able to make this work with this double namespace
7421 was only able to make this work with this double namespace
7413 trick.
7422 trick.
7414
7423
7415 - added a header to the logfile which allows (almost) full
7424 - added a header to the logfile which allows (almost) full
7416 session restoring.
7425 session restoring.
7417
7426
7418 - prepend lines beginning with @ or !, with a and log
7427 - prepend lines beginning with @ or !, with a and log
7419 them. Why? !lines: may be useful to know what you did @lines:
7428 them. Why? !lines: may be useful to know what you did @lines:
7420 they may affect session state. So when restoring a session, at
7429 they may affect session state. So when restoring a session, at
7421 least inform the user of their presence. I couldn't quite get
7430 least inform the user of their presence. I couldn't quite get
7422 them to properly re-execute, but at least the user is warned.
7431 them to properly re-execute, but at least the user is warned.
7423
7432
7424 * Started ChangeLog.
7433 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now