##// END OF EJS Templates
code cleanup: IPShellQt and IPShellQt4
darren.dale -
Show More
@@ -1,1144 +1,1178 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 2755 2007-09-09 20:10:30Z darren.dale $"""
7 $Id: Shell.py 2756 2007-09-10 18:25:30Z 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
49
50 # Globals
50 # Globals
51 # global flag to pass around information about Ctrl-C without exceptions
51 # global flag to pass around information about Ctrl-C without exceptions
52 KBINT = False
52 KBINT = False
53
53
54 # global flag to turn on/off Tk support.
54 # global flag to turn on/off Tk support.
55 USE_TK = False
55 USE_TK = False
56
56
57 # ID for the main thread, used for cross-thread exceptions
57 # ID for the main thread, used for cross-thread exceptions
58 MAIN_THREAD_ID = thread.get_ident()
58 MAIN_THREAD_ID = thread.get_ident()
59
59
60 # Tag when runcode() is active, for exception handling
60 # Tag when runcode() is active, for exception handling
61 CODE_RUN = None
61 CODE_RUN = None
62
62
63 #-----------------------------------------------------------------------------
63 #-----------------------------------------------------------------------------
64 # This class is trivial now, but I want to have it in to publish a clean
64 # This class is trivial now, but I want to have it in to publish a clean
65 # interface. Later when the internals are reorganized, code that uses this
65 # interface. Later when the internals are reorganized, code that uses this
66 # shouldn't have to change.
66 # shouldn't have to change.
67
67
68 class IPShell:
68 class IPShell:
69 """Create an IPython instance."""
69 """Create an IPython instance."""
70
70
71 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
71 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
72 debug=1,shell_class=InteractiveShell):
72 debug=1,shell_class=InteractiveShell):
73 self.IP = make_IPython(argv,user_ns=user_ns,
73 self.IP = make_IPython(argv,user_ns=user_ns,
74 user_global_ns=user_global_ns,
74 user_global_ns=user_global_ns,
75 debug=debug,shell_class=shell_class)
75 debug=debug,shell_class=shell_class)
76
76
77 def mainloop(self,sys_exit=0,banner=None):
77 def mainloop(self,sys_exit=0,banner=None):
78 self.IP.mainloop(banner)
78 self.IP.mainloop(banner)
79 if sys_exit:
79 if sys_exit:
80 sys.exit()
80 sys.exit()
81
81
82 #-----------------------------------------------------------------------------
82 #-----------------------------------------------------------------------------
83 def kill_embedded(self,parameter_s=''):
83 def kill_embedded(self,parameter_s=''):
84 """%kill_embedded : deactivate for good the current embedded IPython.
84 """%kill_embedded : deactivate for good the current embedded IPython.
85
85
86 This function (after asking for confirmation) sets an internal flag so that
86 This function (after asking for confirmation) sets an internal flag so that
87 an embedded IPython will never activate again. This is useful to
87 an embedded IPython will never activate again. This is useful to
88 permanently disable a shell that is being called inside a loop: once you've
88 permanently disable a shell that is being called inside a loop: once you've
89 figured out what you needed from it, you may then kill it and the program
89 figured out what you needed from it, you may then kill it and the program
90 will then continue to run without the interactive shell interfering again.
90 will then continue to run without the interactive shell interfering again.
91 """
91 """
92
92
93 kill = ask_yes_no("Are you sure you want to kill this embedded instance "
93 kill = ask_yes_no("Are you sure you want to kill this embedded instance "
94 "(y/n)? [y/N] ",'n')
94 "(y/n)? [y/N] ",'n')
95 if kill:
95 if kill:
96 self.shell.embedded_active = False
96 self.shell.embedded_active = False
97 print "This embedded IPython will not reactivate anymore once you exit."
97 print "This embedded IPython will not reactivate anymore once you exit."
98
98
99 class IPShellEmbed:
99 class IPShellEmbed:
100 """Allow embedding an IPython shell into a running program.
100 """Allow embedding an IPython shell into a running program.
101
101
102 Instances of this class are callable, with the __call__ method being an
102 Instances of this class are callable, with the __call__ method being an
103 alias to the embed() method of an InteractiveShell instance.
103 alias to the embed() method of an InteractiveShell instance.
104
104
105 Usage (see also the example-embed.py file for a running example):
105 Usage (see also the example-embed.py file for a running example):
106
106
107 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
107 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
108
108
109 - argv: list containing valid command-line options for IPython, as they
109 - argv: list containing valid command-line options for IPython, as they
110 would appear in sys.argv[1:].
110 would appear in sys.argv[1:].
111
111
112 For example, the following command-line options:
112 For example, the following command-line options:
113
113
114 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
114 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
115
115
116 would be passed in the argv list as:
116 would be passed in the argv list as:
117
117
118 ['-prompt_in1','Input <\\#>','-colors','LightBG']
118 ['-prompt_in1','Input <\\#>','-colors','LightBG']
119
119
120 - banner: string which gets printed every time the interpreter starts.
120 - banner: string which gets printed every time the interpreter starts.
121
121
122 - exit_msg: string which gets printed every time the interpreter exits.
122 - exit_msg: string which gets printed every time the interpreter exits.
123
123
124 - rc_override: a dict or Struct of configuration options such as those
124 - rc_override: a dict or Struct of configuration options such as those
125 used by IPython. These options are read from your ~/.ipython/ipythonrc
125 used by IPython. These options are read from your ~/.ipython/ipythonrc
126 file when the Shell object is created. Passing an explicit rc_override
126 file when the Shell object is created. Passing an explicit rc_override
127 dict with any options you want allows you to override those values at
127 dict with any options you want allows you to override those values at
128 creation time without having to modify the file. This way you can create
128 creation time without having to modify the file. This way you can create
129 embeddable instances configured in any way you want without editing any
129 embeddable instances configured in any way you want without editing any
130 global files (thus keeping your interactive IPython configuration
130 global files (thus keeping your interactive IPython configuration
131 unchanged).
131 unchanged).
132
132
133 Then the ipshell instance can be called anywhere inside your code:
133 Then the ipshell instance can be called anywhere inside your code:
134
134
135 ipshell(header='') -> Opens up an IPython shell.
135 ipshell(header='') -> Opens up an IPython shell.
136
136
137 - header: string printed by the IPython shell upon startup. This can let
137 - header: string printed by the IPython shell upon startup. This can let
138 you know where in your code you are when dropping into the shell. Note
138 you know where in your code you are when dropping into the shell. Note
139 that 'banner' gets prepended to all calls, so header is used for
139 that 'banner' gets prepended to all calls, so header is used for
140 location-specific information.
140 location-specific information.
141
141
142 For more details, see the __call__ method below.
142 For more details, see the __call__ method below.
143
143
144 When the IPython shell is exited with Ctrl-D, normal program execution
144 When the IPython shell is exited with Ctrl-D, normal program execution
145 resumes.
145 resumes.
146
146
147 This functionality was inspired by a posting on comp.lang.python by cmkl
147 This functionality was inspired by a posting on comp.lang.python by cmkl
148 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
148 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
149 by the IDL stop/continue commands."""
149 by the IDL stop/continue commands."""
150
150
151 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None,
151 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None,
152 user_ns=None):
152 user_ns=None):
153 """Note that argv here is a string, NOT a list."""
153 """Note that argv here is a string, NOT a list."""
154 self.set_banner(banner)
154 self.set_banner(banner)
155 self.set_exit_msg(exit_msg)
155 self.set_exit_msg(exit_msg)
156 self.set_dummy_mode(0)
156 self.set_dummy_mode(0)
157
157
158 # sys.displayhook is a global, we need to save the user's original
158 # sys.displayhook is a global, we need to save the user's original
159 # Don't rely on __displayhook__, as the user may have changed that.
159 # Don't rely on __displayhook__, as the user may have changed that.
160 self.sys_displayhook_ori = sys.displayhook
160 self.sys_displayhook_ori = sys.displayhook
161
161
162 # save readline completer status
162 # save readline completer status
163 try:
163 try:
164 #print 'Save completer',sys.ipcompleter # dbg
164 #print 'Save completer',sys.ipcompleter # dbg
165 self.sys_ipcompleter_ori = sys.ipcompleter
165 self.sys_ipcompleter_ori = sys.ipcompleter
166 except:
166 except:
167 pass # not nested with IPython
167 pass # not nested with IPython
168
168
169 self.IP = make_IPython(argv,rc_override=rc_override,
169 self.IP = make_IPython(argv,rc_override=rc_override,
170 embedded=True,
170 embedded=True,
171 user_ns=user_ns)
171 user_ns=user_ns)
172
172
173 ip = ipapi.IPApi(self.IP)
173 ip = ipapi.IPApi(self.IP)
174 ip.expose_magic("kill_embedded",kill_embedded)
174 ip.expose_magic("kill_embedded",kill_embedded)
175
175
176 # copy our own displayhook also
176 # copy our own displayhook also
177 self.sys_displayhook_embed = sys.displayhook
177 self.sys_displayhook_embed = sys.displayhook
178 # and leave the system's display hook clean
178 # and leave the system's display hook clean
179 sys.displayhook = self.sys_displayhook_ori
179 sys.displayhook = self.sys_displayhook_ori
180 # don't use the ipython crash handler so that user exceptions aren't
180 # don't use the ipython crash handler so that user exceptions aren't
181 # trapped
181 # trapped
182 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
182 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
183 mode = self.IP.rc.xmode,
183 mode = self.IP.rc.xmode,
184 call_pdb = self.IP.rc.pdb)
184 call_pdb = self.IP.rc.pdb)
185 self.restore_system_completer()
185 self.restore_system_completer()
186
186
187 def restore_system_completer(self):
187 def restore_system_completer(self):
188 """Restores the readline completer which was in place.
188 """Restores the readline completer which was in place.
189
189
190 This allows embedded IPython within IPython not to disrupt the
190 This allows embedded IPython within IPython not to disrupt the
191 parent's completion.
191 parent's completion.
192 """
192 """
193
193
194 try:
194 try:
195 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
195 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
196 sys.ipcompleter = self.sys_ipcompleter_ori
196 sys.ipcompleter = self.sys_ipcompleter_ori
197 except:
197 except:
198 pass
198 pass
199
199
200 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
200 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
201 """Activate the interactive interpreter.
201 """Activate the interactive interpreter.
202
202
203 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
203 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
204 the interpreter shell with the given local and global namespaces, and
204 the interpreter shell with the given local and global namespaces, and
205 optionally print a header string at startup.
205 optionally print a header string at startup.
206
206
207 The shell can be globally activated/deactivated using the
207 The shell can be globally activated/deactivated using the
208 set/get_dummy_mode methods. This allows you to turn off a shell used
208 set/get_dummy_mode methods. This allows you to turn off a shell used
209 for debugging globally.
209 for debugging globally.
210
210
211 However, *each* time you call the shell you can override the current
211 However, *each* time you call the shell you can override the current
212 state of dummy_mode with the optional keyword parameter 'dummy'. For
212 state of dummy_mode with the optional keyword parameter 'dummy'. For
213 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
213 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
214 can still have a specific call work by making it as IPShell(dummy=0).
214 can still have a specific call work by making it as IPShell(dummy=0).
215
215
216 The optional keyword parameter dummy controls whether the call
216 The optional keyword parameter dummy controls whether the call
217 actually does anything. """
217 actually does anything. """
218
218
219 # If the user has turned it off, go away
219 # If the user has turned it off, go away
220 if not self.IP.embedded_active:
220 if not self.IP.embedded_active:
221 return
221 return
222
222
223 # Normal exits from interactive mode set this flag, so the shell can't
223 # Normal exits from interactive mode set this flag, so the shell can't
224 # re-enter (it checks this variable at the start of interactive mode).
224 # re-enter (it checks this variable at the start of interactive mode).
225 self.IP.exit_now = False
225 self.IP.exit_now = False
226
226
227 # Allow the dummy parameter to override the global __dummy_mode
227 # Allow the dummy parameter to override the global __dummy_mode
228 if dummy or (dummy != 0 and self.__dummy_mode):
228 if dummy or (dummy != 0 and self.__dummy_mode):
229 return
229 return
230
230
231 # Set global subsystems (display,completions) to our values
231 # Set global subsystems (display,completions) to our values
232 sys.displayhook = self.sys_displayhook_embed
232 sys.displayhook = self.sys_displayhook_embed
233 if self.IP.has_readline:
233 if self.IP.has_readline:
234 self.IP.set_completer()
234 self.IP.set_completer()
235
235
236 if self.banner and header:
236 if self.banner and header:
237 format = '%s\n%s\n'
237 format = '%s\n%s\n'
238 else:
238 else:
239 format = '%s%s\n'
239 format = '%s%s\n'
240 banner = format % (self.banner,header)
240 banner = format % (self.banner,header)
241
241
242 # Call the embedding code with a stack depth of 1 so it can skip over
242 # Call the embedding code with a stack depth of 1 so it can skip over
243 # our call and get the original caller's namespaces.
243 # our call and get the original caller's namespaces.
244 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
244 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
245
245
246 if self.exit_msg:
246 if self.exit_msg:
247 print self.exit_msg
247 print self.exit_msg
248
248
249 # Restore global systems (display, completion)
249 # Restore global systems (display, completion)
250 sys.displayhook = self.sys_displayhook_ori
250 sys.displayhook = self.sys_displayhook_ori
251 self.restore_system_completer()
251 self.restore_system_completer()
252
252
253 def set_dummy_mode(self,dummy):
253 def set_dummy_mode(self,dummy):
254 """Sets the embeddable shell's dummy mode parameter.
254 """Sets the embeddable shell's dummy mode parameter.
255
255
256 set_dummy_mode(dummy): dummy = 0 or 1.
256 set_dummy_mode(dummy): dummy = 0 or 1.
257
257
258 This parameter is persistent and makes calls to the embeddable shell
258 This parameter is persistent and makes calls to the embeddable shell
259 silently return without performing any action. This allows you to
259 silently return without performing any action. This allows you to
260 globally activate or deactivate a shell you're using with a single call.
260 globally activate or deactivate a shell you're using with a single call.
261
261
262 If you need to manually"""
262 If you need to manually"""
263
263
264 if dummy not in [0,1,False,True]:
264 if dummy not in [0,1,False,True]:
265 raise ValueError,'dummy parameter must be boolean'
265 raise ValueError,'dummy parameter must be boolean'
266 self.__dummy_mode = dummy
266 self.__dummy_mode = dummy
267
267
268 def get_dummy_mode(self):
268 def get_dummy_mode(self):
269 """Return the current value of the dummy mode parameter.
269 """Return the current value of the dummy mode parameter.
270 """
270 """
271 return self.__dummy_mode
271 return self.__dummy_mode
272
272
273 def set_banner(self,banner):
273 def set_banner(self,banner):
274 """Sets the global banner.
274 """Sets the global banner.
275
275
276 This banner gets prepended to every header printed when the shell
276 This banner gets prepended to every header printed when the shell
277 instance is called."""
277 instance is called."""
278
278
279 self.banner = banner
279 self.banner = banner
280
280
281 def set_exit_msg(self,exit_msg):
281 def set_exit_msg(self,exit_msg):
282 """Sets the global exit_msg.
282 """Sets the global exit_msg.
283
283
284 This exit message gets printed upon exiting every time the embedded
284 This exit message gets printed upon exiting every time the embedded
285 shell is called. It is None by default. """
285 shell is called. It is None by default. """
286
286
287 self.exit_msg = exit_msg
287 self.exit_msg = exit_msg
288
288
289 #-----------------------------------------------------------------------------
289 #-----------------------------------------------------------------------------
290 if HAS_CTYPES:
290 if HAS_CTYPES:
291 # Add async exception support. Trick taken from:
291 # Add async exception support. Trick taken from:
292 # http://sebulba.wikispaces.com/recipe+thread2
292 # http://sebulba.wikispaces.com/recipe+thread2
293 def _async_raise(tid, exctype):
293 def _async_raise(tid, exctype):
294 """raises the exception, performs cleanup if needed"""
294 """raises the exception, performs cleanup if needed"""
295 if not inspect.isclass(exctype):
295 if not inspect.isclass(exctype):
296 raise TypeError("Only types can be raised (not instances)")
296 raise TypeError("Only types can be raised (not instances)")
297 res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid,
297 res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid,
298 ctypes.py_object(exctype))
298 ctypes.py_object(exctype))
299 if res == 0:
299 if res == 0:
300 raise ValueError("invalid thread id")
300 raise ValueError("invalid thread id")
301 elif res != 1:
301 elif res != 1:
302 # """if it returns a number greater than one, you're in trouble,
302 # """if it returns a number greater than one, you're in trouble,
303 # and you should call it again with exc=NULL to revert the effect"""
303 # and you should call it again with exc=NULL to revert the effect"""
304 ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
304 ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
305 raise SystemError("PyThreadState_SetAsyncExc failed")
305 raise SystemError("PyThreadState_SetAsyncExc failed")
306
306
307 def sigint_handler (signum,stack_frame):
307 def sigint_handler (signum,stack_frame):
308 """Sigint handler for threaded apps.
308 """Sigint handler for threaded apps.
309
309
310 This is a horrible hack to pass information about SIGINT _without_
310 This is a horrible hack to pass information about SIGINT _without_
311 using exceptions, since I haven't been able to properly manage
311 using exceptions, since I haven't been able to properly manage
312 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
312 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
313 done (or at least that's my understanding from a c.l.py thread where
313 done (or at least that's my understanding from a c.l.py thread where
314 this was discussed)."""
314 this was discussed)."""
315
315
316 global KBINT
316 global KBINT
317
317
318 if CODE_RUN:
318 if CODE_RUN:
319 _async_raise(MAIN_THREAD_ID,KeyboardInterrupt)
319 _async_raise(MAIN_THREAD_ID,KeyboardInterrupt)
320 else:
320 else:
321 KBINT = True
321 KBINT = True
322 print '\nKeyboardInterrupt - Press <Enter> to continue.',
322 print '\nKeyboardInterrupt - Press <Enter> to continue.',
323 Term.cout.flush()
323 Term.cout.flush()
324
324
325 else:
325 else:
326 def sigint_handler (signum,stack_frame):
326 def sigint_handler (signum,stack_frame):
327 """Sigint handler for threaded apps.
327 """Sigint handler for threaded apps.
328
328
329 This is a horrible hack to pass information about SIGINT _without_
329 This is a horrible hack to pass information about SIGINT _without_
330 using exceptions, since I haven't been able to properly manage
330 using exceptions, since I haven't been able to properly manage
331 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
331 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
332 done (or at least that's my understanding from a c.l.py thread where
332 done (or at least that's my understanding from a c.l.py thread where
333 this was discussed)."""
333 this was discussed)."""
334
334
335 global KBINT
335 global KBINT
336
336
337 print '\nKeyboardInterrupt - Press <Enter> to continue.',
337 print '\nKeyboardInterrupt - Press <Enter> to continue.',
338 Term.cout.flush()
338 Term.cout.flush()
339 # Set global flag so that runsource can know that Ctrl-C was hit
339 # Set global flag so that runsource can know that Ctrl-C was hit
340 KBINT = True
340 KBINT = True
341
341
342
342
343 class MTInteractiveShell(InteractiveShell):
343 class MTInteractiveShell(InteractiveShell):
344 """Simple multi-threaded shell."""
344 """Simple multi-threaded shell."""
345
345
346 # Threading strategy taken from:
346 # Threading strategy taken from:
347 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
347 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
348 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
348 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
349 # from the pygtk mailing list, to avoid lockups with system calls.
349 # from the pygtk mailing list, to avoid lockups with system calls.
350
350
351 # class attribute to indicate whether the class supports threads or not.
351 # class attribute to indicate whether the class supports threads or not.
352 # Subclasses with thread support should override this as needed.
352 # Subclasses with thread support should override this as needed.
353 isthreaded = True
353 isthreaded = True
354
354
355 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
355 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
356 user_ns=None,user_global_ns=None,banner2='',**kw):
356 user_ns=None,user_global_ns=None,banner2='',**kw):
357 """Similar to the normal InteractiveShell, but with threading control"""
357 """Similar to the normal InteractiveShell, but with threading control"""
358
358
359 InteractiveShell.__init__(self,name,usage,rc,user_ns,
359 InteractiveShell.__init__(self,name,usage,rc,user_ns,
360 user_global_ns,banner2)
360 user_global_ns,banner2)
361
361
362 # Locking control variable. We need to use a norma lock, not an RLock
362 # Locking control variable. We need to use a norma lock, not an RLock
363 # here. I'm not exactly sure why, it seems to me like it should be
363 # here. I'm not exactly sure why, it seems to me like it should be
364 # the opposite, but we deadlock with an RLock. Puzzled...
364 # the opposite, but we deadlock with an RLock. Puzzled...
365 self.thread_ready = threading.Condition(threading.Lock())
365 self.thread_ready = threading.Condition(threading.Lock())
366
366
367 # A queue to hold the code to be executed. A scalar variable is NOT
367 # A queue to hold the code to be executed. A scalar variable is NOT
368 # enough, because uses like macros cause reentrancy.
368 # enough, because uses like macros cause reentrancy.
369 self.code_queue = Queue.Queue()
369 self.code_queue = Queue.Queue()
370
370
371 # Stuff to do at closing time
371 # Stuff to do at closing time
372 self._kill = False
372 self._kill = False
373 on_kill = kw.get('on_kill')
373 on_kill = kw.get('on_kill')
374 if on_kill is None:
374 if on_kill is None:
375 on_kill = []
375 on_kill = []
376 # Check that all things to kill are callable:
376 # Check that all things to kill are callable:
377 for t in on_kill:
377 for t in on_kill:
378 if not callable(t):
378 if not callable(t):
379 raise TypeError,'on_kill must be a list of callables'
379 raise TypeError,'on_kill must be a list of callables'
380 self.on_kill = on_kill
380 self.on_kill = on_kill
381
381
382 def runsource(self, source, filename="<input>", symbol="single"):
382 def runsource(self, source, filename="<input>", symbol="single"):
383 """Compile and run some source in the interpreter.
383 """Compile and run some source in the interpreter.
384
384
385 Modified version of code.py's runsource(), to handle threading issues.
385 Modified version of code.py's runsource(), to handle threading issues.
386 See the original for full docstring details."""
386 See the original for full docstring details."""
387
387
388 global KBINT
388 global KBINT
389
389
390 # If Ctrl-C was typed, we reset the flag and return right away
390 # If Ctrl-C was typed, we reset the flag and return right away
391 if KBINT:
391 if KBINT:
392 KBINT = False
392 KBINT = False
393 return False
393 return False
394
394
395 try:
395 try:
396 code = self.compile(source, filename, symbol)
396 code = self.compile(source, filename, symbol)
397 except (OverflowError, SyntaxError, ValueError):
397 except (OverflowError, SyntaxError, ValueError):
398 # Case 1
398 # Case 1
399 self.showsyntaxerror(filename)
399 self.showsyntaxerror(filename)
400 return False
400 return False
401
401
402 if code is None:
402 if code is None:
403 # Case 2
403 # Case 2
404 return True
404 return True
405
405
406 # Case 3
406 # Case 3
407 # Store code in queue, so the execution thread can handle it.
407 # Store code in queue, so the execution thread can handle it.
408
408
409 # Note that with macros and other applications, we MAY re-enter this
409 # Note that with macros and other applications, we MAY re-enter this
410 # section, so we have to acquire the lock with non-blocking semantics,
410 # section, so we have to acquire the lock with non-blocking semantics,
411 # else we deadlock.
411 # else we deadlock.
412 got_lock = self.thread_ready.acquire(False)
412 got_lock = self.thread_ready.acquire(False)
413 self.code_queue.put(code)
413 self.code_queue.put(code)
414 if got_lock:
414 if got_lock:
415 self.thread_ready.wait() # Wait until processed in timeout interval
415 self.thread_ready.wait() # Wait until processed in timeout interval
416 self.thread_ready.release()
416 self.thread_ready.release()
417
417
418 return False
418 return False
419
419
420 def runcode(self):
420 def runcode(self):
421 """Execute a code object.
421 """Execute a code object.
422
422
423 Multithreaded wrapper around IPython's runcode()."""
423 Multithreaded wrapper around IPython's runcode()."""
424
424
425 global CODE_RUN
425 global CODE_RUN
426
426
427 # Exceptions need to be raised differently depending on which thread is
427 # Exceptions need to be raised differently depending on which thread is
428 # active
428 # active
429 CODE_RUN = True
429 CODE_RUN = True
430
430
431 # lock thread-protected stuff
431 # lock thread-protected stuff
432 got_lock = self.thread_ready.acquire(False)
432 got_lock = self.thread_ready.acquire(False)
433
433
434 if self._kill:
434 if self._kill:
435 print >>Term.cout, 'Closing threads...',
435 print >>Term.cout, 'Closing threads...',
436 Term.cout.flush()
436 Term.cout.flush()
437 for tokill in self.on_kill:
437 for tokill in self.on_kill:
438 tokill()
438 tokill()
439 print >>Term.cout, 'Done.'
439 print >>Term.cout, 'Done.'
440
440
441 # Install sigint handler. We do it every time to ensure that if user
441 # Install sigint handler. We do it every time to ensure that if user
442 # code modifies it, we restore our own handling.
442 # code modifies it, we restore our own handling.
443 try:
443 try:
444 signal(SIGINT,sigint_handler)
444 signal(SIGINT,sigint_handler)
445 except SystemError:
445 except SystemError:
446 # This happens under Windows, which seems to have all sorts
446 # This happens under Windows, which seems to have all sorts
447 # of problems with signal handling. Oh well...
447 # of problems with signal handling. Oh well...
448 pass
448 pass
449
449
450 # Flush queue of pending code by calling the run methood of the parent
450 # Flush queue of pending code by calling the run methood of the parent
451 # class with all items which may be in the queue.
451 # class with all items which may be in the queue.
452 while 1:
452 while 1:
453 try:
453 try:
454 code_to_run = self.code_queue.get_nowait()
454 code_to_run = self.code_queue.get_nowait()
455 except Queue.Empty:
455 except Queue.Empty:
456 break
456 break
457 if got_lock:
457 if got_lock:
458 self.thread_ready.notify()
458 self.thread_ready.notify()
459 InteractiveShell.runcode(self,code_to_run)
459 InteractiveShell.runcode(self,code_to_run)
460 else:
460 else:
461 break
461 break
462
462
463 # We're done with thread-protected variables
463 # We're done with thread-protected variables
464 if got_lock:
464 if got_lock:
465 self.thread_ready.release()
465 self.thread_ready.release()
466
466
467 # We're done...
467 # We're done...
468 CODE_RUN = False
468 CODE_RUN = False
469 # This MUST return true for gtk threading to work
469 # This MUST return true for gtk threading to work
470 return True
470 return True
471
471
472 def kill(self):
472 def kill(self):
473 """Kill the thread, returning when it has been shut down."""
473 """Kill the thread, returning when it has been shut down."""
474 got_lock = self.thread_ready.acquire(False)
474 got_lock = self.thread_ready.acquire(False)
475 self._kill = True
475 self._kill = True
476 if got_lock:
476 if got_lock:
477 self.thread_ready.release()
477 self.thread_ready.release()
478
478
479 class MatplotlibShellBase:
479 class MatplotlibShellBase:
480 """Mixin class to provide the necessary modifications to regular IPython
480 """Mixin class to provide the necessary modifications to regular IPython
481 shell classes for matplotlib support.
481 shell classes for matplotlib support.
482
482
483 Given Python's MRO, this should be used as the FIRST class in the
483 Given Python's MRO, this should be used as the FIRST class in the
484 inheritance hierarchy, so that it overrides the relevant methods."""
484 inheritance hierarchy, so that it overrides the relevant methods."""
485
485
486 def _matplotlib_config(self,name,user_ns):
486 def _matplotlib_config(self,name,user_ns):
487 """Return items needed to setup the user's shell with matplotlib"""
487 """Return items needed to setup the user's shell with matplotlib"""
488
488
489 # Initialize matplotlib to interactive mode always
489 # Initialize matplotlib to interactive mode always
490 import matplotlib
490 import matplotlib
491 from matplotlib import backends
491 from matplotlib import backends
492 matplotlib.interactive(True)
492 matplotlib.interactive(True)
493
493
494 def use(arg):
494 def use(arg):
495 """IPython wrapper for matplotlib's backend switcher.
495 """IPython wrapper for matplotlib's backend switcher.
496
496
497 In interactive use, we can not allow switching to a different
497 In interactive use, we can not allow switching to a different
498 interactive backend, since thread conflicts will most likely crash
498 interactive backend, since thread conflicts will most likely crash
499 the python interpreter. This routine does a safety check first,
499 the python interpreter. This routine does a safety check first,
500 and refuses to perform a dangerous switch. It still allows
500 and refuses to perform a dangerous switch. It still allows
501 switching to non-interactive backends."""
501 switching to non-interactive backends."""
502
502
503 if arg in backends.interactive_bk and arg != self.mpl_backend:
503 if arg in backends.interactive_bk and arg != self.mpl_backend:
504 m=('invalid matplotlib backend switch.\n'
504 m=('invalid matplotlib backend switch.\n'
505 'This script attempted to switch to the interactive '
505 'This script attempted to switch to the interactive '
506 'backend: `%s`\n'
506 'backend: `%s`\n'
507 'Your current choice of interactive backend is: `%s`\n\n'
507 'Your current choice of interactive backend is: `%s`\n\n'
508 'Switching interactive matplotlib backends at runtime\n'
508 'Switching interactive matplotlib backends at runtime\n'
509 'would crash the python interpreter, '
509 'would crash the python interpreter, '
510 'and IPython has blocked it.\n\n'
510 'and IPython has blocked it.\n\n'
511 'You need to either change your choice of matplotlib backend\n'
511 'You need to either change your choice of matplotlib backend\n'
512 'by editing your .matplotlibrc file, or run this script as a \n'
512 'by editing your .matplotlibrc file, or run this script as a \n'
513 'standalone file from the command line, not using IPython.\n' %
513 'standalone file from the command line, not using IPython.\n' %
514 (arg,self.mpl_backend) )
514 (arg,self.mpl_backend) )
515 raise RuntimeError, m
515 raise RuntimeError, m
516 else:
516 else:
517 self.mpl_use(arg)
517 self.mpl_use(arg)
518 self.mpl_use._called = True
518 self.mpl_use._called = True
519
519
520 self.matplotlib = matplotlib
520 self.matplotlib = matplotlib
521 self.mpl_backend = matplotlib.rcParams['backend']
521 self.mpl_backend = matplotlib.rcParams['backend']
522
522
523 # we also need to block switching of interactive backends by use()
523 # we also need to block switching of interactive backends by use()
524 self.mpl_use = matplotlib.use
524 self.mpl_use = matplotlib.use
525 self.mpl_use._called = False
525 self.mpl_use._called = False
526 # overwrite the original matplotlib.use with our wrapper
526 # overwrite the original matplotlib.use with our wrapper
527 matplotlib.use = use
527 matplotlib.use = use
528
528
529 # This must be imported last in the matplotlib series, after
529 # This must be imported last in the matplotlib series, after
530 # backend/interactivity choices have been made
530 # backend/interactivity choices have been made
531 import matplotlib.pylab as pylab
531 import matplotlib.pylab as pylab
532 self.pylab = pylab
532 self.pylab = pylab
533
533
534 self.pylab.show._needmain = False
534 self.pylab.show._needmain = False
535 # We need to detect at runtime whether show() is called by the user.
535 # We need to detect at runtime whether show() is called by the user.
536 # For this, we wrap it into a decorator which adds a 'called' flag.
536 # For this, we wrap it into a decorator which adds a 'called' flag.
537 self.pylab.draw_if_interactive = flag_calls(self.pylab.draw_if_interactive)
537 self.pylab.draw_if_interactive = flag_calls(self.pylab.draw_if_interactive)
538
538
539 # Build a user namespace initialized with matplotlib/matlab features.
539 # Build a user namespace initialized with matplotlib/matlab features.
540 user_ns = IPython.ipapi.make_user_ns(user_ns)
540 user_ns = IPython.ipapi.make_user_ns(user_ns)
541
541
542 exec ("import matplotlib\n"
542 exec ("import matplotlib\n"
543 "import matplotlib.pylab as pylab\n") in user_ns
543 "import matplotlib.pylab as pylab\n") in user_ns
544
544
545 # Build matplotlib info banner
545 # Build matplotlib info banner
546 b="""
546 b="""
547 Welcome to pylab, a matplotlib-based Python environment.
547 Welcome to pylab, a matplotlib-based Python environment.
548 For more information, type 'help(pylab)'.
548 For more information, type 'help(pylab)'.
549 """
549 """
550 return user_ns,b
550 return user_ns,b
551
551
552 def mplot_exec(self,fname,*where,**kw):
552 def mplot_exec(self,fname,*where,**kw):
553 """Execute a matplotlib script.
553 """Execute a matplotlib script.
554
554
555 This is a call to execfile(), but wrapped in safeties to properly
555 This is a call to execfile(), but wrapped in safeties to properly
556 handle interactive rendering and backend switching."""
556 handle interactive rendering and backend switching."""
557
557
558 #print '*** Matplotlib runner ***' # dbg
558 #print '*** Matplotlib runner ***' # dbg
559 # turn off rendering until end of script
559 # turn off rendering until end of script
560 isInteractive = self.matplotlib.rcParams['interactive']
560 isInteractive = self.matplotlib.rcParams['interactive']
561 self.matplotlib.interactive(False)
561 self.matplotlib.interactive(False)
562 self.safe_execfile(fname,*where,**kw)
562 self.safe_execfile(fname,*where,**kw)
563 self.matplotlib.interactive(isInteractive)
563 self.matplotlib.interactive(isInteractive)
564 # make rendering call now, if the user tried to do it
564 # make rendering call now, if the user tried to do it
565 if self.pylab.draw_if_interactive.called:
565 if self.pylab.draw_if_interactive.called:
566 self.pylab.draw()
566 self.pylab.draw()
567 self.pylab.draw_if_interactive.called = False
567 self.pylab.draw_if_interactive.called = False
568
568
569 # if a backend switch was performed, reverse it now
569 # if a backend switch was performed, reverse it now
570 if self.mpl_use._called:
570 if self.mpl_use._called:
571 self.matplotlib.rcParams['backend'] = self.mpl_backend
571 self.matplotlib.rcParams['backend'] = self.mpl_backend
572
572
573 def magic_run(self,parameter_s=''):
573 def magic_run(self,parameter_s=''):
574 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
574 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
575
575
576 # Fix the docstring so users see the original as well
576 # Fix the docstring so users see the original as well
577 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
577 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
578 "\n *** Modified %run for Matplotlib,"
578 "\n *** Modified %run for Matplotlib,"
579 " with proper interactive handling ***")
579 " with proper interactive handling ***")
580
580
581 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
581 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
582 # and multithreaded. Note that these are meant for internal use, the IPShell*
582 # and multithreaded. Note that these are meant for internal use, the IPShell*
583 # classes below are the ones meant for public consumption.
583 # classes below are the ones meant for public consumption.
584
584
585 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
585 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
586 """Single-threaded shell with matplotlib support."""
586 """Single-threaded shell with matplotlib support."""
587
587
588 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
588 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
589 user_ns=None,user_global_ns=None,**kw):
589 user_ns=None,user_global_ns=None,**kw):
590 user_ns,b2 = self._matplotlib_config(name,user_ns)
590 user_ns,b2 = self._matplotlib_config(name,user_ns)
591 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
591 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
592 banner2=b2,**kw)
592 banner2=b2,**kw)
593
593
594 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
594 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
595 """Multi-threaded shell with matplotlib support."""
595 """Multi-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 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
600 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
601 banner2=b2,**kw)
601 banner2=b2,**kw)
602
602
603 #-----------------------------------------------------------------------------
603 #-----------------------------------------------------------------------------
604 # Utility functions for the different GUI enabled IPShell* classes.
604 # Utility functions for the different GUI enabled IPShell* classes.
605
605
606 def get_tk():
606 def get_tk():
607 """Tries to import Tkinter and returns a withdrawn Tkinter root
607 """Tries to import Tkinter and returns a withdrawn Tkinter root
608 window. If Tkinter is already imported or not available, this
608 window. If Tkinter is already imported or not available, this
609 returns None. This function calls `hijack_tk` underneath.
609 returns None. This function calls `hijack_tk` underneath.
610 """
610 """
611 if not USE_TK or sys.modules.has_key('Tkinter'):
611 if not USE_TK or sys.modules.has_key('Tkinter'):
612 return None
612 return None
613 else:
613 else:
614 try:
614 try:
615 import Tkinter
615 import Tkinter
616 except ImportError:
616 except ImportError:
617 return None
617 return None
618 else:
618 else:
619 hijack_tk()
619 hijack_tk()
620 r = Tkinter.Tk()
620 r = Tkinter.Tk()
621 r.withdraw()
621 r.withdraw()
622 return r
622 return r
623
623
624 def hijack_tk():
624 def hijack_tk():
625 """Modifies Tkinter's mainloop with a dummy so when a module calls
625 """Modifies Tkinter's mainloop with a dummy so when a module calls
626 mainloop, it does not block.
626 mainloop, it does not block.
627
627
628 """
628 """
629 def misc_mainloop(self, n=0):
629 def misc_mainloop(self, n=0):
630 pass
630 pass
631 def tkinter_mainloop(n=0):
631 def tkinter_mainloop(n=0):
632 pass
632 pass
633
633
634 import Tkinter
634 import Tkinter
635 Tkinter.Misc.mainloop = misc_mainloop
635 Tkinter.Misc.mainloop = misc_mainloop
636 Tkinter.mainloop = tkinter_mainloop
636 Tkinter.mainloop = tkinter_mainloop
637
637
638 def update_tk(tk):
638 def update_tk(tk):
639 """Updates the Tkinter event loop. This is typically called from
639 """Updates the Tkinter event loop. This is typically called from
640 the respective WX or GTK mainloops.
640 the respective WX or GTK mainloops.
641 """
641 """
642 if tk:
642 if tk:
643 tk.update()
643 tk.update()
644
644
645 def hijack_wx():
645 def hijack_wx():
646 """Modifies wxPython's MainLoop with a dummy so user code does not
646 """Modifies wxPython's MainLoop with a dummy so user code does not
647 block IPython. The hijacked mainloop function is returned.
647 block IPython. The hijacked mainloop function is returned.
648 """
648 """
649 def dummy_mainloop(*args, **kw):
649 def dummy_mainloop(*args, **kw):
650 pass
650 pass
651
651
652 try:
652 try:
653 import wx
653 import wx
654 except ImportError:
654 except ImportError:
655 # For very old versions of WX
655 # For very old versions of WX
656 import wxPython as wx
656 import wxPython as wx
657
657
658 ver = wx.__version__
658 ver = wx.__version__
659 orig_mainloop = None
659 orig_mainloop = None
660 if ver[:3] >= '2.5':
660 if ver[:3] >= '2.5':
661 import wx
661 import wx
662 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
662 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
663 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
663 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
664 else: raise AttributeError('Could not find wx core module')
664 else: raise AttributeError('Could not find wx core module')
665 orig_mainloop = core.PyApp_MainLoop
665 orig_mainloop = core.PyApp_MainLoop
666 core.PyApp_MainLoop = dummy_mainloop
666 core.PyApp_MainLoop = dummy_mainloop
667 elif ver[:3] == '2.4':
667 elif ver[:3] == '2.4':
668 orig_mainloop = wx.wxc.wxPyApp_MainLoop
668 orig_mainloop = wx.wxc.wxPyApp_MainLoop
669 wx.wxc.wxPyApp_MainLoop = dummy_mainloop
669 wx.wxc.wxPyApp_MainLoop = dummy_mainloop
670 else:
670 else:
671 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
671 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
672 return orig_mainloop
672 return orig_mainloop
673
673
674 def hijack_gtk():
674 def hijack_gtk():
675 """Modifies pyGTK's mainloop with a dummy so user code does not
675 """Modifies pyGTK's mainloop with a dummy so user code does not
676 block IPython. This function returns the original `gtk.mainloop`
676 block IPython. This function returns the original `gtk.mainloop`
677 function that has been hijacked.
677 function that has been hijacked.
678 """
678 """
679 def dummy_mainloop(*args, **kw):
679 def dummy_mainloop(*args, **kw):
680 pass
680 pass
681 import gtk
681 import gtk
682 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
682 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
683 else: orig_mainloop = gtk.mainloop
683 else: orig_mainloop = gtk.mainloop
684 gtk.mainloop = dummy_mainloop
684 gtk.mainloop = dummy_mainloop
685 gtk.main = dummy_mainloop
685 gtk.main = dummy_mainloop
686 return orig_mainloop
686 return orig_mainloop
687
687
688 #-----------------------------------------------------------------------------
688 #-----------------------------------------------------------------------------
689 # The IPShell* classes below are the ones meant to be run by external code as
689 # The IPShell* classes below are the ones meant to be run by external code as
690 # IPython instances. Note that unless a specific threading strategy is
690 # IPython instances. Note that unless a specific threading strategy is
691 # desired, the factory function start() below should be used instead (it
691 # desired, the factory function start() below should be used instead (it
692 # selects the proper threaded class).
692 # selects the proper threaded class).
693
693
694 class IPThread(threading.Thread):
694 class IPThread(threading.Thread):
695 def run(self):
695 def run(self):
696 self.IP.mainloop(self._banner)
696 self.IP.mainloop(self._banner)
697 self.IP.kill()
697 self.IP.kill()
698
698
699 class IPShellGTK(IPThread):
699 class IPShellGTK(IPThread):
700 """Run a gtk mainloop() in a separate thread.
700 """Run a gtk mainloop() in a separate thread.
701
701
702 Python commands can be passed to the thread where they will be executed.
702 Python commands can be passed to the thread where they will be executed.
703 This is implemented by periodically checking for passed code using a
703 This is implemented by periodically checking for passed code using a
704 GTK timeout callback."""
704 GTK timeout callback."""
705
705
706 TIMEOUT = 100 # Millisecond interval between timeouts.
706 TIMEOUT = 100 # Millisecond interval between timeouts.
707
707
708 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
708 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
709 debug=1,shell_class=MTInteractiveShell):
709 debug=1,shell_class=MTInteractiveShell):
710
710
711 import gtk
711 import gtk
712
712
713 self.gtk = gtk
713 self.gtk = gtk
714 self.gtk_mainloop = hijack_gtk()
714 self.gtk_mainloop = hijack_gtk()
715
715
716 # Allows us to use both Tk and GTK.
716 # Allows us to use both Tk and GTK.
717 self.tk = get_tk()
717 self.tk = get_tk()
718
718
719 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
719 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
720 else: mainquit = self.gtk.mainquit
720 else: mainquit = self.gtk.mainquit
721
721
722 self.IP = make_IPython(argv,user_ns=user_ns,
722 self.IP = make_IPython(argv,user_ns=user_ns,
723 user_global_ns=user_global_ns,
723 user_global_ns=user_global_ns,
724 debug=debug,
724 debug=debug,
725 shell_class=shell_class,
725 shell_class=shell_class,
726 on_kill=[mainquit])
726 on_kill=[mainquit])
727
727
728 # HACK: slot for banner in self; it will be passed to the mainloop
728 # HACK: slot for banner in self; it will be passed to the mainloop
729 # method only and .run() needs it. The actual value will be set by
729 # method only and .run() needs it. The actual value will be set by
730 # .mainloop().
730 # .mainloop().
731 self._banner = None
731 self._banner = None
732
732
733 threading.Thread.__init__(self)
733 threading.Thread.__init__(self)
734
734
735 def mainloop(self,sys_exit=0,banner=None):
735 def mainloop(self,sys_exit=0,banner=None):
736
736
737 self._banner = banner
737 self._banner = banner
738
738
739 if self.gtk.pygtk_version >= (2,4,0):
739 if self.gtk.pygtk_version >= (2,4,0):
740 import gobject
740 import gobject
741 gobject.idle_add(self.on_timer)
741 gobject.idle_add(self.on_timer)
742 else:
742 else:
743 self.gtk.idle_add(self.on_timer)
743 self.gtk.idle_add(self.on_timer)
744
744
745 if sys.platform != 'win32':
745 if sys.platform != 'win32':
746 try:
746 try:
747 if self.gtk.gtk_version[0] >= 2:
747 if self.gtk.gtk_version[0] >= 2:
748 self.gtk.gdk.threads_init()
748 self.gtk.gdk.threads_init()
749 except AttributeError:
749 except AttributeError:
750 pass
750 pass
751 except RuntimeError:
751 except RuntimeError:
752 error('Your pyGTK likely has not been compiled with '
752 error('Your pyGTK likely has not been compiled with '
753 'threading support.\n'
753 'threading support.\n'
754 'The exception printout is below.\n'
754 'The exception printout is below.\n'
755 'You can either rebuild pyGTK with threads, or '
755 'You can either rebuild pyGTK with threads, or '
756 'try using \n'
756 'try using \n'
757 'matplotlib with a different backend (like Tk or WX).\n'
757 'matplotlib with a different backend (like Tk or WX).\n'
758 'Note that matplotlib will most likely not work in its '
758 'Note that matplotlib will most likely not work in its '
759 'current state!')
759 'current state!')
760 self.IP.InteractiveTB()
760 self.IP.InteractiveTB()
761
761
762 self.start()
762 self.start()
763 self.gtk.gdk.threads_enter()
763 self.gtk.gdk.threads_enter()
764 self.gtk_mainloop()
764 self.gtk_mainloop()
765 self.gtk.gdk.threads_leave()
765 self.gtk.gdk.threads_leave()
766 self.join()
766 self.join()
767
767
768 def on_timer(self):
768 def on_timer(self):
769 """Called when GTK is idle.
769 """Called when GTK is idle.
770
770
771 Must return True always, otherwise GTK stops calling it"""
771 Must return True always, otherwise GTK stops calling it"""
772
772
773 update_tk(self.tk)
773 update_tk(self.tk)
774 self.IP.runcode()
774 self.IP.runcode()
775 time.sleep(0.01)
775 time.sleep(0.01)
776 return True
776 return True
777
777
778
778
779 class IPShellWX(IPThread):
779 class IPShellWX(IPThread):
780 """Run a wx mainloop() in a separate thread.
780 """Run a wx mainloop() in a separate thread.
781
781
782 Python commands can be passed to the thread where they will be executed.
782 Python commands can be passed to the thread where they will be executed.
783 This is implemented by periodically checking for passed code using a
783 This is implemented by periodically checking for passed code using a
784 GTK timeout callback."""
784 GTK timeout callback."""
785
785
786 TIMEOUT = 100 # Millisecond interval between timeouts.
786 TIMEOUT = 100 # Millisecond interval between timeouts.
787
787
788 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
788 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
789 debug=1,shell_class=MTInteractiveShell):
789 debug=1,shell_class=MTInteractiveShell):
790
790
791 self.IP = make_IPython(argv,user_ns=user_ns,
791 self.IP = make_IPython(argv,user_ns=user_ns,
792 user_global_ns=user_global_ns,
792 user_global_ns=user_global_ns,
793 debug=debug,
793 debug=debug,
794 shell_class=shell_class,
794 shell_class=shell_class,
795 on_kill=[self.wxexit])
795 on_kill=[self.wxexit])
796
796
797 wantedwxversion=self.IP.rc.wxversion
797 wantedwxversion=self.IP.rc.wxversion
798 if wantedwxversion!="0":
798 if wantedwxversion!="0":
799 try:
799 try:
800 import wxversion
800 import wxversion
801 except ImportError:
801 except ImportError:
802 error('The wxversion module is needed for WX version selection')
802 error('The wxversion module is needed for WX version selection')
803 else:
803 else:
804 try:
804 try:
805 wxversion.select(wantedwxversion)
805 wxversion.select(wantedwxversion)
806 except:
806 except:
807 self.IP.InteractiveTB()
807 self.IP.InteractiveTB()
808 error('Requested wxPython version %s could not be loaded' %
808 error('Requested wxPython version %s could not be loaded' %
809 wantedwxversion)
809 wantedwxversion)
810
810
811 import wx
811 import wx
812
812
813 threading.Thread.__init__(self)
813 threading.Thread.__init__(self)
814 self.wx = wx
814 self.wx = wx
815 self.wx_mainloop = hijack_wx()
815 self.wx_mainloop = hijack_wx()
816
816
817 # Allows us to use both Tk and GTK.
817 # Allows us to use both Tk and GTK.
818 self.tk = get_tk()
818 self.tk = get_tk()
819
819
820 # HACK: slot for banner in self; it will be passed to the mainloop
820 # HACK: slot for banner in self; it will be passed to the mainloop
821 # method only and .run() needs it. The actual value will be set by
821 # method only and .run() needs it. The actual value will be set by
822 # .mainloop().
822 # .mainloop().
823 self._banner = None
823 self._banner = None
824
824
825 self.app = None
825 self.app = None
826
826
827 def wxexit(self, *args):
827 def wxexit(self, *args):
828 if self.app is not None:
828 if self.app is not None:
829 self.app.agent.timer.Stop()
829 self.app.agent.timer.Stop()
830 self.app.ExitMainLoop()
830 self.app.ExitMainLoop()
831
831
832 def mainloop(self,sys_exit=0,banner=None):
832 def mainloop(self,sys_exit=0,banner=None):
833
833
834 self._banner = banner
834 self._banner = banner
835
835
836 self.start()
836 self.start()
837
837
838 class TimerAgent(self.wx.MiniFrame):
838 class TimerAgent(self.wx.MiniFrame):
839 wx = self.wx
839 wx = self.wx
840 IP = self.IP
840 IP = self.IP
841 tk = self.tk
841 tk = self.tk
842 def __init__(self, parent, interval):
842 def __init__(self, parent, interval):
843 style = self.wx.DEFAULT_FRAME_STYLE | self.wx.TINY_CAPTION_HORIZ
843 style = self.wx.DEFAULT_FRAME_STYLE | self.wx.TINY_CAPTION_HORIZ
844 self.wx.MiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
844 self.wx.MiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
845 size=(100, 100),style=style)
845 size=(100, 100),style=style)
846 self.Show(False)
846 self.Show(False)
847 self.interval = interval
847 self.interval = interval
848 self.timerId = self.wx.NewId()
848 self.timerId = self.wx.NewId()
849
849
850 def StartWork(self):
850 def StartWork(self):
851 self.timer = self.wx.Timer(self, self.timerId)
851 self.timer = self.wx.Timer(self, self.timerId)
852 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
852 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
853 self.timer.Start(self.interval)
853 self.timer.Start(self.interval)
854
854
855 def OnTimer(self, event):
855 def OnTimer(self, event):
856 update_tk(self.tk)
856 update_tk(self.tk)
857 self.IP.runcode()
857 self.IP.runcode()
858
858
859 class App(self.wx.App):
859 class App(self.wx.App):
860 wx = self.wx
860 wx = self.wx
861 TIMEOUT = self.TIMEOUT
861 TIMEOUT = self.TIMEOUT
862 def OnInit(self):
862 def OnInit(self):
863 'Create the main window and insert the custom frame'
863 'Create the main window and insert the custom frame'
864 self.agent = TimerAgent(None, self.TIMEOUT)
864 self.agent = TimerAgent(None, self.TIMEOUT)
865 self.agent.Show(False)
865 self.agent.Show(False)
866 self.agent.StartWork()
866 self.agent.StartWork()
867 return True
867 return True
868
868
869 self.app = App(redirect=False)
869 self.app = App(redirect=False)
870 self.wx_mainloop(self.app)
870 self.wx_mainloop(self.app)
871 self.join()
871 self.join()
872
872
873
873
874 class IPShellQt(IPThread):
874 class IPShellQt(IPThread):
875 """Run a Qt event loop in a separate thread.
875 """Run a Qt event loop in a separate thread.
876
876
877 Python commands can be passed to the thread where they will be executed.
877 Python commands can be passed to the thread where they will be executed.
878 This is implemented by periodically checking for passed code using a
878 This is implemented by periodically checking for passed code using a
879 Qt timer / slot."""
879 Qt timer / slot."""
880
880
881 TIMEOUT = 100 # Millisecond interval between timeouts.
881 TIMEOUT = 100 # Millisecond interval between timeouts.
882
882
883 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
883 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
884 debug=0,shell_class=MTInteractiveShell):
884 debug=0, shell_class=MTInteractiveShell):
885
885
886 import qt
886 import qt
887
887
888 class newQApplication:
888 self.qApp = qt.qApp
889 def __init__( self ):
890 self.QApplication = qt.QApplication
891
892 def __call__( *args, **kwargs ):
893 return qt.qApp
894
889
895 def exec_loop( *args, **kwargs ):
890 class DummyQApp:
891 def __init__(self, *args):
892 self.qApp = qt.qApp
893
894 def exec_loop(*args, **kwargs):
896 pass
895 pass
897
896
897 def __getattr__(self, name):
898 return getattr(self.qApp, name)
899
900 class DummyQApplication:
901 def __init__(self):
902 self.QApplication = qt.QApplication
903
904 def __call__(*args, **kwargs):
905 # mask until module NoneType errors can be fixed
906 # return DummyQApp()
907 return qt.qApp
908
898 def __getattr__( self, name ):
909 def __getattr__( self, name ):
899 return getattr( self.QApplication, name )
910 return getattr(self.QApplication, name)
900
911
901 qt.QApplication = newQApplication()
912 qt.QApplication = DummyQApplication()
902
913
903 # Allows us to use both Tk and QT.
914 # Allows us to use both Tk and QT.
904 self.tk = get_tk()
915 self.tk = get_tk()
905
916
906 self.IP = make_IPython(argv,user_ns=user_ns,
917 self.IP = make_IPython(argv,
918 user_ns=user_ns,
907 user_global_ns=user_global_ns,
919 user_global_ns=user_global_ns,
908 debug=debug,
920 debug=debug,
909 shell_class=shell_class,
921 shell_class=shell_class,
910 on_kill=[qt.qApp.exit])
922 on_kill=[qt.qApp.exit])
911
923
912 # HACK: slot for banner in self; it will be passed to the mainloop
924 # HACK: slot for banner in self; it will be passed to the mainloop
913 # method only and .run() needs it. The actual value will be set by
925 # method only and .run() needs it. The actual value will be set by
914 # .mainloop().
926 # .mainloop().
915 self._banner = None
927 self._banner = None
916
928
917 threading.Thread.__init__(self)
929 threading.Thread.__init__(self)
918
930
919 def mainloop(self,sys_exit=0,banner=None):
931 def mainloop(self,sys_exit=0,banner=None):
920
932
921 import qt
933 import qt
922
934
923 self._banner = banner
935 self._banner = banner
924
936
925 if qt.QApplication.startingUp():
937 if qt.QApplication.startingUp():
926 a = qt.QApplication.QApplication(sys.argv)
938 self.qApp = qt.QApplication.QApplication(sys.argv)
939 # mask until module NoneType errors can be fixed
940 # qt.qApp = qt.QApplication()
941
927 self.timer = qt.QTimer()
942 self.timer = qt.QTimer()
928 qt.QObject.connect( self.timer, qt.SIGNAL( 'timeout()' ), self.on_timer )
943 qt.QObject.connect(self.timer,
944 qt.SIGNAL( 'timeout()' ),
945 self.on_timer)
929
946
930 self.start()
947 self.start()
931 self.timer.start( self.TIMEOUT, True )
948 self.timer.start(self.TIMEOUT, True)
932 while True:
949 while True:
933 if self.IP._kill: break
950 if self.IP._kill: break
934 qt.qApp.exec_loop()
951 self.qApp.exec_loop()
935 self.join()
952 self.join()
936
953
937 def on_timer(self):
954 def on_timer(self):
938 update_tk(self.tk)
955 update_tk(self.tk)
939 result = self.IP.runcode()
956 result = self.IP.runcode()
940 self.timer.start( self.TIMEOUT, True )
957 self.timer.start(self.TIMEOUT, True)
941 return result
958 return result
942
959
943
960
944 class IPShellQt4(IPThread):
961 class IPShellQt4(IPThread):
945 """Run a Qt event loop in a separate thread.
962 """Run a Qt event loop in a separate thread.
946
963
947 Python commands can be passed to the thread where they will be executed.
964 Python commands can be passed to the thread where they will be executed.
948 This is implemented by periodically checking for passed code using a
965 This is implemented by periodically checking for passed code using a
949 Qt timer / slot."""
966 Qt timer / slot."""
950
967
951 TIMEOUT = 100 # Millisecond interval between timeouts.
968 TIMEOUT = 100 # Millisecond interval between timeouts.
952
969
953 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
970 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
954 debug=0,shell_class=MTInteractiveShell):
971 debug=0, shell_class=MTInteractiveShell):
955
972
956 from PyQt4 import QtCore, QtGui
973 from PyQt4 import QtCore, QtGui
957
974
958 class newQApplication:
975 self.qApp = QtGui.qApp
959 def __init__( self ):
960 self.QApplication = QtGui.QApplication
961
976
962 def __call__( *args, **kwargs ):
977 class DummyQApp:
963 return QtGui.qApp
978 def __init__(self, *args):
979 self.qApp = QtGui.qApp
964
980
965 def exec_loop( *args, **kwargs ):
981 def exec_(*args, **kwargs):
966 pass
982 pass
967
983
968 def __getattr__( self, name ):
984 def __getattr__(self, name):
969 return getattr( self.QApplication, name )
985 return getattr(self.qApp, name)
986
987 class DummyQApplication:
988 def __init__(self, *args):
989 self.QApplication = QtGui.QApplication
990
991 def __call__(*args, **kwargs):
992 # mask until module NoneType errors can be fixed
993 # return DummyQApp()
994 return QtGui.qApp
995
996 def __getattr__(self, name):
997 return getattr(self.QApplication, name)
970
998
971 QtGui.QApplication = newQApplication()
999 QtGui.QApplication = DummyQApplication()
972
1000
973 # Allows us to use both Tk and QT.
1001 # Allows us to use both Tk and QT.
974 self.tk = get_tk()
1002 self.tk = get_tk()
975
1003
976 self.IP = make_IPython(argv,user_ns=user_ns,
1004 self.IP = make_IPython(argv,
1005 user_ns=user_ns,
977 user_global_ns=user_global_ns,
1006 user_global_ns=user_global_ns,
978 debug=debug,
1007 debug=debug,
979 shell_class=shell_class,
1008 shell_class=shell_class,
980 on_kill=[QtGui.qApp.exit])
1009 on_kill=[QtGui.qApp.exit])
981
1010
982 # HACK: slot for banner in self; it will be passed to the mainloop
1011 # HACK: slot for banner in self; it will be passed to the mainloop
983 # method only and .run() needs it. The actual value will be set by
1012 # method only and .run() needs it. The actual value will be set by
984 # .mainloop().
1013 # .mainloop().
985 self._banner = None
1014 self._banner = None
986
1015
987 threading.Thread.__init__(self)
1016 threading.Thread.__init__(self)
988
1017
989 def mainloop(self,sys_exit=0,banner=None):
1018 def mainloop(self, sys_exit=0, banner=None):
990
1019
991 from PyQt4 import QtCore, QtGui
1020 from PyQt4 import QtCore, QtGui
992
1021
993 self._banner = banner
1022 self._banner = banner
994
1023
995 if QtGui.QApplication.startingUp():
1024 if QtGui.QApplication.startingUp():
996 a = QtGui.QApplication.QApplication(sys.argv)
1025 self.qApp = QtGui.QApplication.QApplication(sys.argv)
1026 # mask until module NoneType errors can be fixed
1027 # QtGui.qApp = QtGui.QApplication()
1028
997 self.timer = QtCore.QTimer()
1029 self.timer = QtCore.QTimer()
998 QtCore.QObject.connect( self.timer, QtCore.SIGNAL( 'timeout()' ), self.on_timer )
1030 QtCore.QObject.connect(self.timer,
1031 QtCore.SIGNAL('timeout()'),
1032 self.on_timer)
999
1033
1000 self.start()
1034 self.start()
1001 self.timer.start( self.TIMEOUT )
1035 self.timer.start(self.TIMEOUT)
1002 while True:
1036 while True:
1037 self.qApp.exec_()
1003 if self.IP._kill: break
1038 if self.IP._kill: break
1004 QtGui.qApp.exec_()
1005 self.join()
1039 self.join()
1006
1040
1007 def on_timer(self):
1041 def on_timer(self):
1008 update_tk(self.tk)
1042 update_tk(self.tk)
1009 result = self.IP.runcode()
1043 result = self.IP.runcode()
1010 self.timer.start( self.TIMEOUT )
1044 self.timer.start(self.TIMEOUT)
1011 return result
1045 return result
1012
1046
1013
1047
1014 # A set of matplotlib public IPython shell classes, for single-threaded (Tk*
1048 # A set of matplotlib public IPython shell classes, for single-threaded (Tk*
1015 # and FLTK*) and multithreaded (GTK*, WX* and Qt*) backends to use.
1049 # and FLTK*) and multithreaded (GTK*, WX* and Qt*) backends to use.
1016 def _load_pylab(user_ns):
1050 def _load_pylab(user_ns):
1017 """Allow users to disable pulling all of pylab into the top-level
1051 """Allow users to disable pulling all of pylab into the top-level
1018 namespace.
1052 namespace.
1019
1053
1020 This little utility must be called AFTER the actual ipython instance is
1054 This little utility must be called AFTER the actual ipython instance is
1021 running, since only then will the options file have been fully parsed."""
1055 running, since only then will the options file have been fully parsed."""
1022
1056
1023 ip = IPython.ipapi.get()
1057 ip = IPython.ipapi.get()
1024 if ip.options.pylab_import_all:
1058 if ip.options.pylab_import_all:
1025 exec "from matplotlib.pylab import *" in user_ns
1059 exec "from matplotlib.pylab import *" in user_ns
1026
1060
1027 class IPShellMatplotlib(IPShell):
1061 class IPShellMatplotlib(IPShell):
1028 """Subclass IPShell with MatplotlibShell as the internal shell.
1062 """Subclass IPShell with MatplotlibShell as the internal shell.
1029
1063
1030 Single-threaded class, meant for the Tk* and FLTK* backends.
1064 Single-threaded class, meant for the Tk* and FLTK* backends.
1031
1065
1032 Having this on a separate class simplifies the external driver code."""
1066 Having this on a separate class simplifies the external driver code."""
1033
1067
1034 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1068 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1035 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
1069 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
1036 shell_class=MatplotlibShell)
1070 shell_class=MatplotlibShell)
1037 _load_pylab(self.IP.user_ns)
1071 _load_pylab(self.IP.user_ns)
1038
1072
1039 class IPShellMatplotlibGTK(IPShellGTK):
1073 class IPShellMatplotlibGTK(IPShellGTK):
1040 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
1074 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
1041
1075
1042 Multi-threaded class, meant for the GTK* backends."""
1076 Multi-threaded class, meant for the GTK* backends."""
1043
1077
1044 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1078 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1045 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
1079 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
1046 shell_class=MatplotlibMTShell)
1080 shell_class=MatplotlibMTShell)
1047 _load_pylab(self.IP.user_ns)
1081 _load_pylab(self.IP.user_ns)
1048
1082
1049 class IPShellMatplotlibWX(IPShellWX):
1083 class IPShellMatplotlibWX(IPShellWX):
1050 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
1084 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
1051
1085
1052 Multi-threaded class, meant for the WX* backends."""
1086 Multi-threaded class, meant for the WX* backends."""
1053
1087
1054 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1088 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1055 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
1089 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
1056 shell_class=MatplotlibMTShell)
1090 shell_class=MatplotlibMTShell)
1057 _load_pylab(self.IP.user_ns)
1091 _load_pylab(self.IP.user_ns)
1058
1092
1059 class IPShellMatplotlibQt(IPShellQt):
1093 class IPShellMatplotlibQt(IPShellQt):
1060 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
1094 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
1061
1095
1062 Multi-threaded class, meant for the Qt* backends."""
1096 Multi-threaded class, meant for the Qt* backends."""
1063
1097
1064 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1098 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1065 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
1099 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
1066 shell_class=MatplotlibMTShell)
1100 shell_class=MatplotlibMTShell)
1067 _load_pylab(self.IP.user_ns)
1101 _load_pylab(self.IP.user_ns)
1068
1102
1069 class IPShellMatplotlibQt4(IPShellQt4):
1103 class IPShellMatplotlibQt4(IPShellQt4):
1070 """Subclass IPShellQt4 with MatplotlibMTShell as the internal shell.
1104 """Subclass IPShellQt4 with MatplotlibMTShell as the internal shell.
1071
1105
1072 Multi-threaded class, meant for the Qt4* backends."""
1106 Multi-threaded class, meant for the Qt4* backends."""
1073
1107
1074 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1108 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1075 IPShellQt4.__init__(self,argv,user_ns,user_global_ns,debug,
1109 IPShellQt4.__init__(self,argv,user_ns,user_global_ns,debug,
1076 shell_class=MatplotlibMTShell)
1110 shell_class=MatplotlibMTShell)
1077 _load_pylab(self.IP.user_ns)
1111 _load_pylab(self.IP.user_ns)
1078
1112
1079 #-----------------------------------------------------------------------------
1113 #-----------------------------------------------------------------------------
1080 # Factory functions to actually start the proper thread-aware shell
1114 # Factory functions to actually start the proper thread-aware shell
1081
1115
1082 def _matplotlib_shell_class():
1116 def _matplotlib_shell_class():
1083 """Factory function to handle shell class selection for matplotlib.
1117 """Factory function to handle shell class selection for matplotlib.
1084
1118
1085 The proper shell class to use depends on the matplotlib backend, since
1119 The proper shell class to use depends on the matplotlib backend, since
1086 each backend requires a different threading strategy."""
1120 each backend requires a different threading strategy."""
1087
1121
1088 try:
1122 try:
1089 import matplotlib
1123 import matplotlib
1090 except ImportError:
1124 except ImportError:
1091 error('matplotlib could NOT be imported! Starting normal IPython.')
1125 error('matplotlib could NOT be imported! Starting normal IPython.')
1092 sh_class = IPShell
1126 sh_class = IPShell
1093 else:
1127 else:
1094 backend = matplotlib.rcParams['backend']
1128 backend = matplotlib.rcParams['backend']
1095 if backend.startswith('GTK'):
1129 if backend.startswith('GTK'):
1096 sh_class = IPShellMatplotlibGTK
1130 sh_class = IPShellMatplotlibGTK
1097 elif backend.startswith('WX'):
1131 elif backend.startswith('WX'):
1098 sh_class = IPShellMatplotlibWX
1132 sh_class = IPShellMatplotlibWX
1099 elif backend.startswith('Qt4'):
1133 elif backend.startswith('Qt4'):
1100 sh_class = IPShellMatplotlibQt4
1134 sh_class = IPShellMatplotlibQt4
1101 elif backend.startswith('Qt'):
1135 elif backend.startswith('Qt'):
1102 sh_class = IPShellMatplotlibQt
1136 sh_class = IPShellMatplotlibQt
1103 else:
1137 else:
1104 sh_class = IPShellMatplotlib
1138 sh_class = IPShellMatplotlib
1105 #print 'Using %s with the %s backend.' % (sh_class,backend) # dbg
1139 #print 'Using %s with the %s backend.' % (sh_class,backend) # dbg
1106 return sh_class
1140 return sh_class
1107
1141
1108 # This is the one which should be called by external code.
1142 # This is the one which should be called by external code.
1109 def start(user_ns = None):
1143 def start(user_ns = None):
1110 """Return a running shell instance, dealing with threading options.
1144 """Return a running shell instance, dealing with threading options.
1111
1145
1112 This is a factory function which will instantiate the proper IPython shell
1146 This is a factory function which will instantiate the proper IPython shell
1113 based on the user's threading choice. Such a selector is needed because
1147 based on the user's threading choice. Such a selector is needed because
1114 different GUI toolkits require different thread handling details."""
1148 different GUI toolkits require different thread handling details."""
1115
1149
1116 global USE_TK
1150 global USE_TK
1117 # Crude sys.argv hack to extract the threading options.
1151 # Crude sys.argv hack to extract the threading options.
1118 argv = sys.argv
1152 argv = sys.argv
1119 if len(argv) > 1:
1153 if len(argv) > 1:
1120 if len(argv) > 2:
1154 if len(argv) > 2:
1121 arg2 = argv[2]
1155 arg2 = argv[2]
1122 if arg2.endswith('-tk'):
1156 if arg2.endswith('-tk'):
1123 USE_TK = True
1157 USE_TK = True
1124 arg1 = argv[1]
1158 arg1 = argv[1]
1125 if arg1.endswith('-gthread'):
1159 if arg1.endswith('-gthread'):
1126 shell = IPShellGTK
1160 shell = IPShellGTK
1127 elif arg1.endswith( '-qthread' ):
1161 elif arg1.endswith( '-qthread' ):
1128 shell = IPShellQt
1162 shell = IPShellQt
1129 elif arg1.endswith( '-q4thread' ):
1163 elif arg1.endswith( '-q4thread' ):
1130 shell = IPShellQt4
1164 shell = IPShellQt4
1131 elif arg1.endswith('-wthread'):
1165 elif arg1.endswith('-wthread'):
1132 shell = IPShellWX
1166 shell = IPShellWX
1133 elif arg1.endswith('-pylab'):
1167 elif arg1.endswith('-pylab'):
1134 shell = _matplotlib_shell_class()
1168 shell = _matplotlib_shell_class()
1135 else:
1169 else:
1136 shell = IPShell
1170 shell = IPShell
1137 else:
1171 else:
1138 shell = IPShell
1172 shell = IPShell
1139 return shell(user_ns = user_ns)
1173 return shell(user_ns = user_ns)
1140
1174
1141 # Some aliases for backwards compatibility
1175 # Some aliases for backwards compatibility
1142 IPythonShell = IPShell
1176 IPythonShell = IPShell
1143 IPythonShellEmbed = IPShellEmbed
1177 IPythonShellEmbed = IPShellEmbed
1144 #************************ End of file <Shell.py> ***************************
1178 #************************ End of file <Shell.py> ***************************
@@ -1,7169 +1,7173 b''
1 2007-09-10 Darren Dale <dd55@cornell.edu>
2
3 * Cleanup of IPShellQt and IPShellQt4
4
1 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
5 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
2
6
3 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
7 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
4 doctest support.
8 doctest support.
5
9
6 * IPython/iplib.py (safe_execfile): minor docstring improvements.
10 * IPython/iplib.py (safe_execfile): minor docstring improvements.
7
11
8 2007-09-08 Ville Vainio <vivainio@gmail.com>
12 2007-09-08 Ville Vainio <vivainio@gmail.com>
9
13
10 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
14 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
11 directory, not the target directory.
15 directory, not the target directory.
12
16
13 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
17 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
14 exception that won't print the tracebacks. Switched many magics to
18 exception that won't print the tracebacks. Switched many magics to
15 raise them on error situations, also GetoptError is not printed
19 raise them on error situations, also GetoptError is not printed
16 anymore.
20 anymore.
17
21
18 2007-09-07 Ville Vainio <vivainio@gmail.com>
22 2007-09-07 Ville Vainio <vivainio@gmail.com>
19
23
20 * iplib.py: do not auto-alias "dir", it screws up other dir auto
24 * iplib.py: do not auto-alias "dir", it screws up other dir auto
21 aliases.
25 aliases.
22
26
23 * genutils.py: SList.grep() implemented.
27 * genutils.py: SList.grep() implemented.
24
28
25 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
29 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
26 for easy "out of the box" setup of several common editors, so that
30 for easy "out of the box" setup of several common editors, so that
27 e.g. '%edit os.path.isfile' will jump to the correct line
31 e.g. '%edit os.path.isfile' will jump to the correct line
28 automatically. Contributions for command lines of your favourite
32 automatically. Contributions for command lines of your favourite
29 editors welcome.
33 editors welcome.
30
34
31 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
35 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
32
36
33 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
37 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
34 preventing source display in certain cases. In reality I think
38 preventing source display in certain cases. In reality I think
35 the problem is with Ubuntu's Python build, but this change works
39 the problem is with Ubuntu's Python build, but this change works
36 around the issue in some cases (not in all, unfortunately). I'd
40 around the issue in some cases (not in all, unfortunately). I'd
37 filed a Python bug on this with more details, but in the change of
41 filed a Python bug on this with more details, but in the change of
38 bug trackers it seems to have been lost.
42 bug trackers it seems to have been lost.
39
43
40 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
44 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
41 not the same, it's not self-documenting, doesn't allow range
45 not the same, it's not self-documenting, doesn't allow range
42 selection, and sorts alphabetically instead of numerically.
46 selection, and sorts alphabetically instead of numerically.
43 (magic_r): restore %r. No, "up + enter. One char magic" is not
47 (magic_r): restore %r. No, "up + enter. One char magic" is not
44 the same thing, since %r takes parameters to allow fast retrieval
48 the same thing, since %r takes parameters to allow fast retrieval
45 of old commands. I've received emails from users who use this a
49 of old commands. I've received emails from users who use this a
46 LOT, so it stays.
50 LOT, so it stays.
47 (magic_automagic): restore %automagic. "use _ip.option.automagic"
51 (magic_automagic): restore %automagic. "use _ip.option.automagic"
48 is not a valid replacement b/c it doesn't provide an complete
52 is not a valid replacement b/c it doesn't provide an complete
49 explanation (which the automagic docstring does).
53 explanation (which the automagic docstring does).
50 (magic_autocall): restore %autocall, with improved docstring.
54 (magic_autocall): restore %autocall, with improved docstring.
51 Same argument as for others, "use _ip.options.autocall" is not a
55 Same argument as for others, "use _ip.options.autocall" is not a
52 valid replacement.
56 valid replacement.
53 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
57 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
54 tutorials and online docs.
58 tutorials and online docs.
55
59
56 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
60 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
57
61
58 * IPython/usage.py (quick_reference): mention magics in quickref,
62 * IPython/usage.py (quick_reference): mention magics in quickref,
59 modified main banner to mention %quickref.
63 modified main banner to mention %quickref.
60
64
61 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
65 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
62
66
63 2007-09-06 Ville Vainio <vivainio@gmail.com>
67 2007-09-06 Ville Vainio <vivainio@gmail.com>
64
68
65 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
69 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
66 Callable aliases now pass the _ip as first arg. This breaks
70 Callable aliases now pass the _ip as first arg. This breaks
67 compatibility with earlier 0.8.2.svn series! (though they should
71 compatibility with earlier 0.8.2.svn series! (though they should
68 not have been in use yet outside these few extensions)
72 not have been in use yet outside these few extensions)
69
73
70 2007-09-05 Ville Vainio <vivainio@gmail.com>
74 2007-09-05 Ville Vainio <vivainio@gmail.com>
71
75
72 * external/mglob.py: expand('dirname') => ['dirname'], instead
76 * external/mglob.py: expand('dirname') => ['dirname'], instead
73 of ['dirname/foo','dirname/bar', ...].
77 of ['dirname/foo','dirname/bar', ...].
74
78
75 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
79 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
76 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
80 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
77 is useful for others as well).
81 is useful for others as well).
78
82
79 * iplib.py: on callable aliases (as opposed to old style aliases),
83 * iplib.py: on callable aliases (as opposed to old style aliases),
80 do var_expand() immediately, and use make_quoted_expr instead
84 do var_expand() immediately, and use make_quoted_expr instead
81 of hardcoded r"""
85 of hardcoded r"""
82
86
83 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
87 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
84 if not available load ipy_fsops.py for cp, mv, etc. replacements
88 if not available load ipy_fsops.py for cp, mv, etc. replacements
85
89
86 * OInspect.py, ipy_which.py: improve %which and obj? for callable
90 * OInspect.py, ipy_which.py: improve %which and obj? for callable
87 aliases
91 aliases
88
92
89 2007-09-04 Ville Vainio <vivainio@gmail.com>
93 2007-09-04 Ville Vainio <vivainio@gmail.com>
90
94
91 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
95 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
92 Relicensed under BSD with the authors approval.
96 Relicensed under BSD with the authors approval.
93
97
94 * ipmaker.py, usage.py: Remove %magic from default banner, improve
98 * ipmaker.py, usage.py: Remove %magic from default banner, improve
95 %quickref
99 %quickref
96
100
97 2007-09-03 Ville Vainio <vivainio@gmail.com>
101 2007-09-03 Ville Vainio <vivainio@gmail.com>
98
102
99 * Magic.py: %time now passes expression through prefilter,
103 * Magic.py: %time now passes expression through prefilter,
100 allowing IPython syntax.
104 allowing IPython syntax.
101
105
102 2007-09-01 Ville Vainio <vivainio@gmail.com>
106 2007-09-01 Ville Vainio <vivainio@gmail.com>
103
107
104 * ipmaker.py: Always show full traceback when newstyle config fails
108 * ipmaker.py: Always show full traceback when newstyle config fails
105
109
106 2007-08-27 Ville Vainio <vivainio@gmail.com>
110 2007-08-27 Ville Vainio <vivainio@gmail.com>
107
111
108 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
112 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
109
113
110 2007-08-26 Ville Vainio <vivainio@gmail.com>
114 2007-08-26 Ville Vainio <vivainio@gmail.com>
111
115
112 * ipmaker.py: Command line args have the highest priority again
116 * ipmaker.py: Command line args have the highest priority again
113
117
114 * iplib.py, ipmaker.py: -i command line argument now behaves as in
118 * iplib.py, ipmaker.py: -i command line argument now behaves as in
115 normal python, i.e. leaves the IPython session running after -c
119 normal python, i.e. leaves the IPython session running after -c
116 command or running a batch file from command line.
120 command or running a batch file from command line.
117
121
118 2007-08-22 Ville Vainio <vivainio@gmail.com>
122 2007-08-22 Ville Vainio <vivainio@gmail.com>
119
123
120 * iplib.py: no extra empty (last) line in raw hist w/ multiline
124 * iplib.py: no extra empty (last) line in raw hist w/ multiline
121 statements
125 statements
122
126
123 * logger.py: Fix bug where blank lines in history were not
127 * logger.py: Fix bug where blank lines in history were not
124 added until AFTER adding the current line; translated and raw
128 added until AFTER adding the current line; translated and raw
125 history should finally be in sync with prompt now.
129 history should finally be in sync with prompt now.
126
130
127 * ipy_completers.py: quick_completer now makes it easy to create
131 * ipy_completers.py: quick_completer now makes it easy to create
128 trivial custom completers
132 trivial custom completers
129
133
130 * clearcmd.py: shadow history compression & erasing, fixed input hist
134 * clearcmd.py: shadow history compression & erasing, fixed input hist
131 clearing.
135 clearing.
132
136
133 * envpersist.py, history.py: %env (sh profile only), %hist completers
137 * envpersist.py, history.py: %env (sh profile only), %hist completers
134
138
135 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
139 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
136 term title now include the drive letter, and always use / instead of
140 term title now include the drive letter, and always use / instead of
137 os.sep (as per recommended approach for win32 ipython in general).
141 os.sep (as per recommended approach for win32 ipython in general).
138
142
139 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
143 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
140 plain python scripts from ipykit command line by running
144 plain python scripts from ipykit command line by running
141 "py myscript.py", even w/o installed python.
145 "py myscript.py", even w/o installed python.
142
146
143 2007-08-21 Ville Vainio <vivainio@gmail.com>
147 2007-08-21 Ville Vainio <vivainio@gmail.com>
144
148
145 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
149 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
146 (for backwards compatibility)
150 (for backwards compatibility)
147
151
148 * history.py: switch back to %hist -t from %hist -r as default.
152 * history.py: switch back to %hist -t from %hist -r as default.
149 At least until raw history is fixed for good.
153 At least until raw history is fixed for good.
150
154
151 2007-08-20 Ville Vainio <vivainio@gmail.com>
155 2007-08-20 Ville Vainio <vivainio@gmail.com>
152
156
153 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
157 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
154 locate alias redeclarations etc. Also, avoid handling
158 locate alias redeclarations etc. Also, avoid handling
155 _ip.IP.alias_table directly, prefer using _ip.defalias.
159 _ip.IP.alias_table directly, prefer using _ip.defalias.
156
160
157
161
158 2007-08-15 Ville Vainio <vivainio@gmail.com>
162 2007-08-15 Ville Vainio <vivainio@gmail.com>
159
163
160 * prefilter.py: ! is now always served first
164 * prefilter.py: ! is now always served first
161
165
162 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
166 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
163
167
164 * IPython/iplib.py (safe_execfile): fix the SystemExit
168 * IPython/iplib.py (safe_execfile): fix the SystemExit
165 auto-suppression code to work in Python2.4 (the internal structure
169 auto-suppression code to work in Python2.4 (the internal structure
166 of that exception changed and I'd only tested the code with 2.5).
170 of that exception changed and I'd only tested the code with 2.5).
167 Bug reported by a SciPy attendee.
171 Bug reported by a SciPy attendee.
168
172
169 2007-08-13 Ville Vainio <vivainio@gmail.com>
173 2007-08-13 Ville Vainio <vivainio@gmail.com>
170
174
171 * prefilter.py: reverted !c:/bin/foo fix, made % in
175 * prefilter.py: reverted !c:/bin/foo fix, made % in
172 multiline specials work again
176 multiline specials work again
173
177
174 2007-08-13 Ville Vainio <vivainio@gmail.com>
178 2007-08-13 Ville Vainio <vivainio@gmail.com>
175
179
176 * prefilter.py: Take more care to special-case !, so that
180 * prefilter.py: Take more care to special-case !, so that
177 !c:/bin/foo.exe works.
181 !c:/bin/foo.exe works.
178
182
179 * setup.py: if we are building eggs, strip all docs and
183 * setup.py: if we are building eggs, strip all docs and
180 examples (it doesn't make sense to bytecompile examples,
184 examples (it doesn't make sense to bytecompile examples,
181 and docs would be in an awkward place anyway).
185 and docs would be in an awkward place anyway).
182
186
183 * Ryan Krauss' patch fixes start menu shortcuts when IPython
187 * Ryan Krauss' patch fixes start menu shortcuts when IPython
184 is installed into a directory that has spaces in the name.
188 is installed into a directory that has spaces in the name.
185
189
186 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
190 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
187
191
188 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
192 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
189 doctest profile and %doctest_mode, so they actually generate the
193 doctest profile and %doctest_mode, so they actually generate the
190 blank lines needed by doctest to separate individual tests.
194 blank lines needed by doctest to separate individual tests.
191
195
192 * IPython/iplib.py (safe_execfile): modify so that running code
196 * IPython/iplib.py (safe_execfile): modify so that running code
193 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
197 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
194 doesn't get a printed traceback. Any other value in sys.exit(),
198 doesn't get a printed traceback. Any other value in sys.exit(),
195 including the empty call, still generates a traceback. This
199 including the empty call, still generates a traceback. This
196 enables use of %run without having to pass '-e' for codes that
200 enables use of %run without having to pass '-e' for codes that
197 correctly set the exit status flag.
201 correctly set the exit status flag.
198
202
199 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
203 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
200
204
201 * IPython/iplib.py (InteractiveShell.post_config_initialization):
205 * IPython/iplib.py (InteractiveShell.post_config_initialization):
202 fix problems with doctests failing when run inside IPython due to
206 fix problems with doctests failing when run inside IPython due to
203 IPython's modifications of sys.displayhook.
207 IPython's modifications of sys.displayhook.
204
208
205 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
209 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
206
210
207 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
211 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
208 a string with names.
212 a string with names.
209
213
210 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
214 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
211
215
212 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
216 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
213 magic to toggle on/off the doctest pasting support without having
217 magic to toggle on/off the doctest pasting support without having
214 to leave a session to switch to a separate profile.
218 to leave a session to switch to a separate profile.
215
219
216 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
220 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
217
221
218 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
222 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
219 introduce a blank line between inputs, to conform to doctest
223 introduce a blank line between inputs, to conform to doctest
220 requirements.
224 requirements.
221
225
222 * IPython/OInspect.py (Inspector.pinfo): fix another part where
226 * IPython/OInspect.py (Inspector.pinfo): fix another part where
223 auto-generated docstrings for new-style classes were showing up.
227 auto-generated docstrings for new-style classes were showing up.
224
228
225 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
229 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
226
230
227 * api_changes: Add new file to track backward-incompatible
231 * api_changes: Add new file to track backward-incompatible
228 user-visible changes.
232 user-visible changes.
229
233
230 2007-08-06 Ville Vainio <vivainio@gmail.com>
234 2007-08-06 Ville Vainio <vivainio@gmail.com>
231
235
232 * ipmaker.py: fix bug where user_config_ns didn't exist at all
236 * ipmaker.py: fix bug where user_config_ns didn't exist at all
233 before all the config files were handled.
237 before all the config files were handled.
234
238
235 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
239 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
236
240
237 * IPython/irunner.py (RunnerFactory): Add new factory class for
241 * IPython/irunner.py (RunnerFactory): Add new factory class for
238 creating reusable runners based on filenames.
242 creating reusable runners based on filenames.
239
243
240 * IPython/Extensions/ipy_profile_doctest.py: New profile for
244 * IPython/Extensions/ipy_profile_doctest.py: New profile for
241 doctest support. It sets prompts/exceptions as similar to
245 doctest support. It sets prompts/exceptions as similar to
242 standard Python as possible, so that ipython sessions in this
246 standard Python as possible, so that ipython sessions in this
243 profile can be easily pasted as doctests with minimal
247 profile can be easily pasted as doctests with minimal
244 modifications. It also enables pasting of doctests from external
248 modifications. It also enables pasting of doctests from external
245 sources (even if they have leading whitespace), so that you can
249 sources (even if they have leading whitespace), so that you can
246 rerun doctests from existing sources.
250 rerun doctests from existing sources.
247
251
248 * IPython/iplib.py (_prefilter): fix a buglet where after entering
252 * IPython/iplib.py (_prefilter): fix a buglet where after entering
249 some whitespace, the prompt would become a continuation prompt
253 some whitespace, the prompt would become a continuation prompt
250 with no way of exiting it other than Ctrl-C. This fix brings us
254 with no way of exiting it other than Ctrl-C. This fix brings us
251 into conformity with how the default python prompt works.
255 into conformity with how the default python prompt works.
252
256
253 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
257 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
254 Add support for pasting not only lines that start with '>>>', but
258 Add support for pasting not only lines that start with '>>>', but
255 also with ' >>>'. That is, arbitrary whitespace can now precede
259 also with ' >>>'. That is, arbitrary whitespace can now precede
256 the prompts. This makes the system useful for pasting doctests
260 the prompts. This makes the system useful for pasting doctests
257 from docstrings back into a normal session.
261 from docstrings back into a normal session.
258
262
259 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
263 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
260
264
261 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
265 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
262 r1357, which had killed multiple invocations of an embedded
266 r1357, which had killed multiple invocations of an embedded
263 ipython (this means that example-embed has been broken for over 1
267 ipython (this means that example-embed has been broken for over 1
264 year!!!). Rather than possibly breaking the batch stuff for which
268 year!!!). Rather than possibly breaking the batch stuff for which
265 the code in iplib.py/interact was introduced, I worked around the
269 the code in iplib.py/interact was introduced, I worked around the
266 problem in the embedding class in Shell.py. We really need a
270 problem in the embedding class in Shell.py. We really need a
267 bloody test suite for this code, I'm sick of finding stuff that
271 bloody test suite for this code, I'm sick of finding stuff that
268 used to work breaking left and right every time I use an old
272 used to work breaking left and right every time I use an old
269 feature I hadn't touched in a few months.
273 feature I hadn't touched in a few months.
270 (kill_embedded): Add a new magic that only shows up in embedded
274 (kill_embedded): Add a new magic that only shows up in embedded
271 mode, to allow users to permanently deactivate an embedded instance.
275 mode, to allow users to permanently deactivate an embedded instance.
272
276
273 2007-08-01 Ville Vainio <vivainio@gmail.com>
277 2007-08-01 Ville Vainio <vivainio@gmail.com>
274
278
275 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
279 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
276 history gets out of sync on runlines (e.g. when running macros).
280 history gets out of sync on runlines (e.g. when running macros).
277
281
278 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
282 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
279
283
280 * IPython/Magic.py (magic_colors): fix win32-related error message
284 * IPython/Magic.py (magic_colors): fix win32-related error message
281 that could appear under *nix when readline was missing. Patch by
285 that could appear under *nix when readline was missing. Patch by
282 Scott Jackson, closes #175.
286 Scott Jackson, closes #175.
283
287
284 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
288 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
285
289
286 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
290 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
287 completer that it traits-aware, so that traits objects don't show
291 completer that it traits-aware, so that traits objects don't show
288 all of their internal attributes all the time.
292 all of their internal attributes all the time.
289
293
290 * IPython/genutils.py (dir2): moved this code from inside
294 * IPython/genutils.py (dir2): moved this code from inside
291 completer.py to expose it publicly, so I could use it in the
295 completer.py to expose it publicly, so I could use it in the
292 wildcards bugfix.
296 wildcards bugfix.
293
297
294 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
298 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
295 Stefan with Traits.
299 Stefan with Traits.
296
300
297 * IPython/completer.py (Completer.attr_matches): change internal
301 * IPython/completer.py (Completer.attr_matches): change internal
298 var name from 'object' to 'obj', since 'object' is now a builtin
302 var name from 'object' to 'obj', since 'object' is now a builtin
299 and this can lead to weird bugs if reusing this code elsewhere.
303 and this can lead to weird bugs if reusing this code elsewhere.
300
304
301 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
305 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
302
306
303 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
307 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
304 'foo?' and update the code to prevent printing of default
308 'foo?' and update the code to prevent printing of default
305 docstrings that started appearing after I added support for
309 docstrings that started appearing after I added support for
306 new-style classes. The approach I'm using isn't ideal (I just
310 new-style classes. The approach I'm using isn't ideal (I just
307 special-case those strings) but I'm not sure how to more robustly
311 special-case those strings) but I'm not sure how to more robustly
308 differentiate between truly user-written strings and Python's
312 differentiate between truly user-written strings and Python's
309 automatic ones.
313 automatic ones.
310
314
311 2007-07-09 Ville Vainio <vivainio@gmail.com>
315 2007-07-09 Ville Vainio <vivainio@gmail.com>
312
316
313 * completer.py: Applied Matthew Neeley's patch:
317 * completer.py: Applied Matthew Neeley's patch:
314 Dynamic attributes from trait_names and _getAttributeNames are added
318 Dynamic attributes from trait_names and _getAttributeNames are added
315 to the list of tab completions, but when this happens, the attribute
319 to the list of tab completions, but when this happens, the attribute
316 list is turned into a set, so the attributes are unordered when
320 list is turned into a set, so the attributes are unordered when
317 printed, which makes it hard to find the right completion. This patch
321 printed, which makes it hard to find the right completion. This patch
318 turns this set back into a list and sort it.
322 turns this set back into a list and sort it.
319
323
320 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
324 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
321
325
322 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
326 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
323 classes in various inspector functions.
327 classes in various inspector functions.
324
328
325 2007-06-28 Ville Vainio <vivainio@gmail.com>
329 2007-06-28 Ville Vainio <vivainio@gmail.com>
326
330
327 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
331 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
328 Implement "shadow" namespace, and callable aliases that reside there.
332 Implement "shadow" namespace, and callable aliases that reside there.
329 Use them by:
333 Use them by:
330
334
331 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
335 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
332
336
333 foo hello world
337 foo hello world
334 (gets translated to:)
338 (gets translated to:)
335 _sh.foo(r"""hello world""")
339 _sh.foo(r"""hello world""")
336
340
337 In practice, this kind of alias can take the role of a magic function
341 In practice, this kind of alias can take the role of a magic function
338
342
339 * New generic inspect_object, called on obj? and obj??
343 * New generic inspect_object, called on obj? and obj??
340
344
341 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
345 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
342
346
343 * IPython/ultraTB.py (findsource): fix a problem with
347 * IPython/ultraTB.py (findsource): fix a problem with
344 inspect.getfile that can cause crashes during traceback construction.
348 inspect.getfile that can cause crashes during traceback construction.
345
349
346 2007-06-14 Ville Vainio <vivainio@gmail.com>
350 2007-06-14 Ville Vainio <vivainio@gmail.com>
347
351
348 * iplib.py (handle_auto): Try to use ascii for printing "--->"
352 * iplib.py (handle_auto): Try to use ascii for printing "--->"
349 autocall rewrite indication, becausesometimes unicode fails to print
353 autocall rewrite indication, becausesometimes unicode fails to print
350 properly (and you get ' - - - '). Use plain uncoloured ---> for
354 properly (and you get ' - - - '). Use plain uncoloured ---> for
351 unicode.
355 unicode.
352
356
353 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
357 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
354
358
355 . pickleshare 'hash' commands (hget, hset, hcompress,
359 . pickleshare 'hash' commands (hget, hset, hcompress,
356 hdict) for efficient shadow history storage.
360 hdict) for efficient shadow history storage.
357
361
358 2007-06-13 Ville Vainio <vivainio@gmail.com>
362 2007-06-13 Ville Vainio <vivainio@gmail.com>
359
363
360 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
364 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
361 Added kw arg 'interactive', tell whether vars should be visible
365 Added kw arg 'interactive', tell whether vars should be visible
362 with %whos.
366 with %whos.
363
367
364 2007-06-11 Ville Vainio <vivainio@gmail.com>
368 2007-06-11 Ville Vainio <vivainio@gmail.com>
365
369
366 * pspersistence.py, Magic.py, iplib.py: directory history now saved
370 * pspersistence.py, Magic.py, iplib.py: directory history now saved
367 to db
371 to db
368
372
369 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
373 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
370 Also, it exits IPython immediately after evaluating the command (just like
374 Also, it exits IPython immediately after evaluating the command (just like
371 std python)
375 std python)
372
376
373 2007-06-05 Walter Doerwald <walter@livinglogic.de>
377 2007-06-05 Walter Doerwald <walter@livinglogic.de>
374
378
375 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
379 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
376 Python string and captures the output. (Idea and original patch by
380 Python string and captures the output. (Idea and original patch by
377 Stefan van der Walt)
381 Stefan van der Walt)
378
382
379 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
383 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
380
384
381 * IPython/ultraTB.py (VerboseTB.text): update printing of
385 * IPython/ultraTB.py (VerboseTB.text): update printing of
382 exception types for Python 2.5 (now all exceptions in the stdlib
386 exception types for Python 2.5 (now all exceptions in the stdlib
383 are new-style classes).
387 are new-style classes).
384
388
385 2007-05-31 Walter Doerwald <walter@livinglogic.de>
389 2007-05-31 Walter Doerwald <walter@livinglogic.de>
386
390
387 * IPython/Extensions/igrid.py: Add new commands refresh and
391 * IPython/Extensions/igrid.py: Add new commands refresh and
388 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
392 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
389 the iterator once (refresh) or after every x seconds (refresh_timer).
393 the iterator once (refresh) or after every x seconds (refresh_timer).
390 Add a working implementation of "searchexpression", where the text
394 Add a working implementation of "searchexpression", where the text
391 entered is not the text to search for, but an expression that must
395 entered is not the text to search for, but an expression that must
392 be true. Added display of shortcuts to the menu. Added commands "pickinput"
396 be true. Added display of shortcuts to the menu. Added commands "pickinput"
393 and "pickinputattr" that put the object or attribute under the cursor
397 and "pickinputattr" that put the object or attribute under the cursor
394 in the input line. Split the statusbar to be able to display the currently
398 in the input line. Split the statusbar to be able to display the currently
395 active refresh interval. (Patch by Nik Tautenhahn)
399 active refresh interval. (Patch by Nik Tautenhahn)
396
400
397 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
401 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
398
402
399 * fixing set_term_title to use ctypes as default
403 * fixing set_term_title to use ctypes as default
400
404
401 * fixing set_term_title fallback to work when curent dir
405 * fixing set_term_title fallback to work when curent dir
402 is on a windows network share
406 is on a windows network share
403
407
404 2007-05-28 Ville Vainio <vivainio@gmail.com>
408 2007-05-28 Ville Vainio <vivainio@gmail.com>
405
409
406 * %cpaste: strip + with > from left (diffs).
410 * %cpaste: strip + with > from left (diffs).
407
411
408 * iplib.py: Fix crash when readline not installed
412 * iplib.py: Fix crash when readline not installed
409
413
410 2007-05-26 Ville Vainio <vivainio@gmail.com>
414 2007-05-26 Ville Vainio <vivainio@gmail.com>
411
415
412 * generics.py: intruduce easy to extend result_display generic
416 * generics.py: intruduce easy to extend result_display generic
413 function (using simplegeneric.py).
417 function (using simplegeneric.py).
414
418
415 * Fixed the append functionality of %set.
419 * Fixed the append functionality of %set.
416
420
417 2007-05-25 Ville Vainio <vivainio@gmail.com>
421 2007-05-25 Ville Vainio <vivainio@gmail.com>
418
422
419 * New magic: %rep (fetch / run old commands from history)
423 * New magic: %rep (fetch / run old commands from history)
420
424
421 * New extension: mglob (%mglob magic), for powerful glob / find /filter
425 * New extension: mglob (%mglob magic), for powerful glob / find /filter
422 like functionality
426 like functionality
423
427
424 % maghistory.py: %hist -g PATTERM greps the history for pattern
428 % maghistory.py: %hist -g PATTERM greps the history for pattern
425
429
426 2007-05-24 Walter Doerwald <walter@livinglogic.de>
430 2007-05-24 Walter Doerwald <walter@livinglogic.de>
427
431
428 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
432 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
429 browse the IPython input history
433 browse the IPython input history
430
434
431 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
435 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
432 (mapped to "i") can be used to put the object under the curser in the input
436 (mapped to "i") can be used to put the object under the curser in the input
433 line. pickinputattr (mapped to "I") does the same for the attribute under
437 line. pickinputattr (mapped to "I") does the same for the attribute under
434 the cursor.
438 the cursor.
435
439
436 2007-05-24 Ville Vainio <vivainio@gmail.com>
440 2007-05-24 Ville Vainio <vivainio@gmail.com>
437
441
438 * Grand magic cleansing (changeset [2380]):
442 * Grand magic cleansing (changeset [2380]):
439
443
440 * Introduce ipy_legacy.py where the following magics were
444 * Introduce ipy_legacy.py where the following magics were
441 moved:
445 moved:
442
446
443 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
447 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
444
448
445 If you need them, either use default profile or "import ipy_legacy"
449 If you need them, either use default profile or "import ipy_legacy"
446 in your ipy_user_conf.py
450 in your ipy_user_conf.py
447
451
448 * Move sh and scipy profile to Extensions from UserConfig. this implies
452 * Move sh and scipy profile to Extensions from UserConfig. this implies
449 you should not edit them, but you don't need to run %upgrade when
453 you should not edit them, but you don't need to run %upgrade when
450 upgrading IPython anymore.
454 upgrading IPython anymore.
451
455
452 * %hist/%history now operates in "raw" mode by default. To get the old
456 * %hist/%history now operates in "raw" mode by default. To get the old
453 behaviour, run '%hist -n' (native mode).
457 behaviour, run '%hist -n' (native mode).
454
458
455 * split ipy_stock_completers.py to ipy_stock_completers.py and
459 * split ipy_stock_completers.py to ipy_stock_completers.py and
456 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
460 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
457 installed as default.
461 installed as default.
458
462
459 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
463 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
460 handling.
464 handling.
461
465
462 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
466 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
463 input if readline is available.
467 input if readline is available.
464
468
465 2007-05-23 Ville Vainio <vivainio@gmail.com>
469 2007-05-23 Ville Vainio <vivainio@gmail.com>
466
470
467 * macro.py: %store uses __getstate__ properly
471 * macro.py: %store uses __getstate__ properly
468
472
469 * exesetup.py: added new setup script for creating
473 * exesetup.py: added new setup script for creating
470 standalone IPython executables with py2exe (i.e.
474 standalone IPython executables with py2exe (i.e.
471 no python installation required).
475 no python installation required).
472
476
473 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
477 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
474 its place.
478 its place.
475
479
476 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
480 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
477
481
478 2007-05-21 Ville Vainio <vivainio@gmail.com>
482 2007-05-21 Ville Vainio <vivainio@gmail.com>
479
483
480 * platutil_win32.py (set_term_title): handle
484 * platutil_win32.py (set_term_title): handle
481 failure of 'title' system call properly.
485 failure of 'title' system call properly.
482
486
483 2007-05-17 Walter Doerwald <walter@livinglogic.de>
487 2007-05-17 Walter Doerwald <walter@livinglogic.de>
484
488
485 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
489 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
486 (Bug detected by Paul Mueller).
490 (Bug detected by Paul Mueller).
487
491
488 2007-05-16 Ville Vainio <vivainio@gmail.com>
492 2007-05-16 Ville Vainio <vivainio@gmail.com>
489
493
490 * ipy_profile_sci.py, ipython_win_post_install.py: Create
494 * ipy_profile_sci.py, ipython_win_post_install.py: Create
491 new "sci" profile, effectively a modern version of the old
495 new "sci" profile, effectively a modern version of the old
492 "scipy" profile (which is now slated for deprecation).
496 "scipy" profile (which is now slated for deprecation).
493
497
494 2007-05-15 Ville Vainio <vivainio@gmail.com>
498 2007-05-15 Ville Vainio <vivainio@gmail.com>
495
499
496 * pycolorize.py, pycolor.1: Paul Mueller's patches that
500 * pycolorize.py, pycolor.1: Paul Mueller's patches that
497 make pycolorize read input from stdin when run without arguments.
501 make pycolorize read input from stdin when run without arguments.
498
502
499 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
503 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
500
504
501 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
505 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
502 it in sh profile (instead of ipy_system_conf.py).
506 it in sh profile (instead of ipy_system_conf.py).
503
507
504 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
508 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
505 aliases are now lower case on windows (MyCommand.exe => mycommand).
509 aliases are now lower case on windows (MyCommand.exe => mycommand).
506
510
507 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
511 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
508 Macros are now callable objects that inherit from ipapi.IPyAutocall,
512 Macros are now callable objects that inherit from ipapi.IPyAutocall,
509 i.e. get autocalled regardless of system autocall setting.
513 i.e. get autocalled regardless of system autocall setting.
510
514
511 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
515 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
512
516
513 * IPython/rlineimpl.py: check for clear_history in readline and
517 * IPython/rlineimpl.py: check for clear_history in readline and
514 make it a dummy no-op if not available. This function isn't
518 make it a dummy no-op if not available. This function isn't
515 guaranteed to be in the API and appeared in Python 2.4, so we need
519 guaranteed to be in the API and appeared in Python 2.4, so we need
516 to check it ourselves. Also, clean up this file quite a bit.
520 to check it ourselves. Also, clean up this file quite a bit.
517
521
518 * ipython.1: update man page and full manual with information
522 * ipython.1: update man page and full manual with information
519 about threads (remove outdated warning). Closes #151.
523 about threads (remove outdated warning). Closes #151.
520
524
521 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
525 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
522
526
523 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
527 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
524 in trunk (note that this made it into the 0.8.1 release already,
528 in trunk (note that this made it into the 0.8.1 release already,
525 but the changelogs didn't get coordinated). Many thanks to Gael
529 but the changelogs didn't get coordinated). Many thanks to Gael
526 Varoquaux <gael.varoquaux-AT-normalesup.org>
530 Varoquaux <gael.varoquaux-AT-normalesup.org>
527
531
528 2007-05-09 *** Released version 0.8.1
532 2007-05-09 *** Released version 0.8.1
529
533
530 2007-05-10 Walter Doerwald <walter@livinglogic.de>
534 2007-05-10 Walter Doerwald <walter@livinglogic.de>
531
535
532 * IPython/Extensions/igrid.py: Incorporate html help into
536 * IPython/Extensions/igrid.py: Incorporate html help into
533 the module, so we don't have to search for the file.
537 the module, so we don't have to search for the file.
534
538
535 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
539 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
536
540
537 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
541 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
538
542
539 2007-04-30 Ville Vainio <vivainio@gmail.com>
543 2007-04-30 Ville Vainio <vivainio@gmail.com>
540
544
541 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
545 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
542 user has illegal (non-ascii) home directory name
546 user has illegal (non-ascii) home directory name
543
547
544 2007-04-27 Ville Vainio <vivainio@gmail.com>
548 2007-04-27 Ville Vainio <vivainio@gmail.com>
545
549
546 * platutils_win32.py: implement set_term_title for windows
550 * platutils_win32.py: implement set_term_title for windows
547
551
548 * Update version number
552 * Update version number
549
553
550 * ipy_profile_sh.py: more informative prompt (2 dir levels)
554 * ipy_profile_sh.py: more informative prompt (2 dir levels)
551
555
552 2007-04-26 Walter Doerwald <walter@livinglogic.de>
556 2007-04-26 Walter Doerwald <walter@livinglogic.de>
553
557
554 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
558 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
555 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
559 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
556 bug discovered by Ville).
560 bug discovered by Ville).
557
561
558 2007-04-26 Ville Vainio <vivainio@gmail.com>
562 2007-04-26 Ville Vainio <vivainio@gmail.com>
559
563
560 * Extensions/ipy_completers.py: Olivier's module completer now
564 * Extensions/ipy_completers.py: Olivier's module completer now
561 saves the list of root modules if it takes > 4 secs on the first run.
565 saves the list of root modules if it takes > 4 secs on the first run.
562
566
563 * Magic.py (%rehashx): %rehashx now clears the completer cache
567 * Magic.py (%rehashx): %rehashx now clears the completer cache
564
568
565
569
566 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
570 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
567
571
568 * ipython.el: fix incorrect color scheme, reported by Stefan.
572 * ipython.el: fix incorrect color scheme, reported by Stefan.
569 Closes #149.
573 Closes #149.
570
574
571 * IPython/PyColorize.py (Parser.format2): fix state-handling
575 * IPython/PyColorize.py (Parser.format2): fix state-handling
572 logic. I still don't like how that code handles state, but at
576 logic. I still don't like how that code handles state, but at
573 least now it should be correct, if inelegant. Closes #146.
577 least now it should be correct, if inelegant. Closes #146.
574
578
575 2007-04-25 Ville Vainio <vivainio@gmail.com>
579 2007-04-25 Ville Vainio <vivainio@gmail.com>
576
580
577 * Extensions/ipy_which.py: added extension for %which magic, works
581 * Extensions/ipy_which.py: added extension for %which magic, works
578 a lot like unix 'which' but also finds and expands aliases, and
582 a lot like unix 'which' but also finds and expands aliases, and
579 allows wildcards.
583 allows wildcards.
580
584
581 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
585 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
582 as opposed to returning nothing.
586 as opposed to returning nothing.
583
587
584 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
588 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
585 ipy_stock_completers on default profile, do import on sh profile.
589 ipy_stock_completers on default profile, do import on sh profile.
586
590
587 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
591 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
588
592
589 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
593 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
590 like ipython.py foo.py which raised a IndexError.
594 like ipython.py foo.py which raised a IndexError.
591
595
592 2007-04-21 Ville Vainio <vivainio@gmail.com>
596 2007-04-21 Ville Vainio <vivainio@gmail.com>
593
597
594 * Extensions/ipy_extutil.py: added extension to manage other ipython
598 * Extensions/ipy_extutil.py: added extension to manage other ipython
595 extensions. Now only supports 'ls' == list extensions.
599 extensions. Now only supports 'ls' == list extensions.
596
600
597 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
601 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
598
602
599 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
603 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
600 would prevent use of the exception system outside of a running
604 would prevent use of the exception system outside of a running
601 IPython instance.
605 IPython instance.
602
606
603 2007-04-20 Ville Vainio <vivainio@gmail.com>
607 2007-04-20 Ville Vainio <vivainio@gmail.com>
604
608
605 * Extensions/ipy_render.py: added extension for easy
609 * Extensions/ipy_render.py: added extension for easy
606 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
610 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
607 'Iptl' template notation,
611 'Iptl' template notation,
608
612
609 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
613 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
610 safer & faster 'import' completer.
614 safer & faster 'import' completer.
611
615
612 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
616 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
613 and _ip.defalias(name, command).
617 and _ip.defalias(name, command).
614
618
615 * Extensions/ipy_exportdb.py: New extension for exporting all the
619 * Extensions/ipy_exportdb.py: New extension for exporting all the
616 %store'd data in a portable format (normal ipapi calls like
620 %store'd data in a portable format (normal ipapi calls like
617 defmacro() etc.)
621 defmacro() etc.)
618
622
619 2007-04-19 Ville Vainio <vivainio@gmail.com>
623 2007-04-19 Ville Vainio <vivainio@gmail.com>
620
624
621 * upgrade_dir.py: skip junk files like *.pyc
625 * upgrade_dir.py: skip junk files like *.pyc
622
626
623 * Release.py: version number to 0.8.1
627 * Release.py: version number to 0.8.1
624
628
625 2007-04-18 Ville Vainio <vivainio@gmail.com>
629 2007-04-18 Ville Vainio <vivainio@gmail.com>
626
630
627 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
631 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
628 and later on win32.
632 and later on win32.
629
633
630 2007-04-16 Ville Vainio <vivainio@gmail.com>
634 2007-04-16 Ville Vainio <vivainio@gmail.com>
631
635
632 * iplib.py (showtraceback): Do not crash when running w/o readline.
636 * iplib.py (showtraceback): Do not crash when running w/o readline.
633
637
634 2007-04-12 Walter Doerwald <walter@livinglogic.de>
638 2007-04-12 Walter Doerwald <walter@livinglogic.de>
635
639
636 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
640 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
637 sorted (case sensitive with files and dirs mixed).
641 sorted (case sensitive with files and dirs mixed).
638
642
639 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
643 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
640
644
641 * IPython/Release.py (version): Open trunk for 0.8.1 development.
645 * IPython/Release.py (version): Open trunk for 0.8.1 development.
642
646
643 2007-04-10 *** Released version 0.8.0
647 2007-04-10 *** Released version 0.8.0
644
648
645 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
649 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
646
650
647 * Tag 0.8.0 for release.
651 * Tag 0.8.0 for release.
648
652
649 * IPython/iplib.py (reloadhist): add API function to cleanly
653 * IPython/iplib.py (reloadhist): add API function to cleanly
650 reload the readline history, which was growing inappropriately on
654 reload the readline history, which was growing inappropriately on
651 every %run call.
655 every %run call.
652
656
653 * win32_manual_post_install.py (run): apply last part of Nicolas
657 * win32_manual_post_install.py (run): apply last part of Nicolas
654 Pernetty's patch (I'd accidentally applied it in a different
658 Pernetty's patch (I'd accidentally applied it in a different
655 directory and this particular file didn't get patched).
659 directory and this particular file didn't get patched).
656
660
657 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
661 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
658
662
659 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
663 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
660 find the main thread id and use the proper API call. Thanks to
664 find the main thread id and use the proper API call. Thanks to
661 Stefan for the fix.
665 Stefan for the fix.
662
666
663 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
667 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
664 unit tests to reflect fixed ticket #52, and add more tests sent by
668 unit tests to reflect fixed ticket #52, and add more tests sent by
665 him.
669 him.
666
670
667 * IPython/iplib.py (raw_input): restore the readline completer
671 * IPython/iplib.py (raw_input): restore the readline completer
668 state on every input, in case third-party code messed it up.
672 state on every input, in case third-party code messed it up.
669 (_prefilter): revert recent addition of early-escape checks which
673 (_prefilter): revert recent addition of early-escape checks which
670 prevent many valid alias calls from working.
674 prevent many valid alias calls from working.
671
675
672 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
676 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
673 flag for sigint handler so we don't run a full signal() call on
677 flag for sigint handler so we don't run a full signal() call on
674 each runcode access.
678 each runcode access.
675
679
676 * IPython/Magic.py (magic_whos): small improvement to diagnostic
680 * IPython/Magic.py (magic_whos): small improvement to diagnostic
677 message.
681 message.
678
682
679 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
683 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
680
684
681 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
685 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
682 asynchronous exceptions working, i.e., Ctrl-C can actually
686 asynchronous exceptions working, i.e., Ctrl-C can actually
683 interrupt long-running code in the multithreaded shells.
687 interrupt long-running code in the multithreaded shells.
684
688
685 This is using Tomer Filiba's great ctypes-based trick:
689 This is using Tomer Filiba's great ctypes-based trick:
686 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
690 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
687 this in the past, but hadn't been able to make it work before. So
691 this in the past, but hadn't been able to make it work before. So
688 far it looks like it's actually running, but this needs more
692 far it looks like it's actually running, but this needs more
689 testing. If it really works, I'll be *very* happy, and we'll owe
693 testing. If it really works, I'll be *very* happy, and we'll owe
690 a huge thank you to Tomer. My current implementation is ugly,
694 a huge thank you to Tomer. My current implementation is ugly,
691 hackish and uses nasty globals, but I don't want to try and clean
695 hackish and uses nasty globals, but I don't want to try and clean
692 anything up until we know if it actually works.
696 anything up until we know if it actually works.
693
697
694 NOTE: this feature needs ctypes to work. ctypes is included in
698 NOTE: this feature needs ctypes to work. ctypes is included in
695 Python2.5, but 2.4 users will need to manually install it. This
699 Python2.5, but 2.4 users will need to manually install it. This
696 feature makes multi-threaded shells so much more usable that it's
700 feature makes multi-threaded shells so much more usable that it's
697 a minor price to pay (ctypes is very easy to install, already a
701 a minor price to pay (ctypes is very easy to install, already a
698 requirement for win32 and available in major linux distros).
702 requirement for win32 and available in major linux distros).
699
703
700 2007-04-04 Ville Vainio <vivainio@gmail.com>
704 2007-04-04 Ville Vainio <vivainio@gmail.com>
701
705
702 * Extensions/ipy_completers.py, ipy_stock_completers.py:
706 * Extensions/ipy_completers.py, ipy_stock_completers.py:
703 Moved implementations of 'bundled' completers to ipy_completers.py,
707 Moved implementations of 'bundled' completers to ipy_completers.py,
704 they are only enabled in ipy_stock_completers.py.
708 they are only enabled in ipy_stock_completers.py.
705
709
706 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
710 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
707
711
708 * IPython/PyColorize.py (Parser.format2): Fix identation of
712 * IPython/PyColorize.py (Parser.format2): Fix identation of
709 colorzied output and return early if color scheme is NoColor, to
713 colorzied output and return early if color scheme is NoColor, to
710 avoid unnecessary and expensive tokenization. Closes #131.
714 avoid unnecessary and expensive tokenization. Closes #131.
711
715
712 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
716 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
713
717
714 * IPython/Debugger.py: disable the use of pydb version 1.17. It
718 * IPython/Debugger.py: disable the use of pydb version 1.17. It
715 has a critical bug (a missing import that makes post-mortem not
719 has a critical bug (a missing import that makes post-mortem not
716 work at all). Unfortunately as of this time, this is the version
720 work at all). Unfortunately as of this time, this is the version
717 shipped with Ubuntu Edgy, so quite a few people have this one. I
721 shipped with Ubuntu Edgy, so quite a few people have this one. I
718 hope Edgy will update to a more recent package.
722 hope Edgy will update to a more recent package.
719
723
720 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
724 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
721
725
722 * IPython/iplib.py (_prefilter): close #52, second part of a patch
726 * IPython/iplib.py (_prefilter): close #52, second part of a patch
723 set by Stefan (only the first part had been applied before).
727 set by Stefan (only the first part had been applied before).
724
728
725 * IPython/Extensions/ipy_stock_completers.py (module_completer):
729 * IPython/Extensions/ipy_stock_completers.py (module_completer):
726 remove usage of the dangerous pkgutil.walk_packages(). See
730 remove usage of the dangerous pkgutil.walk_packages(). See
727 details in comments left in the code.
731 details in comments left in the code.
728
732
729 * IPython/Magic.py (magic_whos): add support for numpy arrays
733 * IPython/Magic.py (magic_whos): add support for numpy arrays
730 similar to what we had for Numeric.
734 similar to what we had for Numeric.
731
735
732 * IPython/completer.py (IPCompleter.complete): extend the
736 * IPython/completer.py (IPCompleter.complete): extend the
733 complete() call API to support completions by other mechanisms
737 complete() call API to support completions by other mechanisms
734 than readline. Closes #109.
738 than readline. Closes #109.
735
739
736 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
740 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
737 protect against a bug in Python's execfile(). Closes #123.
741 protect against a bug in Python's execfile(). Closes #123.
738
742
739 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
743 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
740
744
741 * IPython/iplib.py (split_user_input): ensure that when splitting
745 * IPython/iplib.py (split_user_input): ensure that when splitting
742 user input, the part that can be treated as a python name is pure
746 user input, the part that can be treated as a python name is pure
743 ascii (Python identifiers MUST be pure ascii). Part of the
747 ascii (Python identifiers MUST be pure ascii). Part of the
744 ongoing Unicode support work.
748 ongoing Unicode support work.
745
749
746 * IPython/Prompts.py (prompt_specials_color): Add \N for the
750 * IPython/Prompts.py (prompt_specials_color): Add \N for the
747 actual prompt number, without any coloring. This allows users to
751 actual prompt number, without any coloring. This allows users to
748 produce numbered prompts with their own colors. Added after a
752 produce numbered prompts with their own colors. Added after a
749 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
753 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
750
754
751 2007-03-31 Walter Doerwald <walter@livinglogic.de>
755 2007-03-31 Walter Doerwald <walter@livinglogic.de>
752
756
753 * IPython/Extensions/igrid.py: Map the return key
757 * IPython/Extensions/igrid.py: Map the return key
754 to enter() and shift-return to enterattr().
758 to enter() and shift-return to enterattr().
755
759
756 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
760 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
757
761
758 * IPython/Magic.py (magic_psearch): add unicode support by
762 * IPython/Magic.py (magic_psearch): add unicode support by
759 encoding to ascii the input, since this routine also only deals
763 encoding to ascii the input, since this routine also only deals
760 with valid Python names. Fixes a bug reported by Stefan.
764 with valid Python names. Fixes a bug reported by Stefan.
761
765
762 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
766 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
763
767
764 * IPython/Magic.py (_inspect): convert unicode input into ascii
768 * IPython/Magic.py (_inspect): convert unicode input into ascii
765 before trying to evaluate it as a Python identifier. This fixes a
769 before trying to evaluate it as a Python identifier. This fixes a
766 problem that the new unicode support had introduced when analyzing
770 problem that the new unicode support had introduced when analyzing
767 long definition lines for functions.
771 long definition lines for functions.
768
772
769 2007-03-24 Walter Doerwald <walter@livinglogic.de>
773 2007-03-24 Walter Doerwald <walter@livinglogic.de>
770
774
771 * IPython/Extensions/igrid.py: Fix picking. Using
775 * IPython/Extensions/igrid.py: Fix picking. Using
772 igrid with wxPython 2.6 and -wthread should work now.
776 igrid with wxPython 2.6 and -wthread should work now.
773 igrid.display() simply tries to create a frame without
777 igrid.display() simply tries to create a frame without
774 an application. Only if this fails an application is created.
778 an application. Only if this fails an application is created.
775
779
776 2007-03-23 Walter Doerwald <walter@livinglogic.de>
780 2007-03-23 Walter Doerwald <walter@livinglogic.de>
777
781
778 * IPython/Extensions/path.py: Updated to version 2.2.
782 * IPython/Extensions/path.py: Updated to version 2.2.
779
783
780 2007-03-23 Ville Vainio <vivainio@gmail.com>
784 2007-03-23 Ville Vainio <vivainio@gmail.com>
781
785
782 * iplib.py: recursive alias expansion now works better, so that
786 * iplib.py: recursive alias expansion now works better, so that
783 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
787 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
784 doesn't trip up the process, if 'd' has been aliased to 'ls'.
788 doesn't trip up the process, if 'd' has been aliased to 'ls'.
785
789
786 * Extensions/ipy_gnuglobal.py added, provides %global magic
790 * Extensions/ipy_gnuglobal.py added, provides %global magic
787 for users of http://www.gnu.org/software/global
791 for users of http://www.gnu.org/software/global
788
792
789 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
793 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
790 Closes #52. Patch by Stefan van der Walt.
794 Closes #52. Patch by Stefan van der Walt.
791
795
792 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
796 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
793
797
794 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
798 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
795 respect the __file__ attribute when using %run. Thanks to a bug
799 respect the __file__ attribute when using %run. Thanks to a bug
796 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
800 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
797
801
798 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
802 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
799
803
800 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
804 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
801 input. Patch sent by Stefan.
805 input. Patch sent by Stefan.
802
806
803 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
807 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
804 * IPython/Extensions/ipy_stock_completer.py
808 * IPython/Extensions/ipy_stock_completer.py
805 shlex_split, fix bug in shlex_split. len function
809 shlex_split, fix bug in shlex_split. len function
806 call was missing an if statement. Caused shlex_split to
810 call was missing an if statement. Caused shlex_split to
807 sometimes return "" as last element.
811 sometimes return "" as last element.
808
812
809 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
813 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
810
814
811 * IPython/completer.py
815 * IPython/completer.py
812 (IPCompleter.file_matches.single_dir_expand): fix a problem
816 (IPCompleter.file_matches.single_dir_expand): fix a problem
813 reported by Stefan, where directories containign a single subdir
817 reported by Stefan, where directories containign a single subdir
814 would be completed too early.
818 would be completed too early.
815
819
816 * IPython/Shell.py (_load_pylab): Make the execution of 'from
820 * IPython/Shell.py (_load_pylab): Make the execution of 'from
817 pylab import *' when -pylab is given be optional. A new flag,
821 pylab import *' when -pylab is given be optional. A new flag,
818 pylab_import_all controls this behavior, the default is True for
822 pylab_import_all controls this behavior, the default is True for
819 backwards compatibility.
823 backwards compatibility.
820
824
821 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
825 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
822 modified) R. Bernstein's patch for fully syntax highlighted
826 modified) R. Bernstein's patch for fully syntax highlighted
823 tracebacks. The functionality is also available under ultraTB for
827 tracebacks. The functionality is also available under ultraTB for
824 non-ipython users (someone using ultraTB but outside an ipython
828 non-ipython users (someone using ultraTB but outside an ipython
825 session). They can select the color scheme by setting the
829 session). They can select the color scheme by setting the
826 module-level global DEFAULT_SCHEME. The highlight functionality
830 module-level global DEFAULT_SCHEME. The highlight functionality
827 also works when debugging.
831 also works when debugging.
828
832
829 * IPython/genutils.py (IOStream.close): small patch by
833 * IPython/genutils.py (IOStream.close): small patch by
830 R. Bernstein for improved pydb support.
834 R. Bernstein for improved pydb support.
831
835
832 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
836 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
833 DaveS <davls@telus.net> to improve support of debugging under
837 DaveS <davls@telus.net> to improve support of debugging under
834 NTEmacs, including improved pydb behavior.
838 NTEmacs, including improved pydb behavior.
835
839
836 * IPython/Magic.py (magic_prun): Fix saving of profile info for
840 * IPython/Magic.py (magic_prun): Fix saving of profile info for
837 Python 2.5, where the stats object API changed a little. Thanks
841 Python 2.5, where the stats object API changed a little. Thanks
838 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
842 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
839
843
840 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
844 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
841 Pernetty's patch to improve support for (X)Emacs under Win32.
845 Pernetty's patch to improve support for (X)Emacs under Win32.
842
846
843 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
847 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
844
848
845 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
849 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
846 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
850 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
847 a report by Nik Tautenhahn.
851 a report by Nik Tautenhahn.
848
852
849 2007-03-16 Walter Doerwald <walter@livinglogic.de>
853 2007-03-16 Walter Doerwald <walter@livinglogic.de>
850
854
851 * setup.py: Add the igrid help files to the list of data files
855 * setup.py: Add the igrid help files to the list of data files
852 to be installed alongside igrid.
856 to be installed alongside igrid.
853 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
857 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
854 Show the input object of the igrid browser as the window tile.
858 Show the input object of the igrid browser as the window tile.
855 Show the object the cursor is on in the statusbar.
859 Show the object the cursor is on in the statusbar.
856
860
857 2007-03-15 Ville Vainio <vivainio@gmail.com>
861 2007-03-15 Ville Vainio <vivainio@gmail.com>
858
862
859 * Extensions/ipy_stock_completers.py: Fixed exception
863 * Extensions/ipy_stock_completers.py: Fixed exception
860 on mismatching quotes in %run completer. Patch by
864 on mismatching quotes in %run completer. Patch by
861 Jorgen Stenarson. Closes #127.
865 Jorgen Stenarson. Closes #127.
862
866
863 2007-03-14 Ville Vainio <vivainio@gmail.com>
867 2007-03-14 Ville Vainio <vivainio@gmail.com>
864
868
865 * Extensions/ext_rehashdir.py: Do not do auto_alias
869 * Extensions/ext_rehashdir.py: Do not do auto_alias
866 in %rehashdir, it clobbers %store'd aliases.
870 in %rehashdir, it clobbers %store'd aliases.
867
871
868 * UserConfig/ipy_profile_sh.py: envpersist.py extension
872 * UserConfig/ipy_profile_sh.py: envpersist.py extension
869 (beefed up %env) imported for sh profile.
873 (beefed up %env) imported for sh profile.
870
874
871 2007-03-10 Walter Doerwald <walter@livinglogic.de>
875 2007-03-10 Walter Doerwald <walter@livinglogic.de>
872
876
873 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
877 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
874 as the default browser.
878 as the default browser.
875 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
879 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
876 As igrid displays all attributes it ever encounters, fetch() (which has
880 As igrid displays all attributes it ever encounters, fetch() (which has
877 been renamed to _fetch()) doesn't have to recalculate the display attributes
881 been renamed to _fetch()) doesn't have to recalculate the display attributes
878 every time a new item is fetched. This should speed up scrolling.
882 every time a new item is fetched. This should speed up scrolling.
879
883
880 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
884 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
881
885
882 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
886 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
883 Schmolck's recently reported tab-completion bug (my previous one
887 Schmolck's recently reported tab-completion bug (my previous one
884 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
888 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
885
889
886 2007-03-09 Walter Doerwald <walter@livinglogic.de>
890 2007-03-09 Walter Doerwald <walter@livinglogic.de>
887
891
888 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
892 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
889 Close help window if exiting igrid.
893 Close help window if exiting igrid.
890
894
891 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
895 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
892
896
893 * IPython/Extensions/ipy_defaults.py: Check if readline is available
897 * IPython/Extensions/ipy_defaults.py: Check if readline is available
894 before calling functions from readline.
898 before calling functions from readline.
895
899
896 2007-03-02 Walter Doerwald <walter@livinglogic.de>
900 2007-03-02 Walter Doerwald <walter@livinglogic.de>
897
901
898 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
902 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
899 igrid is a wxPython-based display object for ipipe. If your system has
903 igrid is a wxPython-based display object for ipipe. If your system has
900 wx installed igrid will be the default display. Without wx ipipe falls
904 wx installed igrid will be the default display. Without wx ipipe falls
901 back to ibrowse (which needs curses). If no curses is installed ipipe
905 back to ibrowse (which needs curses). If no curses is installed ipipe
902 falls back to idump.
906 falls back to idump.
903
907
904 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
908 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
905
909
906 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
910 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
907 my changes from yesterday, they introduced bugs. Will reactivate
911 my changes from yesterday, they introduced bugs. Will reactivate
908 once I get a correct solution, which will be much easier thanks to
912 once I get a correct solution, which will be much easier thanks to
909 Dan Milstein's new prefilter test suite.
913 Dan Milstein's new prefilter test suite.
910
914
911 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
915 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
912
916
913 * IPython/iplib.py (split_user_input): fix input splitting so we
917 * IPython/iplib.py (split_user_input): fix input splitting so we
914 don't attempt attribute accesses on things that can't possibly be
918 don't attempt attribute accesses on things that can't possibly be
915 valid Python attributes. After a bug report by Alex Schmolck.
919 valid Python attributes. After a bug report by Alex Schmolck.
916 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
920 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
917 %magic with explicit % prefix.
921 %magic with explicit % prefix.
918
922
919 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
923 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
920
924
921 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
925 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
922 avoid a DeprecationWarning from GTK.
926 avoid a DeprecationWarning from GTK.
923
927
924 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
928 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
925
929
926 * IPython/genutils.py (clock): I modified clock() to return total
930 * IPython/genutils.py (clock): I modified clock() to return total
927 time, user+system. This is a more commonly needed metric. I also
931 time, user+system. This is a more commonly needed metric. I also
928 introduced the new clocku/clocks to get only user/system time if
932 introduced the new clocku/clocks to get only user/system time if
929 one wants those instead.
933 one wants those instead.
930
934
931 ***WARNING: API CHANGE*** clock() used to return only user time,
935 ***WARNING: API CHANGE*** clock() used to return only user time,
932 so if you want exactly the same results as before, use clocku
936 so if you want exactly the same results as before, use clocku
933 instead.
937 instead.
934
938
935 2007-02-22 Ville Vainio <vivainio@gmail.com>
939 2007-02-22 Ville Vainio <vivainio@gmail.com>
936
940
937 * IPython/Extensions/ipy_p4.py: Extension for improved
941 * IPython/Extensions/ipy_p4.py: Extension for improved
938 p4 (perforce version control system) experience.
942 p4 (perforce version control system) experience.
939 Adds %p4 magic with p4 command completion and
943 Adds %p4 magic with p4 command completion and
940 automatic -G argument (marshall output as python dict)
944 automatic -G argument (marshall output as python dict)
941
945
942 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
946 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
943
947
944 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
948 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
945 stop marks.
949 stop marks.
946 (ClearingMixin): a simple mixin to easily make a Demo class clear
950 (ClearingMixin): a simple mixin to easily make a Demo class clear
947 the screen in between blocks and have empty marquees. The
951 the screen in between blocks and have empty marquees. The
948 ClearDemo and ClearIPDemo classes that use it are included.
952 ClearDemo and ClearIPDemo classes that use it are included.
949
953
950 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
954 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
951
955
952 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
956 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
953 protect against exceptions at Python shutdown time. Patch
957 protect against exceptions at Python shutdown time. Patch
954 sumbmitted to upstream.
958 sumbmitted to upstream.
955
959
956 2007-02-14 Walter Doerwald <walter@livinglogic.de>
960 2007-02-14 Walter Doerwald <walter@livinglogic.de>
957
961
958 * IPython/Extensions/ibrowse.py: If entering the first object level
962 * IPython/Extensions/ibrowse.py: If entering the first object level
959 (i.e. the object for which the browser has been started) fails,
963 (i.e. the object for which the browser has been started) fails,
960 now the error is raised directly (aborting the browser) instead of
964 now the error is raised directly (aborting the browser) instead of
961 running into an empty levels list later.
965 running into an empty levels list later.
962
966
963 2007-02-03 Walter Doerwald <walter@livinglogic.de>
967 2007-02-03 Walter Doerwald <walter@livinglogic.de>
964
968
965 * IPython/Extensions/ipipe.py: Add an xrepr implementation
969 * IPython/Extensions/ipipe.py: Add an xrepr implementation
966 for the noitem object.
970 for the noitem object.
967
971
968 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
972 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
969
973
970 * IPython/completer.py (Completer.attr_matches): Fix small
974 * IPython/completer.py (Completer.attr_matches): Fix small
971 tab-completion bug with Enthought Traits objects with units.
975 tab-completion bug with Enthought Traits objects with units.
972 Thanks to a bug report by Tom Denniston
976 Thanks to a bug report by Tom Denniston
973 <tom.denniston-AT-alum.dartmouth.org>.
977 <tom.denniston-AT-alum.dartmouth.org>.
974
978
975 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
979 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
976
980
977 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
981 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
978 bug where only .ipy or .py would be completed. Once the first
982 bug where only .ipy or .py would be completed. Once the first
979 argument to %run has been given, all completions are valid because
983 argument to %run has been given, all completions are valid because
980 they are the arguments to the script, which may well be non-python
984 they are the arguments to the script, which may well be non-python
981 filenames.
985 filenames.
982
986
983 * IPython/irunner.py (InteractiveRunner.run_source): major updates
987 * IPython/irunner.py (InteractiveRunner.run_source): major updates
984 to irunner to allow it to correctly support real doctesting of
988 to irunner to allow it to correctly support real doctesting of
985 out-of-process ipython code.
989 out-of-process ipython code.
986
990
987 * IPython/Magic.py (magic_cd): Make the setting of the terminal
991 * IPython/Magic.py (magic_cd): Make the setting of the terminal
988 title an option (-noterm_title) because it completely breaks
992 title an option (-noterm_title) because it completely breaks
989 doctesting.
993 doctesting.
990
994
991 * IPython/demo.py: fix IPythonDemo class that was not actually working.
995 * IPython/demo.py: fix IPythonDemo class that was not actually working.
992
996
993 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
997 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
994
998
995 * IPython/irunner.py (main): fix small bug where extensions were
999 * IPython/irunner.py (main): fix small bug where extensions were
996 not being correctly recognized.
1000 not being correctly recognized.
997
1001
998 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1002 2007-01-23 Walter Doerwald <walter@livinglogic.de>
999
1003
1000 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1004 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1001 a string containing a single line yields the string itself as the
1005 a string containing a single line yields the string itself as the
1002 only item.
1006 only item.
1003
1007
1004 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1008 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1005 object if it's the same as the one on the last level (This avoids
1009 object if it's the same as the one on the last level (This avoids
1006 infinite recursion for one line strings).
1010 infinite recursion for one line strings).
1007
1011
1008 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1012 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1009
1013
1010 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1014 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1011 all output streams before printing tracebacks. This ensures that
1015 all output streams before printing tracebacks. This ensures that
1012 user output doesn't end up interleaved with traceback output.
1016 user output doesn't end up interleaved with traceback output.
1013
1017
1014 2007-01-10 Ville Vainio <vivainio@gmail.com>
1018 2007-01-10 Ville Vainio <vivainio@gmail.com>
1015
1019
1016 * Extensions/envpersist.py: Turbocharged %env that remembers
1020 * Extensions/envpersist.py: Turbocharged %env that remembers
1017 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1021 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1018 "%env VISUAL=jed".
1022 "%env VISUAL=jed".
1019
1023
1020 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1024 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1021
1025
1022 * IPython/iplib.py (showtraceback): ensure that we correctly call
1026 * IPython/iplib.py (showtraceback): ensure that we correctly call
1023 custom handlers in all cases (some with pdb were slipping through,
1027 custom handlers in all cases (some with pdb were slipping through,
1024 but I'm not exactly sure why).
1028 but I'm not exactly sure why).
1025
1029
1026 * IPython/Debugger.py (Tracer.__init__): added new class to
1030 * IPython/Debugger.py (Tracer.__init__): added new class to
1027 support set_trace-like usage of IPython's enhanced debugger.
1031 support set_trace-like usage of IPython's enhanced debugger.
1028
1032
1029 2006-12-24 Ville Vainio <vivainio@gmail.com>
1033 2006-12-24 Ville Vainio <vivainio@gmail.com>
1030
1034
1031 * ipmaker.py: more informative message when ipy_user_conf
1035 * ipmaker.py: more informative message when ipy_user_conf
1032 import fails (suggest running %upgrade).
1036 import fails (suggest running %upgrade).
1033
1037
1034 * tools/run_ipy_in_profiler.py: Utility to see where
1038 * tools/run_ipy_in_profiler.py: Utility to see where
1035 the time during IPython startup is spent.
1039 the time during IPython startup is spent.
1036
1040
1037 2006-12-20 Ville Vainio <vivainio@gmail.com>
1041 2006-12-20 Ville Vainio <vivainio@gmail.com>
1038
1042
1039 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1043 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1040
1044
1041 * ipapi.py: Add new ipapi method, expand_alias.
1045 * ipapi.py: Add new ipapi method, expand_alias.
1042
1046
1043 * Release.py: Bump up version to 0.7.4.svn
1047 * Release.py: Bump up version to 0.7.4.svn
1044
1048
1045 2006-12-17 Ville Vainio <vivainio@gmail.com>
1049 2006-12-17 Ville Vainio <vivainio@gmail.com>
1046
1050
1047 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1051 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1048 to work properly on posix too
1052 to work properly on posix too
1049
1053
1050 * Release.py: Update revnum (version is still just 0.7.3).
1054 * Release.py: Update revnum (version is still just 0.7.3).
1051
1055
1052 2006-12-15 Ville Vainio <vivainio@gmail.com>
1056 2006-12-15 Ville Vainio <vivainio@gmail.com>
1053
1057
1054 * scripts/ipython_win_post_install: create ipython.py in
1058 * scripts/ipython_win_post_install: create ipython.py in
1055 prefix + "/scripts".
1059 prefix + "/scripts".
1056
1060
1057 * Release.py: Update version to 0.7.3.
1061 * Release.py: Update version to 0.7.3.
1058
1062
1059 2006-12-14 Ville Vainio <vivainio@gmail.com>
1063 2006-12-14 Ville Vainio <vivainio@gmail.com>
1060
1064
1061 * scripts/ipython_win_post_install: Overwrite old shortcuts
1065 * scripts/ipython_win_post_install: Overwrite old shortcuts
1062 if they already exist
1066 if they already exist
1063
1067
1064 * Release.py: release 0.7.3rc2
1068 * Release.py: release 0.7.3rc2
1065
1069
1066 2006-12-13 Ville Vainio <vivainio@gmail.com>
1070 2006-12-13 Ville Vainio <vivainio@gmail.com>
1067
1071
1068 * Branch and update Release.py for 0.7.3rc1
1072 * Branch and update Release.py for 0.7.3rc1
1069
1073
1070 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1074 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1071
1075
1072 * IPython/Shell.py (IPShellWX): update for current WX naming
1076 * IPython/Shell.py (IPShellWX): update for current WX naming
1073 conventions, to avoid a deprecation warning with current WX
1077 conventions, to avoid a deprecation warning with current WX
1074 versions. Thanks to a report by Danny Shevitz.
1078 versions. Thanks to a report by Danny Shevitz.
1075
1079
1076 2006-12-12 Ville Vainio <vivainio@gmail.com>
1080 2006-12-12 Ville Vainio <vivainio@gmail.com>
1077
1081
1078 * ipmaker.py: apply david cournapeau's patch to make
1082 * ipmaker.py: apply david cournapeau's patch to make
1079 import_some work properly even when ipythonrc does
1083 import_some work properly even when ipythonrc does
1080 import_some on empty list (it was an old bug!).
1084 import_some on empty list (it was an old bug!).
1081
1085
1082 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1086 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1083 Add deprecation note to ipythonrc and a url to wiki
1087 Add deprecation note to ipythonrc and a url to wiki
1084 in ipy_user_conf.py
1088 in ipy_user_conf.py
1085
1089
1086
1090
1087 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1091 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1088 as if it was typed on IPython command prompt, i.e.
1092 as if it was typed on IPython command prompt, i.e.
1089 as IPython script.
1093 as IPython script.
1090
1094
1091 * example-magic.py, magic_grepl.py: remove outdated examples
1095 * example-magic.py, magic_grepl.py: remove outdated examples
1092
1096
1093 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1097 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1094
1098
1095 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1099 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1096 is called before any exception has occurred.
1100 is called before any exception has occurred.
1097
1101
1098 2006-12-08 Ville Vainio <vivainio@gmail.com>
1102 2006-12-08 Ville Vainio <vivainio@gmail.com>
1099
1103
1100 * Extensions/ipy_stock_completers.py: fix cd completer
1104 * Extensions/ipy_stock_completers.py: fix cd completer
1101 to translate /'s to \'s again.
1105 to translate /'s to \'s again.
1102
1106
1103 * completer.py: prevent traceback on file completions w/
1107 * completer.py: prevent traceback on file completions w/
1104 backslash.
1108 backslash.
1105
1109
1106 * Release.py: Update release number to 0.7.3b3 for release
1110 * Release.py: Update release number to 0.7.3b3 for release
1107
1111
1108 2006-12-07 Ville Vainio <vivainio@gmail.com>
1112 2006-12-07 Ville Vainio <vivainio@gmail.com>
1109
1113
1110 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1114 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1111 while executing external code. Provides more shell-like behaviour
1115 while executing external code. Provides more shell-like behaviour
1112 and overall better response to ctrl + C / ctrl + break.
1116 and overall better response to ctrl + C / ctrl + break.
1113
1117
1114 * tools/make_tarball.py: new script to create tarball straight from svn
1118 * tools/make_tarball.py: new script to create tarball straight from svn
1115 (setup.py sdist doesn't work on win32).
1119 (setup.py sdist doesn't work on win32).
1116
1120
1117 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1121 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1118 on dirnames with spaces and use the default completer instead.
1122 on dirnames with spaces and use the default completer instead.
1119
1123
1120 * Revision.py: Change version to 0.7.3b2 for release.
1124 * Revision.py: Change version to 0.7.3b2 for release.
1121
1125
1122 2006-12-05 Ville Vainio <vivainio@gmail.com>
1126 2006-12-05 Ville Vainio <vivainio@gmail.com>
1123
1127
1124 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1128 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1125 pydb patch 4 (rm debug printing, py 2.5 checking)
1129 pydb patch 4 (rm debug printing, py 2.5 checking)
1126
1130
1127 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1131 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1128 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1132 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1129 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1133 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1130 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1134 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1131 object the cursor was on before the refresh. The command "markrange" is
1135 object the cursor was on before the refresh. The command "markrange" is
1132 mapped to "%" now.
1136 mapped to "%" now.
1133 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1137 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1134
1138
1135 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1139 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1136
1140
1137 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1141 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1138 interactive debugger on the last traceback, without having to call
1142 interactive debugger on the last traceback, without having to call
1139 %pdb and rerun your code. Made minor changes in various modules,
1143 %pdb and rerun your code. Made minor changes in various modules,
1140 should automatically recognize pydb if available.
1144 should automatically recognize pydb if available.
1141
1145
1142 2006-11-28 Ville Vainio <vivainio@gmail.com>
1146 2006-11-28 Ville Vainio <vivainio@gmail.com>
1143
1147
1144 * completer.py: If the text start with !, show file completions
1148 * completer.py: If the text start with !, show file completions
1145 properly. This helps when trying to complete command name
1149 properly. This helps when trying to complete command name
1146 for shell escapes.
1150 for shell escapes.
1147
1151
1148 2006-11-27 Ville Vainio <vivainio@gmail.com>
1152 2006-11-27 Ville Vainio <vivainio@gmail.com>
1149
1153
1150 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1154 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1151 der Walt. Clean up svn and hg completers by using a common
1155 der Walt. Clean up svn and hg completers by using a common
1152 vcs_completer.
1156 vcs_completer.
1153
1157
1154 2006-11-26 Ville Vainio <vivainio@gmail.com>
1158 2006-11-26 Ville Vainio <vivainio@gmail.com>
1155
1159
1156 * Remove ipconfig and %config; you should use _ip.options structure
1160 * Remove ipconfig and %config; you should use _ip.options structure
1157 directly instead!
1161 directly instead!
1158
1162
1159 * genutils.py: add wrap_deprecated function for deprecating callables
1163 * genutils.py: add wrap_deprecated function for deprecating callables
1160
1164
1161 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1165 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1162 _ip.system instead. ipalias is redundant.
1166 _ip.system instead. ipalias is redundant.
1163
1167
1164 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1168 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1165 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1169 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1166 explicit.
1170 explicit.
1167
1171
1168 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1172 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1169 completer. Try it by entering 'hg ' and pressing tab.
1173 completer. Try it by entering 'hg ' and pressing tab.
1170
1174
1171 * macro.py: Give Macro a useful __repr__ method
1175 * macro.py: Give Macro a useful __repr__ method
1172
1176
1173 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1177 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1174
1178
1175 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1179 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1176 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1180 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1177 we don't get a duplicate ipipe module, where registration of the xrepr
1181 we don't get a duplicate ipipe module, where registration of the xrepr
1178 implementation for Text is useless.
1182 implementation for Text is useless.
1179
1183
1180 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1184 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1181
1185
1182 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1186 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1183
1187
1184 2006-11-24 Ville Vainio <vivainio@gmail.com>
1188 2006-11-24 Ville Vainio <vivainio@gmail.com>
1185
1189
1186 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1190 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1187 try to use "cProfile" instead of the slower pure python
1191 try to use "cProfile" instead of the slower pure python
1188 "profile"
1192 "profile"
1189
1193
1190 2006-11-23 Ville Vainio <vivainio@gmail.com>
1194 2006-11-23 Ville Vainio <vivainio@gmail.com>
1191
1195
1192 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1196 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1193 Qt+IPython+Designer link in documentation.
1197 Qt+IPython+Designer link in documentation.
1194
1198
1195 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1199 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1196 correct Pdb object to %pydb.
1200 correct Pdb object to %pydb.
1197
1201
1198
1202
1199 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1203 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1200 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1204 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1201 generic xrepr(), otherwise the list implementation would kick in.
1205 generic xrepr(), otherwise the list implementation would kick in.
1202
1206
1203 2006-11-21 Ville Vainio <vivainio@gmail.com>
1207 2006-11-21 Ville Vainio <vivainio@gmail.com>
1204
1208
1205 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1209 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1206 with one from UserConfig.
1210 with one from UserConfig.
1207
1211
1208 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1212 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1209 it was missing which broke the sh profile.
1213 it was missing which broke the sh profile.
1210
1214
1211 * completer.py: file completer now uses explicit '/' instead
1215 * completer.py: file completer now uses explicit '/' instead
1212 of os.path.join, expansion of 'foo' was broken on win32
1216 of os.path.join, expansion of 'foo' was broken on win32
1213 if there was one directory with name 'foobar'.
1217 if there was one directory with name 'foobar'.
1214
1218
1215 * A bunch of patches from Kirill Smelkov:
1219 * A bunch of patches from Kirill Smelkov:
1216
1220
1217 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1221 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1218
1222
1219 * [patch 7/9] Implement %page -r (page in raw mode) -
1223 * [patch 7/9] Implement %page -r (page in raw mode) -
1220
1224
1221 * [patch 5/9] ScientificPython webpage has moved
1225 * [patch 5/9] ScientificPython webpage has moved
1222
1226
1223 * [patch 4/9] The manual mentions %ds, should be %dhist
1227 * [patch 4/9] The manual mentions %ds, should be %dhist
1224
1228
1225 * [patch 3/9] Kill old bits from %prun doc.
1229 * [patch 3/9] Kill old bits from %prun doc.
1226
1230
1227 * [patch 1/9] Fix typos here and there.
1231 * [patch 1/9] Fix typos here and there.
1228
1232
1229 2006-11-08 Ville Vainio <vivainio@gmail.com>
1233 2006-11-08 Ville Vainio <vivainio@gmail.com>
1230
1234
1231 * completer.py (attr_matches): catch all exceptions raised
1235 * completer.py (attr_matches): catch all exceptions raised
1232 by eval of expr with dots.
1236 by eval of expr with dots.
1233
1237
1234 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1238 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1235
1239
1236 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1240 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1237 input if it starts with whitespace. This allows you to paste
1241 input if it starts with whitespace. This allows you to paste
1238 indented input from any editor without manually having to type in
1242 indented input from any editor without manually having to type in
1239 the 'if 1:', which is convenient when working interactively.
1243 the 'if 1:', which is convenient when working interactively.
1240 Slightly modifed version of a patch by Bo Peng
1244 Slightly modifed version of a patch by Bo Peng
1241 <bpeng-AT-rice.edu>.
1245 <bpeng-AT-rice.edu>.
1242
1246
1243 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1247 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1244
1248
1245 * IPython/irunner.py (main): modified irunner so it automatically
1249 * IPython/irunner.py (main): modified irunner so it automatically
1246 recognizes the right runner to use based on the extension (.py for
1250 recognizes the right runner to use based on the extension (.py for
1247 python, .ipy for ipython and .sage for sage).
1251 python, .ipy for ipython and .sage for sage).
1248
1252
1249 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1253 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1250 visible in ipapi as ip.config(), to programatically control the
1254 visible in ipapi as ip.config(), to programatically control the
1251 internal rc object. There's an accompanying %config magic for
1255 internal rc object. There's an accompanying %config magic for
1252 interactive use, which has been enhanced to match the
1256 interactive use, which has been enhanced to match the
1253 funtionality in ipconfig.
1257 funtionality in ipconfig.
1254
1258
1255 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1259 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1256 so it's not just a toggle, it now takes an argument. Add support
1260 so it's not just a toggle, it now takes an argument. Add support
1257 for a customizable header when making system calls, as the new
1261 for a customizable header when making system calls, as the new
1258 system_header variable in the ipythonrc file.
1262 system_header variable in the ipythonrc file.
1259
1263
1260 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1264 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1261
1265
1262 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1266 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1263 generic functions (using Philip J. Eby's simplegeneric package).
1267 generic functions (using Philip J. Eby's simplegeneric package).
1264 This makes it possible to customize the display of third-party classes
1268 This makes it possible to customize the display of third-party classes
1265 without having to monkeypatch them. xiter() no longer supports a mode
1269 without having to monkeypatch them. xiter() no longer supports a mode
1266 argument and the XMode class has been removed. The same functionality can
1270 argument and the XMode class has been removed. The same functionality can
1267 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1271 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1268 One consequence of the switch to generic functions is that xrepr() and
1272 One consequence of the switch to generic functions is that xrepr() and
1269 xattrs() implementation must define the default value for the mode
1273 xattrs() implementation must define the default value for the mode
1270 argument themselves and xattrs() implementations must return real
1274 argument themselves and xattrs() implementations must return real
1271 descriptors.
1275 descriptors.
1272
1276
1273 * IPython/external: This new subpackage will contain all third-party
1277 * IPython/external: This new subpackage will contain all third-party
1274 packages that are bundled with IPython. (The first one is simplegeneric).
1278 packages that are bundled with IPython. (The first one is simplegeneric).
1275
1279
1276 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1280 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1277 directory which as been dropped in r1703.
1281 directory which as been dropped in r1703.
1278
1282
1279 * IPython/Extensions/ipipe.py (iless): Fixed.
1283 * IPython/Extensions/ipipe.py (iless): Fixed.
1280
1284
1281 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1285 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1282
1286
1283 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1287 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1284
1288
1285 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1289 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1286 handling in variable expansion so that shells and magics recognize
1290 handling in variable expansion so that shells and magics recognize
1287 function local scopes correctly. Bug reported by Brian.
1291 function local scopes correctly. Bug reported by Brian.
1288
1292
1289 * scripts/ipython: remove the very first entry in sys.path which
1293 * scripts/ipython: remove the very first entry in sys.path which
1290 Python auto-inserts for scripts, so that sys.path under IPython is
1294 Python auto-inserts for scripts, so that sys.path under IPython is
1291 as similar as possible to that under plain Python.
1295 as similar as possible to that under plain Python.
1292
1296
1293 * IPython/completer.py (IPCompleter.file_matches): Fix
1297 * IPython/completer.py (IPCompleter.file_matches): Fix
1294 tab-completion so that quotes are not closed unless the completion
1298 tab-completion so that quotes are not closed unless the completion
1295 is unambiguous. After a request by Stefan. Minor cleanups in
1299 is unambiguous. After a request by Stefan. Minor cleanups in
1296 ipy_stock_completers.
1300 ipy_stock_completers.
1297
1301
1298 2006-11-02 Ville Vainio <vivainio@gmail.com>
1302 2006-11-02 Ville Vainio <vivainio@gmail.com>
1299
1303
1300 * ipy_stock_completers.py: Add %run and %cd completers.
1304 * ipy_stock_completers.py: Add %run and %cd completers.
1301
1305
1302 * completer.py: Try running custom completer for both
1306 * completer.py: Try running custom completer for both
1303 "foo" and "%foo" if the command is just "foo". Ignore case
1307 "foo" and "%foo" if the command is just "foo". Ignore case
1304 when filtering possible completions.
1308 when filtering possible completions.
1305
1309
1306 * UserConfig/ipy_user_conf.py: install stock completers as default
1310 * UserConfig/ipy_user_conf.py: install stock completers as default
1307
1311
1308 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1312 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1309 simplified readline history save / restore through a wrapper
1313 simplified readline history save / restore through a wrapper
1310 function
1314 function
1311
1315
1312
1316
1313 2006-10-31 Ville Vainio <vivainio@gmail.com>
1317 2006-10-31 Ville Vainio <vivainio@gmail.com>
1314
1318
1315 * strdispatch.py, completer.py, ipy_stock_completers.py:
1319 * strdispatch.py, completer.py, ipy_stock_completers.py:
1316 Allow str_key ("command") in completer hooks. Implement
1320 Allow str_key ("command") in completer hooks. Implement
1317 trivial completer for 'import' (stdlib modules only). Rename
1321 trivial completer for 'import' (stdlib modules only). Rename
1318 ipy_linux_package_managers.py to ipy_stock_completers.py.
1322 ipy_linux_package_managers.py to ipy_stock_completers.py.
1319 SVN completer.
1323 SVN completer.
1320
1324
1321 * Extensions/ledit.py: %magic line editor for easily and
1325 * Extensions/ledit.py: %magic line editor for easily and
1322 incrementally manipulating lists of strings. The magic command
1326 incrementally manipulating lists of strings. The magic command
1323 name is %led.
1327 name is %led.
1324
1328
1325 2006-10-30 Ville Vainio <vivainio@gmail.com>
1329 2006-10-30 Ville Vainio <vivainio@gmail.com>
1326
1330
1327 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1331 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1328 Bernsteins's patches for pydb integration.
1332 Bernsteins's patches for pydb integration.
1329 http://bashdb.sourceforge.net/pydb/
1333 http://bashdb.sourceforge.net/pydb/
1330
1334
1331 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1335 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1332 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1336 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1333 custom completer hook to allow the users to implement their own
1337 custom completer hook to allow the users to implement their own
1334 completers. See ipy_linux_package_managers.py for example. The
1338 completers. See ipy_linux_package_managers.py for example. The
1335 hook name is 'complete_command'.
1339 hook name is 'complete_command'.
1336
1340
1337 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1341 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1338
1342
1339 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1343 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1340 Numeric leftovers.
1344 Numeric leftovers.
1341
1345
1342 * ipython.el (py-execute-region): apply Stefan's patch to fix
1346 * ipython.el (py-execute-region): apply Stefan's patch to fix
1343 garbled results if the python shell hasn't been previously started.
1347 garbled results if the python shell hasn't been previously started.
1344
1348
1345 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1349 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1346 pretty generic function and useful for other things.
1350 pretty generic function and useful for other things.
1347
1351
1348 * IPython/OInspect.py (getsource): Add customizable source
1352 * IPython/OInspect.py (getsource): Add customizable source
1349 extractor. After a request/patch form W. Stein (SAGE).
1353 extractor. After a request/patch form W. Stein (SAGE).
1350
1354
1351 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1355 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1352 window size to a more reasonable value from what pexpect does,
1356 window size to a more reasonable value from what pexpect does,
1353 since their choice causes wrapping bugs with long input lines.
1357 since their choice causes wrapping bugs with long input lines.
1354
1358
1355 2006-10-28 Ville Vainio <vivainio@gmail.com>
1359 2006-10-28 Ville Vainio <vivainio@gmail.com>
1356
1360
1357 * Magic.py (%run): Save and restore the readline history from
1361 * Magic.py (%run): Save and restore the readline history from
1358 file around %run commands to prevent side effects from
1362 file around %run commands to prevent side effects from
1359 %runned programs that might use readline (e.g. pydb).
1363 %runned programs that might use readline (e.g. pydb).
1360
1364
1361 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1365 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1362 invoking the pydb enhanced debugger.
1366 invoking the pydb enhanced debugger.
1363
1367
1364 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1368 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1365
1369
1366 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1370 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1367 call the base class method and propagate the return value to
1371 call the base class method and propagate the return value to
1368 ifile. This is now done by path itself.
1372 ifile. This is now done by path itself.
1369
1373
1370 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1374 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1371
1375
1372 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1376 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1373 api: set_crash_handler(), to expose the ability to change the
1377 api: set_crash_handler(), to expose the ability to change the
1374 internal crash handler.
1378 internal crash handler.
1375
1379
1376 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1380 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1377 the various parameters of the crash handler so that apps using
1381 the various parameters of the crash handler so that apps using
1378 IPython as their engine can customize crash handling. Ipmlemented
1382 IPython as their engine can customize crash handling. Ipmlemented
1379 at the request of SAGE.
1383 at the request of SAGE.
1380
1384
1381 2006-10-14 Ville Vainio <vivainio@gmail.com>
1385 2006-10-14 Ville Vainio <vivainio@gmail.com>
1382
1386
1383 * Magic.py, ipython.el: applied first "safe" part of Rocky
1387 * Magic.py, ipython.el: applied first "safe" part of Rocky
1384 Bernstein's patch set for pydb integration.
1388 Bernstein's patch set for pydb integration.
1385
1389
1386 * Magic.py (%unalias, %alias): %store'd aliases can now be
1390 * Magic.py (%unalias, %alias): %store'd aliases can now be
1387 removed with '%unalias'. %alias w/o args now shows most
1391 removed with '%unalias'. %alias w/o args now shows most
1388 interesting (stored / manually defined) aliases last
1392 interesting (stored / manually defined) aliases last
1389 where they catch the eye w/o scrolling.
1393 where they catch the eye w/o scrolling.
1390
1394
1391 * Magic.py (%rehashx), ext_rehashdir.py: files with
1395 * Magic.py (%rehashx), ext_rehashdir.py: files with
1392 'py' extension are always considered executable, even
1396 'py' extension are always considered executable, even
1393 when not in PATHEXT environment variable.
1397 when not in PATHEXT environment variable.
1394
1398
1395 2006-10-12 Ville Vainio <vivainio@gmail.com>
1399 2006-10-12 Ville Vainio <vivainio@gmail.com>
1396
1400
1397 * jobctrl.py: Add new "jobctrl" extension for spawning background
1401 * jobctrl.py: Add new "jobctrl" extension for spawning background
1398 processes with "&find /". 'import jobctrl' to try it out. Requires
1402 processes with "&find /". 'import jobctrl' to try it out. Requires
1399 'subprocess' module, standard in python 2.4+.
1403 'subprocess' module, standard in python 2.4+.
1400
1404
1401 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1405 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1402 so if foo -> bar and bar -> baz, then foo -> baz.
1406 so if foo -> bar and bar -> baz, then foo -> baz.
1403
1407
1404 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1408 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1405
1409
1406 * IPython/Magic.py (Magic.parse_options): add a new posix option
1410 * IPython/Magic.py (Magic.parse_options): add a new posix option
1407 to allow parsing of input args in magics that doesn't strip quotes
1411 to allow parsing of input args in magics that doesn't strip quotes
1408 (if posix=False). This also closes %timeit bug reported by
1412 (if posix=False). This also closes %timeit bug reported by
1409 Stefan.
1413 Stefan.
1410
1414
1411 2006-10-03 Ville Vainio <vivainio@gmail.com>
1415 2006-10-03 Ville Vainio <vivainio@gmail.com>
1412
1416
1413 * iplib.py (raw_input, interact): Return ValueError catching for
1417 * iplib.py (raw_input, interact): Return ValueError catching for
1414 raw_input. Fixes infinite loop for sys.stdin.close() or
1418 raw_input. Fixes infinite loop for sys.stdin.close() or
1415 sys.stdout.close().
1419 sys.stdout.close().
1416
1420
1417 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1421 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1418
1422
1419 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1423 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1420 to help in handling doctests. irunner is now pretty useful for
1424 to help in handling doctests. irunner is now pretty useful for
1421 running standalone scripts and simulate a full interactive session
1425 running standalone scripts and simulate a full interactive session
1422 in a format that can be then pasted as a doctest.
1426 in a format that can be then pasted as a doctest.
1423
1427
1424 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1428 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1425 on top of the default (useless) ones. This also fixes the nasty
1429 on top of the default (useless) ones. This also fixes the nasty
1426 way in which 2.5's Quitter() exits (reverted [1785]).
1430 way in which 2.5's Quitter() exits (reverted [1785]).
1427
1431
1428 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1432 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1429 2.5.
1433 2.5.
1430
1434
1431 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1435 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1432 color scheme is updated as well when color scheme is changed
1436 color scheme is updated as well when color scheme is changed
1433 interactively.
1437 interactively.
1434
1438
1435 2006-09-27 Ville Vainio <vivainio@gmail.com>
1439 2006-09-27 Ville Vainio <vivainio@gmail.com>
1436
1440
1437 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1441 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1438 infinite loop and just exit. It's a hack, but will do for a while.
1442 infinite loop and just exit. It's a hack, but will do for a while.
1439
1443
1440 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1444 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1441
1445
1442 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1446 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1443 the constructor, this makes it possible to get a list of only directories
1447 the constructor, this makes it possible to get a list of only directories
1444 or only files.
1448 or only files.
1445
1449
1446 2006-08-12 Ville Vainio <vivainio@gmail.com>
1450 2006-08-12 Ville Vainio <vivainio@gmail.com>
1447
1451
1448 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1452 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1449 they broke unittest
1453 they broke unittest
1450
1454
1451 2006-08-11 Ville Vainio <vivainio@gmail.com>
1455 2006-08-11 Ville Vainio <vivainio@gmail.com>
1452
1456
1453 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1457 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1454 by resolving issue properly, i.e. by inheriting FakeModule
1458 by resolving issue properly, i.e. by inheriting FakeModule
1455 from types.ModuleType. Pickling ipython interactive data
1459 from types.ModuleType. Pickling ipython interactive data
1456 should still work as usual (testing appreciated).
1460 should still work as usual (testing appreciated).
1457
1461
1458 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1462 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1459
1463
1460 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1464 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1461 running under python 2.3 with code from 2.4 to fix a bug with
1465 running under python 2.3 with code from 2.4 to fix a bug with
1462 help(). Reported by the Debian maintainers, Norbert Tretkowski
1466 help(). Reported by the Debian maintainers, Norbert Tretkowski
1463 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1467 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1464 <afayolle-AT-debian.org>.
1468 <afayolle-AT-debian.org>.
1465
1469
1466 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1470 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1467
1471
1468 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1472 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1469 (which was displaying "quit" twice).
1473 (which was displaying "quit" twice).
1470
1474
1471 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1475 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1472
1476
1473 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1477 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1474 the mode argument).
1478 the mode argument).
1475
1479
1476 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1480 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1477
1481
1478 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1482 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1479 not running under IPython.
1483 not running under IPython.
1480
1484
1481 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1485 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1482 and make it iterable (iterating over the attribute itself). Add two new
1486 and make it iterable (iterating over the attribute itself). Add two new
1483 magic strings for __xattrs__(): If the string starts with "-", the attribute
1487 magic strings for __xattrs__(): If the string starts with "-", the attribute
1484 will not be displayed in ibrowse's detail view (but it can still be
1488 will not be displayed in ibrowse's detail view (but it can still be
1485 iterated over). This makes it possible to add attributes that are large
1489 iterated over). This makes it possible to add attributes that are large
1486 lists or generator methods to the detail view. Replace magic attribute names
1490 lists or generator methods to the detail view. Replace magic attribute names
1487 and _attrname() and _getattr() with "descriptors": For each type of magic
1491 and _attrname() and _getattr() with "descriptors": For each type of magic
1488 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1492 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1489 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1493 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1490 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1494 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1491 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1495 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1492 are still supported.
1496 are still supported.
1493
1497
1494 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1498 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1495 fails in ibrowse.fetch(), the exception object is added as the last item
1499 fails in ibrowse.fetch(), the exception object is added as the last item
1496 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1500 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1497 a generator throws an exception midway through execution.
1501 a generator throws an exception midway through execution.
1498
1502
1499 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1503 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1500 encoding into methods.
1504 encoding into methods.
1501
1505
1502 2006-07-26 Ville Vainio <vivainio@gmail.com>
1506 2006-07-26 Ville Vainio <vivainio@gmail.com>
1503
1507
1504 * iplib.py: history now stores multiline input as single
1508 * iplib.py: history now stores multiline input as single
1505 history entries. Patch by Jorgen Cederlof.
1509 history entries. Patch by Jorgen Cederlof.
1506
1510
1507 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1511 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1508
1512
1509 * IPython/Extensions/ibrowse.py: Make cursor visible over
1513 * IPython/Extensions/ibrowse.py: Make cursor visible over
1510 non existing attributes.
1514 non existing attributes.
1511
1515
1512 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1516 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1513
1517
1514 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1518 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1515 error output of the running command doesn't mess up the screen.
1519 error output of the running command doesn't mess up the screen.
1516
1520
1517 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1521 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1518
1522
1519 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1523 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1520 argument. This sorts the items themselves.
1524 argument. This sorts the items themselves.
1521
1525
1522 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1526 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1523
1527
1524 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1528 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1525 Compile expression strings into code objects. This should speed
1529 Compile expression strings into code objects. This should speed
1526 up ifilter and friends somewhat.
1530 up ifilter and friends somewhat.
1527
1531
1528 2006-07-08 Ville Vainio <vivainio@gmail.com>
1532 2006-07-08 Ville Vainio <vivainio@gmail.com>
1529
1533
1530 * Magic.py: %cpaste now strips > from the beginning of lines
1534 * Magic.py: %cpaste now strips > from the beginning of lines
1531 to ease pasting quoted code from emails. Contributed by
1535 to ease pasting quoted code from emails. Contributed by
1532 Stefan van der Walt.
1536 Stefan van der Walt.
1533
1537
1534 2006-06-29 Ville Vainio <vivainio@gmail.com>
1538 2006-06-29 Ville Vainio <vivainio@gmail.com>
1535
1539
1536 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1540 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1537 mode, patch contributed by Darren Dale. NEEDS TESTING!
1541 mode, patch contributed by Darren Dale. NEEDS TESTING!
1538
1542
1539 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1543 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1540
1544
1541 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1545 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1542 a blue background. Fix fetching new display rows when the browser
1546 a blue background. Fix fetching new display rows when the browser
1543 scrolls more than a screenful (e.g. by using the goto command).
1547 scrolls more than a screenful (e.g. by using the goto command).
1544
1548
1545 2006-06-27 Ville Vainio <vivainio@gmail.com>
1549 2006-06-27 Ville Vainio <vivainio@gmail.com>
1546
1550
1547 * Magic.py (_inspect, _ofind) Apply David Huard's
1551 * Magic.py (_inspect, _ofind) Apply David Huard's
1548 patch for displaying the correct docstring for 'property'
1552 patch for displaying the correct docstring for 'property'
1549 attributes.
1553 attributes.
1550
1554
1551 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1555 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1552
1556
1553 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1557 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1554 commands into the methods implementing them.
1558 commands into the methods implementing them.
1555
1559
1556 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1560 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1557
1561
1558 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1562 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1559 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1563 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1560 autoindent support was authored by Jin Liu.
1564 autoindent support was authored by Jin Liu.
1561
1565
1562 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1566 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1563
1567
1564 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1568 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1565 for keymaps with a custom class that simplifies handling.
1569 for keymaps with a custom class that simplifies handling.
1566
1570
1567 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1571 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1568
1572
1569 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1573 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1570 resizing. This requires Python 2.5 to work.
1574 resizing. This requires Python 2.5 to work.
1571
1575
1572 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1576 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1573
1577
1574 * IPython/Extensions/ibrowse.py: Add two new commands to
1578 * IPython/Extensions/ibrowse.py: Add two new commands to
1575 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1579 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1576 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1580 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1577 attributes again. Remapped the help command to "?". Display
1581 attributes again. Remapped the help command to "?". Display
1578 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1582 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1579 as keys for the "home" and "end" commands. Add three new commands
1583 as keys for the "home" and "end" commands. Add three new commands
1580 to the input mode for "find" and friends: "delend" (CTRL-K)
1584 to the input mode for "find" and friends: "delend" (CTRL-K)
1581 deletes to the end of line. "incsearchup" searches upwards in the
1585 deletes to the end of line. "incsearchup" searches upwards in the
1582 command history for an input that starts with the text before the cursor.
1586 command history for an input that starts with the text before the cursor.
1583 "incsearchdown" does the same downwards. Removed a bogus mapping of
1587 "incsearchdown" does the same downwards. Removed a bogus mapping of
1584 the x key to "delete".
1588 the x key to "delete".
1585
1589
1586 2006-06-15 Ville Vainio <vivainio@gmail.com>
1590 2006-06-15 Ville Vainio <vivainio@gmail.com>
1587
1591
1588 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1592 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1589 used to create prompts dynamically, instead of the "old" way of
1593 used to create prompts dynamically, instead of the "old" way of
1590 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1594 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1591 way still works (it's invoked by the default hook), of course.
1595 way still works (it's invoked by the default hook), of course.
1592
1596
1593 * Prompts.py: added generate_output_prompt hook for altering output
1597 * Prompts.py: added generate_output_prompt hook for altering output
1594 prompt
1598 prompt
1595
1599
1596 * Release.py: Changed version string to 0.7.3.svn.
1600 * Release.py: Changed version string to 0.7.3.svn.
1597
1601
1598 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1602 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1599
1603
1600 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1604 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1601 the call to fetch() always tries to fetch enough data for at least one
1605 the call to fetch() always tries to fetch enough data for at least one
1602 full screen. This makes it possible to simply call moveto(0,0,True) in
1606 full screen. This makes it possible to simply call moveto(0,0,True) in
1603 the constructor. Fix typos and removed the obsolete goto attribute.
1607 the constructor. Fix typos and removed the obsolete goto attribute.
1604
1608
1605 2006-06-12 Ville Vainio <vivainio@gmail.com>
1609 2006-06-12 Ville Vainio <vivainio@gmail.com>
1606
1610
1607 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1611 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1608 allowing $variable interpolation within multiline statements,
1612 allowing $variable interpolation within multiline statements,
1609 though so far only with "sh" profile for a testing period.
1613 though so far only with "sh" profile for a testing period.
1610 The patch also enables splitting long commands with \ but it
1614 The patch also enables splitting long commands with \ but it
1611 doesn't work properly yet.
1615 doesn't work properly yet.
1612
1616
1613 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1617 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1614
1618
1615 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1619 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1616 input history and the position of the cursor in the input history for
1620 input history and the position of the cursor in the input history for
1617 the find, findbackwards and goto command.
1621 the find, findbackwards and goto command.
1618
1622
1619 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1623 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1620
1624
1621 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1625 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1622 implements the basic functionality of browser commands that require
1626 implements the basic functionality of browser commands that require
1623 input. Reimplement the goto, find and findbackwards commands as
1627 input. Reimplement the goto, find and findbackwards commands as
1624 subclasses of _CommandInput. Add an input history and keymaps to those
1628 subclasses of _CommandInput. Add an input history and keymaps to those
1625 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1629 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1626 execute commands.
1630 execute commands.
1627
1631
1628 2006-06-07 Ville Vainio <vivainio@gmail.com>
1632 2006-06-07 Ville Vainio <vivainio@gmail.com>
1629
1633
1630 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1634 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1631 running the batch files instead of leaving the session open.
1635 running the batch files instead of leaving the session open.
1632
1636
1633 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1637 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1634
1638
1635 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1639 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1636 the original fix was incomplete. Patch submitted by W. Maier.
1640 the original fix was incomplete. Patch submitted by W. Maier.
1637
1641
1638 2006-06-07 Ville Vainio <vivainio@gmail.com>
1642 2006-06-07 Ville Vainio <vivainio@gmail.com>
1639
1643
1640 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1644 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1641 Confirmation prompts can be supressed by 'quiet' option.
1645 Confirmation prompts can be supressed by 'quiet' option.
1642 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1646 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1643
1647
1644 2006-06-06 *** Released version 0.7.2
1648 2006-06-06 *** Released version 0.7.2
1645
1649
1646 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1650 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1647
1651
1648 * IPython/Release.py (version): Made 0.7.2 final for release.
1652 * IPython/Release.py (version): Made 0.7.2 final for release.
1649 Repo tagged and release cut.
1653 Repo tagged and release cut.
1650
1654
1651 2006-06-05 Ville Vainio <vivainio@gmail.com>
1655 2006-06-05 Ville Vainio <vivainio@gmail.com>
1652
1656
1653 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1657 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1654 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1658 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1655
1659
1656 * upgrade_dir.py: try import 'path' module a bit harder
1660 * upgrade_dir.py: try import 'path' module a bit harder
1657 (for %upgrade)
1661 (for %upgrade)
1658
1662
1659 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1663 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1660
1664
1661 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1665 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1662 instead of looping 20 times.
1666 instead of looping 20 times.
1663
1667
1664 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1668 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1665 correctly at initialization time. Bug reported by Krishna Mohan
1669 correctly at initialization time. Bug reported by Krishna Mohan
1666 Gundu <gkmohan-AT-gmail.com> on the user list.
1670 Gundu <gkmohan-AT-gmail.com> on the user list.
1667
1671
1668 * IPython/Release.py (version): Mark 0.7.2 version to start
1672 * IPython/Release.py (version): Mark 0.7.2 version to start
1669 testing for release on 06/06.
1673 testing for release on 06/06.
1670
1674
1671 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1675 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1672
1676
1673 * scripts/irunner: thin script interface so users don't have to
1677 * scripts/irunner: thin script interface so users don't have to
1674 find the module and call it as an executable, since modules rarely
1678 find the module and call it as an executable, since modules rarely
1675 live in people's PATH.
1679 live in people's PATH.
1676
1680
1677 * IPython/irunner.py (InteractiveRunner.__init__): added
1681 * IPython/irunner.py (InteractiveRunner.__init__): added
1678 delaybeforesend attribute to control delays with newer versions of
1682 delaybeforesend attribute to control delays with newer versions of
1679 pexpect. Thanks to detailed help from pexpect's author, Noah
1683 pexpect. Thanks to detailed help from pexpect's author, Noah
1680 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1684 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1681 correctly (it works in NoColor mode).
1685 correctly (it works in NoColor mode).
1682
1686
1683 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1687 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1684 SAGE list, from improper log() calls.
1688 SAGE list, from improper log() calls.
1685
1689
1686 2006-05-31 Ville Vainio <vivainio@gmail.com>
1690 2006-05-31 Ville Vainio <vivainio@gmail.com>
1687
1691
1688 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1692 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1689 with args in parens to work correctly with dirs that have spaces.
1693 with args in parens to work correctly with dirs that have spaces.
1690
1694
1691 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1695 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1692
1696
1693 * IPython/Logger.py (Logger.logstart): add option to log raw input
1697 * IPython/Logger.py (Logger.logstart): add option to log raw input
1694 instead of the processed one. A -r flag was added to the
1698 instead of the processed one. A -r flag was added to the
1695 %logstart magic used for controlling logging.
1699 %logstart magic used for controlling logging.
1696
1700
1697 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1701 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1698
1702
1699 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1703 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1700 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1704 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1701 recognize the option. After a bug report by Will Maier. This
1705 recognize the option. After a bug report by Will Maier. This
1702 closes #64 (will do it after confirmation from W. Maier).
1706 closes #64 (will do it after confirmation from W. Maier).
1703
1707
1704 * IPython/irunner.py: New module to run scripts as if manually
1708 * IPython/irunner.py: New module to run scripts as if manually
1705 typed into an interactive environment, based on pexpect. After a
1709 typed into an interactive environment, based on pexpect. After a
1706 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1710 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1707 ipython-user list. Simple unittests in the tests/ directory.
1711 ipython-user list. Simple unittests in the tests/ directory.
1708
1712
1709 * tools/release: add Will Maier, OpenBSD port maintainer, to
1713 * tools/release: add Will Maier, OpenBSD port maintainer, to
1710 recepients list. We are now officially part of the OpenBSD ports:
1714 recepients list. We are now officially part of the OpenBSD ports:
1711 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1715 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1712 work.
1716 work.
1713
1717
1714 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1718 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1715
1719
1716 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1720 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1717 so that it doesn't break tkinter apps.
1721 so that it doesn't break tkinter apps.
1718
1722
1719 * IPython/iplib.py (_prefilter): fix bug where aliases would
1723 * IPython/iplib.py (_prefilter): fix bug where aliases would
1720 shadow variables when autocall was fully off. Reported by SAGE
1724 shadow variables when autocall was fully off. Reported by SAGE
1721 author William Stein.
1725 author William Stein.
1722
1726
1723 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1727 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1724 at what detail level strings are computed when foo? is requested.
1728 at what detail level strings are computed when foo? is requested.
1725 This allows users to ask for example that the string form of an
1729 This allows users to ask for example that the string form of an
1726 object is only computed when foo?? is called, or even never, by
1730 object is only computed when foo?? is called, or even never, by
1727 setting the object_info_string_level >= 2 in the configuration
1731 setting the object_info_string_level >= 2 in the configuration
1728 file. This new option has been added and documented. After a
1732 file. This new option has been added and documented. After a
1729 request by SAGE to be able to control the printing of very large
1733 request by SAGE to be able to control the printing of very large
1730 objects more easily.
1734 objects more easily.
1731
1735
1732 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1736 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1733
1737
1734 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1738 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1735 from sys.argv, to be 100% consistent with how Python itself works
1739 from sys.argv, to be 100% consistent with how Python itself works
1736 (as seen for example with python -i file.py). After a bug report
1740 (as seen for example with python -i file.py). After a bug report
1737 by Jeffrey Collins.
1741 by Jeffrey Collins.
1738
1742
1739 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1743 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1740 nasty bug which was preventing custom namespaces with -pylab,
1744 nasty bug which was preventing custom namespaces with -pylab,
1741 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1745 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1742 compatibility (long gone from mpl).
1746 compatibility (long gone from mpl).
1743
1747
1744 * IPython/ipapi.py (make_session): name change: create->make. We
1748 * IPython/ipapi.py (make_session): name change: create->make. We
1745 use make in other places (ipmaker,...), it's shorter and easier to
1749 use make in other places (ipmaker,...), it's shorter and easier to
1746 type and say, etc. I'm trying to clean things before 0.7.2 so
1750 type and say, etc. I'm trying to clean things before 0.7.2 so
1747 that I can keep things stable wrt to ipapi in the chainsaw branch.
1751 that I can keep things stable wrt to ipapi in the chainsaw branch.
1748
1752
1749 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1753 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1750 python-mode recognizes our debugger mode. Add support for
1754 python-mode recognizes our debugger mode. Add support for
1751 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1755 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1752 <m.liu.jin-AT-gmail.com> originally written by
1756 <m.liu.jin-AT-gmail.com> originally written by
1753 doxgen-AT-newsmth.net (with minor modifications for xemacs
1757 doxgen-AT-newsmth.net (with minor modifications for xemacs
1754 compatibility)
1758 compatibility)
1755
1759
1756 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1760 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1757 tracebacks when walking the stack so that the stack tracking system
1761 tracebacks when walking the stack so that the stack tracking system
1758 in emacs' python-mode can identify the frames correctly.
1762 in emacs' python-mode can identify the frames correctly.
1759
1763
1760 * IPython/ipmaker.py (make_IPython): make the internal (and
1764 * IPython/ipmaker.py (make_IPython): make the internal (and
1761 default config) autoedit_syntax value false by default. Too many
1765 default config) autoedit_syntax value false by default. Too many
1762 users have complained to me (both on and off-list) about problems
1766 users have complained to me (both on and off-list) about problems
1763 with this option being on by default, so I'm making it default to
1767 with this option being on by default, so I'm making it default to
1764 off. It can still be enabled by anyone via the usual mechanisms.
1768 off. It can still be enabled by anyone via the usual mechanisms.
1765
1769
1766 * IPython/completer.py (Completer.attr_matches): add support for
1770 * IPython/completer.py (Completer.attr_matches): add support for
1767 PyCrust-style _getAttributeNames magic method. Patch contributed
1771 PyCrust-style _getAttributeNames magic method. Patch contributed
1768 by <mscott-AT-goldenspud.com>. Closes #50.
1772 by <mscott-AT-goldenspud.com>. Closes #50.
1769
1773
1770 * IPython/iplib.py (InteractiveShell.__init__): remove the
1774 * IPython/iplib.py (InteractiveShell.__init__): remove the
1771 deletion of exit/quit from __builtin__, which can break
1775 deletion of exit/quit from __builtin__, which can break
1772 third-party tools like the Zope debugging console. The
1776 third-party tools like the Zope debugging console. The
1773 %exit/%quit magics remain. In general, it's probably a good idea
1777 %exit/%quit magics remain. In general, it's probably a good idea
1774 not to delete anything from __builtin__, since we never know what
1778 not to delete anything from __builtin__, since we never know what
1775 that will break. In any case, python now (for 2.5) will support
1779 that will break. In any case, python now (for 2.5) will support
1776 'real' exit/quit, so this issue is moot. Closes #55.
1780 'real' exit/quit, so this issue is moot. Closes #55.
1777
1781
1778 * IPython/genutils.py (with_obj): rename the 'with' function to
1782 * IPython/genutils.py (with_obj): rename the 'with' function to
1779 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1783 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1780 becomes a language keyword. Closes #53.
1784 becomes a language keyword. Closes #53.
1781
1785
1782 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1786 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1783 __file__ attribute to this so it fools more things into thinking
1787 __file__ attribute to this so it fools more things into thinking
1784 it is a real module. Closes #59.
1788 it is a real module. Closes #59.
1785
1789
1786 * IPython/Magic.py (magic_edit): add -n option to open the editor
1790 * IPython/Magic.py (magic_edit): add -n option to open the editor
1787 at a specific line number. After a patch by Stefan van der Walt.
1791 at a specific line number. After a patch by Stefan van der Walt.
1788
1792
1789 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1793 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1790
1794
1791 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1795 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1792 reason the file could not be opened. After automatic crash
1796 reason the file could not be opened. After automatic crash
1793 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1797 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1794 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1798 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1795 (_should_recompile): Don't fire editor if using %bg, since there
1799 (_should_recompile): Don't fire editor if using %bg, since there
1796 is no file in the first place. From the same report as above.
1800 is no file in the first place. From the same report as above.
1797 (raw_input): protect against faulty third-party prefilters. After
1801 (raw_input): protect against faulty third-party prefilters. After
1798 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1802 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1799 while running under SAGE.
1803 while running under SAGE.
1800
1804
1801 2006-05-23 Ville Vainio <vivainio@gmail.com>
1805 2006-05-23 Ville Vainio <vivainio@gmail.com>
1802
1806
1803 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1807 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1804 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1808 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1805 now returns None (again), unless dummy is specifically allowed by
1809 now returns None (again), unless dummy is specifically allowed by
1806 ipapi.get(allow_dummy=True).
1810 ipapi.get(allow_dummy=True).
1807
1811
1808 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1812 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1809
1813
1810 * IPython: remove all 2.2-compatibility objects and hacks from
1814 * IPython: remove all 2.2-compatibility objects and hacks from
1811 everywhere, since we only support 2.3 at this point. Docs
1815 everywhere, since we only support 2.3 at this point. Docs
1812 updated.
1816 updated.
1813
1817
1814 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1818 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1815 Anything requiring extra validation can be turned into a Python
1819 Anything requiring extra validation can be turned into a Python
1816 property in the future. I used a property for the db one b/c
1820 property in the future. I used a property for the db one b/c
1817 there was a nasty circularity problem with the initialization
1821 there was a nasty circularity problem with the initialization
1818 order, which right now I don't have time to clean up.
1822 order, which right now I don't have time to clean up.
1819
1823
1820 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1824 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1821 another locking bug reported by Jorgen. I'm not 100% sure though,
1825 another locking bug reported by Jorgen. I'm not 100% sure though,
1822 so more testing is needed...
1826 so more testing is needed...
1823
1827
1824 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1828 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1825
1829
1826 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1830 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1827 local variables from any routine in user code (typically executed
1831 local variables from any routine in user code (typically executed
1828 with %run) directly into the interactive namespace. Very useful
1832 with %run) directly into the interactive namespace. Very useful
1829 when doing complex debugging.
1833 when doing complex debugging.
1830 (IPythonNotRunning): Changed the default None object to a dummy
1834 (IPythonNotRunning): Changed the default None object to a dummy
1831 whose attributes can be queried as well as called without
1835 whose attributes can be queried as well as called without
1832 exploding, to ease writing code which works transparently both in
1836 exploding, to ease writing code which works transparently both in
1833 and out of ipython and uses some of this API.
1837 and out of ipython and uses some of this API.
1834
1838
1835 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1839 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1836
1840
1837 * IPython/hooks.py (result_display): Fix the fact that our display
1841 * IPython/hooks.py (result_display): Fix the fact that our display
1838 hook was using str() instead of repr(), as the default python
1842 hook was using str() instead of repr(), as the default python
1839 console does. This had gone unnoticed b/c it only happened if
1843 console does. This had gone unnoticed b/c it only happened if
1840 %Pprint was off, but the inconsistency was there.
1844 %Pprint was off, but the inconsistency was there.
1841
1845
1842 2006-05-15 Ville Vainio <vivainio@gmail.com>
1846 2006-05-15 Ville Vainio <vivainio@gmail.com>
1843
1847
1844 * Oinspect.py: Only show docstring for nonexisting/binary files
1848 * Oinspect.py: Only show docstring for nonexisting/binary files
1845 when doing object??, closing ticket #62
1849 when doing object??, closing ticket #62
1846
1850
1847 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1851 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1848
1852
1849 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1853 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1850 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1854 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1851 was being released in a routine which hadn't checked if it had
1855 was being released in a routine which hadn't checked if it had
1852 been the one to acquire it.
1856 been the one to acquire it.
1853
1857
1854 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1858 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1855
1859
1856 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1860 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1857
1861
1858 2006-04-11 Ville Vainio <vivainio@gmail.com>
1862 2006-04-11 Ville Vainio <vivainio@gmail.com>
1859
1863
1860 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1864 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1861 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1865 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1862 prefilters, allowing stuff like magics and aliases in the file.
1866 prefilters, allowing stuff like magics and aliases in the file.
1863
1867
1864 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1868 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1865 added. Supported now are "%clear in" and "%clear out" (clear input and
1869 added. Supported now are "%clear in" and "%clear out" (clear input and
1866 output history, respectively). Also fixed CachedOutput.flush to
1870 output history, respectively). Also fixed CachedOutput.flush to
1867 properly flush the output cache.
1871 properly flush the output cache.
1868
1872
1869 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1873 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1870 half-success (and fail explicitly).
1874 half-success (and fail explicitly).
1871
1875
1872 2006-03-28 Ville Vainio <vivainio@gmail.com>
1876 2006-03-28 Ville Vainio <vivainio@gmail.com>
1873
1877
1874 * iplib.py: Fix quoting of aliases so that only argless ones
1878 * iplib.py: Fix quoting of aliases so that only argless ones
1875 are quoted
1879 are quoted
1876
1880
1877 2006-03-28 Ville Vainio <vivainio@gmail.com>
1881 2006-03-28 Ville Vainio <vivainio@gmail.com>
1878
1882
1879 * iplib.py: Quote aliases with spaces in the name.
1883 * iplib.py: Quote aliases with spaces in the name.
1880 "c:\program files\blah\bin" is now legal alias target.
1884 "c:\program files\blah\bin" is now legal alias target.
1881
1885
1882 * ext_rehashdir.py: Space no longer allowed as arg
1886 * ext_rehashdir.py: Space no longer allowed as arg
1883 separator, since space is legal in path names.
1887 separator, since space is legal in path names.
1884
1888
1885 2006-03-16 Ville Vainio <vivainio@gmail.com>
1889 2006-03-16 Ville Vainio <vivainio@gmail.com>
1886
1890
1887 * upgrade_dir.py: Take path.py from Extensions, correcting
1891 * upgrade_dir.py: Take path.py from Extensions, correcting
1888 %upgrade magic
1892 %upgrade magic
1889
1893
1890 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1894 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1891
1895
1892 * hooks.py: Only enclose editor binary in quotes if legal and
1896 * hooks.py: Only enclose editor binary in quotes if legal and
1893 necessary (space in the name, and is an existing file). Fixes a bug
1897 necessary (space in the name, and is an existing file). Fixes a bug
1894 reported by Zachary Pincus.
1898 reported by Zachary Pincus.
1895
1899
1896 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1900 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1897
1901
1898 * Manual: thanks to a tip on proper color handling for Emacs, by
1902 * Manual: thanks to a tip on proper color handling for Emacs, by
1899 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1903 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1900
1904
1901 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1905 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1902 by applying the provided patch. Thanks to Liu Jin
1906 by applying the provided patch. Thanks to Liu Jin
1903 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1907 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1904 XEmacs/Linux, I'm trusting the submitter that it actually helps
1908 XEmacs/Linux, I'm trusting the submitter that it actually helps
1905 under win32/GNU Emacs. Will revisit if any problems are reported.
1909 under win32/GNU Emacs. Will revisit if any problems are reported.
1906
1910
1907 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1911 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1908
1912
1909 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1913 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1910 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1914 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1911
1915
1912 2006-03-12 Ville Vainio <vivainio@gmail.com>
1916 2006-03-12 Ville Vainio <vivainio@gmail.com>
1913
1917
1914 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1918 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1915 Torsten Marek.
1919 Torsten Marek.
1916
1920
1917 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1921 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1918
1922
1919 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1923 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1920 line ranges works again.
1924 line ranges works again.
1921
1925
1922 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1926 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1923
1927
1924 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1928 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1925 and friends, after a discussion with Zach Pincus on ipython-user.
1929 and friends, after a discussion with Zach Pincus on ipython-user.
1926 I'm not 100% sure, but after thinking about it quite a bit, it may
1930 I'm not 100% sure, but after thinking about it quite a bit, it may
1927 be OK. Testing with the multithreaded shells didn't reveal any
1931 be OK. Testing with the multithreaded shells didn't reveal any
1928 problems, but let's keep an eye out.
1932 problems, but let's keep an eye out.
1929
1933
1930 In the process, I fixed a few things which were calling
1934 In the process, I fixed a few things which were calling
1931 self.InteractiveTB() directly (like safe_execfile), which is a
1935 self.InteractiveTB() directly (like safe_execfile), which is a
1932 mistake: ALL exception reporting should be done by calling
1936 mistake: ALL exception reporting should be done by calling
1933 self.showtraceback(), which handles state and tab-completion and
1937 self.showtraceback(), which handles state and tab-completion and
1934 more.
1938 more.
1935
1939
1936 2006-03-01 Ville Vainio <vivainio@gmail.com>
1940 2006-03-01 Ville Vainio <vivainio@gmail.com>
1937
1941
1938 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1942 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1939 To use, do "from ipipe import *".
1943 To use, do "from ipipe import *".
1940
1944
1941 2006-02-24 Ville Vainio <vivainio@gmail.com>
1945 2006-02-24 Ville Vainio <vivainio@gmail.com>
1942
1946
1943 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1947 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1944 "cleanly" and safely than the older upgrade mechanism.
1948 "cleanly" and safely than the older upgrade mechanism.
1945
1949
1946 2006-02-21 Ville Vainio <vivainio@gmail.com>
1950 2006-02-21 Ville Vainio <vivainio@gmail.com>
1947
1951
1948 * Magic.py: %save works again.
1952 * Magic.py: %save works again.
1949
1953
1950 2006-02-15 Ville Vainio <vivainio@gmail.com>
1954 2006-02-15 Ville Vainio <vivainio@gmail.com>
1951
1955
1952 * Magic.py: %Pprint works again
1956 * Magic.py: %Pprint works again
1953
1957
1954 * Extensions/ipy_sane_defaults.py: Provide everything provided
1958 * Extensions/ipy_sane_defaults.py: Provide everything provided
1955 in default ipythonrc, to make it possible to have a completely empty
1959 in default ipythonrc, to make it possible to have a completely empty
1956 ipythonrc (and thus completely rc-file free configuration)
1960 ipythonrc (and thus completely rc-file free configuration)
1957
1961
1958 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1962 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1959
1963
1960 * IPython/hooks.py (editor): quote the call to the editor command,
1964 * IPython/hooks.py (editor): quote the call to the editor command,
1961 to allow commands with spaces in them. Problem noted by watching
1965 to allow commands with spaces in them. Problem noted by watching
1962 Ian Oswald's video about textpad under win32 at
1966 Ian Oswald's video about textpad under win32 at
1963 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1967 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1964
1968
1965 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1969 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1966 describing magics (we haven't used @ for a loong time).
1970 describing magics (we haven't used @ for a loong time).
1967
1971
1968 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1972 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1969 contributed by marienz to close
1973 contributed by marienz to close
1970 http://www.scipy.net/roundup/ipython/issue53.
1974 http://www.scipy.net/roundup/ipython/issue53.
1971
1975
1972 2006-02-10 Ville Vainio <vivainio@gmail.com>
1976 2006-02-10 Ville Vainio <vivainio@gmail.com>
1973
1977
1974 * genutils.py: getoutput now works in win32 too
1978 * genutils.py: getoutput now works in win32 too
1975
1979
1976 * completer.py: alias and magic completion only invoked
1980 * completer.py: alias and magic completion only invoked
1977 at the first "item" in the line, to avoid "cd %store"
1981 at the first "item" in the line, to avoid "cd %store"
1978 nonsense.
1982 nonsense.
1979
1983
1980 2006-02-09 Ville Vainio <vivainio@gmail.com>
1984 2006-02-09 Ville Vainio <vivainio@gmail.com>
1981
1985
1982 * test/*: Added a unit testing framework (finally).
1986 * test/*: Added a unit testing framework (finally).
1983 '%run runtests.py' to run test_*.
1987 '%run runtests.py' to run test_*.
1984
1988
1985 * ipapi.py: Exposed runlines and set_custom_exc
1989 * ipapi.py: Exposed runlines and set_custom_exc
1986
1990
1987 2006-02-07 Ville Vainio <vivainio@gmail.com>
1991 2006-02-07 Ville Vainio <vivainio@gmail.com>
1988
1992
1989 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1993 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1990 instead use "f(1 2)" as before.
1994 instead use "f(1 2)" as before.
1991
1995
1992 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1996 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1993
1997
1994 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1998 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1995 facilities, for demos processed by the IPython input filter
1999 facilities, for demos processed by the IPython input filter
1996 (IPythonDemo), and for running a script one-line-at-a-time as a
2000 (IPythonDemo), and for running a script one-line-at-a-time as a
1997 demo, both for pure Python (LineDemo) and for IPython-processed
2001 demo, both for pure Python (LineDemo) and for IPython-processed
1998 input (IPythonLineDemo). After a request by Dave Kohel, from the
2002 input (IPythonLineDemo). After a request by Dave Kohel, from the
1999 SAGE team.
2003 SAGE team.
2000 (Demo.edit): added an edit() method to the demo objects, to edit
2004 (Demo.edit): added an edit() method to the demo objects, to edit
2001 the in-memory copy of the last executed block.
2005 the in-memory copy of the last executed block.
2002
2006
2003 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2007 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2004 processing to %edit, %macro and %save. These commands can now be
2008 processing to %edit, %macro and %save. These commands can now be
2005 invoked on the unprocessed input as it was typed by the user
2009 invoked on the unprocessed input as it was typed by the user
2006 (without any prefilters applied). After requests by the SAGE team
2010 (without any prefilters applied). After requests by the SAGE team
2007 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2011 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2008
2012
2009 2006-02-01 Ville Vainio <vivainio@gmail.com>
2013 2006-02-01 Ville Vainio <vivainio@gmail.com>
2010
2014
2011 * setup.py, eggsetup.py: easy_install ipython==dev works
2015 * setup.py, eggsetup.py: easy_install ipython==dev works
2012 correctly now (on Linux)
2016 correctly now (on Linux)
2013
2017
2014 * ipy_user_conf,ipmaker: user config changes, removed spurious
2018 * ipy_user_conf,ipmaker: user config changes, removed spurious
2015 warnings
2019 warnings
2016
2020
2017 * iplib: if rc.banner is string, use it as is.
2021 * iplib: if rc.banner is string, use it as is.
2018
2022
2019 * Magic: %pycat accepts a string argument and pages it's contents.
2023 * Magic: %pycat accepts a string argument and pages it's contents.
2020
2024
2021
2025
2022 2006-01-30 Ville Vainio <vivainio@gmail.com>
2026 2006-01-30 Ville Vainio <vivainio@gmail.com>
2023
2027
2024 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2028 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2025 Now %store and bookmarks work through PickleShare, meaning that
2029 Now %store and bookmarks work through PickleShare, meaning that
2026 concurrent access is possible and all ipython sessions see the
2030 concurrent access is possible and all ipython sessions see the
2027 same database situation all the time, instead of snapshot of
2031 same database situation all the time, instead of snapshot of
2028 the situation when the session was started. Hence, %bookmark
2032 the situation when the session was started. Hence, %bookmark
2029 results are immediately accessible from othes sessions. The database
2033 results are immediately accessible from othes sessions. The database
2030 is also available for use by user extensions. See:
2034 is also available for use by user extensions. See:
2031 http://www.python.org/pypi/pickleshare
2035 http://www.python.org/pypi/pickleshare
2032
2036
2033 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2037 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2034
2038
2035 * aliases can now be %store'd
2039 * aliases can now be %store'd
2036
2040
2037 * path.py moved to Extensions so that pickleshare does not need
2041 * path.py moved to Extensions so that pickleshare does not need
2038 IPython-specific import. Extensions added to pythonpath right
2042 IPython-specific import. Extensions added to pythonpath right
2039 at __init__.
2043 at __init__.
2040
2044
2041 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2045 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2042 called with _ip.system and the pre-transformed command string.
2046 called with _ip.system and the pre-transformed command string.
2043
2047
2044 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2048 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2045
2049
2046 * IPython/iplib.py (interact): Fix that we were not catching
2050 * IPython/iplib.py (interact): Fix that we were not catching
2047 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2051 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2048 logic here had to change, but it's fixed now.
2052 logic here had to change, but it's fixed now.
2049
2053
2050 2006-01-29 Ville Vainio <vivainio@gmail.com>
2054 2006-01-29 Ville Vainio <vivainio@gmail.com>
2051
2055
2052 * iplib.py: Try to import pyreadline on Windows.
2056 * iplib.py: Try to import pyreadline on Windows.
2053
2057
2054 2006-01-27 Ville Vainio <vivainio@gmail.com>
2058 2006-01-27 Ville Vainio <vivainio@gmail.com>
2055
2059
2056 * iplib.py: Expose ipapi as _ip in builtin namespace.
2060 * iplib.py: Expose ipapi as _ip in builtin namespace.
2057 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2061 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2058 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2062 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2059 syntax now produce _ip.* variant of the commands.
2063 syntax now produce _ip.* variant of the commands.
2060
2064
2061 * "_ip.options().autoedit_syntax = 2" automatically throws
2065 * "_ip.options().autoedit_syntax = 2" automatically throws
2062 user to editor for syntax error correction without prompting.
2066 user to editor for syntax error correction without prompting.
2063
2067
2064 2006-01-27 Ville Vainio <vivainio@gmail.com>
2068 2006-01-27 Ville Vainio <vivainio@gmail.com>
2065
2069
2066 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2070 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2067 'ipython' at argv[0]) executed through command line.
2071 'ipython' at argv[0]) executed through command line.
2068 NOTE: this DEPRECATES calling ipython with multiple scripts
2072 NOTE: this DEPRECATES calling ipython with multiple scripts
2069 ("ipython a.py b.py c.py")
2073 ("ipython a.py b.py c.py")
2070
2074
2071 * iplib.py, hooks.py: Added configurable input prefilter,
2075 * iplib.py, hooks.py: Added configurable input prefilter,
2072 named 'input_prefilter'. See ext_rescapture.py for example
2076 named 'input_prefilter'. See ext_rescapture.py for example
2073 usage.
2077 usage.
2074
2078
2075 * ext_rescapture.py, Magic.py: Better system command output capture
2079 * ext_rescapture.py, Magic.py: Better system command output capture
2076 through 'var = !ls' (deprecates user-visible %sc). Same notation
2080 through 'var = !ls' (deprecates user-visible %sc). Same notation
2077 applies for magics, 'var = %alias' assigns alias list to var.
2081 applies for magics, 'var = %alias' assigns alias list to var.
2078
2082
2079 * ipapi.py: added meta() for accessing extension-usable data store.
2083 * ipapi.py: added meta() for accessing extension-usable data store.
2080
2084
2081 * iplib.py: added InteractiveShell.getapi(). New magics should be
2085 * iplib.py: added InteractiveShell.getapi(). New magics should be
2082 written doing self.getapi() instead of using the shell directly.
2086 written doing self.getapi() instead of using the shell directly.
2083
2087
2084 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2088 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2085 %store foo >> ~/myfoo.txt to store variables to files (in clean
2089 %store foo >> ~/myfoo.txt to store variables to files (in clean
2086 textual form, not a restorable pickle).
2090 textual form, not a restorable pickle).
2087
2091
2088 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2092 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2089
2093
2090 * usage.py, Magic.py: added %quickref
2094 * usage.py, Magic.py: added %quickref
2091
2095
2092 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2096 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2093
2097
2094 * GetoptErrors when invoking magics etc. with wrong args
2098 * GetoptErrors when invoking magics etc. with wrong args
2095 are now more helpful:
2099 are now more helpful:
2096 GetoptError: option -l not recognized (allowed: "qb" )
2100 GetoptError: option -l not recognized (allowed: "qb" )
2097
2101
2098 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2102 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2099
2103
2100 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2104 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2101 computationally intensive blocks don't appear to stall the demo.
2105 computationally intensive blocks don't appear to stall the demo.
2102
2106
2103 2006-01-24 Ville Vainio <vivainio@gmail.com>
2107 2006-01-24 Ville Vainio <vivainio@gmail.com>
2104
2108
2105 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2109 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2106 value to manipulate resulting history entry.
2110 value to manipulate resulting history entry.
2107
2111
2108 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2112 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2109 to instance methods of IPApi class, to make extending an embedded
2113 to instance methods of IPApi class, to make extending an embedded
2110 IPython feasible. See ext_rehashdir.py for example usage.
2114 IPython feasible. See ext_rehashdir.py for example usage.
2111
2115
2112 * Merged 1071-1076 from branches/0.7.1
2116 * Merged 1071-1076 from branches/0.7.1
2113
2117
2114
2118
2115 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2119 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2116
2120
2117 * tools/release (daystamp): Fix build tools to use the new
2121 * tools/release (daystamp): Fix build tools to use the new
2118 eggsetup.py script to build lightweight eggs.
2122 eggsetup.py script to build lightweight eggs.
2119
2123
2120 * Applied changesets 1062 and 1064 before 0.7.1 release.
2124 * Applied changesets 1062 and 1064 before 0.7.1 release.
2121
2125
2122 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2126 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2123 see the raw input history (without conversions like %ls ->
2127 see the raw input history (without conversions like %ls ->
2124 ipmagic("ls")). After a request from W. Stein, SAGE
2128 ipmagic("ls")). After a request from W. Stein, SAGE
2125 (http://modular.ucsd.edu/sage) developer. This information is
2129 (http://modular.ucsd.edu/sage) developer. This information is
2126 stored in the input_hist_raw attribute of the IPython instance, so
2130 stored in the input_hist_raw attribute of the IPython instance, so
2127 developers can access it if needed (it's an InputList instance).
2131 developers can access it if needed (it's an InputList instance).
2128
2132
2129 * Versionstring = 0.7.2.svn
2133 * Versionstring = 0.7.2.svn
2130
2134
2131 * eggsetup.py: A separate script for constructing eggs, creates
2135 * eggsetup.py: A separate script for constructing eggs, creates
2132 proper launch scripts even on Windows (an .exe file in
2136 proper launch scripts even on Windows (an .exe file in
2133 \python24\scripts).
2137 \python24\scripts).
2134
2138
2135 * ipapi.py: launch_new_instance, launch entry point needed for the
2139 * ipapi.py: launch_new_instance, launch entry point needed for the
2136 egg.
2140 egg.
2137
2141
2138 2006-01-23 Ville Vainio <vivainio@gmail.com>
2142 2006-01-23 Ville Vainio <vivainio@gmail.com>
2139
2143
2140 * Added %cpaste magic for pasting python code
2144 * Added %cpaste magic for pasting python code
2141
2145
2142 2006-01-22 Ville Vainio <vivainio@gmail.com>
2146 2006-01-22 Ville Vainio <vivainio@gmail.com>
2143
2147
2144 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2148 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2145
2149
2146 * Versionstring = 0.7.2.svn
2150 * Versionstring = 0.7.2.svn
2147
2151
2148 * eggsetup.py: A separate script for constructing eggs, creates
2152 * eggsetup.py: A separate script for constructing eggs, creates
2149 proper launch scripts even on Windows (an .exe file in
2153 proper launch scripts even on Windows (an .exe file in
2150 \python24\scripts).
2154 \python24\scripts).
2151
2155
2152 * ipapi.py: launch_new_instance, launch entry point needed for the
2156 * ipapi.py: launch_new_instance, launch entry point needed for the
2153 egg.
2157 egg.
2154
2158
2155 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2159 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2156
2160
2157 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2161 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2158 %pfile foo would print the file for foo even if it was a binary.
2162 %pfile foo would print the file for foo even if it was a binary.
2159 Now, extensions '.so' and '.dll' are skipped.
2163 Now, extensions '.so' and '.dll' are skipped.
2160
2164
2161 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2165 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2162 bug, where macros would fail in all threaded modes. I'm not 100%
2166 bug, where macros would fail in all threaded modes. I'm not 100%
2163 sure, so I'm going to put out an rc instead of making a release
2167 sure, so I'm going to put out an rc instead of making a release
2164 today, and wait for feedback for at least a few days.
2168 today, and wait for feedback for at least a few days.
2165
2169
2166 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2170 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2167 it...) the handling of pasting external code with autoindent on.
2171 it...) the handling of pasting external code with autoindent on.
2168 To get out of a multiline input, the rule will appear for most
2172 To get out of a multiline input, the rule will appear for most
2169 users unchanged: two blank lines or change the indent level
2173 users unchanged: two blank lines or change the indent level
2170 proposed by IPython. But there is a twist now: you can
2174 proposed by IPython. But there is a twist now: you can
2171 add/subtract only *one or two spaces*. If you add/subtract three
2175 add/subtract only *one or two spaces*. If you add/subtract three
2172 or more (unless you completely delete the line), IPython will
2176 or more (unless you completely delete the line), IPython will
2173 accept that line, and you'll need to enter a second one of pure
2177 accept that line, and you'll need to enter a second one of pure
2174 whitespace. I know it sounds complicated, but I can't find a
2178 whitespace. I know it sounds complicated, but I can't find a
2175 different solution that covers all the cases, with the right
2179 different solution that covers all the cases, with the right
2176 heuristics. Hopefully in actual use, nobody will really notice
2180 heuristics. Hopefully in actual use, nobody will really notice
2177 all these strange rules and things will 'just work'.
2181 all these strange rules and things will 'just work'.
2178
2182
2179 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2183 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2180
2184
2181 * IPython/iplib.py (interact): catch exceptions which can be
2185 * IPython/iplib.py (interact): catch exceptions which can be
2182 triggered asynchronously by signal handlers. Thanks to an
2186 triggered asynchronously by signal handlers. Thanks to an
2183 automatic crash report, submitted by Colin Kingsley
2187 automatic crash report, submitted by Colin Kingsley
2184 <tercel-AT-gentoo.org>.
2188 <tercel-AT-gentoo.org>.
2185
2189
2186 2006-01-20 Ville Vainio <vivainio@gmail.com>
2190 2006-01-20 Ville Vainio <vivainio@gmail.com>
2187
2191
2188 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2192 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2189 (%rehashdir, very useful, try it out) of how to extend ipython
2193 (%rehashdir, very useful, try it out) of how to extend ipython
2190 with new magics. Also added Extensions dir to pythonpath to make
2194 with new magics. Also added Extensions dir to pythonpath to make
2191 importing extensions easy.
2195 importing extensions easy.
2192
2196
2193 * %store now complains when trying to store interactively declared
2197 * %store now complains when trying to store interactively declared
2194 classes / instances of those classes.
2198 classes / instances of those classes.
2195
2199
2196 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2200 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2197 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2201 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2198 if they exist, and ipy_user_conf.py with some defaults is created for
2202 if they exist, and ipy_user_conf.py with some defaults is created for
2199 the user.
2203 the user.
2200
2204
2201 * Startup rehashing done by the config file, not InterpreterExec.
2205 * Startup rehashing done by the config file, not InterpreterExec.
2202 This means system commands are available even without selecting the
2206 This means system commands are available even without selecting the
2203 pysh profile. It's the sensible default after all.
2207 pysh profile. It's the sensible default after all.
2204
2208
2205 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2209 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2206
2210
2207 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2211 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2208 multiline code with autoindent on working. But I am really not
2212 multiline code with autoindent on working. But I am really not
2209 sure, so this needs more testing. Will commit a debug-enabled
2213 sure, so this needs more testing. Will commit a debug-enabled
2210 version for now, while I test it some more, so that Ville and
2214 version for now, while I test it some more, so that Ville and
2211 others may also catch any problems. Also made
2215 others may also catch any problems. Also made
2212 self.indent_current_str() a method, to ensure that there's no
2216 self.indent_current_str() a method, to ensure that there's no
2213 chance of the indent space count and the corresponding string
2217 chance of the indent space count and the corresponding string
2214 falling out of sync. All code needing the string should just call
2218 falling out of sync. All code needing the string should just call
2215 the method.
2219 the method.
2216
2220
2217 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2221 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2218
2222
2219 * IPython/Magic.py (magic_edit): fix check for when users don't
2223 * IPython/Magic.py (magic_edit): fix check for when users don't
2220 save their output files, the try/except was in the wrong section.
2224 save their output files, the try/except was in the wrong section.
2221
2225
2222 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2226 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2223
2227
2224 * IPython/Magic.py (magic_run): fix __file__ global missing from
2228 * IPython/Magic.py (magic_run): fix __file__ global missing from
2225 script's namespace when executed via %run. After a report by
2229 script's namespace when executed via %run. After a report by
2226 Vivian.
2230 Vivian.
2227
2231
2228 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2232 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2229 when using python 2.4. The parent constructor changed in 2.4, and
2233 when using python 2.4. The parent constructor changed in 2.4, and
2230 we need to track it directly (we can't call it, as it messes up
2234 we need to track it directly (we can't call it, as it messes up
2231 readline and tab-completion inside our pdb would stop working).
2235 readline and tab-completion inside our pdb would stop working).
2232 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2236 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2233
2237
2234 2006-01-16 Ville Vainio <vivainio@gmail.com>
2238 2006-01-16 Ville Vainio <vivainio@gmail.com>
2235
2239
2236 * Ipython/magic.py: Reverted back to old %edit functionality
2240 * Ipython/magic.py: Reverted back to old %edit functionality
2237 that returns file contents on exit.
2241 that returns file contents on exit.
2238
2242
2239 * IPython/path.py: Added Jason Orendorff's "path" module to
2243 * IPython/path.py: Added Jason Orendorff's "path" module to
2240 IPython tree, http://www.jorendorff.com/articles/python/path/.
2244 IPython tree, http://www.jorendorff.com/articles/python/path/.
2241 You can get path objects conveniently through %sc, and !!, e.g.:
2245 You can get path objects conveniently through %sc, and !!, e.g.:
2242 sc files=ls
2246 sc files=ls
2243 for p in files.paths: # or files.p
2247 for p in files.paths: # or files.p
2244 print p,p.mtime
2248 print p,p.mtime
2245
2249
2246 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2250 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2247 now work again without considering the exclusion regexp -
2251 now work again without considering the exclusion regexp -
2248 hence, things like ',foo my/path' turn to 'foo("my/path")'
2252 hence, things like ',foo my/path' turn to 'foo("my/path")'
2249 instead of syntax error.
2253 instead of syntax error.
2250
2254
2251
2255
2252 2006-01-14 Ville Vainio <vivainio@gmail.com>
2256 2006-01-14 Ville Vainio <vivainio@gmail.com>
2253
2257
2254 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2258 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2255 ipapi decorators for python 2.4 users, options() provides access to rc
2259 ipapi decorators for python 2.4 users, options() provides access to rc
2256 data.
2260 data.
2257
2261
2258 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2262 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2259 as path separators (even on Linux ;-). Space character after
2263 as path separators (even on Linux ;-). Space character after
2260 backslash (as yielded by tab completer) is still space;
2264 backslash (as yielded by tab completer) is still space;
2261 "%cd long\ name" works as expected.
2265 "%cd long\ name" works as expected.
2262
2266
2263 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2267 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2264 as "chain of command", with priority. API stays the same,
2268 as "chain of command", with priority. API stays the same,
2265 TryNext exception raised by a hook function signals that
2269 TryNext exception raised by a hook function signals that
2266 current hook failed and next hook should try handling it, as
2270 current hook failed and next hook should try handling it, as
2267 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2271 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2268 requested configurable display hook, which is now implemented.
2272 requested configurable display hook, which is now implemented.
2269
2273
2270 2006-01-13 Ville Vainio <vivainio@gmail.com>
2274 2006-01-13 Ville Vainio <vivainio@gmail.com>
2271
2275
2272 * IPython/platutils*.py: platform specific utility functions,
2276 * IPython/platutils*.py: platform specific utility functions,
2273 so far only set_term_title is implemented (change terminal
2277 so far only set_term_title is implemented (change terminal
2274 label in windowing systems). %cd now changes the title to
2278 label in windowing systems). %cd now changes the title to
2275 current dir.
2279 current dir.
2276
2280
2277 * IPython/Release.py: Added myself to "authors" list,
2281 * IPython/Release.py: Added myself to "authors" list,
2278 had to create new files.
2282 had to create new files.
2279
2283
2280 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2284 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2281 shell escape; not a known bug but had potential to be one in the
2285 shell escape; not a known bug but had potential to be one in the
2282 future.
2286 future.
2283
2287
2284 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2288 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2285 extension API for IPython! See the module for usage example. Fix
2289 extension API for IPython! See the module for usage example. Fix
2286 OInspect for docstring-less magic functions.
2290 OInspect for docstring-less magic functions.
2287
2291
2288
2292
2289 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2293 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2290
2294
2291 * IPython/iplib.py (raw_input): temporarily deactivate all
2295 * IPython/iplib.py (raw_input): temporarily deactivate all
2292 attempts at allowing pasting of code with autoindent on. It
2296 attempts at allowing pasting of code with autoindent on. It
2293 introduced bugs (reported by Prabhu) and I can't seem to find a
2297 introduced bugs (reported by Prabhu) and I can't seem to find a
2294 robust combination which works in all cases. Will have to revisit
2298 robust combination which works in all cases. Will have to revisit
2295 later.
2299 later.
2296
2300
2297 * IPython/genutils.py: remove isspace() function. We've dropped
2301 * IPython/genutils.py: remove isspace() function. We've dropped
2298 2.2 compatibility, so it's OK to use the string method.
2302 2.2 compatibility, so it's OK to use the string method.
2299
2303
2300 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2304 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2301
2305
2302 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2306 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2303 matching what NOT to autocall on, to include all python binary
2307 matching what NOT to autocall on, to include all python binary
2304 operators (including things like 'and', 'or', 'is' and 'in').
2308 operators (including things like 'and', 'or', 'is' and 'in').
2305 Prompted by a bug report on 'foo & bar', but I realized we had
2309 Prompted by a bug report on 'foo & bar', but I realized we had
2306 many more potential bug cases with other operators. The regexp is
2310 many more potential bug cases with other operators. The regexp is
2307 self.re_exclude_auto, it's fairly commented.
2311 self.re_exclude_auto, it's fairly commented.
2308
2312
2309 2006-01-12 Ville Vainio <vivainio@gmail.com>
2313 2006-01-12 Ville Vainio <vivainio@gmail.com>
2310
2314
2311 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2315 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2312 Prettified and hardened string/backslash quoting with ipsystem(),
2316 Prettified and hardened string/backslash quoting with ipsystem(),
2313 ipalias() and ipmagic(). Now even \ characters are passed to
2317 ipalias() and ipmagic(). Now even \ characters are passed to
2314 %magics, !shell escapes and aliases exactly as they are in the
2318 %magics, !shell escapes and aliases exactly as they are in the
2315 ipython command line. Should improve backslash experience,
2319 ipython command line. Should improve backslash experience,
2316 particularly in Windows (path delimiter for some commands that
2320 particularly in Windows (path delimiter for some commands that
2317 won't understand '/'), but Unix benefits as well (regexps). %cd
2321 won't understand '/'), but Unix benefits as well (regexps). %cd
2318 magic still doesn't support backslash path delimiters, though. Also
2322 magic still doesn't support backslash path delimiters, though. Also
2319 deleted all pretense of supporting multiline command strings in
2323 deleted all pretense of supporting multiline command strings in
2320 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2324 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2321
2325
2322 * doc/build_doc_instructions.txt added. Documentation on how to
2326 * doc/build_doc_instructions.txt added. Documentation on how to
2323 use doc/update_manual.py, added yesterday. Both files contributed
2327 use doc/update_manual.py, added yesterday. Both files contributed
2324 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2328 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2325 doc/*.sh for deprecation at a later date.
2329 doc/*.sh for deprecation at a later date.
2326
2330
2327 * /ipython.py Added ipython.py to root directory for
2331 * /ipython.py Added ipython.py to root directory for
2328 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2332 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2329 ipython.py) and development convenience (no need to keep doing
2333 ipython.py) and development convenience (no need to keep doing
2330 "setup.py install" between changes).
2334 "setup.py install" between changes).
2331
2335
2332 * Made ! and !! shell escapes work (again) in multiline expressions:
2336 * Made ! and !! shell escapes work (again) in multiline expressions:
2333 if 1:
2337 if 1:
2334 !ls
2338 !ls
2335 !!ls
2339 !!ls
2336
2340
2337 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2341 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2338
2342
2339 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2343 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2340 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2344 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2341 module in case-insensitive installation. Was causing crashes
2345 module in case-insensitive installation. Was causing crashes
2342 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2346 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2343
2347
2344 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2348 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2345 <marienz-AT-gentoo.org>, closes
2349 <marienz-AT-gentoo.org>, closes
2346 http://www.scipy.net/roundup/ipython/issue51.
2350 http://www.scipy.net/roundup/ipython/issue51.
2347
2351
2348 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2352 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2349
2353
2350 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2354 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2351 problem of excessive CPU usage under *nix and keyboard lag under
2355 problem of excessive CPU usage under *nix and keyboard lag under
2352 win32.
2356 win32.
2353
2357
2354 2006-01-10 *** Released version 0.7.0
2358 2006-01-10 *** Released version 0.7.0
2355
2359
2356 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2360 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2357
2361
2358 * IPython/Release.py (revision): tag version number to 0.7.0,
2362 * IPython/Release.py (revision): tag version number to 0.7.0,
2359 ready for release.
2363 ready for release.
2360
2364
2361 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2365 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2362 it informs the user of the name of the temp. file used. This can
2366 it informs the user of the name of the temp. file used. This can
2363 help if you decide later to reuse that same file, so you know
2367 help if you decide later to reuse that same file, so you know
2364 where to copy the info from.
2368 where to copy the info from.
2365
2369
2366 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2370 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2367
2371
2368 * setup_bdist_egg.py: little script to build an egg. Added
2372 * setup_bdist_egg.py: little script to build an egg. Added
2369 support in the release tools as well.
2373 support in the release tools as well.
2370
2374
2371 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2375 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2372
2376
2373 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2377 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2374 version selection (new -wxversion command line and ipythonrc
2378 version selection (new -wxversion command line and ipythonrc
2375 parameter). Patch contributed by Arnd Baecker
2379 parameter). Patch contributed by Arnd Baecker
2376 <arnd.baecker-AT-web.de>.
2380 <arnd.baecker-AT-web.de>.
2377
2381
2378 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2382 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2379 embedded instances, for variables defined at the interactive
2383 embedded instances, for variables defined at the interactive
2380 prompt of the embedded ipython. Reported by Arnd.
2384 prompt of the embedded ipython. Reported by Arnd.
2381
2385
2382 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2386 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2383 it can be used as a (stateful) toggle, or with a direct parameter.
2387 it can be used as a (stateful) toggle, or with a direct parameter.
2384
2388
2385 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2389 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2386 could be triggered in certain cases and cause the traceback
2390 could be triggered in certain cases and cause the traceback
2387 printer not to work.
2391 printer not to work.
2388
2392
2389 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2393 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2390
2394
2391 * IPython/iplib.py (_should_recompile): Small fix, closes
2395 * IPython/iplib.py (_should_recompile): Small fix, closes
2392 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2396 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2393
2397
2394 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2398 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2395
2399
2396 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2400 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2397 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2401 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2398 Moad for help with tracking it down.
2402 Moad for help with tracking it down.
2399
2403
2400 * IPython/iplib.py (handle_auto): fix autocall handling for
2404 * IPython/iplib.py (handle_auto): fix autocall handling for
2401 objects which support BOTH __getitem__ and __call__ (so that f [x]
2405 objects which support BOTH __getitem__ and __call__ (so that f [x]
2402 is left alone, instead of becoming f([x]) automatically).
2406 is left alone, instead of becoming f([x]) automatically).
2403
2407
2404 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2408 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2405 Ville's patch.
2409 Ville's patch.
2406
2410
2407 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2411 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2408
2412
2409 * IPython/iplib.py (handle_auto): changed autocall semantics to
2413 * IPython/iplib.py (handle_auto): changed autocall semantics to
2410 include 'smart' mode, where the autocall transformation is NOT
2414 include 'smart' mode, where the autocall transformation is NOT
2411 applied if there are no arguments on the line. This allows you to
2415 applied if there are no arguments on the line. This allows you to
2412 just type 'foo' if foo is a callable to see its internal form,
2416 just type 'foo' if foo is a callable to see its internal form,
2413 instead of having it called with no arguments (typically a
2417 instead of having it called with no arguments (typically a
2414 mistake). The old 'full' autocall still exists: for that, you
2418 mistake). The old 'full' autocall still exists: for that, you
2415 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2419 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2416
2420
2417 * IPython/completer.py (Completer.attr_matches): add
2421 * IPython/completer.py (Completer.attr_matches): add
2418 tab-completion support for Enthoughts' traits. After a report by
2422 tab-completion support for Enthoughts' traits. After a report by
2419 Arnd and a patch by Prabhu.
2423 Arnd and a patch by Prabhu.
2420
2424
2421 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2425 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2422
2426
2423 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2427 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2424 Schmolck's patch to fix inspect.getinnerframes().
2428 Schmolck's patch to fix inspect.getinnerframes().
2425
2429
2426 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2430 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2427 for embedded instances, regarding handling of namespaces and items
2431 for embedded instances, regarding handling of namespaces and items
2428 added to the __builtin__ one. Multiple embedded instances and
2432 added to the __builtin__ one. Multiple embedded instances and
2429 recursive embeddings should work better now (though I'm not sure
2433 recursive embeddings should work better now (though I'm not sure
2430 I've got all the corner cases fixed, that code is a bit of a brain
2434 I've got all the corner cases fixed, that code is a bit of a brain
2431 twister).
2435 twister).
2432
2436
2433 * IPython/Magic.py (magic_edit): added support to edit in-memory
2437 * IPython/Magic.py (magic_edit): added support to edit in-memory
2434 macros (automatically creates the necessary temp files). %edit
2438 macros (automatically creates the necessary temp files). %edit
2435 also doesn't return the file contents anymore, it's just noise.
2439 also doesn't return the file contents anymore, it's just noise.
2436
2440
2437 * IPython/completer.py (Completer.attr_matches): revert change to
2441 * IPython/completer.py (Completer.attr_matches): revert change to
2438 complete only on attributes listed in __all__. I realized it
2442 complete only on attributes listed in __all__. I realized it
2439 cripples the tab-completion system as a tool for exploring the
2443 cripples the tab-completion system as a tool for exploring the
2440 internals of unknown libraries (it renders any non-__all__
2444 internals of unknown libraries (it renders any non-__all__
2441 attribute off-limits). I got bit by this when trying to see
2445 attribute off-limits). I got bit by this when trying to see
2442 something inside the dis module.
2446 something inside the dis module.
2443
2447
2444 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2448 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2445
2449
2446 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2450 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2447 namespace for users and extension writers to hold data in. This
2451 namespace for users and extension writers to hold data in. This
2448 follows the discussion in
2452 follows the discussion in
2449 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2453 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2450
2454
2451 * IPython/completer.py (IPCompleter.complete): small patch to help
2455 * IPython/completer.py (IPCompleter.complete): small patch to help
2452 tab-completion under Emacs, after a suggestion by John Barnard
2456 tab-completion under Emacs, after a suggestion by John Barnard
2453 <barnarj-AT-ccf.org>.
2457 <barnarj-AT-ccf.org>.
2454
2458
2455 * IPython/Magic.py (Magic.extract_input_slices): added support for
2459 * IPython/Magic.py (Magic.extract_input_slices): added support for
2456 the slice notation in magics to use N-M to represent numbers N...M
2460 the slice notation in magics to use N-M to represent numbers N...M
2457 (closed endpoints). This is used by %macro and %save.
2461 (closed endpoints). This is used by %macro and %save.
2458
2462
2459 * IPython/completer.py (Completer.attr_matches): for modules which
2463 * IPython/completer.py (Completer.attr_matches): for modules which
2460 define __all__, complete only on those. After a patch by Jeffrey
2464 define __all__, complete only on those. After a patch by Jeffrey
2461 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2465 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2462 speed up this routine.
2466 speed up this routine.
2463
2467
2464 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2468 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2465 don't know if this is the end of it, but the behavior now is
2469 don't know if this is the end of it, but the behavior now is
2466 certainly much more correct. Note that coupled with macros,
2470 certainly much more correct. Note that coupled with macros,
2467 slightly surprising (at first) behavior may occur: a macro will in
2471 slightly surprising (at first) behavior may occur: a macro will in
2468 general expand to multiple lines of input, so upon exiting, the
2472 general expand to multiple lines of input, so upon exiting, the
2469 in/out counters will both be bumped by the corresponding amount
2473 in/out counters will both be bumped by the corresponding amount
2470 (as if the macro's contents had been typed interactively). Typing
2474 (as if the macro's contents had been typed interactively). Typing
2471 %hist will reveal the intermediate (silently processed) lines.
2475 %hist will reveal the intermediate (silently processed) lines.
2472
2476
2473 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2477 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2474 pickle to fail (%run was overwriting __main__ and not restoring
2478 pickle to fail (%run was overwriting __main__ and not restoring
2475 it, but pickle relies on __main__ to operate).
2479 it, but pickle relies on __main__ to operate).
2476
2480
2477 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2481 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2478 using properties, but forgot to make the main InteractiveShell
2482 using properties, but forgot to make the main InteractiveShell
2479 class a new-style class. Properties fail silently, and
2483 class a new-style class. Properties fail silently, and
2480 mysteriously, with old-style class (getters work, but
2484 mysteriously, with old-style class (getters work, but
2481 setters don't do anything).
2485 setters don't do anything).
2482
2486
2483 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2487 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2484
2488
2485 * IPython/Magic.py (magic_history): fix history reporting bug (I
2489 * IPython/Magic.py (magic_history): fix history reporting bug (I
2486 know some nasties are still there, I just can't seem to find a
2490 know some nasties are still there, I just can't seem to find a
2487 reproducible test case to track them down; the input history is
2491 reproducible test case to track them down; the input history is
2488 falling out of sync...)
2492 falling out of sync...)
2489
2493
2490 * IPython/iplib.py (handle_shell_escape): fix bug where both
2494 * IPython/iplib.py (handle_shell_escape): fix bug where both
2491 aliases and system accesses where broken for indented code (such
2495 aliases and system accesses where broken for indented code (such
2492 as loops).
2496 as loops).
2493
2497
2494 * IPython/genutils.py (shell): fix small but critical bug for
2498 * IPython/genutils.py (shell): fix small but critical bug for
2495 win32 system access.
2499 win32 system access.
2496
2500
2497 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2501 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2498
2502
2499 * IPython/iplib.py (showtraceback): remove use of the
2503 * IPython/iplib.py (showtraceback): remove use of the
2500 sys.last_{type/value/traceback} structures, which are non
2504 sys.last_{type/value/traceback} structures, which are non
2501 thread-safe.
2505 thread-safe.
2502 (_prefilter): change control flow to ensure that we NEVER
2506 (_prefilter): change control flow to ensure that we NEVER
2503 introspect objects when autocall is off. This will guarantee that
2507 introspect objects when autocall is off. This will guarantee that
2504 having an input line of the form 'x.y', where access to attribute
2508 having an input line of the form 'x.y', where access to attribute
2505 'y' has side effects, doesn't trigger the side effect TWICE. It
2509 'y' has side effects, doesn't trigger the side effect TWICE. It
2506 is important to note that, with autocall on, these side effects
2510 is important to note that, with autocall on, these side effects
2507 can still happen.
2511 can still happen.
2508 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2512 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2509 trio. IPython offers these three kinds of special calls which are
2513 trio. IPython offers these three kinds of special calls which are
2510 not python code, and it's a good thing to have their call method
2514 not python code, and it's a good thing to have their call method
2511 be accessible as pure python functions (not just special syntax at
2515 be accessible as pure python functions (not just special syntax at
2512 the command line). It gives us a better internal implementation
2516 the command line). It gives us a better internal implementation
2513 structure, as well as exposing these for user scripting more
2517 structure, as well as exposing these for user scripting more
2514 cleanly.
2518 cleanly.
2515
2519
2516 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2520 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2517 file. Now that they'll be more likely to be used with the
2521 file. Now that they'll be more likely to be used with the
2518 persistance system (%store), I want to make sure their module path
2522 persistance system (%store), I want to make sure their module path
2519 doesn't change in the future, so that we don't break things for
2523 doesn't change in the future, so that we don't break things for
2520 users' persisted data.
2524 users' persisted data.
2521
2525
2522 * IPython/iplib.py (autoindent_update): move indentation
2526 * IPython/iplib.py (autoindent_update): move indentation
2523 management into the _text_ processing loop, not the keyboard
2527 management into the _text_ processing loop, not the keyboard
2524 interactive one. This is necessary to correctly process non-typed
2528 interactive one. This is necessary to correctly process non-typed
2525 multiline input (such as macros).
2529 multiline input (such as macros).
2526
2530
2527 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2531 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2528 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2532 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2529 which was producing problems in the resulting manual.
2533 which was producing problems in the resulting manual.
2530 (magic_whos): improve reporting of instances (show their class,
2534 (magic_whos): improve reporting of instances (show their class,
2531 instead of simply printing 'instance' which isn't terribly
2535 instead of simply printing 'instance' which isn't terribly
2532 informative).
2536 informative).
2533
2537
2534 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2538 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2535 (minor mods) to support network shares under win32.
2539 (minor mods) to support network shares under win32.
2536
2540
2537 * IPython/winconsole.py (get_console_size): add new winconsole
2541 * IPython/winconsole.py (get_console_size): add new winconsole
2538 module and fixes to page_dumb() to improve its behavior under
2542 module and fixes to page_dumb() to improve its behavior under
2539 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2543 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2540
2544
2541 * IPython/Magic.py (Macro): simplified Macro class to just
2545 * IPython/Magic.py (Macro): simplified Macro class to just
2542 subclass list. We've had only 2.2 compatibility for a very long
2546 subclass list. We've had only 2.2 compatibility for a very long
2543 time, yet I was still avoiding subclassing the builtin types. No
2547 time, yet I was still avoiding subclassing the builtin types. No
2544 more (I'm also starting to use properties, though I won't shift to
2548 more (I'm also starting to use properties, though I won't shift to
2545 2.3-specific features quite yet).
2549 2.3-specific features quite yet).
2546 (magic_store): added Ville's patch for lightweight variable
2550 (magic_store): added Ville's patch for lightweight variable
2547 persistence, after a request on the user list by Matt Wilkie
2551 persistence, after a request on the user list by Matt Wilkie
2548 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2552 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2549 details.
2553 details.
2550
2554
2551 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2555 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2552 changed the default logfile name from 'ipython.log' to
2556 changed the default logfile name from 'ipython.log' to
2553 'ipython_log.py'. These logs are real python files, and now that
2557 'ipython_log.py'. These logs are real python files, and now that
2554 we have much better multiline support, people are more likely to
2558 we have much better multiline support, people are more likely to
2555 want to use them as such. Might as well name them correctly.
2559 want to use them as such. Might as well name them correctly.
2556
2560
2557 * IPython/Magic.py: substantial cleanup. While we can't stop
2561 * IPython/Magic.py: substantial cleanup. While we can't stop
2558 using magics as mixins, due to the existing customizations 'out
2562 using magics as mixins, due to the existing customizations 'out
2559 there' which rely on the mixin naming conventions, at least I
2563 there' which rely on the mixin naming conventions, at least I
2560 cleaned out all cross-class name usage. So once we are OK with
2564 cleaned out all cross-class name usage. So once we are OK with
2561 breaking compatibility, the two systems can be separated.
2565 breaking compatibility, the two systems can be separated.
2562
2566
2563 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2567 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2564 anymore, and the class is a fair bit less hideous as well. New
2568 anymore, and the class is a fair bit less hideous as well. New
2565 features were also introduced: timestamping of input, and logging
2569 features were also introduced: timestamping of input, and logging
2566 of output results. These are user-visible with the -t and -o
2570 of output results. These are user-visible with the -t and -o
2567 options to %logstart. Closes
2571 options to %logstart. Closes
2568 http://www.scipy.net/roundup/ipython/issue11 and a request by
2572 http://www.scipy.net/roundup/ipython/issue11 and a request by
2569 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2573 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2570
2574
2571 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2575 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2572
2576
2573 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2577 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2574 better handle backslashes in paths. See the thread 'More Windows
2578 better handle backslashes in paths. See the thread 'More Windows
2575 questions part 2 - \/ characters revisited' on the iypthon user
2579 questions part 2 - \/ characters revisited' on the iypthon user
2576 list:
2580 list:
2577 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2581 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2578
2582
2579 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2583 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2580
2584
2581 (InteractiveShell.__init__): change threaded shells to not use the
2585 (InteractiveShell.__init__): change threaded shells to not use the
2582 ipython crash handler. This was causing more problems than not,
2586 ipython crash handler. This was causing more problems than not,
2583 as exceptions in the main thread (GUI code, typically) would
2587 as exceptions in the main thread (GUI code, typically) would
2584 always show up as a 'crash', when they really weren't.
2588 always show up as a 'crash', when they really weren't.
2585
2589
2586 The colors and exception mode commands (%colors/%xmode) have been
2590 The colors and exception mode commands (%colors/%xmode) have been
2587 synchronized to also take this into account, so users can get
2591 synchronized to also take this into account, so users can get
2588 verbose exceptions for their threaded code as well. I also added
2592 verbose exceptions for their threaded code as well. I also added
2589 support for activating pdb inside this exception handler as well,
2593 support for activating pdb inside this exception handler as well,
2590 so now GUI authors can use IPython's enhanced pdb at runtime.
2594 so now GUI authors can use IPython's enhanced pdb at runtime.
2591
2595
2592 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2596 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2593 true by default, and add it to the shipped ipythonrc file. Since
2597 true by default, and add it to the shipped ipythonrc file. Since
2594 this asks the user before proceeding, I think it's OK to make it
2598 this asks the user before proceeding, I think it's OK to make it
2595 true by default.
2599 true by default.
2596
2600
2597 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2601 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2598 of the previous special-casing of input in the eval loop. I think
2602 of the previous special-casing of input in the eval loop. I think
2599 this is cleaner, as they really are commands and shouldn't have
2603 this is cleaner, as they really are commands and shouldn't have
2600 a special role in the middle of the core code.
2604 a special role in the middle of the core code.
2601
2605
2602 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2606 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2603
2607
2604 * IPython/iplib.py (edit_syntax_error): added support for
2608 * IPython/iplib.py (edit_syntax_error): added support for
2605 automatically reopening the editor if the file had a syntax error
2609 automatically reopening the editor if the file had a syntax error
2606 in it. Thanks to scottt who provided the patch at:
2610 in it. Thanks to scottt who provided the patch at:
2607 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2611 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2608 version committed).
2612 version committed).
2609
2613
2610 * IPython/iplib.py (handle_normal): add suport for multi-line
2614 * IPython/iplib.py (handle_normal): add suport for multi-line
2611 input with emtpy lines. This fixes
2615 input with emtpy lines. This fixes
2612 http://www.scipy.net/roundup/ipython/issue43 and a similar
2616 http://www.scipy.net/roundup/ipython/issue43 and a similar
2613 discussion on the user list.
2617 discussion on the user list.
2614
2618
2615 WARNING: a behavior change is necessarily introduced to support
2619 WARNING: a behavior change is necessarily introduced to support
2616 blank lines: now a single blank line with whitespace does NOT
2620 blank lines: now a single blank line with whitespace does NOT
2617 break the input loop, which means that when autoindent is on, by
2621 break the input loop, which means that when autoindent is on, by
2618 default hitting return on the next (indented) line does NOT exit.
2622 default hitting return on the next (indented) line does NOT exit.
2619
2623
2620 Instead, to exit a multiline input you can either have:
2624 Instead, to exit a multiline input you can either have:
2621
2625
2622 - TWO whitespace lines (just hit return again), or
2626 - TWO whitespace lines (just hit return again), or
2623 - a single whitespace line of a different length than provided
2627 - a single whitespace line of a different length than provided
2624 by the autoindent (add or remove a space).
2628 by the autoindent (add or remove a space).
2625
2629
2626 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2630 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2627 module to better organize all readline-related functionality.
2631 module to better organize all readline-related functionality.
2628 I've deleted FlexCompleter and put all completion clases here.
2632 I've deleted FlexCompleter and put all completion clases here.
2629
2633
2630 * IPython/iplib.py (raw_input): improve indentation management.
2634 * IPython/iplib.py (raw_input): improve indentation management.
2631 It is now possible to paste indented code with autoindent on, and
2635 It is now possible to paste indented code with autoindent on, and
2632 the code is interpreted correctly (though it still looks bad on
2636 the code is interpreted correctly (though it still looks bad on
2633 screen, due to the line-oriented nature of ipython).
2637 screen, due to the line-oriented nature of ipython).
2634 (MagicCompleter.complete): change behavior so that a TAB key on an
2638 (MagicCompleter.complete): change behavior so that a TAB key on an
2635 otherwise empty line actually inserts a tab, instead of completing
2639 otherwise empty line actually inserts a tab, instead of completing
2636 on the entire global namespace. This makes it easier to use the
2640 on the entire global namespace. This makes it easier to use the
2637 TAB key for indentation. After a request by Hans Meine
2641 TAB key for indentation. After a request by Hans Meine
2638 <hans_meine-AT-gmx.net>
2642 <hans_meine-AT-gmx.net>
2639 (_prefilter): add support so that typing plain 'exit' or 'quit'
2643 (_prefilter): add support so that typing plain 'exit' or 'quit'
2640 does a sensible thing. Originally I tried to deviate as little as
2644 does a sensible thing. Originally I tried to deviate as little as
2641 possible from the default python behavior, but even that one may
2645 possible from the default python behavior, but even that one may
2642 change in this direction (thread on python-dev to that effect).
2646 change in this direction (thread on python-dev to that effect).
2643 Regardless, ipython should do the right thing even if CPython's
2647 Regardless, ipython should do the right thing even if CPython's
2644 '>>>' prompt doesn't.
2648 '>>>' prompt doesn't.
2645 (InteractiveShell): removed subclassing code.InteractiveConsole
2649 (InteractiveShell): removed subclassing code.InteractiveConsole
2646 class. By now we'd overridden just about all of its methods: I've
2650 class. By now we'd overridden just about all of its methods: I've
2647 copied the remaining two over, and now ipython is a standalone
2651 copied the remaining two over, and now ipython is a standalone
2648 class. This will provide a clearer picture for the chainsaw
2652 class. This will provide a clearer picture for the chainsaw
2649 branch refactoring.
2653 branch refactoring.
2650
2654
2651 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2655 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2652
2656
2653 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2657 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2654 failures for objects which break when dir() is called on them.
2658 failures for objects which break when dir() is called on them.
2655
2659
2656 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2660 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2657 distinct local and global namespaces in the completer API. This
2661 distinct local and global namespaces in the completer API. This
2658 change allows us to properly handle completion with distinct
2662 change allows us to properly handle completion with distinct
2659 scopes, including in embedded instances (this had never really
2663 scopes, including in embedded instances (this had never really
2660 worked correctly).
2664 worked correctly).
2661
2665
2662 Note: this introduces a change in the constructor for
2666 Note: this introduces a change in the constructor for
2663 MagicCompleter, as a new global_namespace parameter is now the
2667 MagicCompleter, as a new global_namespace parameter is now the
2664 second argument (the others were bumped one position).
2668 second argument (the others were bumped one position).
2665
2669
2666 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2670 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2667
2671
2668 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2672 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2669 embedded instances (which can be done now thanks to Vivian's
2673 embedded instances (which can be done now thanks to Vivian's
2670 frame-handling fixes for pdb).
2674 frame-handling fixes for pdb).
2671 (InteractiveShell.__init__): Fix namespace handling problem in
2675 (InteractiveShell.__init__): Fix namespace handling problem in
2672 embedded instances. We were overwriting __main__ unconditionally,
2676 embedded instances. We were overwriting __main__ unconditionally,
2673 and this should only be done for 'full' (non-embedded) IPython;
2677 and this should only be done for 'full' (non-embedded) IPython;
2674 embedded instances must respect the caller's __main__. Thanks to
2678 embedded instances must respect the caller's __main__. Thanks to
2675 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2679 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2676
2680
2677 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2681 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2678
2682
2679 * setup.py: added download_url to setup(). This registers the
2683 * setup.py: added download_url to setup(). This registers the
2680 download address at PyPI, which is not only useful to humans
2684 download address at PyPI, which is not only useful to humans
2681 browsing the site, but is also picked up by setuptools (the Eggs
2685 browsing the site, but is also picked up by setuptools (the Eggs
2682 machinery). Thanks to Ville and R. Kern for the info/discussion
2686 machinery). Thanks to Ville and R. Kern for the info/discussion
2683 on this.
2687 on this.
2684
2688
2685 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2689 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2686
2690
2687 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2691 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2688 This brings a lot of nice functionality to the pdb mode, which now
2692 This brings a lot of nice functionality to the pdb mode, which now
2689 has tab-completion, syntax highlighting, and better stack handling
2693 has tab-completion, syntax highlighting, and better stack handling
2690 than before. Many thanks to Vivian De Smedt
2694 than before. Many thanks to Vivian De Smedt
2691 <vivian-AT-vdesmedt.com> for the original patches.
2695 <vivian-AT-vdesmedt.com> for the original patches.
2692
2696
2693 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2697 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2694
2698
2695 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2699 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2696 sequence to consistently accept the banner argument. The
2700 sequence to consistently accept the banner argument. The
2697 inconsistency was tripping SAGE, thanks to Gary Zablackis
2701 inconsistency was tripping SAGE, thanks to Gary Zablackis
2698 <gzabl-AT-yahoo.com> for the report.
2702 <gzabl-AT-yahoo.com> for the report.
2699
2703
2700 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2704 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2701
2705
2702 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2706 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2703 Fix bug where a naked 'alias' call in the ipythonrc file would
2707 Fix bug where a naked 'alias' call in the ipythonrc file would
2704 cause a crash. Bug reported by Jorgen Stenarson.
2708 cause a crash. Bug reported by Jorgen Stenarson.
2705
2709
2706 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2710 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2707
2711
2708 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2712 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2709 startup time.
2713 startup time.
2710
2714
2711 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2715 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2712 instances had introduced a bug with globals in normal code. Now
2716 instances had introduced a bug with globals in normal code. Now
2713 it's working in all cases.
2717 it's working in all cases.
2714
2718
2715 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2719 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2716 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2720 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2717 has been introduced to set the default case sensitivity of the
2721 has been introduced to set the default case sensitivity of the
2718 searches. Users can still select either mode at runtime on a
2722 searches. Users can still select either mode at runtime on a
2719 per-search basis.
2723 per-search basis.
2720
2724
2721 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2725 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2722
2726
2723 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2727 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2724 attributes in wildcard searches for subclasses. Modified version
2728 attributes in wildcard searches for subclasses. Modified version
2725 of a patch by Jorgen.
2729 of a patch by Jorgen.
2726
2730
2727 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2731 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2728
2732
2729 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2733 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2730 embedded instances. I added a user_global_ns attribute to the
2734 embedded instances. I added a user_global_ns attribute to the
2731 InteractiveShell class to handle this.
2735 InteractiveShell class to handle this.
2732
2736
2733 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2737 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2734
2738
2735 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2739 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2736 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2740 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2737 (reported under win32, but may happen also in other platforms).
2741 (reported under win32, but may happen also in other platforms).
2738 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2742 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2739
2743
2740 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2744 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2741
2745
2742 * IPython/Magic.py (magic_psearch): new support for wildcard
2746 * IPython/Magic.py (magic_psearch): new support for wildcard
2743 patterns. Now, typing ?a*b will list all names which begin with a
2747 patterns. Now, typing ?a*b will list all names which begin with a
2744 and end in b, for example. The %psearch magic has full
2748 and end in b, for example. The %psearch magic has full
2745 docstrings. Many thanks to JΓΆrgen Stenarson
2749 docstrings. Many thanks to JΓΆrgen Stenarson
2746 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2750 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2747 implementing this functionality.
2751 implementing this functionality.
2748
2752
2749 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2753 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2750
2754
2751 * Manual: fixed long-standing annoyance of double-dashes (as in
2755 * Manual: fixed long-standing annoyance of double-dashes (as in
2752 --prefix=~, for example) being stripped in the HTML version. This
2756 --prefix=~, for example) being stripped in the HTML version. This
2753 is a latex2html bug, but a workaround was provided. Many thanks
2757 is a latex2html bug, but a workaround was provided. Many thanks
2754 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2758 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2755 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2759 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2756 rolling. This seemingly small issue had tripped a number of users
2760 rolling. This seemingly small issue had tripped a number of users
2757 when first installing, so I'm glad to see it gone.
2761 when first installing, so I'm glad to see it gone.
2758
2762
2759 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2763 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2760
2764
2761 * IPython/Extensions/numeric_formats.py: fix missing import,
2765 * IPython/Extensions/numeric_formats.py: fix missing import,
2762 reported by Stephen Walton.
2766 reported by Stephen Walton.
2763
2767
2764 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2768 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2765
2769
2766 * IPython/demo.py: finish demo module, fully documented now.
2770 * IPython/demo.py: finish demo module, fully documented now.
2767
2771
2768 * IPython/genutils.py (file_read): simple little utility to read a
2772 * IPython/genutils.py (file_read): simple little utility to read a
2769 file and ensure it's closed afterwards.
2773 file and ensure it's closed afterwards.
2770
2774
2771 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2775 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2772
2776
2773 * IPython/demo.py (Demo.__init__): added support for individually
2777 * IPython/demo.py (Demo.__init__): added support for individually
2774 tagging blocks for automatic execution.
2778 tagging blocks for automatic execution.
2775
2779
2776 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2780 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2777 syntax-highlighted python sources, requested by John.
2781 syntax-highlighted python sources, requested by John.
2778
2782
2779 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2783 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2780
2784
2781 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2785 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2782 finishing.
2786 finishing.
2783
2787
2784 * IPython/genutils.py (shlex_split): moved from Magic to here,
2788 * IPython/genutils.py (shlex_split): moved from Magic to here,
2785 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2789 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2786
2790
2787 * IPython/demo.py (Demo.__init__): added support for silent
2791 * IPython/demo.py (Demo.__init__): added support for silent
2788 blocks, improved marks as regexps, docstrings written.
2792 blocks, improved marks as regexps, docstrings written.
2789 (Demo.__init__): better docstring, added support for sys.argv.
2793 (Demo.__init__): better docstring, added support for sys.argv.
2790
2794
2791 * IPython/genutils.py (marquee): little utility used by the demo
2795 * IPython/genutils.py (marquee): little utility used by the demo
2792 code, handy in general.
2796 code, handy in general.
2793
2797
2794 * IPython/demo.py (Demo.__init__): new class for interactive
2798 * IPython/demo.py (Demo.__init__): new class for interactive
2795 demos. Not documented yet, I just wrote it in a hurry for
2799 demos. Not documented yet, I just wrote it in a hurry for
2796 scipy'05. Will docstring later.
2800 scipy'05. Will docstring later.
2797
2801
2798 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2802 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2799
2803
2800 * IPython/Shell.py (sigint_handler): Drastic simplification which
2804 * IPython/Shell.py (sigint_handler): Drastic simplification which
2801 also seems to make Ctrl-C work correctly across threads! This is
2805 also seems to make Ctrl-C work correctly across threads! This is
2802 so simple, that I can't beleive I'd missed it before. Needs more
2806 so simple, that I can't beleive I'd missed it before. Needs more
2803 testing, though.
2807 testing, though.
2804 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2808 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2805 like this before...
2809 like this before...
2806
2810
2807 * IPython/genutils.py (get_home_dir): add protection against
2811 * IPython/genutils.py (get_home_dir): add protection against
2808 non-dirs in win32 registry.
2812 non-dirs in win32 registry.
2809
2813
2810 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2814 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2811 bug where dict was mutated while iterating (pysh crash).
2815 bug where dict was mutated while iterating (pysh crash).
2812
2816
2813 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2817 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2814
2818
2815 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2819 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2816 spurious newlines added by this routine. After a report by
2820 spurious newlines added by this routine. After a report by
2817 F. Mantegazza.
2821 F. Mantegazza.
2818
2822
2819 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2823 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2820
2824
2821 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2825 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2822 calls. These were a leftover from the GTK 1.x days, and can cause
2826 calls. These were a leftover from the GTK 1.x days, and can cause
2823 problems in certain cases (after a report by John Hunter).
2827 problems in certain cases (after a report by John Hunter).
2824
2828
2825 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2829 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2826 os.getcwd() fails at init time. Thanks to patch from David Remahl
2830 os.getcwd() fails at init time. Thanks to patch from David Remahl
2827 <chmod007-AT-mac.com>.
2831 <chmod007-AT-mac.com>.
2828 (InteractiveShell.__init__): prevent certain special magics from
2832 (InteractiveShell.__init__): prevent certain special magics from
2829 being shadowed by aliases. Closes
2833 being shadowed by aliases. Closes
2830 http://www.scipy.net/roundup/ipython/issue41.
2834 http://www.scipy.net/roundup/ipython/issue41.
2831
2835
2832 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2836 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2833
2837
2834 * IPython/iplib.py (InteractiveShell.complete): Added new
2838 * IPython/iplib.py (InteractiveShell.complete): Added new
2835 top-level completion method to expose the completion mechanism
2839 top-level completion method to expose the completion mechanism
2836 beyond readline-based environments.
2840 beyond readline-based environments.
2837
2841
2838 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2842 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2839
2843
2840 * tools/ipsvnc (svnversion): fix svnversion capture.
2844 * tools/ipsvnc (svnversion): fix svnversion capture.
2841
2845
2842 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2846 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2843 attribute to self, which was missing. Before, it was set by a
2847 attribute to self, which was missing. Before, it was set by a
2844 routine which in certain cases wasn't being called, so the
2848 routine which in certain cases wasn't being called, so the
2845 instance could end up missing the attribute. This caused a crash.
2849 instance could end up missing the attribute. This caused a crash.
2846 Closes http://www.scipy.net/roundup/ipython/issue40.
2850 Closes http://www.scipy.net/roundup/ipython/issue40.
2847
2851
2848 2005-08-16 Fernando Perez <fperez@colorado.edu>
2852 2005-08-16 Fernando Perez <fperez@colorado.edu>
2849
2853
2850 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2854 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2851 contains non-string attribute. Closes
2855 contains non-string attribute. Closes
2852 http://www.scipy.net/roundup/ipython/issue38.
2856 http://www.scipy.net/roundup/ipython/issue38.
2853
2857
2854 2005-08-14 Fernando Perez <fperez@colorado.edu>
2858 2005-08-14 Fernando Perez <fperez@colorado.edu>
2855
2859
2856 * tools/ipsvnc: Minor improvements, to add changeset info.
2860 * tools/ipsvnc: Minor improvements, to add changeset info.
2857
2861
2858 2005-08-12 Fernando Perez <fperez@colorado.edu>
2862 2005-08-12 Fernando Perez <fperez@colorado.edu>
2859
2863
2860 * IPython/iplib.py (runsource): remove self.code_to_run_src
2864 * IPython/iplib.py (runsource): remove self.code_to_run_src
2861 attribute. I realized this is nothing more than
2865 attribute. I realized this is nothing more than
2862 '\n'.join(self.buffer), and having the same data in two different
2866 '\n'.join(self.buffer), and having the same data in two different
2863 places is just asking for synchronization bugs. This may impact
2867 places is just asking for synchronization bugs. This may impact
2864 people who have custom exception handlers, so I need to warn
2868 people who have custom exception handlers, so I need to warn
2865 ipython-dev about it (F. Mantegazza may use them).
2869 ipython-dev about it (F. Mantegazza may use them).
2866
2870
2867 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2871 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2868
2872
2869 * IPython/genutils.py: fix 2.2 compatibility (generators)
2873 * IPython/genutils.py: fix 2.2 compatibility (generators)
2870
2874
2871 2005-07-18 Fernando Perez <fperez@colorado.edu>
2875 2005-07-18 Fernando Perez <fperez@colorado.edu>
2872
2876
2873 * IPython/genutils.py (get_home_dir): fix to help users with
2877 * IPython/genutils.py (get_home_dir): fix to help users with
2874 invalid $HOME under win32.
2878 invalid $HOME under win32.
2875
2879
2876 2005-07-17 Fernando Perez <fperez@colorado.edu>
2880 2005-07-17 Fernando Perez <fperez@colorado.edu>
2877
2881
2878 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2882 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2879 some old hacks and clean up a bit other routines; code should be
2883 some old hacks and clean up a bit other routines; code should be
2880 simpler and a bit faster.
2884 simpler and a bit faster.
2881
2885
2882 * IPython/iplib.py (interact): removed some last-resort attempts
2886 * IPython/iplib.py (interact): removed some last-resort attempts
2883 to survive broken stdout/stderr. That code was only making it
2887 to survive broken stdout/stderr. That code was only making it
2884 harder to abstract out the i/o (necessary for gui integration),
2888 harder to abstract out the i/o (necessary for gui integration),
2885 and the crashes it could prevent were extremely rare in practice
2889 and the crashes it could prevent were extremely rare in practice
2886 (besides being fully user-induced in a pretty violent manner).
2890 (besides being fully user-induced in a pretty violent manner).
2887
2891
2888 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2892 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2889 Nothing major yet, but the code is simpler to read; this should
2893 Nothing major yet, but the code is simpler to read; this should
2890 make it easier to do more serious modifications in the future.
2894 make it easier to do more serious modifications in the future.
2891
2895
2892 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2896 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2893 which broke in .15 (thanks to a report by Ville).
2897 which broke in .15 (thanks to a report by Ville).
2894
2898
2895 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2899 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2896 be quite correct, I know next to nothing about unicode). This
2900 be quite correct, I know next to nothing about unicode). This
2897 will allow unicode strings to be used in prompts, amongst other
2901 will allow unicode strings to be used in prompts, amongst other
2898 cases. It also will prevent ipython from crashing when unicode
2902 cases. It also will prevent ipython from crashing when unicode
2899 shows up unexpectedly in many places. If ascii encoding fails, we
2903 shows up unexpectedly in many places. If ascii encoding fails, we
2900 assume utf_8. Currently the encoding is not a user-visible
2904 assume utf_8. Currently the encoding is not a user-visible
2901 setting, though it could be made so if there is demand for it.
2905 setting, though it could be made so if there is demand for it.
2902
2906
2903 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2907 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2904
2908
2905 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2909 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2906
2910
2907 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2911 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2908
2912
2909 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2913 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2910 code can work transparently for 2.2/2.3.
2914 code can work transparently for 2.2/2.3.
2911
2915
2912 2005-07-16 Fernando Perez <fperez@colorado.edu>
2916 2005-07-16 Fernando Perez <fperez@colorado.edu>
2913
2917
2914 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2918 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2915 out of the color scheme table used for coloring exception
2919 out of the color scheme table used for coloring exception
2916 tracebacks. This allows user code to add new schemes at runtime.
2920 tracebacks. This allows user code to add new schemes at runtime.
2917 This is a minimally modified version of the patch at
2921 This is a minimally modified version of the patch at
2918 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2922 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2919 for the contribution.
2923 for the contribution.
2920
2924
2921 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2925 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2922 slightly modified version of the patch in
2926 slightly modified version of the patch in
2923 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2927 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2924 to remove the previous try/except solution (which was costlier).
2928 to remove the previous try/except solution (which was costlier).
2925 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2929 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2926
2930
2927 2005-06-08 Fernando Perez <fperez@colorado.edu>
2931 2005-06-08 Fernando Perez <fperez@colorado.edu>
2928
2932
2929 * IPython/iplib.py (write/write_err): Add methods to abstract all
2933 * IPython/iplib.py (write/write_err): Add methods to abstract all
2930 I/O a bit more.
2934 I/O a bit more.
2931
2935
2932 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2936 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2933 warning, reported by Aric Hagberg, fix by JD Hunter.
2937 warning, reported by Aric Hagberg, fix by JD Hunter.
2934
2938
2935 2005-06-02 *** Released version 0.6.15
2939 2005-06-02 *** Released version 0.6.15
2936
2940
2937 2005-06-01 Fernando Perez <fperez@colorado.edu>
2941 2005-06-01 Fernando Perez <fperez@colorado.edu>
2938
2942
2939 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2943 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2940 tab-completion of filenames within open-quoted strings. Note that
2944 tab-completion of filenames within open-quoted strings. Note that
2941 this requires that in ~/.ipython/ipythonrc, users change the
2945 this requires that in ~/.ipython/ipythonrc, users change the
2942 readline delimiters configuration to read:
2946 readline delimiters configuration to read:
2943
2947
2944 readline_remove_delims -/~
2948 readline_remove_delims -/~
2945
2949
2946
2950
2947 2005-05-31 *** Released version 0.6.14
2951 2005-05-31 *** Released version 0.6.14
2948
2952
2949 2005-05-29 Fernando Perez <fperez@colorado.edu>
2953 2005-05-29 Fernando Perez <fperez@colorado.edu>
2950
2954
2951 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2955 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2952 with files not on the filesystem. Reported by Eliyahu Sandler
2956 with files not on the filesystem. Reported by Eliyahu Sandler
2953 <eli@gondolin.net>
2957 <eli@gondolin.net>
2954
2958
2955 2005-05-22 Fernando Perez <fperez@colorado.edu>
2959 2005-05-22 Fernando Perez <fperez@colorado.edu>
2956
2960
2957 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2961 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2958 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2962 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2959
2963
2960 2005-05-19 Fernando Perez <fperez@colorado.edu>
2964 2005-05-19 Fernando Perez <fperez@colorado.edu>
2961
2965
2962 * IPython/iplib.py (safe_execfile): close a file which could be
2966 * IPython/iplib.py (safe_execfile): close a file which could be
2963 left open (causing problems in win32, which locks open files).
2967 left open (causing problems in win32, which locks open files).
2964 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2968 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2965
2969
2966 2005-05-18 Fernando Perez <fperez@colorado.edu>
2970 2005-05-18 Fernando Perez <fperez@colorado.edu>
2967
2971
2968 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2972 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2969 keyword arguments correctly to safe_execfile().
2973 keyword arguments correctly to safe_execfile().
2970
2974
2971 2005-05-13 Fernando Perez <fperez@colorado.edu>
2975 2005-05-13 Fernando Perez <fperez@colorado.edu>
2972
2976
2973 * ipython.1: Added info about Qt to manpage, and threads warning
2977 * ipython.1: Added info about Qt to manpage, and threads warning
2974 to usage page (invoked with --help).
2978 to usage page (invoked with --help).
2975
2979
2976 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2980 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2977 new matcher (it goes at the end of the priority list) to do
2981 new matcher (it goes at the end of the priority list) to do
2978 tab-completion on named function arguments. Submitted by George
2982 tab-completion on named function arguments. Submitted by George
2979 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2983 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2980 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2984 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2981 for more details.
2985 for more details.
2982
2986
2983 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2987 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2984 SystemExit exceptions in the script being run. Thanks to a report
2988 SystemExit exceptions in the script being run. Thanks to a report
2985 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2989 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2986 producing very annoying behavior when running unit tests.
2990 producing very annoying behavior when running unit tests.
2987
2991
2988 2005-05-12 Fernando Perez <fperez@colorado.edu>
2992 2005-05-12 Fernando Perez <fperez@colorado.edu>
2989
2993
2990 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2994 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2991 which I'd broken (again) due to a changed regexp. In the process,
2995 which I'd broken (again) due to a changed regexp. In the process,
2992 added ';' as an escape to auto-quote the whole line without
2996 added ';' as an escape to auto-quote the whole line without
2993 splitting its arguments. Thanks to a report by Jerry McRae
2997 splitting its arguments. Thanks to a report by Jerry McRae
2994 <qrs0xyc02-AT-sneakemail.com>.
2998 <qrs0xyc02-AT-sneakemail.com>.
2995
2999
2996 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3000 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2997 possible crashes caused by a TokenError. Reported by Ed Schofield
3001 possible crashes caused by a TokenError. Reported by Ed Schofield
2998 <schofield-AT-ftw.at>.
3002 <schofield-AT-ftw.at>.
2999
3003
3000 2005-05-06 Fernando Perez <fperez@colorado.edu>
3004 2005-05-06 Fernando Perez <fperez@colorado.edu>
3001
3005
3002 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3006 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3003
3007
3004 2005-04-29 Fernando Perez <fperez@colorado.edu>
3008 2005-04-29 Fernando Perez <fperez@colorado.edu>
3005
3009
3006 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3010 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3007 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3011 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3008 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3012 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3009 which provides support for Qt interactive usage (similar to the
3013 which provides support for Qt interactive usage (similar to the
3010 existing one for WX and GTK). This had been often requested.
3014 existing one for WX and GTK). This had been often requested.
3011
3015
3012 2005-04-14 *** Released version 0.6.13
3016 2005-04-14 *** Released version 0.6.13
3013
3017
3014 2005-04-08 Fernando Perez <fperez@colorado.edu>
3018 2005-04-08 Fernando Perez <fperez@colorado.edu>
3015
3019
3016 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3020 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3017 from _ofind, which gets called on almost every input line. Now,
3021 from _ofind, which gets called on almost every input line. Now,
3018 we only try to get docstrings if they are actually going to be
3022 we only try to get docstrings if they are actually going to be
3019 used (the overhead of fetching unnecessary docstrings can be
3023 used (the overhead of fetching unnecessary docstrings can be
3020 noticeable for certain objects, such as Pyro proxies).
3024 noticeable for certain objects, such as Pyro proxies).
3021
3025
3022 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3026 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3023 for completers. For some reason I had been passing them the state
3027 for completers. For some reason I had been passing them the state
3024 variable, which completers never actually need, and was in
3028 variable, which completers never actually need, and was in
3025 conflict with the rlcompleter API. Custom completers ONLY need to
3029 conflict with the rlcompleter API. Custom completers ONLY need to
3026 take the text parameter.
3030 take the text parameter.
3027
3031
3028 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3032 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3029 work correctly in pysh. I've also moved all the logic which used
3033 work correctly in pysh. I've also moved all the logic which used
3030 to be in pysh.py here, which will prevent problems with future
3034 to be in pysh.py here, which will prevent problems with future
3031 upgrades. However, this time I must warn users to update their
3035 upgrades. However, this time I must warn users to update their
3032 pysh profile to include the line
3036 pysh profile to include the line
3033
3037
3034 import_all IPython.Extensions.InterpreterExec
3038 import_all IPython.Extensions.InterpreterExec
3035
3039
3036 because otherwise things won't work for them. They MUST also
3040 because otherwise things won't work for them. They MUST also
3037 delete pysh.py and the line
3041 delete pysh.py and the line
3038
3042
3039 execfile pysh.py
3043 execfile pysh.py
3040
3044
3041 from their ipythonrc-pysh.
3045 from their ipythonrc-pysh.
3042
3046
3043 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3047 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3044 robust in the face of objects whose dir() returns non-strings
3048 robust in the face of objects whose dir() returns non-strings
3045 (which it shouldn't, but some broken libs like ITK do). Thanks to
3049 (which it shouldn't, but some broken libs like ITK do). Thanks to
3046 a patch by John Hunter (implemented differently, though). Also
3050 a patch by John Hunter (implemented differently, though). Also
3047 minor improvements by using .extend instead of + on lists.
3051 minor improvements by using .extend instead of + on lists.
3048
3052
3049 * pysh.py:
3053 * pysh.py:
3050
3054
3051 2005-04-06 Fernando Perez <fperez@colorado.edu>
3055 2005-04-06 Fernando Perez <fperez@colorado.edu>
3052
3056
3053 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3057 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3054 by default, so that all users benefit from it. Those who don't
3058 by default, so that all users benefit from it. Those who don't
3055 want it can still turn it off.
3059 want it can still turn it off.
3056
3060
3057 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3061 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3058 config file, I'd forgotten about this, so users were getting it
3062 config file, I'd forgotten about this, so users were getting it
3059 off by default.
3063 off by default.
3060
3064
3061 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3065 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3062 consistency. Now magics can be called in multiline statements,
3066 consistency. Now magics can be called in multiline statements,
3063 and python variables can be expanded in magic calls via $var.
3067 and python variables can be expanded in magic calls via $var.
3064 This makes the magic system behave just like aliases or !system
3068 This makes the magic system behave just like aliases or !system
3065 calls.
3069 calls.
3066
3070
3067 2005-03-28 Fernando Perez <fperez@colorado.edu>
3071 2005-03-28 Fernando Perez <fperez@colorado.edu>
3068
3072
3069 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3073 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3070 expensive string additions for building command. Add support for
3074 expensive string additions for building command. Add support for
3071 trailing ';' when autocall is used.
3075 trailing ';' when autocall is used.
3072
3076
3073 2005-03-26 Fernando Perez <fperez@colorado.edu>
3077 2005-03-26 Fernando Perez <fperez@colorado.edu>
3074
3078
3075 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3079 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3076 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3080 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3077 ipython.el robust against prompts with any number of spaces
3081 ipython.el robust against prompts with any number of spaces
3078 (including 0) after the ':' character.
3082 (including 0) after the ':' character.
3079
3083
3080 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3084 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3081 continuation prompt, which misled users to think the line was
3085 continuation prompt, which misled users to think the line was
3082 already indented. Closes debian Bug#300847, reported to me by
3086 already indented. Closes debian Bug#300847, reported to me by
3083 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3087 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3084
3088
3085 2005-03-23 Fernando Perez <fperez@colorado.edu>
3089 2005-03-23 Fernando Perez <fperez@colorado.edu>
3086
3090
3087 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3091 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3088 properly aligned if they have embedded newlines.
3092 properly aligned if they have embedded newlines.
3089
3093
3090 * IPython/iplib.py (runlines): Add a public method to expose
3094 * IPython/iplib.py (runlines): Add a public method to expose
3091 IPython's code execution machinery, so that users can run strings
3095 IPython's code execution machinery, so that users can run strings
3092 as if they had been typed at the prompt interactively.
3096 as if they had been typed at the prompt interactively.
3093 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3097 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3094 methods which can call the system shell, but with python variable
3098 methods which can call the system shell, but with python variable
3095 expansion. The three such methods are: __IPYTHON__.system,
3099 expansion. The three such methods are: __IPYTHON__.system,
3096 .getoutput and .getoutputerror. These need to be documented in a
3100 .getoutput and .getoutputerror. These need to be documented in a
3097 'public API' section (to be written) of the manual.
3101 'public API' section (to be written) of the manual.
3098
3102
3099 2005-03-20 Fernando Perez <fperez@colorado.edu>
3103 2005-03-20 Fernando Perez <fperez@colorado.edu>
3100
3104
3101 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3105 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3102 for custom exception handling. This is quite powerful, and it
3106 for custom exception handling. This is quite powerful, and it
3103 allows for user-installable exception handlers which can trap
3107 allows for user-installable exception handlers which can trap
3104 custom exceptions at runtime and treat them separately from
3108 custom exceptions at runtime and treat them separately from
3105 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3109 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3106 Mantegazza <mantegazza-AT-ill.fr>.
3110 Mantegazza <mantegazza-AT-ill.fr>.
3107 (InteractiveShell.set_custom_completer): public API function to
3111 (InteractiveShell.set_custom_completer): public API function to
3108 add new completers at runtime.
3112 add new completers at runtime.
3109
3113
3110 2005-03-19 Fernando Perez <fperez@colorado.edu>
3114 2005-03-19 Fernando Perez <fperez@colorado.edu>
3111
3115
3112 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3116 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3113 allow objects which provide their docstrings via non-standard
3117 allow objects which provide their docstrings via non-standard
3114 mechanisms (like Pyro proxies) to still be inspected by ipython's
3118 mechanisms (like Pyro proxies) to still be inspected by ipython's
3115 ? system.
3119 ? system.
3116
3120
3117 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3121 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3118 automatic capture system. I tried quite hard to make it work
3122 automatic capture system. I tried quite hard to make it work
3119 reliably, and simply failed. I tried many combinations with the
3123 reliably, and simply failed. I tried many combinations with the
3120 subprocess module, but eventually nothing worked in all needed
3124 subprocess module, but eventually nothing worked in all needed
3121 cases (not blocking stdin for the child, duplicating stdout
3125 cases (not blocking stdin for the child, duplicating stdout
3122 without blocking, etc). The new %sc/%sx still do capture to these
3126 without blocking, etc). The new %sc/%sx still do capture to these
3123 magical list/string objects which make shell use much more
3127 magical list/string objects which make shell use much more
3124 conveninent, so not all is lost.
3128 conveninent, so not all is lost.
3125
3129
3126 XXX - FIX MANUAL for the change above!
3130 XXX - FIX MANUAL for the change above!
3127
3131
3128 (runsource): I copied code.py's runsource() into ipython to modify
3132 (runsource): I copied code.py's runsource() into ipython to modify
3129 it a bit. Now the code object and source to be executed are
3133 it a bit. Now the code object and source to be executed are
3130 stored in ipython. This makes this info accessible to third-party
3134 stored in ipython. This makes this info accessible to third-party
3131 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3135 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3132 Mantegazza <mantegazza-AT-ill.fr>.
3136 Mantegazza <mantegazza-AT-ill.fr>.
3133
3137
3134 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3138 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3135 history-search via readline (like C-p/C-n). I'd wanted this for a
3139 history-search via readline (like C-p/C-n). I'd wanted this for a
3136 long time, but only recently found out how to do it. For users
3140 long time, but only recently found out how to do it. For users
3137 who already have their ipythonrc files made and want this, just
3141 who already have their ipythonrc files made and want this, just
3138 add:
3142 add:
3139
3143
3140 readline_parse_and_bind "\e[A": history-search-backward
3144 readline_parse_and_bind "\e[A": history-search-backward
3141 readline_parse_and_bind "\e[B": history-search-forward
3145 readline_parse_and_bind "\e[B": history-search-forward
3142
3146
3143 2005-03-18 Fernando Perez <fperez@colorado.edu>
3147 2005-03-18 Fernando Perez <fperez@colorado.edu>
3144
3148
3145 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3149 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3146 LSString and SList classes which allow transparent conversions
3150 LSString and SList classes which allow transparent conversions
3147 between list mode and whitespace-separated string.
3151 between list mode and whitespace-separated string.
3148 (magic_r): Fix recursion problem in %r.
3152 (magic_r): Fix recursion problem in %r.
3149
3153
3150 * IPython/genutils.py (LSString): New class to be used for
3154 * IPython/genutils.py (LSString): New class to be used for
3151 automatic storage of the results of all alias/system calls in _o
3155 automatic storage of the results of all alias/system calls in _o
3152 and _e (stdout/err). These provide a .l/.list attribute which
3156 and _e (stdout/err). These provide a .l/.list attribute which
3153 does automatic splitting on newlines. This means that for most
3157 does automatic splitting on newlines. This means that for most
3154 uses, you'll never need to do capturing of output with %sc/%sx
3158 uses, you'll never need to do capturing of output with %sc/%sx
3155 anymore, since ipython keeps this always done for you. Note that
3159 anymore, since ipython keeps this always done for you. Note that
3156 only the LAST results are stored, the _o/e variables are
3160 only the LAST results are stored, the _o/e variables are
3157 overwritten on each call. If you need to save their contents
3161 overwritten on each call. If you need to save their contents
3158 further, simply bind them to any other name.
3162 further, simply bind them to any other name.
3159
3163
3160 2005-03-17 Fernando Perez <fperez@colorado.edu>
3164 2005-03-17 Fernando Perez <fperez@colorado.edu>
3161
3165
3162 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3166 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3163 prompt namespace handling.
3167 prompt namespace handling.
3164
3168
3165 2005-03-16 Fernando Perez <fperez@colorado.edu>
3169 2005-03-16 Fernando Perez <fperez@colorado.edu>
3166
3170
3167 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3171 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3168 classic prompts to be '>>> ' (final space was missing, and it
3172 classic prompts to be '>>> ' (final space was missing, and it
3169 trips the emacs python mode).
3173 trips the emacs python mode).
3170 (BasePrompt.__str__): Added safe support for dynamic prompt
3174 (BasePrompt.__str__): Added safe support for dynamic prompt
3171 strings. Now you can set your prompt string to be '$x', and the
3175 strings. Now you can set your prompt string to be '$x', and the
3172 value of x will be printed from your interactive namespace. The
3176 value of x will be printed from your interactive namespace. The
3173 interpolation syntax includes the full Itpl support, so
3177 interpolation syntax includes the full Itpl support, so
3174 ${foo()+x+bar()} is a valid prompt string now, and the function
3178 ${foo()+x+bar()} is a valid prompt string now, and the function
3175 calls will be made at runtime.
3179 calls will be made at runtime.
3176
3180
3177 2005-03-15 Fernando Perez <fperez@colorado.edu>
3181 2005-03-15 Fernando Perez <fperez@colorado.edu>
3178
3182
3179 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3183 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3180 avoid name clashes in pylab. %hist still works, it just forwards
3184 avoid name clashes in pylab. %hist still works, it just forwards
3181 the call to %history.
3185 the call to %history.
3182
3186
3183 2005-03-02 *** Released version 0.6.12
3187 2005-03-02 *** Released version 0.6.12
3184
3188
3185 2005-03-02 Fernando Perez <fperez@colorado.edu>
3189 2005-03-02 Fernando Perez <fperez@colorado.edu>
3186
3190
3187 * IPython/iplib.py (handle_magic): log magic calls properly as
3191 * IPython/iplib.py (handle_magic): log magic calls properly as
3188 ipmagic() function calls.
3192 ipmagic() function calls.
3189
3193
3190 * IPython/Magic.py (magic_time): Improved %time to support
3194 * IPython/Magic.py (magic_time): Improved %time to support
3191 statements and provide wall-clock as well as CPU time.
3195 statements and provide wall-clock as well as CPU time.
3192
3196
3193 2005-02-27 Fernando Perez <fperez@colorado.edu>
3197 2005-02-27 Fernando Perez <fperez@colorado.edu>
3194
3198
3195 * IPython/hooks.py: New hooks module, to expose user-modifiable
3199 * IPython/hooks.py: New hooks module, to expose user-modifiable
3196 IPython functionality in a clean manner. For now only the editor
3200 IPython functionality in a clean manner. For now only the editor
3197 hook is actually written, and other thigns which I intend to turn
3201 hook is actually written, and other thigns which I intend to turn
3198 into proper hooks aren't yet there. The display and prefilter
3202 into proper hooks aren't yet there. The display and prefilter
3199 stuff, for example, should be hooks. But at least now the
3203 stuff, for example, should be hooks. But at least now the
3200 framework is in place, and the rest can be moved here with more
3204 framework is in place, and the rest can be moved here with more
3201 time later. IPython had had a .hooks variable for a long time for
3205 time later. IPython had had a .hooks variable for a long time for
3202 this purpose, but I'd never actually used it for anything.
3206 this purpose, but I'd never actually used it for anything.
3203
3207
3204 2005-02-26 Fernando Perez <fperez@colorado.edu>
3208 2005-02-26 Fernando Perez <fperez@colorado.edu>
3205
3209
3206 * IPython/ipmaker.py (make_IPython): make the default ipython
3210 * IPython/ipmaker.py (make_IPython): make the default ipython
3207 directory be called _ipython under win32, to follow more the
3211 directory be called _ipython under win32, to follow more the
3208 naming peculiarities of that platform (where buggy software like
3212 naming peculiarities of that platform (where buggy software like
3209 Visual Sourcesafe breaks with .named directories). Reported by
3213 Visual Sourcesafe breaks with .named directories). Reported by
3210 Ville Vainio.
3214 Ville Vainio.
3211
3215
3212 2005-02-23 Fernando Perez <fperez@colorado.edu>
3216 2005-02-23 Fernando Perez <fperez@colorado.edu>
3213
3217
3214 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3218 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3215 auto_aliases for win32 which were causing problems. Users can
3219 auto_aliases for win32 which were causing problems. Users can
3216 define the ones they personally like.
3220 define the ones they personally like.
3217
3221
3218 2005-02-21 Fernando Perez <fperez@colorado.edu>
3222 2005-02-21 Fernando Perez <fperez@colorado.edu>
3219
3223
3220 * IPython/Magic.py (magic_time): new magic to time execution of
3224 * IPython/Magic.py (magic_time): new magic to time execution of
3221 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3225 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3222
3226
3223 2005-02-19 Fernando Perez <fperez@colorado.edu>
3227 2005-02-19 Fernando Perez <fperez@colorado.edu>
3224
3228
3225 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3229 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3226 into keys (for prompts, for example).
3230 into keys (for prompts, for example).
3227
3231
3228 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3232 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3229 prompts in case users want them. This introduces a small behavior
3233 prompts in case users want them. This introduces a small behavior
3230 change: ipython does not automatically add a space to all prompts
3234 change: ipython does not automatically add a space to all prompts
3231 anymore. To get the old prompts with a space, users should add it
3235 anymore. To get the old prompts with a space, users should add it
3232 manually to their ipythonrc file, so for example prompt_in1 should
3236 manually to their ipythonrc file, so for example prompt_in1 should
3233 now read 'In [\#]: ' instead of 'In [\#]:'.
3237 now read 'In [\#]: ' instead of 'In [\#]:'.
3234 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3238 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3235 file) to control left-padding of secondary prompts.
3239 file) to control left-padding of secondary prompts.
3236
3240
3237 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3241 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3238 the profiler can't be imported. Fix for Debian, which removed
3242 the profiler can't be imported. Fix for Debian, which removed
3239 profile.py because of License issues. I applied a slightly
3243 profile.py because of License issues. I applied a slightly
3240 modified version of the original Debian patch at
3244 modified version of the original Debian patch at
3241 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3245 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3242
3246
3243 2005-02-17 Fernando Perez <fperez@colorado.edu>
3247 2005-02-17 Fernando Perez <fperez@colorado.edu>
3244
3248
3245 * IPython/genutils.py (native_line_ends): Fix bug which would
3249 * IPython/genutils.py (native_line_ends): Fix bug which would
3246 cause improper line-ends under win32 b/c I was not opening files
3250 cause improper line-ends under win32 b/c I was not opening files
3247 in binary mode. Bug report and fix thanks to Ville.
3251 in binary mode. Bug report and fix thanks to Ville.
3248
3252
3249 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3253 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3250 trying to catch spurious foo[1] autocalls. My fix actually broke
3254 trying to catch spurious foo[1] autocalls. My fix actually broke
3251 ',/' autoquote/call with explicit escape (bad regexp).
3255 ',/' autoquote/call with explicit escape (bad regexp).
3252
3256
3253 2005-02-15 *** Released version 0.6.11
3257 2005-02-15 *** Released version 0.6.11
3254
3258
3255 2005-02-14 Fernando Perez <fperez@colorado.edu>
3259 2005-02-14 Fernando Perez <fperez@colorado.edu>
3256
3260
3257 * IPython/background_jobs.py: New background job management
3261 * IPython/background_jobs.py: New background job management
3258 subsystem. This is implemented via a new set of classes, and
3262 subsystem. This is implemented via a new set of classes, and
3259 IPython now provides a builtin 'jobs' object for background job
3263 IPython now provides a builtin 'jobs' object for background job
3260 execution. A convenience %bg magic serves as a lightweight
3264 execution. A convenience %bg magic serves as a lightweight
3261 frontend for starting the more common type of calls. This was
3265 frontend for starting the more common type of calls. This was
3262 inspired by discussions with B. Granger and the BackgroundCommand
3266 inspired by discussions with B. Granger and the BackgroundCommand
3263 class described in the book Python Scripting for Computational
3267 class described in the book Python Scripting for Computational
3264 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3268 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3265 (although ultimately no code from this text was used, as IPython's
3269 (although ultimately no code from this text was used, as IPython's
3266 system is a separate implementation).
3270 system is a separate implementation).
3267
3271
3268 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3272 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3269 to control the completion of single/double underscore names
3273 to control the completion of single/double underscore names
3270 separately. As documented in the example ipytonrc file, the
3274 separately. As documented in the example ipytonrc file, the
3271 readline_omit__names variable can now be set to 2, to omit even
3275 readline_omit__names variable can now be set to 2, to omit even
3272 single underscore names. Thanks to a patch by Brian Wong
3276 single underscore names. Thanks to a patch by Brian Wong
3273 <BrianWong-AT-AirgoNetworks.Com>.
3277 <BrianWong-AT-AirgoNetworks.Com>.
3274 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3278 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3275 be autocalled as foo([1]) if foo were callable. A problem for
3279 be autocalled as foo([1]) if foo were callable. A problem for
3276 things which are both callable and implement __getitem__.
3280 things which are both callable and implement __getitem__.
3277 (init_readline): Fix autoindentation for win32. Thanks to a patch
3281 (init_readline): Fix autoindentation for win32. Thanks to a patch
3278 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3282 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3279
3283
3280 2005-02-12 Fernando Perez <fperez@colorado.edu>
3284 2005-02-12 Fernando Perez <fperez@colorado.edu>
3281
3285
3282 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3286 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3283 which I had written long ago to sort out user error messages which
3287 which I had written long ago to sort out user error messages which
3284 may occur during startup. This seemed like a good idea initially,
3288 may occur during startup. This seemed like a good idea initially,
3285 but it has proven a disaster in retrospect. I don't want to
3289 but it has proven a disaster in retrospect. I don't want to
3286 change much code for now, so my fix is to set the internal 'debug'
3290 change much code for now, so my fix is to set the internal 'debug'
3287 flag to true everywhere, whose only job was precisely to control
3291 flag to true everywhere, whose only job was precisely to control
3288 this subsystem. This closes issue 28 (as well as avoiding all
3292 this subsystem. This closes issue 28 (as well as avoiding all
3289 sorts of strange hangups which occur from time to time).
3293 sorts of strange hangups which occur from time to time).
3290
3294
3291 2005-02-07 Fernando Perez <fperez@colorado.edu>
3295 2005-02-07 Fernando Perez <fperez@colorado.edu>
3292
3296
3293 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3297 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3294 previous call produced a syntax error.
3298 previous call produced a syntax error.
3295
3299
3296 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3300 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3297 classes without constructor.
3301 classes without constructor.
3298
3302
3299 2005-02-06 Fernando Perez <fperez@colorado.edu>
3303 2005-02-06 Fernando Perez <fperez@colorado.edu>
3300
3304
3301 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3305 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3302 completions with the results of each matcher, so we return results
3306 completions with the results of each matcher, so we return results
3303 to the user from all namespaces. This breaks with ipython
3307 to the user from all namespaces. This breaks with ipython
3304 tradition, but I think it's a nicer behavior. Now you get all
3308 tradition, but I think it's a nicer behavior. Now you get all
3305 possible completions listed, from all possible namespaces (python,
3309 possible completions listed, from all possible namespaces (python,
3306 filesystem, magics...) After a request by John Hunter
3310 filesystem, magics...) After a request by John Hunter
3307 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3311 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3308
3312
3309 2005-02-05 Fernando Perez <fperez@colorado.edu>
3313 2005-02-05 Fernando Perez <fperez@colorado.edu>
3310
3314
3311 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3315 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3312 the call had quote characters in it (the quotes were stripped).
3316 the call had quote characters in it (the quotes were stripped).
3313
3317
3314 2005-01-31 Fernando Perez <fperez@colorado.edu>
3318 2005-01-31 Fernando Perez <fperez@colorado.edu>
3315
3319
3316 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3320 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3317 Itpl.itpl() to make the code more robust against psyco
3321 Itpl.itpl() to make the code more robust against psyco
3318 optimizations.
3322 optimizations.
3319
3323
3320 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3324 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3321 of causing an exception. Quicker, cleaner.
3325 of causing an exception. Quicker, cleaner.
3322
3326
3323 2005-01-28 Fernando Perez <fperez@colorado.edu>
3327 2005-01-28 Fernando Perez <fperez@colorado.edu>
3324
3328
3325 * scripts/ipython_win_post_install.py (install): hardcode
3329 * scripts/ipython_win_post_install.py (install): hardcode
3326 sys.prefix+'python.exe' as the executable path. It turns out that
3330 sys.prefix+'python.exe' as the executable path. It turns out that
3327 during the post-installation run, sys.executable resolves to the
3331 during the post-installation run, sys.executable resolves to the
3328 name of the binary installer! I should report this as a distutils
3332 name of the binary installer! I should report this as a distutils
3329 bug, I think. I updated the .10 release with this tiny fix, to
3333 bug, I think. I updated the .10 release with this tiny fix, to
3330 avoid annoying the lists further.
3334 avoid annoying the lists further.
3331
3335
3332 2005-01-27 *** Released version 0.6.10
3336 2005-01-27 *** Released version 0.6.10
3333
3337
3334 2005-01-27 Fernando Perez <fperez@colorado.edu>
3338 2005-01-27 Fernando Perez <fperez@colorado.edu>
3335
3339
3336 * IPython/numutils.py (norm): Added 'inf' as optional name for
3340 * IPython/numutils.py (norm): Added 'inf' as optional name for
3337 L-infinity norm, included references to mathworld.com for vector
3341 L-infinity norm, included references to mathworld.com for vector
3338 norm definitions.
3342 norm definitions.
3339 (amin/amax): added amin/amax for array min/max. Similar to what
3343 (amin/amax): added amin/amax for array min/max. Similar to what
3340 pylab ships with after the recent reorganization of names.
3344 pylab ships with after the recent reorganization of names.
3341 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3345 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3342
3346
3343 * ipython.el: committed Alex's recent fixes and improvements.
3347 * ipython.el: committed Alex's recent fixes and improvements.
3344 Tested with python-mode from CVS, and it looks excellent. Since
3348 Tested with python-mode from CVS, and it looks excellent. Since
3345 python-mode hasn't released anything in a while, I'm temporarily
3349 python-mode hasn't released anything in a while, I'm temporarily
3346 putting a copy of today's CVS (v 4.70) of python-mode in:
3350 putting a copy of today's CVS (v 4.70) of python-mode in:
3347 http://ipython.scipy.org/tmp/python-mode.el
3351 http://ipython.scipy.org/tmp/python-mode.el
3348
3352
3349 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3353 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3350 sys.executable for the executable name, instead of assuming it's
3354 sys.executable for the executable name, instead of assuming it's
3351 called 'python.exe' (the post-installer would have produced broken
3355 called 'python.exe' (the post-installer would have produced broken
3352 setups on systems with a differently named python binary).
3356 setups on systems with a differently named python binary).
3353
3357
3354 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3358 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3355 references to os.linesep, to make the code more
3359 references to os.linesep, to make the code more
3356 platform-independent. This is also part of the win32 coloring
3360 platform-independent. This is also part of the win32 coloring
3357 fixes.
3361 fixes.
3358
3362
3359 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3363 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3360 lines, which actually cause coloring bugs because the length of
3364 lines, which actually cause coloring bugs because the length of
3361 the line is very difficult to correctly compute with embedded
3365 the line is very difficult to correctly compute with embedded
3362 escapes. This was the source of all the coloring problems under
3366 escapes. This was the source of all the coloring problems under
3363 Win32. I think that _finally_, Win32 users have a properly
3367 Win32. I think that _finally_, Win32 users have a properly
3364 working ipython in all respects. This would never have happened
3368 working ipython in all respects. This would never have happened
3365 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3369 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3366
3370
3367 2005-01-26 *** Released version 0.6.9
3371 2005-01-26 *** Released version 0.6.9
3368
3372
3369 2005-01-25 Fernando Perez <fperez@colorado.edu>
3373 2005-01-25 Fernando Perez <fperez@colorado.edu>
3370
3374
3371 * setup.py: finally, we have a true Windows installer, thanks to
3375 * setup.py: finally, we have a true Windows installer, thanks to
3372 the excellent work of Viktor Ransmayr
3376 the excellent work of Viktor Ransmayr
3373 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3377 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3374 Windows users. The setup routine is quite a bit cleaner thanks to
3378 Windows users. The setup routine is quite a bit cleaner thanks to
3375 this, and the post-install script uses the proper functions to
3379 this, and the post-install script uses the proper functions to
3376 allow a clean de-installation using the standard Windows Control
3380 allow a clean de-installation using the standard Windows Control
3377 Panel.
3381 Panel.
3378
3382
3379 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3383 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3380 environment variable under all OSes (including win32) if
3384 environment variable under all OSes (including win32) if
3381 available. This will give consistency to win32 users who have set
3385 available. This will give consistency to win32 users who have set
3382 this variable for any reason. If os.environ['HOME'] fails, the
3386 this variable for any reason. If os.environ['HOME'] fails, the
3383 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3387 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3384
3388
3385 2005-01-24 Fernando Perez <fperez@colorado.edu>
3389 2005-01-24 Fernando Perez <fperez@colorado.edu>
3386
3390
3387 * IPython/numutils.py (empty_like): add empty_like(), similar to
3391 * IPython/numutils.py (empty_like): add empty_like(), similar to
3388 zeros_like() but taking advantage of the new empty() Numeric routine.
3392 zeros_like() but taking advantage of the new empty() Numeric routine.
3389
3393
3390 2005-01-23 *** Released version 0.6.8
3394 2005-01-23 *** Released version 0.6.8
3391
3395
3392 2005-01-22 Fernando Perez <fperez@colorado.edu>
3396 2005-01-22 Fernando Perez <fperez@colorado.edu>
3393
3397
3394 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3398 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3395 automatic show() calls. After discussing things with JDH, it
3399 automatic show() calls. After discussing things with JDH, it
3396 turns out there are too many corner cases where this can go wrong.
3400 turns out there are too many corner cases where this can go wrong.
3397 It's best not to try to be 'too smart', and simply have ipython
3401 It's best not to try to be 'too smart', and simply have ipython
3398 reproduce as much as possible the default behavior of a normal
3402 reproduce as much as possible the default behavior of a normal
3399 python shell.
3403 python shell.
3400
3404
3401 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3405 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3402 line-splitting regexp and _prefilter() to avoid calling getattr()
3406 line-splitting regexp and _prefilter() to avoid calling getattr()
3403 on assignments. This closes
3407 on assignments. This closes
3404 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3408 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3405 readline uses getattr(), so a simple <TAB> keypress is still
3409 readline uses getattr(), so a simple <TAB> keypress is still
3406 enough to trigger getattr() calls on an object.
3410 enough to trigger getattr() calls on an object.
3407
3411
3408 2005-01-21 Fernando Perez <fperez@colorado.edu>
3412 2005-01-21 Fernando Perez <fperez@colorado.edu>
3409
3413
3410 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3414 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3411 docstring under pylab so it doesn't mask the original.
3415 docstring under pylab so it doesn't mask the original.
3412
3416
3413 2005-01-21 *** Released version 0.6.7
3417 2005-01-21 *** Released version 0.6.7
3414
3418
3415 2005-01-21 Fernando Perez <fperez@colorado.edu>
3419 2005-01-21 Fernando Perez <fperez@colorado.edu>
3416
3420
3417 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3421 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3418 signal handling for win32 users in multithreaded mode.
3422 signal handling for win32 users in multithreaded mode.
3419
3423
3420 2005-01-17 Fernando Perez <fperez@colorado.edu>
3424 2005-01-17 Fernando Perez <fperez@colorado.edu>
3421
3425
3422 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3426 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3423 instances with no __init__. After a crash report by Norbert Nemec
3427 instances with no __init__. After a crash report by Norbert Nemec
3424 <Norbert-AT-nemec-online.de>.
3428 <Norbert-AT-nemec-online.de>.
3425
3429
3426 2005-01-14 Fernando Perez <fperez@colorado.edu>
3430 2005-01-14 Fernando Perez <fperez@colorado.edu>
3427
3431
3428 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3432 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3429 names for verbose exceptions, when multiple dotted names and the
3433 names for verbose exceptions, when multiple dotted names and the
3430 'parent' object were present on the same line.
3434 'parent' object were present on the same line.
3431
3435
3432 2005-01-11 Fernando Perez <fperez@colorado.edu>
3436 2005-01-11 Fernando Perez <fperez@colorado.edu>
3433
3437
3434 * IPython/genutils.py (flag_calls): new utility to trap and flag
3438 * IPython/genutils.py (flag_calls): new utility to trap and flag
3435 calls in functions. I need it to clean up matplotlib support.
3439 calls in functions. I need it to clean up matplotlib support.
3436 Also removed some deprecated code in genutils.
3440 Also removed some deprecated code in genutils.
3437
3441
3438 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3442 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3439 that matplotlib scripts called with %run, which don't call show()
3443 that matplotlib scripts called with %run, which don't call show()
3440 themselves, still have their plotting windows open.
3444 themselves, still have their plotting windows open.
3441
3445
3442 2005-01-05 Fernando Perez <fperez@colorado.edu>
3446 2005-01-05 Fernando Perez <fperez@colorado.edu>
3443
3447
3444 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3448 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3445 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3449 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3446
3450
3447 2004-12-19 Fernando Perez <fperez@colorado.edu>
3451 2004-12-19 Fernando Perez <fperez@colorado.edu>
3448
3452
3449 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3453 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3450 parent_runcode, which was an eyesore. The same result can be
3454 parent_runcode, which was an eyesore. The same result can be
3451 obtained with Python's regular superclass mechanisms.
3455 obtained with Python's regular superclass mechanisms.
3452
3456
3453 2004-12-17 Fernando Perez <fperez@colorado.edu>
3457 2004-12-17 Fernando Perez <fperez@colorado.edu>
3454
3458
3455 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3459 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3456 reported by Prabhu.
3460 reported by Prabhu.
3457 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3461 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3458 sys.stderr) instead of explicitly calling sys.stderr. This helps
3462 sys.stderr) instead of explicitly calling sys.stderr. This helps
3459 maintain our I/O abstractions clean, for future GUI embeddings.
3463 maintain our I/O abstractions clean, for future GUI embeddings.
3460
3464
3461 * IPython/genutils.py (info): added new utility for sys.stderr
3465 * IPython/genutils.py (info): added new utility for sys.stderr
3462 unified info message handling (thin wrapper around warn()).
3466 unified info message handling (thin wrapper around warn()).
3463
3467
3464 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3468 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3465 composite (dotted) names on verbose exceptions.
3469 composite (dotted) names on verbose exceptions.
3466 (VerboseTB.nullrepr): harden against another kind of errors which
3470 (VerboseTB.nullrepr): harden against another kind of errors which
3467 Python's inspect module can trigger, and which were crashing
3471 Python's inspect module can trigger, and which were crashing
3468 IPython. Thanks to a report by Marco Lombardi
3472 IPython. Thanks to a report by Marco Lombardi
3469 <mlombard-AT-ma010192.hq.eso.org>.
3473 <mlombard-AT-ma010192.hq.eso.org>.
3470
3474
3471 2004-12-13 *** Released version 0.6.6
3475 2004-12-13 *** Released version 0.6.6
3472
3476
3473 2004-12-12 Fernando Perez <fperez@colorado.edu>
3477 2004-12-12 Fernando Perez <fperez@colorado.edu>
3474
3478
3475 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3479 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3476 generated by pygtk upon initialization if it was built without
3480 generated by pygtk upon initialization if it was built without
3477 threads (for matplotlib users). After a crash reported by
3481 threads (for matplotlib users). After a crash reported by
3478 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3482 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3479
3483
3480 * IPython/ipmaker.py (make_IPython): fix small bug in the
3484 * IPython/ipmaker.py (make_IPython): fix small bug in the
3481 import_some parameter for multiple imports.
3485 import_some parameter for multiple imports.
3482
3486
3483 * IPython/iplib.py (ipmagic): simplified the interface of
3487 * IPython/iplib.py (ipmagic): simplified the interface of
3484 ipmagic() to take a single string argument, just as it would be
3488 ipmagic() to take a single string argument, just as it would be
3485 typed at the IPython cmd line.
3489 typed at the IPython cmd line.
3486 (ipalias): Added new ipalias() with an interface identical to
3490 (ipalias): Added new ipalias() with an interface identical to
3487 ipmagic(). This completes exposing a pure python interface to the
3491 ipmagic(). This completes exposing a pure python interface to the
3488 alias and magic system, which can be used in loops or more complex
3492 alias and magic system, which can be used in loops or more complex
3489 code where IPython's automatic line mangling is not active.
3493 code where IPython's automatic line mangling is not active.
3490
3494
3491 * IPython/genutils.py (timing): changed interface of timing to
3495 * IPython/genutils.py (timing): changed interface of timing to
3492 simply run code once, which is the most common case. timings()
3496 simply run code once, which is the most common case. timings()
3493 remains unchanged, for the cases where you want multiple runs.
3497 remains unchanged, for the cases where you want multiple runs.
3494
3498
3495 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3499 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3496 bug where Python2.2 crashes with exec'ing code which does not end
3500 bug where Python2.2 crashes with exec'ing code which does not end
3497 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3501 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3498 before.
3502 before.
3499
3503
3500 2004-12-10 Fernando Perez <fperez@colorado.edu>
3504 2004-12-10 Fernando Perez <fperez@colorado.edu>
3501
3505
3502 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3506 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3503 -t to -T, to accomodate the new -t flag in %run (the %run and
3507 -t to -T, to accomodate the new -t flag in %run (the %run and
3504 %prun options are kind of intermixed, and it's not easy to change
3508 %prun options are kind of intermixed, and it's not easy to change
3505 this with the limitations of python's getopt).
3509 this with the limitations of python's getopt).
3506
3510
3507 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3511 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3508 the execution of scripts. It's not as fine-tuned as timeit.py,
3512 the execution of scripts. It's not as fine-tuned as timeit.py,
3509 but it works from inside ipython (and under 2.2, which lacks
3513 but it works from inside ipython (and under 2.2, which lacks
3510 timeit.py). Optionally a number of runs > 1 can be given for
3514 timeit.py). Optionally a number of runs > 1 can be given for
3511 timing very short-running code.
3515 timing very short-running code.
3512
3516
3513 * IPython/genutils.py (uniq_stable): new routine which returns a
3517 * IPython/genutils.py (uniq_stable): new routine which returns a
3514 list of unique elements in any iterable, but in stable order of
3518 list of unique elements in any iterable, but in stable order of
3515 appearance. I needed this for the ultraTB fixes, and it's a handy
3519 appearance. I needed this for the ultraTB fixes, and it's a handy
3516 utility.
3520 utility.
3517
3521
3518 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3522 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3519 dotted names in Verbose exceptions. This had been broken since
3523 dotted names in Verbose exceptions. This had been broken since
3520 the very start, now x.y will properly be printed in a Verbose
3524 the very start, now x.y will properly be printed in a Verbose
3521 traceback, instead of x being shown and y appearing always as an
3525 traceback, instead of x being shown and y appearing always as an
3522 'undefined global'. Getting this to work was a bit tricky,
3526 'undefined global'. Getting this to work was a bit tricky,
3523 because by default python tokenizers are stateless. Saved by
3527 because by default python tokenizers are stateless. Saved by
3524 python's ability to easily add a bit of state to an arbitrary
3528 python's ability to easily add a bit of state to an arbitrary
3525 function (without needing to build a full-blown callable object).
3529 function (without needing to build a full-blown callable object).
3526
3530
3527 Also big cleanup of this code, which had horrendous runtime
3531 Also big cleanup of this code, which had horrendous runtime
3528 lookups of zillions of attributes for colorization. Moved all
3532 lookups of zillions of attributes for colorization. Moved all
3529 this code into a few templates, which make it cleaner and quicker.
3533 this code into a few templates, which make it cleaner and quicker.
3530
3534
3531 Printout quality was also improved for Verbose exceptions: one
3535 Printout quality was also improved for Verbose exceptions: one
3532 variable per line, and memory addresses are printed (this can be
3536 variable per line, and memory addresses are printed (this can be
3533 quite handy in nasty debugging situations, which is what Verbose
3537 quite handy in nasty debugging situations, which is what Verbose
3534 is for).
3538 is for).
3535
3539
3536 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3540 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3537 the command line as scripts to be loaded by embedded instances.
3541 the command line as scripts to be loaded by embedded instances.
3538 Doing so has the potential for an infinite recursion if there are
3542 Doing so has the potential for an infinite recursion if there are
3539 exceptions thrown in the process. This fixes a strange crash
3543 exceptions thrown in the process. This fixes a strange crash
3540 reported by Philippe MULLER <muller-AT-irit.fr>.
3544 reported by Philippe MULLER <muller-AT-irit.fr>.
3541
3545
3542 2004-12-09 Fernando Perez <fperez@colorado.edu>
3546 2004-12-09 Fernando Perez <fperez@colorado.edu>
3543
3547
3544 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3548 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3545 to reflect new names in matplotlib, which now expose the
3549 to reflect new names in matplotlib, which now expose the
3546 matlab-compatible interface via a pylab module instead of the
3550 matlab-compatible interface via a pylab module instead of the
3547 'matlab' name. The new code is backwards compatible, so users of
3551 'matlab' name. The new code is backwards compatible, so users of
3548 all matplotlib versions are OK. Patch by J. Hunter.
3552 all matplotlib versions are OK. Patch by J. Hunter.
3549
3553
3550 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3554 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3551 of __init__ docstrings for instances (class docstrings are already
3555 of __init__ docstrings for instances (class docstrings are already
3552 automatically printed). Instances with customized docstrings
3556 automatically printed). Instances with customized docstrings
3553 (indep. of the class) are also recognized and all 3 separate
3557 (indep. of the class) are also recognized and all 3 separate
3554 docstrings are printed (instance, class, constructor). After some
3558 docstrings are printed (instance, class, constructor). After some
3555 comments/suggestions by J. Hunter.
3559 comments/suggestions by J. Hunter.
3556
3560
3557 2004-12-05 Fernando Perez <fperez@colorado.edu>
3561 2004-12-05 Fernando Perez <fperez@colorado.edu>
3558
3562
3559 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3563 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3560 warnings when tab-completion fails and triggers an exception.
3564 warnings when tab-completion fails and triggers an exception.
3561
3565
3562 2004-12-03 Fernando Perez <fperez@colorado.edu>
3566 2004-12-03 Fernando Perez <fperez@colorado.edu>
3563
3567
3564 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3568 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3565 be triggered when using 'run -p'. An incorrect option flag was
3569 be triggered when using 'run -p'. An incorrect option flag was
3566 being set ('d' instead of 'D').
3570 being set ('d' instead of 'D').
3567 (manpage): fix missing escaped \- sign.
3571 (manpage): fix missing escaped \- sign.
3568
3572
3569 2004-11-30 *** Released version 0.6.5
3573 2004-11-30 *** Released version 0.6.5
3570
3574
3571 2004-11-30 Fernando Perez <fperez@colorado.edu>
3575 2004-11-30 Fernando Perez <fperez@colorado.edu>
3572
3576
3573 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3577 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3574 setting with -d option.
3578 setting with -d option.
3575
3579
3576 * setup.py (docfiles): Fix problem where the doc glob I was using
3580 * setup.py (docfiles): Fix problem where the doc glob I was using
3577 was COMPLETELY BROKEN. It was giving the right files by pure
3581 was COMPLETELY BROKEN. It was giving the right files by pure
3578 accident, but failed once I tried to include ipython.el. Note:
3582 accident, but failed once I tried to include ipython.el. Note:
3579 glob() does NOT allow you to do exclusion on multiple endings!
3583 glob() does NOT allow you to do exclusion on multiple endings!
3580
3584
3581 2004-11-29 Fernando Perez <fperez@colorado.edu>
3585 2004-11-29 Fernando Perez <fperez@colorado.edu>
3582
3586
3583 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3587 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3584 the manpage as the source. Better formatting & consistency.
3588 the manpage as the source. Better formatting & consistency.
3585
3589
3586 * IPython/Magic.py (magic_run): Added new -d option, to run
3590 * IPython/Magic.py (magic_run): Added new -d option, to run
3587 scripts under the control of the python pdb debugger. Note that
3591 scripts under the control of the python pdb debugger. Note that
3588 this required changing the %prun option -d to -D, to avoid a clash
3592 this required changing the %prun option -d to -D, to avoid a clash
3589 (since %run must pass options to %prun, and getopt is too dumb to
3593 (since %run must pass options to %prun, and getopt is too dumb to
3590 handle options with string values with embedded spaces). Thanks
3594 handle options with string values with embedded spaces). Thanks
3591 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3595 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3592 (magic_who_ls): added type matching to %who and %whos, so that one
3596 (magic_who_ls): added type matching to %who and %whos, so that one
3593 can filter their output to only include variables of certain
3597 can filter their output to only include variables of certain
3594 types. Another suggestion by Matthew.
3598 types. Another suggestion by Matthew.
3595 (magic_whos): Added memory summaries in kb and Mb for arrays.
3599 (magic_whos): Added memory summaries in kb and Mb for arrays.
3596 (magic_who): Improve formatting (break lines every 9 vars).
3600 (magic_who): Improve formatting (break lines every 9 vars).
3597
3601
3598 2004-11-28 Fernando Perez <fperez@colorado.edu>
3602 2004-11-28 Fernando Perez <fperez@colorado.edu>
3599
3603
3600 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3604 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3601 cache when empty lines were present.
3605 cache when empty lines were present.
3602
3606
3603 2004-11-24 Fernando Perez <fperez@colorado.edu>
3607 2004-11-24 Fernando Perez <fperez@colorado.edu>
3604
3608
3605 * IPython/usage.py (__doc__): document the re-activated threading
3609 * IPython/usage.py (__doc__): document the re-activated threading
3606 options for WX and GTK.
3610 options for WX and GTK.
3607
3611
3608 2004-11-23 Fernando Perez <fperez@colorado.edu>
3612 2004-11-23 Fernando Perez <fperez@colorado.edu>
3609
3613
3610 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3614 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3611 the -wthread and -gthread options, along with a new -tk one to try
3615 the -wthread and -gthread options, along with a new -tk one to try
3612 and coordinate Tk threading with wx/gtk. The tk support is very
3616 and coordinate Tk threading with wx/gtk. The tk support is very
3613 platform dependent, since it seems to require Tcl and Tk to be
3617 platform dependent, since it seems to require Tcl and Tk to be
3614 built with threads (Fedora1/2 appears NOT to have it, but in
3618 built with threads (Fedora1/2 appears NOT to have it, but in
3615 Prabhu's Debian boxes it works OK). But even with some Tk
3619 Prabhu's Debian boxes it works OK). But even with some Tk
3616 limitations, this is a great improvement.
3620 limitations, this is a great improvement.
3617
3621
3618 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3622 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3619 info in user prompts. Patch by Prabhu.
3623 info in user prompts. Patch by Prabhu.
3620
3624
3621 2004-11-18 Fernando Perez <fperez@colorado.edu>
3625 2004-11-18 Fernando Perez <fperez@colorado.edu>
3622
3626
3623 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3627 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3624 EOFErrors and bail, to avoid infinite loops if a non-terminating
3628 EOFErrors and bail, to avoid infinite loops if a non-terminating
3625 file is fed into ipython. Patch submitted in issue 19 by user,
3629 file is fed into ipython. Patch submitted in issue 19 by user,
3626 many thanks.
3630 many thanks.
3627
3631
3628 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3632 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3629 autoquote/parens in continuation prompts, which can cause lots of
3633 autoquote/parens in continuation prompts, which can cause lots of
3630 problems. Closes roundup issue 20.
3634 problems. Closes roundup issue 20.
3631
3635
3632 2004-11-17 Fernando Perez <fperez@colorado.edu>
3636 2004-11-17 Fernando Perez <fperez@colorado.edu>
3633
3637
3634 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3638 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3635 reported as debian bug #280505. I'm not sure my local changelog
3639 reported as debian bug #280505. I'm not sure my local changelog
3636 entry has the proper debian format (Jack?).
3640 entry has the proper debian format (Jack?).
3637
3641
3638 2004-11-08 *** Released version 0.6.4
3642 2004-11-08 *** Released version 0.6.4
3639
3643
3640 2004-11-08 Fernando Perez <fperez@colorado.edu>
3644 2004-11-08 Fernando Perez <fperez@colorado.edu>
3641
3645
3642 * IPython/iplib.py (init_readline): Fix exit message for Windows
3646 * IPython/iplib.py (init_readline): Fix exit message for Windows
3643 when readline is active. Thanks to a report by Eric Jones
3647 when readline is active. Thanks to a report by Eric Jones
3644 <eric-AT-enthought.com>.
3648 <eric-AT-enthought.com>.
3645
3649
3646 2004-11-07 Fernando Perez <fperez@colorado.edu>
3650 2004-11-07 Fernando Perez <fperez@colorado.edu>
3647
3651
3648 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3652 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3649 sometimes seen by win2k/cygwin users.
3653 sometimes seen by win2k/cygwin users.
3650
3654
3651 2004-11-06 Fernando Perez <fperez@colorado.edu>
3655 2004-11-06 Fernando Perez <fperez@colorado.edu>
3652
3656
3653 * IPython/iplib.py (interact): Change the handling of %Exit from
3657 * IPython/iplib.py (interact): Change the handling of %Exit from
3654 trying to propagate a SystemExit to an internal ipython flag.
3658 trying to propagate a SystemExit to an internal ipython flag.
3655 This is less elegant than using Python's exception mechanism, but
3659 This is less elegant than using Python's exception mechanism, but
3656 I can't get that to work reliably with threads, so under -pylab
3660 I can't get that to work reliably with threads, so under -pylab
3657 %Exit was hanging IPython. Cross-thread exception handling is
3661 %Exit was hanging IPython. Cross-thread exception handling is
3658 really a bitch. Thaks to a bug report by Stephen Walton
3662 really a bitch. Thaks to a bug report by Stephen Walton
3659 <stephen.walton-AT-csun.edu>.
3663 <stephen.walton-AT-csun.edu>.
3660
3664
3661 2004-11-04 Fernando Perez <fperez@colorado.edu>
3665 2004-11-04 Fernando Perez <fperez@colorado.edu>
3662
3666
3663 * IPython/iplib.py (raw_input_original): store a pointer to the
3667 * IPython/iplib.py (raw_input_original): store a pointer to the
3664 true raw_input to harden against code which can modify it
3668 true raw_input to harden against code which can modify it
3665 (wx.py.PyShell does this and would otherwise crash ipython).
3669 (wx.py.PyShell does this and would otherwise crash ipython).
3666 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3670 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3667
3671
3668 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3672 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3669 Ctrl-C problem, which does not mess up the input line.
3673 Ctrl-C problem, which does not mess up the input line.
3670
3674
3671 2004-11-03 Fernando Perez <fperez@colorado.edu>
3675 2004-11-03 Fernando Perez <fperez@colorado.edu>
3672
3676
3673 * IPython/Release.py: Changed licensing to BSD, in all files.
3677 * IPython/Release.py: Changed licensing to BSD, in all files.
3674 (name): lowercase name for tarball/RPM release.
3678 (name): lowercase name for tarball/RPM release.
3675
3679
3676 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3680 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3677 use throughout ipython.
3681 use throughout ipython.
3678
3682
3679 * IPython/Magic.py (Magic._ofind): Switch to using the new
3683 * IPython/Magic.py (Magic._ofind): Switch to using the new
3680 OInspect.getdoc() function.
3684 OInspect.getdoc() function.
3681
3685
3682 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3686 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3683 of the line currently being canceled via Ctrl-C. It's extremely
3687 of the line currently being canceled via Ctrl-C. It's extremely
3684 ugly, but I don't know how to do it better (the problem is one of
3688 ugly, but I don't know how to do it better (the problem is one of
3685 handling cross-thread exceptions).
3689 handling cross-thread exceptions).
3686
3690
3687 2004-10-28 Fernando Perez <fperez@colorado.edu>
3691 2004-10-28 Fernando Perez <fperez@colorado.edu>
3688
3692
3689 * IPython/Shell.py (signal_handler): add signal handlers to trap
3693 * IPython/Shell.py (signal_handler): add signal handlers to trap
3690 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3694 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3691 report by Francesc Alted.
3695 report by Francesc Alted.
3692
3696
3693 2004-10-21 Fernando Perez <fperez@colorado.edu>
3697 2004-10-21 Fernando Perez <fperez@colorado.edu>
3694
3698
3695 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3699 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3696 to % for pysh syntax extensions.
3700 to % for pysh syntax extensions.
3697
3701
3698 2004-10-09 Fernando Perez <fperez@colorado.edu>
3702 2004-10-09 Fernando Perez <fperez@colorado.edu>
3699
3703
3700 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3704 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3701 arrays to print a more useful summary, without calling str(arr).
3705 arrays to print a more useful summary, without calling str(arr).
3702 This avoids the problem of extremely lengthy computations which
3706 This avoids the problem of extremely lengthy computations which
3703 occur if arr is large, and appear to the user as a system lockup
3707 occur if arr is large, and appear to the user as a system lockup
3704 with 100% cpu activity. After a suggestion by Kristian Sandberg
3708 with 100% cpu activity. After a suggestion by Kristian Sandberg
3705 <Kristian.Sandberg@colorado.edu>.
3709 <Kristian.Sandberg@colorado.edu>.
3706 (Magic.__init__): fix bug in global magic escapes not being
3710 (Magic.__init__): fix bug in global magic escapes not being
3707 correctly set.
3711 correctly set.
3708
3712
3709 2004-10-08 Fernando Perez <fperez@colorado.edu>
3713 2004-10-08 Fernando Perez <fperez@colorado.edu>
3710
3714
3711 * IPython/Magic.py (__license__): change to absolute imports of
3715 * IPython/Magic.py (__license__): change to absolute imports of
3712 ipython's own internal packages, to start adapting to the absolute
3716 ipython's own internal packages, to start adapting to the absolute
3713 import requirement of PEP-328.
3717 import requirement of PEP-328.
3714
3718
3715 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3719 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3716 files, and standardize author/license marks through the Release
3720 files, and standardize author/license marks through the Release
3717 module instead of having per/file stuff (except for files with
3721 module instead of having per/file stuff (except for files with
3718 particular licenses, like the MIT/PSF-licensed codes).
3722 particular licenses, like the MIT/PSF-licensed codes).
3719
3723
3720 * IPython/Debugger.py: remove dead code for python 2.1
3724 * IPython/Debugger.py: remove dead code for python 2.1
3721
3725
3722 2004-10-04 Fernando Perez <fperez@colorado.edu>
3726 2004-10-04 Fernando Perez <fperez@colorado.edu>
3723
3727
3724 * IPython/iplib.py (ipmagic): New function for accessing magics
3728 * IPython/iplib.py (ipmagic): New function for accessing magics
3725 via a normal python function call.
3729 via a normal python function call.
3726
3730
3727 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3731 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3728 from '@' to '%', to accomodate the new @decorator syntax of python
3732 from '@' to '%', to accomodate the new @decorator syntax of python
3729 2.4.
3733 2.4.
3730
3734
3731 2004-09-29 Fernando Perez <fperez@colorado.edu>
3735 2004-09-29 Fernando Perez <fperez@colorado.edu>
3732
3736
3733 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3737 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3734 matplotlib.use to prevent running scripts which try to switch
3738 matplotlib.use to prevent running scripts which try to switch
3735 interactive backends from within ipython. This will just crash
3739 interactive backends from within ipython. This will just crash
3736 the python interpreter, so we can't allow it (but a detailed error
3740 the python interpreter, so we can't allow it (but a detailed error
3737 is given to the user).
3741 is given to the user).
3738
3742
3739 2004-09-28 Fernando Perez <fperez@colorado.edu>
3743 2004-09-28 Fernando Perez <fperez@colorado.edu>
3740
3744
3741 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3745 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3742 matplotlib-related fixes so that using @run with non-matplotlib
3746 matplotlib-related fixes so that using @run with non-matplotlib
3743 scripts doesn't pop up spurious plot windows. This requires
3747 scripts doesn't pop up spurious plot windows. This requires
3744 matplotlib >= 0.63, where I had to make some changes as well.
3748 matplotlib >= 0.63, where I had to make some changes as well.
3745
3749
3746 * IPython/ipmaker.py (make_IPython): update version requirement to
3750 * IPython/ipmaker.py (make_IPython): update version requirement to
3747 python 2.2.
3751 python 2.2.
3748
3752
3749 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3753 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3750 banner arg for embedded customization.
3754 banner arg for embedded customization.
3751
3755
3752 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3756 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3753 explicit uses of __IP as the IPython's instance name. Now things
3757 explicit uses of __IP as the IPython's instance name. Now things
3754 are properly handled via the shell.name value. The actual code
3758 are properly handled via the shell.name value. The actual code
3755 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3759 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3756 is much better than before. I'll clean things completely when the
3760 is much better than before. I'll clean things completely when the
3757 magic stuff gets a real overhaul.
3761 magic stuff gets a real overhaul.
3758
3762
3759 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3763 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3760 minor changes to debian dir.
3764 minor changes to debian dir.
3761
3765
3762 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3766 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3763 pointer to the shell itself in the interactive namespace even when
3767 pointer to the shell itself in the interactive namespace even when
3764 a user-supplied dict is provided. This is needed for embedding
3768 a user-supplied dict is provided. This is needed for embedding
3765 purposes (found by tests with Michel Sanner).
3769 purposes (found by tests with Michel Sanner).
3766
3770
3767 2004-09-27 Fernando Perez <fperez@colorado.edu>
3771 2004-09-27 Fernando Perez <fperez@colorado.edu>
3768
3772
3769 * IPython/UserConfig/ipythonrc: remove []{} from
3773 * IPython/UserConfig/ipythonrc: remove []{} from
3770 readline_remove_delims, so that things like [modname.<TAB> do
3774 readline_remove_delims, so that things like [modname.<TAB> do
3771 proper completion. This disables [].TAB, but that's a less common
3775 proper completion. This disables [].TAB, but that's a less common
3772 case than module names in list comprehensions, for example.
3776 case than module names in list comprehensions, for example.
3773 Thanks to a report by Andrea Riciputi.
3777 Thanks to a report by Andrea Riciputi.
3774
3778
3775 2004-09-09 Fernando Perez <fperez@colorado.edu>
3779 2004-09-09 Fernando Perez <fperez@colorado.edu>
3776
3780
3777 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3781 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3778 blocking problems in win32 and osx. Fix by John.
3782 blocking problems in win32 and osx. Fix by John.
3779
3783
3780 2004-09-08 Fernando Perez <fperez@colorado.edu>
3784 2004-09-08 Fernando Perez <fperez@colorado.edu>
3781
3785
3782 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3786 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3783 for Win32 and OSX. Fix by John Hunter.
3787 for Win32 and OSX. Fix by John Hunter.
3784
3788
3785 2004-08-30 *** Released version 0.6.3
3789 2004-08-30 *** Released version 0.6.3
3786
3790
3787 2004-08-30 Fernando Perez <fperez@colorado.edu>
3791 2004-08-30 Fernando Perez <fperez@colorado.edu>
3788
3792
3789 * setup.py (isfile): Add manpages to list of dependent files to be
3793 * setup.py (isfile): Add manpages to list of dependent files to be
3790 updated.
3794 updated.
3791
3795
3792 2004-08-27 Fernando Perez <fperez@colorado.edu>
3796 2004-08-27 Fernando Perez <fperez@colorado.edu>
3793
3797
3794 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3798 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3795 for now. They don't really work with standalone WX/GTK code
3799 for now. They don't really work with standalone WX/GTK code
3796 (though matplotlib IS working fine with both of those backends).
3800 (though matplotlib IS working fine with both of those backends).
3797 This will neeed much more testing. I disabled most things with
3801 This will neeed much more testing. I disabled most things with
3798 comments, so turning it back on later should be pretty easy.
3802 comments, so turning it back on later should be pretty easy.
3799
3803
3800 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3804 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3801 autocalling of expressions like r'foo', by modifying the line
3805 autocalling of expressions like r'foo', by modifying the line
3802 split regexp. Closes
3806 split regexp. Closes
3803 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3807 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3804 Riley <ipythonbugs-AT-sabi.net>.
3808 Riley <ipythonbugs-AT-sabi.net>.
3805 (InteractiveShell.mainloop): honor --nobanner with banner
3809 (InteractiveShell.mainloop): honor --nobanner with banner
3806 extensions.
3810 extensions.
3807
3811
3808 * IPython/Shell.py: Significant refactoring of all classes, so
3812 * IPython/Shell.py: Significant refactoring of all classes, so
3809 that we can really support ALL matplotlib backends and threading
3813 that we can really support ALL matplotlib backends and threading
3810 models (John spotted a bug with Tk which required this). Now we
3814 models (John spotted a bug with Tk which required this). Now we
3811 should support single-threaded, WX-threads and GTK-threads, both
3815 should support single-threaded, WX-threads and GTK-threads, both
3812 for generic code and for matplotlib.
3816 for generic code and for matplotlib.
3813
3817
3814 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3818 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3815 -pylab, to simplify things for users. Will also remove the pylab
3819 -pylab, to simplify things for users. Will also remove the pylab
3816 profile, since now all of matplotlib configuration is directly
3820 profile, since now all of matplotlib configuration is directly
3817 handled here. This also reduces startup time.
3821 handled here. This also reduces startup time.
3818
3822
3819 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3823 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3820 shell wasn't being correctly called. Also in IPShellWX.
3824 shell wasn't being correctly called. Also in IPShellWX.
3821
3825
3822 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3826 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3823 fine-tune banner.
3827 fine-tune banner.
3824
3828
3825 * IPython/numutils.py (spike): Deprecate these spike functions,
3829 * IPython/numutils.py (spike): Deprecate these spike functions,
3826 delete (long deprecated) gnuplot_exec handler.
3830 delete (long deprecated) gnuplot_exec handler.
3827
3831
3828 2004-08-26 Fernando Perez <fperez@colorado.edu>
3832 2004-08-26 Fernando Perez <fperez@colorado.edu>
3829
3833
3830 * ipython.1: Update for threading options, plus some others which
3834 * ipython.1: Update for threading options, plus some others which
3831 were missing.
3835 were missing.
3832
3836
3833 * IPython/ipmaker.py (__call__): Added -wthread option for
3837 * IPython/ipmaker.py (__call__): Added -wthread option for
3834 wxpython thread handling. Make sure threading options are only
3838 wxpython thread handling. Make sure threading options are only
3835 valid at the command line.
3839 valid at the command line.
3836
3840
3837 * scripts/ipython: moved shell selection into a factory function
3841 * scripts/ipython: moved shell selection into a factory function
3838 in Shell.py, to keep the starter script to a minimum.
3842 in Shell.py, to keep the starter script to a minimum.
3839
3843
3840 2004-08-25 Fernando Perez <fperez@colorado.edu>
3844 2004-08-25 Fernando Perez <fperez@colorado.edu>
3841
3845
3842 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3846 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3843 John. Along with some recent changes he made to matplotlib, the
3847 John. Along with some recent changes he made to matplotlib, the
3844 next versions of both systems should work very well together.
3848 next versions of both systems should work very well together.
3845
3849
3846 2004-08-24 Fernando Perez <fperez@colorado.edu>
3850 2004-08-24 Fernando Perez <fperez@colorado.edu>
3847
3851
3848 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3852 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3849 tried to switch the profiling to using hotshot, but I'm getting
3853 tried to switch the profiling to using hotshot, but I'm getting
3850 strange errors from prof.runctx() there. I may be misreading the
3854 strange errors from prof.runctx() there. I may be misreading the
3851 docs, but it looks weird. For now the profiling code will
3855 docs, but it looks weird. For now the profiling code will
3852 continue to use the standard profiler.
3856 continue to use the standard profiler.
3853
3857
3854 2004-08-23 Fernando Perez <fperez@colorado.edu>
3858 2004-08-23 Fernando Perez <fperez@colorado.edu>
3855
3859
3856 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3860 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3857 threaded shell, by John Hunter. It's not quite ready yet, but
3861 threaded shell, by John Hunter. It's not quite ready yet, but
3858 close.
3862 close.
3859
3863
3860 2004-08-22 Fernando Perez <fperez@colorado.edu>
3864 2004-08-22 Fernando Perez <fperez@colorado.edu>
3861
3865
3862 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3866 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3863 in Magic and ultraTB.
3867 in Magic and ultraTB.
3864
3868
3865 * ipython.1: document threading options in manpage.
3869 * ipython.1: document threading options in manpage.
3866
3870
3867 * scripts/ipython: Changed name of -thread option to -gthread,
3871 * scripts/ipython: Changed name of -thread option to -gthread,
3868 since this is GTK specific. I want to leave the door open for a
3872 since this is GTK specific. I want to leave the door open for a
3869 -wthread option for WX, which will most likely be necessary. This
3873 -wthread option for WX, which will most likely be necessary. This
3870 change affects usage and ipmaker as well.
3874 change affects usage and ipmaker as well.
3871
3875
3872 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3876 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3873 handle the matplotlib shell issues. Code by John Hunter
3877 handle the matplotlib shell issues. Code by John Hunter
3874 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3878 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3875 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3879 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3876 broken (and disabled for end users) for now, but it puts the
3880 broken (and disabled for end users) for now, but it puts the
3877 infrastructure in place.
3881 infrastructure in place.
3878
3882
3879 2004-08-21 Fernando Perez <fperez@colorado.edu>
3883 2004-08-21 Fernando Perez <fperez@colorado.edu>
3880
3884
3881 * ipythonrc-pylab: Add matplotlib support.
3885 * ipythonrc-pylab: Add matplotlib support.
3882
3886
3883 * matplotlib_config.py: new files for matplotlib support, part of
3887 * matplotlib_config.py: new files for matplotlib support, part of
3884 the pylab profile.
3888 the pylab profile.
3885
3889
3886 * IPython/usage.py (__doc__): documented the threading options.
3890 * IPython/usage.py (__doc__): documented the threading options.
3887
3891
3888 2004-08-20 Fernando Perez <fperez@colorado.edu>
3892 2004-08-20 Fernando Perez <fperez@colorado.edu>
3889
3893
3890 * ipython: Modified the main calling routine to handle the -thread
3894 * ipython: Modified the main calling routine to handle the -thread
3891 and -mpthread options. This needs to be done as a top-level hack,
3895 and -mpthread options. This needs to be done as a top-level hack,
3892 because it determines which class to instantiate for IPython
3896 because it determines which class to instantiate for IPython
3893 itself.
3897 itself.
3894
3898
3895 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3899 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3896 classes to support multithreaded GTK operation without blocking,
3900 classes to support multithreaded GTK operation without blocking,
3897 and matplotlib with all backends. This is a lot of still very
3901 and matplotlib with all backends. This is a lot of still very
3898 experimental code, and threads are tricky. So it may still have a
3902 experimental code, and threads are tricky. So it may still have a
3899 few rough edges... This code owes a lot to
3903 few rough edges... This code owes a lot to
3900 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3904 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3901 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3905 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3902 to John Hunter for all the matplotlib work.
3906 to John Hunter for all the matplotlib work.
3903
3907
3904 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3908 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3905 options for gtk thread and matplotlib support.
3909 options for gtk thread and matplotlib support.
3906
3910
3907 2004-08-16 Fernando Perez <fperez@colorado.edu>
3911 2004-08-16 Fernando Perez <fperez@colorado.edu>
3908
3912
3909 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3913 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3910 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3914 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3911 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3915 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3912
3916
3913 2004-08-11 Fernando Perez <fperez@colorado.edu>
3917 2004-08-11 Fernando Perez <fperez@colorado.edu>
3914
3918
3915 * setup.py (isfile): Fix build so documentation gets updated for
3919 * setup.py (isfile): Fix build so documentation gets updated for
3916 rpms (it was only done for .tgz builds).
3920 rpms (it was only done for .tgz builds).
3917
3921
3918 2004-08-10 Fernando Perez <fperez@colorado.edu>
3922 2004-08-10 Fernando Perez <fperez@colorado.edu>
3919
3923
3920 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3924 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3921
3925
3922 * iplib.py : Silence syntax error exceptions in tab-completion.
3926 * iplib.py : Silence syntax error exceptions in tab-completion.
3923
3927
3924 2004-08-05 Fernando Perez <fperez@colorado.edu>
3928 2004-08-05 Fernando Perez <fperez@colorado.edu>
3925
3929
3926 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3930 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3927 'color off' mark for continuation prompts. This was causing long
3931 'color off' mark for continuation prompts. This was causing long
3928 continuation lines to mis-wrap.
3932 continuation lines to mis-wrap.
3929
3933
3930 2004-08-01 Fernando Perez <fperez@colorado.edu>
3934 2004-08-01 Fernando Perez <fperez@colorado.edu>
3931
3935
3932 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3936 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3933 for building ipython to be a parameter. All this is necessary
3937 for building ipython to be a parameter. All this is necessary
3934 right now to have a multithreaded version, but this insane
3938 right now to have a multithreaded version, but this insane
3935 non-design will be cleaned up soon. For now, it's a hack that
3939 non-design will be cleaned up soon. For now, it's a hack that
3936 works.
3940 works.
3937
3941
3938 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3942 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3939 args in various places. No bugs so far, but it's a dangerous
3943 args in various places. No bugs so far, but it's a dangerous
3940 practice.
3944 practice.
3941
3945
3942 2004-07-31 Fernando Perez <fperez@colorado.edu>
3946 2004-07-31 Fernando Perez <fperez@colorado.edu>
3943
3947
3944 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3948 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3945 fix completion of files with dots in their names under most
3949 fix completion of files with dots in their names under most
3946 profiles (pysh was OK because the completion order is different).
3950 profiles (pysh was OK because the completion order is different).
3947
3951
3948 2004-07-27 Fernando Perez <fperez@colorado.edu>
3952 2004-07-27 Fernando Perez <fperez@colorado.edu>
3949
3953
3950 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3954 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3951 keywords manually, b/c the one in keyword.py was removed in python
3955 keywords manually, b/c the one in keyword.py was removed in python
3952 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3956 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3953 This is NOT a bug under python 2.3 and earlier.
3957 This is NOT a bug under python 2.3 and earlier.
3954
3958
3955 2004-07-26 Fernando Perez <fperez@colorado.edu>
3959 2004-07-26 Fernando Perez <fperez@colorado.edu>
3956
3960
3957 * IPython/ultraTB.py (VerboseTB.text): Add another
3961 * IPython/ultraTB.py (VerboseTB.text): Add another
3958 linecache.checkcache() call to try to prevent inspect.py from
3962 linecache.checkcache() call to try to prevent inspect.py from
3959 crashing under python 2.3. I think this fixes
3963 crashing under python 2.3. I think this fixes
3960 http://www.scipy.net/roundup/ipython/issue17.
3964 http://www.scipy.net/roundup/ipython/issue17.
3961
3965
3962 2004-07-26 *** Released version 0.6.2
3966 2004-07-26 *** Released version 0.6.2
3963
3967
3964 2004-07-26 Fernando Perez <fperez@colorado.edu>
3968 2004-07-26 Fernando Perez <fperez@colorado.edu>
3965
3969
3966 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3970 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3967 fail for any number.
3971 fail for any number.
3968 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3972 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3969 empty bookmarks.
3973 empty bookmarks.
3970
3974
3971 2004-07-26 *** Released version 0.6.1
3975 2004-07-26 *** Released version 0.6.1
3972
3976
3973 2004-07-26 Fernando Perez <fperez@colorado.edu>
3977 2004-07-26 Fernando Perez <fperez@colorado.edu>
3974
3978
3975 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3979 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3976
3980
3977 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3981 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3978 escaping '()[]{}' in filenames.
3982 escaping '()[]{}' in filenames.
3979
3983
3980 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3984 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3981 Python 2.2 users who lack a proper shlex.split.
3985 Python 2.2 users who lack a proper shlex.split.
3982
3986
3983 2004-07-19 Fernando Perez <fperez@colorado.edu>
3987 2004-07-19 Fernando Perez <fperez@colorado.edu>
3984
3988
3985 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3989 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3986 for reading readline's init file. I follow the normal chain:
3990 for reading readline's init file. I follow the normal chain:
3987 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3991 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3988 report by Mike Heeter. This closes
3992 report by Mike Heeter. This closes
3989 http://www.scipy.net/roundup/ipython/issue16.
3993 http://www.scipy.net/roundup/ipython/issue16.
3990
3994
3991 2004-07-18 Fernando Perez <fperez@colorado.edu>
3995 2004-07-18 Fernando Perez <fperez@colorado.edu>
3992
3996
3993 * IPython/iplib.py (__init__): Add better handling of '\' under
3997 * IPython/iplib.py (__init__): Add better handling of '\' under
3994 Win32 for filenames. After a patch by Ville.
3998 Win32 for filenames. After a patch by Ville.
3995
3999
3996 2004-07-17 Fernando Perez <fperez@colorado.edu>
4000 2004-07-17 Fernando Perez <fperez@colorado.edu>
3997
4001
3998 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4002 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3999 autocalling would be triggered for 'foo is bar' if foo is
4003 autocalling would be triggered for 'foo is bar' if foo is
4000 callable. I also cleaned up the autocall detection code to use a
4004 callable. I also cleaned up the autocall detection code to use a
4001 regexp, which is faster. Bug reported by Alexander Schmolck.
4005 regexp, which is faster. Bug reported by Alexander Schmolck.
4002
4006
4003 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4007 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4004 '?' in them would confuse the help system. Reported by Alex
4008 '?' in them would confuse the help system. Reported by Alex
4005 Schmolck.
4009 Schmolck.
4006
4010
4007 2004-07-16 Fernando Perez <fperez@colorado.edu>
4011 2004-07-16 Fernando Perez <fperez@colorado.edu>
4008
4012
4009 * IPython/GnuplotInteractive.py (__all__): added plot2.
4013 * IPython/GnuplotInteractive.py (__all__): added plot2.
4010
4014
4011 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4015 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4012 plotting dictionaries, lists or tuples of 1d arrays.
4016 plotting dictionaries, lists or tuples of 1d arrays.
4013
4017
4014 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4018 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4015 optimizations.
4019 optimizations.
4016
4020
4017 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4021 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4018 the information which was there from Janko's original IPP code:
4022 the information which was there from Janko's original IPP code:
4019
4023
4020 03.05.99 20:53 porto.ifm.uni-kiel.de
4024 03.05.99 20:53 porto.ifm.uni-kiel.de
4021 --Started changelog.
4025 --Started changelog.
4022 --make clear do what it say it does
4026 --make clear do what it say it does
4023 --added pretty output of lines from inputcache
4027 --added pretty output of lines from inputcache
4024 --Made Logger a mixin class, simplifies handling of switches
4028 --Made Logger a mixin class, simplifies handling of switches
4025 --Added own completer class. .string<TAB> expands to last history
4029 --Added own completer class. .string<TAB> expands to last history
4026 line which starts with string. The new expansion is also present
4030 line which starts with string. The new expansion is also present
4027 with Ctrl-r from the readline library. But this shows, who this
4031 with Ctrl-r from the readline library. But this shows, who this
4028 can be done for other cases.
4032 can be done for other cases.
4029 --Added convention that all shell functions should accept a
4033 --Added convention that all shell functions should accept a
4030 parameter_string This opens the door for different behaviour for
4034 parameter_string This opens the door for different behaviour for
4031 each function. @cd is a good example of this.
4035 each function. @cd is a good example of this.
4032
4036
4033 04.05.99 12:12 porto.ifm.uni-kiel.de
4037 04.05.99 12:12 porto.ifm.uni-kiel.de
4034 --added logfile rotation
4038 --added logfile rotation
4035 --added new mainloop method which freezes first the namespace
4039 --added new mainloop method which freezes first the namespace
4036
4040
4037 07.05.99 21:24 porto.ifm.uni-kiel.de
4041 07.05.99 21:24 porto.ifm.uni-kiel.de
4038 --added the docreader classes. Now there is a help system.
4042 --added the docreader classes. Now there is a help system.
4039 -This is only a first try. Currently it's not easy to put new
4043 -This is only a first try. Currently it's not easy to put new
4040 stuff in the indices. But this is the way to go. Info would be
4044 stuff in the indices. But this is the way to go. Info would be
4041 better, but HTML is every where and not everybody has an info
4045 better, but HTML is every where and not everybody has an info
4042 system installed and it's not so easy to change html-docs to info.
4046 system installed and it's not so easy to change html-docs to info.
4043 --added global logfile option
4047 --added global logfile option
4044 --there is now a hook for object inspection method pinfo needs to
4048 --there is now a hook for object inspection method pinfo needs to
4045 be provided for this. Can be reached by two '??'.
4049 be provided for this. Can be reached by two '??'.
4046
4050
4047 08.05.99 20:51 porto.ifm.uni-kiel.de
4051 08.05.99 20:51 porto.ifm.uni-kiel.de
4048 --added a README
4052 --added a README
4049 --bug in rc file. Something has changed so functions in the rc
4053 --bug in rc file. Something has changed so functions in the rc
4050 file need to reference the shell and not self. Not clear if it's a
4054 file need to reference the shell and not self. Not clear if it's a
4051 bug or feature.
4055 bug or feature.
4052 --changed rc file for new behavior
4056 --changed rc file for new behavior
4053
4057
4054 2004-07-15 Fernando Perez <fperez@colorado.edu>
4058 2004-07-15 Fernando Perez <fperez@colorado.edu>
4055
4059
4056 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4060 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4057 cache was falling out of sync in bizarre manners when multi-line
4061 cache was falling out of sync in bizarre manners when multi-line
4058 input was present. Minor optimizations and cleanup.
4062 input was present. Minor optimizations and cleanup.
4059
4063
4060 (Logger): Remove old Changelog info for cleanup. This is the
4064 (Logger): Remove old Changelog info for cleanup. This is the
4061 information which was there from Janko's original code:
4065 information which was there from Janko's original code:
4062
4066
4063 Changes to Logger: - made the default log filename a parameter
4067 Changes to Logger: - made the default log filename a parameter
4064
4068
4065 - put a check for lines beginning with !@? in log(). Needed
4069 - put a check for lines beginning with !@? in log(). Needed
4066 (even if the handlers properly log their lines) for mid-session
4070 (even if the handlers properly log their lines) for mid-session
4067 logging activation to work properly. Without this, lines logged
4071 logging activation to work properly. Without this, lines logged
4068 in mid session, which get read from the cache, would end up
4072 in mid session, which get read from the cache, would end up
4069 'bare' (with !@? in the open) in the log. Now they are caught
4073 'bare' (with !@? in the open) in the log. Now they are caught
4070 and prepended with a #.
4074 and prepended with a #.
4071
4075
4072 * IPython/iplib.py (InteractiveShell.init_readline): added check
4076 * IPython/iplib.py (InteractiveShell.init_readline): added check
4073 in case MagicCompleter fails to be defined, so we don't crash.
4077 in case MagicCompleter fails to be defined, so we don't crash.
4074
4078
4075 2004-07-13 Fernando Perez <fperez@colorado.edu>
4079 2004-07-13 Fernando Perez <fperez@colorado.edu>
4076
4080
4077 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4081 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4078 of EPS if the requested filename ends in '.eps'.
4082 of EPS if the requested filename ends in '.eps'.
4079
4083
4080 2004-07-04 Fernando Perez <fperez@colorado.edu>
4084 2004-07-04 Fernando Perez <fperez@colorado.edu>
4081
4085
4082 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4086 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4083 escaping of quotes when calling the shell.
4087 escaping of quotes when calling the shell.
4084
4088
4085 2004-07-02 Fernando Perez <fperez@colorado.edu>
4089 2004-07-02 Fernando Perez <fperez@colorado.edu>
4086
4090
4087 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4091 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4088 gettext not working because we were clobbering '_'. Fixes
4092 gettext not working because we were clobbering '_'. Fixes
4089 http://www.scipy.net/roundup/ipython/issue6.
4093 http://www.scipy.net/roundup/ipython/issue6.
4090
4094
4091 2004-07-01 Fernando Perez <fperez@colorado.edu>
4095 2004-07-01 Fernando Perez <fperez@colorado.edu>
4092
4096
4093 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4097 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4094 into @cd. Patch by Ville.
4098 into @cd. Patch by Ville.
4095
4099
4096 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4100 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4097 new function to store things after ipmaker runs. Patch by Ville.
4101 new function to store things after ipmaker runs. Patch by Ville.
4098 Eventually this will go away once ipmaker is removed and the class
4102 Eventually this will go away once ipmaker is removed and the class
4099 gets cleaned up, but for now it's ok. Key functionality here is
4103 gets cleaned up, but for now it's ok. Key functionality here is
4100 the addition of the persistent storage mechanism, a dict for
4104 the addition of the persistent storage mechanism, a dict for
4101 keeping data across sessions (for now just bookmarks, but more can
4105 keeping data across sessions (for now just bookmarks, but more can
4102 be implemented later).
4106 be implemented later).
4103
4107
4104 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4108 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4105 persistent across sections. Patch by Ville, I modified it
4109 persistent across sections. Patch by Ville, I modified it
4106 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4110 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4107 added a '-l' option to list all bookmarks.
4111 added a '-l' option to list all bookmarks.
4108
4112
4109 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4113 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4110 center for cleanup. Registered with atexit.register(). I moved
4114 center for cleanup. Registered with atexit.register(). I moved
4111 here the old exit_cleanup(). After a patch by Ville.
4115 here the old exit_cleanup(). After a patch by Ville.
4112
4116
4113 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4117 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4114 characters in the hacked shlex_split for python 2.2.
4118 characters in the hacked shlex_split for python 2.2.
4115
4119
4116 * IPython/iplib.py (file_matches): more fixes to filenames with
4120 * IPython/iplib.py (file_matches): more fixes to filenames with
4117 whitespace in them. It's not perfect, but limitations in python's
4121 whitespace in them. It's not perfect, but limitations in python's
4118 readline make it impossible to go further.
4122 readline make it impossible to go further.
4119
4123
4120 2004-06-29 Fernando Perez <fperez@colorado.edu>
4124 2004-06-29 Fernando Perez <fperez@colorado.edu>
4121
4125
4122 * IPython/iplib.py (file_matches): escape whitespace correctly in
4126 * IPython/iplib.py (file_matches): escape whitespace correctly in
4123 filename completions. Bug reported by Ville.
4127 filename completions. Bug reported by Ville.
4124
4128
4125 2004-06-28 Fernando Perez <fperez@colorado.edu>
4129 2004-06-28 Fernando Perez <fperez@colorado.edu>
4126
4130
4127 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4131 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4128 the history file will be called 'history-PROFNAME' (or just
4132 the history file will be called 'history-PROFNAME' (or just
4129 'history' if no profile is loaded). I was getting annoyed at
4133 'history' if no profile is loaded). I was getting annoyed at
4130 getting my Numerical work history clobbered by pysh sessions.
4134 getting my Numerical work history clobbered by pysh sessions.
4131
4135
4132 * IPython/iplib.py (InteractiveShell.__init__): Internal
4136 * IPython/iplib.py (InteractiveShell.__init__): Internal
4133 getoutputerror() function so that we can honor the system_verbose
4137 getoutputerror() function so that we can honor the system_verbose
4134 flag for _all_ system calls. I also added escaping of #
4138 flag for _all_ system calls. I also added escaping of #
4135 characters here to avoid confusing Itpl.
4139 characters here to avoid confusing Itpl.
4136
4140
4137 * IPython/Magic.py (shlex_split): removed call to shell in
4141 * IPython/Magic.py (shlex_split): removed call to shell in
4138 parse_options and replaced it with shlex.split(). The annoying
4142 parse_options and replaced it with shlex.split(). The annoying
4139 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4143 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4140 to backport it from 2.3, with several frail hacks (the shlex
4144 to backport it from 2.3, with several frail hacks (the shlex
4141 module is rather limited in 2.2). Thanks to a suggestion by Ville
4145 module is rather limited in 2.2). Thanks to a suggestion by Ville
4142 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4146 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4143 problem.
4147 problem.
4144
4148
4145 (Magic.magic_system_verbose): new toggle to print the actual
4149 (Magic.magic_system_verbose): new toggle to print the actual
4146 system calls made by ipython. Mainly for debugging purposes.
4150 system calls made by ipython. Mainly for debugging purposes.
4147
4151
4148 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4152 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4149 doesn't support persistence. Reported (and fix suggested) by
4153 doesn't support persistence. Reported (and fix suggested) by
4150 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4154 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4151
4155
4152 2004-06-26 Fernando Perez <fperez@colorado.edu>
4156 2004-06-26 Fernando Perez <fperez@colorado.edu>
4153
4157
4154 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4158 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4155 continue prompts.
4159 continue prompts.
4156
4160
4157 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4161 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4158 function (basically a big docstring) and a few more things here to
4162 function (basically a big docstring) and a few more things here to
4159 speedup startup. pysh.py is now very lightweight. We want because
4163 speedup startup. pysh.py is now very lightweight. We want because
4160 it gets execfile'd, while InterpreterExec gets imported, so
4164 it gets execfile'd, while InterpreterExec gets imported, so
4161 byte-compilation saves time.
4165 byte-compilation saves time.
4162
4166
4163 2004-06-25 Fernando Perez <fperez@colorado.edu>
4167 2004-06-25 Fernando Perez <fperez@colorado.edu>
4164
4168
4165 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4169 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4166 -NUM', which was recently broken.
4170 -NUM', which was recently broken.
4167
4171
4168 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4172 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4169 in multi-line input (but not !!, which doesn't make sense there).
4173 in multi-line input (but not !!, which doesn't make sense there).
4170
4174
4171 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4175 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4172 It's just too useful, and people can turn it off in the less
4176 It's just too useful, and people can turn it off in the less
4173 common cases where it's a problem.
4177 common cases where it's a problem.
4174
4178
4175 2004-06-24 Fernando Perez <fperez@colorado.edu>
4179 2004-06-24 Fernando Perez <fperez@colorado.edu>
4176
4180
4177 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4181 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4178 special syntaxes (like alias calling) is now allied in multi-line
4182 special syntaxes (like alias calling) is now allied in multi-line
4179 input. This is still _very_ experimental, but it's necessary for
4183 input. This is still _very_ experimental, but it's necessary for
4180 efficient shell usage combining python looping syntax with system
4184 efficient shell usage combining python looping syntax with system
4181 calls. For now it's restricted to aliases, I don't think it
4185 calls. For now it's restricted to aliases, I don't think it
4182 really even makes sense to have this for magics.
4186 really even makes sense to have this for magics.
4183
4187
4184 2004-06-23 Fernando Perez <fperez@colorado.edu>
4188 2004-06-23 Fernando Perez <fperez@colorado.edu>
4185
4189
4186 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4190 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4187 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4191 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4188
4192
4189 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4193 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4190 extensions under Windows (after code sent by Gary Bishop). The
4194 extensions under Windows (after code sent by Gary Bishop). The
4191 extensions considered 'executable' are stored in IPython's rc
4195 extensions considered 'executable' are stored in IPython's rc
4192 structure as win_exec_ext.
4196 structure as win_exec_ext.
4193
4197
4194 * IPython/genutils.py (shell): new function, like system() but
4198 * IPython/genutils.py (shell): new function, like system() but
4195 without return value. Very useful for interactive shell work.
4199 without return value. Very useful for interactive shell work.
4196
4200
4197 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4201 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4198 delete aliases.
4202 delete aliases.
4199
4203
4200 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4204 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4201 sure that the alias table doesn't contain python keywords.
4205 sure that the alias table doesn't contain python keywords.
4202
4206
4203 2004-06-21 Fernando Perez <fperez@colorado.edu>
4207 2004-06-21 Fernando Perez <fperez@colorado.edu>
4204
4208
4205 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4209 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4206 non-existent items are found in $PATH. Reported by Thorsten.
4210 non-existent items are found in $PATH. Reported by Thorsten.
4207
4211
4208 2004-06-20 Fernando Perez <fperez@colorado.edu>
4212 2004-06-20 Fernando Perez <fperez@colorado.edu>
4209
4213
4210 * IPython/iplib.py (complete): modified the completer so that the
4214 * IPython/iplib.py (complete): modified the completer so that the
4211 order of priorities can be easily changed at runtime.
4215 order of priorities can be easily changed at runtime.
4212
4216
4213 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4217 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4214 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4218 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4215
4219
4216 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4220 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4217 expand Python variables prepended with $ in all system calls. The
4221 expand Python variables prepended with $ in all system calls. The
4218 same was done to InteractiveShell.handle_shell_escape. Now all
4222 same was done to InteractiveShell.handle_shell_escape. Now all
4219 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4223 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4220 expansion of python variables and expressions according to the
4224 expansion of python variables and expressions according to the
4221 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4225 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4222
4226
4223 Though PEP-215 has been rejected, a similar (but simpler) one
4227 Though PEP-215 has been rejected, a similar (but simpler) one
4224 seems like it will go into Python 2.4, PEP-292 -
4228 seems like it will go into Python 2.4, PEP-292 -
4225 http://www.python.org/peps/pep-0292.html.
4229 http://www.python.org/peps/pep-0292.html.
4226
4230
4227 I'll keep the full syntax of PEP-215, since IPython has since the
4231 I'll keep the full syntax of PEP-215, since IPython has since the
4228 start used Ka-Ping Yee's reference implementation discussed there
4232 start used Ka-Ping Yee's reference implementation discussed there
4229 (Itpl), and I actually like the powerful semantics it offers.
4233 (Itpl), and I actually like the powerful semantics it offers.
4230
4234
4231 In order to access normal shell variables, the $ has to be escaped
4235 In order to access normal shell variables, the $ has to be escaped
4232 via an extra $. For example:
4236 via an extra $. For example:
4233
4237
4234 In [7]: PATH='a python variable'
4238 In [7]: PATH='a python variable'
4235
4239
4236 In [8]: !echo $PATH
4240 In [8]: !echo $PATH
4237 a python variable
4241 a python variable
4238
4242
4239 In [9]: !echo $$PATH
4243 In [9]: !echo $$PATH
4240 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4244 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4241
4245
4242 (Magic.parse_options): escape $ so the shell doesn't evaluate
4246 (Magic.parse_options): escape $ so the shell doesn't evaluate
4243 things prematurely.
4247 things prematurely.
4244
4248
4245 * IPython/iplib.py (InteractiveShell.call_alias): added the
4249 * IPython/iplib.py (InteractiveShell.call_alias): added the
4246 ability for aliases to expand python variables via $.
4250 ability for aliases to expand python variables via $.
4247
4251
4248 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4252 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4249 system, now there's a @rehash/@rehashx pair of magics. These work
4253 system, now there's a @rehash/@rehashx pair of magics. These work
4250 like the csh rehash command, and can be invoked at any time. They
4254 like the csh rehash command, and can be invoked at any time. They
4251 build a table of aliases to everything in the user's $PATH
4255 build a table of aliases to everything in the user's $PATH
4252 (@rehash uses everything, @rehashx is slower but only adds
4256 (@rehash uses everything, @rehashx is slower but only adds
4253 executable files). With this, the pysh.py-based shell profile can
4257 executable files). With this, the pysh.py-based shell profile can
4254 now simply call rehash upon startup, and full access to all
4258 now simply call rehash upon startup, and full access to all
4255 programs in the user's path is obtained.
4259 programs in the user's path is obtained.
4256
4260
4257 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4261 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4258 functionality is now fully in place. I removed the old dynamic
4262 functionality is now fully in place. I removed the old dynamic
4259 code generation based approach, in favor of a much lighter one
4263 code generation based approach, in favor of a much lighter one
4260 based on a simple dict. The advantage is that this allows me to
4264 based on a simple dict. The advantage is that this allows me to
4261 now have thousands of aliases with negligible cost (unthinkable
4265 now have thousands of aliases with negligible cost (unthinkable
4262 with the old system).
4266 with the old system).
4263
4267
4264 2004-06-19 Fernando Perez <fperez@colorado.edu>
4268 2004-06-19 Fernando Perez <fperez@colorado.edu>
4265
4269
4266 * IPython/iplib.py (__init__): extended MagicCompleter class to
4270 * IPython/iplib.py (__init__): extended MagicCompleter class to
4267 also complete (last in priority) on user aliases.
4271 also complete (last in priority) on user aliases.
4268
4272
4269 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4273 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4270 call to eval.
4274 call to eval.
4271 (ItplNS.__init__): Added a new class which functions like Itpl,
4275 (ItplNS.__init__): Added a new class which functions like Itpl,
4272 but allows configuring the namespace for the evaluation to occur
4276 but allows configuring the namespace for the evaluation to occur
4273 in.
4277 in.
4274
4278
4275 2004-06-18 Fernando Perez <fperez@colorado.edu>
4279 2004-06-18 Fernando Perez <fperez@colorado.edu>
4276
4280
4277 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4281 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4278 better message when 'exit' or 'quit' are typed (a common newbie
4282 better message when 'exit' or 'quit' are typed (a common newbie
4279 confusion).
4283 confusion).
4280
4284
4281 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4285 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4282 check for Windows users.
4286 check for Windows users.
4283
4287
4284 * IPython/iplib.py (InteractiveShell.user_setup): removed
4288 * IPython/iplib.py (InteractiveShell.user_setup): removed
4285 disabling of colors for Windows. I'll test at runtime and issue a
4289 disabling of colors for Windows. I'll test at runtime and issue a
4286 warning if Gary's readline isn't found, as to nudge users to
4290 warning if Gary's readline isn't found, as to nudge users to
4287 download it.
4291 download it.
4288
4292
4289 2004-06-16 Fernando Perez <fperez@colorado.edu>
4293 2004-06-16 Fernando Perez <fperez@colorado.edu>
4290
4294
4291 * IPython/genutils.py (Stream.__init__): changed to print errors
4295 * IPython/genutils.py (Stream.__init__): changed to print errors
4292 to sys.stderr. I had a circular dependency here. Now it's
4296 to sys.stderr. I had a circular dependency here. Now it's
4293 possible to run ipython as IDLE's shell (consider this pre-alpha,
4297 possible to run ipython as IDLE's shell (consider this pre-alpha,
4294 since true stdout things end up in the starting terminal instead
4298 since true stdout things end up in the starting terminal instead
4295 of IDLE's out).
4299 of IDLE's out).
4296
4300
4297 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4301 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4298 users who haven't # updated their prompt_in2 definitions. Remove
4302 users who haven't # updated their prompt_in2 definitions. Remove
4299 eventually.
4303 eventually.
4300 (multiple_replace): added credit to original ASPN recipe.
4304 (multiple_replace): added credit to original ASPN recipe.
4301
4305
4302 2004-06-15 Fernando Perez <fperez@colorado.edu>
4306 2004-06-15 Fernando Perez <fperez@colorado.edu>
4303
4307
4304 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4308 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4305 list of auto-defined aliases.
4309 list of auto-defined aliases.
4306
4310
4307 2004-06-13 Fernando Perez <fperez@colorado.edu>
4311 2004-06-13 Fernando Perez <fperez@colorado.edu>
4308
4312
4309 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4313 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4310 install was really requested (so setup.py can be used for other
4314 install was really requested (so setup.py can be used for other
4311 things under Windows).
4315 things under Windows).
4312
4316
4313 2004-06-10 Fernando Perez <fperez@colorado.edu>
4317 2004-06-10 Fernando Perez <fperez@colorado.edu>
4314
4318
4315 * IPython/Logger.py (Logger.create_log): Manually remove any old
4319 * IPython/Logger.py (Logger.create_log): Manually remove any old
4316 backup, since os.remove may fail under Windows. Fixes bug
4320 backup, since os.remove may fail under Windows. Fixes bug
4317 reported by Thorsten.
4321 reported by Thorsten.
4318
4322
4319 2004-06-09 Fernando Perez <fperez@colorado.edu>
4323 2004-06-09 Fernando Perez <fperez@colorado.edu>
4320
4324
4321 * examples/example-embed.py: fixed all references to %n (replaced
4325 * examples/example-embed.py: fixed all references to %n (replaced
4322 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4326 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4323 for all examples and the manual as well.
4327 for all examples and the manual as well.
4324
4328
4325 2004-06-08 Fernando Perez <fperez@colorado.edu>
4329 2004-06-08 Fernando Perez <fperez@colorado.edu>
4326
4330
4327 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4331 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4328 alignment and color management. All 3 prompt subsystems now
4332 alignment and color management. All 3 prompt subsystems now
4329 inherit from BasePrompt.
4333 inherit from BasePrompt.
4330
4334
4331 * tools/release: updates for windows installer build and tag rpms
4335 * tools/release: updates for windows installer build and tag rpms
4332 with python version (since paths are fixed).
4336 with python version (since paths are fixed).
4333
4337
4334 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4338 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4335 which will become eventually obsolete. Also fixed the default
4339 which will become eventually obsolete. Also fixed the default
4336 prompt_in2 to use \D, so at least new users start with the correct
4340 prompt_in2 to use \D, so at least new users start with the correct
4337 defaults.
4341 defaults.
4338 WARNING: Users with existing ipythonrc files will need to apply
4342 WARNING: Users with existing ipythonrc files will need to apply
4339 this fix manually!
4343 this fix manually!
4340
4344
4341 * setup.py: make windows installer (.exe). This is finally the
4345 * setup.py: make windows installer (.exe). This is finally the
4342 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4346 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4343 which I hadn't included because it required Python 2.3 (or recent
4347 which I hadn't included because it required Python 2.3 (or recent
4344 distutils).
4348 distutils).
4345
4349
4346 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4350 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4347 usage of new '\D' escape.
4351 usage of new '\D' escape.
4348
4352
4349 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4353 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4350 lacks os.getuid())
4354 lacks os.getuid())
4351 (CachedOutput.set_colors): Added the ability to turn coloring
4355 (CachedOutput.set_colors): Added the ability to turn coloring
4352 on/off with @colors even for manually defined prompt colors. It
4356 on/off with @colors even for manually defined prompt colors. It
4353 uses a nasty global, but it works safely and via the generic color
4357 uses a nasty global, but it works safely and via the generic color
4354 handling mechanism.
4358 handling mechanism.
4355 (Prompt2.__init__): Introduced new escape '\D' for continuation
4359 (Prompt2.__init__): Introduced new escape '\D' for continuation
4356 prompts. It represents the counter ('\#') as dots.
4360 prompts. It represents the counter ('\#') as dots.
4357 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4361 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4358 need to update their ipythonrc files and replace '%n' with '\D' in
4362 need to update their ipythonrc files and replace '%n' with '\D' in
4359 their prompt_in2 settings everywhere. Sorry, but there's
4363 their prompt_in2 settings everywhere. Sorry, but there's
4360 otherwise no clean way to get all prompts to properly align. The
4364 otherwise no clean way to get all prompts to properly align. The
4361 ipythonrc shipped with IPython has been updated.
4365 ipythonrc shipped with IPython has been updated.
4362
4366
4363 2004-06-07 Fernando Perez <fperez@colorado.edu>
4367 2004-06-07 Fernando Perez <fperez@colorado.edu>
4364
4368
4365 * setup.py (isfile): Pass local_icons option to latex2html, so the
4369 * setup.py (isfile): Pass local_icons option to latex2html, so the
4366 resulting HTML file is self-contained. Thanks to
4370 resulting HTML file is self-contained. Thanks to
4367 dryice-AT-liu.com.cn for the tip.
4371 dryice-AT-liu.com.cn for the tip.
4368
4372
4369 * pysh.py: I created a new profile 'shell', which implements a
4373 * pysh.py: I created a new profile 'shell', which implements a
4370 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4374 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4371 system shell, nor will it become one anytime soon. It's mainly
4375 system shell, nor will it become one anytime soon. It's mainly
4372 meant to illustrate the use of the new flexible bash-like prompts.
4376 meant to illustrate the use of the new flexible bash-like prompts.
4373 I guess it could be used by hardy souls for true shell management,
4377 I guess it could be used by hardy souls for true shell management,
4374 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4378 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4375 profile. This uses the InterpreterExec extension provided by
4379 profile. This uses the InterpreterExec extension provided by
4376 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4380 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4377
4381
4378 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4382 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4379 auto-align itself with the length of the previous input prompt
4383 auto-align itself with the length of the previous input prompt
4380 (taking into account the invisible color escapes).
4384 (taking into account the invisible color escapes).
4381 (CachedOutput.__init__): Large restructuring of this class. Now
4385 (CachedOutput.__init__): Large restructuring of this class. Now
4382 all three prompts (primary1, primary2, output) are proper objects,
4386 all three prompts (primary1, primary2, output) are proper objects,
4383 managed by the 'parent' CachedOutput class. The code is still a
4387 managed by the 'parent' CachedOutput class. The code is still a
4384 bit hackish (all prompts share state via a pointer to the cache),
4388 bit hackish (all prompts share state via a pointer to the cache),
4385 but it's overall far cleaner than before.
4389 but it's overall far cleaner than before.
4386
4390
4387 * IPython/genutils.py (getoutputerror): modified to add verbose,
4391 * IPython/genutils.py (getoutputerror): modified to add verbose,
4388 debug and header options. This makes the interface of all getout*
4392 debug and header options. This makes the interface of all getout*
4389 functions uniform.
4393 functions uniform.
4390 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4394 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4391
4395
4392 * IPython/Magic.py (Magic.default_option): added a function to
4396 * IPython/Magic.py (Magic.default_option): added a function to
4393 allow registering default options for any magic command. This
4397 allow registering default options for any magic command. This
4394 makes it easy to have profiles which customize the magics globally
4398 makes it easy to have profiles which customize the magics globally
4395 for a certain use. The values set through this function are
4399 for a certain use. The values set through this function are
4396 picked up by the parse_options() method, which all magics should
4400 picked up by the parse_options() method, which all magics should
4397 use to parse their options.
4401 use to parse their options.
4398
4402
4399 * IPython/genutils.py (warn): modified the warnings framework to
4403 * IPython/genutils.py (warn): modified the warnings framework to
4400 use the Term I/O class. I'm trying to slowly unify all of
4404 use the Term I/O class. I'm trying to slowly unify all of
4401 IPython's I/O operations to pass through Term.
4405 IPython's I/O operations to pass through Term.
4402
4406
4403 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4407 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4404 the secondary prompt to correctly match the length of the primary
4408 the secondary prompt to correctly match the length of the primary
4405 one for any prompt. Now multi-line code will properly line up
4409 one for any prompt. Now multi-line code will properly line up
4406 even for path dependent prompts, such as the new ones available
4410 even for path dependent prompts, such as the new ones available
4407 via the prompt_specials.
4411 via the prompt_specials.
4408
4412
4409 2004-06-06 Fernando Perez <fperez@colorado.edu>
4413 2004-06-06 Fernando Perez <fperez@colorado.edu>
4410
4414
4411 * IPython/Prompts.py (prompt_specials): Added the ability to have
4415 * IPython/Prompts.py (prompt_specials): Added the ability to have
4412 bash-like special sequences in the prompts, which get
4416 bash-like special sequences in the prompts, which get
4413 automatically expanded. Things like hostname, current working
4417 automatically expanded. Things like hostname, current working
4414 directory and username are implemented already, but it's easy to
4418 directory and username are implemented already, but it's easy to
4415 add more in the future. Thanks to a patch by W.J. van der Laan
4419 add more in the future. Thanks to a patch by W.J. van der Laan
4416 <gnufnork-AT-hetdigitalegat.nl>
4420 <gnufnork-AT-hetdigitalegat.nl>
4417 (prompt_specials): Added color support for prompt strings, so
4421 (prompt_specials): Added color support for prompt strings, so
4418 users can define arbitrary color setups for their prompts.
4422 users can define arbitrary color setups for their prompts.
4419
4423
4420 2004-06-05 Fernando Perez <fperez@colorado.edu>
4424 2004-06-05 Fernando Perez <fperez@colorado.edu>
4421
4425
4422 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4426 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4423 code to load Gary Bishop's readline and configure it
4427 code to load Gary Bishop's readline and configure it
4424 automatically. Thanks to Gary for help on this.
4428 automatically. Thanks to Gary for help on this.
4425
4429
4426 2004-06-01 Fernando Perez <fperez@colorado.edu>
4430 2004-06-01 Fernando Perez <fperez@colorado.edu>
4427
4431
4428 * IPython/Logger.py (Logger.create_log): fix bug for logging
4432 * IPython/Logger.py (Logger.create_log): fix bug for logging
4429 with no filename (previous fix was incomplete).
4433 with no filename (previous fix was incomplete).
4430
4434
4431 2004-05-25 Fernando Perez <fperez@colorado.edu>
4435 2004-05-25 Fernando Perez <fperez@colorado.edu>
4432
4436
4433 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4437 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4434 parens would get passed to the shell.
4438 parens would get passed to the shell.
4435
4439
4436 2004-05-20 Fernando Perez <fperez@colorado.edu>
4440 2004-05-20 Fernando Perez <fperez@colorado.edu>
4437
4441
4438 * IPython/Magic.py (Magic.magic_prun): changed default profile
4442 * IPython/Magic.py (Magic.magic_prun): changed default profile
4439 sort order to 'time' (the more common profiling need).
4443 sort order to 'time' (the more common profiling need).
4440
4444
4441 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4445 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4442 so that source code shown is guaranteed in sync with the file on
4446 so that source code shown is guaranteed in sync with the file on
4443 disk (also changed in psource). Similar fix to the one for
4447 disk (also changed in psource). Similar fix to the one for
4444 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4448 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4445 <yann.ledu-AT-noos.fr>.
4449 <yann.ledu-AT-noos.fr>.
4446
4450
4447 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4451 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4448 with a single option would not be correctly parsed. Closes
4452 with a single option would not be correctly parsed. Closes
4449 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4453 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4450 introduced in 0.6.0 (on 2004-05-06).
4454 introduced in 0.6.0 (on 2004-05-06).
4451
4455
4452 2004-05-13 *** Released version 0.6.0
4456 2004-05-13 *** Released version 0.6.0
4453
4457
4454 2004-05-13 Fernando Perez <fperez@colorado.edu>
4458 2004-05-13 Fernando Perez <fperez@colorado.edu>
4455
4459
4456 * debian/: Added debian/ directory to CVS, so that debian support
4460 * debian/: Added debian/ directory to CVS, so that debian support
4457 is publicly accessible. The debian package is maintained by Jack
4461 is publicly accessible. The debian package is maintained by Jack
4458 Moffit <jack-AT-xiph.org>.
4462 Moffit <jack-AT-xiph.org>.
4459
4463
4460 * Documentation: included the notes about an ipython-based system
4464 * Documentation: included the notes about an ipython-based system
4461 shell (the hypothetical 'pysh') into the new_design.pdf document,
4465 shell (the hypothetical 'pysh') into the new_design.pdf document,
4462 so that these ideas get distributed to users along with the
4466 so that these ideas get distributed to users along with the
4463 official documentation.
4467 official documentation.
4464
4468
4465 2004-05-10 Fernando Perez <fperez@colorado.edu>
4469 2004-05-10 Fernando Perez <fperez@colorado.edu>
4466
4470
4467 * IPython/Logger.py (Logger.create_log): fix recently introduced
4471 * IPython/Logger.py (Logger.create_log): fix recently introduced
4468 bug (misindented line) where logstart would fail when not given an
4472 bug (misindented line) where logstart would fail when not given an
4469 explicit filename.
4473 explicit filename.
4470
4474
4471 2004-05-09 Fernando Perez <fperez@colorado.edu>
4475 2004-05-09 Fernando Perez <fperez@colorado.edu>
4472
4476
4473 * IPython/Magic.py (Magic.parse_options): skip system call when
4477 * IPython/Magic.py (Magic.parse_options): skip system call when
4474 there are no options to look for. Faster, cleaner for the common
4478 there are no options to look for. Faster, cleaner for the common
4475 case.
4479 case.
4476
4480
4477 * Documentation: many updates to the manual: describing Windows
4481 * Documentation: many updates to the manual: describing Windows
4478 support better, Gnuplot updates, credits, misc small stuff. Also
4482 support better, Gnuplot updates, credits, misc small stuff. Also
4479 updated the new_design doc a bit.
4483 updated the new_design doc a bit.
4480
4484
4481 2004-05-06 *** Released version 0.6.0.rc1
4485 2004-05-06 *** Released version 0.6.0.rc1
4482
4486
4483 2004-05-06 Fernando Perez <fperez@colorado.edu>
4487 2004-05-06 Fernando Perez <fperez@colorado.edu>
4484
4488
4485 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4489 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4486 operations to use the vastly more efficient list/''.join() method.
4490 operations to use the vastly more efficient list/''.join() method.
4487 (FormattedTB.text): Fix
4491 (FormattedTB.text): Fix
4488 http://www.scipy.net/roundup/ipython/issue12 - exception source
4492 http://www.scipy.net/roundup/ipython/issue12 - exception source
4489 extract not updated after reload. Thanks to Mike Salib
4493 extract not updated after reload. Thanks to Mike Salib
4490 <msalib-AT-mit.edu> for pinning the source of the problem.
4494 <msalib-AT-mit.edu> for pinning the source of the problem.
4491 Fortunately, the solution works inside ipython and doesn't require
4495 Fortunately, the solution works inside ipython and doesn't require
4492 any changes to python proper.
4496 any changes to python proper.
4493
4497
4494 * IPython/Magic.py (Magic.parse_options): Improved to process the
4498 * IPython/Magic.py (Magic.parse_options): Improved to process the
4495 argument list as a true shell would (by actually using the
4499 argument list as a true shell would (by actually using the
4496 underlying system shell). This way, all @magics automatically get
4500 underlying system shell). This way, all @magics automatically get
4497 shell expansion for variables. Thanks to a comment by Alex
4501 shell expansion for variables. Thanks to a comment by Alex
4498 Schmolck.
4502 Schmolck.
4499
4503
4500 2004-04-04 Fernando Perez <fperez@colorado.edu>
4504 2004-04-04 Fernando Perez <fperez@colorado.edu>
4501
4505
4502 * IPython/iplib.py (InteractiveShell.interact): Added a special
4506 * IPython/iplib.py (InteractiveShell.interact): Added a special
4503 trap for a debugger quit exception, which is basically impossible
4507 trap for a debugger quit exception, which is basically impossible
4504 to handle by normal mechanisms, given what pdb does to the stack.
4508 to handle by normal mechanisms, given what pdb does to the stack.
4505 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4509 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4506
4510
4507 2004-04-03 Fernando Perez <fperez@colorado.edu>
4511 2004-04-03 Fernando Perez <fperez@colorado.edu>
4508
4512
4509 * IPython/genutils.py (Term): Standardized the names of the Term
4513 * IPython/genutils.py (Term): Standardized the names of the Term
4510 class streams to cin/cout/cerr, following C++ naming conventions
4514 class streams to cin/cout/cerr, following C++ naming conventions
4511 (I can't use in/out/err because 'in' is not a valid attribute
4515 (I can't use in/out/err because 'in' is not a valid attribute
4512 name).
4516 name).
4513
4517
4514 * IPython/iplib.py (InteractiveShell.interact): don't increment
4518 * IPython/iplib.py (InteractiveShell.interact): don't increment
4515 the prompt if there's no user input. By Daniel 'Dang' Griffith
4519 the prompt if there's no user input. By Daniel 'Dang' Griffith
4516 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4520 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4517 Francois Pinard.
4521 Francois Pinard.
4518
4522
4519 2004-04-02 Fernando Perez <fperez@colorado.edu>
4523 2004-04-02 Fernando Perez <fperez@colorado.edu>
4520
4524
4521 * IPython/genutils.py (Stream.__init__): Modified to survive at
4525 * IPython/genutils.py (Stream.__init__): Modified to survive at
4522 least importing in contexts where stdin/out/err aren't true file
4526 least importing in contexts where stdin/out/err aren't true file
4523 objects, such as PyCrust (they lack fileno() and mode). However,
4527 objects, such as PyCrust (they lack fileno() and mode). However,
4524 the recovery facilities which rely on these things existing will
4528 the recovery facilities which rely on these things existing will
4525 not work.
4529 not work.
4526
4530
4527 2004-04-01 Fernando Perez <fperez@colorado.edu>
4531 2004-04-01 Fernando Perez <fperez@colorado.edu>
4528
4532
4529 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4533 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4530 use the new getoutputerror() function, so it properly
4534 use the new getoutputerror() function, so it properly
4531 distinguishes stdout/err.
4535 distinguishes stdout/err.
4532
4536
4533 * IPython/genutils.py (getoutputerror): added a function to
4537 * IPython/genutils.py (getoutputerror): added a function to
4534 capture separately the standard output and error of a command.
4538 capture separately the standard output and error of a command.
4535 After a comment from dang on the mailing lists. This code is
4539 After a comment from dang on the mailing lists. This code is
4536 basically a modified version of commands.getstatusoutput(), from
4540 basically a modified version of commands.getstatusoutput(), from
4537 the standard library.
4541 the standard library.
4538
4542
4539 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4543 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4540 '!!' as a special syntax (shorthand) to access @sx.
4544 '!!' as a special syntax (shorthand) to access @sx.
4541
4545
4542 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4546 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4543 command and return its output as a list split on '\n'.
4547 command and return its output as a list split on '\n'.
4544
4548
4545 2004-03-31 Fernando Perez <fperez@colorado.edu>
4549 2004-03-31 Fernando Perez <fperez@colorado.edu>
4546
4550
4547 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4551 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4548 method to dictionaries used as FakeModule instances if they lack
4552 method to dictionaries used as FakeModule instances if they lack
4549 it. At least pydoc in python2.3 breaks for runtime-defined
4553 it. At least pydoc in python2.3 breaks for runtime-defined
4550 functions without this hack. At some point I need to _really_
4554 functions without this hack. At some point I need to _really_
4551 understand what FakeModule is doing, because it's a gross hack.
4555 understand what FakeModule is doing, because it's a gross hack.
4552 But it solves Arnd's problem for now...
4556 But it solves Arnd's problem for now...
4553
4557
4554 2004-02-27 Fernando Perez <fperez@colorado.edu>
4558 2004-02-27 Fernando Perez <fperez@colorado.edu>
4555
4559
4556 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4560 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4557 mode would behave erratically. Also increased the number of
4561 mode would behave erratically. Also increased the number of
4558 possible logs in rotate mod to 999. Thanks to Rod Holland
4562 possible logs in rotate mod to 999. Thanks to Rod Holland
4559 <rhh@StructureLABS.com> for the report and fixes.
4563 <rhh@StructureLABS.com> for the report and fixes.
4560
4564
4561 2004-02-26 Fernando Perez <fperez@colorado.edu>
4565 2004-02-26 Fernando Perez <fperez@colorado.edu>
4562
4566
4563 * IPython/genutils.py (page): Check that the curses module really
4567 * IPython/genutils.py (page): Check that the curses module really
4564 has the initscr attribute before trying to use it. For some
4568 has the initscr attribute before trying to use it. For some
4565 reason, the Solaris curses module is missing this. I think this
4569 reason, the Solaris curses module is missing this. I think this
4566 should be considered a Solaris python bug, but I'm not sure.
4570 should be considered a Solaris python bug, but I'm not sure.
4567
4571
4568 2004-01-17 Fernando Perez <fperez@colorado.edu>
4572 2004-01-17 Fernando Perez <fperez@colorado.edu>
4569
4573
4570 * IPython/genutils.py (Stream.__init__): Changes to try to make
4574 * IPython/genutils.py (Stream.__init__): Changes to try to make
4571 ipython robust against stdin/out/err being closed by the user.
4575 ipython robust against stdin/out/err being closed by the user.
4572 This is 'user error' (and blocks a normal python session, at least
4576 This is 'user error' (and blocks a normal python session, at least
4573 the stdout case). However, Ipython should be able to survive such
4577 the stdout case). However, Ipython should be able to survive such
4574 instances of abuse as gracefully as possible. To simplify the
4578 instances of abuse as gracefully as possible. To simplify the
4575 coding and maintain compatibility with Gary Bishop's Term
4579 coding and maintain compatibility with Gary Bishop's Term
4576 contributions, I've made use of classmethods for this. I think
4580 contributions, I've made use of classmethods for this. I think
4577 this introduces a dependency on python 2.2.
4581 this introduces a dependency on python 2.2.
4578
4582
4579 2004-01-13 Fernando Perez <fperez@colorado.edu>
4583 2004-01-13 Fernando Perez <fperez@colorado.edu>
4580
4584
4581 * IPython/numutils.py (exp_safe): simplified the code a bit and
4585 * IPython/numutils.py (exp_safe): simplified the code a bit and
4582 removed the need for importing the kinds module altogether.
4586 removed the need for importing the kinds module altogether.
4583
4587
4584 2004-01-06 Fernando Perez <fperez@colorado.edu>
4588 2004-01-06 Fernando Perez <fperez@colorado.edu>
4585
4589
4586 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4590 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4587 a magic function instead, after some community feedback. No
4591 a magic function instead, after some community feedback. No
4588 special syntax will exist for it, but its name is deliberately
4592 special syntax will exist for it, but its name is deliberately
4589 very short.
4593 very short.
4590
4594
4591 2003-12-20 Fernando Perez <fperez@colorado.edu>
4595 2003-12-20 Fernando Perez <fperez@colorado.edu>
4592
4596
4593 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4597 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4594 new functionality, to automagically assign the result of a shell
4598 new functionality, to automagically assign the result of a shell
4595 command to a variable. I'll solicit some community feedback on
4599 command to a variable. I'll solicit some community feedback on
4596 this before making it permanent.
4600 this before making it permanent.
4597
4601
4598 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4602 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4599 requested about callables for which inspect couldn't obtain a
4603 requested about callables for which inspect couldn't obtain a
4600 proper argspec. Thanks to a crash report sent by Etienne
4604 proper argspec. Thanks to a crash report sent by Etienne
4601 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4605 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4602
4606
4603 2003-12-09 Fernando Perez <fperez@colorado.edu>
4607 2003-12-09 Fernando Perez <fperez@colorado.edu>
4604
4608
4605 * IPython/genutils.py (page): patch for the pager to work across
4609 * IPython/genutils.py (page): patch for the pager to work across
4606 various versions of Windows. By Gary Bishop.
4610 various versions of Windows. By Gary Bishop.
4607
4611
4608 2003-12-04 Fernando Perez <fperez@colorado.edu>
4612 2003-12-04 Fernando Perez <fperez@colorado.edu>
4609
4613
4610 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4614 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4611 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4615 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4612 While I tested this and it looks ok, there may still be corner
4616 While I tested this and it looks ok, there may still be corner
4613 cases I've missed.
4617 cases I've missed.
4614
4618
4615 2003-12-01 Fernando Perez <fperez@colorado.edu>
4619 2003-12-01 Fernando Perez <fperez@colorado.edu>
4616
4620
4617 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4621 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4618 where a line like 'p,q=1,2' would fail because the automagic
4622 where a line like 'p,q=1,2' would fail because the automagic
4619 system would be triggered for @p.
4623 system would be triggered for @p.
4620
4624
4621 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4625 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4622 cleanups, code unmodified.
4626 cleanups, code unmodified.
4623
4627
4624 * IPython/genutils.py (Term): added a class for IPython to handle
4628 * IPython/genutils.py (Term): added a class for IPython to handle
4625 output. In most cases it will just be a proxy for stdout/err, but
4629 output. In most cases it will just be a proxy for stdout/err, but
4626 having this allows modifications to be made for some platforms,
4630 having this allows modifications to be made for some platforms,
4627 such as handling color escapes under Windows. All of this code
4631 such as handling color escapes under Windows. All of this code
4628 was contributed by Gary Bishop, with minor modifications by me.
4632 was contributed by Gary Bishop, with minor modifications by me.
4629 The actual changes affect many files.
4633 The actual changes affect many files.
4630
4634
4631 2003-11-30 Fernando Perez <fperez@colorado.edu>
4635 2003-11-30 Fernando Perez <fperez@colorado.edu>
4632
4636
4633 * IPython/iplib.py (file_matches): new completion code, courtesy
4637 * IPython/iplib.py (file_matches): new completion code, courtesy
4634 of Jeff Collins. This enables filename completion again under
4638 of Jeff Collins. This enables filename completion again under
4635 python 2.3, which disabled it at the C level.
4639 python 2.3, which disabled it at the C level.
4636
4640
4637 2003-11-11 Fernando Perez <fperez@colorado.edu>
4641 2003-11-11 Fernando Perez <fperez@colorado.edu>
4638
4642
4639 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4643 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4640 for Numeric.array(map(...)), but often convenient.
4644 for Numeric.array(map(...)), but often convenient.
4641
4645
4642 2003-11-05 Fernando Perez <fperez@colorado.edu>
4646 2003-11-05 Fernando Perez <fperez@colorado.edu>
4643
4647
4644 * IPython/numutils.py (frange): Changed a call from int() to
4648 * IPython/numutils.py (frange): Changed a call from int() to
4645 int(round()) to prevent a problem reported with arange() in the
4649 int(round()) to prevent a problem reported with arange() in the
4646 numpy list.
4650 numpy list.
4647
4651
4648 2003-10-06 Fernando Perez <fperez@colorado.edu>
4652 2003-10-06 Fernando Perez <fperez@colorado.edu>
4649
4653
4650 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4654 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4651 prevent crashes if sys lacks an argv attribute (it happens with
4655 prevent crashes if sys lacks an argv attribute (it happens with
4652 embedded interpreters which build a bare-bones sys module).
4656 embedded interpreters which build a bare-bones sys module).
4653 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4657 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4654
4658
4655 2003-09-24 Fernando Perez <fperez@colorado.edu>
4659 2003-09-24 Fernando Perez <fperez@colorado.edu>
4656
4660
4657 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4661 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4658 to protect against poorly written user objects where __getattr__
4662 to protect against poorly written user objects where __getattr__
4659 raises exceptions other than AttributeError. Thanks to a bug
4663 raises exceptions other than AttributeError. Thanks to a bug
4660 report by Oliver Sander <osander-AT-gmx.de>.
4664 report by Oliver Sander <osander-AT-gmx.de>.
4661
4665
4662 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4666 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4663 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4667 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4664
4668
4665 2003-09-09 Fernando Perez <fperez@colorado.edu>
4669 2003-09-09 Fernando Perez <fperez@colorado.edu>
4666
4670
4667 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4671 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4668 unpacking a list whith a callable as first element would
4672 unpacking a list whith a callable as first element would
4669 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4673 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4670 Collins.
4674 Collins.
4671
4675
4672 2003-08-25 *** Released version 0.5.0
4676 2003-08-25 *** Released version 0.5.0
4673
4677
4674 2003-08-22 Fernando Perez <fperez@colorado.edu>
4678 2003-08-22 Fernando Perez <fperez@colorado.edu>
4675
4679
4676 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4680 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4677 improperly defined user exceptions. Thanks to feedback from Mark
4681 improperly defined user exceptions. Thanks to feedback from Mark
4678 Russell <mrussell-AT-verio.net>.
4682 Russell <mrussell-AT-verio.net>.
4679
4683
4680 2003-08-20 Fernando Perez <fperez@colorado.edu>
4684 2003-08-20 Fernando Perez <fperez@colorado.edu>
4681
4685
4682 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4686 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4683 printing so that it would print multi-line string forms starting
4687 printing so that it would print multi-line string forms starting
4684 with a new line. This way the formatting is better respected for
4688 with a new line. This way the formatting is better respected for
4685 objects which work hard to make nice string forms.
4689 objects which work hard to make nice string forms.
4686
4690
4687 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4691 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4688 autocall would overtake data access for objects with both
4692 autocall would overtake data access for objects with both
4689 __getitem__ and __call__.
4693 __getitem__ and __call__.
4690
4694
4691 2003-08-19 *** Released version 0.5.0-rc1
4695 2003-08-19 *** Released version 0.5.0-rc1
4692
4696
4693 2003-08-19 Fernando Perez <fperez@colorado.edu>
4697 2003-08-19 Fernando Perez <fperez@colorado.edu>
4694
4698
4695 * IPython/deep_reload.py (load_tail): single tiny change here
4699 * IPython/deep_reload.py (load_tail): single tiny change here
4696 seems to fix the long-standing bug of dreload() failing to work
4700 seems to fix the long-standing bug of dreload() failing to work
4697 for dotted names. But this module is pretty tricky, so I may have
4701 for dotted names. But this module is pretty tricky, so I may have
4698 missed some subtlety. Needs more testing!.
4702 missed some subtlety. Needs more testing!.
4699
4703
4700 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4704 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4701 exceptions which have badly implemented __str__ methods.
4705 exceptions which have badly implemented __str__ methods.
4702 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4706 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4703 which I've been getting reports about from Python 2.3 users. I
4707 which I've been getting reports about from Python 2.3 users. I
4704 wish I had a simple test case to reproduce the problem, so I could
4708 wish I had a simple test case to reproduce the problem, so I could
4705 either write a cleaner workaround or file a bug report if
4709 either write a cleaner workaround or file a bug report if
4706 necessary.
4710 necessary.
4707
4711
4708 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4712 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4709 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4713 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4710 a bug report by Tjabo Kloppenburg.
4714 a bug report by Tjabo Kloppenburg.
4711
4715
4712 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4716 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4713 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4717 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4714 seems rather unstable. Thanks to a bug report by Tjabo
4718 seems rather unstable. Thanks to a bug report by Tjabo
4715 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4719 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4716
4720
4717 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4721 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4718 this out soon because of the critical fixes in the inner loop for
4722 this out soon because of the critical fixes in the inner loop for
4719 generators.
4723 generators.
4720
4724
4721 * IPython/Magic.py (Magic.getargspec): removed. This (and
4725 * IPython/Magic.py (Magic.getargspec): removed. This (and
4722 _get_def) have been obsoleted by OInspect for a long time, I
4726 _get_def) have been obsoleted by OInspect for a long time, I
4723 hadn't noticed that they were dead code.
4727 hadn't noticed that they were dead code.
4724 (Magic._ofind): restored _ofind functionality for a few literals
4728 (Magic._ofind): restored _ofind functionality for a few literals
4725 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4729 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4726 for things like "hello".capitalize?, since that would require a
4730 for things like "hello".capitalize?, since that would require a
4727 potentially dangerous eval() again.
4731 potentially dangerous eval() again.
4728
4732
4729 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4733 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4730 logic a bit more to clean up the escapes handling and minimize the
4734 logic a bit more to clean up the escapes handling and minimize the
4731 use of _ofind to only necessary cases. The interactive 'feel' of
4735 use of _ofind to only necessary cases. The interactive 'feel' of
4732 IPython should have improved quite a bit with the changes in
4736 IPython should have improved quite a bit with the changes in
4733 _prefilter and _ofind (besides being far safer than before).
4737 _prefilter and _ofind (besides being far safer than before).
4734
4738
4735 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4739 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4736 obscure, never reported). Edit would fail to find the object to
4740 obscure, never reported). Edit would fail to find the object to
4737 edit under some circumstances.
4741 edit under some circumstances.
4738 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4742 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4739 which were causing double-calling of generators. Those eval calls
4743 which were causing double-calling of generators. Those eval calls
4740 were _very_ dangerous, since code with side effects could be
4744 were _very_ dangerous, since code with side effects could be
4741 triggered. As they say, 'eval is evil'... These were the
4745 triggered. As they say, 'eval is evil'... These were the
4742 nastiest evals in IPython. Besides, _ofind is now far simpler,
4746 nastiest evals in IPython. Besides, _ofind is now far simpler,
4743 and it should also be quite a bit faster. Its use of inspect is
4747 and it should also be quite a bit faster. Its use of inspect is
4744 also safer, so perhaps some of the inspect-related crashes I've
4748 also safer, so perhaps some of the inspect-related crashes I've
4745 seen lately with Python 2.3 might be taken care of. That will
4749 seen lately with Python 2.3 might be taken care of. That will
4746 need more testing.
4750 need more testing.
4747
4751
4748 2003-08-17 Fernando Perez <fperez@colorado.edu>
4752 2003-08-17 Fernando Perez <fperez@colorado.edu>
4749
4753
4750 * IPython/iplib.py (InteractiveShell._prefilter): significant
4754 * IPython/iplib.py (InteractiveShell._prefilter): significant
4751 simplifications to the logic for handling user escapes. Faster
4755 simplifications to the logic for handling user escapes. Faster
4752 and simpler code.
4756 and simpler code.
4753
4757
4754 2003-08-14 Fernando Perez <fperez@colorado.edu>
4758 2003-08-14 Fernando Perez <fperez@colorado.edu>
4755
4759
4756 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4760 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4757 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4761 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4758 but it should be quite a bit faster. And the recursive version
4762 but it should be quite a bit faster. And the recursive version
4759 generated O(log N) intermediate storage for all rank>1 arrays,
4763 generated O(log N) intermediate storage for all rank>1 arrays,
4760 even if they were contiguous.
4764 even if they were contiguous.
4761 (l1norm): Added this function.
4765 (l1norm): Added this function.
4762 (norm): Added this function for arbitrary norms (including
4766 (norm): Added this function for arbitrary norms (including
4763 l-infinity). l1 and l2 are still special cases for convenience
4767 l-infinity). l1 and l2 are still special cases for convenience
4764 and speed.
4768 and speed.
4765
4769
4766 2003-08-03 Fernando Perez <fperez@colorado.edu>
4770 2003-08-03 Fernando Perez <fperez@colorado.edu>
4767
4771
4768 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4772 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4769 exceptions, which now raise PendingDeprecationWarnings in Python
4773 exceptions, which now raise PendingDeprecationWarnings in Python
4770 2.3. There were some in Magic and some in Gnuplot2.
4774 2.3. There were some in Magic and some in Gnuplot2.
4771
4775
4772 2003-06-30 Fernando Perez <fperez@colorado.edu>
4776 2003-06-30 Fernando Perez <fperez@colorado.edu>
4773
4777
4774 * IPython/genutils.py (page): modified to call curses only for
4778 * IPython/genutils.py (page): modified to call curses only for
4775 terminals where TERM=='xterm'. After problems under many other
4779 terminals where TERM=='xterm'. After problems under many other
4776 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4780 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4777
4781
4778 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4782 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4779 would be triggered when readline was absent. This was just an old
4783 would be triggered when readline was absent. This was just an old
4780 debugging statement I'd forgotten to take out.
4784 debugging statement I'd forgotten to take out.
4781
4785
4782 2003-06-20 Fernando Perez <fperez@colorado.edu>
4786 2003-06-20 Fernando Perez <fperez@colorado.edu>
4783
4787
4784 * IPython/genutils.py (clock): modified to return only user time
4788 * IPython/genutils.py (clock): modified to return only user time
4785 (not counting system time), after a discussion on scipy. While
4789 (not counting system time), after a discussion on scipy. While
4786 system time may be a useful quantity occasionally, it may much
4790 system time may be a useful quantity occasionally, it may much
4787 more easily be skewed by occasional swapping or other similar
4791 more easily be skewed by occasional swapping or other similar
4788 activity.
4792 activity.
4789
4793
4790 2003-06-05 Fernando Perez <fperez@colorado.edu>
4794 2003-06-05 Fernando Perez <fperez@colorado.edu>
4791
4795
4792 * IPython/numutils.py (identity): new function, for building
4796 * IPython/numutils.py (identity): new function, for building
4793 arbitrary rank Kronecker deltas (mostly backwards compatible with
4797 arbitrary rank Kronecker deltas (mostly backwards compatible with
4794 Numeric.identity)
4798 Numeric.identity)
4795
4799
4796 2003-06-03 Fernando Perez <fperez@colorado.edu>
4800 2003-06-03 Fernando Perez <fperez@colorado.edu>
4797
4801
4798 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4802 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4799 arguments passed to magics with spaces, to allow trailing '\' to
4803 arguments passed to magics with spaces, to allow trailing '\' to
4800 work normally (mainly for Windows users).
4804 work normally (mainly for Windows users).
4801
4805
4802 2003-05-29 Fernando Perez <fperez@colorado.edu>
4806 2003-05-29 Fernando Perez <fperez@colorado.edu>
4803
4807
4804 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4808 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4805 instead of pydoc.help. This fixes a bizarre behavior where
4809 instead of pydoc.help. This fixes a bizarre behavior where
4806 printing '%s' % locals() would trigger the help system. Now
4810 printing '%s' % locals() would trigger the help system. Now
4807 ipython behaves like normal python does.
4811 ipython behaves like normal python does.
4808
4812
4809 Note that if one does 'from pydoc import help', the bizarre
4813 Note that if one does 'from pydoc import help', the bizarre
4810 behavior returns, but this will also happen in normal python, so
4814 behavior returns, but this will also happen in normal python, so
4811 it's not an ipython bug anymore (it has to do with how pydoc.help
4815 it's not an ipython bug anymore (it has to do with how pydoc.help
4812 is implemented).
4816 is implemented).
4813
4817
4814 2003-05-22 Fernando Perez <fperez@colorado.edu>
4818 2003-05-22 Fernando Perez <fperez@colorado.edu>
4815
4819
4816 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4820 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4817 return [] instead of None when nothing matches, also match to end
4821 return [] instead of None when nothing matches, also match to end
4818 of line. Patch by Gary Bishop.
4822 of line. Patch by Gary Bishop.
4819
4823
4820 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4824 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4821 protection as before, for files passed on the command line. This
4825 protection as before, for files passed on the command line. This
4822 prevents the CrashHandler from kicking in if user files call into
4826 prevents the CrashHandler from kicking in if user files call into
4823 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4827 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4824 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4828 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4825
4829
4826 2003-05-20 *** Released version 0.4.0
4830 2003-05-20 *** Released version 0.4.0
4827
4831
4828 2003-05-20 Fernando Perez <fperez@colorado.edu>
4832 2003-05-20 Fernando Perez <fperez@colorado.edu>
4829
4833
4830 * setup.py: added support for manpages. It's a bit hackish b/c of
4834 * setup.py: added support for manpages. It's a bit hackish b/c of
4831 a bug in the way the bdist_rpm distutils target handles gzipped
4835 a bug in the way the bdist_rpm distutils target handles gzipped
4832 manpages, but it works. After a patch by Jack.
4836 manpages, but it works. After a patch by Jack.
4833
4837
4834 2003-05-19 Fernando Perez <fperez@colorado.edu>
4838 2003-05-19 Fernando Perez <fperez@colorado.edu>
4835
4839
4836 * IPython/numutils.py: added a mockup of the kinds module, since
4840 * IPython/numutils.py: added a mockup of the kinds module, since
4837 it was recently removed from Numeric. This way, numutils will
4841 it was recently removed from Numeric. This way, numutils will
4838 work for all users even if they are missing kinds.
4842 work for all users even if they are missing kinds.
4839
4843
4840 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4844 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4841 failure, which can occur with SWIG-wrapped extensions. After a
4845 failure, which can occur with SWIG-wrapped extensions. After a
4842 crash report from Prabhu.
4846 crash report from Prabhu.
4843
4847
4844 2003-05-16 Fernando Perez <fperez@colorado.edu>
4848 2003-05-16 Fernando Perez <fperez@colorado.edu>
4845
4849
4846 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4850 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4847 protect ipython from user code which may call directly
4851 protect ipython from user code which may call directly
4848 sys.excepthook (this looks like an ipython crash to the user, even
4852 sys.excepthook (this looks like an ipython crash to the user, even
4849 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4853 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4850 This is especially important to help users of WxWindows, but may
4854 This is especially important to help users of WxWindows, but may
4851 also be useful in other cases.
4855 also be useful in other cases.
4852
4856
4853 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4857 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4854 an optional tb_offset to be specified, and to preserve exception
4858 an optional tb_offset to be specified, and to preserve exception
4855 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4859 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4856
4860
4857 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4861 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4858
4862
4859 2003-05-15 Fernando Perez <fperez@colorado.edu>
4863 2003-05-15 Fernando Perez <fperez@colorado.edu>
4860
4864
4861 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4865 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4862 installing for a new user under Windows.
4866 installing for a new user under Windows.
4863
4867
4864 2003-05-12 Fernando Perez <fperez@colorado.edu>
4868 2003-05-12 Fernando Perez <fperez@colorado.edu>
4865
4869
4866 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4870 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4867 handler for Emacs comint-based lines. Currently it doesn't do
4871 handler for Emacs comint-based lines. Currently it doesn't do
4868 much (but importantly, it doesn't update the history cache). In
4872 much (but importantly, it doesn't update the history cache). In
4869 the future it may be expanded if Alex needs more functionality
4873 the future it may be expanded if Alex needs more functionality
4870 there.
4874 there.
4871
4875
4872 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4876 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4873 info to crash reports.
4877 info to crash reports.
4874
4878
4875 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4879 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4876 just like Python's -c. Also fixed crash with invalid -color
4880 just like Python's -c. Also fixed crash with invalid -color
4877 option value at startup. Thanks to Will French
4881 option value at startup. Thanks to Will French
4878 <wfrench-AT-bestweb.net> for the bug report.
4882 <wfrench-AT-bestweb.net> for the bug report.
4879
4883
4880 2003-05-09 Fernando Perez <fperez@colorado.edu>
4884 2003-05-09 Fernando Perez <fperez@colorado.edu>
4881
4885
4882 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4886 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4883 to EvalDict (it's a mapping, after all) and simplified its code
4887 to EvalDict (it's a mapping, after all) and simplified its code
4884 quite a bit, after a nice discussion on c.l.py where Gustavo
4888 quite a bit, after a nice discussion on c.l.py where Gustavo
4885 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4889 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4886
4890
4887 2003-04-30 Fernando Perez <fperez@colorado.edu>
4891 2003-04-30 Fernando Perez <fperez@colorado.edu>
4888
4892
4889 * IPython/genutils.py (timings_out): modified it to reduce its
4893 * IPython/genutils.py (timings_out): modified it to reduce its
4890 overhead in the common reps==1 case.
4894 overhead in the common reps==1 case.
4891
4895
4892 2003-04-29 Fernando Perez <fperez@colorado.edu>
4896 2003-04-29 Fernando Perez <fperez@colorado.edu>
4893
4897
4894 * IPython/genutils.py (timings_out): Modified to use the resource
4898 * IPython/genutils.py (timings_out): Modified to use the resource
4895 module, which avoids the wraparound problems of time.clock().
4899 module, which avoids the wraparound problems of time.clock().
4896
4900
4897 2003-04-17 *** Released version 0.2.15pre4
4901 2003-04-17 *** Released version 0.2.15pre4
4898
4902
4899 2003-04-17 Fernando Perez <fperez@colorado.edu>
4903 2003-04-17 Fernando Perez <fperez@colorado.edu>
4900
4904
4901 * setup.py (scriptfiles): Split windows-specific stuff over to a
4905 * setup.py (scriptfiles): Split windows-specific stuff over to a
4902 separate file, in an attempt to have a Windows GUI installer.
4906 separate file, in an attempt to have a Windows GUI installer.
4903 That didn't work, but part of the groundwork is done.
4907 That didn't work, but part of the groundwork is done.
4904
4908
4905 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4909 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4906 indent/unindent with 4 spaces. Particularly useful in combination
4910 indent/unindent with 4 spaces. Particularly useful in combination
4907 with the new auto-indent option.
4911 with the new auto-indent option.
4908
4912
4909 2003-04-16 Fernando Perez <fperez@colorado.edu>
4913 2003-04-16 Fernando Perez <fperez@colorado.edu>
4910
4914
4911 * IPython/Magic.py: various replacements of self.rc for
4915 * IPython/Magic.py: various replacements of self.rc for
4912 self.shell.rc. A lot more remains to be done to fully disentangle
4916 self.shell.rc. A lot more remains to be done to fully disentangle
4913 this class from the main Shell class.
4917 this class from the main Shell class.
4914
4918
4915 * IPython/GnuplotRuntime.py: added checks for mouse support so
4919 * IPython/GnuplotRuntime.py: added checks for mouse support so
4916 that we don't try to enable it if the current gnuplot doesn't
4920 that we don't try to enable it if the current gnuplot doesn't
4917 really support it. Also added checks so that we don't try to
4921 really support it. Also added checks so that we don't try to
4918 enable persist under Windows (where Gnuplot doesn't recognize the
4922 enable persist under Windows (where Gnuplot doesn't recognize the
4919 option).
4923 option).
4920
4924
4921 * IPython/iplib.py (InteractiveShell.interact): Added optional
4925 * IPython/iplib.py (InteractiveShell.interact): Added optional
4922 auto-indenting code, after a patch by King C. Shu
4926 auto-indenting code, after a patch by King C. Shu
4923 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4927 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4924 get along well with pasting indented code. If I ever figure out
4928 get along well with pasting indented code. If I ever figure out
4925 how to make that part go well, it will become on by default.
4929 how to make that part go well, it will become on by default.
4926
4930
4927 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4931 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4928 crash ipython if there was an unmatched '%' in the user's prompt
4932 crash ipython if there was an unmatched '%' in the user's prompt
4929 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4933 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4930
4934
4931 * IPython/iplib.py (InteractiveShell.interact): removed the
4935 * IPython/iplib.py (InteractiveShell.interact): removed the
4932 ability to ask the user whether he wants to crash or not at the
4936 ability to ask the user whether he wants to crash or not at the
4933 'last line' exception handler. Calling functions at that point
4937 'last line' exception handler. Calling functions at that point
4934 changes the stack, and the error reports would have incorrect
4938 changes the stack, and the error reports would have incorrect
4935 tracebacks.
4939 tracebacks.
4936
4940
4937 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4941 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4938 pass through a peger a pretty-printed form of any object. After a
4942 pass through a peger a pretty-printed form of any object. After a
4939 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4943 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4940
4944
4941 2003-04-14 Fernando Perez <fperez@colorado.edu>
4945 2003-04-14 Fernando Perez <fperez@colorado.edu>
4942
4946
4943 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4947 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4944 all files in ~ would be modified at first install (instead of
4948 all files in ~ would be modified at first install (instead of
4945 ~/.ipython). This could be potentially disastrous, as the
4949 ~/.ipython). This could be potentially disastrous, as the
4946 modification (make line-endings native) could damage binary files.
4950 modification (make line-endings native) could damage binary files.
4947
4951
4948 2003-04-10 Fernando Perez <fperez@colorado.edu>
4952 2003-04-10 Fernando Perez <fperez@colorado.edu>
4949
4953
4950 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4954 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4951 handle only lines which are invalid python. This now means that
4955 handle only lines which are invalid python. This now means that
4952 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4956 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4953 for the bug report.
4957 for the bug report.
4954
4958
4955 2003-04-01 Fernando Perez <fperez@colorado.edu>
4959 2003-04-01 Fernando Perez <fperez@colorado.edu>
4956
4960
4957 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4961 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4958 where failing to set sys.last_traceback would crash pdb.pm().
4962 where failing to set sys.last_traceback would crash pdb.pm().
4959 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4963 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4960 report.
4964 report.
4961
4965
4962 2003-03-25 Fernando Perez <fperez@colorado.edu>
4966 2003-03-25 Fernando Perez <fperez@colorado.edu>
4963
4967
4964 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4968 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4965 before printing it (it had a lot of spurious blank lines at the
4969 before printing it (it had a lot of spurious blank lines at the
4966 end).
4970 end).
4967
4971
4968 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4972 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4969 output would be sent 21 times! Obviously people don't use this
4973 output would be sent 21 times! Obviously people don't use this
4970 too often, or I would have heard about it.
4974 too often, or I would have heard about it.
4971
4975
4972 2003-03-24 Fernando Perez <fperez@colorado.edu>
4976 2003-03-24 Fernando Perez <fperez@colorado.edu>
4973
4977
4974 * setup.py (scriptfiles): renamed the data_files parameter from
4978 * setup.py (scriptfiles): renamed the data_files parameter from
4975 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4979 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4976 for the patch.
4980 for the patch.
4977
4981
4978 2003-03-20 Fernando Perez <fperez@colorado.edu>
4982 2003-03-20 Fernando Perez <fperez@colorado.edu>
4979
4983
4980 * IPython/genutils.py (error): added error() and fatal()
4984 * IPython/genutils.py (error): added error() and fatal()
4981 functions.
4985 functions.
4982
4986
4983 2003-03-18 *** Released version 0.2.15pre3
4987 2003-03-18 *** Released version 0.2.15pre3
4984
4988
4985 2003-03-18 Fernando Perez <fperez@colorado.edu>
4989 2003-03-18 Fernando Perez <fperez@colorado.edu>
4986
4990
4987 * setupext/install_data_ext.py
4991 * setupext/install_data_ext.py
4988 (install_data_ext.initialize_options): Class contributed by Jack
4992 (install_data_ext.initialize_options): Class contributed by Jack
4989 Moffit for fixing the old distutils hack. He is sending this to
4993 Moffit for fixing the old distutils hack. He is sending this to
4990 the distutils folks so in the future we may not need it as a
4994 the distutils folks so in the future we may not need it as a
4991 private fix.
4995 private fix.
4992
4996
4993 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4997 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4994 changes for Debian packaging. See his patch for full details.
4998 changes for Debian packaging. See his patch for full details.
4995 The old distutils hack of making the ipythonrc* files carry a
4999 The old distutils hack of making the ipythonrc* files carry a
4996 bogus .py extension is gone, at last. Examples were moved to a
5000 bogus .py extension is gone, at last. Examples were moved to a
4997 separate subdir under doc/, and the separate executable scripts
5001 separate subdir under doc/, and the separate executable scripts
4998 now live in their own directory. Overall a great cleanup. The
5002 now live in their own directory. Overall a great cleanup. The
4999 manual was updated to use the new files, and setup.py has been
5003 manual was updated to use the new files, and setup.py has been
5000 fixed for this setup.
5004 fixed for this setup.
5001
5005
5002 * IPython/PyColorize.py (Parser.usage): made non-executable and
5006 * IPython/PyColorize.py (Parser.usage): made non-executable and
5003 created a pycolor wrapper around it to be included as a script.
5007 created a pycolor wrapper around it to be included as a script.
5004
5008
5005 2003-03-12 *** Released version 0.2.15pre2
5009 2003-03-12 *** Released version 0.2.15pre2
5006
5010
5007 2003-03-12 Fernando Perez <fperez@colorado.edu>
5011 2003-03-12 Fernando Perez <fperez@colorado.edu>
5008
5012
5009 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5013 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5010 long-standing problem with garbage characters in some terminals.
5014 long-standing problem with garbage characters in some terminals.
5011 The issue was really that the \001 and \002 escapes must _only_ be
5015 The issue was really that the \001 and \002 escapes must _only_ be
5012 passed to input prompts (which call readline), but _never_ to
5016 passed to input prompts (which call readline), but _never_ to
5013 normal text to be printed on screen. I changed ColorANSI to have
5017 normal text to be printed on screen. I changed ColorANSI to have
5014 two classes: TermColors and InputTermColors, each with the
5018 two classes: TermColors and InputTermColors, each with the
5015 appropriate escapes for input prompts or normal text. The code in
5019 appropriate escapes for input prompts or normal text. The code in
5016 Prompts.py got slightly more complicated, but this very old and
5020 Prompts.py got slightly more complicated, but this very old and
5017 annoying bug is finally fixed.
5021 annoying bug is finally fixed.
5018
5022
5019 All the credit for nailing down the real origin of this problem
5023 All the credit for nailing down the real origin of this problem
5020 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5024 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5021 *Many* thanks to him for spending quite a bit of effort on this.
5025 *Many* thanks to him for spending quite a bit of effort on this.
5022
5026
5023 2003-03-05 *** Released version 0.2.15pre1
5027 2003-03-05 *** Released version 0.2.15pre1
5024
5028
5025 2003-03-03 Fernando Perez <fperez@colorado.edu>
5029 2003-03-03 Fernando Perez <fperez@colorado.edu>
5026
5030
5027 * IPython/FakeModule.py: Moved the former _FakeModule to a
5031 * IPython/FakeModule.py: Moved the former _FakeModule to a
5028 separate file, because it's also needed by Magic (to fix a similar
5032 separate file, because it's also needed by Magic (to fix a similar
5029 pickle-related issue in @run).
5033 pickle-related issue in @run).
5030
5034
5031 2003-03-02 Fernando Perez <fperez@colorado.edu>
5035 2003-03-02 Fernando Perez <fperez@colorado.edu>
5032
5036
5033 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5037 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5034 the autocall option at runtime.
5038 the autocall option at runtime.
5035 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5039 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5036 across Magic.py to start separating Magic from InteractiveShell.
5040 across Magic.py to start separating Magic from InteractiveShell.
5037 (Magic._ofind): Fixed to return proper namespace for dotted
5041 (Magic._ofind): Fixed to return proper namespace for dotted
5038 names. Before, a dotted name would always return 'not currently
5042 names. Before, a dotted name would always return 'not currently
5039 defined', because it would find the 'parent'. s.x would be found,
5043 defined', because it would find the 'parent'. s.x would be found,
5040 but since 'x' isn't defined by itself, it would get confused.
5044 but since 'x' isn't defined by itself, it would get confused.
5041 (Magic.magic_run): Fixed pickling problems reported by Ralf
5045 (Magic.magic_run): Fixed pickling problems reported by Ralf
5042 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5046 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5043 that I'd used when Mike Heeter reported similar issues at the
5047 that I'd used when Mike Heeter reported similar issues at the
5044 top-level, but now for @run. It boils down to injecting the
5048 top-level, but now for @run. It boils down to injecting the
5045 namespace where code is being executed with something that looks
5049 namespace where code is being executed with something that looks
5046 enough like a module to fool pickle.dump(). Since a pickle stores
5050 enough like a module to fool pickle.dump(). Since a pickle stores
5047 a named reference to the importing module, we need this for
5051 a named reference to the importing module, we need this for
5048 pickles to save something sensible.
5052 pickles to save something sensible.
5049
5053
5050 * IPython/ipmaker.py (make_IPython): added an autocall option.
5054 * IPython/ipmaker.py (make_IPython): added an autocall option.
5051
5055
5052 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5056 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5053 the auto-eval code. Now autocalling is an option, and the code is
5057 the auto-eval code. Now autocalling is an option, and the code is
5054 also vastly safer. There is no more eval() involved at all.
5058 also vastly safer. There is no more eval() involved at all.
5055
5059
5056 2003-03-01 Fernando Perez <fperez@colorado.edu>
5060 2003-03-01 Fernando Perez <fperez@colorado.edu>
5057
5061
5058 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5062 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5059 dict with named keys instead of a tuple.
5063 dict with named keys instead of a tuple.
5060
5064
5061 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5065 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5062
5066
5063 * setup.py (make_shortcut): Fixed message about directories
5067 * setup.py (make_shortcut): Fixed message about directories
5064 created during Windows installation (the directories were ok, just
5068 created during Windows installation (the directories were ok, just
5065 the printed message was misleading). Thanks to Chris Liechti
5069 the printed message was misleading). Thanks to Chris Liechti
5066 <cliechti-AT-gmx.net> for the heads up.
5070 <cliechti-AT-gmx.net> for the heads up.
5067
5071
5068 2003-02-21 Fernando Perez <fperez@colorado.edu>
5072 2003-02-21 Fernando Perez <fperez@colorado.edu>
5069
5073
5070 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5074 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5071 of ValueError exception when checking for auto-execution. This
5075 of ValueError exception when checking for auto-execution. This
5072 one is raised by things like Numeric arrays arr.flat when the
5076 one is raised by things like Numeric arrays arr.flat when the
5073 array is non-contiguous.
5077 array is non-contiguous.
5074
5078
5075 2003-01-31 Fernando Perez <fperez@colorado.edu>
5079 2003-01-31 Fernando Perez <fperez@colorado.edu>
5076
5080
5077 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5081 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5078 not return any value at all (even though the command would get
5082 not return any value at all (even though the command would get
5079 executed).
5083 executed).
5080 (xsys): Flush stdout right after printing the command to ensure
5084 (xsys): Flush stdout right after printing the command to ensure
5081 proper ordering of commands and command output in the total
5085 proper ordering of commands and command output in the total
5082 output.
5086 output.
5083 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5087 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5084 system/getoutput as defaults. The old ones are kept for
5088 system/getoutput as defaults. The old ones are kept for
5085 compatibility reasons, so no code which uses this library needs
5089 compatibility reasons, so no code which uses this library needs
5086 changing.
5090 changing.
5087
5091
5088 2003-01-27 *** Released version 0.2.14
5092 2003-01-27 *** Released version 0.2.14
5089
5093
5090 2003-01-25 Fernando Perez <fperez@colorado.edu>
5094 2003-01-25 Fernando Perez <fperez@colorado.edu>
5091
5095
5092 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5096 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5093 functions defined in previous edit sessions could not be re-edited
5097 functions defined in previous edit sessions could not be re-edited
5094 (because the temp files were immediately removed). Now temp files
5098 (because the temp files were immediately removed). Now temp files
5095 are removed only at IPython's exit.
5099 are removed only at IPython's exit.
5096 (Magic.magic_run): Improved @run to perform shell-like expansions
5100 (Magic.magic_run): Improved @run to perform shell-like expansions
5097 on its arguments (~users and $VARS). With this, @run becomes more
5101 on its arguments (~users and $VARS). With this, @run becomes more
5098 like a normal command-line.
5102 like a normal command-line.
5099
5103
5100 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5104 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5101 bugs related to embedding and cleaned up that code. A fairly
5105 bugs related to embedding and cleaned up that code. A fairly
5102 important one was the impossibility to access the global namespace
5106 important one was the impossibility to access the global namespace
5103 through the embedded IPython (only local variables were visible).
5107 through the embedded IPython (only local variables were visible).
5104
5108
5105 2003-01-14 Fernando Perez <fperez@colorado.edu>
5109 2003-01-14 Fernando Perez <fperez@colorado.edu>
5106
5110
5107 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5111 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5108 auto-calling to be a bit more conservative. Now it doesn't get
5112 auto-calling to be a bit more conservative. Now it doesn't get
5109 triggered if any of '!=()<>' are in the rest of the input line, to
5113 triggered if any of '!=()<>' are in the rest of the input line, to
5110 allow comparing callables. Thanks to Alex for the heads up.
5114 allow comparing callables. Thanks to Alex for the heads up.
5111
5115
5112 2003-01-07 Fernando Perez <fperez@colorado.edu>
5116 2003-01-07 Fernando Perez <fperez@colorado.edu>
5113
5117
5114 * IPython/genutils.py (page): fixed estimation of the number of
5118 * IPython/genutils.py (page): fixed estimation of the number of
5115 lines in a string to be paged to simply count newlines. This
5119 lines in a string to be paged to simply count newlines. This
5116 prevents over-guessing due to embedded escape sequences. A better
5120 prevents over-guessing due to embedded escape sequences. A better
5117 long-term solution would involve stripping out the control chars
5121 long-term solution would involve stripping out the control chars
5118 for the count, but it's potentially so expensive I just don't
5122 for the count, but it's potentially so expensive I just don't
5119 think it's worth doing.
5123 think it's worth doing.
5120
5124
5121 2002-12-19 *** Released version 0.2.14pre50
5125 2002-12-19 *** Released version 0.2.14pre50
5122
5126
5123 2002-12-19 Fernando Perez <fperez@colorado.edu>
5127 2002-12-19 Fernando Perez <fperez@colorado.edu>
5124
5128
5125 * tools/release (version): Changed release scripts to inform
5129 * tools/release (version): Changed release scripts to inform
5126 Andrea and build a NEWS file with a list of recent changes.
5130 Andrea and build a NEWS file with a list of recent changes.
5127
5131
5128 * IPython/ColorANSI.py (__all__): changed terminal detection
5132 * IPython/ColorANSI.py (__all__): changed terminal detection
5129 code. Seems to work better for xterms without breaking
5133 code. Seems to work better for xterms without breaking
5130 konsole. Will need more testing to determine if WinXP and Mac OSX
5134 konsole. Will need more testing to determine if WinXP and Mac OSX
5131 also work ok.
5135 also work ok.
5132
5136
5133 2002-12-18 *** Released version 0.2.14pre49
5137 2002-12-18 *** Released version 0.2.14pre49
5134
5138
5135 2002-12-18 Fernando Perez <fperez@colorado.edu>
5139 2002-12-18 Fernando Perez <fperez@colorado.edu>
5136
5140
5137 * Docs: added new info about Mac OSX, from Andrea.
5141 * Docs: added new info about Mac OSX, from Andrea.
5138
5142
5139 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5143 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5140 allow direct plotting of python strings whose format is the same
5144 allow direct plotting of python strings whose format is the same
5141 of gnuplot data files.
5145 of gnuplot data files.
5142
5146
5143 2002-12-16 Fernando Perez <fperez@colorado.edu>
5147 2002-12-16 Fernando Perez <fperez@colorado.edu>
5144
5148
5145 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5149 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5146 value of exit question to be acknowledged.
5150 value of exit question to be acknowledged.
5147
5151
5148 2002-12-03 Fernando Perez <fperez@colorado.edu>
5152 2002-12-03 Fernando Perez <fperez@colorado.edu>
5149
5153
5150 * IPython/ipmaker.py: removed generators, which had been added
5154 * IPython/ipmaker.py: removed generators, which had been added
5151 by mistake in an earlier debugging run. This was causing trouble
5155 by mistake in an earlier debugging run. This was causing trouble
5152 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5156 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5153 for pointing this out.
5157 for pointing this out.
5154
5158
5155 2002-11-17 Fernando Perez <fperez@colorado.edu>
5159 2002-11-17 Fernando Perez <fperez@colorado.edu>
5156
5160
5157 * Manual: updated the Gnuplot section.
5161 * Manual: updated the Gnuplot section.
5158
5162
5159 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5163 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5160 a much better split of what goes in Runtime and what goes in
5164 a much better split of what goes in Runtime and what goes in
5161 Interactive.
5165 Interactive.
5162
5166
5163 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5167 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5164 being imported from iplib.
5168 being imported from iplib.
5165
5169
5166 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5170 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5167 for command-passing. Now the global Gnuplot instance is called
5171 for command-passing. Now the global Gnuplot instance is called
5168 'gp' instead of 'g', which was really a far too fragile and
5172 'gp' instead of 'g', which was really a far too fragile and
5169 common name.
5173 common name.
5170
5174
5171 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5175 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5172 bounding boxes generated by Gnuplot for square plots.
5176 bounding boxes generated by Gnuplot for square plots.
5173
5177
5174 * IPython/genutils.py (popkey): new function added. I should
5178 * IPython/genutils.py (popkey): new function added. I should
5175 suggest this on c.l.py as a dict method, it seems useful.
5179 suggest this on c.l.py as a dict method, it seems useful.
5176
5180
5177 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5181 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5178 to transparently handle PostScript generation. MUCH better than
5182 to transparently handle PostScript generation. MUCH better than
5179 the previous plot_eps/replot_eps (which I removed now). The code
5183 the previous plot_eps/replot_eps (which I removed now). The code
5180 is also fairly clean and well documented now (including
5184 is also fairly clean and well documented now (including
5181 docstrings).
5185 docstrings).
5182
5186
5183 2002-11-13 Fernando Perez <fperez@colorado.edu>
5187 2002-11-13 Fernando Perez <fperez@colorado.edu>
5184
5188
5185 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5189 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5186 (inconsistent with options).
5190 (inconsistent with options).
5187
5191
5188 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5192 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5189 manually disabled, I don't know why. Fixed it.
5193 manually disabled, I don't know why. Fixed it.
5190 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5194 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5191 eps output.
5195 eps output.
5192
5196
5193 2002-11-12 Fernando Perez <fperez@colorado.edu>
5197 2002-11-12 Fernando Perez <fperez@colorado.edu>
5194
5198
5195 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5199 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5196 don't propagate up to caller. Fixes crash reported by François
5200 don't propagate up to caller. Fixes crash reported by François
5197 Pinard.
5201 Pinard.
5198
5202
5199 2002-11-09 Fernando Perez <fperez@colorado.edu>
5203 2002-11-09 Fernando Perez <fperez@colorado.edu>
5200
5204
5201 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5205 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5202 history file for new users.
5206 history file for new users.
5203 (make_IPython): fixed bug where initial install would leave the
5207 (make_IPython): fixed bug where initial install would leave the
5204 user running in the .ipython dir.
5208 user running in the .ipython dir.
5205 (make_IPython): fixed bug where config dir .ipython would be
5209 (make_IPython): fixed bug where config dir .ipython would be
5206 created regardless of the given -ipythondir option. Thanks to Cory
5210 created regardless of the given -ipythondir option. Thanks to Cory
5207 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5211 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5208
5212
5209 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5213 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5210 type confirmations. Will need to use it in all of IPython's code
5214 type confirmations. Will need to use it in all of IPython's code
5211 consistently.
5215 consistently.
5212
5216
5213 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5217 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5214 context to print 31 lines instead of the default 5. This will make
5218 context to print 31 lines instead of the default 5. This will make
5215 the crash reports extremely detailed in case the problem is in
5219 the crash reports extremely detailed in case the problem is in
5216 libraries I don't have access to.
5220 libraries I don't have access to.
5217
5221
5218 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5222 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5219 line of defense' code to still crash, but giving users fair
5223 line of defense' code to still crash, but giving users fair
5220 warning. I don't want internal errors to go unreported: if there's
5224 warning. I don't want internal errors to go unreported: if there's
5221 an internal problem, IPython should crash and generate a full
5225 an internal problem, IPython should crash and generate a full
5222 report.
5226 report.
5223
5227
5224 2002-11-08 Fernando Perez <fperez@colorado.edu>
5228 2002-11-08 Fernando Perez <fperez@colorado.edu>
5225
5229
5226 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5230 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5227 otherwise uncaught exceptions which can appear if people set
5231 otherwise uncaught exceptions which can appear if people set
5228 sys.stdout to something badly broken. Thanks to a crash report
5232 sys.stdout to something badly broken. Thanks to a crash report
5229 from henni-AT-mail.brainbot.com.
5233 from henni-AT-mail.brainbot.com.
5230
5234
5231 2002-11-04 Fernando Perez <fperez@colorado.edu>
5235 2002-11-04 Fernando Perez <fperez@colorado.edu>
5232
5236
5233 * IPython/iplib.py (InteractiveShell.interact): added
5237 * IPython/iplib.py (InteractiveShell.interact): added
5234 __IPYTHON__active to the builtins. It's a flag which goes on when
5238 __IPYTHON__active to the builtins. It's a flag which goes on when
5235 the interaction starts and goes off again when it stops. This
5239 the interaction starts and goes off again when it stops. This
5236 allows embedding code to detect being inside IPython. Before this
5240 allows embedding code to detect being inside IPython. Before this
5237 was done via __IPYTHON__, but that only shows that an IPython
5241 was done via __IPYTHON__, but that only shows that an IPython
5238 instance has been created.
5242 instance has been created.
5239
5243
5240 * IPython/Magic.py (Magic.magic_env): I realized that in a
5244 * IPython/Magic.py (Magic.magic_env): I realized that in a
5241 UserDict, instance.data holds the data as a normal dict. So I
5245 UserDict, instance.data holds the data as a normal dict. So I
5242 modified @env to return os.environ.data instead of rebuilding a
5246 modified @env to return os.environ.data instead of rebuilding a
5243 dict by hand.
5247 dict by hand.
5244
5248
5245 2002-11-02 Fernando Perez <fperez@colorado.edu>
5249 2002-11-02 Fernando Perez <fperez@colorado.edu>
5246
5250
5247 * IPython/genutils.py (warn): changed so that level 1 prints no
5251 * IPython/genutils.py (warn): changed so that level 1 prints no
5248 header. Level 2 is now the default (with 'WARNING' header, as
5252 header. Level 2 is now the default (with 'WARNING' header, as
5249 before). I think I tracked all places where changes were needed in
5253 before). I think I tracked all places where changes were needed in
5250 IPython, but outside code using the old level numbering may have
5254 IPython, but outside code using the old level numbering may have
5251 broken.
5255 broken.
5252
5256
5253 * IPython/iplib.py (InteractiveShell.runcode): added this to
5257 * IPython/iplib.py (InteractiveShell.runcode): added this to
5254 handle the tracebacks in SystemExit traps correctly. The previous
5258 handle the tracebacks in SystemExit traps correctly. The previous
5255 code (through interact) was printing more of the stack than
5259 code (through interact) was printing more of the stack than
5256 necessary, showing IPython internal code to the user.
5260 necessary, showing IPython internal code to the user.
5257
5261
5258 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5262 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5259 default. Now that the default at the confirmation prompt is yes,
5263 default. Now that the default at the confirmation prompt is yes,
5260 it's not so intrusive. François' argument that ipython sessions
5264 it's not so intrusive. François' argument that ipython sessions
5261 tend to be complex enough not to lose them from an accidental C-d,
5265 tend to be complex enough not to lose them from an accidental C-d,
5262 is a valid one.
5266 is a valid one.
5263
5267
5264 * IPython/iplib.py (InteractiveShell.interact): added a
5268 * IPython/iplib.py (InteractiveShell.interact): added a
5265 showtraceback() call to the SystemExit trap, and modified the exit
5269 showtraceback() call to the SystemExit trap, and modified the exit
5266 confirmation to have yes as the default.
5270 confirmation to have yes as the default.
5267
5271
5268 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5272 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5269 this file. It's been gone from the code for a long time, this was
5273 this file. It's been gone from the code for a long time, this was
5270 simply leftover junk.
5274 simply leftover junk.
5271
5275
5272 2002-11-01 Fernando Perez <fperez@colorado.edu>
5276 2002-11-01 Fernando Perez <fperez@colorado.edu>
5273
5277
5274 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5278 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5275 added. If set, IPython now traps EOF and asks for
5279 added. If set, IPython now traps EOF and asks for
5276 confirmation. After a request by François Pinard.
5280 confirmation. After a request by François Pinard.
5277
5281
5278 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5282 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5279 of @abort, and with a new (better) mechanism for handling the
5283 of @abort, and with a new (better) mechanism for handling the
5280 exceptions.
5284 exceptions.
5281
5285
5282 2002-10-27 Fernando Perez <fperez@colorado.edu>
5286 2002-10-27 Fernando Perez <fperez@colorado.edu>
5283
5287
5284 * IPython/usage.py (__doc__): updated the --help information and
5288 * IPython/usage.py (__doc__): updated the --help information and
5285 the ipythonrc file to indicate that -log generates
5289 the ipythonrc file to indicate that -log generates
5286 ./ipython.log. Also fixed the corresponding info in @logstart.
5290 ./ipython.log. Also fixed the corresponding info in @logstart.
5287 This and several other fixes in the manuals thanks to reports by
5291 This and several other fixes in the manuals thanks to reports by
5288 François Pinard <pinard-AT-iro.umontreal.ca>.
5292 François Pinard <pinard-AT-iro.umontreal.ca>.
5289
5293
5290 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5294 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5291 refer to @logstart (instead of @log, which doesn't exist).
5295 refer to @logstart (instead of @log, which doesn't exist).
5292
5296
5293 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5297 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5294 AttributeError crash. Thanks to Christopher Armstrong
5298 AttributeError crash. Thanks to Christopher Armstrong
5295 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5299 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5296 introduced recently (in 0.2.14pre37) with the fix to the eval
5300 introduced recently (in 0.2.14pre37) with the fix to the eval
5297 problem mentioned below.
5301 problem mentioned below.
5298
5302
5299 2002-10-17 Fernando Perez <fperez@colorado.edu>
5303 2002-10-17 Fernando Perez <fperez@colorado.edu>
5300
5304
5301 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5305 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5302 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5306 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5303
5307
5304 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5308 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5305 this function to fix a problem reported by Alex Schmolck. He saw
5309 this function to fix a problem reported by Alex Schmolck. He saw
5306 it with list comprehensions and generators, which were getting
5310 it with list comprehensions and generators, which were getting
5307 called twice. The real problem was an 'eval' call in testing for
5311 called twice. The real problem was an 'eval' call in testing for
5308 automagic which was evaluating the input line silently.
5312 automagic which was evaluating the input line silently.
5309
5313
5310 This is a potentially very nasty bug, if the input has side
5314 This is a potentially very nasty bug, if the input has side
5311 effects which must not be repeated. The code is much cleaner now,
5315 effects which must not be repeated. The code is much cleaner now,
5312 without any blanket 'except' left and with a regexp test for
5316 without any blanket 'except' left and with a regexp test for
5313 actual function names.
5317 actual function names.
5314
5318
5315 But an eval remains, which I'm not fully comfortable with. I just
5319 But an eval remains, which I'm not fully comfortable with. I just
5316 don't know how to find out if an expression could be a callable in
5320 don't know how to find out if an expression could be a callable in
5317 the user's namespace without doing an eval on the string. However
5321 the user's namespace without doing an eval on the string. However
5318 that string is now much more strictly checked so that no code
5322 that string is now much more strictly checked so that no code
5319 slips by, so the eval should only happen for things that can
5323 slips by, so the eval should only happen for things that can
5320 really be only function/method names.
5324 really be only function/method names.
5321
5325
5322 2002-10-15 Fernando Perez <fperez@colorado.edu>
5326 2002-10-15 Fernando Perez <fperez@colorado.edu>
5323
5327
5324 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5328 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5325 OSX information to main manual, removed README_Mac_OSX file from
5329 OSX information to main manual, removed README_Mac_OSX file from
5326 distribution. Also updated credits for recent additions.
5330 distribution. Also updated credits for recent additions.
5327
5331
5328 2002-10-10 Fernando Perez <fperez@colorado.edu>
5332 2002-10-10 Fernando Perez <fperez@colorado.edu>
5329
5333
5330 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5334 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5331 terminal-related issues. Many thanks to Andrea Riciputi
5335 terminal-related issues. Many thanks to Andrea Riciputi
5332 <andrea.riciputi-AT-libero.it> for writing it.
5336 <andrea.riciputi-AT-libero.it> for writing it.
5333
5337
5334 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5338 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5335 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5339 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5336
5340
5337 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5341 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5338 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5342 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5339 <syver-en-AT-online.no> who both submitted patches for this problem.
5343 <syver-en-AT-online.no> who both submitted patches for this problem.
5340
5344
5341 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5345 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5342 global embedding to make sure that things don't overwrite user
5346 global embedding to make sure that things don't overwrite user
5343 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5347 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5344
5348
5345 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5349 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5346 compatibility. Thanks to Hayden Callow
5350 compatibility. Thanks to Hayden Callow
5347 <h.callow-AT-elec.canterbury.ac.nz>
5351 <h.callow-AT-elec.canterbury.ac.nz>
5348
5352
5349 2002-10-04 Fernando Perez <fperez@colorado.edu>
5353 2002-10-04 Fernando Perez <fperez@colorado.edu>
5350
5354
5351 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5355 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5352 Gnuplot.File objects.
5356 Gnuplot.File objects.
5353
5357
5354 2002-07-23 Fernando Perez <fperez@colorado.edu>
5358 2002-07-23 Fernando Perez <fperez@colorado.edu>
5355
5359
5356 * IPython/genutils.py (timing): Added timings() and timing() for
5360 * IPython/genutils.py (timing): Added timings() and timing() for
5357 quick access to the most commonly needed data, the execution
5361 quick access to the most commonly needed data, the execution
5358 times. Old timing() renamed to timings_out().
5362 times. Old timing() renamed to timings_out().
5359
5363
5360 2002-07-18 Fernando Perez <fperez@colorado.edu>
5364 2002-07-18 Fernando Perez <fperez@colorado.edu>
5361
5365
5362 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5366 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5363 bug with nested instances disrupting the parent's tab completion.
5367 bug with nested instances disrupting the parent's tab completion.
5364
5368
5365 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5369 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5366 all_completions code to begin the emacs integration.
5370 all_completions code to begin the emacs integration.
5367
5371
5368 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5372 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5369 argument to allow titling individual arrays when plotting.
5373 argument to allow titling individual arrays when plotting.
5370
5374
5371 2002-07-15 Fernando Perez <fperez@colorado.edu>
5375 2002-07-15 Fernando Perez <fperez@colorado.edu>
5372
5376
5373 * setup.py (make_shortcut): changed to retrieve the value of
5377 * setup.py (make_shortcut): changed to retrieve the value of
5374 'Program Files' directory from the registry (this value changes in
5378 'Program Files' directory from the registry (this value changes in
5375 non-english versions of Windows). Thanks to Thomas Fanslau
5379 non-english versions of Windows). Thanks to Thomas Fanslau
5376 <tfanslau-AT-gmx.de> for the report.
5380 <tfanslau-AT-gmx.de> for the report.
5377
5381
5378 2002-07-10 Fernando Perez <fperez@colorado.edu>
5382 2002-07-10 Fernando Perez <fperez@colorado.edu>
5379
5383
5380 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5384 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5381 a bug in pdb, which crashes if a line with only whitespace is
5385 a bug in pdb, which crashes if a line with only whitespace is
5382 entered. Bug report submitted to sourceforge.
5386 entered. Bug report submitted to sourceforge.
5383
5387
5384 2002-07-09 Fernando Perez <fperez@colorado.edu>
5388 2002-07-09 Fernando Perez <fperez@colorado.edu>
5385
5389
5386 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5390 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5387 reporting exceptions (it's a bug in inspect.py, I just set a
5391 reporting exceptions (it's a bug in inspect.py, I just set a
5388 workaround).
5392 workaround).
5389
5393
5390 2002-07-08 Fernando Perez <fperez@colorado.edu>
5394 2002-07-08 Fernando Perez <fperez@colorado.edu>
5391
5395
5392 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5396 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5393 __IPYTHON__ in __builtins__ to show up in user_ns.
5397 __IPYTHON__ in __builtins__ to show up in user_ns.
5394
5398
5395 2002-07-03 Fernando Perez <fperez@colorado.edu>
5399 2002-07-03 Fernando Perez <fperez@colorado.edu>
5396
5400
5397 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5401 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5398 name from @gp_set_instance to @gp_set_default.
5402 name from @gp_set_instance to @gp_set_default.
5399
5403
5400 * IPython/ipmaker.py (make_IPython): default editor value set to
5404 * IPython/ipmaker.py (make_IPython): default editor value set to
5401 '0' (a string), to match the rc file. Otherwise will crash when
5405 '0' (a string), to match the rc file. Otherwise will crash when
5402 .strip() is called on it.
5406 .strip() is called on it.
5403
5407
5404
5408
5405 2002-06-28 Fernando Perez <fperez@colorado.edu>
5409 2002-06-28 Fernando Perez <fperez@colorado.edu>
5406
5410
5407 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5411 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5408 of files in current directory when a file is executed via
5412 of files in current directory when a file is executed via
5409 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5413 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5410
5414
5411 * setup.py (manfiles): fix for rpm builds, submitted by RA
5415 * setup.py (manfiles): fix for rpm builds, submitted by RA
5412 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5416 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5413
5417
5414 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5418 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5415 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5419 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5416 string!). A. Schmolck caught this one.
5420 string!). A. Schmolck caught this one.
5417
5421
5418 2002-06-27 Fernando Perez <fperez@colorado.edu>
5422 2002-06-27 Fernando Perez <fperez@colorado.edu>
5419
5423
5420 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5424 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5421 defined files at the cmd line. __name__ wasn't being set to
5425 defined files at the cmd line. __name__ wasn't being set to
5422 __main__.
5426 __main__.
5423
5427
5424 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5428 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5425 regular lists and tuples besides Numeric arrays.
5429 regular lists and tuples besides Numeric arrays.
5426
5430
5427 * IPython/Prompts.py (CachedOutput.__call__): Added output
5431 * IPython/Prompts.py (CachedOutput.__call__): Added output
5428 supression for input ending with ';'. Similar to Mathematica and
5432 supression for input ending with ';'. Similar to Mathematica and
5429 Matlab. The _* vars and Out[] list are still updated, just like
5433 Matlab. The _* vars and Out[] list are still updated, just like
5430 Mathematica behaves.
5434 Mathematica behaves.
5431
5435
5432 2002-06-25 Fernando Perez <fperez@colorado.edu>
5436 2002-06-25 Fernando Perez <fperez@colorado.edu>
5433
5437
5434 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5438 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5435 .ini extensions for profiels under Windows.
5439 .ini extensions for profiels under Windows.
5436
5440
5437 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5441 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5438 string form. Fix contributed by Alexander Schmolck
5442 string form. Fix contributed by Alexander Schmolck
5439 <a.schmolck-AT-gmx.net>
5443 <a.schmolck-AT-gmx.net>
5440
5444
5441 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5445 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5442 pre-configured Gnuplot instance.
5446 pre-configured Gnuplot instance.
5443
5447
5444 2002-06-21 Fernando Perez <fperez@colorado.edu>
5448 2002-06-21 Fernando Perez <fperez@colorado.edu>
5445
5449
5446 * IPython/numutils.py (exp_safe): new function, works around the
5450 * IPython/numutils.py (exp_safe): new function, works around the
5447 underflow problems in Numeric.
5451 underflow problems in Numeric.
5448 (log2): New fn. Safe log in base 2: returns exact integer answer
5452 (log2): New fn. Safe log in base 2: returns exact integer answer
5449 for exact integer powers of 2.
5453 for exact integer powers of 2.
5450
5454
5451 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5455 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5452 properly.
5456 properly.
5453
5457
5454 2002-06-20 Fernando Perez <fperez@colorado.edu>
5458 2002-06-20 Fernando Perez <fperez@colorado.edu>
5455
5459
5456 * IPython/genutils.py (timing): new function like
5460 * IPython/genutils.py (timing): new function like
5457 Mathematica's. Similar to time_test, but returns more info.
5461 Mathematica's. Similar to time_test, but returns more info.
5458
5462
5459 2002-06-18 Fernando Perez <fperez@colorado.edu>
5463 2002-06-18 Fernando Perez <fperez@colorado.edu>
5460
5464
5461 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5465 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5462 according to Mike Heeter's suggestions.
5466 according to Mike Heeter's suggestions.
5463
5467
5464 2002-06-16 Fernando Perez <fperez@colorado.edu>
5468 2002-06-16 Fernando Perez <fperez@colorado.edu>
5465
5469
5466 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5470 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5467 system. GnuplotMagic is gone as a user-directory option. New files
5471 system. GnuplotMagic is gone as a user-directory option. New files
5468 make it easier to use all the gnuplot stuff both from external
5472 make it easier to use all the gnuplot stuff both from external
5469 programs as well as from IPython. Had to rewrite part of
5473 programs as well as from IPython. Had to rewrite part of
5470 hardcopy() b/c of a strange bug: often the ps files simply don't
5474 hardcopy() b/c of a strange bug: often the ps files simply don't
5471 get created, and require a repeat of the command (often several
5475 get created, and require a repeat of the command (often several
5472 times).
5476 times).
5473
5477
5474 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5478 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5475 resolve output channel at call time, so that if sys.stderr has
5479 resolve output channel at call time, so that if sys.stderr has
5476 been redirected by user this gets honored.
5480 been redirected by user this gets honored.
5477
5481
5478 2002-06-13 Fernando Perez <fperez@colorado.edu>
5482 2002-06-13 Fernando Perez <fperez@colorado.edu>
5479
5483
5480 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5484 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5481 IPShell. Kept a copy with the old names to avoid breaking people's
5485 IPShell. Kept a copy with the old names to avoid breaking people's
5482 embedded code.
5486 embedded code.
5483
5487
5484 * IPython/ipython: simplified it to the bare minimum after
5488 * IPython/ipython: simplified it to the bare minimum after
5485 Holger's suggestions. Added info about how to use it in
5489 Holger's suggestions. Added info about how to use it in
5486 PYTHONSTARTUP.
5490 PYTHONSTARTUP.
5487
5491
5488 * IPython/Shell.py (IPythonShell): changed the options passing
5492 * IPython/Shell.py (IPythonShell): changed the options passing
5489 from a string with funky %s replacements to a straight list. Maybe
5493 from a string with funky %s replacements to a straight list. Maybe
5490 a bit more typing, but it follows sys.argv conventions, so there's
5494 a bit more typing, but it follows sys.argv conventions, so there's
5491 less special-casing to remember.
5495 less special-casing to remember.
5492
5496
5493 2002-06-12 Fernando Perez <fperez@colorado.edu>
5497 2002-06-12 Fernando Perez <fperez@colorado.edu>
5494
5498
5495 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5499 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5496 command. Thanks to a suggestion by Mike Heeter.
5500 command. Thanks to a suggestion by Mike Heeter.
5497 (Magic.magic_pfile): added behavior to look at filenames if given
5501 (Magic.magic_pfile): added behavior to look at filenames if given
5498 arg is not a defined object.
5502 arg is not a defined object.
5499 (Magic.magic_save): New @save function to save code snippets. Also
5503 (Magic.magic_save): New @save function to save code snippets. Also
5500 a Mike Heeter idea.
5504 a Mike Heeter idea.
5501
5505
5502 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5506 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5503 plot() and replot(). Much more convenient now, especially for
5507 plot() and replot(). Much more convenient now, especially for
5504 interactive use.
5508 interactive use.
5505
5509
5506 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5510 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5507 filenames.
5511 filenames.
5508
5512
5509 2002-06-02 Fernando Perez <fperez@colorado.edu>
5513 2002-06-02 Fernando Perez <fperez@colorado.edu>
5510
5514
5511 * IPython/Struct.py (Struct.__init__): modified to admit
5515 * IPython/Struct.py (Struct.__init__): modified to admit
5512 initialization via another struct.
5516 initialization via another struct.
5513
5517
5514 * IPython/genutils.py (SystemExec.__init__): New stateful
5518 * IPython/genutils.py (SystemExec.__init__): New stateful
5515 interface to xsys and bq. Useful for writing system scripts.
5519 interface to xsys and bq. Useful for writing system scripts.
5516
5520
5517 2002-05-30 Fernando Perez <fperez@colorado.edu>
5521 2002-05-30 Fernando Perez <fperez@colorado.edu>
5518
5522
5519 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5523 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5520 documents. This will make the user download smaller (it's getting
5524 documents. This will make the user download smaller (it's getting
5521 too big).
5525 too big).
5522
5526
5523 2002-05-29 Fernando Perez <fperez@colorado.edu>
5527 2002-05-29 Fernando Perez <fperez@colorado.edu>
5524
5528
5525 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5529 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5526 fix problems with shelve and pickle. Seems to work, but I don't
5530 fix problems with shelve and pickle. Seems to work, but I don't
5527 know if corner cases break it. Thanks to Mike Heeter
5531 know if corner cases break it. Thanks to Mike Heeter
5528 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5532 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5529
5533
5530 2002-05-24 Fernando Perez <fperez@colorado.edu>
5534 2002-05-24 Fernando Perez <fperez@colorado.edu>
5531
5535
5532 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5536 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5533 macros having broken.
5537 macros having broken.
5534
5538
5535 2002-05-21 Fernando Perez <fperez@colorado.edu>
5539 2002-05-21 Fernando Perez <fperez@colorado.edu>
5536
5540
5537 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5541 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5538 introduced logging bug: all history before logging started was
5542 introduced logging bug: all history before logging started was
5539 being written one character per line! This came from the redesign
5543 being written one character per line! This came from the redesign
5540 of the input history as a special list which slices to strings,
5544 of the input history as a special list which slices to strings,
5541 not to lists.
5545 not to lists.
5542
5546
5543 2002-05-20 Fernando Perez <fperez@colorado.edu>
5547 2002-05-20 Fernando Perez <fperez@colorado.edu>
5544
5548
5545 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5549 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5546 be an attribute of all classes in this module. The design of these
5550 be an attribute of all classes in this module. The design of these
5547 classes needs some serious overhauling.
5551 classes needs some serious overhauling.
5548
5552
5549 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5553 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5550 which was ignoring '_' in option names.
5554 which was ignoring '_' in option names.
5551
5555
5552 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5556 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5553 'Verbose_novars' to 'Context' and made it the new default. It's a
5557 'Verbose_novars' to 'Context' and made it the new default. It's a
5554 bit more readable and also safer than verbose.
5558 bit more readable and also safer than verbose.
5555
5559
5556 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5560 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5557 triple-quoted strings.
5561 triple-quoted strings.
5558
5562
5559 * IPython/OInspect.py (__all__): new module exposing the object
5563 * IPython/OInspect.py (__all__): new module exposing the object
5560 introspection facilities. Now the corresponding magics are dummy
5564 introspection facilities. Now the corresponding magics are dummy
5561 wrappers around this. Having this module will make it much easier
5565 wrappers around this. Having this module will make it much easier
5562 to put these functions into our modified pdb.
5566 to put these functions into our modified pdb.
5563 This new object inspector system uses the new colorizing module,
5567 This new object inspector system uses the new colorizing module,
5564 so source code and other things are nicely syntax highlighted.
5568 so source code and other things are nicely syntax highlighted.
5565
5569
5566 2002-05-18 Fernando Perez <fperez@colorado.edu>
5570 2002-05-18 Fernando Perez <fperez@colorado.edu>
5567
5571
5568 * IPython/ColorANSI.py: Split the coloring tools into a separate
5572 * IPython/ColorANSI.py: Split the coloring tools into a separate
5569 module so I can use them in other code easier (they were part of
5573 module so I can use them in other code easier (they were part of
5570 ultraTB).
5574 ultraTB).
5571
5575
5572 2002-05-17 Fernando Perez <fperez@colorado.edu>
5576 2002-05-17 Fernando Perez <fperez@colorado.edu>
5573
5577
5574 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5578 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5575 fixed it to set the global 'g' also to the called instance, as
5579 fixed it to set the global 'g' also to the called instance, as
5576 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5580 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5577 user's 'g' variables).
5581 user's 'g' variables).
5578
5582
5579 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5583 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5580 global variables (aliases to _ih,_oh) so that users which expect
5584 global variables (aliases to _ih,_oh) so that users which expect
5581 In[5] or Out[7] to work aren't unpleasantly surprised.
5585 In[5] or Out[7] to work aren't unpleasantly surprised.
5582 (InputList.__getslice__): new class to allow executing slices of
5586 (InputList.__getslice__): new class to allow executing slices of
5583 input history directly. Very simple class, complements the use of
5587 input history directly. Very simple class, complements the use of
5584 macros.
5588 macros.
5585
5589
5586 2002-05-16 Fernando Perez <fperez@colorado.edu>
5590 2002-05-16 Fernando Perez <fperez@colorado.edu>
5587
5591
5588 * setup.py (docdirbase): make doc directory be just doc/IPython
5592 * setup.py (docdirbase): make doc directory be just doc/IPython
5589 without version numbers, it will reduce clutter for users.
5593 without version numbers, it will reduce clutter for users.
5590
5594
5591 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5595 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5592 execfile call to prevent possible memory leak. See for details:
5596 execfile call to prevent possible memory leak. See for details:
5593 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5597 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5594
5598
5595 2002-05-15 Fernando Perez <fperez@colorado.edu>
5599 2002-05-15 Fernando Perez <fperez@colorado.edu>
5596
5600
5597 * IPython/Magic.py (Magic.magic_psource): made the object
5601 * IPython/Magic.py (Magic.magic_psource): made the object
5598 introspection names be more standard: pdoc, pdef, pfile and
5602 introspection names be more standard: pdoc, pdef, pfile and
5599 psource. They all print/page their output, and it makes
5603 psource. They all print/page their output, and it makes
5600 remembering them easier. Kept old names for compatibility as
5604 remembering them easier. Kept old names for compatibility as
5601 aliases.
5605 aliases.
5602
5606
5603 2002-05-14 Fernando Perez <fperez@colorado.edu>
5607 2002-05-14 Fernando Perez <fperez@colorado.edu>
5604
5608
5605 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5609 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5606 what the mouse problem was. The trick is to use gnuplot with temp
5610 what the mouse problem was. The trick is to use gnuplot with temp
5607 files and NOT with pipes (for data communication), because having
5611 files and NOT with pipes (for data communication), because having
5608 both pipes and the mouse on is bad news.
5612 both pipes and the mouse on is bad news.
5609
5613
5610 2002-05-13 Fernando Perez <fperez@colorado.edu>
5614 2002-05-13 Fernando Perez <fperez@colorado.edu>
5611
5615
5612 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5616 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5613 bug. Information would be reported about builtins even when
5617 bug. Information would be reported about builtins even when
5614 user-defined functions overrode them.
5618 user-defined functions overrode them.
5615
5619
5616 2002-05-11 Fernando Perez <fperez@colorado.edu>
5620 2002-05-11 Fernando Perez <fperez@colorado.edu>
5617
5621
5618 * IPython/__init__.py (__all__): removed FlexCompleter from
5622 * IPython/__init__.py (__all__): removed FlexCompleter from
5619 __all__ so that things don't fail in platforms without readline.
5623 __all__ so that things don't fail in platforms without readline.
5620
5624
5621 2002-05-10 Fernando Perez <fperez@colorado.edu>
5625 2002-05-10 Fernando Perez <fperez@colorado.edu>
5622
5626
5623 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5627 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5624 it requires Numeric, effectively making Numeric a dependency for
5628 it requires Numeric, effectively making Numeric a dependency for
5625 IPython.
5629 IPython.
5626
5630
5627 * Released 0.2.13
5631 * Released 0.2.13
5628
5632
5629 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5633 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5630 profiler interface. Now all the major options from the profiler
5634 profiler interface. Now all the major options from the profiler
5631 module are directly supported in IPython, both for single
5635 module are directly supported in IPython, both for single
5632 expressions (@prun) and for full programs (@run -p).
5636 expressions (@prun) and for full programs (@run -p).
5633
5637
5634 2002-05-09 Fernando Perez <fperez@colorado.edu>
5638 2002-05-09 Fernando Perez <fperez@colorado.edu>
5635
5639
5636 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5640 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5637 magic properly formatted for screen.
5641 magic properly formatted for screen.
5638
5642
5639 * setup.py (make_shortcut): Changed things to put pdf version in
5643 * setup.py (make_shortcut): Changed things to put pdf version in
5640 doc/ instead of doc/manual (had to change lyxport a bit).
5644 doc/ instead of doc/manual (had to change lyxport a bit).
5641
5645
5642 * IPython/Magic.py (Profile.string_stats): made profile runs go
5646 * IPython/Magic.py (Profile.string_stats): made profile runs go
5643 through pager (they are long and a pager allows searching, saving,
5647 through pager (they are long and a pager allows searching, saving,
5644 etc.)
5648 etc.)
5645
5649
5646 2002-05-08 Fernando Perez <fperez@colorado.edu>
5650 2002-05-08 Fernando Perez <fperez@colorado.edu>
5647
5651
5648 * Released 0.2.12
5652 * Released 0.2.12
5649
5653
5650 2002-05-06 Fernando Perez <fperez@colorado.edu>
5654 2002-05-06 Fernando Perez <fperez@colorado.edu>
5651
5655
5652 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5656 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5653 introduced); 'hist n1 n2' was broken.
5657 introduced); 'hist n1 n2' was broken.
5654 (Magic.magic_pdb): added optional on/off arguments to @pdb
5658 (Magic.magic_pdb): added optional on/off arguments to @pdb
5655 (Magic.magic_run): added option -i to @run, which executes code in
5659 (Magic.magic_run): added option -i to @run, which executes code in
5656 the IPython namespace instead of a clean one. Also added @irun as
5660 the IPython namespace instead of a clean one. Also added @irun as
5657 an alias to @run -i.
5661 an alias to @run -i.
5658
5662
5659 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5663 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5660 fixed (it didn't really do anything, the namespaces were wrong).
5664 fixed (it didn't really do anything, the namespaces were wrong).
5661
5665
5662 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5666 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5663
5667
5664 * IPython/__init__.py (__all__): Fixed package namespace, now
5668 * IPython/__init__.py (__all__): Fixed package namespace, now
5665 'import IPython' does give access to IPython.<all> as
5669 'import IPython' does give access to IPython.<all> as
5666 expected. Also renamed __release__ to Release.
5670 expected. Also renamed __release__ to Release.
5667
5671
5668 * IPython/Debugger.py (__license__): created new Pdb class which
5672 * IPython/Debugger.py (__license__): created new Pdb class which
5669 functions like a drop-in for the normal pdb.Pdb but does NOT
5673 functions like a drop-in for the normal pdb.Pdb but does NOT
5670 import readline by default. This way it doesn't muck up IPython's
5674 import readline by default. This way it doesn't muck up IPython's
5671 readline handling, and now tab-completion finally works in the
5675 readline handling, and now tab-completion finally works in the
5672 debugger -- sort of. It completes things globally visible, but the
5676 debugger -- sort of. It completes things globally visible, but the
5673 completer doesn't track the stack as pdb walks it. That's a bit
5677 completer doesn't track the stack as pdb walks it. That's a bit
5674 tricky, and I'll have to implement it later.
5678 tricky, and I'll have to implement it later.
5675
5679
5676 2002-05-05 Fernando Perez <fperez@colorado.edu>
5680 2002-05-05 Fernando Perez <fperez@colorado.edu>
5677
5681
5678 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5682 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5679 magic docstrings when printed via ? (explicit \'s were being
5683 magic docstrings when printed via ? (explicit \'s were being
5680 printed).
5684 printed).
5681
5685
5682 * IPython/ipmaker.py (make_IPython): fixed namespace
5686 * IPython/ipmaker.py (make_IPython): fixed namespace
5683 identification bug. Now variables loaded via logs or command-line
5687 identification bug. Now variables loaded via logs or command-line
5684 files are recognized in the interactive namespace by @who.
5688 files are recognized in the interactive namespace by @who.
5685
5689
5686 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5690 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5687 log replay system stemming from the string form of Structs.
5691 log replay system stemming from the string form of Structs.
5688
5692
5689 * IPython/Magic.py (Macro.__init__): improved macros to properly
5693 * IPython/Magic.py (Macro.__init__): improved macros to properly
5690 handle magic commands in them.
5694 handle magic commands in them.
5691 (Magic.magic_logstart): usernames are now expanded so 'logstart
5695 (Magic.magic_logstart): usernames are now expanded so 'logstart
5692 ~/mylog' now works.
5696 ~/mylog' now works.
5693
5697
5694 * IPython/iplib.py (complete): fixed bug where paths starting with
5698 * IPython/iplib.py (complete): fixed bug where paths starting with
5695 '/' would be completed as magic names.
5699 '/' would be completed as magic names.
5696
5700
5697 2002-05-04 Fernando Perez <fperez@colorado.edu>
5701 2002-05-04 Fernando Perez <fperez@colorado.edu>
5698
5702
5699 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5703 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5700 allow running full programs under the profiler's control.
5704 allow running full programs under the profiler's control.
5701
5705
5702 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5706 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5703 mode to report exceptions verbosely but without formatting
5707 mode to report exceptions verbosely but without formatting
5704 variables. This addresses the issue of ipython 'freezing' (it's
5708 variables. This addresses the issue of ipython 'freezing' (it's
5705 not frozen, but caught in an expensive formatting loop) when huge
5709 not frozen, but caught in an expensive formatting loop) when huge
5706 variables are in the context of an exception.
5710 variables are in the context of an exception.
5707 (VerboseTB.text): Added '--->' markers at line where exception was
5711 (VerboseTB.text): Added '--->' markers at line where exception was
5708 triggered. Much clearer to read, especially in NoColor modes.
5712 triggered. Much clearer to read, especially in NoColor modes.
5709
5713
5710 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5714 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5711 implemented in reverse when changing to the new parse_options().
5715 implemented in reverse when changing to the new parse_options().
5712
5716
5713 2002-05-03 Fernando Perez <fperez@colorado.edu>
5717 2002-05-03 Fernando Perez <fperez@colorado.edu>
5714
5718
5715 * IPython/Magic.py (Magic.parse_options): new function so that
5719 * IPython/Magic.py (Magic.parse_options): new function so that
5716 magics can parse options easier.
5720 magics can parse options easier.
5717 (Magic.magic_prun): new function similar to profile.run(),
5721 (Magic.magic_prun): new function similar to profile.run(),
5718 suggested by Chris Hart.
5722 suggested by Chris Hart.
5719 (Magic.magic_cd): fixed behavior so that it only changes if
5723 (Magic.magic_cd): fixed behavior so that it only changes if
5720 directory actually is in history.
5724 directory actually is in history.
5721
5725
5722 * IPython/usage.py (__doc__): added information about potential
5726 * IPython/usage.py (__doc__): added information about potential
5723 slowness of Verbose exception mode when there are huge data
5727 slowness of Verbose exception mode when there are huge data
5724 structures to be formatted (thanks to Archie Paulson).
5728 structures to be formatted (thanks to Archie Paulson).
5725
5729
5726 * IPython/ipmaker.py (make_IPython): Changed default logging
5730 * IPython/ipmaker.py (make_IPython): Changed default logging
5727 (when simply called with -log) to use curr_dir/ipython.log in
5731 (when simply called with -log) to use curr_dir/ipython.log in
5728 rotate mode. Fixed crash which was occuring with -log before
5732 rotate mode. Fixed crash which was occuring with -log before
5729 (thanks to Jim Boyle).
5733 (thanks to Jim Boyle).
5730
5734
5731 2002-05-01 Fernando Perez <fperez@colorado.edu>
5735 2002-05-01 Fernando Perez <fperez@colorado.edu>
5732
5736
5733 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5737 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5734 was nasty -- though somewhat of a corner case).
5738 was nasty -- though somewhat of a corner case).
5735
5739
5736 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5740 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5737 text (was a bug).
5741 text (was a bug).
5738
5742
5739 2002-04-30 Fernando Perez <fperez@colorado.edu>
5743 2002-04-30 Fernando Perez <fperez@colorado.edu>
5740
5744
5741 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5745 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5742 a print after ^D or ^C from the user so that the In[] prompt
5746 a print after ^D or ^C from the user so that the In[] prompt
5743 doesn't over-run the gnuplot one.
5747 doesn't over-run the gnuplot one.
5744
5748
5745 2002-04-29 Fernando Perez <fperez@colorado.edu>
5749 2002-04-29 Fernando Perez <fperez@colorado.edu>
5746
5750
5747 * Released 0.2.10
5751 * Released 0.2.10
5748
5752
5749 * IPython/__release__.py (version): get date dynamically.
5753 * IPython/__release__.py (version): get date dynamically.
5750
5754
5751 * Misc. documentation updates thanks to Arnd's comments. Also ran
5755 * Misc. documentation updates thanks to Arnd's comments. Also ran
5752 a full spellcheck on the manual (hadn't been done in a while).
5756 a full spellcheck on the manual (hadn't been done in a while).
5753
5757
5754 2002-04-27 Fernando Perez <fperez@colorado.edu>
5758 2002-04-27 Fernando Perez <fperez@colorado.edu>
5755
5759
5756 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5760 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5757 starting a log in mid-session would reset the input history list.
5761 starting a log in mid-session would reset the input history list.
5758
5762
5759 2002-04-26 Fernando Perez <fperez@colorado.edu>
5763 2002-04-26 Fernando Perez <fperez@colorado.edu>
5760
5764
5761 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5765 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5762 all files were being included in an update. Now anything in
5766 all files were being included in an update. Now anything in
5763 UserConfig that matches [A-Za-z]*.py will go (this excludes
5767 UserConfig that matches [A-Za-z]*.py will go (this excludes
5764 __init__.py)
5768 __init__.py)
5765
5769
5766 2002-04-25 Fernando Perez <fperez@colorado.edu>
5770 2002-04-25 Fernando Perez <fperez@colorado.edu>
5767
5771
5768 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5772 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5769 to __builtins__ so that any form of embedded or imported code can
5773 to __builtins__ so that any form of embedded or imported code can
5770 test for being inside IPython.
5774 test for being inside IPython.
5771
5775
5772 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5776 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5773 changed to GnuplotMagic because it's now an importable module,
5777 changed to GnuplotMagic because it's now an importable module,
5774 this makes the name follow that of the standard Gnuplot module.
5778 this makes the name follow that of the standard Gnuplot module.
5775 GnuplotMagic can now be loaded at any time in mid-session.
5779 GnuplotMagic can now be loaded at any time in mid-session.
5776
5780
5777 2002-04-24 Fernando Perez <fperez@colorado.edu>
5781 2002-04-24 Fernando Perez <fperez@colorado.edu>
5778
5782
5779 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5783 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5780 the globals (IPython has its own namespace) and the
5784 the globals (IPython has its own namespace) and the
5781 PhysicalQuantity stuff is much better anyway.
5785 PhysicalQuantity stuff is much better anyway.
5782
5786
5783 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5787 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5784 embedding example to standard user directory for
5788 embedding example to standard user directory for
5785 distribution. Also put it in the manual.
5789 distribution. Also put it in the manual.
5786
5790
5787 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5791 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5788 instance as first argument (so it doesn't rely on some obscure
5792 instance as first argument (so it doesn't rely on some obscure
5789 hidden global).
5793 hidden global).
5790
5794
5791 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5795 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5792 delimiters. While it prevents ().TAB from working, it allows
5796 delimiters. While it prevents ().TAB from working, it allows
5793 completions in open (... expressions. This is by far a more common
5797 completions in open (... expressions. This is by far a more common
5794 case.
5798 case.
5795
5799
5796 2002-04-23 Fernando Perez <fperez@colorado.edu>
5800 2002-04-23 Fernando Perez <fperez@colorado.edu>
5797
5801
5798 * IPython/Extensions/InterpreterPasteInput.py: new
5802 * IPython/Extensions/InterpreterPasteInput.py: new
5799 syntax-processing module for pasting lines with >>> or ... at the
5803 syntax-processing module for pasting lines with >>> or ... at the
5800 start.
5804 start.
5801
5805
5802 * IPython/Extensions/PhysicalQ_Interactive.py
5806 * IPython/Extensions/PhysicalQ_Interactive.py
5803 (PhysicalQuantityInteractive.__int__): fixed to work with either
5807 (PhysicalQuantityInteractive.__int__): fixed to work with either
5804 Numeric or math.
5808 Numeric or math.
5805
5809
5806 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5810 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5807 provided profiles. Now we have:
5811 provided profiles. Now we have:
5808 -math -> math module as * and cmath with its own namespace.
5812 -math -> math module as * and cmath with its own namespace.
5809 -numeric -> Numeric as *, plus gnuplot & grace
5813 -numeric -> Numeric as *, plus gnuplot & grace
5810 -physics -> same as before
5814 -physics -> same as before
5811
5815
5812 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5816 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5813 user-defined magics wouldn't be found by @magic if they were
5817 user-defined magics wouldn't be found by @magic if they were
5814 defined as class methods. Also cleaned up the namespace search
5818 defined as class methods. Also cleaned up the namespace search
5815 logic and the string building (to use %s instead of many repeated
5819 logic and the string building (to use %s instead of many repeated
5816 string adds).
5820 string adds).
5817
5821
5818 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5822 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5819 of user-defined magics to operate with class methods (cleaner, in
5823 of user-defined magics to operate with class methods (cleaner, in
5820 line with the gnuplot code).
5824 line with the gnuplot code).
5821
5825
5822 2002-04-22 Fernando Perez <fperez@colorado.edu>
5826 2002-04-22 Fernando Perez <fperez@colorado.edu>
5823
5827
5824 * setup.py: updated dependency list so that manual is updated when
5828 * setup.py: updated dependency list so that manual is updated when
5825 all included files change.
5829 all included files change.
5826
5830
5827 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5831 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5828 the delimiter removal option (the fix is ugly right now).
5832 the delimiter removal option (the fix is ugly right now).
5829
5833
5830 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5834 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5831 all of the math profile (quicker loading, no conflict between
5835 all of the math profile (quicker loading, no conflict between
5832 g-9.8 and g-gnuplot).
5836 g-9.8 and g-gnuplot).
5833
5837
5834 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5838 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5835 name of post-mortem files to IPython_crash_report.txt.
5839 name of post-mortem files to IPython_crash_report.txt.
5836
5840
5837 * Cleanup/update of the docs. Added all the new readline info and
5841 * Cleanup/update of the docs. Added all the new readline info and
5838 formatted all lists as 'real lists'.
5842 formatted all lists as 'real lists'.
5839
5843
5840 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5844 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5841 tab-completion options, since the full readline parse_and_bind is
5845 tab-completion options, since the full readline parse_and_bind is
5842 now accessible.
5846 now accessible.
5843
5847
5844 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5848 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5845 handling of readline options. Now users can specify any string to
5849 handling of readline options. Now users can specify any string to
5846 be passed to parse_and_bind(), as well as the delimiters to be
5850 be passed to parse_and_bind(), as well as the delimiters to be
5847 removed.
5851 removed.
5848 (InteractiveShell.__init__): Added __name__ to the global
5852 (InteractiveShell.__init__): Added __name__ to the global
5849 namespace so that things like Itpl which rely on its existence
5853 namespace so that things like Itpl which rely on its existence
5850 don't crash.
5854 don't crash.
5851 (InteractiveShell._prefilter): Defined the default with a _ so
5855 (InteractiveShell._prefilter): Defined the default with a _ so
5852 that prefilter() is easier to override, while the default one
5856 that prefilter() is easier to override, while the default one
5853 remains available.
5857 remains available.
5854
5858
5855 2002-04-18 Fernando Perez <fperez@colorado.edu>
5859 2002-04-18 Fernando Perez <fperez@colorado.edu>
5856
5860
5857 * Added information about pdb in the docs.
5861 * Added information about pdb in the docs.
5858
5862
5859 2002-04-17 Fernando Perez <fperez@colorado.edu>
5863 2002-04-17 Fernando Perez <fperez@colorado.edu>
5860
5864
5861 * IPython/ipmaker.py (make_IPython): added rc_override option to
5865 * IPython/ipmaker.py (make_IPython): added rc_override option to
5862 allow passing config options at creation time which may override
5866 allow passing config options at creation time which may override
5863 anything set in the config files or command line. This is
5867 anything set in the config files or command line. This is
5864 particularly useful for configuring embedded instances.
5868 particularly useful for configuring embedded instances.
5865
5869
5866 2002-04-15 Fernando Perez <fperez@colorado.edu>
5870 2002-04-15 Fernando Perez <fperez@colorado.edu>
5867
5871
5868 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5872 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5869 crash embedded instances because of the input cache falling out of
5873 crash embedded instances because of the input cache falling out of
5870 sync with the output counter.
5874 sync with the output counter.
5871
5875
5872 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5876 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5873 mode which calls pdb after an uncaught exception in IPython itself.
5877 mode which calls pdb after an uncaught exception in IPython itself.
5874
5878
5875 2002-04-14 Fernando Perez <fperez@colorado.edu>
5879 2002-04-14 Fernando Perez <fperez@colorado.edu>
5876
5880
5877 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5881 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5878 readline, fix it back after each call.
5882 readline, fix it back after each call.
5879
5883
5880 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5884 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5881 method to force all access via __call__(), which guarantees that
5885 method to force all access via __call__(), which guarantees that
5882 traceback references are properly deleted.
5886 traceback references are properly deleted.
5883
5887
5884 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5888 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5885 improve printing when pprint is in use.
5889 improve printing when pprint is in use.
5886
5890
5887 2002-04-13 Fernando Perez <fperez@colorado.edu>
5891 2002-04-13 Fernando Perez <fperez@colorado.edu>
5888
5892
5889 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5893 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5890 exceptions aren't caught anymore. If the user triggers one, he
5894 exceptions aren't caught anymore. If the user triggers one, he
5891 should know why he's doing it and it should go all the way up,
5895 should know why he's doing it and it should go all the way up,
5892 just like any other exception. So now @abort will fully kill the
5896 just like any other exception. So now @abort will fully kill the
5893 embedded interpreter and the embedding code (unless that happens
5897 embedded interpreter and the embedding code (unless that happens
5894 to catch SystemExit).
5898 to catch SystemExit).
5895
5899
5896 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5900 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5897 and a debugger() method to invoke the interactive pdb debugger
5901 and a debugger() method to invoke the interactive pdb debugger
5898 after printing exception information. Also added the corresponding
5902 after printing exception information. Also added the corresponding
5899 -pdb option and @pdb magic to control this feature, and updated
5903 -pdb option and @pdb magic to control this feature, and updated
5900 the docs. After a suggestion from Christopher Hart
5904 the docs. After a suggestion from Christopher Hart
5901 (hart-AT-caltech.edu).
5905 (hart-AT-caltech.edu).
5902
5906
5903 2002-04-12 Fernando Perez <fperez@colorado.edu>
5907 2002-04-12 Fernando Perez <fperez@colorado.edu>
5904
5908
5905 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5909 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5906 the exception handlers defined by the user (not the CrashHandler)
5910 the exception handlers defined by the user (not the CrashHandler)
5907 so that user exceptions don't trigger an ipython bug report.
5911 so that user exceptions don't trigger an ipython bug report.
5908
5912
5909 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5913 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5910 configurable (it should have always been so).
5914 configurable (it should have always been so).
5911
5915
5912 2002-03-26 Fernando Perez <fperez@colorado.edu>
5916 2002-03-26 Fernando Perez <fperez@colorado.edu>
5913
5917
5914 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5918 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5915 and there to fix embedding namespace issues. This should all be
5919 and there to fix embedding namespace issues. This should all be
5916 done in a more elegant way.
5920 done in a more elegant way.
5917
5921
5918 2002-03-25 Fernando Perez <fperez@colorado.edu>
5922 2002-03-25 Fernando Perez <fperez@colorado.edu>
5919
5923
5920 * IPython/genutils.py (get_home_dir): Try to make it work under
5924 * IPython/genutils.py (get_home_dir): Try to make it work under
5921 win9x also.
5925 win9x also.
5922
5926
5923 2002-03-20 Fernando Perez <fperez@colorado.edu>
5927 2002-03-20 Fernando Perez <fperez@colorado.edu>
5924
5928
5925 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5929 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5926 sys.displayhook untouched upon __init__.
5930 sys.displayhook untouched upon __init__.
5927
5931
5928 2002-03-19 Fernando Perez <fperez@colorado.edu>
5932 2002-03-19 Fernando Perez <fperez@colorado.edu>
5929
5933
5930 * Released 0.2.9 (for embedding bug, basically).
5934 * Released 0.2.9 (for embedding bug, basically).
5931
5935
5932 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5936 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5933 exceptions so that enclosing shell's state can be restored.
5937 exceptions so that enclosing shell's state can be restored.
5934
5938
5935 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5939 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5936 naming conventions in the .ipython/ dir.
5940 naming conventions in the .ipython/ dir.
5937
5941
5938 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5942 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5939 from delimiters list so filenames with - in them get expanded.
5943 from delimiters list so filenames with - in them get expanded.
5940
5944
5941 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5945 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5942 sys.displayhook not being properly restored after an embedded call.
5946 sys.displayhook not being properly restored after an embedded call.
5943
5947
5944 2002-03-18 Fernando Perez <fperez@colorado.edu>
5948 2002-03-18 Fernando Perez <fperez@colorado.edu>
5945
5949
5946 * Released 0.2.8
5950 * Released 0.2.8
5947
5951
5948 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5952 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5949 some files weren't being included in a -upgrade.
5953 some files weren't being included in a -upgrade.
5950 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5954 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5951 on' so that the first tab completes.
5955 on' so that the first tab completes.
5952 (InteractiveShell.handle_magic): fixed bug with spaces around
5956 (InteractiveShell.handle_magic): fixed bug with spaces around
5953 quotes breaking many magic commands.
5957 quotes breaking many magic commands.
5954
5958
5955 * setup.py: added note about ignoring the syntax error messages at
5959 * setup.py: added note about ignoring the syntax error messages at
5956 installation.
5960 installation.
5957
5961
5958 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5962 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5959 streamlining the gnuplot interface, now there's only one magic @gp.
5963 streamlining the gnuplot interface, now there's only one magic @gp.
5960
5964
5961 2002-03-17 Fernando Perez <fperez@colorado.edu>
5965 2002-03-17 Fernando Perez <fperez@colorado.edu>
5962
5966
5963 * IPython/UserConfig/magic_gnuplot.py: new name for the
5967 * IPython/UserConfig/magic_gnuplot.py: new name for the
5964 example-magic_pm.py file. Much enhanced system, now with a shell
5968 example-magic_pm.py file. Much enhanced system, now with a shell
5965 for communicating directly with gnuplot, one command at a time.
5969 for communicating directly with gnuplot, one command at a time.
5966
5970
5967 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5971 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5968 setting __name__=='__main__'.
5972 setting __name__=='__main__'.
5969
5973
5970 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5974 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5971 mini-shell for accessing gnuplot from inside ipython. Should
5975 mini-shell for accessing gnuplot from inside ipython. Should
5972 extend it later for grace access too. Inspired by Arnd's
5976 extend it later for grace access too. Inspired by Arnd's
5973 suggestion.
5977 suggestion.
5974
5978
5975 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5979 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5976 calling magic functions with () in their arguments. Thanks to Arnd
5980 calling magic functions with () in their arguments. Thanks to Arnd
5977 Baecker for pointing this to me.
5981 Baecker for pointing this to me.
5978
5982
5979 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5983 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5980 infinitely for integer or complex arrays (only worked with floats).
5984 infinitely for integer or complex arrays (only worked with floats).
5981
5985
5982 2002-03-16 Fernando Perez <fperez@colorado.edu>
5986 2002-03-16 Fernando Perez <fperez@colorado.edu>
5983
5987
5984 * setup.py: Merged setup and setup_windows into a single script
5988 * setup.py: Merged setup and setup_windows into a single script
5985 which properly handles things for windows users.
5989 which properly handles things for windows users.
5986
5990
5987 2002-03-15 Fernando Perez <fperez@colorado.edu>
5991 2002-03-15 Fernando Perez <fperez@colorado.edu>
5988
5992
5989 * Big change to the manual: now the magics are all automatically
5993 * Big change to the manual: now the magics are all automatically
5990 documented. This information is generated from their docstrings
5994 documented. This information is generated from their docstrings
5991 and put in a latex file included by the manual lyx file. This way
5995 and put in a latex file included by the manual lyx file. This way
5992 we get always up to date information for the magics. The manual
5996 we get always up to date information for the magics. The manual
5993 now also has proper version information, also auto-synced.
5997 now also has proper version information, also auto-synced.
5994
5998
5995 For this to work, an undocumented --magic_docstrings option was added.
5999 For this to work, an undocumented --magic_docstrings option was added.
5996
6000
5997 2002-03-13 Fernando Perez <fperez@colorado.edu>
6001 2002-03-13 Fernando Perez <fperez@colorado.edu>
5998
6002
5999 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6003 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6000 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6004 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6001
6005
6002 2002-03-12 Fernando Perez <fperez@colorado.edu>
6006 2002-03-12 Fernando Perez <fperez@colorado.edu>
6003
6007
6004 * IPython/ultraTB.py (TermColors): changed color escapes again to
6008 * IPython/ultraTB.py (TermColors): changed color escapes again to
6005 fix the (old, reintroduced) line-wrapping bug. Basically, if
6009 fix the (old, reintroduced) line-wrapping bug. Basically, if
6006 \001..\002 aren't given in the color escapes, lines get wrapped
6010 \001..\002 aren't given in the color escapes, lines get wrapped
6007 weirdly. But giving those screws up old xterms and emacs terms. So
6011 weirdly. But giving those screws up old xterms and emacs terms. So
6008 I added some logic for emacs terms to be ok, but I can't identify old
6012 I added some logic for emacs terms to be ok, but I can't identify old
6009 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6013 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6010
6014
6011 2002-03-10 Fernando Perez <fperez@colorado.edu>
6015 2002-03-10 Fernando Perez <fperez@colorado.edu>
6012
6016
6013 * IPython/usage.py (__doc__): Various documentation cleanups and
6017 * IPython/usage.py (__doc__): Various documentation cleanups and
6014 updates, both in usage docstrings and in the manual.
6018 updates, both in usage docstrings and in the manual.
6015
6019
6016 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6020 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6017 handling of caching. Set minimum acceptabe value for having a
6021 handling of caching. Set minimum acceptabe value for having a
6018 cache at 20 values.
6022 cache at 20 values.
6019
6023
6020 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6024 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6021 install_first_time function to a method, renamed it and added an
6025 install_first_time function to a method, renamed it and added an
6022 'upgrade' mode. Now people can update their config directory with
6026 'upgrade' mode. Now people can update their config directory with
6023 a simple command line switch (-upgrade, also new).
6027 a simple command line switch (-upgrade, also new).
6024
6028
6025 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6029 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6026 @file (convenient for automagic users under Python >= 2.2).
6030 @file (convenient for automagic users under Python >= 2.2).
6027 Removed @files (it seemed more like a plural than an abbrev. of
6031 Removed @files (it seemed more like a plural than an abbrev. of
6028 'file show').
6032 'file show').
6029
6033
6030 * IPython/iplib.py (install_first_time): Fixed crash if there were
6034 * IPython/iplib.py (install_first_time): Fixed crash if there were
6031 backup files ('~') in .ipython/ install directory.
6035 backup files ('~') in .ipython/ install directory.
6032
6036
6033 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6037 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6034 system. Things look fine, but these changes are fairly
6038 system. Things look fine, but these changes are fairly
6035 intrusive. Test them for a few days.
6039 intrusive. Test them for a few days.
6036
6040
6037 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6041 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6038 the prompts system. Now all in/out prompt strings are user
6042 the prompts system. Now all in/out prompt strings are user
6039 controllable. This is particularly useful for embedding, as one
6043 controllable. This is particularly useful for embedding, as one
6040 can tag embedded instances with particular prompts.
6044 can tag embedded instances with particular prompts.
6041
6045
6042 Also removed global use of sys.ps1/2, which now allows nested
6046 Also removed global use of sys.ps1/2, which now allows nested
6043 embeddings without any problems. Added command-line options for
6047 embeddings without any problems. Added command-line options for
6044 the prompt strings.
6048 the prompt strings.
6045
6049
6046 2002-03-08 Fernando Perez <fperez@colorado.edu>
6050 2002-03-08 Fernando Perez <fperez@colorado.edu>
6047
6051
6048 * IPython/UserConfig/example-embed-short.py (ipshell): added
6052 * IPython/UserConfig/example-embed-short.py (ipshell): added
6049 example file with the bare minimum code for embedding.
6053 example file with the bare minimum code for embedding.
6050
6054
6051 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6055 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6052 functionality for the embeddable shell to be activated/deactivated
6056 functionality for the embeddable shell to be activated/deactivated
6053 either globally or at each call.
6057 either globally or at each call.
6054
6058
6055 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6059 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6056 rewriting the prompt with '--->' for auto-inputs with proper
6060 rewriting the prompt with '--->' for auto-inputs with proper
6057 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6061 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6058 this is handled by the prompts class itself, as it should.
6062 this is handled by the prompts class itself, as it should.
6059
6063
6060 2002-03-05 Fernando Perez <fperez@colorado.edu>
6064 2002-03-05 Fernando Perez <fperez@colorado.edu>
6061
6065
6062 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6066 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6063 @logstart to avoid name clashes with the math log function.
6067 @logstart to avoid name clashes with the math log function.
6064
6068
6065 * Big updates to X/Emacs section of the manual.
6069 * Big updates to X/Emacs section of the manual.
6066
6070
6067 * Removed ipython_emacs. Milan explained to me how to pass
6071 * Removed ipython_emacs. Milan explained to me how to pass
6068 arguments to ipython through Emacs. Some day I'm going to end up
6072 arguments to ipython through Emacs. Some day I'm going to end up
6069 learning some lisp...
6073 learning some lisp...
6070
6074
6071 2002-03-04 Fernando Perez <fperez@colorado.edu>
6075 2002-03-04 Fernando Perez <fperez@colorado.edu>
6072
6076
6073 * IPython/ipython_emacs: Created script to be used as the
6077 * IPython/ipython_emacs: Created script to be used as the
6074 py-python-command Emacs variable so we can pass IPython
6078 py-python-command Emacs variable so we can pass IPython
6075 parameters. I can't figure out how to tell Emacs directly to pass
6079 parameters. I can't figure out how to tell Emacs directly to pass
6076 parameters to IPython, so a dummy shell script will do it.
6080 parameters to IPython, so a dummy shell script will do it.
6077
6081
6078 Other enhancements made for things to work better under Emacs'
6082 Other enhancements made for things to work better under Emacs'
6079 various types of terminals. Many thanks to Milan Zamazal
6083 various types of terminals. Many thanks to Milan Zamazal
6080 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6084 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6081
6085
6082 2002-03-01 Fernando Perez <fperez@colorado.edu>
6086 2002-03-01 Fernando Perez <fperez@colorado.edu>
6083
6087
6084 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6088 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6085 that loading of readline is now optional. This gives better
6089 that loading of readline is now optional. This gives better
6086 control to emacs users.
6090 control to emacs users.
6087
6091
6088 * IPython/ultraTB.py (__date__): Modified color escape sequences
6092 * IPython/ultraTB.py (__date__): Modified color escape sequences
6089 and now things work fine under xterm and in Emacs' term buffers
6093 and now things work fine under xterm and in Emacs' term buffers
6090 (though not shell ones). Well, in emacs you get colors, but all
6094 (though not shell ones). Well, in emacs you get colors, but all
6091 seem to be 'light' colors (no difference between dark and light
6095 seem to be 'light' colors (no difference between dark and light
6092 ones). But the garbage chars are gone, and also in xterms. It
6096 ones). But the garbage chars are gone, and also in xterms. It
6093 seems that now I'm using 'cleaner' ansi sequences.
6097 seems that now I'm using 'cleaner' ansi sequences.
6094
6098
6095 2002-02-21 Fernando Perez <fperez@colorado.edu>
6099 2002-02-21 Fernando Perez <fperez@colorado.edu>
6096
6100
6097 * Released 0.2.7 (mainly to publish the scoping fix).
6101 * Released 0.2.7 (mainly to publish the scoping fix).
6098
6102
6099 * IPython/Logger.py (Logger.logstate): added. A corresponding
6103 * IPython/Logger.py (Logger.logstate): added. A corresponding
6100 @logstate magic was created.
6104 @logstate magic was created.
6101
6105
6102 * IPython/Magic.py: fixed nested scoping problem under Python
6106 * IPython/Magic.py: fixed nested scoping problem under Python
6103 2.1.x (automagic wasn't working).
6107 2.1.x (automagic wasn't working).
6104
6108
6105 2002-02-20 Fernando Perez <fperez@colorado.edu>
6109 2002-02-20 Fernando Perez <fperez@colorado.edu>
6106
6110
6107 * Released 0.2.6.
6111 * Released 0.2.6.
6108
6112
6109 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6113 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6110 option so that logs can come out without any headers at all.
6114 option so that logs can come out without any headers at all.
6111
6115
6112 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6116 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6113 SciPy.
6117 SciPy.
6114
6118
6115 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6119 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6116 that embedded IPython calls don't require vars() to be explicitly
6120 that embedded IPython calls don't require vars() to be explicitly
6117 passed. Now they are extracted from the caller's frame (code
6121 passed. Now they are extracted from the caller's frame (code
6118 snatched from Eric Jones' weave). Added better documentation to
6122 snatched from Eric Jones' weave). Added better documentation to
6119 the section on embedding and the example file.
6123 the section on embedding and the example file.
6120
6124
6121 * IPython/genutils.py (page): Changed so that under emacs, it just
6125 * IPython/genutils.py (page): Changed so that under emacs, it just
6122 prints the string. You can then page up and down in the emacs
6126 prints the string. You can then page up and down in the emacs
6123 buffer itself. This is how the builtin help() works.
6127 buffer itself. This is how the builtin help() works.
6124
6128
6125 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6129 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6126 macro scoping: macros need to be executed in the user's namespace
6130 macro scoping: macros need to be executed in the user's namespace
6127 to work as if they had been typed by the user.
6131 to work as if they had been typed by the user.
6128
6132
6129 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6133 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6130 execute automatically (no need to type 'exec...'). They then
6134 execute automatically (no need to type 'exec...'). They then
6131 behave like 'true macros'. The printing system was also modified
6135 behave like 'true macros'. The printing system was also modified
6132 for this to work.
6136 for this to work.
6133
6137
6134 2002-02-19 Fernando Perez <fperez@colorado.edu>
6138 2002-02-19 Fernando Perez <fperez@colorado.edu>
6135
6139
6136 * IPython/genutils.py (page_file): new function for paging files
6140 * IPython/genutils.py (page_file): new function for paging files
6137 in an OS-independent way. Also necessary for file viewing to work
6141 in an OS-independent way. Also necessary for file viewing to work
6138 well inside Emacs buffers.
6142 well inside Emacs buffers.
6139 (page): Added checks for being in an emacs buffer.
6143 (page): Added checks for being in an emacs buffer.
6140 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6144 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6141 same bug in iplib.
6145 same bug in iplib.
6142
6146
6143 2002-02-18 Fernando Perez <fperez@colorado.edu>
6147 2002-02-18 Fernando Perez <fperez@colorado.edu>
6144
6148
6145 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6149 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6146 of readline so that IPython can work inside an Emacs buffer.
6150 of readline so that IPython can work inside an Emacs buffer.
6147
6151
6148 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6152 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6149 method signatures (they weren't really bugs, but it looks cleaner
6153 method signatures (they weren't really bugs, but it looks cleaner
6150 and keeps PyChecker happy).
6154 and keeps PyChecker happy).
6151
6155
6152 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6156 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6153 for implementing various user-defined hooks. Currently only
6157 for implementing various user-defined hooks. Currently only
6154 display is done.
6158 display is done.
6155
6159
6156 * IPython/Prompts.py (CachedOutput._display): changed display
6160 * IPython/Prompts.py (CachedOutput._display): changed display
6157 functions so that they can be dynamically changed by users easily.
6161 functions so that they can be dynamically changed by users easily.
6158
6162
6159 * IPython/Extensions/numeric_formats.py (num_display): added an
6163 * IPython/Extensions/numeric_formats.py (num_display): added an
6160 extension for printing NumPy arrays in flexible manners. It
6164 extension for printing NumPy arrays in flexible manners. It
6161 doesn't do anything yet, but all the structure is in
6165 doesn't do anything yet, but all the structure is in
6162 place. Ultimately the plan is to implement output format control
6166 place. Ultimately the plan is to implement output format control
6163 like in Octave.
6167 like in Octave.
6164
6168
6165 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6169 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6166 methods are found at run-time by all the automatic machinery.
6170 methods are found at run-time by all the automatic machinery.
6167
6171
6168 2002-02-17 Fernando Perez <fperez@colorado.edu>
6172 2002-02-17 Fernando Perez <fperez@colorado.edu>
6169
6173
6170 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6174 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6171 whole file a little.
6175 whole file a little.
6172
6176
6173 * ToDo: closed this document. Now there's a new_design.lyx
6177 * ToDo: closed this document. Now there's a new_design.lyx
6174 document for all new ideas. Added making a pdf of it for the
6178 document for all new ideas. Added making a pdf of it for the
6175 end-user distro.
6179 end-user distro.
6176
6180
6177 * IPython/Logger.py (Logger.switch_log): Created this to replace
6181 * IPython/Logger.py (Logger.switch_log): Created this to replace
6178 logon() and logoff(). It also fixes a nasty crash reported by
6182 logon() and logoff(). It also fixes a nasty crash reported by
6179 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6183 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6180
6184
6181 * IPython/iplib.py (complete): got auto-completion to work with
6185 * IPython/iplib.py (complete): got auto-completion to work with
6182 automagic (I had wanted this for a long time).
6186 automagic (I had wanted this for a long time).
6183
6187
6184 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6188 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6185 to @file, since file() is now a builtin and clashes with automagic
6189 to @file, since file() is now a builtin and clashes with automagic
6186 for @file.
6190 for @file.
6187
6191
6188 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6192 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6189 of this was previously in iplib, which had grown to more than 2000
6193 of this was previously in iplib, which had grown to more than 2000
6190 lines, way too long. No new functionality, but it makes managing
6194 lines, way too long. No new functionality, but it makes managing
6191 the code a bit easier.
6195 the code a bit easier.
6192
6196
6193 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6197 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6194 information to crash reports.
6198 information to crash reports.
6195
6199
6196 2002-02-12 Fernando Perez <fperez@colorado.edu>
6200 2002-02-12 Fernando Perez <fperez@colorado.edu>
6197
6201
6198 * Released 0.2.5.
6202 * Released 0.2.5.
6199
6203
6200 2002-02-11 Fernando Perez <fperez@colorado.edu>
6204 2002-02-11 Fernando Perez <fperez@colorado.edu>
6201
6205
6202 * Wrote a relatively complete Windows installer. It puts
6206 * Wrote a relatively complete Windows installer. It puts
6203 everything in place, creates Start Menu entries and fixes the
6207 everything in place, creates Start Menu entries and fixes the
6204 color issues. Nothing fancy, but it works.
6208 color issues. Nothing fancy, but it works.
6205
6209
6206 2002-02-10 Fernando Perez <fperez@colorado.edu>
6210 2002-02-10 Fernando Perez <fperez@colorado.edu>
6207
6211
6208 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6212 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6209 os.path.expanduser() call so that we can type @run ~/myfile.py and
6213 os.path.expanduser() call so that we can type @run ~/myfile.py and
6210 have thigs work as expected.
6214 have thigs work as expected.
6211
6215
6212 * IPython/genutils.py (page): fixed exception handling so things
6216 * IPython/genutils.py (page): fixed exception handling so things
6213 work both in Unix and Windows correctly. Quitting a pager triggers
6217 work both in Unix and Windows correctly. Quitting a pager triggers
6214 an IOError/broken pipe in Unix, and in windows not finding a pager
6218 an IOError/broken pipe in Unix, and in windows not finding a pager
6215 is also an IOError, so I had to actually look at the return value
6219 is also an IOError, so I had to actually look at the return value
6216 of the exception, not just the exception itself. Should be ok now.
6220 of the exception, not just the exception itself. Should be ok now.
6217
6221
6218 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6222 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6219 modified to allow case-insensitive color scheme changes.
6223 modified to allow case-insensitive color scheme changes.
6220
6224
6221 2002-02-09 Fernando Perez <fperez@colorado.edu>
6225 2002-02-09 Fernando Perez <fperez@colorado.edu>
6222
6226
6223 * IPython/genutils.py (native_line_ends): new function to leave
6227 * IPython/genutils.py (native_line_ends): new function to leave
6224 user config files with os-native line-endings.
6228 user config files with os-native line-endings.
6225
6229
6226 * README and manual updates.
6230 * README and manual updates.
6227
6231
6228 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6232 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6229 instead of StringType to catch Unicode strings.
6233 instead of StringType to catch Unicode strings.
6230
6234
6231 * IPython/genutils.py (filefind): fixed bug for paths with
6235 * IPython/genutils.py (filefind): fixed bug for paths with
6232 embedded spaces (very common in Windows).
6236 embedded spaces (very common in Windows).
6233
6237
6234 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6238 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6235 files under Windows, so that they get automatically associated
6239 files under Windows, so that they get automatically associated
6236 with a text editor. Windows makes it a pain to handle
6240 with a text editor. Windows makes it a pain to handle
6237 extension-less files.
6241 extension-less files.
6238
6242
6239 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6243 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6240 warning about readline only occur for Posix. In Windows there's no
6244 warning about readline only occur for Posix. In Windows there's no
6241 way to get readline, so why bother with the warning.
6245 way to get readline, so why bother with the warning.
6242
6246
6243 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6247 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6244 for __str__ instead of dir(self), since dir() changed in 2.2.
6248 for __str__ instead of dir(self), since dir() changed in 2.2.
6245
6249
6246 * Ported to Windows! Tested on XP, I suspect it should work fine
6250 * Ported to Windows! Tested on XP, I suspect it should work fine
6247 on NT/2000, but I don't think it will work on 98 et al. That
6251 on NT/2000, but I don't think it will work on 98 et al. That
6248 series of Windows is such a piece of junk anyway that I won't try
6252 series of Windows is such a piece of junk anyway that I won't try
6249 porting it there. The XP port was straightforward, showed a few
6253 porting it there. The XP port was straightforward, showed a few
6250 bugs here and there (fixed all), in particular some string
6254 bugs here and there (fixed all), in particular some string
6251 handling stuff which required considering Unicode strings (which
6255 handling stuff which required considering Unicode strings (which
6252 Windows uses). This is good, but hasn't been too tested :) No
6256 Windows uses). This is good, but hasn't been too tested :) No
6253 fancy installer yet, I'll put a note in the manual so people at
6257 fancy installer yet, I'll put a note in the manual so people at
6254 least make manually a shortcut.
6258 least make manually a shortcut.
6255
6259
6256 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6260 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6257 into a single one, "colors". This now controls both prompt and
6261 into a single one, "colors". This now controls both prompt and
6258 exception color schemes, and can be changed both at startup
6262 exception color schemes, and can be changed both at startup
6259 (either via command-line switches or via ipythonrc files) and at
6263 (either via command-line switches or via ipythonrc files) and at
6260 runtime, with @colors.
6264 runtime, with @colors.
6261 (Magic.magic_run): renamed @prun to @run and removed the old
6265 (Magic.magic_run): renamed @prun to @run and removed the old
6262 @run. The two were too similar to warrant keeping both.
6266 @run. The two were too similar to warrant keeping both.
6263
6267
6264 2002-02-03 Fernando Perez <fperez@colorado.edu>
6268 2002-02-03 Fernando Perez <fperez@colorado.edu>
6265
6269
6266 * IPython/iplib.py (install_first_time): Added comment on how to
6270 * IPython/iplib.py (install_first_time): Added comment on how to
6267 configure the color options for first-time users. Put a <return>
6271 configure the color options for first-time users. Put a <return>
6268 request at the end so that small-terminal users get a chance to
6272 request at the end so that small-terminal users get a chance to
6269 read the startup info.
6273 read the startup info.
6270
6274
6271 2002-01-23 Fernando Perez <fperez@colorado.edu>
6275 2002-01-23 Fernando Perez <fperez@colorado.edu>
6272
6276
6273 * IPython/iplib.py (CachedOutput.update): Changed output memory
6277 * IPython/iplib.py (CachedOutput.update): Changed output memory
6274 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6278 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6275 input history we still use _i. Did this b/c these variable are
6279 input history we still use _i. Did this b/c these variable are
6276 very commonly used in interactive work, so the less we need to
6280 very commonly used in interactive work, so the less we need to
6277 type the better off we are.
6281 type the better off we are.
6278 (Magic.magic_prun): updated @prun to better handle the namespaces
6282 (Magic.magic_prun): updated @prun to better handle the namespaces
6279 the file will run in, including a fix for __name__ not being set
6283 the file will run in, including a fix for __name__ not being set
6280 before.
6284 before.
6281
6285
6282 2002-01-20 Fernando Perez <fperez@colorado.edu>
6286 2002-01-20 Fernando Perez <fperez@colorado.edu>
6283
6287
6284 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6288 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6285 extra garbage for Python 2.2. Need to look more carefully into
6289 extra garbage for Python 2.2. Need to look more carefully into
6286 this later.
6290 this later.
6287
6291
6288 2002-01-19 Fernando Perez <fperez@colorado.edu>
6292 2002-01-19 Fernando Perez <fperez@colorado.edu>
6289
6293
6290 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6294 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6291 display SyntaxError exceptions properly formatted when they occur
6295 display SyntaxError exceptions properly formatted when they occur
6292 (they can be triggered by imported code).
6296 (they can be triggered by imported code).
6293
6297
6294 2002-01-18 Fernando Perez <fperez@colorado.edu>
6298 2002-01-18 Fernando Perez <fperez@colorado.edu>
6295
6299
6296 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6300 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6297 SyntaxError exceptions are reported nicely formatted, instead of
6301 SyntaxError exceptions are reported nicely formatted, instead of
6298 spitting out only offset information as before.
6302 spitting out only offset information as before.
6299 (Magic.magic_prun): Added the @prun function for executing
6303 (Magic.magic_prun): Added the @prun function for executing
6300 programs with command line args inside IPython.
6304 programs with command line args inside IPython.
6301
6305
6302 2002-01-16 Fernando Perez <fperez@colorado.edu>
6306 2002-01-16 Fernando Perez <fperez@colorado.edu>
6303
6307
6304 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6308 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6305 to *not* include the last item given in a range. This brings their
6309 to *not* include the last item given in a range. This brings their
6306 behavior in line with Python's slicing:
6310 behavior in line with Python's slicing:
6307 a[n1:n2] -> a[n1]...a[n2-1]
6311 a[n1:n2] -> a[n1]...a[n2-1]
6308 It may be a bit less convenient, but I prefer to stick to Python's
6312 It may be a bit less convenient, but I prefer to stick to Python's
6309 conventions *everywhere*, so users never have to wonder.
6313 conventions *everywhere*, so users never have to wonder.
6310 (Magic.magic_macro): Added @macro function to ease the creation of
6314 (Magic.magic_macro): Added @macro function to ease the creation of
6311 macros.
6315 macros.
6312
6316
6313 2002-01-05 Fernando Perez <fperez@colorado.edu>
6317 2002-01-05 Fernando Perez <fperez@colorado.edu>
6314
6318
6315 * Released 0.2.4.
6319 * Released 0.2.4.
6316
6320
6317 * IPython/iplib.py (Magic.magic_pdef):
6321 * IPython/iplib.py (Magic.magic_pdef):
6318 (InteractiveShell.safe_execfile): report magic lines and error
6322 (InteractiveShell.safe_execfile): report magic lines and error
6319 lines without line numbers so one can easily copy/paste them for
6323 lines without line numbers so one can easily copy/paste them for
6320 re-execution.
6324 re-execution.
6321
6325
6322 * Updated manual with recent changes.
6326 * Updated manual with recent changes.
6323
6327
6324 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6328 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6325 docstring printing when class? is called. Very handy for knowing
6329 docstring printing when class? is called. Very handy for knowing
6326 how to create class instances (as long as __init__ is well
6330 how to create class instances (as long as __init__ is well
6327 documented, of course :)
6331 documented, of course :)
6328 (Magic.magic_doc): print both class and constructor docstrings.
6332 (Magic.magic_doc): print both class and constructor docstrings.
6329 (Magic.magic_pdef): give constructor info if passed a class and
6333 (Magic.magic_pdef): give constructor info if passed a class and
6330 __call__ info for callable object instances.
6334 __call__ info for callable object instances.
6331
6335
6332 2002-01-04 Fernando Perez <fperez@colorado.edu>
6336 2002-01-04 Fernando Perez <fperez@colorado.edu>
6333
6337
6334 * Made deep_reload() off by default. It doesn't always work
6338 * Made deep_reload() off by default. It doesn't always work
6335 exactly as intended, so it's probably safer to have it off. It's
6339 exactly as intended, so it's probably safer to have it off. It's
6336 still available as dreload() anyway, so nothing is lost.
6340 still available as dreload() anyway, so nothing is lost.
6337
6341
6338 2002-01-02 Fernando Perez <fperez@colorado.edu>
6342 2002-01-02 Fernando Perez <fperez@colorado.edu>
6339
6343
6340 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6344 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6341 so I wanted an updated release).
6345 so I wanted an updated release).
6342
6346
6343 2001-12-27 Fernando Perez <fperez@colorado.edu>
6347 2001-12-27 Fernando Perez <fperez@colorado.edu>
6344
6348
6345 * IPython/iplib.py (InteractiveShell.interact): Added the original
6349 * IPython/iplib.py (InteractiveShell.interact): Added the original
6346 code from 'code.py' for this module in order to change the
6350 code from 'code.py' for this module in order to change the
6347 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6351 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6348 the history cache would break when the user hit Ctrl-C, and
6352 the history cache would break when the user hit Ctrl-C, and
6349 interact() offers no way to add any hooks to it.
6353 interact() offers no way to add any hooks to it.
6350
6354
6351 2001-12-23 Fernando Perez <fperez@colorado.edu>
6355 2001-12-23 Fernando Perez <fperez@colorado.edu>
6352
6356
6353 * setup.py: added check for 'MANIFEST' before trying to remove
6357 * setup.py: added check for 'MANIFEST' before trying to remove
6354 it. Thanks to Sean Reifschneider.
6358 it. Thanks to Sean Reifschneider.
6355
6359
6356 2001-12-22 Fernando Perez <fperez@colorado.edu>
6360 2001-12-22 Fernando Perez <fperez@colorado.edu>
6357
6361
6358 * Released 0.2.2.
6362 * Released 0.2.2.
6359
6363
6360 * Finished (reasonably) writing the manual. Later will add the
6364 * Finished (reasonably) writing the manual. Later will add the
6361 python-standard navigation stylesheets, but for the time being
6365 python-standard navigation stylesheets, but for the time being
6362 it's fairly complete. Distribution will include html and pdf
6366 it's fairly complete. Distribution will include html and pdf
6363 versions.
6367 versions.
6364
6368
6365 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6369 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6366 (MayaVi author).
6370 (MayaVi author).
6367
6371
6368 2001-12-21 Fernando Perez <fperez@colorado.edu>
6372 2001-12-21 Fernando Perez <fperez@colorado.edu>
6369
6373
6370 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6374 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6371 good public release, I think (with the manual and the distutils
6375 good public release, I think (with the manual and the distutils
6372 installer). The manual can use some work, but that can go
6376 installer). The manual can use some work, but that can go
6373 slowly. Otherwise I think it's quite nice for end users. Next
6377 slowly. Otherwise I think it's quite nice for end users. Next
6374 summer, rewrite the guts of it...
6378 summer, rewrite the guts of it...
6375
6379
6376 * Changed format of ipythonrc files to use whitespace as the
6380 * Changed format of ipythonrc files to use whitespace as the
6377 separator instead of an explicit '='. Cleaner.
6381 separator instead of an explicit '='. Cleaner.
6378
6382
6379 2001-12-20 Fernando Perez <fperez@colorado.edu>
6383 2001-12-20 Fernando Perez <fperez@colorado.edu>
6380
6384
6381 * Started a manual in LyX. For now it's just a quick merge of the
6385 * Started a manual in LyX. For now it's just a quick merge of the
6382 various internal docstrings and READMEs. Later it may grow into a
6386 various internal docstrings and READMEs. Later it may grow into a
6383 nice, full-blown manual.
6387 nice, full-blown manual.
6384
6388
6385 * Set up a distutils based installer. Installation should now be
6389 * Set up a distutils based installer. Installation should now be
6386 trivially simple for end-users.
6390 trivially simple for end-users.
6387
6391
6388 2001-12-11 Fernando Perez <fperez@colorado.edu>
6392 2001-12-11 Fernando Perez <fperez@colorado.edu>
6389
6393
6390 * Released 0.2.0. First public release, announced it at
6394 * Released 0.2.0. First public release, announced it at
6391 comp.lang.python. From now on, just bugfixes...
6395 comp.lang.python. From now on, just bugfixes...
6392
6396
6393 * Went through all the files, set copyright/license notices and
6397 * Went through all the files, set copyright/license notices and
6394 cleaned up things. Ready for release.
6398 cleaned up things. Ready for release.
6395
6399
6396 2001-12-10 Fernando Perez <fperez@colorado.edu>
6400 2001-12-10 Fernando Perez <fperez@colorado.edu>
6397
6401
6398 * Changed the first-time installer not to use tarfiles. It's more
6402 * Changed the first-time installer not to use tarfiles. It's more
6399 robust now and less unix-dependent. Also makes it easier for
6403 robust now and less unix-dependent. Also makes it easier for
6400 people to later upgrade versions.
6404 people to later upgrade versions.
6401
6405
6402 * Changed @exit to @abort to reflect the fact that it's pretty
6406 * Changed @exit to @abort to reflect the fact that it's pretty
6403 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6407 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6404 becomes significant only when IPyhton is embedded: in that case,
6408 becomes significant only when IPyhton is embedded: in that case,
6405 C-D closes IPython only, but @abort kills the enclosing program
6409 C-D closes IPython only, but @abort kills the enclosing program
6406 too (unless it had called IPython inside a try catching
6410 too (unless it had called IPython inside a try catching
6407 SystemExit).
6411 SystemExit).
6408
6412
6409 * Created Shell module which exposes the actuall IPython Shell
6413 * Created Shell module which exposes the actuall IPython Shell
6410 classes, currently the normal and the embeddable one. This at
6414 classes, currently the normal and the embeddable one. This at
6411 least offers a stable interface we won't need to change when
6415 least offers a stable interface we won't need to change when
6412 (later) the internals are rewritten. That rewrite will be confined
6416 (later) the internals are rewritten. That rewrite will be confined
6413 to iplib and ipmaker, but the Shell interface should remain as is.
6417 to iplib and ipmaker, but the Shell interface should remain as is.
6414
6418
6415 * Added embed module which offers an embeddable IPShell object,
6419 * Added embed module which offers an embeddable IPShell object,
6416 useful to fire up IPython *inside* a running program. Great for
6420 useful to fire up IPython *inside* a running program. Great for
6417 debugging or dynamical data analysis.
6421 debugging or dynamical data analysis.
6418
6422
6419 2001-12-08 Fernando Perez <fperez@colorado.edu>
6423 2001-12-08 Fernando Perez <fperez@colorado.edu>
6420
6424
6421 * Fixed small bug preventing seeing info from methods of defined
6425 * Fixed small bug preventing seeing info from methods of defined
6422 objects (incorrect namespace in _ofind()).
6426 objects (incorrect namespace in _ofind()).
6423
6427
6424 * Documentation cleanup. Moved the main usage docstrings to a
6428 * Documentation cleanup. Moved the main usage docstrings to a
6425 separate file, usage.py (cleaner to maintain, and hopefully in the
6429 separate file, usage.py (cleaner to maintain, and hopefully in the
6426 future some perlpod-like way of producing interactive, man and
6430 future some perlpod-like way of producing interactive, man and
6427 html docs out of it will be found).
6431 html docs out of it will be found).
6428
6432
6429 * Added @profile to see your profile at any time.
6433 * Added @profile to see your profile at any time.
6430
6434
6431 * Added @p as an alias for 'print'. It's especially convenient if
6435 * Added @p as an alias for 'print'. It's especially convenient if
6432 using automagic ('p x' prints x).
6436 using automagic ('p x' prints x).
6433
6437
6434 * Small cleanups and fixes after a pychecker run.
6438 * Small cleanups and fixes after a pychecker run.
6435
6439
6436 * Changed the @cd command to handle @cd - and @cd -<n> for
6440 * Changed the @cd command to handle @cd - and @cd -<n> for
6437 visiting any directory in _dh.
6441 visiting any directory in _dh.
6438
6442
6439 * Introduced _dh, a history of visited directories. @dhist prints
6443 * Introduced _dh, a history of visited directories. @dhist prints
6440 it out with numbers.
6444 it out with numbers.
6441
6445
6442 2001-12-07 Fernando Perez <fperez@colorado.edu>
6446 2001-12-07 Fernando Perez <fperez@colorado.edu>
6443
6447
6444 * Released 0.1.22
6448 * Released 0.1.22
6445
6449
6446 * Made initialization a bit more robust against invalid color
6450 * Made initialization a bit more robust against invalid color
6447 options in user input (exit, not traceback-crash).
6451 options in user input (exit, not traceback-crash).
6448
6452
6449 * Changed the bug crash reporter to write the report only in the
6453 * Changed the bug crash reporter to write the report only in the
6450 user's .ipython directory. That way IPython won't litter people's
6454 user's .ipython directory. That way IPython won't litter people's
6451 hard disks with crash files all over the place. Also print on
6455 hard disks with crash files all over the place. Also print on
6452 screen the necessary mail command.
6456 screen the necessary mail command.
6453
6457
6454 * With the new ultraTB, implemented LightBG color scheme for light
6458 * With the new ultraTB, implemented LightBG color scheme for light
6455 background terminals. A lot of people like white backgrounds, so I
6459 background terminals. A lot of people like white backgrounds, so I
6456 guess we should at least give them something readable.
6460 guess we should at least give them something readable.
6457
6461
6458 2001-12-06 Fernando Perez <fperez@colorado.edu>
6462 2001-12-06 Fernando Perez <fperez@colorado.edu>
6459
6463
6460 * Modified the structure of ultraTB. Now there's a proper class
6464 * Modified the structure of ultraTB. Now there's a proper class
6461 for tables of color schemes which allow adding schemes easily and
6465 for tables of color schemes which allow adding schemes easily and
6462 switching the active scheme without creating a new instance every
6466 switching the active scheme without creating a new instance every
6463 time (which was ridiculous). The syntax for creating new schemes
6467 time (which was ridiculous). The syntax for creating new schemes
6464 is also cleaner. I think ultraTB is finally done, with a clean
6468 is also cleaner. I think ultraTB is finally done, with a clean
6465 class structure. Names are also much cleaner (now there's proper
6469 class structure. Names are also much cleaner (now there's proper
6466 color tables, no need for every variable to also have 'color' in
6470 color tables, no need for every variable to also have 'color' in
6467 its name).
6471 its name).
6468
6472
6469 * Broke down genutils into separate files. Now genutils only
6473 * Broke down genutils into separate files. Now genutils only
6470 contains utility functions, and classes have been moved to their
6474 contains utility functions, and classes have been moved to their
6471 own files (they had enough independent functionality to warrant
6475 own files (they had enough independent functionality to warrant
6472 it): ConfigLoader, OutputTrap, Struct.
6476 it): ConfigLoader, OutputTrap, Struct.
6473
6477
6474 2001-12-05 Fernando Perez <fperez@colorado.edu>
6478 2001-12-05 Fernando Perez <fperez@colorado.edu>
6475
6479
6476 * IPython turns 21! Released version 0.1.21, as a candidate for
6480 * IPython turns 21! Released version 0.1.21, as a candidate for
6477 public consumption. If all goes well, release in a few days.
6481 public consumption. If all goes well, release in a few days.
6478
6482
6479 * Fixed path bug (files in Extensions/ directory wouldn't be found
6483 * Fixed path bug (files in Extensions/ directory wouldn't be found
6480 unless IPython/ was explicitly in sys.path).
6484 unless IPython/ was explicitly in sys.path).
6481
6485
6482 * Extended the FlexCompleter class as MagicCompleter to allow
6486 * Extended the FlexCompleter class as MagicCompleter to allow
6483 completion of @-starting lines.
6487 completion of @-starting lines.
6484
6488
6485 * Created __release__.py file as a central repository for release
6489 * Created __release__.py file as a central repository for release
6486 info that other files can read from.
6490 info that other files can read from.
6487
6491
6488 * Fixed small bug in logging: when logging was turned on in
6492 * Fixed small bug in logging: when logging was turned on in
6489 mid-session, old lines with special meanings (!@?) were being
6493 mid-session, old lines with special meanings (!@?) were being
6490 logged without the prepended comment, which is necessary since
6494 logged without the prepended comment, which is necessary since
6491 they are not truly valid python syntax. This should make session
6495 they are not truly valid python syntax. This should make session
6492 restores produce less errors.
6496 restores produce less errors.
6493
6497
6494 * The namespace cleanup forced me to make a FlexCompleter class
6498 * The namespace cleanup forced me to make a FlexCompleter class
6495 which is nothing but a ripoff of rlcompleter, but with selectable
6499 which is nothing but a ripoff of rlcompleter, but with selectable
6496 namespace (rlcompleter only works in __main__.__dict__). I'll try
6500 namespace (rlcompleter only works in __main__.__dict__). I'll try
6497 to submit a note to the authors to see if this change can be
6501 to submit a note to the authors to see if this change can be
6498 incorporated in future rlcompleter releases (Dec.6: done)
6502 incorporated in future rlcompleter releases (Dec.6: done)
6499
6503
6500 * More fixes to namespace handling. It was a mess! Now all
6504 * More fixes to namespace handling. It was a mess! Now all
6501 explicit references to __main__.__dict__ are gone (except when
6505 explicit references to __main__.__dict__ are gone (except when
6502 really needed) and everything is handled through the namespace
6506 really needed) and everything is handled through the namespace
6503 dicts in the IPython instance. We seem to be getting somewhere
6507 dicts in the IPython instance. We seem to be getting somewhere
6504 with this, finally...
6508 with this, finally...
6505
6509
6506 * Small documentation updates.
6510 * Small documentation updates.
6507
6511
6508 * Created the Extensions directory under IPython (with an
6512 * Created the Extensions directory under IPython (with an
6509 __init__.py). Put the PhysicalQ stuff there. This directory should
6513 __init__.py). Put the PhysicalQ stuff there. This directory should
6510 be used for all special-purpose extensions.
6514 be used for all special-purpose extensions.
6511
6515
6512 * File renaming:
6516 * File renaming:
6513 ipythonlib --> ipmaker
6517 ipythonlib --> ipmaker
6514 ipplib --> iplib
6518 ipplib --> iplib
6515 This makes a bit more sense in terms of what these files actually do.
6519 This makes a bit more sense in terms of what these files actually do.
6516
6520
6517 * Moved all the classes and functions in ipythonlib to ipplib, so
6521 * Moved all the classes and functions in ipythonlib to ipplib, so
6518 now ipythonlib only has make_IPython(). This will ease up its
6522 now ipythonlib only has make_IPython(). This will ease up its
6519 splitting in smaller functional chunks later.
6523 splitting in smaller functional chunks later.
6520
6524
6521 * Cleaned up (done, I think) output of @whos. Better column
6525 * Cleaned up (done, I think) output of @whos. Better column
6522 formatting, and now shows str(var) for as much as it can, which is
6526 formatting, and now shows str(var) for as much as it can, which is
6523 typically what one gets with a 'print var'.
6527 typically what one gets with a 'print var'.
6524
6528
6525 2001-12-04 Fernando Perez <fperez@colorado.edu>
6529 2001-12-04 Fernando Perez <fperez@colorado.edu>
6526
6530
6527 * Fixed namespace problems. Now builtin/IPyhton/user names get
6531 * Fixed namespace problems. Now builtin/IPyhton/user names get
6528 properly reported in their namespace. Internal namespace handling
6532 properly reported in their namespace. Internal namespace handling
6529 is finally getting decent (not perfect yet, but much better than
6533 is finally getting decent (not perfect yet, but much better than
6530 the ad-hoc mess we had).
6534 the ad-hoc mess we had).
6531
6535
6532 * Removed -exit option. If people just want to run a python
6536 * Removed -exit option. If people just want to run a python
6533 script, that's what the normal interpreter is for. Less
6537 script, that's what the normal interpreter is for. Less
6534 unnecessary options, less chances for bugs.
6538 unnecessary options, less chances for bugs.
6535
6539
6536 * Added a crash handler which generates a complete post-mortem if
6540 * Added a crash handler which generates a complete post-mortem if
6537 IPython crashes. This will help a lot in tracking bugs down the
6541 IPython crashes. This will help a lot in tracking bugs down the
6538 road.
6542 road.
6539
6543
6540 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6544 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6541 which were boud to functions being reassigned would bypass the
6545 which were boud to functions being reassigned would bypass the
6542 logger, breaking the sync of _il with the prompt counter. This
6546 logger, breaking the sync of _il with the prompt counter. This
6543 would then crash IPython later when a new line was logged.
6547 would then crash IPython later when a new line was logged.
6544
6548
6545 2001-12-02 Fernando Perez <fperez@colorado.edu>
6549 2001-12-02 Fernando Perez <fperez@colorado.edu>
6546
6550
6547 * Made IPython a package. This means people don't have to clutter
6551 * Made IPython a package. This means people don't have to clutter
6548 their sys.path with yet another directory. Changed the INSTALL
6552 their sys.path with yet another directory. Changed the INSTALL
6549 file accordingly.
6553 file accordingly.
6550
6554
6551 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6555 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6552 sorts its output (so @who shows it sorted) and @whos formats the
6556 sorts its output (so @who shows it sorted) and @whos formats the
6553 table according to the width of the first column. Nicer, easier to
6557 table according to the width of the first column. Nicer, easier to
6554 read. Todo: write a generic table_format() which takes a list of
6558 read. Todo: write a generic table_format() which takes a list of
6555 lists and prints it nicely formatted, with optional row/column
6559 lists and prints it nicely formatted, with optional row/column
6556 separators and proper padding and justification.
6560 separators and proper padding and justification.
6557
6561
6558 * Released 0.1.20
6562 * Released 0.1.20
6559
6563
6560 * Fixed bug in @log which would reverse the inputcache list (a
6564 * Fixed bug in @log which would reverse the inputcache list (a
6561 copy operation was missing).
6565 copy operation was missing).
6562
6566
6563 * Code cleanup. @config was changed to use page(). Better, since
6567 * Code cleanup. @config was changed to use page(). Better, since
6564 its output is always quite long.
6568 its output is always quite long.
6565
6569
6566 * Itpl is back as a dependency. I was having too many problems
6570 * Itpl is back as a dependency. I was having too many problems
6567 getting the parametric aliases to work reliably, and it's just
6571 getting the parametric aliases to work reliably, and it's just
6568 easier to code weird string operations with it than playing %()s
6572 easier to code weird string operations with it than playing %()s
6569 games. It's only ~6k, so I don't think it's too big a deal.
6573 games. It's only ~6k, so I don't think it's too big a deal.
6570
6574
6571 * Found (and fixed) a very nasty bug with history. !lines weren't
6575 * Found (and fixed) a very nasty bug with history. !lines weren't
6572 getting cached, and the out of sync caches would crash
6576 getting cached, and the out of sync caches would crash
6573 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6577 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6574 division of labor a bit better. Bug fixed, cleaner structure.
6578 division of labor a bit better. Bug fixed, cleaner structure.
6575
6579
6576 2001-12-01 Fernando Perez <fperez@colorado.edu>
6580 2001-12-01 Fernando Perez <fperez@colorado.edu>
6577
6581
6578 * Released 0.1.19
6582 * Released 0.1.19
6579
6583
6580 * Added option -n to @hist to prevent line number printing. Much
6584 * Added option -n to @hist to prevent line number printing. Much
6581 easier to copy/paste code this way.
6585 easier to copy/paste code this way.
6582
6586
6583 * Created global _il to hold the input list. Allows easy
6587 * Created global _il to hold the input list. Allows easy
6584 re-execution of blocks of code by slicing it (inspired by Janko's
6588 re-execution of blocks of code by slicing it (inspired by Janko's
6585 comment on 'macros').
6589 comment on 'macros').
6586
6590
6587 * Small fixes and doc updates.
6591 * Small fixes and doc updates.
6588
6592
6589 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6593 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6590 much too fragile with automagic. Handles properly multi-line
6594 much too fragile with automagic. Handles properly multi-line
6591 statements and takes parameters.
6595 statements and takes parameters.
6592
6596
6593 2001-11-30 Fernando Perez <fperez@colorado.edu>
6597 2001-11-30 Fernando Perez <fperez@colorado.edu>
6594
6598
6595 * Version 0.1.18 released.
6599 * Version 0.1.18 released.
6596
6600
6597 * Fixed nasty namespace bug in initial module imports.
6601 * Fixed nasty namespace bug in initial module imports.
6598
6602
6599 * Added copyright/license notes to all code files (except
6603 * Added copyright/license notes to all code files (except
6600 DPyGetOpt). For the time being, LGPL. That could change.
6604 DPyGetOpt). For the time being, LGPL. That could change.
6601
6605
6602 * Rewrote a much nicer README, updated INSTALL, cleaned up
6606 * Rewrote a much nicer README, updated INSTALL, cleaned up
6603 ipythonrc-* samples.
6607 ipythonrc-* samples.
6604
6608
6605 * Overall code/documentation cleanup. Basically ready for
6609 * Overall code/documentation cleanup. Basically ready for
6606 release. Only remaining thing: licence decision (LGPL?).
6610 release. Only remaining thing: licence decision (LGPL?).
6607
6611
6608 * Converted load_config to a class, ConfigLoader. Now recursion
6612 * Converted load_config to a class, ConfigLoader. Now recursion
6609 control is better organized. Doesn't include the same file twice.
6613 control is better organized. Doesn't include the same file twice.
6610
6614
6611 2001-11-29 Fernando Perez <fperez@colorado.edu>
6615 2001-11-29 Fernando Perez <fperez@colorado.edu>
6612
6616
6613 * Got input history working. Changed output history variables from
6617 * Got input history working. Changed output history variables from
6614 _p to _o so that _i is for input and _o for output. Just cleaner
6618 _p to _o so that _i is for input and _o for output. Just cleaner
6615 convention.
6619 convention.
6616
6620
6617 * Implemented parametric aliases. This pretty much allows the
6621 * Implemented parametric aliases. This pretty much allows the
6618 alias system to offer full-blown shell convenience, I think.
6622 alias system to offer full-blown shell convenience, I think.
6619
6623
6620 * Version 0.1.17 released, 0.1.18 opened.
6624 * Version 0.1.17 released, 0.1.18 opened.
6621
6625
6622 * dot_ipython/ipythonrc (alias): added documentation.
6626 * dot_ipython/ipythonrc (alias): added documentation.
6623 (xcolor): Fixed small bug (xcolors -> xcolor)
6627 (xcolor): Fixed small bug (xcolors -> xcolor)
6624
6628
6625 * Changed the alias system. Now alias is a magic command to define
6629 * Changed the alias system. Now alias is a magic command to define
6626 aliases just like the shell. Rationale: the builtin magics should
6630 aliases just like the shell. Rationale: the builtin magics should
6627 be there for things deeply connected to IPython's
6631 be there for things deeply connected to IPython's
6628 architecture. And this is a much lighter system for what I think
6632 architecture. And this is a much lighter system for what I think
6629 is the really important feature: allowing users to define quickly
6633 is the really important feature: allowing users to define quickly
6630 magics that will do shell things for them, so they can customize
6634 magics that will do shell things for them, so they can customize
6631 IPython easily to match their work habits. If someone is really
6635 IPython easily to match their work habits. If someone is really
6632 desperate to have another name for a builtin alias, they can
6636 desperate to have another name for a builtin alias, they can
6633 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6637 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6634 works.
6638 works.
6635
6639
6636 2001-11-28 Fernando Perez <fperez@colorado.edu>
6640 2001-11-28 Fernando Perez <fperez@colorado.edu>
6637
6641
6638 * Changed @file so that it opens the source file at the proper
6642 * Changed @file so that it opens the source file at the proper
6639 line. Since it uses less, if your EDITOR environment is
6643 line. Since it uses less, if your EDITOR environment is
6640 configured, typing v will immediately open your editor of choice
6644 configured, typing v will immediately open your editor of choice
6641 right at the line where the object is defined. Not as quick as
6645 right at the line where the object is defined. Not as quick as
6642 having a direct @edit command, but for all intents and purposes it
6646 having a direct @edit command, but for all intents and purposes it
6643 works. And I don't have to worry about writing @edit to deal with
6647 works. And I don't have to worry about writing @edit to deal with
6644 all the editors, less does that.
6648 all the editors, less does that.
6645
6649
6646 * Version 0.1.16 released, 0.1.17 opened.
6650 * Version 0.1.16 released, 0.1.17 opened.
6647
6651
6648 * Fixed some nasty bugs in the page/page_dumb combo that could
6652 * Fixed some nasty bugs in the page/page_dumb combo that could
6649 crash IPython.
6653 crash IPython.
6650
6654
6651 2001-11-27 Fernando Perez <fperez@colorado.edu>
6655 2001-11-27 Fernando Perez <fperez@colorado.edu>
6652
6656
6653 * Version 0.1.15 released, 0.1.16 opened.
6657 * Version 0.1.15 released, 0.1.16 opened.
6654
6658
6655 * Finally got ? and ?? to work for undefined things: now it's
6659 * Finally got ? and ?? to work for undefined things: now it's
6656 possible to type {}.get? and get information about the get method
6660 possible to type {}.get? and get information about the get method
6657 of dicts, or os.path? even if only os is defined (so technically
6661 of dicts, or os.path? even if only os is defined (so technically
6658 os.path isn't). Works at any level. For example, after import os,
6662 os.path isn't). Works at any level. For example, after import os,
6659 os?, os.path?, os.path.abspath? all work. This is great, took some
6663 os?, os.path?, os.path.abspath? all work. This is great, took some
6660 work in _ofind.
6664 work in _ofind.
6661
6665
6662 * Fixed more bugs with logging. The sanest way to do it was to add
6666 * Fixed more bugs with logging. The sanest way to do it was to add
6663 to @log a 'mode' parameter. Killed two in one shot (this mode
6667 to @log a 'mode' parameter. Killed two in one shot (this mode
6664 option was a request of Janko's). I think it's finally clean
6668 option was a request of Janko's). I think it's finally clean
6665 (famous last words).
6669 (famous last words).
6666
6670
6667 * Added a page_dumb() pager which does a decent job of paging on
6671 * Added a page_dumb() pager which does a decent job of paging on
6668 screen, if better things (like less) aren't available. One less
6672 screen, if better things (like less) aren't available. One less
6669 unix dependency (someday maybe somebody will port this to
6673 unix dependency (someday maybe somebody will port this to
6670 windows).
6674 windows).
6671
6675
6672 * Fixed problem in magic_log: would lock of logging out if log
6676 * Fixed problem in magic_log: would lock of logging out if log
6673 creation failed (because it would still think it had succeeded).
6677 creation failed (because it would still think it had succeeded).
6674
6678
6675 * Improved the page() function using curses to auto-detect screen
6679 * Improved the page() function using curses to auto-detect screen
6676 size. Now it can make a much better decision on whether to print
6680 size. Now it can make a much better decision on whether to print
6677 or page a string. Option screen_length was modified: a value 0
6681 or page a string. Option screen_length was modified: a value 0
6678 means auto-detect, and that's the default now.
6682 means auto-detect, and that's the default now.
6679
6683
6680 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6684 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6681 go out. I'll test it for a few days, then talk to Janko about
6685 go out. I'll test it for a few days, then talk to Janko about
6682 licences and announce it.
6686 licences and announce it.
6683
6687
6684 * Fixed the length of the auto-generated ---> prompt which appears
6688 * Fixed the length of the auto-generated ---> prompt which appears
6685 for auto-parens and auto-quotes. Getting this right isn't trivial,
6689 for auto-parens and auto-quotes. Getting this right isn't trivial,
6686 with all the color escapes, different prompt types and optional
6690 with all the color escapes, different prompt types and optional
6687 separators. But it seems to be working in all the combinations.
6691 separators. But it seems to be working in all the combinations.
6688
6692
6689 2001-11-26 Fernando Perez <fperez@colorado.edu>
6693 2001-11-26 Fernando Perez <fperez@colorado.edu>
6690
6694
6691 * Wrote a regexp filter to get option types from the option names
6695 * Wrote a regexp filter to get option types from the option names
6692 string. This eliminates the need to manually keep two duplicate
6696 string. This eliminates the need to manually keep two duplicate
6693 lists.
6697 lists.
6694
6698
6695 * Removed the unneeded check_option_names. Now options are handled
6699 * Removed the unneeded check_option_names. Now options are handled
6696 in a much saner manner and it's easy to visually check that things
6700 in a much saner manner and it's easy to visually check that things
6697 are ok.
6701 are ok.
6698
6702
6699 * Updated version numbers on all files I modified to carry a
6703 * Updated version numbers on all files I modified to carry a
6700 notice so Janko and Nathan have clear version markers.
6704 notice so Janko and Nathan have clear version markers.
6701
6705
6702 * Updated docstring for ultraTB with my changes. I should send
6706 * Updated docstring for ultraTB with my changes. I should send
6703 this to Nathan.
6707 this to Nathan.
6704
6708
6705 * Lots of small fixes. Ran everything through pychecker again.
6709 * Lots of small fixes. Ran everything through pychecker again.
6706
6710
6707 * Made loading of deep_reload an cmd line option. If it's not too
6711 * Made loading of deep_reload an cmd line option. If it's not too
6708 kosher, now people can just disable it. With -nodeep_reload it's
6712 kosher, now people can just disable it. With -nodeep_reload it's
6709 still available as dreload(), it just won't overwrite reload().
6713 still available as dreload(), it just won't overwrite reload().
6710
6714
6711 * Moved many options to the no| form (-opt and -noopt
6715 * Moved many options to the no| form (-opt and -noopt
6712 accepted). Cleaner.
6716 accepted). Cleaner.
6713
6717
6714 * Changed magic_log so that if called with no parameters, it uses
6718 * Changed magic_log so that if called with no parameters, it uses
6715 'rotate' mode. That way auto-generated logs aren't automatically
6719 'rotate' mode. That way auto-generated logs aren't automatically
6716 over-written. For normal logs, now a backup is made if it exists
6720 over-written. For normal logs, now a backup is made if it exists
6717 (only 1 level of backups). A new 'backup' mode was added to the
6721 (only 1 level of backups). A new 'backup' mode was added to the
6718 Logger class to support this. This was a request by Janko.
6722 Logger class to support this. This was a request by Janko.
6719
6723
6720 * Added @logoff/@logon to stop/restart an active log.
6724 * Added @logoff/@logon to stop/restart an active log.
6721
6725
6722 * Fixed a lot of bugs in log saving/replay. It was pretty
6726 * Fixed a lot of bugs in log saving/replay. It was pretty
6723 broken. Now special lines (!@,/) appear properly in the command
6727 broken. Now special lines (!@,/) appear properly in the command
6724 history after a log replay.
6728 history after a log replay.
6725
6729
6726 * Tried and failed to implement full session saving via pickle. My
6730 * Tried and failed to implement full session saving via pickle. My
6727 idea was to pickle __main__.__dict__, but modules can't be
6731 idea was to pickle __main__.__dict__, but modules can't be
6728 pickled. This would be a better alternative to replaying logs, but
6732 pickled. This would be a better alternative to replaying logs, but
6729 seems quite tricky to get to work. Changed -session to be called
6733 seems quite tricky to get to work. Changed -session to be called
6730 -logplay, which more accurately reflects what it does. And if we
6734 -logplay, which more accurately reflects what it does. And if we
6731 ever get real session saving working, -session is now available.
6735 ever get real session saving working, -session is now available.
6732
6736
6733 * Implemented color schemes for prompts also. As for tracebacks,
6737 * Implemented color schemes for prompts also. As for tracebacks,
6734 currently only NoColor and Linux are supported. But now the
6738 currently only NoColor and Linux are supported. But now the
6735 infrastructure is in place, based on a generic ColorScheme
6739 infrastructure is in place, based on a generic ColorScheme
6736 class. So writing and activating new schemes both for the prompts
6740 class. So writing and activating new schemes both for the prompts
6737 and the tracebacks should be straightforward.
6741 and the tracebacks should be straightforward.
6738
6742
6739 * Version 0.1.13 released, 0.1.14 opened.
6743 * Version 0.1.13 released, 0.1.14 opened.
6740
6744
6741 * Changed handling of options for output cache. Now counter is
6745 * Changed handling of options for output cache. Now counter is
6742 hardwired starting at 1 and one specifies the maximum number of
6746 hardwired starting at 1 and one specifies the maximum number of
6743 entries *in the outcache* (not the max prompt counter). This is
6747 entries *in the outcache* (not the max prompt counter). This is
6744 much better, since many statements won't increase the cache
6748 much better, since many statements won't increase the cache
6745 count. It also eliminated some confusing options, now there's only
6749 count. It also eliminated some confusing options, now there's only
6746 one: cache_size.
6750 one: cache_size.
6747
6751
6748 * Added 'alias' magic function and magic_alias option in the
6752 * Added 'alias' magic function and magic_alias option in the
6749 ipythonrc file. Now the user can easily define whatever names he
6753 ipythonrc file. Now the user can easily define whatever names he
6750 wants for the magic functions without having to play weird
6754 wants for the magic functions without having to play weird
6751 namespace games. This gives IPython a real shell-like feel.
6755 namespace games. This gives IPython a real shell-like feel.
6752
6756
6753 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6757 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6754 @ or not).
6758 @ or not).
6755
6759
6756 This was one of the last remaining 'visible' bugs (that I know
6760 This was one of the last remaining 'visible' bugs (that I know
6757 of). I think if I can clean up the session loading so it works
6761 of). I think if I can clean up the session loading so it works
6758 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6762 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6759 about licensing).
6763 about licensing).
6760
6764
6761 2001-11-25 Fernando Perez <fperez@colorado.edu>
6765 2001-11-25 Fernando Perez <fperez@colorado.edu>
6762
6766
6763 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6767 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6764 there's a cleaner distinction between what ? and ?? show.
6768 there's a cleaner distinction between what ? and ?? show.
6765
6769
6766 * Added screen_length option. Now the user can define his own
6770 * Added screen_length option. Now the user can define his own
6767 screen size for page() operations.
6771 screen size for page() operations.
6768
6772
6769 * Implemented magic shell-like functions with automatic code
6773 * Implemented magic shell-like functions with automatic code
6770 generation. Now adding another function is just a matter of adding
6774 generation. Now adding another function is just a matter of adding
6771 an entry to a dict, and the function is dynamically generated at
6775 an entry to a dict, and the function is dynamically generated at
6772 run-time. Python has some really cool features!
6776 run-time. Python has some really cool features!
6773
6777
6774 * Renamed many options to cleanup conventions a little. Now all
6778 * Renamed many options to cleanup conventions a little. Now all
6775 are lowercase, and only underscores where needed. Also in the code
6779 are lowercase, and only underscores where needed. Also in the code
6776 option name tables are clearer.
6780 option name tables are clearer.
6777
6781
6778 * Changed prompts a little. Now input is 'In [n]:' instead of
6782 * Changed prompts a little. Now input is 'In [n]:' instead of
6779 'In[n]:='. This allows it the numbers to be aligned with the
6783 'In[n]:='. This allows it the numbers to be aligned with the
6780 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6784 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6781 Python (it was a Mathematica thing). The '...' continuation prompt
6785 Python (it was a Mathematica thing). The '...' continuation prompt
6782 was also changed a little to align better.
6786 was also changed a little to align better.
6783
6787
6784 * Fixed bug when flushing output cache. Not all _p<n> variables
6788 * Fixed bug when flushing output cache. Not all _p<n> variables
6785 exist, so their deletion needs to be wrapped in a try:
6789 exist, so their deletion needs to be wrapped in a try:
6786
6790
6787 * Figured out how to properly use inspect.formatargspec() (it
6791 * Figured out how to properly use inspect.formatargspec() (it
6788 requires the args preceded by *). So I removed all the code from
6792 requires the args preceded by *). So I removed all the code from
6789 _get_pdef in Magic, which was just replicating that.
6793 _get_pdef in Magic, which was just replicating that.
6790
6794
6791 * Added test to prefilter to allow redefining magic function names
6795 * Added test to prefilter to allow redefining magic function names
6792 as variables. This is ok, since the @ form is always available,
6796 as variables. This is ok, since the @ form is always available,
6793 but whe should allow the user to define a variable called 'ls' if
6797 but whe should allow the user to define a variable called 'ls' if
6794 he needs it.
6798 he needs it.
6795
6799
6796 * Moved the ToDo information from README into a separate ToDo.
6800 * Moved the ToDo information from README into a separate ToDo.
6797
6801
6798 * General code cleanup and small bugfixes. I think it's close to a
6802 * General code cleanup and small bugfixes. I think it's close to a
6799 state where it can be released, obviously with a big 'beta'
6803 state where it can be released, obviously with a big 'beta'
6800 warning on it.
6804 warning on it.
6801
6805
6802 * Got the magic function split to work. Now all magics are defined
6806 * Got the magic function split to work. Now all magics are defined
6803 in a separate class. It just organizes things a bit, and now
6807 in a separate class. It just organizes things a bit, and now
6804 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6808 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6805 was too long).
6809 was too long).
6806
6810
6807 * Changed @clear to @reset to avoid potential confusions with
6811 * Changed @clear to @reset to avoid potential confusions with
6808 the shell command clear. Also renamed @cl to @clear, which does
6812 the shell command clear. Also renamed @cl to @clear, which does
6809 exactly what people expect it to from their shell experience.
6813 exactly what people expect it to from their shell experience.
6810
6814
6811 Added a check to the @reset command (since it's so
6815 Added a check to the @reset command (since it's so
6812 destructive, it's probably a good idea to ask for confirmation).
6816 destructive, it's probably a good idea to ask for confirmation).
6813 But now reset only works for full namespace resetting. Since the
6817 But now reset only works for full namespace resetting. Since the
6814 del keyword is already there for deleting a few specific
6818 del keyword is already there for deleting a few specific
6815 variables, I don't see the point of having a redundant magic
6819 variables, I don't see the point of having a redundant magic
6816 function for the same task.
6820 function for the same task.
6817
6821
6818 2001-11-24 Fernando Perez <fperez@colorado.edu>
6822 2001-11-24 Fernando Perez <fperez@colorado.edu>
6819
6823
6820 * Updated the builtin docs (esp. the ? ones).
6824 * Updated the builtin docs (esp. the ? ones).
6821
6825
6822 * Ran all the code through pychecker. Not terribly impressed with
6826 * Ran all the code through pychecker. Not terribly impressed with
6823 it: lots of spurious warnings and didn't really find anything of
6827 it: lots of spurious warnings and didn't really find anything of
6824 substance (just a few modules being imported and not used).
6828 substance (just a few modules being imported and not used).
6825
6829
6826 * Implemented the new ultraTB functionality into IPython. New
6830 * Implemented the new ultraTB functionality into IPython. New
6827 option: xcolors. This chooses color scheme. xmode now only selects
6831 option: xcolors. This chooses color scheme. xmode now only selects
6828 between Plain and Verbose. Better orthogonality.
6832 between Plain and Verbose. Better orthogonality.
6829
6833
6830 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6834 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6831 mode and color scheme for the exception handlers. Now it's
6835 mode and color scheme for the exception handlers. Now it's
6832 possible to have the verbose traceback with no coloring.
6836 possible to have the verbose traceback with no coloring.
6833
6837
6834 2001-11-23 Fernando Perez <fperez@colorado.edu>
6838 2001-11-23 Fernando Perez <fperez@colorado.edu>
6835
6839
6836 * Version 0.1.12 released, 0.1.13 opened.
6840 * Version 0.1.12 released, 0.1.13 opened.
6837
6841
6838 * Removed option to set auto-quote and auto-paren escapes by
6842 * Removed option to set auto-quote and auto-paren escapes by
6839 user. The chances of breaking valid syntax are just too high. If
6843 user. The chances of breaking valid syntax are just too high. If
6840 someone *really* wants, they can always dig into the code.
6844 someone *really* wants, they can always dig into the code.
6841
6845
6842 * Made prompt separators configurable.
6846 * Made prompt separators configurable.
6843
6847
6844 2001-11-22 Fernando Perez <fperez@colorado.edu>
6848 2001-11-22 Fernando Perez <fperez@colorado.edu>
6845
6849
6846 * Small bugfixes in many places.
6850 * Small bugfixes in many places.
6847
6851
6848 * Removed the MyCompleter class from ipplib. It seemed redundant
6852 * Removed the MyCompleter class from ipplib. It seemed redundant
6849 with the C-p,C-n history search functionality. Less code to
6853 with the C-p,C-n history search functionality. Less code to
6850 maintain.
6854 maintain.
6851
6855
6852 * Moved all the original ipython.py code into ipythonlib.py. Right
6856 * Moved all the original ipython.py code into ipythonlib.py. Right
6853 now it's just one big dump into a function called make_IPython, so
6857 now it's just one big dump into a function called make_IPython, so
6854 no real modularity has been gained. But at least it makes the
6858 no real modularity has been gained. But at least it makes the
6855 wrapper script tiny, and since ipythonlib is a module, it gets
6859 wrapper script tiny, and since ipythonlib is a module, it gets
6856 compiled and startup is much faster.
6860 compiled and startup is much faster.
6857
6861
6858 This is a reasobably 'deep' change, so we should test it for a
6862 This is a reasobably 'deep' change, so we should test it for a
6859 while without messing too much more with the code.
6863 while without messing too much more with the code.
6860
6864
6861 2001-11-21 Fernando Perez <fperez@colorado.edu>
6865 2001-11-21 Fernando Perez <fperez@colorado.edu>
6862
6866
6863 * Version 0.1.11 released, 0.1.12 opened for further work.
6867 * Version 0.1.11 released, 0.1.12 opened for further work.
6864
6868
6865 * Removed dependency on Itpl. It was only needed in one place. It
6869 * Removed dependency on Itpl. It was only needed in one place. It
6866 would be nice if this became part of python, though. It makes life
6870 would be nice if this became part of python, though. It makes life
6867 *a lot* easier in some cases.
6871 *a lot* easier in some cases.
6868
6872
6869 * Simplified the prefilter code a bit. Now all handlers are
6873 * Simplified the prefilter code a bit. Now all handlers are
6870 expected to explicitly return a value (at least a blank string).
6874 expected to explicitly return a value (at least a blank string).
6871
6875
6872 * Heavy edits in ipplib. Removed the help system altogether. Now
6876 * Heavy edits in ipplib. Removed the help system altogether. Now
6873 obj?/?? is used for inspecting objects, a magic @doc prints
6877 obj?/?? is used for inspecting objects, a magic @doc prints
6874 docstrings, and full-blown Python help is accessed via the 'help'
6878 docstrings, and full-blown Python help is accessed via the 'help'
6875 keyword. This cleans up a lot of code (less to maintain) and does
6879 keyword. This cleans up a lot of code (less to maintain) and does
6876 the job. Since 'help' is now a standard Python component, might as
6880 the job. Since 'help' is now a standard Python component, might as
6877 well use it and remove duplicate functionality.
6881 well use it and remove duplicate functionality.
6878
6882
6879 Also removed the option to use ipplib as a standalone program. By
6883 Also removed the option to use ipplib as a standalone program. By
6880 now it's too dependent on other parts of IPython to function alone.
6884 now it's too dependent on other parts of IPython to function alone.
6881
6885
6882 * Fixed bug in genutils.pager. It would crash if the pager was
6886 * Fixed bug in genutils.pager. It would crash if the pager was
6883 exited immediately after opening (broken pipe).
6887 exited immediately after opening (broken pipe).
6884
6888
6885 * Trimmed down the VerboseTB reporting a little. The header is
6889 * Trimmed down the VerboseTB reporting a little. The header is
6886 much shorter now and the repeated exception arguments at the end
6890 much shorter now and the repeated exception arguments at the end
6887 have been removed. For interactive use the old header seemed a bit
6891 have been removed. For interactive use the old header seemed a bit
6888 excessive.
6892 excessive.
6889
6893
6890 * Fixed small bug in output of @whos for variables with multi-word
6894 * Fixed small bug in output of @whos for variables with multi-word
6891 types (only first word was displayed).
6895 types (only first word was displayed).
6892
6896
6893 2001-11-17 Fernando Perez <fperez@colorado.edu>
6897 2001-11-17 Fernando Perez <fperez@colorado.edu>
6894
6898
6895 * Version 0.1.10 released, 0.1.11 opened for further work.
6899 * Version 0.1.10 released, 0.1.11 opened for further work.
6896
6900
6897 * Modified dirs and friends. dirs now *returns* the stack (not
6901 * Modified dirs and friends. dirs now *returns* the stack (not
6898 prints), so one can manipulate it as a variable. Convenient to
6902 prints), so one can manipulate it as a variable. Convenient to
6899 travel along many directories.
6903 travel along many directories.
6900
6904
6901 * Fixed bug in magic_pdef: would only work with functions with
6905 * Fixed bug in magic_pdef: would only work with functions with
6902 arguments with default values.
6906 arguments with default values.
6903
6907
6904 2001-11-14 Fernando Perez <fperez@colorado.edu>
6908 2001-11-14 Fernando Perez <fperez@colorado.edu>
6905
6909
6906 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6910 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6907 example with IPython. Various other minor fixes and cleanups.
6911 example with IPython. Various other minor fixes and cleanups.
6908
6912
6909 * Version 0.1.9 released, 0.1.10 opened for further work.
6913 * Version 0.1.9 released, 0.1.10 opened for further work.
6910
6914
6911 * Added sys.path to the list of directories searched in the
6915 * Added sys.path to the list of directories searched in the
6912 execfile= option. It used to be the current directory and the
6916 execfile= option. It used to be the current directory and the
6913 user's IPYTHONDIR only.
6917 user's IPYTHONDIR only.
6914
6918
6915 2001-11-13 Fernando Perez <fperez@colorado.edu>
6919 2001-11-13 Fernando Perez <fperez@colorado.edu>
6916
6920
6917 * Reinstated the raw_input/prefilter separation that Janko had
6921 * Reinstated the raw_input/prefilter separation that Janko had
6918 initially. This gives a more convenient setup for extending the
6922 initially. This gives a more convenient setup for extending the
6919 pre-processor from the outside: raw_input always gets a string,
6923 pre-processor from the outside: raw_input always gets a string,
6920 and prefilter has to process it. We can then redefine prefilter
6924 and prefilter has to process it. We can then redefine prefilter
6921 from the outside and implement extensions for special
6925 from the outside and implement extensions for special
6922 purposes.
6926 purposes.
6923
6927
6924 Today I got one for inputting PhysicalQuantity objects
6928 Today I got one for inputting PhysicalQuantity objects
6925 (from Scientific) without needing any function calls at
6929 (from Scientific) without needing any function calls at
6926 all. Extremely convenient, and it's all done as a user-level
6930 all. Extremely convenient, and it's all done as a user-level
6927 extension (no IPython code was touched). Now instead of:
6931 extension (no IPython code was touched). Now instead of:
6928 a = PhysicalQuantity(4.2,'m/s**2')
6932 a = PhysicalQuantity(4.2,'m/s**2')
6929 one can simply say
6933 one can simply say
6930 a = 4.2 m/s**2
6934 a = 4.2 m/s**2
6931 or even
6935 or even
6932 a = 4.2 m/s^2
6936 a = 4.2 m/s^2
6933
6937
6934 I use this, but it's also a proof of concept: IPython really is
6938 I use this, but it's also a proof of concept: IPython really is
6935 fully user-extensible, even at the level of the parsing of the
6939 fully user-extensible, even at the level of the parsing of the
6936 command line. It's not trivial, but it's perfectly doable.
6940 command line. It's not trivial, but it's perfectly doable.
6937
6941
6938 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6942 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6939 the problem of modules being loaded in the inverse order in which
6943 the problem of modules being loaded in the inverse order in which
6940 they were defined in
6944 they were defined in
6941
6945
6942 * Version 0.1.8 released, 0.1.9 opened for further work.
6946 * Version 0.1.8 released, 0.1.9 opened for further work.
6943
6947
6944 * Added magics pdef, source and file. They respectively show the
6948 * Added magics pdef, source and file. They respectively show the
6945 definition line ('prototype' in C), source code and full python
6949 definition line ('prototype' in C), source code and full python
6946 file for any callable object. The object inspector oinfo uses
6950 file for any callable object. The object inspector oinfo uses
6947 these to show the same information.
6951 these to show the same information.
6948
6952
6949 * Version 0.1.7 released, 0.1.8 opened for further work.
6953 * Version 0.1.7 released, 0.1.8 opened for further work.
6950
6954
6951 * Separated all the magic functions into a class called Magic. The
6955 * Separated all the magic functions into a class called Magic. The
6952 InteractiveShell class was becoming too big for Xemacs to handle
6956 InteractiveShell class was becoming too big for Xemacs to handle
6953 (de-indenting a line would lock it up for 10 seconds while it
6957 (de-indenting a line would lock it up for 10 seconds while it
6954 backtracked on the whole class!)
6958 backtracked on the whole class!)
6955
6959
6956 FIXME: didn't work. It can be done, but right now namespaces are
6960 FIXME: didn't work. It can be done, but right now namespaces are
6957 all messed up. Do it later (reverted it for now, so at least
6961 all messed up. Do it later (reverted it for now, so at least
6958 everything works as before).
6962 everything works as before).
6959
6963
6960 * Got the object introspection system (magic_oinfo) working! I
6964 * Got the object introspection system (magic_oinfo) working! I
6961 think this is pretty much ready for release to Janko, so he can
6965 think this is pretty much ready for release to Janko, so he can
6962 test it for a while and then announce it. Pretty much 100% of what
6966 test it for a while and then announce it. Pretty much 100% of what
6963 I wanted for the 'phase 1' release is ready. Happy, tired.
6967 I wanted for the 'phase 1' release is ready. Happy, tired.
6964
6968
6965 2001-11-12 Fernando Perez <fperez@colorado.edu>
6969 2001-11-12 Fernando Perez <fperez@colorado.edu>
6966
6970
6967 * Version 0.1.6 released, 0.1.7 opened for further work.
6971 * Version 0.1.6 released, 0.1.7 opened for further work.
6968
6972
6969 * Fixed bug in printing: it used to test for truth before
6973 * Fixed bug in printing: it used to test for truth before
6970 printing, so 0 wouldn't print. Now checks for None.
6974 printing, so 0 wouldn't print. Now checks for None.
6971
6975
6972 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6976 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6973 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6977 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6974 reaches by hand into the outputcache. Think of a better way to do
6978 reaches by hand into the outputcache. Think of a better way to do
6975 this later.
6979 this later.
6976
6980
6977 * Various small fixes thanks to Nathan's comments.
6981 * Various small fixes thanks to Nathan's comments.
6978
6982
6979 * Changed magic_pprint to magic_Pprint. This way it doesn't
6983 * Changed magic_pprint to magic_Pprint. This way it doesn't
6980 collide with pprint() and the name is consistent with the command
6984 collide with pprint() and the name is consistent with the command
6981 line option.
6985 line option.
6982
6986
6983 * Changed prompt counter behavior to be fully like
6987 * Changed prompt counter behavior to be fully like
6984 Mathematica's. That is, even input that doesn't return a result
6988 Mathematica's. That is, even input that doesn't return a result
6985 raises the prompt counter. The old behavior was kind of confusing
6989 raises the prompt counter. The old behavior was kind of confusing
6986 (getting the same prompt number several times if the operation
6990 (getting the same prompt number several times if the operation
6987 didn't return a result).
6991 didn't return a result).
6988
6992
6989 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6993 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6990
6994
6991 * Fixed -Classic mode (wasn't working anymore).
6995 * Fixed -Classic mode (wasn't working anymore).
6992
6996
6993 * Added colored prompts using Nathan's new code. Colors are
6997 * Added colored prompts using Nathan's new code. Colors are
6994 currently hardwired, they can be user-configurable. For
6998 currently hardwired, they can be user-configurable. For
6995 developers, they can be chosen in file ipythonlib.py, at the
6999 developers, they can be chosen in file ipythonlib.py, at the
6996 beginning of the CachedOutput class def.
7000 beginning of the CachedOutput class def.
6997
7001
6998 2001-11-11 Fernando Perez <fperez@colorado.edu>
7002 2001-11-11 Fernando Perez <fperez@colorado.edu>
6999
7003
7000 * Version 0.1.5 released, 0.1.6 opened for further work.
7004 * Version 0.1.5 released, 0.1.6 opened for further work.
7001
7005
7002 * Changed magic_env to *return* the environment as a dict (not to
7006 * Changed magic_env to *return* the environment as a dict (not to
7003 print it). This way it prints, but it can also be processed.
7007 print it). This way it prints, but it can also be processed.
7004
7008
7005 * Added Verbose exception reporting to interactive
7009 * Added Verbose exception reporting to interactive
7006 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7010 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7007 traceback. Had to make some changes to the ultraTB file. This is
7011 traceback. Had to make some changes to the ultraTB file. This is
7008 probably the last 'big' thing in my mental todo list. This ties
7012 probably the last 'big' thing in my mental todo list. This ties
7009 in with the next entry:
7013 in with the next entry:
7010
7014
7011 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7015 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7012 has to specify is Plain, Color or Verbose for all exception
7016 has to specify is Plain, Color or Verbose for all exception
7013 handling.
7017 handling.
7014
7018
7015 * Removed ShellServices option. All this can really be done via
7019 * Removed ShellServices option. All this can really be done via
7016 the magic system. It's easier to extend, cleaner and has automatic
7020 the magic system. It's easier to extend, cleaner and has automatic
7017 namespace protection and documentation.
7021 namespace protection and documentation.
7018
7022
7019 2001-11-09 Fernando Perez <fperez@colorado.edu>
7023 2001-11-09 Fernando Perez <fperez@colorado.edu>
7020
7024
7021 * Fixed bug in output cache flushing (missing parameter to
7025 * Fixed bug in output cache flushing (missing parameter to
7022 __init__). Other small bugs fixed (found using pychecker).
7026 __init__). Other small bugs fixed (found using pychecker).
7023
7027
7024 * Version 0.1.4 opened for bugfixing.
7028 * Version 0.1.4 opened for bugfixing.
7025
7029
7026 2001-11-07 Fernando Perez <fperez@colorado.edu>
7030 2001-11-07 Fernando Perez <fperez@colorado.edu>
7027
7031
7028 * Version 0.1.3 released, mainly because of the raw_input bug.
7032 * Version 0.1.3 released, mainly because of the raw_input bug.
7029
7033
7030 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7034 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7031 and when testing for whether things were callable, a call could
7035 and when testing for whether things were callable, a call could
7032 actually be made to certain functions. They would get called again
7036 actually be made to certain functions. They would get called again
7033 once 'really' executed, with a resulting double call. A disaster
7037 once 'really' executed, with a resulting double call. A disaster
7034 in many cases (list.reverse() would never work!).
7038 in many cases (list.reverse() would never work!).
7035
7039
7036 * Removed prefilter() function, moved its code to raw_input (which
7040 * Removed prefilter() function, moved its code to raw_input (which
7037 after all was just a near-empty caller for prefilter). This saves
7041 after all was just a near-empty caller for prefilter). This saves
7038 a function call on every prompt, and simplifies the class a tiny bit.
7042 a function call on every prompt, and simplifies the class a tiny bit.
7039
7043
7040 * Fix _ip to __ip name in magic example file.
7044 * Fix _ip to __ip name in magic example file.
7041
7045
7042 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7046 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7043 work with non-gnu versions of tar.
7047 work with non-gnu versions of tar.
7044
7048
7045 2001-11-06 Fernando Perez <fperez@colorado.edu>
7049 2001-11-06 Fernando Perez <fperez@colorado.edu>
7046
7050
7047 * Version 0.1.2. Just to keep track of the recent changes.
7051 * Version 0.1.2. Just to keep track of the recent changes.
7048
7052
7049 * Fixed nasty bug in output prompt routine. It used to check 'if
7053 * Fixed nasty bug in output prompt routine. It used to check 'if
7050 arg != None...'. Problem is, this fails if arg implements a
7054 arg != None...'. Problem is, this fails if arg implements a
7051 special comparison (__cmp__) which disallows comparing to
7055 special comparison (__cmp__) which disallows comparing to
7052 None. Found it when trying to use the PhysicalQuantity module from
7056 None. Found it when trying to use the PhysicalQuantity module from
7053 ScientificPython.
7057 ScientificPython.
7054
7058
7055 2001-11-05 Fernando Perez <fperez@colorado.edu>
7059 2001-11-05 Fernando Perez <fperez@colorado.edu>
7056
7060
7057 * Also added dirs. Now the pushd/popd/dirs family functions
7061 * Also added dirs. Now the pushd/popd/dirs family functions
7058 basically like the shell, with the added convenience of going home
7062 basically like the shell, with the added convenience of going home
7059 when called with no args.
7063 when called with no args.
7060
7064
7061 * pushd/popd slightly modified to mimic shell behavior more
7065 * pushd/popd slightly modified to mimic shell behavior more
7062 closely.
7066 closely.
7063
7067
7064 * Added env,pushd,popd from ShellServices as magic functions. I
7068 * Added env,pushd,popd from ShellServices as magic functions. I
7065 think the cleanest will be to port all desired functions from
7069 think the cleanest will be to port all desired functions from
7066 ShellServices as magics and remove ShellServices altogether. This
7070 ShellServices as magics and remove ShellServices altogether. This
7067 will provide a single, clean way of adding functionality
7071 will provide a single, clean way of adding functionality
7068 (shell-type or otherwise) to IP.
7072 (shell-type or otherwise) to IP.
7069
7073
7070 2001-11-04 Fernando Perez <fperez@colorado.edu>
7074 2001-11-04 Fernando Perez <fperez@colorado.edu>
7071
7075
7072 * Added .ipython/ directory to sys.path. This way users can keep
7076 * Added .ipython/ directory to sys.path. This way users can keep
7073 customizations there and access them via import.
7077 customizations there and access them via import.
7074
7078
7075 2001-11-03 Fernando Perez <fperez@colorado.edu>
7079 2001-11-03 Fernando Perez <fperez@colorado.edu>
7076
7080
7077 * Opened version 0.1.1 for new changes.
7081 * Opened version 0.1.1 for new changes.
7078
7082
7079 * Changed version number to 0.1.0: first 'public' release, sent to
7083 * Changed version number to 0.1.0: first 'public' release, sent to
7080 Nathan and Janko.
7084 Nathan and Janko.
7081
7085
7082 * Lots of small fixes and tweaks.
7086 * Lots of small fixes and tweaks.
7083
7087
7084 * Minor changes to whos format. Now strings are shown, snipped if
7088 * Minor changes to whos format. Now strings are shown, snipped if
7085 too long.
7089 too long.
7086
7090
7087 * Changed ShellServices to work on __main__ so they show up in @who
7091 * Changed ShellServices to work on __main__ so they show up in @who
7088
7092
7089 * Help also works with ? at the end of a line:
7093 * Help also works with ? at the end of a line:
7090 ?sin and sin?
7094 ?sin and sin?
7091 both produce the same effect. This is nice, as often I use the
7095 both produce the same effect. This is nice, as often I use the
7092 tab-complete to find the name of a method, but I used to then have
7096 tab-complete to find the name of a method, but I used to then have
7093 to go to the beginning of the line to put a ? if I wanted more
7097 to go to the beginning of the line to put a ? if I wanted more
7094 info. Now I can just add the ? and hit return. Convenient.
7098 info. Now I can just add the ? and hit return. Convenient.
7095
7099
7096 2001-11-02 Fernando Perez <fperez@colorado.edu>
7100 2001-11-02 Fernando Perez <fperez@colorado.edu>
7097
7101
7098 * Python version check (>=2.1) added.
7102 * Python version check (>=2.1) added.
7099
7103
7100 * Added LazyPython documentation. At this point the docs are quite
7104 * Added LazyPython documentation. At this point the docs are quite
7101 a mess. A cleanup is in order.
7105 a mess. A cleanup is in order.
7102
7106
7103 * Auto-installer created. For some bizarre reason, the zipfiles
7107 * Auto-installer created. For some bizarre reason, the zipfiles
7104 module isn't working on my system. So I made a tar version
7108 module isn't working on my system. So I made a tar version
7105 (hopefully the command line options in various systems won't kill
7109 (hopefully the command line options in various systems won't kill
7106 me).
7110 me).
7107
7111
7108 * Fixes to Struct in genutils. Now all dictionary-like methods are
7112 * Fixes to Struct in genutils. Now all dictionary-like methods are
7109 protected (reasonably).
7113 protected (reasonably).
7110
7114
7111 * Added pager function to genutils and changed ? to print usage
7115 * Added pager function to genutils and changed ? to print usage
7112 note through it (it was too long).
7116 note through it (it was too long).
7113
7117
7114 * Added the LazyPython functionality. Works great! I changed the
7118 * Added the LazyPython functionality. Works great! I changed the
7115 auto-quote escape to ';', it's on home row and next to '. But
7119 auto-quote escape to ';', it's on home row and next to '. But
7116 both auto-quote and auto-paren (still /) escapes are command-line
7120 both auto-quote and auto-paren (still /) escapes are command-line
7117 parameters.
7121 parameters.
7118
7122
7119
7123
7120 2001-11-01 Fernando Perez <fperez@colorado.edu>
7124 2001-11-01 Fernando Perez <fperez@colorado.edu>
7121
7125
7122 * Version changed to 0.0.7. Fairly large change: configuration now
7126 * Version changed to 0.0.7. Fairly large change: configuration now
7123 is all stored in a directory, by default .ipython. There, all
7127 is all stored in a directory, by default .ipython. There, all
7124 config files have normal looking names (not .names)
7128 config files have normal looking names (not .names)
7125
7129
7126 * Version 0.0.6 Released first to Lucas and Archie as a test
7130 * Version 0.0.6 Released first to Lucas and Archie as a test
7127 run. Since it's the first 'semi-public' release, change version to
7131 run. Since it's the first 'semi-public' release, change version to
7128 > 0.0.6 for any changes now.
7132 > 0.0.6 for any changes now.
7129
7133
7130 * Stuff I had put in the ipplib.py changelog:
7134 * Stuff I had put in the ipplib.py changelog:
7131
7135
7132 Changes to InteractiveShell:
7136 Changes to InteractiveShell:
7133
7137
7134 - Made the usage message a parameter.
7138 - Made the usage message a parameter.
7135
7139
7136 - Require the name of the shell variable to be given. It's a bit
7140 - Require the name of the shell variable to be given. It's a bit
7137 of a hack, but allows the name 'shell' not to be hardwired in the
7141 of a hack, but allows the name 'shell' not to be hardwired in the
7138 magic (@) handler, which is problematic b/c it requires
7142 magic (@) handler, which is problematic b/c it requires
7139 polluting the global namespace with 'shell'. This in turn is
7143 polluting the global namespace with 'shell'. This in turn is
7140 fragile: if a user redefines a variable called shell, things
7144 fragile: if a user redefines a variable called shell, things
7141 break.
7145 break.
7142
7146
7143 - magic @: all functions available through @ need to be defined
7147 - magic @: all functions available through @ need to be defined
7144 as magic_<name>, even though they can be called simply as
7148 as magic_<name>, even though they can be called simply as
7145 @<name>. This allows the special command @magic to gather
7149 @<name>. This allows the special command @magic to gather
7146 information automatically about all existing magic functions,
7150 information automatically about all existing magic functions,
7147 even if they are run-time user extensions, by parsing the shell
7151 even if they are run-time user extensions, by parsing the shell
7148 instance __dict__ looking for special magic_ names.
7152 instance __dict__ looking for special magic_ names.
7149
7153
7150 - mainloop: added *two* local namespace parameters. This allows
7154 - mainloop: added *two* local namespace parameters. This allows
7151 the class to differentiate between parameters which were there
7155 the class to differentiate between parameters which were there
7152 before and after command line initialization was processed. This
7156 before and after command line initialization was processed. This
7153 way, later @who can show things loaded at startup by the
7157 way, later @who can show things loaded at startup by the
7154 user. This trick was necessary to make session saving/reloading
7158 user. This trick was necessary to make session saving/reloading
7155 really work: ideally after saving/exiting/reloading a session,
7159 really work: ideally after saving/exiting/reloading a session,
7156 *everything* should look the same, including the output of @who. I
7160 *everything* should look the same, including the output of @who. I
7157 was only able to make this work with this double namespace
7161 was only able to make this work with this double namespace
7158 trick.
7162 trick.
7159
7163
7160 - added a header to the logfile which allows (almost) full
7164 - added a header to the logfile which allows (almost) full
7161 session restoring.
7165 session restoring.
7162
7166
7163 - prepend lines beginning with @ or !, with a and log
7167 - prepend lines beginning with @ or !, with a and log
7164 them. Why? !lines: may be useful to know what you did @lines:
7168 them. Why? !lines: may be useful to know what you did @lines:
7165 they may affect session state. So when restoring a session, at
7169 they may affect session state. So when restoring a session, at
7166 least inform the user of their presence. I couldn't quite get
7170 least inform the user of their presence. I couldn't quite get
7167 them to properly re-execute, but at least the user is warned.
7171 them to properly re-execute, but at least the user is warned.
7168
7172
7169 * Started ChangeLog.
7173 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now