##// END OF EJS Templates
Standard numpy/pyplot imports as np/plt by default in -pylab mode
Fernando Perez -
Show More
@@ -1,1225 +1,1235 b''
1 # -*- 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 3024 2008-02-07 15:34:42Z darren.dale $"""
7 $Id: Shell.py 3024 2008-02-07 15:34:42Z darren.dale $"""
8
8
9 #*****************************************************************************
9 #*****************************************************************************
10 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
10 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
11 #
11 #
12 # Distributed under the terms of the BSD License. The full license is in
12 # Distributed under the terms of the BSD License. The full license is in
13 # the file COPYING, distributed as part of this software.
13 # the file COPYING, distributed as part of this software.
14 #*****************************************************************************
14 #*****************************************************************************
15
15
16 from IPython import Release
16 from IPython import Release
17 __author__ = '%s <%s>' % Release.authors['Fernando']
17 __author__ = '%s <%s>' % Release.authors['Fernando']
18 __license__ = Release.license
18 __license__ = Release.license
19
19
20 # Code begins
20 # Code begins
21 # Stdlib imports
21 # Stdlib imports
22 import __builtin__
22 import __builtin__
23 import __main__
23 import __main__
24 import Queue
24 import Queue
25 import inspect
25 import inspect
26 import os
26 import os
27 import sys
27 import sys
28 import thread
28 import thread
29 import threading
29 import threading
30 import time
30 import time
31
31
32 from signal import signal, SIGINT
32 from signal import signal, SIGINT
33
33
34 try:
34 try:
35 import ctypes
35 import ctypes
36 HAS_CTYPES = True
36 HAS_CTYPES = True
37 except ImportError:
37 except ImportError:
38 HAS_CTYPES = False
38 HAS_CTYPES = False
39
39
40 # IPython imports
40 # IPython imports
41 import IPython
41 import IPython
42 from IPython import ultraTB, ipapi
42 from IPython import ultraTB, ipapi
43 from IPython.genutils import Term,warn,error,flag_calls, ask_yes_no
43 from IPython.genutils import Term,warn,error,flag_calls, ask_yes_no
44 from IPython.iplib import InteractiveShell
44 from IPython.iplib import InteractiveShell
45 from IPython.ipmaker import make_IPython
45 from IPython.ipmaker import make_IPython
46 from IPython.Magic import Magic
46 from IPython.Magic import Magic
47 from IPython.ipstruct import Struct
47 from IPython.ipstruct import Struct
48
48
49 try: # Python 2.3 compatibility
49 try: # Python 2.3 compatibility
50 set
50 set
51 except NameError:
51 except NameError:
52 import sets
52 import sets
53 set = sets.Set
53 set = sets.Set
54
54
55
55
56 # Globals
56 # Globals
57 # global flag to pass around information about Ctrl-C without exceptions
57 # global flag to pass around information about Ctrl-C without exceptions
58 KBINT = False
58 KBINT = False
59
59
60 # global flag to turn on/off Tk support.
60 # global flag to turn on/off Tk support.
61 USE_TK = False
61 USE_TK = False
62
62
63 # ID for the main thread, used for cross-thread exceptions
63 # ID for the main thread, used for cross-thread exceptions
64 MAIN_THREAD_ID = thread.get_ident()
64 MAIN_THREAD_ID = thread.get_ident()
65
65
66 # Tag when runcode() is active, for exception handling
66 # Tag when runcode() is active, for exception handling
67 CODE_RUN = None
67 CODE_RUN = None
68
68
69 #-----------------------------------------------------------------------------
69 #-----------------------------------------------------------------------------
70 # This class is trivial now, but I want to have it in to publish a clean
70 # This class is trivial now, but I want to have it in to publish a clean
71 # interface. Later when the internals are reorganized, code that uses this
71 # interface. Later when the internals are reorganized, code that uses this
72 # shouldn't have to change.
72 # shouldn't have to change.
73
73
74 class IPShell:
74 class IPShell:
75 """Create an IPython instance."""
75 """Create an IPython instance."""
76
76
77 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
77 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
78 debug=1,shell_class=InteractiveShell):
78 debug=1,shell_class=InteractiveShell):
79 self.IP = make_IPython(argv,user_ns=user_ns,
79 self.IP = make_IPython(argv,user_ns=user_ns,
80 user_global_ns=user_global_ns,
80 user_global_ns=user_global_ns,
81 debug=debug,shell_class=shell_class)
81 debug=debug,shell_class=shell_class)
82
82
83 def mainloop(self,sys_exit=0,banner=None):
83 def mainloop(self,sys_exit=0,banner=None):
84 self.IP.mainloop(banner)
84 self.IP.mainloop(banner)
85 if sys_exit:
85 if sys_exit:
86 sys.exit()
86 sys.exit()
87
87
88 #-----------------------------------------------------------------------------
88 #-----------------------------------------------------------------------------
89 def kill_embedded(self,parameter_s=''):
89 def kill_embedded(self,parameter_s=''):
90 """%kill_embedded : deactivate for good the current embedded IPython.
90 """%kill_embedded : deactivate for good the current embedded IPython.
91
91
92 This function (after asking for confirmation) sets an internal flag so that
92 This function (after asking for confirmation) sets an internal flag so that
93 an embedded IPython will never activate again. This is useful to
93 an embedded IPython will never activate again. This is useful to
94 permanently disable a shell that is being called inside a loop: once you've
94 permanently disable a shell that is being called inside a loop: once you've
95 figured out what you needed from it, you may then kill it and the program
95 figured out what you needed from it, you may then kill it and the program
96 will then continue to run without the interactive shell interfering again.
96 will then continue to run without the interactive shell interfering again.
97 """
97 """
98
98
99 kill = ask_yes_no("Are you sure you want to kill this embedded instance "
99 kill = ask_yes_no("Are you sure you want to kill this embedded instance "
100 "(y/n)? [y/N] ",'n')
100 "(y/n)? [y/N] ",'n')
101 if kill:
101 if kill:
102 self.shell.embedded_active = False
102 self.shell.embedded_active = False
103 print "This embedded IPython will not reactivate anymore once you exit."
103 print "This embedded IPython will not reactivate anymore once you exit."
104
104
105 class IPShellEmbed:
105 class IPShellEmbed:
106 """Allow embedding an IPython shell into a running program.
106 """Allow embedding an IPython shell into a running program.
107
107
108 Instances of this class are callable, with the __call__ method being an
108 Instances of this class are callable, with the __call__ method being an
109 alias to the embed() method of an InteractiveShell instance.
109 alias to the embed() method of an InteractiveShell instance.
110
110
111 Usage (see also the example-embed.py file for a running example):
111 Usage (see also the example-embed.py file for a running example):
112
112
113 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
113 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
114
114
115 - argv: list containing valid command-line options for IPython, as they
115 - argv: list containing valid command-line options for IPython, as they
116 would appear in sys.argv[1:].
116 would appear in sys.argv[1:].
117
117
118 For example, the following command-line options:
118 For example, the following command-line options:
119
119
120 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
120 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
121
121
122 would be passed in the argv list as:
122 would be passed in the argv list as:
123
123
124 ['-prompt_in1','Input <\\#>','-colors','LightBG']
124 ['-prompt_in1','Input <\\#>','-colors','LightBG']
125
125
126 - banner: string which gets printed every time the interpreter starts.
126 - banner: string which gets printed every time the interpreter starts.
127
127
128 - exit_msg: string which gets printed every time the interpreter exits.
128 - exit_msg: string which gets printed every time the interpreter exits.
129
129
130 - rc_override: a dict or Struct of configuration options such as those
130 - rc_override: a dict or Struct of configuration options such as those
131 used by IPython. These options are read from your ~/.ipython/ipythonrc
131 used by IPython. These options are read from your ~/.ipython/ipythonrc
132 file when the Shell object is created. Passing an explicit rc_override
132 file when the Shell object is created. Passing an explicit rc_override
133 dict with any options you want allows you to override those values at
133 dict with any options you want allows you to override those values at
134 creation time without having to modify the file. This way you can create
134 creation time without having to modify the file. This way you can create
135 embeddable instances configured in any way you want without editing any
135 embeddable instances configured in any way you want without editing any
136 global files (thus keeping your interactive IPython configuration
136 global files (thus keeping your interactive IPython configuration
137 unchanged).
137 unchanged).
138
138
139 Then the ipshell instance can be called anywhere inside your code:
139 Then the ipshell instance can be called anywhere inside your code:
140
140
141 ipshell(header='') -> Opens up an IPython shell.
141 ipshell(header='') -> Opens up an IPython shell.
142
142
143 - header: string printed by the IPython shell upon startup. This can let
143 - header: string printed by the IPython shell upon startup. This can let
144 you know where in your code you are when dropping into the shell. Note
144 you know where in your code you are when dropping into the shell. Note
145 that 'banner' gets prepended to all calls, so header is used for
145 that 'banner' gets prepended to all calls, so header is used for
146 location-specific information.
146 location-specific information.
147
147
148 For more details, see the __call__ method below.
148 For more details, see the __call__ method below.
149
149
150 When the IPython shell is exited with Ctrl-D, normal program execution
150 When the IPython shell is exited with Ctrl-D, normal program execution
151 resumes.
151 resumes.
152
152
153 This functionality was inspired by a posting on comp.lang.python by cmkl
153 This functionality was inspired by a posting on comp.lang.python by cmkl
154 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
154 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
155 by the IDL stop/continue commands."""
155 by the IDL stop/continue commands."""
156
156
157 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None,
157 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None,
158 user_ns=None):
158 user_ns=None):
159 """Note that argv here is a string, NOT a list."""
159 """Note that argv here is a string, NOT a list."""
160 self.set_banner(banner)
160 self.set_banner(banner)
161 self.set_exit_msg(exit_msg)
161 self.set_exit_msg(exit_msg)
162 self.set_dummy_mode(0)
162 self.set_dummy_mode(0)
163
163
164 # sys.displayhook is a global, we need to save the user's original
164 # sys.displayhook is a global, we need to save the user's original
165 # Don't rely on __displayhook__, as the user may have changed that.
165 # Don't rely on __displayhook__, as the user may have changed that.
166 self.sys_displayhook_ori = sys.displayhook
166 self.sys_displayhook_ori = sys.displayhook
167
167
168 # save readline completer status
168 # save readline completer status
169 try:
169 try:
170 #print 'Save completer',sys.ipcompleter # dbg
170 #print 'Save completer',sys.ipcompleter # dbg
171 self.sys_ipcompleter_ori = sys.ipcompleter
171 self.sys_ipcompleter_ori = sys.ipcompleter
172 except:
172 except:
173 pass # not nested with IPython
173 pass # not nested with IPython
174
174
175 self.IP = make_IPython(argv,rc_override=rc_override,
175 self.IP = make_IPython(argv,rc_override=rc_override,
176 embedded=True,
176 embedded=True,
177 user_ns=user_ns)
177 user_ns=user_ns)
178
178
179 ip = ipapi.IPApi(self.IP)
179 ip = ipapi.IPApi(self.IP)
180 ip.expose_magic("kill_embedded",kill_embedded)
180 ip.expose_magic("kill_embedded",kill_embedded)
181
181
182 # copy our own displayhook also
182 # copy our own displayhook also
183 self.sys_displayhook_embed = sys.displayhook
183 self.sys_displayhook_embed = sys.displayhook
184 # and leave the system's display hook clean
184 # and leave the system's display hook clean
185 sys.displayhook = self.sys_displayhook_ori
185 sys.displayhook = self.sys_displayhook_ori
186 # don't use the ipython crash handler so that user exceptions aren't
186 # don't use the ipython crash handler so that user exceptions aren't
187 # trapped
187 # trapped
188 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
188 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
189 mode = self.IP.rc.xmode,
189 mode = self.IP.rc.xmode,
190 call_pdb = self.IP.rc.pdb)
190 call_pdb = self.IP.rc.pdb)
191 self.restore_system_completer()
191 self.restore_system_completer()
192
192
193 def restore_system_completer(self):
193 def restore_system_completer(self):
194 """Restores the readline completer which was in place.
194 """Restores the readline completer which was in place.
195
195
196 This allows embedded IPython within IPython not to disrupt the
196 This allows embedded IPython within IPython not to disrupt the
197 parent's completion.
197 parent's completion.
198 """
198 """
199
199
200 try:
200 try:
201 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
201 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
202 sys.ipcompleter = self.sys_ipcompleter_ori
202 sys.ipcompleter = self.sys_ipcompleter_ori
203 except:
203 except:
204 pass
204 pass
205
205
206 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
206 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
207 """Activate the interactive interpreter.
207 """Activate the interactive interpreter.
208
208
209 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
209 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
210 the interpreter shell with the given local and global namespaces, and
210 the interpreter shell with the given local and global namespaces, and
211 optionally print a header string at startup.
211 optionally print a header string at startup.
212
212
213 The shell can be globally activated/deactivated using the
213 The shell can be globally activated/deactivated using the
214 set/get_dummy_mode methods. This allows you to turn off a shell used
214 set/get_dummy_mode methods. This allows you to turn off a shell used
215 for debugging globally.
215 for debugging globally.
216
216
217 However, *each* time you call the shell you can override the current
217 However, *each* time you call the shell you can override the current
218 state of dummy_mode with the optional keyword parameter 'dummy'. For
218 state of dummy_mode with the optional keyword parameter 'dummy'. For
219 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
219 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
220 can still have a specific call work by making it as IPShell(dummy=0).
220 can still have a specific call work by making it as IPShell(dummy=0).
221
221
222 The optional keyword parameter dummy controls whether the call
222 The optional keyword parameter dummy controls whether the call
223 actually does anything. """
223 actually does anything. """
224
224
225 # If the user has turned it off, go away
225 # If the user has turned it off, go away
226 if not self.IP.embedded_active:
226 if not self.IP.embedded_active:
227 return
227 return
228
228
229 # Normal exits from interactive mode set this flag, so the shell can't
229 # Normal exits from interactive mode set this flag, so the shell can't
230 # re-enter (it checks this variable at the start of interactive mode).
230 # re-enter (it checks this variable at the start of interactive mode).
231 self.IP.exit_now = False
231 self.IP.exit_now = False
232
232
233 # Allow the dummy parameter to override the global __dummy_mode
233 # Allow the dummy parameter to override the global __dummy_mode
234 if dummy or (dummy != 0 and self.__dummy_mode):
234 if dummy or (dummy != 0 and self.__dummy_mode):
235 return
235 return
236
236
237 # Set global subsystems (display,completions) to our values
237 # Set global subsystems (display,completions) to our values
238 sys.displayhook = self.sys_displayhook_embed
238 sys.displayhook = self.sys_displayhook_embed
239 if self.IP.has_readline:
239 if self.IP.has_readline:
240 self.IP.set_completer()
240 self.IP.set_completer()
241
241
242 if self.banner and header:
242 if self.banner and header:
243 format = '%s\n%s\n'
243 format = '%s\n%s\n'
244 else:
244 else:
245 format = '%s%s\n'
245 format = '%s%s\n'
246 banner = format % (self.banner,header)
246 banner = format % (self.banner,header)
247
247
248 # Call the embedding code with a stack depth of 1 so it can skip over
248 # Call the embedding code with a stack depth of 1 so it can skip over
249 # our call and get the original caller's namespaces.
249 # our call and get the original caller's namespaces.
250 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
250 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
251
251
252 if self.exit_msg:
252 if self.exit_msg:
253 print self.exit_msg
253 print self.exit_msg
254
254
255 # Restore global systems (display, completion)
255 # Restore global systems (display, completion)
256 sys.displayhook = self.sys_displayhook_ori
256 sys.displayhook = self.sys_displayhook_ori
257 self.restore_system_completer()
257 self.restore_system_completer()
258
258
259 def set_dummy_mode(self,dummy):
259 def set_dummy_mode(self,dummy):
260 """Sets the embeddable shell's dummy mode parameter.
260 """Sets the embeddable shell's dummy mode parameter.
261
261
262 set_dummy_mode(dummy): dummy = 0 or 1.
262 set_dummy_mode(dummy): dummy = 0 or 1.
263
263
264 This parameter is persistent and makes calls to the embeddable shell
264 This parameter is persistent and makes calls to the embeddable shell
265 silently return without performing any action. This allows you to
265 silently return without performing any action. This allows you to
266 globally activate or deactivate a shell you're using with a single call.
266 globally activate or deactivate a shell you're using with a single call.
267
267
268 If you need to manually"""
268 If you need to manually"""
269
269
270 if dummy not in [0,1,False,True]:
270 if dummy not in [0,1,False,True]:
271 raise ValueError,'dummy parameter must be boolean'
271 raise ValueError,'dummy parameter must be boolean'
272 self.__dummy_mode = dummy
272 self.__dummy_mode = dummy
273
273
274 def get_dummy_mode(self):
274 def get_dummy_mode(self):
275 """Return the current value of the dummy mode parameter.
275 """Return the current value of the dummy mode parameter.
276 """
276 """
277 return self.__dummy_mode
277 return self.__dummy_mode
278
278
279 def set_banner(self,banner):
279 def set_banner(self,banner):
280 """Sets the global banner.
280 """Sets the global banner.
281
281
282 This banner gets prepended to every header printed when the shell
282 This banner gets prepended to every header printed when the shell
283 instance is called."""
283 instance is called."""
284
284
285 self.banner = banner
285 self.banner = banner
286
286
287 def set_exit_msg(self,exit_msg):
287 def set_exit_msg(self,exit_msg):
288 """Sets the global exit_msg.
288 """Sets the global exit_msg.
289
289
290 This exit message gets printed upon exiting every time the embedded
290 This exit message gets printed upon exiting every time the embedded
291 shell is called. It is None by default. """
291 shell is called. It is None by default. """
292
292
293 self.exit_msg = exit_msg
293 self.exit_msg = exit_msg
294
294
295 #-----------------------------------------------------------------------------
295 #-----------------------------------------------------------------------------
296 if HAS_CTYPES:
296 if HAS_CTYPES:
297 # Add async exception support. Trick taken from:
297 # Add async exception support. Trick taken from:
298 # http://sebulba.wikispaces.com/recipe+thread2
298 # http://sebulba.wikispaces.com/recipe+thread2
299 def _async_raise(tid, exctype):
299 def _async_raise(tid, exctype):
300 """raises the exception, performs cleanup if needed"""
300 """raises the exception, performs cleanup if needed"""
301 if not inspect.isclass(exctype):
301 if not inspect.isclass(exctype):
302 raise TypeError("Only types can be raised (not instances)")
302 raise TypeError("Only types can be raised (not instances)")
303 res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid,
303 res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid,
304 ctypes.py_object(exctype))
304 ctypes.py_object(exctype))
305 if res == 0:
305 if res == 0:
306 raise ValueError("invalid thread id")
306 raise ValueError("invalid thread id")
307 elif res != 1:
307 elif res != 1:
308 # """if it returns a number greater than one, you're in trouble,
308 # """if it returns a number greater than one, you're in trouble,
309 # and you should call it again with exc=NULL to revert the effect"""
309 # and you should call it again with exc=NULL to revert the effect"""
310 ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
310 ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
311 raise SystemError("PyThreadState_SetAsyncExc failed")
311 raise SystemError("PyThreadState_SetAsyncExc failed")
312
312
313 def sigint_handler (signum,stack_frame):
313 def sigint_handler (signum,stack_frame):
314 """Sigint handler for threaded apps.
314 """Sigint handler for threaded apps.
315
315
316 This is a horrible hack to pass information about SIGINT _without_
316 This is a horrible hack to pass information about SIGINT _without_
317 using exceptions, since I haven't been able to properly manage
317 using exceptions, since I haven't been able to properly manage
318 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
318 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
319 done (or at least that's my understanding from a c.l.py thread where
319 done (or at least that's my understanding from a c.l.py thread where
320 this was discussed)."""
320 this was discussed)."""
321
321
322 global KBINT
322 global KBINT
323
323
324 if CODE_RUN:
324 if CODE_RUN:
325 _async_raise(MAIN_THREAD_ID,KeyboardInterrupt)
325 _async_raise(MAIN_THREAD_ID,KeyboardInterrupt)
326 else:
326 else:
327 KBINT = True
327 KBINT = True
328 print '\nKeyboardInterrupt - Press <Enter> to continue.',
328 print '\nKeyboardInterrupt - Press <Enter> to continue.',
329 Term.cout.flush()
329 Term.cout.flush()
330
330
331 else:
331 else:
332 def sigint_handler (signum,stack_frame):
332 def sigint_handler (signum,stack_frame):
333 """Sigint handler for threaded apps.
333 """Sigint handler for threaded apps.
334
334
335 This is a horrible hack to pass information about SIGINT _without_
335 This is a horrible hack to pass information about SIGINT _without_
336 using exceptions, since I haven't been able to properly manage
336 using exceptions, since I haven't been able to properly manage
337 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
337 cross-thread exceptions in GTK/WX. In fact, I don't think it can be
338 done (or at least that's my understanding from a c.l.py thread where
338 done (or at least that's my understanding from a c.l.py thread where
339 this was discussed)."""
339 this was discussed)."""
340
340
341 global KBINT
341 global KBINT
342
342
343 print '\nKeyboardInterrupt - Press <Enter> to continue.',
343 print '\nKeyboardInterrupt - Press <Enter> to continue.',
344 Term.cout.flush()
344 Term.cout.flush()
345 # Set global flag so that runsource can know that Ctrl-C was hit
345 # Set global flag so that runsource can know that Ctrl-C was hit
346 KBINT = True
346 KBINT = True
347
347
348
348
349 class MTInteractiveShell(InteractiveShell):
349 class MTInteractiveShell(InteractiveShell):
350 """Simple multi-threaded shell."""
350 """Simple multi-threaded shell."""
351
351
352 # Threading strategy taken from:
352 # Threading strategy taken from:
353 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
353 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
354 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
354 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
355 # from the pygtk mailing list, to avoid lockups with system calls.
355 # from the pygtk mailing list, to avoid lockups with system calls.
356
356
357 # class attribute to indicate whether the class supports threads or not.
357 # class attribute to indicate whether the class supports threads or not.
358 # Subclasses with thread support should override this as needed.
358 # Subclasses with thread support should override this as needed.
359 isthreaded = True
359 isthreaded = True
360
360
361 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
361 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
362 user_ns=None,user_global_ns=None,banner2='',**kw):
362 user_ns=None,user_global_ns=None,banner2='',**kw):
363 """Similar to the normal InteractiveShell, but with threading control"""
363 """Similar to the normal InteractiveShell, but with threading control"""
364
364
365 InteractiveShell.__init__(self,name,usage,rc,user_ns,
365 InteractiveShell.__init__(self,name,usage,rc,user_ns,
366 user_global_ns,banner2)
366 user_global_ns,banner2)
367
367
368
368
369 # A queue to hold the code to be executed.
369 # A queue to hold the code to be executed.
370 self.code_queue = Queue.Queue()
370 self.code_queue = Queue.Queue()
371
371
372 # Stuff to do at closing time
372 # Stuff to do at closing time
373 self._kill = None
373 self._kill = None
374 on_kill = kw.get('on_kill', [])
374 on_kill = kw.get('on_kill', [])
375 # Check that all things to kill are callable:
375 # Check that all things to kill are callable:
376 for t in on_kill:
376 for t in on_kill:
377 if not callable(t):
377 if not callable(t):
378 raise TypeError,'on_kill must be a list of callables'
378 raise TypeError,'on_kill must be a list of callables'
379 self.on_kill = on_kill
379 self.on_kill = on_kill
380 # thread identity of the "worker thread" (that may execute code directly)
380 # thread identity of the "worker thread" (that may execute code directly)
381 self.worker_ident = None
381 self.worker_ident = None
382
382
383 def runsource(self, source, filename="<input>", symbol="single"):
383 def runsource(self, source, filename="<input>", symbol="single"):
384 """Compile and run some source in the interpreter.
384 """Compile and run some source in the interpreter.
385
385
386 Modified version of code.py's runsource(), to handle threading issues.
386 Modified version of code.py's runsource(), to handle threading issues.
387 See the original for full docstring details."""
387 See the original for full docstring details."""
388
388
389 global KBINT
389 global KBINT
390
390
391 # If Ctrl-C was typed, we reset the flag and return right away
391 # If Ctrl-C was typed, we reset the flag and return right away
392 if KBINT:
392 if KBINT:
393 KBINT = False
393 KBINT = False
394 return False
394 return False
395
395
396 if self._kill:
396 if self._kill:
397 # can't queue new code if we are being killed
397 # can't queue new code if we are being killed
398 return True
398 return True
399
399
400 try:
400 try:
401 code = self.compile(source, filename, symbol)
401 code = self.compile(source, filename, symbol)
402 except (OverflowError, SyntaxError, ValueError):
402 except (OverflowError, SyntaxError, ValueError):
403 # Case 1
403 # Case 1
404 self.showsyntaxerror(filename)
404 self.showsyntaxerror(filename)
405 return False
405 return False
406
406
407 if code is None:
407 if code is None:
408 # Case 2
408 # Case 2
409 return True
409 return True
410
410
411 # shortcut - if we are in worker thread, or the worker thread is not running,
411 # shortcut - if we are in worker thread, or the worker thread is not running,
412 # execute directly (to allow recursion and prevent deadlock if code is run early
412 # execute directly (to allow recursion and prevent deadlock if code is run early
413 # in IPython construction)
413 # in IPython construction)
414
414
415 if (self.worker_ident is None or self.worker_ident == thread.get_ident()):
415 if (self.worker_ident is None or self.worker_ident == thread.get_ident()):
416 InteractiveShell.runcode(self,code)
416 InteractiveShell.runcode(self,code)
417 return
417 return
418
418
419 # Case 3
419 # Case 3
420 # Store code in queue, so the execution thread can handle it.
420 # Store code in queue, so the execution thread can handle it.
421
421
422 completed_ev, received_ev = threading.Event(), threading.Event()
422 completed_ev, received_ev = threading.Event(), threading.Event()
423
423
424 self.code_queue.put((code,completed_ev, received_ev))
424 self.code_queue.put((code,completed_ev, received_ev))
425 # first make sure the message was received, with timeout
425 # first make sure the message was received, with timeout
426 received_ev.wait(5)
426 received_ev.wait(5)
427 if not received_ev.isSet():
427 if not received_ev.isSet():
428 # the mainloop is dead, start executing code directly
428 # the mainloop is dead, start executing code directly
429 print "Warning: Timeout for mainloop thread exceeded"
429 print "Warning: Timeout for mainloop thread exceeded"
430 print "switching to nonthreaded mode (until mainloop wakes up again)"
430 print "switching to nonthreaded mode (until mainloop wakes up again)"
431 self.worker_ident = None
431 self.worker_ident = None
432 else:
432 else:
433 completed_ev.wait()
433 completed_ev.wait()
434 return False
434 return False
435
435
436 def runcode(self):
436 def runcode(self):
437 """Execute a code object.
437 """Execute a code object.
438
438
439 Multithreaded wrapper around IPython's runcode()."""
439 Multithreaded wrapper around IPython's runcode()."""
440
440
441 global CODE_RUN
441 global CODE_RUN
442
442
443 # we are in worker thread, stash out the id for runsource()
443 # we are in worker thread, stash out the id for runsource()
444 self.worker_ident = thread.get_ident()
444 self.worker_ident = thread.get_ident()
445
445
446 if self._kill:
446 if self._kill:
447 print >>Term.cout, 'Closing threads...',
447 print >>Term.cout, 'Closing threads...',
448 Term.cout.flush()
448 Term.cout.flush()
449 for tokill in self.on_kill:
449 for tokill in self.on_kill:
450 tokill()
450 tokill()
451 print >>Term.cout, 'Done.'
451 print >>Term.cout, 'Done.'
452 # allow kill() to return
452 # allow kill() to return
453 self._kill.set()
453 self._kill.set()
454 return True
454 return True
455
455
456 # Install sigint handler. We do it every time to ensure that if user
456 # Install sigint handler. We do it every time to ensure that if user
457 # code modifies it, we restore our own handling.
457 # code modifies it, we restore our own handling.
458 try:
458 try:
459 signal(SIGINT,sigint_handler)
459 signal(SIGINT,sigint_handler)
460 except SystemError:
460 except SystemError:
461 # This happens under Windows, which seems to have all sorts
461 # This happens under Windows, which seems to have all sorts
462 # of problems with signal handling. Oh well...
462 # of problems with signal handling. Oh well...
463 pass
463 pass
464
464
465 # Flush queue of pending code by calling the run methood of the parent
465 # Flush queue of pending code by calling the run methood of the parent
466 # class with all items which may be in the queue.
466 # class with all items which may be in the queue.
467 code_to_run = None
467 code_to_run = None
468 while 1:
468 while 1:
469 try:
469 try:
470 code_to_run, completed_ev, received_ev = self.code_queue.get_nowait()
470 code_to_run, completed_ev, received_ev = self.code_queue.get_nowait()
471 except Queue.Empty:
471 except Queue.Empty:
472 break
472 break
473 received_ev.set()
473 received_ev.set()
474
474
475 # Exceptions need to be raised differently depending on which
475 # Exceptions need to be raised differently depending on which
476 # thread is active. This convoluted try/except is only there to
476 # thread is active. This convoluted try/except is only there to
477 # protect against asynchronous exceptions, to ensure that a KBINT
477 # protect against asynchronous exceptions, to ensure that a KBINT
478 # at the wrong time doesn't deadlock everything. The global
478 # at the wrong time doesn't deadlock everything. The global
479 # CODE_TO_RUN is set to true/false as close as possible to the
479 # CODE_TO_RUN is set to true/false as close as possible to the
480 # runcode() call, so that the KBINT handler is correctly informed.
480 # runcode() call, so that the KBINT handler is correctly informed.
481 try:
481 try:
482 try:
482 try:
483 CODE_RUN = True
483 CODE_RUN = True
484 InteractiveShell.runcode(self,code_to_run)
484 InteractiveShell.runcode(self,code_to_run)
485 except KeyboardInterrupt:
485 except KeyboardInterrupt:
486 print "Keyboard interrupted in mainloop"
486 print "Keyboard interrupted in mainloop"
487 while not self.code_queue.empty():
487 while not self.code_queue.empty():
488 code, ev1,ev2 = self.code_queue.get_nowait()
488 code, ev1,ev2 = self.code_queue.get_nowait()
489 ev1.set()
489 ev1.set()
490 ev2.set()
490 ev2.set()
491 break
491 break
492 finally:
492 finally:
493 CODE_RUN = False
493 CODE_RUN = False
494 # allow runsource() return from wait
494 # allow runsource() return from wait
495 completed_ev.set()
495 completed_ev.set()
496
496
497
497
498 # This MUST return true for gtk threading to work
498 # This MUST return true for gtk threading to work
499 return True
499 return True
500
500
501 def kill(self):
501 def kill(self):
502 """Kill the thread, returning when it has been shut down."""
502 """Kill the thread, returning when it has been shut down."""
503 self._kill = threading.Event()
503 self._kill = threading.Event()
504 self._kill.wait()
504 self._kill.wait()
505
505
506 class MatplotlibShellBase:
506 class MatplotlibShellBase:
507 """Mixin class to provide the necessary modifications to regular IPython
507 """Mixin class to provide the necessary modifications to regular IPython
508 shell classes for matplotlib support.
508 shell classes for matplotlib support.
509
509
510 Given Python's MRO, this should be used as the FIRST class in the
510 Given Python's MRO, this should be used as the FIRST class in the
511 inheritance hierarchy, so that it overrides the relevant methods."""
511 inheritance hierarchy, so that it overrides the relevant methods."""
512
512
513 def _matplotlib_config(self,name,user_ns):
513 def _matplotlib_config(self,name,user_ns):
514 """Return items needed to setup the user's shell with matplotlib"""
514 """Return items needed to setup the user's shell with matplotlib"""
515
515
516 # Initialize matplotlib to interactive mode always
516 # Initialize matplotlib to interactive mode always
517 import matplotlib
517 import matplotlib
518 from matplotlib import backends
518 from matplotlib import backends
519 matplotlib.interactive(True)
519 matplotlib.interactive(True)
520
520
521 def use(arg):
521 def use(arg):
522 """IPython wrapper for matplotlib's backend switcher.
522 """IPython wrapper for matplotlib's backend switcher.
523
523
524 In interactive use, we can not allow switching to a different
524 In interactive use, we can not allow switching to a different
525 interactive backend, since thread conflicts will most likely crash
525 interactive backend, since thread conflicts will most likely crash
526 the python interpreter. This routine does a safety check first,
526 the python interpreter. This routine does a safety check first,
527 and refuses to perform a dangerous switch. It still allows
527 and refuses to perform a dangerous switch. It still allows
528 switching to non-interactive backends."""
528 switching to non-interactive backends."""
529
529
530 if arg in backends.interactive_bk and arg != self.mpl_backend:
530 if arg in backends.interactive_bk and arg != self.mpl_backend:
531 m=('invalid matplotlib backend switch.\n'
531 m=('invalid matplotlib backend switch.\n'
532 'This script attempted to switch to the interactive '
532 'This script attempted to switch to the interactive '
533 'backend: `%s`\n'
533 'backend: `%s`\n'
534 'Your current choice of interactive backend is: `%s`\n\n'
534 'Your current choice of interactive backend is: `%s`\n\n'
535 'Switching interactive matplotlib backends at runtime\n'
535 'Switching interactive matplotlib backends at runtime\n'
536 'would crash the python interpreter, '
536 'would crash the python interpreter, '
537 'and IPython has blocked it.\n\n'
537 'and IPython has blocked it.\n\n'
538 'You need to either change your choice of matplotlib backend\n'
538 'You need to either change your choice of matplotlib backend\n'
539 'by editing your .matplotlibrc file, or run this script as a \n'
539 'by editing your .matplotlibrc file, or run this script as a \n'
540 'standalone file from the command line, not using IPython.\n' %
540 'standalone file from the command line, not using IPython.\n' %
541 (arg,self.mpl_backend) )
541 (arg,self.mpl_backend) )
542 raise RuntimeError, m
542 raise RuntimeError, m
543 else:
543 else:
544 self.mpl_use(arg)
544 self.mpl_use(arg)
545 self.mpl_use._called = True
545 self.mpl_use._called = True
546
546
547 self.matplotlib = matplotlib
547 self.matplotlib = matplotlib
548 self.mpl_backend = matplotlib.rcParams['backend']
548 self.mpl_backend = matplotlib.rcParams['backend']
549
549
550 # we also need to block switching of interactive backends by use()
550 # we also need to block switching of interactive backends by use()
551 self.mpl_use = matplotlib.use
551 self.mpl_use = matplotlib.use
552 self.mpl_use._called = False
552 self.mpl_use._called = False
553 # overwrite the original matplotlib.use with our wrapper
553 # overwrite the original matplotlib.use with our wrapper
554 matplotlib.use = use
554 matplotlib.use = use
555
555
556 # This must be imported last in the matplotlib series, after
556 # This must be imported last in the matplotlib series, after
557 # backend/interactivity choices have been made
557 # backend/interactivity choices have been made
558 import matplotlib.pylab as pylab
558 import matplotlib.pylab as pylab
559 self.pylab = pylab
559 self.pylab = pylab
560
560
561 self.pylab.show._needmain = False
561 self.pylab.show._needmain = False
562 # We need to detect at runtime whether show() is called by the user.
562 # We need to detect at runtime whether show() is called by the user.
563 # For this, we wrap it into a decorator which adds a 'called' flag.
563 # For this, we wrap it into a decorator which adds a 'called' flag.
564 self.pylab.draw_if_interactive = flag_calls(self.pylab.draw_if_interactive)
564 self.pylab.draw_if_interactive = flag_calls(self.pylab.draw_if_interactive)
565
565
566 # Build a user namespace initialized with matplotlib/matlab features.
566 # Build a user namespace initialized with matplotlib/matlab features.
567 user_ns = IPython.ipapi.make_user_ns(user_ns)
567 user_ns = IPython.ipapi.make_user_ns(user_ns)
568
568
569 exec ("import matplotlib\n"
569 # Import numpy as np/pyplot as plt are conventions we're trying to
570 "import matplotlib.pylab as pylab\n") in user_ns
570 # somewhat standardize on. Making them available to users by default
571 # will greatly help this.
572 exec ("import numpy\n"
573 "import numpy as np\n"
574 "import matplotlib\n"
575 "import matplotlib.pylab as pylab\n"
576 "try:\n"
577 " import matplotlib.pyplot as plt\n"
578 "except ImportError:\n"
579 " pass\n"
580 ) in user_ns
571
581
572 # Build matplotlib info banner
582 # Build matplotlib info banner
573 b="""
583 b="""
574 Welcome to pylab, a matplotlib-based Python environment.
584 Welcome to pylab, a matplotlib-based Python environment.
575 For more information, type 'help(pylab)'.
585 For more information, type 'help(pylab)'.
576 """
586 """
577 return user_ns,b
587 return user_ns,b
578
588
579 def mplot_exec(self,fname,*where,**kw):
589 def mplot_exec(self,fname,*where,**kw):
580 """Execute a matplotlib script.
590 """Execute a matplotlib script.
581
591
582 This is a call to execfile(), but wrapped in safeties to properly
592 This is a call to execfile(), but wrapped in safeties to properly
583 handle interactive rendering and backend switching."""
593 handle interactive rendering and backend switching."""
584
594
585 #print '*** Matplotlib runner ***' # dbg
595 #print '*** Matplotlib runner ***' # dbg
586 # turn off rendering until end of script
596 # turn off rendering until end of script
587 isInteractive = self.matplotlib.rcParams['interactive']
597 isInteractive = self.matplotlib.rcParams['interactive']
588 self.matplotlib.interactive(False)
598 self.matplotlib.interactive(False)
589 self.safe_execfile(fname,*where,**kw)
599 self.safe_execfile(fname,*where,**kw)
590 self.matplotlib.interactive(isInteractive)
600 self.matplotlib.interactive(isInteractive)
591 # make rendering call now, if the user tried to do it
601 # make rendering call now, if the user tried to do it
592 if self.pylab.draw_if_interactive.called:
602 if self.pylab.draw_if_interactive.called:
593 self.pylab.draw()
603 self.pylab.draw()
594 self.pylab.draw_if_interactive.called = False
604 self.pylab.draw_if_interactive.called = False
595
605
596 # if a backend switch was performed, reverse it now
606 # if a backend switch was performed, reverse it now
597 if self.mpl_use._called:
607 if self.mpl_use._called:
598 self.matplotlib.rcParams['backend'] = self.mpl_backend
608 self.matplotlib.rcParams['backend'] = self.mpl_backend
599
609
600 def magic_run(self,parameter_s=''):
610 def magic_run(self,parameter_s=''):
601 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
611 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
602
612
603 # Fix the docstring so users see the original as well
613 # Fix the docstring so users see the original as well
604 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
614 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
605 "\n *** Modified %run for Matplotlib,"
615 "\n *** Modified %run for Matplotlib,"
606 " with proper interactive handling ***")
616 " with proper interactive handling ***")
607
617
608 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
618 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
609 # and multithreaded. Note that these are meant for internal use, the IPShell*
619 # and multithreaded. Note that these are meant for internal use, the IPShell*
610 # classes below are the ones meant for public consumption.
620 # classes below are the ones meant for public consumption.
611
621
612 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
622 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
613 """Single-threaded shell with matplotlib support."""
623 """Single-threaded shell with matplotlib support."""
614
624
615 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
625 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
616 user_ns=None,user_global_ns=None,**kw):
626 user_ns=None,user_global_ns=None,**kw):
617 user_ns,b2 = self._matplotlib_config(name,user_ns)
627 user_ns,b2 = self._matplotlib_config(name,user_ns)
618 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
628 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
619 banner2=b2,**kw)
629 banner2=b2,**kw)
620
630
621 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
631 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
622 """Multi-threaded shell with matplotlib support."""
632 """Multi-threaded shell with matplotlib support."""
623
633
624 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
634 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
625 user_ns=None,user_global_ns=None, **kw):
635 user_ns=None,user_global_ns=None, **kw):
626 user_ns,b2 = self._matplotlib_config(name,user_ns)
636 user_ns,b2 = self._matplotlib_config(name,user_ns)
627 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
637 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
628 banner2=b2,**kw)
638 banner2=b2,**kw)
629
639
630 #-----------------------------------------------------------------------------
640 #-----------------------------------------------------------------------------
631 # Utility functions for the different GUI enabled IPShell* classes.
641 # Utility functions for the different GUI enabled IPShell* classes.
632
642
633 def get_tk():
643 def get_tk():
634 """Tries to import Tkinter and returns a withdrawn Tkinter root
644 """Tries to import Tkinter and returns a withdrawn Tkinter root
635 window. If Tkinter is already imported or not available, this
645 window. If Tkinter is already imported or not available, this
636 returns None. This function calls `hijack_tk` underneath.
646 returns None. This function calls `hijack_tk` underneath.
637 """
647 """
638 if not USE_TK or sys.modules.has_key('Tkinter'):
648 if not USE_TK or sys.modules.has_key('Tkinter'):
639 return None
649 return None
640 else:
650 else:
641 try:
651 try:
642 import Tkinter
652 import Tkinter
643 except ImportError:
653 except ImportError:
644 return None
654 return None
645 else:
655 else:
646 hijack_tk()
656 hijack_tk()
647 r = Tkinter.Tk()
657 r = Tkinter.Tk()
648 r.withdraw()
658 r.withdraw()
649 return r
659 return r
650
660
651 def hijack_tk():
661 def hijack_tk():
652 """Modifies Tkinter's mainloop with a dummy so when a module calls
662 """Modifies Tkinter's mainloop with a dummy so when a module calls
653 mainloop, it does not block.
663 mainloop, it does not block.
654
664
655 """
665 """
656 def misc_mainloop(self, n=0):
666 def misc_mainloop(self, n=0):
657 pass
667 pass
658 def tkinter_mainloop(n=0):
668 def tkinter_mainloop(n=0):
659 pass
669 pass
660
670
661 import Tkinter
671 import Tkinter
662 Tkinter.Misc.mainloop = misc_mainloop
672 Tkinter.Misc.mainloop = misc_mainloop
663 Tkinter.mainloop = tkinter_mainloop
673 Tkinter.mainloop = tkinter_mainloop
664
674
665 def update_tk(tk):
675 def update_tk(tk):
666 """Updates the Tkinter event loop. This is typically called from
676 """Updates the Tkinter event loop. This is typically called from
667 the respective WX or GTK mainloops.
677 the respective WX or GTK mainloops.
668 """
678 """
669 if tk:
679 if tk:
670 tk.update()
680 tk.update()
671
681
672 def hijack_wx():
682 def hijack_wx():
673 """Modifies wxPython's MainLoop with a dummy so user code does not
683 """Modifies wxPython's MainLoop with a dummy so user code does not
674 block IPython. The hijacked mainloop function is returned.
684 block IPython. The hijacked mainloop function is returned.
675 """
685 """
676 def dummy_mainloop(*args, **kw):
686 def dummy_mainloop(*args, **kw):
677 pass
687 pass
678
688
679 try:
689 try:
680 import wx
690 import wx
681 except ImportError:
691 except ImportError:
682 # For very old versions of WX
692 # For very old versions of WX
683 import wxPython as wx
693 import wxPython as wx
684
694
685 ver = wx.__version__
695 ver = wx.__version__
686 orig_mainloop = None
696 orig_mainloop = None
687 if ver[:3] >= '2.5':
697 if ver[:3] >= '2.5':
688 import wx
698 import wx
689 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
699 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
690 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
700 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
691 else: raise AttributeError('Could not find wx core module')
701 else: raise AttributeError('Could not find wx core module')
692 orig_mainloop = core.PyApp_MainLoop
702 orig_mainloop = core.PyApp_MainLoop
693 core.PyApp_MainLoop = dummy_mainloop
703 core.PyApp_MainLoop = dummy_mainloop
694 elif ver[:3] == '2.4':
704 elif ver[:3] == '2.4':
695 orig_mainloop = wx.wxc.wxPyApp_MainLoop
705 orig_mainloop = wx.wxc.wxPyApp_MainLoop
696 wx.wxc.wxPyApp_MainLoop = dummy_mainloop
706 wx.wxc.wxPyApp_MainLoop = dummy_mainloop
697 else:
707 else:
698 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
708 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
699 return orig_mainloop
709 return orig_mainloop
700
710
701 def hijack_gtk():
711 def hijack_gtk():
702 """Modifies pyGTK's mainloop with a dummy so user code does not
712 """Modifies pyGTK's mainloop with a dummy so user code does not
703 block IPython. This function returns the original `gtk.mainloop`
713 block IPython. This function returns the original `gtk.mainloop`
704 function that has been hijacked.
714 function that has been hijacked.
705 """
715 """
706 def dummy_mainloop(*args, **kw):
716 def dummy_mainloop(*args, **kw):
707 pass
717 pass
708 import gtk
718 import gtk
709 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
719 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
710 else: orig_mainloop = gtk.mainloop
720 else: orig_mainloop = gtk.mainloop
711 gtk.mainloop = dummy_mainloop
721 gtk.mainloop = dummy_mainloop
712 gtk.main = dummy_mainloop
722 gtk.main = dummy_mainloop
713 return orig_mainloop
723 return orig_mainloop
714
724
715 def hijack_qt():
725 def hijack_qt():
716 """Modifies PyQt's mainloop with a dummy so user code does not
726 """Modifies PyQt's mainloop with a dummy so user code does not
717 block IPython. This function returns the original
727 block IPython. This function returns the original
718 `qt.qApp.exec_loop` function that has been hijacked.
728 `qt.qApp.exec_loop` function that has been hijacked.
719 """
729 """
720 def dummy_mainloop(*args, **kw):
730 def dummy_mainloop(*args, **kw):
721 pass
731 pass
722 import qt
732 import qt
723 orig_mainloop = qt.qApp.exec_loop
733 orig_mainloop = qt.qApp.exec_loop
724 qt.qApp.exec_loop = dummy_mainloop
734 qt.qApp.exec_loop = dummy_mainloop
725 qt.QApplication.exec_loop = dummy_mainloop
735 qt.QApplication.exec_loop = dummy_mainloop
726 return orig_mainloop
736 return orig_mainloop
727
737
728 def hijack_qt4():
738 def hijack_qt4():
729 """Modifies PyQt4's mainloop with a dummy so user code does not
739 """Modifies PyQt4's mainloop with a dummy so user code does not
730 block IPython. This function returns the original
740 block IPython. This function returns the original
731 `QtGui.qApp.exec_` function that has been hijacked.
741 `QtGui.qApp.exec_` function that has been hijacked.
732 """
742 """
733 def dummy_mainloop(*args, **kw):
743 def dummy_mainloop(*args, **kw):
734 pass
744 pass
735 from PyQt4 import QtGui, QtCore
745 from PyQt4 import QtGui, QtCore
736 orig_mainloop = QtGui.qApp.exec_
746 orig_mainloop = QtGui.qApp.exec_
737 QtGui.qApp.exec_ = dummy_mainloop
747 QtGui.qApp.exec_ = dummy_mainloop
738 QtGui.QApplication.exec_ = dummy_mainloop
748 QtGui.QApplication.exec_ = dummy_mainloop
739 QtCore.QCoreApplication.exec_ = dummy_mainloop
749 QtCore.QCoreApplication.exec_ = dummy_mainloop
740 return orig_mainloop
750 return orig_mainloop
741
751
742 #-----------------------------------------------------------------------------
752 #-----------------------------------------------------------------------------
743 # The IPShell* classes below are the ones meant to be run by external code as
753 # The IPShell* classes below are the ones meant to be run by external code as
744 # IPython instances. Note that unless a specific threading strategy is
754 # IPython instances. Note that unless a specific threading strategy is
745 # desired, the factory function start() below should be used instead (it
755 # desired, the factory function start() below should be used instead (it
746 # selects the proper threaded class).
756 # selects the proper threaded class).
747
757
748 class IPThread(threading.Thread):
758 class IPThread(threading.Thread):
749 def run(self):
759 def run(self):
750 self.IP.mainloop(self._banner)
760 self.IP.mainloop(self._banner)
751 self.IP.kill()
761 self.IP.kill()
752
762
753 class IPShellGTK(IPThread):
763 class IPShellGTK(IPThread):
754 """Run a gtk mainloop() in a separate thread.
764 """Run a gtk mainloop() in a separate thread.
755
765
756 Python commands can be passed to the thread where they will be executed.
766 Python commands can be passed to the thread where they will be executed.
757 This is implemented by periodically checking for passed code using a
767 This is implemented by periodically checking for passed code using a
758 GTK timeout callback."""
768 GTK timeout callback."""
759
769
760 TIMEOUT = 100 # Millisecond interval between timeouts.
770 TIMEOUT = 100 # Millisecond interval between timeouts.
761
771
762 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
772 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
763 debug=1,shell_class=MTInteractiveShell):
773 debug=1,shell_class=MTInteractiveShell):
764
774
765 import gtk
775 import gtk
766
776
767 self.gtk = gtk
777 self.gtk = gtk
768 self.gtk_mainloop = hijack_gtk()
778 self.gtk_mainloop = hijack_gtk()
769
779
770 # Allows us to use both Tk and GTK.
780 # Allows us to use both Tk and GTK.
771 self.tk = get_tk()
781 self.tk = get_tk()
772
782
773 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
783 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
774 else: mainquit = self.gtk.mainquit
784 else: mainquit = self.gtk.mainquit
775
785
776 self.IP = make_IPython(argv,user_ns=user_ns,
786 self.IP = make_IPython(argv,user_ns=user_ns,
777 user_global_ns=user_global_ns,
787 user_global_ns=user_global_ns,
778 debug=debug,
788 debug=debug,
779 shell_class=shell_class,
789 shell_class=shell_class,
780 on_kill=[mainquit])
790 on_kill=[mainquit])
781
791
782 # HACK: slot for banner in self; it will be passed to the mainloop
792 # HACK: slot for banner in self; it will be passed to the mainloop
783 # method only and .run() needs it. The actual value will be set by
793 # method only and .run() needs it. The actual value will be set by
784 # .mainloop().
794 # .mainloop().
785 self._banner = None
795 self._banner = None
786
796
787 threading.Thread.__init__(self)
797 threading.Thread.__init__(self)
788
798
789 def mainloop(self,sys_exit=0,banner=None):
799 def mainloop(self,sys_exit=0,banner=None):
790
800
791 self._banner = banner
801 self._banner = banner
792
802
793 if self.gtk.pygtk_version >= (2,4,0):
803 if self.gtk.pygtk_version >= (2,4,0):
794 import gobject
804 import gobject
795 gobject.idle_add(self.on_timer)
805 gobject.idle_add(self.on_timer)
796 else:
806 else:
797 self.gtk.idle_add(self.on_timer)
807 self.gtk.idle_add(self.on_timer)
798
808
799 if sys.platform != 'win32':
809 if sys.platform != 'win32':
800 try:
810 try:
801 if self.gtk.gtk_version[0] >= 2:
811 if self.gtk.gtk_version[0] >= 2:
802 self.gtk.gdk.threads_init()
812 self.gtk.gdk.threads_init()
803 except AttributeError:
813 except AttributeError:
804 pass
814 pass
805 except RuntimeError:
815 except RuntimeError:
806 error('Your pyGTK likely has not been compiled with '
816 error('Your pyGTK likely has not been compiled with '
807 'threading support.\n'
817 'threading support.\n'
808 'The exception printout is below.\n'
818 'The exception printout is below.\n'
809 'You can either rebuild pyGTK with threads, or '
819 'You can either rebuild pyGTK with threads, or '
810 'try using \n'
820 'try using \n'
811 'matplotlib with a different backend (like Tk or WX).\n'
821 'matplotlib with a different backend (like Tk or WX).\n'
812 'Note that matplotlib will most likely not work in its '
822 'Note that matplotlib will most likely not work in its '
813 'current state!')
823 'current state!')
814 self.IP.InteractiveTB()
824 self.IP.InteractiveTB()
815
825
816 self.start()
826 self.start()
817 self.gtk.gdk.threads_enter()
827 self.gtk.gdk.threads_enter()
818 self.gtk_mainloop()
828 self.gtk_mainloop()
819 self.gtk.gdk.threads_leave()
829 self.gtk.gdk.threads_leave()
820 self.join()
830 self.join()
821
831
822 def on_timer(self):
832 def on_timer(self):
823 """Called when GTK is idle.
833 """Called when GTK is idle.
824
834
825 Must return True always, otherwise GTK stops calling it"""
835 Must return True always, otherwise GTK stops calling it"""
826
836
827 update_tk(self.tk)
837 update_tk(self.tk)
828 self.IP.runcode()
838 self.IP.runcode()
829 time.sleep(0.01)
839 time.sleep(0.01)
830 return True
840 return True
831
841
832
842
833 class IPShellWX(IPThread):
843 class IPShellWX(IPThread):
834 """Run a wx mainloop() in a separate thread.
844 """Run a wx mainloop() in a separate thread.
835
845
836 Python commands can be passed to the thread where they will be executed.
846 Python commands can be passed to the thread where they will be executed.
837 This is implemented by periodically checking for passed code using a
847 This is implemented by periodically checking for passed code using a
838 GTK timeout callback."""
848 GTK timeout callback."""
839
849
840 TIMEOUT = 100 # Millisecond interval between timeouts.
850 TIMEOUT = 100 # Millisecond interval between timeouts.
841
851
842 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
852 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
843 debug=1,shell_class=MTInteractiveShell):
853 debug=1,shell_class=MTInteractiveShell):
844
854
845 self.IP = make_IPython(argv,user_ns=user_ns,
855 self.IP = make_IPython(argv,user_ns=user_ns,
846 user_global_ns=user_global_ns,
856 user_global_ns=user_global_ns,
847 debug=debug,
857 debug=debug,
848 shell_class=shell_class,
858 shell_class=shell_class,
849 on_kill=[self.wxexit])
859 on_kill=[self.wxexit])
850
860
851 wantedwxversion=self.IP.rc.wxversion
861 wantedwxversion=self.IP.rc.wxversion
852 if wantedwxversion!="0":
862 if wantedwxversion!="0":
853 try:
863 try:
854 import wxversion
864 import wxversion
855 except ImportError:
865 except ImportError:
856 error('The wxversion module is needed for WX version selection')
866 error('The wxversion module is needed for WX version selection')
857 else:
867 else:
858 try:
868 try:
859 wxversion.select(wantedwxversion)
869 wxversion.select(wantedwxversion)
860 except:
870 except:
861 self.IP.InteractiveTB()
871 self.IP.InteractiveTB()
862 error('Requested wxPython version %s could not be loaded' %
872 error('Requested wxPython version %s could not be loaded' %
863 wantedwxversion)
873 wantedwxversion)
864
874
865 import wx
875 import wx
866
876
867 threading.Thread.__init__(self)
877 threading.Thread.__init__(self)
868 self.wx = wx
878 self.wx = wx
869 self.wx_mainloop = hijack_wx()
879 self.wx_mainloop = hijack_wx()
870
880
871 # Allows us to use both Tk and GTK.
881 # Allows us to use both Tk and GTK.
872 self.tk = get_tk()
882 self.tk = get_tk()
873
883
874 # HACK: slot for banner in self; it will be passed to the mainloop
884 # HACK: slot for banner in self; it will be passed to the mainloop
875 # method only and .run() needs it. The actual value will be set by
885 # method only and .run() needs it. The actual value will be set by
876 # .mainloop().
886 # .mainloop().
877 self._banner = None
887 self._banner = None
878
888
879 self.app = None
889 self.app = None
880
890
881 def wxexit(self, *args):
891 def wxexit(self, *args):
882 if self.app is not None:
892 if self.app is not None:
883 self.app.agent.timer.Stop()
893 self.app.agent.timer.Stop()
884 self.app.ExitMainLoop()
894 self.app.ExitMainLoop()
885
895
886 def mainloop(self,sys_exit=0,banner=None):
896 def mainloop(self,sys_exit=0,banner=None):
887
897
888 self._banner = banner
898 self._banner = banner
889
899
890 self.start()
900 self.start()
891
901
892 class TimerAgent(self.wx.MiniFrame):
902 class TimerAgent(self.wx.MiniFrame):
893 wx = self.wx
903 wx = self.wx
894 IP = self.IP
904 IP = self.IP
895 tk = self.tk
905 tk = self.tk
896 def __init__(self, parent, interval):
906 def __init__(self, parent, interval):
897 style = self.wx.DEFAULT_FRAME_STYLE | self.wx.TINY_CAPTION_HORIZ
907 style = self.wx.DEFAULT_FRAME_STYLE | self.wx.TINY_CAPTION_HORIZ
898 self.wx.MiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
908 self.wx.MiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
899 size=(100, 100),style=style)
909 size=(100, 100),style=style)
900 self.Show(False)
910 self.Show(False)
901 self.interval = interval
911 self.interval = interval
902 self.timerId = self.wx.NewId()
912 self.timerId = self.wx.NewId()
903
913
904 def StartWork(self):
914 def StartWork(self):
905 self.timer = self.wx.Timer(self, self.timerId)
915 self.timer = self.wx.Timer(self, self.timerId)
906 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
916 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
907 self.timer.Start(self.interval)
917 self.timer.Start(self.interval)
908
918
909 def OnTimer(self, event):
919 def OnTimer(self, event):
910 update_tk(self.tk)
920 update_tk(self.tk)
911 self.IP.runcode()
921 self.IP.runcode()
912
922
913 class App(self.wx.App):
923 class App(self.wx.App):
914 wx = self.wx
924 wx = self.wx
915 TIMEOUT = self.TIMEOUT
925 TIMEOUT = self.TIMEOUT
916 def OnInit(self):
926 def OnInit(self):
917 'Create the main window and insert the custom frame'
927 'Create the main window and insert the custom frame'
918 self.agent = TimerAgent(None, self.TIMEOUT)
928 self.agent = TimerAgent(None, self.TIMEOUT)
919 self.agent.Show(False)
929 self.agent.Show(False)
920 self.agent.StartWork()
930 self.agent.StartWork()
921 return True
931 return True
922
932
923 self.app = App(redirect=False)
933 self.app = App(redirect=False)
924 self.wx_mainloop(self.app)
934 self.wx_mainloop(self.app)
925 self.join()
935 self.join()
926
936
927
937
928 class IPShellQt(IPThread):
938 class IPShellQt(IPThread):
929 """Run a Qt event loop in a separate thread.
939 """Run a Qt event loop in a separate thread.
930
940
931 Python commands can be passed to the thread where they will be executed.
941 Python commands can be passed to the thread where they will be executed.
932 This is implemented by periodically checking for passed code using a
942 This is implemented by periodically checking for passed code using a
933 Qt timer / slot."""
943 Qt timer / slot."""
934
944
935 TIMEOUT = 100 # Millisecond interval between timeouts.
945 TIMEOUT = 100 # Millisecond interval between timeouts.
936
946
937 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
947 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
938 debug=0, shell_class=MTInteractiveShell):
948 debug=0, shell_class=MTInteractiveShell):
939
949
940 import qt
950 import qt
941
951
942 self.exec_loop = hijack_qt()
952 self.exec_loop = hijack_qt()
943
953
944 # Allows us to use both Tk and QT.
954 # Allows us to use both Tk and QT.
945 self.tk = get_tk()
955 self.tk = get_tk()
946
956
947 self.IP = make_IPython(argv,
957 self.IP = make_IPython(argv,
948 user_ns=user_ns,
958 user_ns=user_ns,
949 user_global_ns=user_global_ns,
959 user_global_ns=user_global_ns,
950 debug=debug,
960 debug=debug,
951 shell_class=shell_class,
961 shell_class=shell_class,
952 on_kill=[qt.qApp.exit])
962 on_kill=[qt.qApp.exit])
953
963
954 # HACK: slot for banner in self; it will be passed to the mainloop
964 # HACK: slot for banner in self; it will be passed to the mainloop
955 # method only and .run() needs it. The actual value will be set by
965 # method only and .run() needs it. The actual value will be set by
956 # .mainloop().
966 # .mainloop().
957 self._banner = None
967 self._banner = None
958
968
959 threading.Thread.__init__(self)
969 threading.Thread.__init__(self)
960
970
961 def mainloop(self, sys_exit=0, banner=None):
971 def mainloop(self, sys_exit=0, banner=None):
962
972
963 import qt
973 import qt
964
974
965 self._banner = banner
975 self._banner = banner
966
976
967 if qt.QApplication.startingUp():
977 if qt.QApplication.startingUp():
968 a = qt.QApplication(sys.argv)
978 a = qt.QApplication(sys.argv)
969
979
970 self.timer = qt.QTimer()
980 self.timer = qt.QTimer()
971 qt.QObject.connect(self.timer,
981 qt.QObject.connect(self.timer,
972 qt.SIGNAL('timeout()'),
982 qt.SIGNAL('timeout()'),
973 self.on_timer)
983 self.on_timer)
974
984
975 self.start()
985 self.start()
976 self.timer.start(self.TIMEOUT, True)
986 self.timer.start(self.TIMEOUT, True)
977 while True:
987 while True:
978 if self.IP._kill: break
988 if self.IP._kill: break
979 self.exec_loop()
989 self.exec_loop()
980 self.join()
990 self.join()
981
991
982 def on_timer(self):
992 def on_timer(self):
983 update_tk(self.tk)
993 update_tk(self.tk)
984 result = self.IP.runcode()
994 result = self.IP.runcode()
985 self.timer.start(self.TIMEOUT, True)
995 self.timer.start(self.TIMEOUT, True)
986 return result
996 return result
987
997
988
998
989 class IPShellQt4(IPThread):
999 class IPShellQt4(IPThread):
990 """Run a Qt event loop in a separate thread.
1000 """Run a Qt event loop in a separate thread.
991
1001
992 Python commands can be passed to the thread where they will be executed.
1002 Python commands can be passed to the thread where they will be executed.
993 This is implemented by periodically checking for passed code using a
1003 This is implemented by periodically checking for passed code using a
994 Qt timer / slot."""
1004 Qt timer / slot."""
995
1005
996 TIMEOUT = 100 # Millisecond interval between timeouts.
1006 TIMEOUT = 100 # Millisecond interval between timeouts.
997
1007
998 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
1008 def __init__(self, argv=None, user_ns=None, user_global_ns=None,
999 debug=0, shell_class=MTInteractiveShell):
1009 debug=0, shell_class=MTInteractiveShell):
1000
1010
1001 from PyQt4 import QtCore, QtGui
1011 from PyQt4 import QtCore, QtGui
1002
1012
1003 try:
1013 try:
1004 # present in PyQt4-4.2.1 or later
1014 # present in PyQt4-4.2.1 or later
1005 QtCore.pyqtRemoveInputHook()
1015 QtCore.pyqtRemoveInputHook()
1006 except AttributeError:
1016 except AttributeError:
1007 pass
1017 pass
1008
1018
1009 if QtCore.PYQT_VERSION_STR == '4.3':
1019 if QtCore.PYQT_VERSION_STR == '4.3':
1010 warn('''PyQt4 version 4.3 detected.
1020 warn('''PyQt4 version 4.3 detected.
1011 If you experience repeated threading warnings, please update PyQt4.
1021 If you experience repeated threading warnings, please update PyQt4.
1012 ''')
1022 ''')
1013
1023
1014 self.exec_ = hijack_qt4()
1024 self.exec_ = hijack_qt4()
1015
1025
1016 # Allows us to use both Tk and QT.
1026 # Allows us to use both Tk and QT.
1017 self.tk = get_tk()
1027 self.tk = get_tk()
1018
1028
1019 self.IP = make_IPython(argv,
1029 self.IP = make_IPython(argv,
1020 user_ns=user_ns,
1030 user_ns=user_ns,
1021 user_global_ns=user_global_ns,
1031 user_global_ns=user_global_ns,
1022 debug=debug,
1032 debug=debug,
1023 shell_class=shell_class,
1033 shell_class=shell_class,
1024 on_kill=[QtGui.qApp.exit])
1034 on_kill=[QtGui.qApp.exit])
1025
1035
1026 # HACK: slot for banner in self; it will be passed to the mainloop
1036 # HACK: slot for banner in self; it will be passed to the mainloop
1027 # method only and .run() needs it. The actual value will be set by
1037 # method only and .run() needs it. The actual value will be set by
1028 # .mainloop().
1038 # .mainloop().
1029 self._banner = None
1039 self._banner = None
1030
1040
1031 threading.Thread.__init__(self)
1041 threading.Thread.__init__(self)
1032
1042
1033 def mainloop(self, sys_exit=0, banner=None):
1043 def mainloop(self, sys_exit=0, banner=None):
1034
1044
1035 from PyQt4 import QtCore, QtGui
1045 from PyQt4 import QtCore, QtGui
1036
1046
1037 self._banner = banner
1047 self._banner = banner
1038
1048
1039 if QtGui.QApplication.startingUp():
1049 if QtGui.QApplication.startingUp():
1040 a = QtGui.QApplication(sys.argv)
1050 a = QtGui.QApplication(sys.argv)
1041
1051
1042 self.timer = QtCore.QTimer()
1052 self.timer = QtCore.QTimer()
1043 QtCore.QObject.connect(self.timer,
1053 QtCore.QObject.connect(self.timer,
1044 QtCore.SIGNAL('timeout()'),
1054 QtCore.SIGNAL('timeout()'),
1045 self.on_timer)
1055 self.on_timer)
1046
1056
1047 self.start()
1057 self.start()
1048 self.timer.start(self.TIMEOUT)
1058 self.timer.start(self.TIMEOUT)
1049 while True:
1059 while True:
1050 if self.IP._kill: break
1060 if self.IP._kill: break
1051 self.exec_()
1061 self.exec_()
1052 self.join()
1062 self.join()
1053
1063
1054 def on_timer(self):
1064 def on_timer(self):
1055 update_tk(self.tk)
1065 update_tk(self.tk)
1056 result = self.IP.runcode()
1066 result = self.IP.runcode()
1057 self.timer.start(self.TIMEOUT)
1067 self.timer.start(self.TIMEOUT)
1058 return result
1068 return result
1059
1069
1060
1070
1061 # A set of matplotlib public IPython shell classes, for single-threaded (Tk*
1071 # A set of matplotlib public IPython shell classes, for single-threaded (Tk*
1062 # and FLTK*) and multithreaded (GTK*, WX* and Qt*) backends to use.
1072 # and FLTK*) and multithreaded (GTK*, WX* and Qt*) backends to use.
1063 def _load_pylab(user_ns):
1073 def _load_pylab(user_ns):
1064 """Allow users to disable pulling all of pylab into the top-level
1074 """Allow users to disable pulling all of pylab into the top-level
1065 namespace.
1075 namespace.
1066
1076
1067 This little utility must be called AFTER the actual ipython instance is
1077 This little utility must be called AFTER the actual ipython instance is
1068 running, since only then will the options file have been fully parsed."""
1078 running, since only then will the options file have been fully parsed."""
1069
1079
1070 ip = IPython.ipapi.get()
1080 ip = IPython.ipapi.get()
1071 if ip.options.pylab_import_all:
1081 if ip.options.pylab_import_all:
1072 ip.ex("from matplotlib.pylab import *")
1082 ip.ex("from matplotlib.pylab import *")
1073 ip.IP.user_config_ns.update(ip.user_ns)
1083 ip.IP.user_config_ns.update(ip.user_ns)
1074
1084
1075
1085
1076 class IPShellMatplotlib(IPShell):
1086 class IPShellMatplotlib(IPShell):
1077 """Subclass IPShell with MatplotlibShell as the internal shell.
1087 """Subclass IPShell with MatplotlibShell as the internal shell.
1078
1088
1079 Single-threaded class, meant for the Tk* and FLTK* backends.
1089 Single-threaded class, meant for the Tk* and FLTK* backends.
1080
1090
1081 Having this on a separate class simplifies the external driver code."""
1091 Having this on a separate class simplifies the external driver code."""
1082
1092
1083 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1093 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1084 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
1094 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
1085 shell_class=MatplotlibShell)
1095 shell_class=MatplotlibShell)
1086 _load_pylab(self.IP.user_ns)
1096 _load_pylab(self.IP.user_ns)
1087
1097
1088 class IPShellMatplotlibGTK(IPShellGTK):
1098 class IPShellMatplotlibGTK(IPShellGTK):
1089 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
1099 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
1090
1100
1091 Multi-threaded class, meant for the GTK* backends."""
1101 Multi-threaded class, meant for the GTK* backends."""
1092
1102
1093 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1103 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1094 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
1104 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
1095 shell_class=MatplotlibMTShell)
1105 shell_class=MatplotlibMTShell)
1096 _load_pylab(self.IP.user_ns)
1106 _load_pylab(self.IP.user_ns)
1097
1107
1098 class IPShellMatplotlibWX(IPShellWX):
1108 class IPShellMatplotlibWX(IPShellWX):
1099 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
1109 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
1100
1110
1101 Multi-threaded class, meant for the WX* backends."""
1111 Multi-threaded class, meant for the WX* backends."""
1102
1112
1103 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1113 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1104 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
1114 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
1105 shell_class=MatplotlibMTShell)
1115 shell_class=MatplotlibMTShell)
1106 _load_pylab(self.IP.user_ns)
1116 _load_pylab(self.IP.user_ns)
1107
1117
1108 class IPShellMatplotlibQt(IPShellQt):
1118 class IPShellMatplotlibQt(IPShellQt):
1109 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
1119 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
1110
1120
1111 Multi-threaded class, meant for the Qt* backends."""
1121 Multi-threaded class, meant for the Qt* backends."""
1112
1122
1113 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1123 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1114 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
1124 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
1115 shell_class=MatplotlibMTShell)
1125 shell_class=MatplotlibMTShell)
1116 _load_pylab(self.IP.user_ns)
1126 _load_pylab(self.IP.user_ns)
1117
1127
1118 class IPShellMatplotlibQt4(IPShellQt4):
1128 class IPShellMatplotlibQt4(IPShellQt4):
1119 """Subclass IPShellQt4 with MatplotlibMTShell as the internal shell.
1129 """Subclass IPShellQt4 with MatplotlibMTShell as the internal shell.
1120
1130
1121 Multi-threaded class, meant for the Qt4* backends."""
1131 Multi-threaded class, meant for the Qt4* backends."""
1122
1132
1123 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1133 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
1124 IPShellQt4.__init__(self,argv,user_ns,user_global_ns,debug,
1134 IPShellQt4.__init__(self,argv,user_ns,user_global_ns,debug,
1125 shell_class=MatplotlibMTShell)
1135 shell_class=MatplotlibMTShell)
1126 _load_pylab(self.IP.user_ns)
1136 _load_pylab(self.IP.user_ns)
1127
1137
1128 #-----------------------------------------------------------------------------
1138 #-----------------------------------------------------------------------------
1129 # Factory functions to actually start the proper thread-aware shell
1139 # Factory functions to actually start the proper thread-aware shell
1130
1140
1131 def _select_shell(argv):
1141 def _select_shell(argv):
1132 """Select a shell from the given argv vector.
1142 """Select a shell from the given argv vector.
1133
1143
1134 This function implements the threading selection policy, allowing runtime
1144 This function implements the threading selection policy, allowing runtime
1135 control of the threading mode, both for general users and for matplotlib.
1145 control of the threading mode, both for general users and for matplotlib.
1136
1146
1137 Return:
1147 Return:
1138 Shell class to be instantiated for runtime operation.
1148 Shell class to be instantiated for runtime operation.
1139 """
1149 """
1140
1150
1141 global USE_TK
1151 global USE_TK
1142
1152
1143 mpl_shell = {'gthread' : IPShellMatplotlibGTK,
1153 mpl_shell = {'gthread' : IPShellMatplotlibGTK,
1144 'wthread' : IPShellMatplotlibWX,
1154 'wthread' : IPShellMatplotlibWX,
1145 'qthread' : IPShellMatplotlibQt,
1155 'qthread' : IPShellMatplotlibQt,
1146 'q4thread' : IPShellMatplotlibQt4,
1156 'q4thread' : IPShellMatplotlibQt4,
1147 'tkthread' : IPShellMatplotlib, # Tk is built-in
1157 'tkthread' : IPShellMatplotlib, # Tk is built-in
1148 }
1158 }
1149
1159
1150 th_shell = {'gthread' : IPShellGTK,
1160 th_shell = {'gthread' : IPShellGTK,
1151 'wthread' : IPShellWX,
1161 'wthread' : IPShellWX,
1152 'qthread' : IPShellQt,
1162 'qthread' : IPShellQt,
1153 'q4thread' : IPShellQt4,
1163 'q4thread' : IPShellQt4,
1154 'tkthread' : IPShell, # Tk is built-in
1164 'tkthread' : IPShell, # Tk is built-in
1155 }
1165 }
1156
1166
1157 backends = {'gthread' : 'GTKAgg',
1167 backends = {'gthread' : 'GTKAgg',
1158 'wthread' : 'WXAgg',
1168 'wthread' : 'WXAgg',
1159 'qthread' : 'QtAgg',
1169 'qthread' : 'QtAgg',
1160 'q4thread' :'Qt4Agg',
1170 'q4thread' :'Qt4Agg',
1161 'tkthread' :'TkAgg',
1171 'tkthread' :'TkAgg',
1162 }
1172 }
1163
1173
1164 all_opts = set(['tk','pylab','gthread','qthread','q4thread','wthread',
1174 all_opts = set(['tk','pylab','gthread','qthread','q4thread','wthread',
1165 'tkthread'])
1175 'tkthread'])
1166 user_opts = set([s.replace('-','') for s in argv[:3]])
1176 user_opts = set([s.replace('-','') for s in argv[:3]])
1167 special_opts = user_opts & all_opts
1177 special_opts = user_opts & all_opts
1168
1178
1169 if 'tk' in special_opts:
1179 if 'tk' in special_opts:
1170 USE_TK = True
1180 USE_TK = True
1171 special_opts.remove('tk')
1181 special_opts.remove('tk')
1172
1182
1173 if 'pylab' in special_opts:
1183 if 'pylab' in special_opts:
1174
1184
1175 try:
1185 try:
1176 import matplotlib
1186 import matplotlib
1177 except ImportError:
1187 except ImportError:
1178 error('matplotlib could NOT be imported! Starting normal IPython.')
1188 error('matplotlib could NOT be imported! Starting normal IPython.')
1179 return IPShell
1189 return IPShell
1180
1190
1181 special_opts.remove('pylab')
1191 special_opts.remove('pylab')
1182 # If there's any option left, it means the user wants to force the
1192 # If there's any option left, it means the user wants to force the
1183 # threading backend, else it's auto-selected from the rc file
1193 # threading backend, else it's auto-selected from the rc file
1184 if special_opts:
1194 if special_opts:
1185 th_mode = special_opts.pop()
1195 th_mode = special_opts.pop()
1186 matplotlib.rcParams['backend'] = backends[th_mode]
1196 matplotlib.rcParams['backend'] = backends[th_mode]
1187 else:
1197 else:
1188 backend = matplotlib.rcParams['backend']
1198 backend = matplotlib.rcParams['backend']
1189 if backend.startswith('GTK'):
1199 if backend.startswith('GTK'):
1190 th_mode = 'gthread'
1200 th_mode = 'gthread'
1191 elif backend.startswith('WX'):
1201 elif backend.startswith('WX'):
1192 th_mode = 'wthread'
1202 th_mode = 'wthread'
1193 elif backend.startswith('Qt4'):
1203 elif backend.startswith('Qt4'):
1194 th_mode = 'q4thread'
1204 th_mode = 'q4thread'
1195 elif backend.startswith('Qt'):
1205 elif backend.startswith('Qt'):
1196 th_mode = 'qthread'
1206 th_mode = 'qthread'
1197 else:
1207 else:
1198 # Any other backend, use plain Tk
1208 # Any other backend, use plain Tk
1199 th_mode = 'tkthread'
1209 th_mode = 'tkthread'
1200
1210
1201 return mpl_shell[th_mode]
1211 return mpl_shell[th_mode]
1202 else:
1212 else:
1203 # No pylab requested, just plain threads
1213 # No pylab requested, just plain threads
1204 try:
1214 try:
1205 th_mode = special_opts.pop()
1215 th_mode = special_opts.pop()
1206 except KeyError:
1216 except KeyError:
1207 th_mode = 'tkthread'
1217 th_mode = 'tkthread'
1208 return th_shell[th_mode]
1218 return th_shell[th_mode]
1209
1219
1210
1220
1211 # This is the one which should be called by external code.
1221 # This is the one which should be called by external code.
1212 def start(user_ns = None):
1222 def start(user_ns = None):
1213 """Return a running shell instance, dealing with threading options.
1223 """Return a running shell instance, dealing with threading options.
1214
1224
1215 This is a factory function which will instantiate the proper IPython shell
1225 This is a factory function which will instantiate the proper IPython shell
1216 based on the user's threading choice. Such a selector is needed because
1226 based on the user's threading choice. Such a selector is needed because
1217 different GUI toolkits require different thread handling details."""
1227 different GUI toolkits require different thread handling details."""
1218
1228
1219 shell = _select_shell(sys.argv)
1229 shell = _select_shell(sys.argv)
1220 return shell(user_ns = user_ns)
1230 return shell(user_ns = user_ns)
1221
1231
1222 # Some aliases for backwards compatibility
1232 # Some aliases for backwards compatibility
1223 IPythonShell = IPShell
1233 IPythonShell = IPShell
1224 IPythonShellEmbed = IPShellEmbed
1234 IPythonShellEmbed = IPShellEmbed
1225 #************************ End of file <Shell.py> ***************************
1235 #************************ End of file <Shell.py> ***************************
@@ -1,7654 +1,7660 b''
1 2008-06-02 Fernando Perez <Fernando.Perez@berkeley.edu>
2
3 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): add
4 numpy/np/pyplot/plt imports according to new conventions we're
5 trying to standardize on. This only affects the -pylab mode.
6
1 2008-05-31 *** Released version 0.8.4
7 2008-05-31 *** Released version 0.8.4
2
8
3 2008-05-31 Fernando Perez <Fernando.Perez@berkeley.edu>
9 2008-05-31 Fernando Perez <Fernando.Perez@berkeley.edu>
4
10
5 * IPython/ipmaker.py (make_IPython): The -twisted option is fully
11 * IPython/ipmaker.py (make_IPython): The -twisted option is fully
6 disabled.
12 disabled.
7
13
8 * IPython/Shell.py (_select_shell): completely disable -twisted.
14 * IPython/Shell.py (_select_shell): completely disable -twisted.
9 This code is of dubious quality and normal users should not
15 This code is of dubious quality and normal users should not
10 encounter it until we can clarify things further, even under
16 encounter it until we can clarify things further, even under
11 win32. Since we need a quick emergency 0.8.4 release, it is now
17 win32. Since we need a quick emergency 0.8.4 release, it is now
12 disabled completely. Users who want to run it can use the
18 disabled completely. Users who want to run it can use the
13 following command (it's easy to put it in an alias or script):
19 following command (it's easy to put it in an alias or script):
14
20
15 python -c"from IPython import twshell;twshell.IPShellTwisted().mainloop()"
21 python -c"from IPython import twshell;twshell.IPShellTwisted().mainloop()"
16
22
17 2008-05-30 Ville Vainio <vivainio@gmail.com>
23 2008-05-30 Ville Vainio <vivainio@gmail.com>
18
24
19 * shell.py: disable -twisted on non-win32 platforms.
25 * shell.py: disable -twisted on non-win32 platforms.
20 import sets module on python 2.3.
26 import sets module on python 2.3.
21
27
22 * ipy_profile_sh.py: disable ipy_signals. Now, ipython
28 * ipy_profile_sh.py: disable ipy_signals. Now, ipython
23 is verified to work with python 2.3
29 is verified to work with python 2.3
24
30
25 * Release.py: update version to 0.8.4 for quick point fix
31 * Release.py: update version to 0.8.4 for quick point fix
26
32
27 2008-05-28 *** Released version 0.8.3
33 2008-05-28 *** Released version 0.8.3
28
34
29 2008-05-28 Fernando Perez <Fernando.Perez@berkeley.edu>
35 2008-05-28 Fernando Perez <Fernando.Perez@berkeley.edu>
30
36
31 * ../win32_manual_post_install.py (run): Fix the windows installer
37 * ../win32_manual_post_install.py (run): Fix the windows installer
32 so the links to the docs are correct.
38 so the links to the docs are correct.
33
39
34 * IPython/ultraTB.py: flush stderr after writing to it to fix
40 * IPython/ultraTB.py: flush stderr after writing to it to fix
35 problems with exception traceback ordering in some platforms.
41 problems with exception traceback ordering in some platforms.
36 Thanks to a report/fix by Jie Tang <jietang86-AT-gmail.com>.
42 Thanks to a report/fix by Jie Tang <jietang86-AT-gmail.com>.
37
43
38 * IPython/Magic.py (magic_cpaste): add stripping of continuation
44 * IPython/Magic.py (magic_cpaste): add stripping of continuation
39 prompts, feature requested by Stefan vdW.
45 prompts, feature requested by Stefan vdW.
40
46
41 * ../setup.py: updates to build and release tools in preparation
47 * ../setup.py: updates to build and release tools in preparation
42 for 0.8.3 release.
48 for 0.8.3 release.
43
49
44 2008-05-27 Ville Vainio <vivainio@gmail.com>
50 2008-05-27 Ville Vainio <vivainio@gmail.com>
45
51
46 * iplib.py, ipmaker.py: survive lack of doctest and site._Helper
52 * iplib.py, ipmaker.py: survive lack of doctest and site._Helper
47 for minimal environments (e.g. Maemo sdk python)
53 for minimal environments (e.g. Maemo sdk python)
48
54
49 * Magic.py: cpaste strips whitespace before >>> (allow pasting
55 * Magic.py: cpaste strips whitespace before >>> (allow pasting
50 doctests)
56 doctests)
51
57
52 * ipy_completers.py: cd completer now does recursive path expand
58 * ipy_completers.py: cd completer now does recursive path expand
53 (old behaviour is buggy on some readline versions)
59 (old behaviour is buggy on some readline versions)
54
60
55 2008-05-14 Ville Vainio <vivainio@gmail.com>
61 2008-05-14 Ville Vainio <vivainio@gmail.com>
56
62
57 * Extensions/ipy_greedycompleter.py:
63 * Extensions/ipy_greedycompleter.py:
58 New extension that enables a bit more "relaxed" tab
64 New extension that enables a bit more "relaxed" tab
59 completer that evaluates code without safety checks
65 completer that evaluates code without safety checks
60 (i.e. there can be side effects like function calls)
66 (i.e. there can be side effects like function calls)
61
67
62 2008-04-20 Ville Vainio <vivainio@gmail.com>
68 2008-04-20 Ville Vainio <vivainio@gmail.com>
63
69
64 * Extensions/ipy_lookfor.py: add %lookfor magic command
70 * Extensions/ipy_lookfor.py: add %lookfor magic command
65 (search docstrings for words) by Pauli Virtanen. Close #245.
71 (search docstrings for words) by Pauli Virtanen. Close #245.
66
72
67 * Extension/ipy_jot.py: %jot and %read magics, analogous
73 * Extension/ipy_jot.py: %jot and %read magics, analogous
68 to %store but you can specify some notes. Not read
74 to %store but you can specify some notes. Not read
69 in automatically on startup, you need %read.
75 in automatically on startup, you need %read.
70 Contributed by Yichun Wei.
76 Contributed by Yichun Wei.
71
77
72 2008-04-18 Fernando Perez <Fernando.Perez@berkeley.edu>
78 2008-04-18 Fernando Perez <Fernando.Perez@berkeley.edu>
73
79
74 * IPython/genutils.py (page): apply workaround to curses bug that
80 * IPython/genutils.py (page): apply workaround to curses bug that
75 can leave terminal corrupted after a call to initscr().
81 can leave terminal corrupted after a call to initscr().
76
82
77 2008-04-15 Ville Vainio <vivainio@gmail.com>
83 2008-04-15 Ville Vainio <vivainio@gmail.com>
78
84
79 * genutils.py: SList.grep supports 'field' argument
85 * genutils.py: SList.grep supports 'field' argument
80
86
81 * ipy_completers.py: module completer looks inside
87 * ipy_completers.py: module completer looks inside
82 .egg zip files (patch by mc). Close #196.
88 .egg zip files (patch by mc). Close #196.
83
89
84 2008-04-09 Ville Vainio <vivainio@gmail.com>
90 2008-04-09 Ville Vainio <vivainio@gmail.com>
85
91
86 * deep_reload.py: do not crash on from __future__ import
92 * deep_reload.py: do not crash on from __future__ import
87 absolute_import. Close #244.
93 absolute_import. Close #244.
88
94
89 2008-04-02 Ville Vainio <vivainio@gmail.com>
95 2008-04-02 Ville Vainio <vivainio@gmail.com>
90
96
91 * ipy_winpdb.py: New extension for winpdb integration. %wdb
97 * ipy_winpdb.py: New extension for winpdb integration. %wdb
92 test.py is winpdb equivalent of %run -d test.py. winpdb is a
98 test.py is winpdb equivalent of %run -d test.py. winpdb is a
93 crossplatform remote GUI debugger based on wxpython.
99 crossplatform remote GUI debugger based on wxpython.
94
100
95 2008-03-29 Ville Vainio <vivainio@gmail.com>
101 2008-03-29 Ville Vainio <vivainio@gmail.com>
96
102
97 * ipython.rst, do_sphinx.py: New documentation base, based on
103 * ipython.rst, do_sphinx.py: New documentation base, based on
98 reStucturedText and Sphinx (html/pdf generation). The old Lyx
104 reStucturedText and Sphinx (html/pdf generation). The old Lyx
99 based documentation will not be updated anymore.
105 based documentation will not be updated anymore.
100
106
101 * jobctrl.py: Use shell in Popen for 'start' command (in windows).
107 * jobctrl.py: Use shell in Popen for 'start' command (in windows).
102
108
103 2008-03-24 Ville Vainio <vivainio@gmail.com>
109 2008-03-24 Ville Vainio <vivainio@gmail.com>
104
110
105 * ipython.rst, do_sphinx.py: New documentation base, based on
111 * ipython.rst, do_sphinx.py: New documentation base, based on
106 reStucturedText and Sphinx (html/pdf generation). The old Lyx
112 reStucturedText and Sphinx (html/pdf generation). The old Lyx
107 based documentation will not be updated anymore.
113 based documentation will not be updated anymore.
108
114
109 ipython.rst has up to date documentation on matters that were not
115 ipython.rst has up to date documentation on matters that were not
110 documented at all, and it also removes various
116 documented at all, and it also removes various
111 misdocumented/deprecated features.
117 misdocumented/deprecated features.
112
118
113 2008-03-22 Ville Vainio <vivainio@gmail.com>
119 2008-03-22 Ville Vainio <vivainio@gmail.com>
114
120
115 * Shell.py: Merge mtexp branch:
121 * Shell.py: Merge mtexp branch:
116 https://code.launchpad.net/~ipython/ipython/mtexp
122 https://code.launchpad.net/~ipython/ipython/mtexp
117
123
118 Privides simpler and more robust MTInteractiveShell that won't
124 Privides simpler and more robust MTInteractiveShell that won't
119 deadlock, even when the worker thread (GUI) stops doing runcode()
125 deadlock, even when the worker thread (GUI) stops doing runcode()
120 regularly. r71.
126 regularly. r71.
121
127
122 2008-03-20 Ville Vainio <vivainio@gmail.com>
128 2008-03-20 Ville Vainio <vivainio@gmail.com>
123
129
124 * twshell.py: New shell that runs IPython code in Twisted reactor.
130 * twshell.py: New shell that runs IPython code in Twisted reactor.
125 Launch by doing ipython -twisted. r67.
131 Launch by doing ipython -twisted. r67.
126
132
127 2008-03-19 Ville Vainio <vivainio@gmail.com>
133 2008-03-19 Ville Vainio <vivainio@gmail.com>
128
134
129 * Magic.py: %rehashx works correctly when shadowed system commands
135 * Magic.py: %rehashx works correctly when shadowed system commands
130 have upper case characters (e.g. Print.exe). r64.
136 have upper case characters (e.g. Print.exe). r64.
131
137
132 * ipy_bzr.py, ipy_app_completers.py: new bzr completer that also
138 * ipy_bzr.py, ipy_app_completers.py: new bzr completer that also
133 knows options to commands, based on bzrtools. Uses bzrlib
139 knows options to commands, based on bzrtools. Uses bzrlib
134 directly. r66.
140 directly. r66.
135
141
136 2008-03-16 Ville Vainio <vivainio@gmail.com>
142 2008-03-16 Ville Vainio <vivainio@gmail.com>
137
143
138 * make_tarball.py: Fixed for bzr.
144 * make_tarball.py: Fixed for bzr.
139
145
140 * ipapi.py: Better _ip.runlines() script cleanup. r56,r79.
146 * ipapi.py: Better _ip.runlines() script cleanup. r56,r79.
141
147
142 * ipy_vimserver.py, ipy.vim: New extension for vim server mode,
148 * ipy_vimserver.py, ipy.vim: New extension for vim server mode,
143 by Erich Heine.
149 by Erich Heine.
144
150
145 2008-03-12 Ville Vainio <vivainio@gmail.com>
151 2008-03-12 Ville Vainio <vivainio@gmail.com>
146
152
147 * ipmaker.py: Force (reload?) import of ipy_user_conf and
153 * ipmaker.py: Force (reload?) import of ipy_user_conf and
148 ipy_profile_foo, so that embedded instances can be relaunched and
154 ipy_profile_foo, so that embedded instances can be relaunched and
149 configuration is still done. r50
155 configuration is still done. r50
150
156
151 * ipapi.py, test_embed.py: Allow specifying shell class in
157 * ipapi.py, test_embed.py: Allow specifying shell class in
152 launch_new_instance & make_new instance. Use this in
158 launch_new_instance & make_new instance. Use this in
153 test_embed.py. r51.
159 test_embed.py. r51.
154
160
155 test_embed.py is also a good and simple demo of embedding IPython.
161 test_embed.py is also a good and simple demo of embedding IPython.
156
162
157
163
158 2008-03-10 Ville Vainio <vivainio@gmail.com>
164 2008-03-10 Ville Vainio <vivainio@gmail.com>
159
165
160 * tool/update_revnum.py: Change to bzr revisioning scheme in
166 * tool/update_revnum.py: Change to bzr revisioning scheme in
161 revision numbers.
167 revision numbers.
162
168
163 * Shell.py: Threading improvements:
169 * Shell.py: Threading improvements:
164
170
165 In multithreaded shells, do not hang on macros and o.autoexec
171 In multithreaded shells, do not hang on macros and o.autoexec
166 commands (or anything executed with _ip.runlines()) anymore. Allow
172 commands (or anything executed with _ip.runlines()) anymore. Allow
167 recursive execution of IPython code in
173 recursive execution of IPython code in
168 MTInteractiveShell.runsource by checking if we are already in
174 MTInteractiveShell.runsource by checking if we are already in
169 worker thread, and execute code directly if we are. r48.
175 worker thread, and execute code directly if we are. r48.
170
176
171 MTInteractiveShell.runsource: execute code directly if worker
177 MTInteractiveShell.runsource: execute code directly if worker
172 thread is not running yet (this is the case in config files). r49.
178 thread is not running yet (this is the case in config files). r49.
173
179
174 2008-03-09 Ville Vainio <vivainio@gmail.com>
180 2008-03-09 Ville Vainio <vivainio@gmail.com>
175
181
176 * ipy_profile_sh.py: You can now use $LA or LA() to refer to last
182 * ipy_profile_sh.py: You can now use $LA or LA() to refer to last
177 argument of previous command in sh profile. Similar to bash '!$'.
183 argument of previous command in sh profile. Similar to bash '!$'.
178 LA(3) or $LA(3) stands for last argument of input history command
184 LA(3) or $LA(3) stands for last argument of input history command
179 3.
185 3.
180
186
181 * Shell.py: -pylab names don't clutter %whos listing.
187 * Shell.py: -pylab names don't clutter %whos listing.
182
188
183 2008-03-07 Ville Vainio <vivainio@gmail.com>
189 2008-03-07 Ville Vainio <vivainio@gmail.com>
184
190
185 * ipy_autoreload.py: new extension (by Pauli Virtanen) for
191 * ipy_autoreload.py: new extension (by Pauli Virtanen) for
186 autoreloading modules; try %autoreload and %aimport. Close #154.
192 autoreloading modules; try %autoreload and %aimport. Close #154.
187 Uses the new pre_runcode_hook.
193 Uses the new pre_runcode_hook.
188
194
189 2008-02-24 Ville Vainio <vivainio@gmail.com>
195 2008-02-24 Ville Vainio <vivainio@gmail.com>
190
196
191 * platutils_posix.py: freeze_term_title works
197 * platutils_posix.py: freeze_term_title works
192
198
193 2008-02-21 Ville Vainio <vivainio@gmail.com>
199 2008-02-21 Ville Vainio <vivainio@gmail.com>
194
200
195 * Magic.py: %quickref does not crash with empty docstring
201 * Magic.py: %quickref does not crash with empty docstring
196
202
197 2008-02-20 Ville Vainio <vivainio@gmail.com>
203 2008-02-20 Ville Vainio <vivainio@gmail.com>
198
204
199 * completer.py: do not treat [](){} as protectable chars anymore,
205 * completer.py: do not treat [](){} as protectable chars anymore,
200 close #233.
206 close #233.
201
207
202 * completer.py: do not treat [](){} as protectable chars anymore
208 * completer.py: do not treat [](){} as protectable chars anymore
203
209
204 * magic.py, test_cpaste.py: Allow different prefix for pasting
210 * magic.py, test_cpaste.py: Allow different prefix for pasting
205 from email
211 from email
206
212
207 2008-02-17 Ville Vainio <vivainio@gmail.com>
213 2008-02-17 Ville Vainio <vivainio@gmail.com>
208
214
209 * Switched over to Launchpad/bzr as primary VCS.
215 * Switched over to Launchpad/bzr as primary VCS.
210
216
211 2008-02-14 Ville Vainio <vivainio@gmail.com>
217 2008-02-14 Ville Vainio <vivainio@gmail.com>
212
218
213 * ipapi.py: _ip.runlines() is now much more liberal about
219 * ipapi.py: _ip.runlines() is now much more liberal about
214 indentation - it cleans up the scripts it gets
220 indentation - it cleans up the scripts it gets
215
221
216 2008-02-14 Ville Vainio <vivainio@gmail.com>
222 2008-02-14 Ville Vainio <vivainio@gmail.com>
217
223
218 * Extensions/ipy_leo.py: created 'ILeo' IPython-Leo bridge.
224 * Extensions/ipy_leo.py: created 'ILeo' IPython-Leo bridge.
219 Changes to it (later on) are too numerous to list in ChangeLog
225 Changes to it (later on) are too numerous to list in ChangeLog
220 until it stabilizes
226 until it stabilizes
221
227
222 2008-02-07 Darren Dale <darren.dale@cornell.edu>
228 2008-02-07 Darren Dale <darren.dale@cornell.edu>
223
229
224 * IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating
230 * IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating
225 an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve
231 an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve
226 interaction in the interpreter (like Tkinter does), but it seems to
232 interaction in the interpreter (like Tkinter does), but it seems to
227 partially interfere with the IPython implementation and exec_()
233 partially interfere with the IPython implementation and exec_()
228 still seems to block. So we disable the PyQt implementation and
234 still seems to block. So we disable the PyQt implementation and
229 stick with the IPython one for now.
235 stick with the IPython one for now.
230
236
231 2008-02-02 Walter Doerwald <walter@livinglogic.de>
237 2008-02-02 Walter Doerwald <walter@livinglogic.de>
232
238
233 * ipipe.py: A new ipipe table has been added: ialias produces all
239 * ipipe.py: A new ipipe table has been added: ialias produces all
234 entries from IPython's alias table.
240 entries from IPython's alias table.
235
241
236 2008-02-01 Fernando Perez <Fernando.Perez@colorado.edu>
242 2008-02-01 Fernando Perez <Fernando.Perez@colorado.edu>
237
243
238 * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
244 * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
239 of KBINT in threaded shells. After code provided by Marc in #212.
245 of KBINT in threaded shells. After code provided by Marc in #212.
240
246
241 2008-01-30 Fernando Perez <Fernando.Perez@colorado.edu>
247 2008-01-30 Fernando Perez <Fernando.Perez@colorado.edu>
242
248
243 * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
249 * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
244 that could occur due to a race condition in threaded shells.
250 that could occur due to a race condition in threaded shells.
245 Thanks to code provided by Marc, as #210.
251 Thanks to code provided by Marc, as #210.
246
252
247 2008-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
253 2008-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
248
254
249 * IPython/Magic.py (magic_doctest_mode): respect the user's
255 * IPython/Magic.py (magic_doctest_mode): respect the user's
250 settings for input separators rather than overriding them. After
256 settings for input separators rather than overriding them. After
251 a report by Jeff Kowalczyk <jtk-AT-yahoo.com>
257 a report by Jeff Kowalczyk <jtk-AT-yahoo.com>
252
258
253 * IPython/history.py (magic_history): Add support for declaring an
259 * IPython/history.py (magic_history): Add support for declaring an
254 output file directly from the history command.
260 output file directly from the history command.
255
261
256 2008-01-21 Walter Doerwald <walter@livinglogic.de>
262 2008-01-21 Walter Doerwald <walter@livinglogic.de>
257
263
258 * ipipe.py: Register ipipe's displayhooks via the generic function
264 * ipipe.py: Register ipipe's displayhooks via the generic function
259 generics.result_display() instead of using ipapi.set_hook().
265 generics.result_display() instead of using ipapi.set_hook().
260
266
261 2008-01-19 Walter Doerwald <walter@livinglogic.de>
267 2008-01-19 Walter Doerwald <walter@livinglogic.de>
262
268
263 * ibrowse.py, igrid.py, ipipe.py:
269 * ibrowse.py, igrid.py, ipipe.py:
264 The input object can now be passed to the constructor of the display classes.
270 The input object can now be passed to the constructor of the display classes.
265 This makes it possible to use them with objects that implement __or__.
271 This makes it possible to use them with objects that implement __or__.
266 Use this constructor in the displayhook instead of piping.
272 Use this constructor in the displayhook instead of piping.
267
273
268 * ipipe.py: Importing astyle.py is done as late as possible to
274 * ipipe.py: Importing astyle.py is done as late as possible to
269 avoid problems with circular imports.
275 avoid problems with circular imports.
270
276
271 2008-01-19 Ville Vainio <vivainio@gmail.com>
277 2008-01-19 Ville Vainio <vivainio@gmail.com>
272
278
273 * hooks.py, iplib.py: Added 'shell_hook' to customize how
279 * hooks.py, iplib.py: Added 'shell_hook' to customize how
274 IPython calls shell.
280 IPython calls shell.
275
281
276 * hooks.py, iplib.py: Added 'show_in_pager' hook to specify
282 * hooks.py, iplib.py: Added 'show_in_pager' hook to specify
277 how IPython pages text (%page, %pycat, %pdoc etc.)
283 how IPython pages text (%page, %pycat, %pdoc etc.)
278
284
279 * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
285 * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
280 and '%kill' to kill hanging processes that won't obey ctrl+C.
286 and '%kill' to kill hanging processes that won't obey ctrl+C.
281
287
282 2008-01-16 Ville Vainio <vivainio@gmail.com>
288 2008-01-16 Ville Vainio <vivainio@gmail.com>
283
289
284 * ipy_completers.py: pyw extension support for %run completer.
290 * ipy_completers.py: pyw extension support for %run completer.
285
291
286 2008-01-11 Ville Vainio <vivainio@gmail.com>
292 2008-01-11 Ville Vainio <vivainio@gmail.com>
287
293
288 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
294 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
289 of ipython commands to be run when IPython has started up
295 of ipython commands to be run when IPython has started up
290 (just before running the scripts and -c arg on command line).
296 (just before running the scripts and -c arg on command line).
291
297
292 * ipy_user_conf.py: Added an example on how to change term
298 * ipy_user_conf.py: Added an example on how to change term
293 colors in config file (through using autoexec).
299 colors in config file (through using autoexec).
294
300
295 * completer.py, test_completer.py: Ability to specify custom
301 * completer.py, test_completer.py: Ability to specify custom
296 get_endidx to replace readline.get_endidx. For emacs users.
302 get_endidx to replace readline.get_endidx. For emacs users.
297
303
298 2008-01-10 Ville Vainio <vivainio@gmail.com>
304 2008-01-10 Ville Vainio <vivainio@gmail.com>
299
305
300 * Prompts.py (set_p_str): do not crash on illegal prompt strings
306 * Prompts.py (set_p_str): do not crash on illegal prompt strings
301
307
302 2008-01-08 Ville Vainio <vivainio@gmail.com>
308 2008-01-08 Ville Vainio <vivainio@gmail.com>
303
309
304 * '%macro -r' (raw mode) is now default in sh profile.
310 * '%macro -r' (raw mode) is now default in sh profile.
305
311
306 2007-12-31 Ville Vainio <vivainio@gmail.com>
312 2007-12-31 Ville Vainio <vivainio@gmail.com>
307
313
308 * completer.py: custom completer matching is now case sensitive
314 * completer.py: custom completer matching is now case sensitive
309 (#207).
315 (#207).
310
316
311 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
317 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
312 an attempt to prevent occasional crashes.
318 an attempt to prevent occasional crashes.
313
319
314 * CrashHandler.py: Crash log dump now asks user to press enter
320 * CrashHandler.py: Crash log dump now asks user to press enter
315 before exiting.
321 before exiting.
316
322
317 * Store _ip in user_ns instead of __builtin__, enabling safer
323 * Store _ip in user_ns instead of __builtin__, enabling safer
318 coexistence of multiple IPython instances in the same python
324 coexistence of multiple IPython instances in the same python
319 interpreter (#197).
325 interpreter (#197).
320
326
321 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
327 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
322 switch to enable pydb in post-mortem debugging and %run -d.
328 switch to enable pydb in post-mortem debugging and %run -d.
323
329
324 2007-12-28 Ville Vainio <vivainio@gmail.com>
330 2007-12-28 Ville Vainio <vivainio@gmail.com>
325
331
326 * ipy_server.py: TCP socket server for "remote control" of an IPython
332 * ipy_server.py: TCP socket server for "remote control" of an IPython
327 instance.
333 instance.
328
334
329 * Debugger.py: Change to PSF license
335 * Debugger.py: Change to PSF license
330
336
331 * simplegeneric.py: Add license & author notes.
337 * simplegeneric.py: Add license & author notes.
332
338
333 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
339 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
334 to navigate file system with a custom completer. Run
340 to navigate file system with a custom completer. Run
335 ipy_fsops.test_pathobj() to play with it.
341 ipy_fsops.test_pathobj() to play with it.
336
342
337 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
343 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
338
344
339 * IPython/dtutils.py: Add utilities for interactively running
345 * IPython/dtutils.py: Add utilities for interactively running
340 doctests. Still needs work to more easily handle the namespace of
346 doctests. Still needs work to more easily handle the namespace of
341 the package one may be working on, but the basics are in place.
347 the package one may be working on, but the basics are in place.
342
348
343 2007-12-27 Ville Vainio <vivainio@gmail.com>
349 2007-12-27 Ville Vainio <vivainio@gmail.com>
344
350
345 * ipy_completers.py: Applied arno's patch to get proper list of
351 * ipy_completers.py: Applied arno's patch to get proper list of
346 packages in import completer. Closes #196.
352 packages in import completer. Closes #196.
347
353
348 2007-12-20 Ville Vainio <vivainio@gmail.com>
354 2007-12-20 Ville Vainio <vivainio@gmail.com>
349
355
350 * completer.py, generics.py(complete_object): Allow
356 * completer.py, generics.py(complete_object): Allow
351 custom complers based on python objects via simplegeneric.
357 custom complers based on python objects via simplegeneric.
352 See generics.py / my_demo_complete_object
358 See generics.py / my_demo_complete_object
353
359
354 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
360 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
355
361
356 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
362 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
357 behavior to prompt objects, useful for display hooks to adjust
363 behavior to prompt objects, useful for display hooks to adjust
358 themselves depending on whether prompts will be there or not.
364 themselves depending on whether prompts will be there or not.
359
365
360 2007-12-13 Ville Vainio <vivainio@gmail.com>
366 2007-12-13 Ville Vainio <vivainio@gmail.com>
361
367
362 * iplib.py(raw_input): unix readline does not allow unicode in
368 * iplib.py(raw_input): unix readline does not allow unicode in
363 history, encode to normal string. After patch by Tiago.
369 history, encode to normal string. After patch by Tiago.
364 Close #201
370 Close #201
365
371
366 2007-12-12 Ville Vainio <vivainio@gmail.com>
372 2007-12-12 Ville Vainio <vivainio@gmail.com>
367
373
368 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
374 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
369 current directory.
375 current directory.
370
376
371 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
377 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
372
378
373 * IPython/Shell.py (_select_shell): add support for controlling
379 * IPython/Shell.py (_select_shell): add support for controlling
374 the pylab threading mode directly at the command line, without
380 the pylab threading mode directly at the command line, without
375 having to modify MPL config files. Added unit tests for this
381 having to modify MPL config files. Added unit tests for this
376 feature, though manual/docs update is still pending, will do later.
382 feature, though manual/docs update is still pending, will do later.
377
383
378 2007-12-11 Ville Vainio <vivainio@gmail.com>
384 2007-12-11 Ville Vainio <vivainio@gmail.com>
379
385
380 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
386 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
381 use in scripts)
387 use in scripts)
382
388
383 2007-12-07 Ville Vainio <vivainio@gmail.com>
389 2007-12-07 Ville Vainio <vivainio@gmail.com>
384
390
385 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
391 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
386 anymore (to \#) - even if it is a comment char that is implicitly
392 anymore (to \#) - even if it is a comment char that is implicitly
387 escaped in some unix shells in interactive mode, it is ok to leave
393 escaped in some unix shells in interactive mode, it is ok to leave
388 it in IPython as such.
394 it in IPython as such.
389
395
390
396
391 2007-12-01 Robert Kern <robert.kern@gmail.com>
397 2007-12-01 Robert Kern <robert.kern@gmail.com>
392
398
393 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
399 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
394 inspect.findsource(). It can now find source lines inside zipped
400 inspect.findsource(). It can now find source lines inside zipped
395 packages.
401 packages.
396
402
397 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
403 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
398 in the frame's namespace before trusting the filename in the code object
404 in the frame's namespace before trusting the filename in the code object
399 which created the frame.
405 which created the frame.
400
406
401 2007-11-29 *** Released version 0.8.2
407 2007-11-29 *** Released version 0.8.2
402
408
403 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
409 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
404
410
405 * IPython/Logger.py (Logger.logstop): add a proper logstop()
411 * IPython/Logger.py (Logger.logstop): add a proper logstop()
406 method to fully stop the logger, along with a corresponding
412 method to fully stop the logger, along with a corresponding
407 %logstop magic for interactive use.
413 %logstop magic for interactive use.
408
414
409 * IPython/Extensions/ipy_host_completers.py: added new host
415 * IPython/Extensions/ipy_host_completers.py: added new host
410 completers functionality, contributed by Gael Pasgrimaud
416 completers functionality, contributed by Gael Pasgrimaud
411 <gawel-AT-afpy.org>.
417 <gawel-AT-afpy.org>.
412
418
413 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
419 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
414
420
415 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
421 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
416 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
422 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
417 options handling. Unicode fix in %whos (committed a while ago)
423 options handling. Unicode fix in %whos (committed a while ago)
418 was also contributed by Paul.
424 was also contributed by Paul.
419
425
420 2007-11-23 Darren Dale <darren.dale@cornell.edu>
426 2007-11-23 Darren Dale <darren.dale@cornell.edu>
421 * ipy_traits_completer.py: let traits_completer respect the user's
427 * ipy_traits_completer.py: let traits_completer respect the user's
422 readline_omit__names setting.
428 readline_omit__names setting.
423
429
424 2007-11-08 Ville Vainio <vivainio@gmail.com>
430 2007-11-08 Ville Vainio <vivainio@gmail.com>
425
431
426 * ipy_completers.py (import completer): assume 'xml' module exists.
432 * ipy_completers.py (import completer): assume 'xml' module exists.
427 Do not add every module twice anymore. Closes #196.
433 Do not add every module twice anymore. Closes #196.
428
434
429 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
435 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
430 completer that uses apt-cache to search for existing packages.
436 completer that uses apt-cache to search for existing packages.
431
437
432 2007-11-06 Ville Vainio <vivainio@gmail.com>
438 2007-11-06 Ville Vainio <vivainio@gmail.com>
433
439
434 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
440 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
435 true. Closes #194.
441 true. Closes #194.
436
442
437 2007-11-01 Brian Granger <ellisonbg@gmail.com>
443 2007-11-01 Brian Granger <ellisonbg@gmail.com>
438
444
439 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
445 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
440 working with OS X 10.5 libedit implementation of readline.
446 working with OS X 10.5 libedit implementation of readline.
441
447
442 2007-10-24 Ville Vainio <vivainio@gmail.com>
448 2007-10-24 Ville Vainio <vivainio@gmail.com>
443
449
444 * iplib.py(user_setup): To route around buggy installations where
450 * iplib.py(user_setup): To route around buggy installations where
445 UserConfig is not available, create a minimal _ipython.
451 UserConfig is not available, create a minimal _ipython.
446
452
447 * iplib.py: Unicode fixes from Jorgen.
453 * iplib.py: Unicode fixes from Jorgen.
448
454
449 * genutils.py: Slist now has new method 'fields()' for extraction of
455 * genutils.py: Slist now has new method 'fields()' for extraction of
450 whitespace-separated fields from line-oriented data.
456 whitespace-separated fields from line-oriented data.
451
457
452 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
458 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
453
459
454 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
460 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
455 when querying objects with no __class__ attribute (such as
461 when querying objects with no __class__ attribute (such as
456 f2py-generated modules).
462 f2py-generated modules).
457
463
458 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
464 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
459
465
460 * IPython/Magic.py (magic_time): track compilation time and report
466 * IPython/Magic.py (magic_time): track compilation time and report
461 it if longer than 0.1s (fix done to %time and %timeit). After a
467 it if longer than 0.1s (fix done to %time and %timeit). After a
462 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
468 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
463
469
464 2007-09-18 Ville Vainio <vivainio@gmail.com>
470 2007-09-18 Ville Vainio <vivainio@gmail.com>
465
471
466 * genutils.py(make_quoted_expr): Do not use Itpl, it does
472 * genutils.py(make_quoted_expr): Do not use Itpl, it does
467 not support unicode at the moment. Fixes (many) magic calls with
473 not support unicode at the moment. Fixes (many) magic calls with
468 special characters.
474 special characters.
469
475
470 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
476 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
471
477
472 * IPython/genutils.py (doctest_reload): expose the doctest
478 * IPython/genutils.py (doctest_reload): expose the doctest
473 reloader to the user so that people can easily reset doctest while
479 reloader to the user so that people can easily reset doctest while
474 using it interactively. Fixes a problem reported by Jorgen.
480 using it interactively. Fixes a problem reported by Jorgen.
475
481
476 * IPython/iplib.py (InteractiveShell.__init__): protect the
482 * IPython/iplib.py (InteractiveShell.__init__): protect the
477 FakeModule instances used for __main__ in %run calls from
483 FakeModule instances used for __main__ in %run calls from
478 deletion, so that user code defined in them isn't left with
484 deletion, so that user code defined in them isn't left with
479 dangling references due to the Python module deletion machinery.
485 dangling references due to the Python module deletion machinery.
480 This should fix the problems reported by Darren.
486 This should fix the problems reported by Darren.
481
487
482 2007-09-10 Darren Dale <dd55@cornell.edu>
488 2007-09-10 Darren Dale <dd55@cornell.edu>
483
489
484 * Cleanup of IPShellQt and IPShellQt4
490 * Cleanup of IPShellQt and IPShellQt4
485
491
486 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
492 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
487
493
488 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
494 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
489 doctest support.
495 doctest support.
490
496
491 * IPython/iplib.py (safe_execfile): minor docstring improvements.
497 * IPython/iplib.py (safe_execfile): minor docstring improvements.
492
498
493 2007-09-08 Ville Vainio <vivainio@gmail.com>
499 2007-09-08 Ville Vainio <vivainio@gmail.com>
494
500
495 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
501 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
496 directory, not the target directory.
502 directory, not the target directory.
497
503
498 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
504 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
499 exception that won't print the tracebacks. Switched many magics to
505 exception that won't print the tracebacks. Switched many magics to
500 raise them on error situations, also GetoptError is not printed
506 raise them on error situations, also GetoptError is not printed
501 anymore.
507 anymore.
502
508
503 2007-09-07 Ville Vainio <vivainio@gmail.com>
509 2007-09-07 Ville Vainio <vivainio@gmail.com>
504
510
505 * iplib.py: do not auto-alias "dir", it screws up other dir auto
511 * iplib.py: do not auto-alias "dir", it screws up other dir auto
506 aliases.
512 aliases.
507
513
508 * genutils.py: SList.grep() implemented.
514 * genutils.py: SList.grep() implemented.
509
515
510 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
516 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
511 for easy "out of the box" setup of several common editors, so that
517 for easy "out of the box" setup of several common editors, so that
512 e.g. '%edit os.path.isfile' will jump to the correct line
518 e.g. '%edit os.path.isfile' will jump to the correct line
513 automatically. Contributions for command lines of your favourite
519 automatically. Contributions for command lines of your favourite
514 editors welcome.
520 editors welcome.
515
521
516 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
522 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
517
523
518 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
524 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
519 preventing source display in certain cases. In reality I think
525 preventing source display in certain cases. In reality I think
520 the problem is with Ubuntu's Python build, but this change works
526 the problem is with Ubuntu's Python build, but this change works
521 around the issue in some cases (not in all, unfortunately). I'd
527 around the issue in some cases (not in all, unfortunately). I'd
522 filed a Python bug on this with more details, but in the change of
528 filed a Python bug on this with more details, but in the change of
523 bug trackers it seems to have been lost.
529 bug trackers it seems to have been lost.
524
530
525 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
531 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
526 not the same, it's not self-documenting, doesn't allow range
532 not the same, it's not self-documenting, doesn't allow range
527 selection, and sorts alphabetically instead of numerically.
533 selection, and sorts alphabetically instead of numerically.
528 (magic_r): restore %r. No, "up + enter. One char magic" is not
534 (magic_r): restore %r. No, "up + enter. One char magic" is not
529 the same thing, since %r takes parameters to allow fast retrieval
535 the same thing, since %r takes parameters to allow fast retrieval
530 of old commands. I've received emails from users who use this a
536 of old commands. I've received emails from users who use this a
531 LOT, so it stays.
537 LOT, so it stays.
532 (magic_automagic): restore %automagic. "use _ip.option.automagic"
538 (magic_automagic): restore %automagic. "use _ip.option.automagic"
533 is not a valid replacement b/c it doesn't provide an complete
539 is not a valid replacement b/c it doesn't provide an complete
534 explanation (which the automagic docstring does).
540 explanation (which the automagic docstring does).
535 (magic_autocall): restore %autocall, with improved docstring.
541 (magic_autocall): restore %autocall, with improved docstring.
536 Same argument as for others, "use _ip.options.autocall" is not a
542 Same argument as for others, "use _ip.options.autocall" is not a
537 valid replacement.
543 valid replacement.
538 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
544 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
539 tutorials and online docs.
545 tutorials and online docs.
540
546
541 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
547 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
542
548
543 * IPython/usage.py (quick_reference): mention magics in quickref,
549 * IPython/usage.py (quick_reference): mention magics in quickref,
544 modified main banner to mention %quickref.
550 modified main banner to mention %quickref.
545
551
546 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
552 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
547
553
548 2007-09-06 Ville Vainio <vivainio@gmail.com>
554 2007-09-06 Ville Vainio <vivainio@gmail.com>
549
555
550 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
556 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
551 Callable aliases now pass the _ip as first arg. This breaks
557 Callable aliases now pass the _ip as first arg. This breaks
552 compatibility with earlier 0.8.2.svn series! (though they should
558 compatibility with earlier 0.8.2.svn series! (though they should
553 not have been in use yet outside these few extensions)
559 not have been in use yet outside these few extensions)
554
560
555 2007-09-05 Ville Vainio <vivainio@gmail.com>
561 2007-09-05 Ville Vainio <vivainio@gmail.com>
556
562
557 * external/mglob.py: expand('dirname') => ['dirname'], instead
563 * external/mglob.py: expand('dirname') => ['dirname'], instead
558 of ['dirname/foo','dirname/bar', ...].
564 of ['dirname/foo','dirname/bar', ...].
559
565
560 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
566 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
561 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
567 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
562 is useful for others as well).
568 is useful for others as well).
563
569
564 * iplib.py: on callable aliases (as opposed to old style aliases),
570 * iplib.py: on callable aliases (as opposed to old style aliases),
565 do var_expand() immediately, and use make_quoted_expr instead
571 do var_expand() immediately, and use make_quoted_expr instead
566 of hardcoded r"""
572 of hardcoded r"""
567
573
568 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
574 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
569 if not available load ipy_fsops.py for cp, mv, etc. replacements
575 if not available load ipy_fsops.py for cp, mv, etc. replacements
570
576
571 * OInspect.py, ipy_which.py: improve %which and obj? for callable
577 * OInspect.py, ipy_which.py: improve %which and obj? for callable
572 aliases
578 aliases
573
579
574 2007-09-04 Ville Vainio <vivainio@gmail.com>
580 2007-09-04 Ville Vainio <vivainio@gmail.com>
575
581
576 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
582 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
577 Relicensed under BSD with the authors approval.
583 Relicensed under BSD with the authors approval.
578
584
579 * ipmaker.py, usage.py: Remove %magic from default banner, improve
585 * ipmaker.py, usage.py: Remove %magic from default banner, improve
580 %quickref
586 %quickref
581
587
582 2007-09-03 Ville Vainio <vivainio@gmail.com>
588 2007-09-03 Ville Vainio <vivainio@gmail.com>
583
589
584 * Magic.py: %time now passes expression through prefilter,
590 * Magic.py: %time now passes expression through prefilter,
585 allowing IPython syntax.
591 allowing IPython syntax.
586
592
587 2007-09-01 Ville Vainio <vivainio@gmail.com>
593 2007-09-01 Ville Vainio <vivainio@gmail.com>
588
594
589 * ipmaker.py: Always show full traceback when newstyle config fails
595 * ipmaker.py: Always show full traceback when newstyle config fails
590
596
591 2007-08-27 Ville Vainio <vivainio@gmail.com>
597 2007-08-27 Ville Vainio <vivainio@gmail.com>
592
598
593 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
599 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
594
600
595 2007-08-26 Ville Vainio <vivainio@gmail.com>
601 2007-08-26 Ville Vainio <vivainio@gmail.com>
596
602
597 * ipmaker.py: Command line args have the highest priority again
603 * ipmaker.py: Command line args have the highest priority again
598
604
599 * iplib.py, ipmaker.py: -i command line argument now behaves as in
605 * iplib.py, ipmaker.py: -i command line argument now behaves as in
600 normal python, i.e. leaves the IPython session running after -c
606 normal python, i.e. leaves the IPython session running after -c
601 command or running a batch file from command line.
607 command or running a batch file from command line.
602
608
603 2007-08-22 Ville Vainio <vivainio@gmail.com>
609 2007-08-22 Ville Vainio <vivainio@gmail.com>
604
610
605 * iplib.py: no extra empty (last) line in raw hist w/ multiline
611 * iplib.py: no extra empty (last) line in raw hist w/ multiline
606 statements
612 statements
607
613
608 * logger.py: Fix bug where blank lines in history were not
614 * logger.py: Fix bug where blank lines in history were not
609 added until AFTER adding the current line; translated and raw
615 added until AFTER adding the current line; translated and raw
610 history should finally be in sync with prompt now.
616 history should finally be in sync with prompt now.
611
617
612 * ipy_completers.py: quick_completer now makes it easy to create
618 * ipy_completers.py: quick_completer now makes it easy to create
613 trivial custom completers
619 trivial custom completers
614
620
615 * clearcmd.py: shadow history compression & erasing, fixed input hist
621 * clearcmd.py: shadow history compression & erasing, fixed input hist
616 clearing.
622 clearing.
617
623
618 * envpersist.py, history.py: %env (sh profile only), %hist completers
624 * envpersist.py, history.py: %env (sh profile only), %hist completers
619
625
620 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
626 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
621 term title now include the drive letter, and always use / instead of
627 term title now include the drive letter, and always use / instead of
622 os.sep (as per recommended approach for win32 ipython in general).
628 os.sep (as per recommended approach for win32 ipython in general).
623
629
624 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
630 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
625 plain python scripts from ipykit command line by running
631 plain python scripts from ipykit command line by running
626 "py myscript.py", even w/o installed python.
632 "py myscript.py", even w/o installed python.
627
633
628 2007-08-21 Ville Vainio <vivainio@gmail.com>
634 2007-08-21 Ville Vainio <vivainio@gmail.com>
629
635
630 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
636 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
631 (for backwards compatibility)
637 (for backwards compatibility)
632
638
633 * history.py: switch back to %hist -t from %hist -r as default.
639 * history.py: switch back to %hist -t from %hist -r as default.
634 At least until raw history is fixed for good.
640 At least until raw history is fixed for good.
635
641
636 2007-08-20 Ville Vainio <vivainio@gmail.com>
642 2007-08-20 Ville Vainio <vivainio@gmail.com>
637
643
638 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
644 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
639 locate alias redeclarations etc. Also, avoid handling
645 locate alias redeclarations etc. Also, avoid handling
640 _ip.IP.alias_table directly, prefer using _ip.defalias.
646 _ip.IP.alias_table directly, prefer using _ip.defalias.
641
647
642
648
643 2007-08-15 Ville Vainio <vivainio@gmail.com>
649 2007-08-15 Ville Vainio <vivainio@gmail.com>
644
650
645 * prefilter.py: ! is now always served first
651 * prefilter.py: ! is now always served first
646
652
647 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
653 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
648
654
649 * IPython/iplib.py (safe_execfile): fix the SystemExit
655 * IPython/iplib.py (safe_execfile): fix the SystemExit
650 auto-suppression code to work in Python2.4 (the internal structure
656 auto-suppression code to work in Python2.4 (the internal structure
651 of that exception changed and I'd only tested the code with 2.5).
657 of that exception changed and I'd only tested the code with 2.5).
652 Bug reported by a SciPy attendee.
658 Bug reported by a SciPy attendee.
653
659
654 2007-08-13 Ville Vainio <vivainio@gmail.com>
660 2007-08-13 Ville Vainio <vivainio@gmail.com>
655
661
656 * prefilter.py: reverted !c:/bin/foo fix, made % in
662 * prefilter.py: reverted !c:/bin/foo fix, made % in
657 multiline specials work again
663 multiline specials work again
658
664
659 2007-08-13 Ville Vainio <vivainio@gmail.com>
665 2007-08-13 Ville Vainio <vivainio@gmail.com>
660
666
661 * prefilter.py: Take more care to special-case !, so that
667 * prefilter.py: Take more care to special-case !, so that
662 !c:/bin/foo.exe works.
668 !c:/bin/foo.exe works.
663
669
664 * setup.py: if we are building eggs, strip all docs and
670 * setup.py: if we are building eggs, strip all docs and
665 examples (it doesn't make sense to bytecompile examples,
671 examples (it doesn't make sense to bytecompile examples,
666 and docs would be in an awkward place anyway).
672 and docs would be in an awkward place anyway).
667
673
668 * Ryan Krauss' patch fixes start menu shortcuts when IPython
674 * Ryan Krauss' patch fixes start menu shortcuts when IPython
669 is installed into a directory that has spaces in the name.
675 is installed into a directory that has spaces in the name.
670
676
671 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
677 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
672
678
673 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
679 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
674 doctest profile and %doctest_mode, so they actually generate the
680 doctest profile and %doctest_mode, so they actually generate the
675 blank lines needed by doctest to separate individual tests.
681 blank lines needed by doctest to separate individual tests.
676
682
677 * IPython/iplib.py (safe_execfile): modify so that running code
683 * IPython/iplib.py (safe_execfile): modify so that running code
678 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
684 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
679 doesn't get a printed traceback. Any other value in sys.exit(),
685 doesn't get a printed traceback. Any other value in sys.exit(),
680 including the empty call, still generates a traceback. This
686 including the empty call, still generates a traceback. This
681 enables use of %run without having to pass '-e' for codes that
687 enables use of %run without having to pass '-e' for codes that
682 correctly set the exit status flag.
688 correctly set the exit status flag.
683
689
684 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
690 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
685
691
686 * IPython/iplib.py (InteractiveShell.post_config_initialization):
692 * IPython/iplib.py (InteractiveShell.post_config_initialization):
687 fix problems with doctests failing when run inside IPython due to
693 fix problems with doctests failing when run inside IPython due to
688 IPython's modifications of sys.displayhook.
694 IPython's modifications of sys.displayhook.
689
695
690 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
696 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
691
697
692 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
698 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
693 a string with names.
699 a string with names.
694
700
695 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
701 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
696
702
697 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
703 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
698 magic to toggle on/off the doctest pasting support without having
704 magic to toggle on/off the doctest pasting support without having
699 to leave a session to switch to a separate profile.
705 to leave a session to switch to a separate profile.
700
706
701 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
707 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
702
708
703 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
709 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
704 introduce a blank line between inputs, to conform to doctest
710 introduce a blank line between inputs, to conform to doctest
705 requirements.
711 requirements.
706
712
707 * IPython/OInspect.py (Inspector.pinfo): fix another part where
713 * IPython/OInspect.py (Inspector.pinfo): fix another part where
708 auto-generated docstrings for new-style classes were showing up.
714 auto-generated docstrings for new-style classes were showing up.
709
715
710 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
716 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
711
717
712 * api_changes: Add new file to track backward-incompatible
718 * api_changes: Add new file to track backward-incompatible
713 user-visible changes.
719 user-visible changes.
714
720
715 2007-08-06 Ville Vainio <vivainio@gmail.com>
721 2007-08-06 Ville Vainio <vivainio@gmail.com>
716
722
717 * ipmaker.py: fix bug where user_config_ns didn't exist at all
723 * ipmaker.py: fix bug where user_config_ns didn't exist at all
718 before all the config files were handled.
724 before all the config files were handled.
719
725
720 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
726 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
721
727
722 * IPython/irunner.py (RunnerFactory): Add new factory class for
728 * IPython/irunner.py (RunnerFactory): Add new factory class for
723 creating reusable runners based on filenames.
729 creating reusable runners based on filenames.
724
730
725 * IPython/Extensions/ipy_profile_doctest.py: New profile for
731 * IPython/Extensions/ipy_profile_doctest.py: New profile for
726 doctest support. It sets prompts/exceptions as similar to
732 doctest support. It sets prompts/exceptions as similar to
727 standard Python as possible, so that ipython sessions in this
733 standard Python as possible, so that ipython sessions in this
728 profile can be easily pasted as doctests with minimal
734 profile can be easily pasted as doctests with minimal
729 modifications. It also enables pasting of doctests from external
735 modifications. It also enables pasting of doctests from external
730 sources (even if they have leading whitespace), so that you can
736 sources (even if they have leading whitespace), so that you can
731 rerun doctests from existing sources.
737 rerun doctests from existing sources.
732
738
733 * IPython/iplib.py (_prefilter): fix a buglet where after entering
739 * IPython/iplib.py (_prefilter): fix a buglet where after entering
734 some whitespace, the prompt would become a continuation prompt
740 some whitespace, the prompt would become a continuation prompt
735 with no way of exiting it other than Ctrl-C. This fix brings us
741 with no way of exiting it other than Ctrl-C. This fix brings us
736 into conformity with how the default python prompt works.
742 into conformity with how the default python prompt works.
737
743
738 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
744 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
739 Add support for pasting not only lines that start with '>>>', but
745 Add support for pasting not only lines that start with '>>>', but
740 also with ' >>>'. That is, arbitrary whitespace can now precede
746 also with ' >>>'. That is, arbitrary whitespace can now precede
741 the prompts. This makes the system useful for pasting doctests
747 the prompts. This makes the system useful for pasting doctests
742 from docstrings back into a normal session.
748 from docstrings back into a normal session.
743
749
744 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
750 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
745
751
746 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
752 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
747 r1357, which had killed multiple invocations of an embedded
753 r1357, which had killed multiple invocations of an embedded
748 ipython (this means that example-embed has been broken for over 1
754 ipython (this means that example-embed has been broken for over 1
749 year!!!). Rather than possibly breaking the batch stuff for which
755 year!!!). Rather than possibly breaking the batch stuff for which
750 the code in iplib.py/interact was introduced, I worked around the
756 the code in iplib.py/interact was introduced, I worked around the
751 problem in the embedding class in Shell.py. We really need a
757 problem in the embedding class in Shell.py. We really need a
752 bloody test suite for this code, I'm sick of finding stuff that
758 bloody test suite for this code, I'm sick of finding stuff that
753 used to work breaking left and right every time I use an old
759 used to work breaking left and right every time I use an old
754 feature I hadn't touched in a few months.
760 feature I hadn't touched in a few months.
755 (kill_embedded): Add a new magic that only shows up in embedded
761 (kill_embedded): Add a new magic that only shows up in embedded
756 mode, to allow users to permanently deactivate an embedded instance.
762 mode, to allow users to permanently deactivate an embedded instance.
757
763
758 2007-08-01 Ville Vainio <vivainio@gmail.com>
764 2007-08-01 Ville Vainio <vivainio@gmail.com>
759
765
760 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
766 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
761 history gets out of sync on runlines (e.g. when running macros).
767 history gets out of sync on runlines (e.g. when running macros).
762
768
763 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
769 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
764
770
765 * IPython/Magic.py (magic_colors): fix win32-related error message
771 * IPython/Magic.py (magic_colors): fix win32-related error message
766 that could appear under *nix when readline was missing. Patch by
772 that could appear under *nix when readline was missing. Patch by
767 Scott Jackson, closes #175.
773 Scott Jackson, closes #175.
768
774
769 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
775 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
770
776
771 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
777 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
772 completer that it traits-aware, so that traits objects don't show
778 completer that it traits-aware, so that traits objects don't show
773 all of their internal attributes all the time.
779 all of their internal attributes all the time.
774
780
775 * IPython/genutils.py (dir2): moved this code from inside
781 * IPython/genutils.py (dir2): moved this code from inside
776 completer.py to expose it publicly, so I could use it in the
782 completer.py to expose it publicly, so I could use it in the
777 wildcards bugfix.
783 wildcards bugfix.
778
784
779 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
785 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
780 Stefan with Traits.
786 Stefan with Traits.
781
787
782 * IPython/completer.py (Completer.attr_matches): change internal
788 * IPython/completer.py (Completer.attr_matches): change internal
783 var name from 'object' to 'obj', since 'object' is now a builtin
789 var name from 'object' to 'obj', since 'object' is now a builtin
784 and this can lead to weird bugs if reusing this code elsewhere.
790 and this can lead to weird bugs if reusing this code elsewhere.
785
791
786 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
792 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
787
793
788 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
794 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
789 'foo?' and update the code to prevent printing of default
795 'foo?' and update the code to prevent printing of default
790 docstrings that started appearing after I added support for
796 docstrings that started appearing after I added support for
791 new-style classes. The approach I'm using isn't ideal (I just
797 new-style classes. The approach I'm using isn't ideal (I just
792 special-case those strings) but I'm not sure how to more robustly
798 special-case those strings) but I'm not sure how to more robustly
793 differentiate between truly user-written strings and Python's
799 differentiate between truly user-written strings and Python's
794 automatic ones.
800 automatic ones.
795
801
796 2007-07-09 Ville Vainio <vivainio@gmail.com>
802 2007-07-09 Ville Vainio <vivainio@gmail.com>
797
803
798 * completer.py: Applied Matthew Neeley's patch:
804 * completer.py: Applied Matthew Neeley's patch:
799 Dynamic attributes from trait_names and _getAttributeNames are added
805 Dynamic attributes from trait_names and _getAttributeNames are added
800 to the list of tab completions, but when this happens, the attribute
806 to the list of tab completions, but when this happens, the attribute
801 list is turned into a set, so the attributes are unordered when
807 list is turned into a set, so the attributes are unordered when
802 printed, which makes it hard to find the right completion. This patch
808 printed, which makes it hard to find the right completion. This patch
803 turns this set back into a list and sort it.
809 turns this set back into a list and sort it.
804
810
805 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
811 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
806
812
807 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
813 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
808 classes in various inspector functions.
814 classes in various inspector functions.
809
815
810 2007-06-28 Ville Vainio <vivainio@gmail.com>
816 2007-06-28 Ville Vainio <vivainio@gmail.com>
811
817
812 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
818 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
813 Implement "shadow" namespace, and callable aliases that reside there.
819 Implement "shadow" namespace, and callable aliases that reside there.
814 Use them by:
820 Use them by:
815
821
816 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
822 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
817
823
818 foo hello world
824 foo hello world
819 (gets translated to:)
825 (gets translated to:)
820 _sh.foo(r"""hello world""")
826 _sh.foo(r"""hello world""")
821
827
822 In practice, this kind of alias can take the role of a magic function
828 In practice, this kind of alias can take the role of a magic function
823
829
824 * New generic inspect_object, called on obj? and obj??
830 * New generic inspect_object, called on obj? and obj??
825
831
826 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
832 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
827
833
828 * IPython/ultraTB.py (findsource): fix a problem with
834 * IPython/ultraTB.py (findsource): fix a problem with
829 inspect.getfile that can cause crashes during traceback construction.
835 inspect.getfile that can cause crashes during traceback construction.
830
836
831 2007-06-14 Ville Vainio <vivainio@gmail.com>
837 2007-06-14 Ville Vainio <vivainio@gmail.com>
832
838
833 * iplib.py (handle_auto): Try to use ascii for printing "--->"
839 * iplib.py (handle_auto): Try to use ascii for printing "--->"
834 autocall rewrite indication, becausesometimes unicode fails to print
840 autocall rewrite indication, becausesometimes unicode fails to print
835 properly (and you get ' - - - '). Use plain uncoloured ---> for
841 properly (and you get ' - - - '). Use plain uncoloured ---> for
836 unicode.
842 unicode.
837
843
838 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
844 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
839
845
840 . pickleshare 'hash' commands (hget, hset, hcompress,
846 . pickleshare 'hash' commands (hget, hset, hcompress,
841 hdict) for efficient shadow history storage.
847 hdict) for efficient shadow history storage.
842
848
843 2007-06-13 Ville Vainio <vivainio@gmail.com>
849 2007-06-13 Ville Vainio <vivainio@gmail.com>
844
850
845 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
851 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
846 Added kw arg 'interactive', tell whether vars should be visible
852 Added kw arg 'interactive', tell whether vars should be visible
847 with %whos.
853 with %whos.
848
854
849 2007-06-11 Ville Vainio <vivainio@gmail.com>
855 2007-06-11 Ville Vainio <vivainio@gmail.com>
850
856
851 * pspersistence.py, Magic.py, iplib.py: directory history now saved
857 * pspersistence.py, Magic.py, iplib.py: directory history now saved
852 to db
858 to db
853
859
854 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
860 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
855 Also, it exits IPython immediately after evaluating the command (just like
861 Also, it exits IPython immediately after evaluating the command (just like
856 std python)
862 std python)
857
863
858 2007-06-05 Walter Doerwald <walter@livinglogic.de>
864 2007-06-05 Walter Doerwald <walter@livinglogic.de>
859
865
860 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
866 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
861 Python string and captures the output. (Idea and original patch by
867 Python string and captures the output. (Idea and original patch by
862 Stefan van der Walt)
868 Stefan van der Walt)
863
869
864 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
870 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
865
871
866 * IPython/ultraTB.py (VerboseTB.text): update printing of
872 * IPython/ultraTB.py (VerboseTB.text): update printing of
867 exception types for Python 2.5 (now all exceptions in the stdlib
873 exception types for Python 2.5 (now all exceptions in the stdlib
868 are new-style classes).
874 are new-style classes).
869
875
870 2007-05-31 Walter Doerwald <walter@livinglogic.de>
876 2007-05-31 Walter Doerwald <walter@livinglogic.de>
871
877
872 * IPython/Extensions/igrid.py: Add new commands refresh and
878 * IPython/Extensions/igrid.py: Add new commands refresh and
873 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
879 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
874 the iterator once (refresh) or after every x seconds (refresh_timer).
880 the iterator once (refresh) or after every x seconds (refresh_timer).
875 Add a working implementation of "searchexpression", where the text
881 Add a working implementation of "searchexpression", where the text
876 entered is not the text to search for, but an expression that must
882 entered is not the text to search for, but an expression that must
877 be true. Added display of shortcuts to the menu. Added commands "pickinput"
883 be true. Added display of shortcuts to the menu. Added commands "pickinput"
878 and "pickinputattr" that put the object or attribute under the cursor
884 and "pickinputattr" that put the object or attribute under the cursor
879 in the input line. Split the statusbar to be able to display the currently
885 in the input line. Split the statusbar to be able to display the currently
880 active refresh interval. (Patch by Nik Tautenhahn)
886 active refresh interval. (Patch by Nik Tautenhahn)
881
887
882 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
888 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
883
889
884 * fixing set_term_title to use ctypes as default
890 * fixing set_term_title to use ctypes as default
885
891
886 * fixing set_term_title fallback to work when curent dir
892 * fixing set_term_title fallback to work when curent dir
887 is on a windows network share
893 is on a windows network share
888
894
889 2007-05-28 Ville Vainio <vivainio@gmail.com>
895 2007-05-28 Ville Vainio <vivainio@gmail.com>
890
896
891 * %cpaste: strip + with > from left (diffs).
897 * %cpaste: strip + with > from left (diffs).
892
898
893 * iplib.py: Fix crash when readline not installed
899 * iplib.py: Fix crash when readline not installed
894
900
895 2007-05-26 Ville Vainio <vivainio@gmail.com>
901 2007-05-26 Ville Vainio <vivainio@gmail.com>
896
902
897 * generics.py: introduce easy to extend result_display generic
903 * generics.py: introduce easy to extend result_display generic
898 function (using simplegeneric.py).
904 function (using simplegeneric.py).
899
905
900 * Fixed the append functionality of %set.
906 * Fixed the append functionality of %set.
901
907
902 2007-05-25 Ville Vainio <vivainio@gmail.com>
908 2007-05-25 Ville Vainio <vivainio@gmail.com>
903
909
904 * New magic: %rep (fetch / run old commands from history)
910 * New magic: %rep (fetch / run old commands from history)
905
911
906 * New extension: mglob (%mglob magic), for powerful glob / find /filter
912 * New extension: mglob (%mglob magic), for powerful glob / find /filter
907 like functionality
913 like functionality
908
914
909 % maghistory.py: %hist -g PATTERM greps the history for pattern
915 % maghistory.py: %hist -g PATTERM greps the history for pattern
910
916
911 2007-05-24 Walter Doerwald <walter@livinglogic.de>
917 2007-05-24 Walter Doerwald <walter@livinglogic.de>
912
918
913 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
919 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
914 browse the IPython input history
920 browse the IPython input history
915
921
916 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
922 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
917 (mapped to "i") can be used to put the object under the curser in the input
923 (mapped to "i") can be used to put the object under the curser in the input
918 line. pickinputattr (mapped to "I") does the same for the attribute under
924 line. pickinputattr (mapped to "I") does the same for the attribute under
919 the cursor.
925 the cursor.
920
926
921 2007-05-24 Ville Vainio <vivainio@gmail.com>
927 2007-05-24 Ville Vainio <vivainio@gmail.com>
922
928
923 * Grand magic cleansing (changeset [2380]):
929 * Grand magic cleansing (changeset [2380]):
924
930
925 * Introduce ipy_legacy.py where the following magics were
931 * Introduce ipy_legacy.py where the following magics were
926 moved:
932 moved:
927
933
928 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
934 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
929
935
930 If you need them, either use default profile or "import ipy_legacy"
936 If you need them, either use default profile or "import ipy_legacy"
931 in your ipy_user_conf.py
937 in your ipy_user_conf.py
932
938
933 * Move sh and scipy profile to Extensions from UserConfig. this implies
939 * Move sh and scipy profile to Extensions from UserConfig. this implies
934 you should not edit them, but you don't need to run %upgrade when
940 you should not edit them, but you don't need to run %upgrade when
935 upgrading IPython anymore.
941 upgrading IPython anymore.
936
942
937 * %hist/%history now operates in "raw" mode by default. To get the old
943 * %hist/%history now operates in "raw" mode by default. To get the old
938 behaviour, run '%hist -n' (native mode).
944 behaviour, run '%hist -n' (native mode).
939
945
940 * split ipy_stock_completers.py to ipy_stock_completers.py and
946 * split ipy_stock_completers.py to ipy_stock_completers.py and
941 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
947 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
942 installed as default.
948 installed as default.
943
949
944 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
950 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
945 handling.
951 handling.
946
952
947 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
953 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
948 input if readline is available.
954 input if readline is available.
949
955
950 2007-05-23 Ville Vainio <vivainio@gmail.com>
956 2007-05-23 Ville Vainio <vivainio@gmail.com>
951
957
952 * macro.py: %store uses __getstate__ properly
958 * macro.py: %store uses __getstate__ properly
953
959
954 * exesetup.py: added new setup script for creating
960 * exesetup.py: added new setup script for creating
955 standalone IPython executables with py2exe (i.e.
961 standalone IPython executables with py2exe (i.e.
956 no python installation required).
962 no python installation required).
957
963
958 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
964 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
959 its place.
965 its place.
960
966
961 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
967 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
962
968
963 2007-05-21 Ville Vainio <vivainio@gmail.com>
969 2007-05-21 Ville Vainio <vivainio@gmail.com>
964
970
965 * platutil_win32.py (set_term_title): handle
971 * platutil_win32.py (set_term_title): handle
966 failure of 'title' system call properly.
972 failure of 'title' system call properly.
967
973
968 2007-05-17 Walter Doerwald <walter@livinglogic.de>
974 2007-05-17 Walter Doerwald <walter@livinglogic.de>
969
975
970 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
976 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
971 (Bug detected by Paul Mueller).
977 (Bug detected by Paul Mueller).
972
978
973 2007-05-16 Ville Vainio <vivainio@gmail.com>
979 2007-05-16 Ville Vainio <vivainio@gmail.com>
974
980
975 * ipy_profile_sci.py, ipython_win_post_install.py: Create
981 * ipy_profile_sci.py, ipython_win_post_install.py: Create
976 new "sci" profile, effectively a modern version of the old
982 new "sci" profile, effectively a modern version of the old
977 "scipy" profile (which is now slated for deprecation).
983 "scipy" profile (which is now slated for deprecation).
978
984
979 2007-05-15 Ville Vainio <vivainio@gmail.com>
985 2007-05-15 Ville Vainio <vivainio@gmail.com>
980
986
981 * pycolorize.py, pycolor.1: Paul Mueller's patches that
987 * pycolorize.py, pycolor.1: Paul Mueller's patches that
982 make pycolorize read input from stdin when run without arguments.
988 make pycolorize read input from stdin when run without arguments.
983
989
984 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
990 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
985
991
986 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
992 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
987 it in sh profile (instead of ipy_system_conf.py).
993 it in sh profile (instead of ipy_system_conf.py).
988
994
989 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
995 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
990 aliases are now lower case on windows (MyCommand.exe => mycommand).
996 aliases are now lower case on windows (MyCommand.exe => mycommand).
991
997
992 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
998 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
993 Macros are now callable objects that inherit from ipapi.IPyAutocall,
999 Macros are now callable objects that inherit from ipapi.IPyAutocall,
994 i.e. get autocalled regardless of system autocall setting.
1000 i.e. get autocalled regardless of system autocall setting.
995
1001
996 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
1002 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
997
1003
998 * IPython/rlineimpl.py: check for clear_history in readline and
1004 * IPython/rlineimpl.py: check for clear_history in readline and
999 make it a dummy no-op if not available. This function isn't
1005 make it a dummy no-op if not available. This function isn't
1000 guaranteed to be in the API and appeared in Python 2.4, so we need
1006 guaranteed to be in the API and appeared in Python 2.4, so we need
1001 to check it ourselves. Also, clean up this file quite a bit.
1007 to check it ourselves. Also, clean up this file quite a bit.
1002
1008
1003 * ipython.1: update man page and full manual with information
1009 * ipython.1: update man page and full manual with information
1004 about threads (remove outdated warning). Closes #151.
1010 about threads (remove outdated warning). Closes #151.
1005
1011
1006 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
1012 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
1007
1013
1008 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
1014 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
1009 in trunk (note that this made it into the 0.8.1 release already,
1015 in trunk (note that this made it into the 0.8.1 release already,
1010 but the changelogs didn't get coordinated). Many thanks to Gael
1016 but the changelogs didn't get coordinated). Many thanks to Gael
1011 Varoquaux <gael.varoquaux-AT-normalesup.org>
1017 Varoquaux <gael.varoquaux-AT-normalesup.org>
1012
1018
1013 2007-05-09 *** Released version 0.8.1
1019 2007-05-09 *** Released version 0.8.1
1014
1020
1015 2007-05-10 Walter Doerwald <walter@livinglogic.de>
1021 2007-05-10 Walter Doerwald <walter@livinglogic.de>
1016
1022
1017 * IPython/Extensions/igrid.py: Incorporate html help into
1023 * IPython/Extensions/igrid.py: Incorporate html help into
1018 the module, so we don't have to search for the file.
1024 the module, so we don't have to search for the file.
1019
1025
1020 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
1026 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
1021
1027
1022 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
1028 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
1023
1029
1024 2007-04-30 Ville Vainio <vivainio@gmail.com>
1030 2007-04-30 Ville Vainio <vivainio@gmail.com>
1025
1031
1026 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
1032 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
1027 user has illegal (non-ascii) home directory name
1033 user has illegal (non-ascii) home directory name
1028
1034
1029 2007-04-27 Ville Vainio <vivainio@gmail.com>
1035 2007-04-27 Ville Vainio <vivainio@gmail.com>
1030
1036
1031 * platutils_win32.py: implement set_term_title for windows
1037 * platutils_win32.py: implement set_term_title for windows
1032
1038
1033 * Update version number
1039 * Update version number
1034
1040
1035 * ipy_profile_sh.py: more informative prompt (2 dir levels)
1041 * ipy_profile_sh.py: more informative prompt (2 dir levels)
1036
1042
1037 2007-04-26 Walter Doerwald <walter@livinglogic.de>
1043 2007-04-26 Walter Doerwald <walter@livinglogic.de>
1038
1044
1039 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
1045 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
1040 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
1046 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
1041 bug discovered by Ville).
1047 bug discovered by Ville).
1042
1048
1043 2007-04-26 Ville Vainio <vivainio@gmail.com>
1049 2007-04-26 Ville Vainio <vivainio@gmail.com>
1044
1050
1045 * Extensions/ipy_completers.py: Olivier's module completer now
1051 * Extensions/ipy_completers.py: Olivier's module completer now
1046 saves the list of root modules if it takes > 4 secs on the first run.
1052 saves the list of root modules if it takes > 4 secs on the first run.
1047
1053
1048 * Magic.py (%rehashx): %rehashx now clears the completer cache
1054 * Magic.py (%rehashx): %rehashx now clears the completer cache
1049
1055
1050
1056
1051 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
1057 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
1052
1058
1053 * ipython.el: fix incorrect color scheme, reported by Stefan.
1059 * ipython.el: fix incorrect color scheme, reported by Stefan.
1054 Closes #149.
1060 Closes #149.
1055
1061
1056 * IPython/PyColorize.py (Parser.format2): fix state-handling
1062 * IPython/PyColorize.py (Parser.format2): fix state-handling
1057 logic. I still don't like how that code handles state, but at
1063 logic. I still don't like how that code handles state, but at
1058 least now it should be correct, if inelegant. Closes #146.
1064 least now it should be correct, if inelegant. Closes #146.
1059
1065
1060 2007-04-25 Ville Vainio <vivainio@gmail.com>
1066 2007-04-25 Ville Vainio <vivainio@gmail.com>
1061
1067
1062 * Extensions/ipy_which.py: added extension for %which magic, works
1068 * Extensions/ipy_which.py: added extension for %which magic, works
1063 a lot like unix 'which' but also finds and expands aliases, and
1069 a lot like unix 'which' but also finds and expands aliases, and
1064 allows wildcards.
1070 allows wildcards.
1065
1071
1066 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
1072 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
1067 as opposed to returning nothing.
1073 as opposed to returning nothing.
1068
1074
1069 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
1075 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
1070 ipy_stock_completers on default profile, do import on sh profile.
1076 ipy_stock_completers on default profile, do import on sh profile.
1071
1077
1072 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1078 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1073
1079
1074 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
1080 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
1075 like ipython.py foo.py which raised a IndexError.
1081 like ipython.py foo.py which raised a IndexError.
1076
1082
1077 2007-04-21 Ville Vainio <vivainio@gmail.com>
1083 2007-04-21 Ville Vainio <vivainio@gmail.com>
1078
1084
1079 * Extensions/ipy_extutil.py: added extension to manage other ipython
1085 * Extensions/ipy_extutil.py: added extension to manage other ipython
1080 extensions. Now only supports 'ls' == list extensions.
1086 extensions. Now only supports 'ls' == list extensions.
1081
1087
1082 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
1088 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
1083
1089
1084 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
1090 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
1085 would prevent use of the exception system outside of a running
1091 would prevent use of the exception system outside of a running
1086 IPython instance.
1092 IPython instance.
1087
1093
1088 2007-04-20 Ville Vainio <vivainio@gmail.com>
1094 2007-04-20 Ville Vainio <vivainio@gmail.com>
1089
1095
1090 * Extensions/ipy_render.py: added extension for easy
1096 * Extensions/ipy_render.py: added extension for easy
1091 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
1097 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
1092 'Iptl' template notation,
1098 'Iptl' template notation,
1093
1099
1094 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
1100 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
1095 safer & faster 'import' completer.
1101 safer & faster 'import' completer.
1096
1102
1097 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
1103 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
1098 and _ip.defalias(name, command).
1104 and _ip.defalias(name, command).
1099
1105
1100 * Extensions/ipy_exportdb.py: New extension for exporting all the
1106 * Extensions/ipy_exportdb.py: New extension for exporting all the
1101 %store'd data in a portable format (normal ipapi calls like
1107 %store'd data in a portable format (normal ipapi calls like
1102 defmacro() etc.)
1108 defmacro() etc.)
1103
1109
1104 2007-04-19 Ville Vainio <vivainio@gmail.com>
1110 2007-04-19 Ville Vainio <vivainio@gmail.com>
1105
1111
1106 * upgrade_dir.py: skip junk files like *.pyc
1112 * upgrade_dir.py: skip junk files like *.pyc
1107
1113
1108 * Release.py: version number to 0.8.1
1114 * Release.py: version number to 0.8.1
1109
1115
1110 2007-04-18 Ville Vainio <vivainio@gmail.com>
1116 2007-04-18 Ville Vainio <vivainio@gmail.com>
1111
1117
1112 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
1118 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
1113 and later on win32.
1119 and later on win32.
1114
1120
1115 2007-04-16 Ville Vainio <vivainio@gmail.com>
1121 2007-04-16 Ville Vainio <vivainio@gmail.com>
1116
1122
1117 * iplib.py (showtraceback): Do not crash when running w/o readline.
1123 * iplib.py (showtraceback): Do not crash when running w/o readline.
1118
1124
1119 2007-04-12 Walter Doerwald <walter@livinglogic.de>
1125 2007-04-12 Walter Doerwald <walter@livinglogic.de>
1120
1126
1121 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
1127 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
1122 sorted (case sensitive with files and dirs mixed).
1128 sorted (case sensitive with files and dirs mixed).
1123
1129
1124 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
1130 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
1125
1131
1126 * IPython/Release.py (version): Open trunk for 0.8.1 development.
1132 * IPython/Release.py (version): Open trunk for 0.8.1 development.
1127
1133
1128 2007-04-10 *** Released version 0.8.0
1134 2007-04-10 *** Released version 0.8.0
1129
1135
1130 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
1136 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
1131
1137
1132 * Tag 0.8.0 for release.
1138 * Tag 0.8.0 for release.
1133
1139
1134 * IPython/iplib.py (reloadhist): add API function to cleanly
1140 * IPython/iplib.py (reloadhist): add API function to cleanly
1135 reload the readline history, which was growing inappropriately on
1141 reload the readline history, which was growing inappropriately on
1136 every %run call.
1142 every %run call.
1137
1143
1138 * win32_manual_post_install.py (run): apply last part of Nicolas
1144 * win32_manual_post_install.py (run): apply last part of Nicolas
1139 Pernetty's patch (I'd accidentally applied it in a different
1145 Pernetty's patch (I'd accidentally applied it in a different
1140 directory and this particular file didn't get patched).
1146 directory and this particular file didn't get patched).
1141
1147
1142 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
1148 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
1143
1149
1144 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
1150 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
1145 find the main thread id and use the proper API call. Thanks to
1151 find the main thread id and use the proper API call. Thanks to
1146 Stefan for the fix.
1152 Stefan for the fix.
1147
1153
1148 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
1154 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
1149 unit tests to reflect fixed ticket #52, and add more tests sent by
1155 unit tests to reflect fixed ticket #52, and add more tests sent by
1150 him.
1156 him.
1151
1157
1152 * IPython/iplib.py (raw_input): restore the readline completer
1158 * IPython/iplib.py (raw_input): restore the readline completer
1153 state on every input, in case third-party code messed it up.
1159 state on every input, in case third-party code messed it up.
1154 (_prefilter): revert recent addition of early-escape checks which
1160 (_prefilter): revert recent addition of early-escape checks which
1155 prevent many valid alias calls from working.
1161 prevent many valid alias calls from working.
1156
1162
1157 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
1163 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
1158 flag for sigint handler so we don't run a full signal() call on
1164 flag for sigint handler so we don't run a full signal() call on
1159 each runcode access.
1165 each runcode access.
1160
1166
1161 * IPython/Magic.py (magic_whos): small improvement to diagnostic
1167 * IPython/Magic.py (magic_whos): small improvement to diagnostic
1162 message.
1168 message.
1163
1169
1164 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
1170 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
1165
1171
1166 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
1172 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
1167 asynchronous exceptions working, i.e., Ctrl-C can actually
1173 asynchronous exceptions working, i.e., Ctrl-C can actually
1168 interrupt long-running code in the multithreaded shells.
1174 interrupt long-running code in the multithreaded shells.
1169
1175
1170 This is using Tomer Filiba's great ctypes-based trick:
1176 This is using Tomer Filiba's great ctypes-based trick:
1171 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
1177 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
1172 this in the past, but hadn't been able to make it work before. So
1178 this in the past, but hadn't been able to make it work before. So
1173 far it looks like it's actually running, but this needs more
1179 far it looks like it's actually running, but this needs more
1174 testing. If it really works, I'll be *very* happy, and we'll owe
1180 testing. If it really works, I'll be *very* happy, and we'll owe
1175 a huge thank you to Tomer. My current implementation is ugly,
1181 a huge thank you to Tomer. My current implementation is ugly,
1176 hackish and uses nasty globals, but I don't want to try and clean
1182 hackish and uses nasty globals, but I don't want to try and clean
1177 anything up until we know if it actually works.
1183 anything up until we know if it actually works.
1178
1184
1179 NOTE: this feature needs ctypes to work. ctypes is included in
1185 NOTE: this feature needs ctypes to work. ctypes is included in
1180 Python2.5, but 2.4 users will need to manually install it. This
1186 Python2.5, but 2.4 users will need to manually install it. This
1181 feature makes multi-threaded shells so much more usable that it's
1187 feature makes multi-threaded shells so much more usable that it's
1182 a minor price to pay (ctypes is very easy to install, already a
1188 a minor price to pay (ctypes is very easy to install, already a
1183 requirement for win32 and available in major linux distros).
1189 requirement for win32 and available in major linux distros).
1184
1190
1185 2007-04-04 Ville Vainio <vivainio@gmail.com>
1191 2007-04-04 Ville Vainio <vivainio@gmail.com>
1186
1192
1187 * Extensions/ipy_completers.py, ipy_stock_completers.py:
1193 * Extensions/ipy_completers.py, ipy_stock_completers.py:
1188 Moved implementations of 'bundled' completers to ipy_completers.py,
1194 Moved implementations of 'bundled' completers to ipy_completers.py,
1189 they are only enabled in ipy_stock_completers.py.
1195 they are only enabled in ipy_stock_completers.py.
1190
1196
1191 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
1197 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
1192
1198
1193 * IPython/PyColorize.py (Parser.format2): Fix identation of
1199 * IPython/PyColorize.py (Parser.format2): Fix identation of
1194 colorzied output and return early if color scheme is NoColor, to
1200 colorzied output and return early if color scheme is NoColor, to
1195 avoid unnecessary and expensive tokenization. Closes #131.
1201 avoid unnecessary and expensive tokenization. Closes #131.
1196
1202
1197 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
1203 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
1198
1204
1199 * IPython/Debugger.py: disable the use of pydb version 1.17. It
1205 * IPython/Debugger.py: disable the use of pydb version 1.17. It
1200 has a critical bug (a missing import that makes post-mortem not
1206 has a critical bug (a missing import that makes post-mortem not
1201 work at all). Unfortunately as of this time, this is the version
1207 work at all). Unfortunately as of this time, this is the version
1202 shipped with Ubuntu Edgy, so quite a few people have this one. I
1208 shipped with Ubuntu Edgy, so quite a few people have this one. I
1203 hope Edgy will update to a more recent package.
1209 hope Edgy will update to a more recent package.
1204
1210
1205 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
1211 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
1206
1212
1207 * IPython/iplib.py (_prefilter): close #52, second part of a patch
1213 * IPython/iplib.py (_prefilter): close #52, second part of a patch
1208 set by Stefan (only the first part had been applied before).
1214 set by Stefan (only the first part had been applied before).
1209
1215
1210 * IPython/Extensions/ipy_stock_completers.py (module_completer):
1216 * IPython/Extensions/ipy_stock_completers.py (module_completer):
1211 remove usage of the dangerous pkgutil.walk_packages(). See
1217 remove usage of the dangerous pkgutil.walk_packages(). See
1212 details in comments left in the code.
1218 details in comments left in the code.
1213
1219
1214 * IPython/Magic.py (magic_whos): add support for numpy arrays
1220 * IPython/Magic.py (magic_whos): add support for numpy arrays
1215 similar to what we had for Numeric.
1221 similar to what we had for Numeric.
1216
1222
1217 * IPython/completer.py (IPCompleter.complete): extend the
1223 * IPython/completer.py (IPCompleter.complete): extend the
1218 complete() call API to support completions by other mechanisms
1224 complete() call API to support completions by other mechanisms
1219 than readline. Closes #109.
1225 than readline. Closes #109.
1220
1226
1221 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
1227 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
1222 protect against a bug in Python's execfile(). Closes #123.
1228 protect against a bug in Python's execfile(). Closes #123.
1223
1229
1224 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
1230 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
1225
1231
1226 * IPython/iplib.py (split_user_input): ensure that when splitting
1232 * IPython/iplib.py (split_user_input): ensure that when splitting
1227 user input, the part that can be treated as a python name is pure
1233 user input, the part that can be treated as a python name is pure
1228 ascii (Python identifiers MUST be pure ascii). Part of the
1234 ascii (Python identifiers MUST be pure ascii). Part of the
1229 ongoing Unicode support work.
1235 ongoing Unicode support work.
1230
1236
1231 * IPython/Prompts.py (prompt_specials_color): Add \N for the
1237 * IPython/Prompts.py (prompt_specials_color): Add \N for the
1232 actual prompt number, without any coloring. This allows users to
1238 actual prompt number, without any coloring. This allows users to
1233 produce numbered prompts with their own colors. Added after a
1239 produce numbered prompts with their own colors. Added after a
1234 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
1240 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
1235
1241
1236 2007-03-31 Walter Doerwald <walter@livinglogic.de>
1242 2007-03-31 Walter Doerwald <walter@livinglogic.de>
1237
1243
1238 * IPython/Extensions/igrid.py: Map the return key
1244 * IPython/Extensions/igrid.py: Map the return key
1239 to enter() and shift-return to enterattr().
1245 to enter() and shift-return to enterattr().
1240
1246
1241 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
1247 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
1242
1248
1243 * IPython/Magic.py (magic_psearch): add unicode support by
1249 * IPython/Magic.py (magic_psearch): add unicode support by
1244 encoding to ascii the input, since this routine also only deals
1250 encoding to ascii the input, since this routine also only deals
1245 with valid Python names. Fixes a bug reported by Stefan.
1251 with valid Python names. Fixes a bug reported by Stefan.
1246
1252
1247 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
1253 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
1248
1254
1249 * IPython/Magic.py (_inspect): convert unicode input into ascii
1255 * IPython/Magic.py (_inspect): convert unicode input into ascii
1250 before trying to evaluate it as a Python identifier. This fixes a
1256 before trying to evaluate it as a Python identifier. This fixes a
1251 problem that the new unicode support had introduced when analyzing
1257 problem that the new unicode support had introduced when analyzing
1252 long definition lines for functions.
1258 long definition lines for functions.
1253
1259
1254 2007-03-24 Walter Doerwald <walter@livinglogic.de>
1260 2007-03-24 Walter Doerwald <walter@livinglogic.de>
1255
1261
1256 * IPython/Extensions/igrid.py: Fix picking. Using
1262 * IPython/Extensions/igrid.py: Fix picking. Using
1257 igrid with wxPython 2.6 and -wthread should work now.
1263 igrid with wxPython 2.6 and -wthread should work now.
1258 igrid.display() simply tries to create a frame without
1264 igrid.display() simply tries to create a frame without
1259 an application. Only if this fails an application is created.
1265 an application. Only if this fails an application is created.
1260
1266
1261 2007-03-23 Walter Doerwald <walter@livinglogic.de>
1267 2007-03-23 Walter Doerwald <walter@livinglogic.de>
1262
1268
1263 * IPython/Extensions/path.py: Updated to version 2.2.
1269 * IPython/Extensions/path.py: Updated to version 2.2.
1264
1270
1265 2007-03-23 Ville Vainio <vivainio@gmail.com>
1271 2007-03-23 Ville Vainio <vivainio@gmail.com>
1266
1272
1267 * iplib.py: recursive alias expansion now works better, so that
1273 * iplib.py: recursive alias expansion now works better, so that
1268 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
1274 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
1269 doesn't trip up the process, if 'd' has been aliased to 'ls'.
1275 doesn't trip up the process, if 'd' has been aliased to 'ls'.
1270
1276
1271 * Extensions/ipy_gnuglobal.py added, provides %global magic
1277 * Extensions/ipy_gnuglobal.py added, provides %global magic
1272 for users of http://www.gnu.org/software/global
1278 for users of http://www.gnu.org/software/global
1273
1279
1274 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
1280 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
1275 Closes #52. Patch by Stefan van der Walt.
1281 Closes #52. Patch by Stefan van der Walt.
1276
1282
1277 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
1283 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
1278
1284
1279 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
1285 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
1280 respect the __file__ attribute when using %run. Thanks to a bug
1286 respect the __file__ attribute when using %run. Thanks to a bug
1281 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
1287 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
1282
1288
1283 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
1289 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
1284
1290
1285 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1291 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1286 input. Patch sent by Stefan.
1292 input. Patch sent by Stefan.
1287
1293
1288 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1294 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1289 * IPython/Extensions/ipy_stock_completer.py
1295 * IPython/Extensions/ipy_stock_completer.py
1290 shlex_split, fix bug in shlex_split. len function
1296 shlex_split, fix bug in shlex_split. len function
1291 call was missing an if statement. Caused shlex_split to
1297 call was missing an if statement. Caused shlex_split to
1292 sometimes return "" as last element.
1298 sometimes return "" as last element.
1293
1299
1294 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1300 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1295
1301
1296 * IPython/completer.py
1302 * IPython/completer.py
1297 (IPCompleter.file_matches.single_dir_expand): fix a problem
1303 (IPCompleter.file_matches.single_dir_expand): fix a problem
1298 reported by Stefan, where directories containign a single subdir
1304 reported by Stefan, where directories containign a single subdir
1299 would be completed too early.
1305 would be completed too early.
1300
1306
1301 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1307 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1302 pylab import *' when -pylab is given be optional. A new flag,
1308 pylab import *' when -pylab is given be optional. A new flag,
1303 pylab_import_all controls this behavior, the default is True for
1309 pylab_import_all controls this behavior, the default is True for
1304 backwards compatibility.
1310 backwards compatibility.
1305
1311
1306 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1312 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1307 modified) R. Bernstein's patch for fully syntax highlighted
1313 modified) R. Bernstein's patch for fully syntax highlighted
1308 tracebacks. The functionality is also available under ultraTB for
1314 tracebacks. The functionality is also available under ultraTB for
1309 non-ipython users (someone using ultraTB but outside an ipython
1315 non-ipython users (someone using ultraTB but outside an ipython
1310 session). They can select the color scheme by setting the
1316 session). They can select the color scheme by setting the
1311 module-level global DEFAULT_SCHEME. The highlight functionality
1317 module-level global DEFAULT_SCHEME. The highlight functionality
1312 also works when debugging.
1318 also works when debugging.
1313
1319
1314 * IPython/genutils.py (IOStream.close): small patch by
1320 * IPython/genutils.py (IOStream.close): small patch by
1315 R. Bernstein for improved pydb support.
1321 R. Bernstein for improved pydb support.
1316
1322
1317 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1323 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1318 DaveS <davls@telus.net> to improve support of debugging under
1324 DaveS <davls@telus.net> to improve support of debugging under
1319 NTEmacs, including improved pydb behavior.
1325 NTEmacs, including improved pydb behavior.
1320
1326
1321 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1327 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1322 Python 2.5, where the stats object API changed a little. Thanks
1328 Python 2.5, where the stats object API changed a little. Thanks
1323 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1329 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1324
1330
1325 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1331 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1326 Pernetty's patch to improve support for (X)Emacs under Win32.
1332 Pernetty's patch to improve support for (X)Emacs under Win32.
1327
1333
1328 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1334 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1329
1335
1330 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1336 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1331 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1337 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1332 a report by Nik Tautenhahn.
1338 a report by Nik Tautenhahn.
1333
1339
1334 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1340 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1335
1341
1336 * setup.py: Add the igrid help files to the list of data files
1342 * setup.py: Add the igrid help files to the list of data files
1337 to be installed alongside igrid.
1343 to be installed alongside igrid.
1338 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1344 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1339 Show the input object of the igrid browser as the window tile.
1345 Show the input object of the igrid browser as the window tile.
1340 Show the object the cursor is on in the statusbar.
1346 Show the object the cursor is on in the statusbar.
1341
1347
1342 2007-03-15 Ville Vainio <vivainio@gmail.com>
1348 2007-03-15 Ville Vainio <vivainio@gmail.com>
1343
1349
1344 * Extensions/ipy_stock_completers.py: Fixed exception
1350 * Extensions/ipy_stock_completers.py: Fixed exception
1345 on mismatching quotes in %run completer. Patch by
1351 on mismatching quotes in %run completer. Patch by
1346 Jorgen Stenarson. Closes #127.
1352 Jorgen Stenarson. Closes #127.
1347
1353
1348 2007-03-14 Ville Vainio <vivainio@gmail.com>
1354 2007-03-14 Ville Vainio <vivainio@gmail.com>
1349
1355
1350 * Extensions/ext_rehashdir.py: Do not do auto_alias
1356 * Extensions/ext_rehashdir.py: Do not do auto_alias
1351 in %rehashdir, it clobbers %store'd aliases.
1357 in %rehashdir, it clobbers %store'd aliases.
1352
1358
1353 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1359 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1354 (beefed up %env) imported for sh profile.
1360 (beefed up %env) imported for sh profile.
1355
1361
1356 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1362 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1357
1363
1358 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1364 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1359 as the default browser.
1365 as the default browser.
1360 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1366 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1361 As igrid displays all attributes it ever encounters, fetch() (which has
1367 As igrid displays all attributes it ever encounters, fetch() (which has
1362 been renamed to _fetch()) doesn't have to recalculate the display attributes
1368 been renamed to _fetch()) doesn't have to recalculate the display attributes
1363 every time a new item is fetched. This should speed up scrolling.
1369 every time a new item is fetched. This should speed up scrolling.
1364
1370
1365 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1371 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1366
1372
1367 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1373 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1368 Schmolck's recently reported tab-completion bug (my previous one
1374 Schmolck's recently reported tab-completion bug (my previous one
1369 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1375 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1370
1376
1371 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1377 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1372
1378
1373 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1379 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1374 Close help window if exiting igrid.
1380 Close help window if exiting igrid.
1375
1381
1376 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1382 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1377
1383
1378 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1384 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1379 before calling functions from readline.
1385 before calling functions from readline.
1380
1386
1381 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1387 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1382
1388
1383 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1389 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1384 igrid is a wxPython-based display object for ipipe. If your system has
1390 igrid is a wxPython-based display object for ipipe. If your system has
1385 wx installed igrid will be the default display. Without wx ipipe falls
1391 wx installed igrid will be the default display. Without wx ipipe falls
1386 back to ibrowse (which needs curses). If no curses is installed ipipe
1392 back to ibrowse (which needs curses). If no curses is installed ipipe
1387 falls back to idump.
1393 falls back to idump.
1388
1394
1389 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1395 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1390
1396
1391 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1397 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1392 my changes from yesterday, they introduced bugs. Will reactivate
1398 my changes from yesterday, they introduced bugs. Will reactivate
1393 once I get a correct solution, which will be much easier thanks to
1399 once I get a correct solution, which will be much easier thanks to
1394 Dan Milstein's new prefilter test suite.
1400 Dan Milstein's new prefilter test suite.
1395
1401
1396 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1402 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1397
1403
1398 * IPython/iplib.py (split_user_input): fix input splitting so we
1404 * IPython/iplib.py (split_user_input): fix input splitting so we
1399 don't attempt attribute accesses on things that can't possibly be
1405 don't attempt attribute accesses on things that can't possibly be
1400 valid Python attributes. After a bug report by Alex Schmolck.
1406 valid Python attributes. After a bug report by Alex Schmolck.
1401 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1407 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1402 %magic with explicit % prefix.
1408 %magic with explicit % prefix.
1403
1409
1404 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1410 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1405
1411
1406 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1412 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1407 avoid a DeprecationWarning from GTK.
1413 avoid a DeprecationWarning from GTK.
1408
1414
1409 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1415 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1410
1416
1411 * IPython/genutils.py (clock): I modified clock() to return total
1417 * IPython/genutils.py (clock): I modified clock() to return total
1412 time, user+system. This is a more commonly needed metric. I also
1418 time, user+system. This is a more commonly needed metric. I also
1413 introduced the new clocku/clocks to get only user/system time if
1419 introduced the new clocku/clocks to get only user/system time if
1414 one wants those instead.
1420 one wants those instead.
1415
1421
1416 ***WARNING: API CHANGE*** clock() used to return only user time,
1422 ***WARNING: API CHANGE*** clock() used to return only user time,
1417 so if you want exactly the same results as before, use clocku
1423 so if you want exactly the same results as before, use clocku
1418 instead.
1424 instead.
1419
1425
1420 2007-02-22 Ville Vainio <vivainio@gmail.com>
1426 2007-02-22 Ville Vainio <vivainio@gmail.com>
1421
1427
1422 * IPython/Extensions/ipy_p4.py: Extension for improved
1428 * IPython/Extensions/ipy_p4.py: Extension for improved
1423 p4 (perforce version control system) experience.
1429 p4 (perforce version control system) experience.
1424 Adds %p4 magic with p4 command completion and
1430 Adds %p4 magic with p4 command completion and
1425 automatic -G argument (marshall output as python dict)
1431 automatic -G argument (marshall output as python dict)
1426
1432
1427 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1433 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1428
1434
1429 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1435 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1430 stop marks.
1436 stop marks.
1431 (ClearingMixin): a simple mixin to easily make a Demo class clear
1437 (ClearingMixin): a simple mixin to easily make a Demo class clear
1432 the screen in between blocks and have empty marquees. The
1438 the screen in between blocks and have empty marquees. The
1433 ClearDemo and ClearIPDemo classes that use it are included.
1439 ClearDemo and ClearIPDemo classes that use it are included.
1434
1440
1435 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1441 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1436
1442
1437 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1443 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1438 protect against exceptions at Python shutdown time. Patch
1444 protect against exceptions at Python shutdown time. Patch
1439 sumbmitted to upstream.
1445 sumbmitted to upstream.
1440
1446
1441 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1447 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1442
1448
1443 * IPython/Extensions/ibrowse.py: If entering the first object level
1449 * IPython/Extensions/ibrowse.py: If entering the first object level
1444 (i.e. the object for which the browser has been started) fails,
1450 (i.e. the object for which the browser has been started) fails,
1445 now the error is raised directly (aborting the browser) instead of
1451 now the error is raised directly (aborting the browser) instead of
1446 running into an empty levels list later.
1452 running into an empty levels list later.
1447
1453
1448 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1454 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1449
1455
1450 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1456 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1451 for the noitem object.
1457 for the noitem object.
1452
1458
1453 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1459 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1454
1460
1455 * IPython/completer.py (Completer.attr_matches): Fix small
1461 * IPython/completer.py (Completer.attr_matches): Fix small
1456 tab-completion bug with Enthought Traits objects with units.
1462 tab-completion bug with Enthought Traits objects with units.
1457 Thanks to a bug report by Tom Denniston
1463 Thanks to a bug report by Tom Denniston
1458 <tom.denniston-AT-alum.dartmouth.org>.
1464 <tom.denniston-AT-alum.dartmouth.org>.
1459
1465
1460 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1466 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1461
1467
1462 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1468 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1463 bug where only .ipy or .py would be completed. Once the first
1469 bug where only .ipy or .py would be completed. Once the first
1464 argument to %run has been given, all completions are valid because
1470 argument to %run has been given, all completions are valid because
1465 they are the arguments to the script, which may well be non-python
1471 they are the arguments to the script, which may well be non-python
1466 filenames.
1472 filenames.
1467
1473
1468 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1474 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1469 to irunner to allow it to correctly support real doctesting of
1475 to irunner to allow it to correctly support real doctesting of
1470 out-of-process ipython code.
1476 out-of-process ipython code.
1471
1477
1472 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1478 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1473 title an option (-noterm_title) because it completely breaks
1479 title an option (-noterm_title) because it completely breaks
1474 doctesting.
1480 doctesting.
1475
1481
1476 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1482 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1477
1483
1478 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1484 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1479
1485
1480 * IPython/irunner.py (main): fix small bug where extensions were
1486 * IPython/irunner.py (main): fix small bug where extensions were
1481 not being correctly recognized.
1487 not being correctly recognized.
1482
1488
1483 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1489 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1484
1490
1485 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1491 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1486 a string containing a single line yields the string itself as the
1492 a string containing a single line yields the string itself as the
1487 only item.
1493 only item.
1488
1494
1489 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1495 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1490 object if it's the same as the one on the last level (This avoids
1496 object if it's the same as the one on the last level (This avoids
1491 infinite recursion for one line strings).
1497 infinite recursion for one line strings).
1492
1498
1493 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1499 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1494
1500
1495 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1501 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1496 all output streams before printing tracebacks. This ensures that
1502 all output streams before printing tracebacks. This ensures that
1497 user output doesn't end up interleaved with traceback output.
1503 user output doesn't end up interleaved with traceback output.
1498
1504
1499 2007-01-10 Ville Vainio <vivainio@gmail.com>
1505 2007-01-10 Ville Vainio <vivainio@gmail.com>
1500
1506
1501 * Extensions/envpersist.py: Turbocharged %env that remembers
1507 * Extensions/envpersist.py: Turbocharged %env that remembers
1502 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1508 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1503 "%env VISUAL=jed".
1509 "%env VISUAL=jed".
1504
1510
1505 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1511 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1506
1512
1507 * IPython/iplib.py (showtraceback): ensure that we correctly call
1513 * IPython/iplib.py (showtraceback): ensure that we correctly call
1508 custom handlers in all cases (some with pdb were slipping through,
1514 custom handlers in all cases (some with pdb were slipping through,
1509 but I'm not exactly sure why).
1515 but I'm not exactly sure why).
1510
1516
1511 * IPython/Debugger.py (Tracer.__init__): added new class to
1517 * IPython/Debugger.py (Tracer.__init__): added new class to
1512 support set_trace-like usage of IPython's enhanced debugger.
1518 support set_trace-like usage of IPython's enhanced debugger.
1513
1519
1514 2006-12-24 Ville Vainio <vivainio@gmail.com>
1520 2006-12-24 Ville Vainio <vivainio@gmail.com>
1515
1521
1516 * ipmaker.py: more informative message when ipy_user_conf
1522 * ipmaker.py: more informative message when ipy_user_conf
1517 import fails (suggest running %upgrade).
1523 import fails (suggest running %upgrade).
1518
1524
1519 * tools/run_ipy_in_profiler.py: Utility to see where
1525 * tools/run_ipy_in_profiler.py: Utility to see where
1520 the time during IPython startup is spent.
1526 the time during IPython startup is spent.
1521
1527
1522 2006-12-20 Ville Vainio <vivainio@gmail.com>
1528 2006-12-20 Ville Vainio <vivainio@gmail.com>
1523
1529
1524 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1530 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1525
1531
1526 * ipapi.py: Add new ipapi method, expand_alias.
1532 * ipapi.py: Add new ipapi method, expand_alias.
1527
1533
1528 * Release.py: Bump up version to 0.7.4.svn
1534 * Release.py: Bump up version to 0.7.4.svn
1529
1535
1530 2006-12-17 Ville Vainio <vivainio@gmail.com>
1536 2006-12-17 Ville Vainio <vivainio@gmail.com>
1531
1537
1532 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1538 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1533 to work properly on posix too
1539 to work properly on posix too
1534
1540
1535 * Release.py: Update revnum (version is still just 0.7.3).
1541 * Release.py: Update revnum (version is still just 0.7.3).
1536
1542
1537 2006-12-15 Ville Vainio <vivainio@gmail.com>
1543 2006-12-15 Ville Vainio <vivainio@gmail.com>
1538
1544
1539 * scripts/ipython_win_post_install: create ipython.py in
1545 * scripts/ipython_win_post_install: create ipython.py in
1540 prefix + "/scripts".
1546 prefix + "/scripts".
1541
1547
1542 * Release.py: Update version to 0.7.3.
1548 * Release.py: Update version to 0.7.3.
1543
1549
1544 2006-12-14 Ville Vainio <vivainio@gmail.com>
1550 2006-12-14 Ville Vainio <vivainio@gmail.com>
1545
1551
1546 * scripts/ipython_win_post_install: Overwrite old shortcuts
1552 * scripts/ipython_win_post_install: Overwrite old shortcuts
1547 if they already exist
1553 if they already exist
1548
1554
1549 * Release.py: release 0.7.3rc2
1555 * Release.py: release 0.7.3rc2
1550
1556
1551 2006-12-13 Ville Vainio <vivainio@gmail.com>
1557 2006-12-13 Ville Vainio <vivainio@gmail.com>
1552
1558
1553 * Branch and update Release.py for 0.7.3rc1
1559 * Branch and update Release.py for 0.7.3rc1
1554
1560
1555 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1561 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1556
1562
1557 * IPython/Shell.py (IPShellWX): update for current WX naming
1563 * IPython/Shell.py (IPShellWX): update for current WX naming
1558 conventions, to avoid a deprecation warning with current WX
1564 conventions, to avoid a deprecation warning with current WX
1559 versions. Thanks to a report by Danny Shevitz.
1565 versions. Thanks to a report by Danny Shevitz.
1560
1566
1561 2006-12-12 Ville Vainio <vivainio@gmail.com>
1567 2006-12-12 Ville Vainio <vivainio@gmail.com>
1562
1568
1563 * ipmaker.py: apply david cournapeau's patch to make
1569 * ipmaker.py: apply david cournapeau's patch to make
1564 import_some work properly even when ipythonrc does
1570 import_some work properly even when ipythonrc does
1565 import_some on empty list (it was an old bug!).
1571 import_some on empty list (it was an old bug!).
1566
1572
1567 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1573 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1568 Add deprecation note to ipythonrc and a url to wiki
1574 Add deprecation note to ipythonrc and a url to wiki
1569 in ipy_user_conf.py
1575 in ipy_user_conf.py
1570
1576
1571
1577
1572 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1578 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1573 as if it was typed on IPython command prompt, i.e.
1579 as if it was typed on IPython command prompt, i.e.
1574 as IPython script.
1580 as IPython script.
1575
1581
1576 * example-magic.py, magic_grepl.py: remove outdated examples
1582 * example-magic.py, magic_grepl.py: remove outdated examples
1577
1583
1578 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1584 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1579
1585
1580 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1586 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1581 is called before any exception has occurred.
1587 is called before any exception has occurred.
1582
1588
1583 2006-12-08 Ville Vainio <vivainio@gmail.com>
1589 2006-12-08 Ville Vainio <vivainio@gmail.com>
1584
1590
1585 * Extensions/ipy_stock_completers.py: fix cd completer
1591 * Extensions/ipy_stock_completers.py: fix cd completer
1586 to translate /'s to \'s again.
1592 to translate /'s to \'s again.
1587
1593
1588 * completer.py: prevent traceback on file completions w/
1594 * completer.py: prevent traceback on file completions w/
1589 backslash.
1595 backslash.
1590
1596
1591 * Release.py: Update release number to 0.7.3b3 for release
1597 * Release.py: Update release number to 0.7.3b3 for release
1592
1598
1593 2006-12-07 Ville Vainio <vivainio@gmail.com>
1599 2006-12-07 Ville Vainio <vivainio@gmail.com>
1594
1600
1595 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1601 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1596 while executing external code. Provides more shell-like behaviour
1602 while executing external code. Provides more shell-like behaviour
1597 and overall better response to ctrl + C / ctrl + break.
1603 and overall better response to ctrl + C / ctrl + break.
1598
1604
1599 * tools/make_tarball.py: new script to create tarball straight from svn
1605 * tools/make_tarball.py: new script to create tarball straight from svn
1600 (setup.py sdist doesn't work on win32).
1606 (setup.py sdist doesn't work on win32).
1601
1607
1602 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1608 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1603 on dirnames with spaces and use the default completer instead.
1609 on dirnames with spaces and use the default completer instead.
1604
1610
1605 * Revision.py: Change version to 0.7.3b2 for release.
1611 * Revision.py: Change version to 0.7.3b2 for release.
1606
1612
1607 2006-12-05 Ville Vainio <vivainio@gmail.com>
1613 2006-12-05 Ville Vainio <vivainio@gmail.com>
1608
1614
1609 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1615 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1610 pydb patch 4 (rm debug printing, py 2.5 checking)
1616 pydb patch 4 (rm debug printing, py 2.5 checking)
1611
1617
1612 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1618 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1613 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1619 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1614 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1620 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1615 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1621 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1616 object the cursor was on before the refresh. The command "markrange" is
1622 object the cursor was on before the refresh. The command "markrange" is
1617 mapped to "%" now.
1623 mapped to "%" now.
1618 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1624 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1619
1625
1620 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1626 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1621
1627
1622 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1628 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1623 interactive debugger on the last traceback, without having to call
1629 interactive debugger on the last traceback, without having to call
1624 %pdb and rerun your code. Made minor changes in various modules,
1630 %pdb and rerun your code. Made minor changes in various modules,
1625 should automatically recognize pydb if available.
1631 should automatically recognize pydb if available.
1626
1632
1627 2006-11-28 Ville Vainio <vivainio@gmail.com>
1633 2006-11-28 Ville Vainio <vivainio@gmail.com>
1628
1634
1629 * completer.py: If the text start with !, show file completions
1635 * completer.py: If the text start with !, show file completions
1630 properly. This helps when trying to complete command name
1636 properly. This helps when trying to complete command name
1631 for shell escapes.
1637 for shell escapes.
1632
1638
1633 2006-11-27 Ville Vainio <vivainio@gmail.com>
1639 2006-11-27 Ville Vainio <vivainio@gmail.com>
1634
1640
1635 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1641 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1636 der Walt. Clean up svn and hg completers by using a common
1642 der Walt. Clean up svn and hg completers by using a common
1637 vcs_completer.
1643 vcs_completer.
1638
1644
1639 2006-11-26 Ville Vainio <vivainio@gmail.com>
1645 2006-11-26 Ville Vainio <vivainio@gmail.com>
1640
1646
1641 * Remove ipconfig and %config; you should use _ip.options structure
1647 * Remove ipconfig and %config; you should use _ip.options structure
1642 directly instead!
1648 directly instead!
1643
1649
1644 * genutils.py: add wrap_deprecated function for deprecating callables
1650 * genutils.py: add wrap_deprecated function for deprecating callables
1645
1651
1646 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1652 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1647 _ip.system instead. ipalias is redundant.
1653 _ip.system instead. ipalias is redundant.
1648
1654
1649 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1655 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1650 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1656 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1651 explicit.
1657 explicit.
1652
1658
1653 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1659 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1654 completer. Try it by entering 'hg ' and pressing tab.
1660 completer. Try it by entering 'hg ' and pressing tab.
1655
1661
1656 * macro.py: Give Macro a useful __repr__ method
1662 * macro.py: Give Macro a useful __repr__ method
1657
1663
1658 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1664 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1659
1665
1660 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1666 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1661 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1667 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1662 we don't get a duplicate ipipe module, where registration of the xrepr
1668 we don't get a duplicate ipipe module, where registration of the xrepr
1663 implementation for Text is useless.
1669 implementation for Text is useless.
1664
1670
1665 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1671 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1666
1672
1667 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1673 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1668
1674
1669 2006-11-24 Ville Vainio <vivainio@gmail.com>
1675 2006-11-24 Ville Vainio <vivainio@gmail.com>
1670
1676
1671 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1677 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1672 try to use "cProfile" instead of the slower pure python
1678 try to use "cProfile" instead of the slower pure python
1673 "profile"
1679 "profile"
1674
1680
1675 2006-11-23 Ville Vainio <vivainio@gmail.com>
1681 2006-11-23 Ville Vainio <vivainio@gmail.com>
1676
1682
1677 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1683 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1678 Qt+IPython+Designer link in documentation.
1684 Qt+IPython+Designer link in documentation.
1679
1685
1680 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1686 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1681 correct Pdb object to %pydb.
1687 correct Pdb object to %pydb.
1682
1688
1683
1689
1684 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1690 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1685 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1691 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1686 generic xrepr(), otherwise the list implementation would kick in.
1692 generic xrepr(), otherwise the list implementation would kick in.
1687
1693
1688 2006-11-21 Ville Vainio <vivainio@gmail.com>
1694 2006-11-21 Ville Vainio <vivainio@gmail.com>
1689
1695
1690 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1696 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1691 with one from UserConfig.
1697 with one from UserConfig.
1692
1698
1693 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1699 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1694 it was missing which broke the sh profile.
1700 it was missing which broke the sh profile.
1695
1701
1696 * completer.py: file completer now uses explicit '/' instead
1702 * completer.py: file completer now uses explicit '/' instead
1697 of os.path.join, expansion of 'foo' was broken on win32
1703 of os.path.join, expansion of 'foo' was broken on win32
1698 if there was one directory with name 'foobar'.
1704 if there was one directory with name 'foobar'.
1699
1705
1700 * A bunch of patches from Kirill Smelkov:
1706 * A bunch of patches from Kirill Smelkov:
1701
1707
1702 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1708 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1703
1709
1704 * [patch 7/9] Implement %page -r (page in raw mode) -
1710 * [patch 7/9] Implement %page -r (page in raw mode) -
1705
1711
1706 * [patch 5/9] ScientificPython webpage has moved
1712 * [patch 5/9] ScientificPython webpage has moved
1707
1713
1708 * [patch 4/9] The manual mentions %ds, should be %dhist
1714 * [patch 4/9] The manual mentions %ds, should be %dhist
1709
1715
1710 * [patch 3/9] Kill old bits from %prun doc.
1716 * [patch 3/9] Kill old bits from %prun doc.
1711
1717
1712 * [patch 1/9] Fix typos here and there.
1718 * [patch 1/9] Fix typos here and there.
1713
1719
1714 2006-11-08 Ville Vainio <vivainio@gmail.com>
1720 2006-11-08 Ville Vainio <vivainio@gmail.com>
1715
1721
1716 * completer.py (attr_matches): catch all exceptions raised
1722 * completer.py (attr_matches): catch all exceptions raised
1717 by eval of expr with dots.
1723 by eval of expr with dots.
1718
1724
1719 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1725 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1720
1726
1721 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1727 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1722 input if it starts with whitespace. This allows you to paste
1728 input if it starts with whitespace. This allows you to paste
1723 indented input from any editor without manually having to type in
1729 indented input from any editor without manually having to type in
1724 the 'if 1:', which is convenient when working interactively.
1730 the 'if 1:', which is convenient when working interactively.
1725 Slightly modifed version of a patch by Bo Peng
1731 Slightly modifed version of a patch by Bo Peng
1726 <bpeng-AT-rice.edu>.
1732 <bpeng-AT-rice.edu>.
1727
1733
1728 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1734 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1729
1735
1730 * IPython/irunner.py (main): modified irunner so it automatically
1736 * IPython/irunner.py (main): modified irunner so it automatically
1731 recognizes the right runner to use based on the extension (.py for
1737 recognizes the right runner to use based on the extension (.py for
1732 python, .ipy for ipython and .sage for sage).
1738 python, .ipy for ipython and .sage for sage).
1733
1739
1734 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1740 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1735 visible in ipapi as ip.config(), to programatically control the
1741 visible in ipapi as ip.config(), to programatically control the
1736 internal rc object. There's an accompanying %config magic for
1742 internal rc object. There's an accompanying %config magic for
1737 interactive use, which has been enhanced to match the
1743 interactive use, which has been enhanced to match the
1738 funtionality in ipconfig.
1744 funtionality in ipconfig.
1739
1745
1740 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1746 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1741 so it's not just a toggle, it now takes an argument. Add support
1747 so it's not just a toggle, it now takes an argument. Add support
1742 for a customizable header when making system calls, as the new
1748 for a customizable header when making system calls, as the new
1743 system_header variable in the ipythonrc file.
1749 system_header variable in the ipythonrc file.
1744
1750
1745 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1751 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1746
1752
1747 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1753 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1748 generic functions (using Philip J. Eby's simplegeneric package).
1754 generic functions (using Philip J. Eby's simplegeneric package).
1749 This makes it possible to customize the display of third-party classes
1755 This makes it possible to customize the display of third-party classes
1750 without having to monkeypatch them. xiter() no longer supports a mode
1756 without having to monkeypatch them. xiter() no longer supports a mode
1751 argument and the XMode class has been removed. The same functionality can
1757 argument and the XMode class has been removed. The same functionality can
1752 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1758 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1753 One consequence of the switch to generic functions is that xrepr() and
1759 One consequence of the switch to generic functions is that xrepr() and
1754 xattrs() implementation must define the default value for the mode
1760 xattrs() implementation must define the default value for the mode
1755 argument themselves and xattrs() implementations must return real
1761 argument themselves and xattrs() implementations must return real
1756 descriptors.
1762 descriptors.
1757
1763
1758 * IPython/external: This new subpackage will contain all third-party
1764 * IPython/external: This new subpackage will contain all third-party
1759 packages that are bundled with IPython. (The first one is simplegeneric).
1765 packages that are bundled with IPython. (The first one is simplegeneric).
1760
1766
1761 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1767 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1762 directory which as been dropped in r1703.
1768 directory which as been dropped in r1703.
1763
1769
1764 * IPython/Extensions/ipipe.py (iless): Fixed.
1770 * IPython/Extensions/ipipe.py (iless): Fixed.
1765
1771
1766 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1772 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1767
1773
1768 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1774 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1769
1775
1770 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1776 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1771 handling in variable expansion so that shells and magics recognize
1777 handling in variable expansion so that shells and magics recognize
1772 function local scopes correctly. Bug reported by Brian.
1778 function local scopes correctly. Bug reported by Brian.
1773
1779
1774 * scripts/ipython: remove the very first entry in sys.path which
1780 * scripts/ipython: remove the very first entry in sys.path which
1775 Python auto-inserts for scripts, so that sys.path under IPython is
1781 Python auto-inserts for scripts, so that sys.path under IPython is
1776 as similar as possible to that under plain Python.
1782 as similar as possible to that under plain Python.
1777
1783
1778 * IPython/completer.py (IPCompleter.file_matches): Fix
1784 * IPython/completer.py (IPCompleter.file_matches): Fix
1779 tab-completion so that quotes are not closed unless the completion
1785 tab-completion so that quotes are not closed unless the completion
1780 is unambiguous. After a request by Stefan. Minor cleanups in
1786 is unambiguous. After a request by Stefan. Minor cleanups in
1781 ipy_stock_completers.
1787 ipy_stock_completers.
1782
1788
1783 2006-11-02 Ville Vainio <vivainio@gmail.com>
1789 2006-11-02 Ville Vainio <vivainio@gmail.com>
1784
1790
1785 * ipy_stock_completers.py: Add %run and %cd completers.
1791 * ipy_stock_completers.py: Add %run and %cd completers.
1786
1792
1787 * completer.py: Try running custom completer for both
1793 * completer.py: Try running custom completer for both
1788 "foo" and "%foo" if the command is just "foo". Ignore case
1794 "foo" and "%foo" if the command is just "foo". Ignore case
1789 when filtering possible completions.
1795 when filtering possible completions.
1790
1796
1791 * UserConfig/ipy_user_conf.py: install stock completers as default
1797 * UserConfig/ipy_user_conf.py: install stock completers as default
1792
1798
1793 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1799 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1794 simplified readline history save / restore through a wrapper
1800 simplified readline history save / restore through a wrapper
1795 function
1801 function
1796
1802
1797
1803
1798 2006-10-31 Ville Vainio <vivainio@gmail.com>
1804 2006-10-31 Ville Vainio <vivainio@gmail.com>
1799
1805
1800 * strdispatch.py, completer.py, ipy_stock_completers.py:
1806 * strdispatch.py, completer.py, ipy_stock_completers.py:
1801 Allow str_key ("command") in completer hooks. Implement
1807 Allow str_key ("command") in completer hooks. Implement
1802 trivial completer for 'import' (stdlib modules only). Rename
1808 trivial completer for 'import' (stdlib modules only). Rename
1803 ipy_linux_package_managers.py to ipy_stock_completers.py.
1809 ipy_linux_package_managers.py to ipy_stock_completers.py.
1804 SVN completer.
1810 SVN completer.
1805
1811
1806 * Extensions/ledit.py: %magic line editor for easily and
1812 * Extensions/ledit.py: %magic line editor for easily and
1807 incrementally manipulating lists of strings. The magic command
1813 incrementally manipulating lists of strings. The magic command
1808 name is %led.
1814 name is %led.
1809
1815
1810 2006-10-30 Ville Vainio <vivainio@gmail.com>
1816 2006-10-30 Ville Vainio <vivainio@gmail.com>
1811
1817
1812 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1818 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1813 Bernsteins's patches for pydb integration.
1819 Bernsteins's patches for pydb integration.
1814 http://bashdb.sourceforge.net/pydb/
1820 http://bashdb.sourceforge.net/pydb/
1815
1821
1816 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1822 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1817 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1823 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1818 custom completer hook to allow the users to implement their own
1824 custom completer hook to allow the users to implement their own
1819 completers. See ipy_linux_package_managers.py for example. The
1825 completers. See ipy_linux_package_managers.py for example. The
1820 hook name is 'complete_command'.
1826 hook name is 'complete_command'.
1821
1827
1822 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1828 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1823
1829
1824 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1830 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1825 Numeric leftovers.
1831 Numeric leftovers.
1826
1832
1827 * ipython.el (py-execute-region): apply Stefan's patch to fix
1833 * ipython.el (py-execute-region): apply Stefan's patch to fix
1828 garbled results if the python shell hasn't been previously started.
1834 garbled results if the python shell hasn't been previously started.
1829
1835
1830 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1836 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1831 pretty generic function and useful for other things.
1837 pretty generic function and useful for other things.
1832
1838
1833 * IPython/OInspect.py (getsource): Add customizable source
1839 * IPython/OInspect.py (getsource): Add customizable source
1834 extractor. After a request/patch form W. Stein (SAGE).
1840 extractor. After a request/patch form W. Stein (SAGE).
1835
1841
1836 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1842 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1837 window size to a more reasonable value from what pexpect does,
1843 window size to a more reasonable value from what pexpect does,
1838 since their choice causes wrapping bugs with long input lines.
1844 since their choice causes wrapping bugs with long input lines.
1839
1845
1840 2006-10-28 Ville Vainio <vivainio@gmail.com>
1846 2006-10-28 Ville Vainio <vivainio@gmail.com>
1841
1847
1842 * Magic.py (%run): Save and restore the readline history from
1848 * Magic.py (%run): Save and restore the readline history from
1843 file around %run commands to prevent side effects from
1849 file around %run commands to prevent side effects from
1844 %runned programs that might use readline (e.g. pydb).
1850 %runned programs that might use readline (e.g. pydb).
1845
1851
1846 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1852 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1847 invoking the pydb enhanced debugger.
1853 invoking the pydb enhanced debugger.
1848
1854
1849 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1855 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1850
1856
1851 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1857 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1852 call the base class method and propagate the return value to
1858 call the base class method and propagate the return value to
1853 ifile. This is now done by path itself.
1859 ifile. This is now done by path itself.
1854
1860
1855 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1861 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1856
1862
1857 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1863 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1858 api: set_crash_handler(), to expose the ability to change the
1864 api: set_crash_handler(), to expose the ability to change the
1859 internal crash handler.
1865 internal crash handler.
1860
1866
1861 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1867 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1862 the various parameters of the crash handler so that apps using
1868 the various parameters of the crash handler so that apps using
1863 IPython as their engine can customize crash handling. Ipmlemented
1869 IPython as their engine can customize crash handling. Ipmlemented
1864 at the request of SAGE.
1870 at the request of SAGE.
1865
1871
1866 2006-10-14 Ville Vainio <vivainio@gmail.com>
1872 2006-10-14 Ville Vainio <vivainio@gmail.com>
1867
1873
1868 * Magic.py, ipython.el: applied first "safe" part of Rocky
1874 * Magic.py, ipython.el: applied first "safe" part of Rocky
1869 Bernstein's patch set for pydb integration.
1875 Bernstein's patch set for pydb integration.
1870
1876
1871 * Magic.py (%unalias, %alias): %store'd aliases can now be
1877 * Magic.py (%unalias, %alias): %store'd aliases can now be
1872 removed with '%unalias'. %alias w/o args now shows most
1878 removed with '%unalias'. %alias w/o args now shows most
1873 interesting (stored / manually defined) aliases last
1879 interesting (stored / manually defined) aliases last
1874 where they catch the eye w/o scrolling.
1880 where they catch the eye w/o scrolling.
1875
1881
1876 * Magic.py (%rehashx), ext_rehashdir.py: files with
1882 * Magic.py (%rehashx), ext_rehashdir.py: files with
1877 'py' extension are always considered executable, even
1883 'py' extension are always considered executable, even
1878 when not in PATHEXT environment variable.
1884 when not in PATHEXT environment variable.
1879
1885
1880 2006-10-12 Ville Vainio <vivainio@gmail.com>
1886 2006-10-12 Ville Vainio <vivainio@gmail.com>
1881
1887
1882 * jobctrl.py: Add new "jobctrl" extension for spawning background
1888 * jobctrl.py: Add new "jobctrl" extension for spawning background
1883 processes with "&find /". 'import jobctrl' to try it out. Requires
1889 processes with "&find /". 'import jobctrl' to try it out. Requires
1884 'subprocess' module, standard in python 2.4+.
1890 'subprocess' module, standard in python 2.4+.
1885
1891
1886 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1892 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1887 so if foo -> bar and bar -> baz, then foo -> baz.
1893 so if foo -> bar and bar -> baz, then foo -> baz.
1888
1894
1889 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1895 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1890
1896
1891 * IPython/Magic.py (Magic.parse_options): add a new posix option
1897 * IPython/Magic.py (Magic.parse_options): add a new posix option
1892 to allow parsing of input args in magics that doesn't strip quotes
1898 to allow parsing of input args in magics that doesn't strip quotes
1893 (if posix=False). This also closes %timeit bug reported by
1899 (if posix=False). This also closes %timeit bug reported by
1894 Stefan.
1900 Stefan.
1895
1901
1896 2006-10-03 Ville Vainio <vivainio@gmail.com>
1902 2006-10-03 Ville Vainio <vivainio@gmail.com>
1897
1903
1898 * iplib.py (raw_input, interact): Return ValueError catching for
1904 * iplib.py (raw_input, interact): Return ValueError catching for
1899 raw_input. Fixes infinite loop for sys.stdin.close() or
1905 raw_input. Fixes infinite loop for sys.stdin.close() or
1900 sys.stdout.close().
1906 sys.stdout.close().
1901
1907
1902 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1908 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1903
1909
1904 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1910 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1905 to help in handling doctests. irunner is now pretty useful for
1911 to help in handling doctests. irunner is now pretty useful for
1906 running standalone scripts and simulate a full interactive session
1912 running standalone scripts and simulate a full interactive session
1907 in a format that can be then pasted as a doctest.
1913 in a format that can be then pasted as a doctest.
1908
1914
1909 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1915 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1910 on top of the default (useless) ones. This also fixes the nasty
1916 on top of the default (useless) ones. This also fixes the nasty
1911 way in which 2.5's Quitter() exits (reverted [1785]).
1917 way in which 2.5's Quitter() exits (reverted [1785]).
1912
1918
1913 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1919 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1914 2.5.
1920 2.5.
1915
1921
1916 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1922 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1917 color scheme is updated as well when color scheme is changed
1923 color scheme is updated as well when color scheme is changed
1918 interactively.
1924 interactively.
1919
1925
1920 2006-09-27 Ville Vainio <vivainio@gmail.com>
1926 2006-09-27 Ville Vainio <vivainio@gmail.com>
1921
1927
1922 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1928 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1923 infinite loop and just exit. It's a hack, but will do for a while.
1929 infinite loop and just exit. It's a hack, but will do for a while.
1924
1930
1925 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1931 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1926
1932
1927 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1933 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1928 the constructor, this makes it possible to get a list of only directories
1934 the constructor, this makes it possible to get a list of only directories
1929 or only files.
1935 or only files.
1930
1936
1931 2006-08-12 Ville Vainio <vivainio@gmail.com>
1937 2006-08-12 Ville Vainio <vivainio@gmail.com>
1932
1938
1933 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1939 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1934 they broke unittest
1940 they broke unittest
1935
1941
1936 2006-08-11 Ville Vainio <vivainio@gmail.com>
1942 2006-08-11 Ville Vainio <vivainio@gmail.com>
1937
1943
1938 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1944 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1939 by resolving issue properly, i.e. by inheriting FakeModule
1945 by resolving issue properly, i.e. by inheriting FakeModule
1940 from types.ModuleType. Pickling ipython interactive data
1946 from types.ModuleType. Pickling ipython interactive data
1941 should still work as usual (testing appreciated).
1947 should still work as usual (testing appreciated).
1942
1948
1943 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1949 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1944
1950
1945 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1951 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1946 running under python 2.3 with code from 2.4 to fix a bug with
1952 running under python 2.3 with code from 2.4 to fix a bug with
1947 help(). Reported by the Debian maintainers, Norbert Tretkowski
1953 help(). Reported by the Debian maintainers, Norbert Tretkowski
1948 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1954 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1949 <afayolle-AT-debian.org>.
1955 <afayolle-AT-debian.org>.
1950
1956
1951 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1957 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1952
1958
1953 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1959 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1954 (which was displaying "quit" twice).
1960 (which was displaying "quit" twice).
1955
1961
1956 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1962 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1957
1963
1958 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1964 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1959 the mode argument).
1965 the mode argument).
1960
1966
1961 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1967 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1962
1968
1963 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1969 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1964 not running under IPython.
1970 not running under IPython.
1965
1971
1966 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1972 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1967 and make it iterable (iterating over the attribute itself). Add two new
1973 and make it iterable (iterating over the attribute itself). Add two new
1968 magic strings for __xattrs__(): If the string starts with "-", the attribute
1974 magic strings for __xattrs__(): If the string starts with "-", the attribute
1969 will not be displayed in ibrowse's detail view (but it can still be
1975 will not be displayed in ibrowse's detail view (but it can still be
1970 iterated over). This makes it possible to add attributes that are large
1976 iterated over). This makes it possible to add attributes that are large
1971 lists or generator methods to the detail view. Replace magic attribute names
1977 lists or generator methods to the detail view. Replace magic attribute names
1972 and _attrname() and _getattr() with "descriptors": For each type of magic
1978 and _attrname() and _getattr() with "descriptors": For each type of magic
1973 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1979 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1974 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1980 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1975 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1981 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1976 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1982 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1977 are still supported.
1983 are still supported.
1978
1984
1979 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1985 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1980 fails in ibrowse.fetch(), the exception object is added as the last item
1986 fails in ibrowse.fetch(), the exception object is added as the last item
1981 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1987 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1982 a generator throws an exception midway through execution.
1988 a generator throws an exception midway through execution.
1983
1989
1984 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1990 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1985 encoding into methods.
1991 encoding into methods.
1986
1992
1987 2006-07-26 Ville Vainio <vivainio@gmail.com>
1993 2006-07-26 Ville Vainio <vivainio@gmail.com>
1988
1994
1989 * iplib.py: history now stores multiline input as single
1995 * iplib.py: history now stores multiline input as single
1990 history entries. Patch by Jorgen Cederlof.
1996 history entries. Patch by Jorgen Cederlof.
1991
1997
1992 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1998 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1993
1999
1994 * IPython/Extensions/ibrowse.py: Make cursor visible over
2000 * IPython/Extensions/ibrowse.py: Make cursor visible over
1995 non existing attributes.
2001 non existing attributes.
1996
2002
1997 2006-07-14 Walter Doerwald <walter@livinglogic.de>
2003 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1998
2004
1999 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
2005 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
2000 error output of the running command doesn't mess up the screen.
2006 error output of the running command doesn't mess up the screen.
2001
2007
2002 2006-07-13 Walter Doerwald <walter@livinglogic.de>
2008 2006-07-13 Walter Doerwald <walter@livinglogic.de>
2003
2009
2004 * IPython/Extensions/ipipe.py (isort): Make isort usable without
2010 * IPython/Extensions/ipipe.py (isort): Make isort usable without
2005 argument. This sorts the items themselves.
2011 argument. This sorts the items themselves.
2006
2012
2007 2006-07-12 Walter Doerwald <walter@livinglogic.de>
2013 2006-07-12 Walter Doerwald <walter@livinglogic.de>
2008
2014
2009 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
2015 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
2010 Compile expression strings into code objects. This should speed
2016 Compile expression strings into code objects. This should speed
2011 up ifilter and friends somewhat.
2017 up ifilter and friends somewhat.
2012
2018
2013 2006-07-08 Ville Vainio <vivainio@gmail.com>
2019 2006-07-08 Ville Vainio <vivainio@gmail.com>
2014
2020
2015 * Magic.py: %cpaste now strips > from the beginning of lines
2021 * Magic.py: %cpaste now strips > from the beginning of lines
2016 to ease pasting quoted code from emails. Contributed by
2022 to ease pasting quoted code from emails. Contributed by
2017 Stefan van der Walt.
2023 Stefan van der Walt.
2018
2024
2019 2006-06-29 Ville Vainio <vivainio@gmail.com>
2025 2006-06-29 Ville Vainio <vivainio@gmail.com>
2020
2026
2021 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
2027 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
2022 mode, patch contributed by Darren Dale. NEEDS TESTING!
2028 mode, patch contributed by Darren Dale. NEEDS TESTING!
2023
2029
2024 2006-06-28 Walter Doerwald <walter@livinglogic.de>
2030 2006-06-28 Walter Doerwald <walter@livinglogic.de>
2025
2031
2026 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
2032 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
2027 a blue background. Fix fetching new display rows when the browser
2033 a blue background. Fix fetching new display rows when the browser
2028 scrolls more than a screenful (e.g. by using the goto command).
2034 scrolls more than a screenful (e.g. by using the goto command).
2029
2035
2030 2006-06-27 Ville Vainio <vivainio@gmail.com>
2036 2006-06-27 Ville Vainio <vivainio@gmail.com>
2031
2037
2032 * Magic.py (_inspect, _ofind) Apply David Huard's
2038 * Magic.py (_inspect, _ofind) Apply David Huard's
2033 patch for displaying the correct docstring for 'property'
2039 patch for displaying the correct docstring for 'property'
2034 attributes.
2040 attributes.
2035
2041
2036 2006-06-23 Walter Doerwald <walter@livinglogic.de>
2042 2006-06-23 Walter Doerwald <walter@livinglogic.de>
2037
2043
2038 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
2044 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
2039 commands into the methods implementing them.
2045 commands into the methods implementing them.
2040
2046
2041 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
2047 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
2042
2048
2043 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
2049 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
2044 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
2050 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
2045 autoindent support was authored by Jin Liu.
2051 autoindent support was authored by Jin Liu.
2046
2052
2047 2006-06-22 Walter Doerwald <walter@livinglogic.de>
2053 2006-06-22 Walter Doerwald <walter@livinglogic.de>
2048
2054
2049 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
2055 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
2050 for keymaps with a custom class that simplifies handling.
2056 for keymaps with a custom class that simplifies handling.
2051
2057
2052 2006-06-19 Walter Doerwald <walter@livinglogic.de>
2058 2006-06-19 Walter Doerwald <walter@livinglogic.de>
2053
2059
2054 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
2060 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
2055 resizing. This requires Python 2.5 to work.
2061 resizing. This requires Python 2.5 to work.
2056
2062
2057 2006-06-16 Walter Doerwald <walter@livinglogic.de>
2063 2006-06-16 Walter Doerwald <walter@livinglogic.de>
2058
2064
2059 * IPython/Extensions/ibrowse.py: Add two new commands to
2065 * IPython/Extensions/ibrowse.py: Add two new commands to
2060 ibrowse: "hideattr" (mapped to "h") hides the attribute under
2066 ibrowse: "hideattr" (mapped to "h") hides the attribute under
2061 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
2067 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
2062 attributes again. Remapped the help command to "?". Display
2068 attributes again. Remapped the help command to "?". Display
2063 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
2069 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
2064 as keys for the "home" and "end" commands. Add three new commands
2070 as keys for the "home" and "end" commands. Add three new commands
2065 to the input mode for "find" and friends: "delend" (CTRL-K)
2071 to the input mode for "find" and friends: "delend" (CTRL-K)
2066 deletes to the end of line. "incsearchup" searches upwards in the
2072 deletes to the end of line. "incsearchup" searches upwards in the
2067 command history for an input that starts with the text before the cursor.
2073 command history for an input that starts with the text before the cursor.
2068 "incsearchdown" does the same downwards. Removed a bogus mapping of
2074 "incsearchdown" does the same downwards. Removed a bogus mapping of
2069 the x key to "delete".
2075 the x key to "delete".
2070
2076
2071 2006-06-15 Ville Vainio <vivainio@gmail.com>
2077 2006-06-15 Ville Vainio <vivainio@gmail.com>
2072
2078
2073 * iplib.py, hooks.py: Added new generate_prompt hook that can be
2079 * iplib.py, hooks.py: Added new generate_prompt hook that can be
2074 used to create prompts dynamically, instead of the "old" way of
2080 used to create prompts dynamically, instead of the "old" way of
2075 assigning "magic" strings to prompt_in1 and prompt_in2. The old
2081 assigning "magic" strings to prompt_in1 and prompt_in2. The old
2076 way still works (it's invoked by the default hook), of course.
2082 way still works (it's invoked by the default hook), of course.
2077
2083
2078 * Prompts.py: added generate_output_prompt hook for altering output
2084 * Prompts.py: added generate_output_prompt hook for altering output
2079 prompt
2085 prompt
2080
2086
2081 * Release.py: Changed version string to 0.7.3.svn.
2087 * Release.py: Changed version string to 0.7.3.svn.
2082
2088
2083 2006-06-15 Walter Doerwald <walter@livinglogic.de>
2089 2006-06-15 Walter Doerwald <walter@livinglogic.de>
2084
2090
2085 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
2091 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
2086 the call to fetch() always tries to fetch enough data for at least one
2092 the call to fetch() always tries to fetch enough data for at least one
2087 full screen. This makes it possible to simply call moveto(0,0,True) in
2093 full screen. This makes it possible to simply call moveto(0,0,True) in
2088 the constructor. Fix typos and removed the obsolete goto attribute.
2094 the constructor. Fix typos and removed the obsolete goto attribute.
2089
2095
2090 2006-06-12 Ville Vainio <vivainio@gmail.com>
2096 2006-06-12 Ville Vainio <vivainio@gmail.com>
2091
2097
2092 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
2098 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
2093 allowing $variable interpolation within multiline statements,
2099 allowing $variable interpolation within multiline statements,
2094 though so far only with "sh" profile for a testing period.
2100 though so far only with "sh" profile for a testing period.
2095 The patch also enables splitting long commands with \ but it
2101 The patch also enables splitting long commands with \ but it
2096 doesn't work properly yet.
2102 doesn't work properly yet.
2097
2103
2098 2006-06-12 Walter Doerwald <walter@livinglogic.de>
2104 2006-06-12 Walter Doerwald <walter@livinglogic.de>
2099
2105
2100 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
2106 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
2101 input history and the position of the cursor in the input history for
2107 input history and the position of the cursor in the input history for
2102 the find, findbackwards and goto command.
2108 the find, findbackwards and goto command.
2103
2109
2104 2006-06-10 Walter Doerwald <walter@livinglogic.de>
2110 2006-06-10 Walter Doerwald <walter@livinglogic.de>
2105
2111
2106 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
2112 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
2107 implements the basic functionality of browser commands that require
2113 implements the basic functionality of browser commands that require
2108 input. Reimplement the goto, find and findbackwards commands as
2114 input. Reimplement the goto, find and findbackwards commands as
2109 subclasses of _CommandInput. Add an input history and keymaps to those
2115 subclasses of _CommandInput. Add an input history and keymaps to those
2110 commands. Add "\r" as a keyboard shortcut for the enterdefault and
2116 commands. Add "\r" as a keyboard shortcut for the enterdefault and
2111 execute commands.
2117 execute commands.
2112
2118
2113 2006-06-07 Ville Vainio <vivainio@gmail.com>
2119 2006-06-07 Ville Vainio <vivainio@gmail.com>
2114
2120
2115 * iplib.py: ipython mybatch.ipy exits ipython immediately after
2121 * iplib.py: ipython mybatch.ipy exits ipython immediately after
2116 running the batch files instead of leaving the session open.
2122 running the batch files instead of leaving the session open.
2117
2123
2118 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
2124 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
2119
2125
2120 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
2126 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
2121 the original fix was incomplete. Patch submitted by W. Maier.
2127 the original fix was incomplete. Patch submitted by W. Maier.
2122
2128
2123 2006-06-07 Ville Vainio <vivainio@gmail.com>
2129 2006-06-07 Ville Vainio <vivainio@gmail.com>
2124
2130
2125 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
2131 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
2126 Confirmation prompts can be supressed by 'quiet' option.
2132 Confirmation prompts can be supressed by 'quiet' option.
2127 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
2133 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
2128
2134
2129 2006-06-06 *** Released version 0.7.2
2135 2006-06-06 *** Released version 0.7.2
2130
2136
2131 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
2137 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
2132
2138
2133 * IPython/Release.py (version): Made 0.7.2 final for release.
2139 * IPython/Release.py (version): Made 0.7.2 final for release.
2134 Repo tagged and release cut.
2140 Repo tagged and release cut.
2135
2141
2136 2006-06-05 Ville Vainio <vivainio@gmail.com>
2142 2006-06-05 Ville Vainio <vivainio@gmail.com>
2137
2143
2138 * Magic.py (magic_rehashx): Honor no_alias list earlier in
2144 * Magic.py (magic_rehashx): Honor no_alias list earlier in
2139 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
2145 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
2140
2146
2141 * upgrade_dir.py: try import 'path' module a bit harder
2147 * upgrade_dir.py: try import 'path' module a bit harder
2142 (for %upgrade)
2148 (for %upgrade)
2143
2149
2144 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
2150 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
2145
2151
2146 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
2152 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
2147 instead of looping 20 times.
2153 instead of looping 20 times.
2148
2154
2149 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
2155 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
2150 correctly at initialization time. Bug reported by Krishna Mohan
2156 correctly at initialization time. Bug reported by Krishna Mohan
2151 Gundu <gkmohan-AT-gmail.com> on the user list.
2157 Gundu <gkmohan-AT-gmail.com> on the user list.
2152
2158
2153 * IPython/Release.py (version): Mark 0.7.2 version to start
2159 * IPython/Release.py (version): Mark 0.7.2 version to start
2154 testing for release on 06/06.
2160 testing for release on 06/06.
2155
2161
2156 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
2162 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
2157
2163
2158 * scripts/irunner: thin script interface so users don't have to
2164 * scripts/irunner: thin script interface so users don't have to
2159 find the module and call it as an executable, since modules rarely
2165 find the module and call it as an executable, since modules rarely
2160 live in people's PATH.
2166 live in people's PATH.
2161
2167
2162 * IPython/irunner.py (InteractiveRunner.__init__): added
2168 * IPython/irunner.py (InteractiveRunner.__init__): added
2163 delaybeforesend attribute to control delays with newer versions of
2169 delaybeforesend attribute to control delays with newer versions of
2164 pexpect. Thanks to detailed help from pexpect's author, Noah
2170 pexpect. Thanks to detailed help from pexpect's author, Noah
2165 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
2171 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
2166 correctly (it works in NoColor mode).
2172 correctly (it works in NoColor mode).
2167
2173
2168 * IPython/iplib.py (handle_normal): fix nasty crash reported on
2174 * IPython/iplib.py (handle_normal): fix nasty crash reported on
2169 SAGE list, from improper log() calls.
2175 SAGE list, from improper log() calls.
2170
2176
2171 2006-05-31 Ville Vainio <vivainio@gmail.com>
2177 2006-05-31 Ville Vainio <vivainio@gmail.com>
2172
2178
2173 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
2179 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
2174 with args in parens to work correctly with dirs that have spaces.
2180 with args in parens to work correctly with dirs that have spaces.
2175
2181
2176 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
2182 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
2177
2183
2178 * IPython/Logger.py (Logger.logstart): add option to log raw input
2184 * IPython/Logger.py (Logger.logstart): add option to log raw input
2179 instead of the processed one. A -r flag was added to the
2185 instead of the processed one. A -r flag was added to the
2180 %logstart magic used for controlling logging.
2186 %logstart magic used for controlling logging.
2181
2187
2182 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
2188 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
2183
2189
2184 * IPython/iplib.py (InteractiveShell.__init__): add check for the
2190 * IPython/iplib.py (InteractiveShell.__init__): add check for the
2185 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
2191 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
2186 recognize the option. After a bug report by Will Maier. This
2192 recognize the option. After a bug report by Will Maier. This
2187 closes #64 (will do it after confirmation from W. Maier).
2193 closes #64 (will do it after confirmation from W. Maier).
2188
2194
2189 * IPython/irunner.py: New module to run scripts as if manually
2195 * IPython/irunner.py: New module to run scripts as if manually
2190 typed into an interactive environment, based on pexpect. After a
2196 typed into an interactive environment, based on pexpect. After a
2191 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
2197 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
2192 ipython-user list. Simple unittests in the tests/ directory.
2198 ipython-user list. Simple unittests in the tests/ directory.
2193
2199
2194 * tools/release: add Will Maier, OpenBSD port maintainer, to
2200 * tools/release: add Will Maier, OpenBSD port maintainer, to
2195 recepients list. We are now officially part of the OpenBSD ports:
2201 recepients list. We are now officially part of the OpenBSD ports:
2196 http://www.openbsd.org/ports.html ! Many thanks to Will for the
2202 http://www.openbsd.org/ports.html ! Many thanks to Will for the
2197 work.
2203 work.
2198
2204
2199 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
2205 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
2200
2206
2201 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
2207 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
2202 so that it doesn't break tkinter apps.
2208 so that it doesn't break tkinter apps.
2203
2209
2204 * IPython/iplib.py (_prefilter): fix bug where aliases would
2210 * IPython/iplib.py (_prefilter): fix bug where aliases would
2205 shadow variables when autocall was fully off. Reported by SAGE
2211 shadow variables when autocall was fully off. Reported by SAGE
2206 author William Stein.
2212 author William Stein.
2207
2213
2208 * IPython/OInspect.py (Inspector.__init__): add a flag to control
2214 * IPython/OInspect.py (Inspector.__init__): add a flag to control
2209 at what detail level strings are computed when foo? is requested.
2215 at what detail level strings are computed when foo? is requested.
2210 This allows users to ask for example that the string form of an
2216 This allows users to ask for example that the string form of an
2211 object is only computed when foo?? is called, or even never, by
2217 object is only computed when foo?? is called, or even never, by
2212 setting the object_info_string_level >= 2 in the configuration
2218 setting the object_info_string_level >= 2 in the configuration
2213 file. This new option has been added and documented. After a
2219 file. This new option has been added and documented. After a
2214 request by SAGE to be able to control the printing of very large
2220 request by SAGE to be able to control the printing of very large
2215 objects more easily.
2221 objects more easily.
2216
2222
2217 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
2223 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
2218
2224
2219 * IPython/ipmaker.py (make_IPython): remove the ipython call path
2225 * IPython/ipmaker.py (make_IPython): remove the ipython call path
2220 from sys.argv, to be 100% consistent with how Python itself works
2226 from sys.argv, to be 100% consistent with how Python itself works
2221 (as seen for example with python -i file.py). After a bug report
2227 (as seen for example with python -i file.py). After a bug report
2222 by Jeffrey Collins.
2228 by Jeffrey Collins.
2223
2229
2224 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
2230 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
2225 nasty bug which was preventing custom namespaces with -pylab,
2231 nasty bug which was preventing custom namespaces with -pylab,
2226 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
2232 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
2227 compatibility (long gone from mpl).
2233 compatibility (long gone from mpl).
2228
2234
2229 * IPython/ipapi.py (make_session): name change: create->make. We
2235 * IPython/ipapi.py (make_session): name change: create->make. We
2230 use make in other places (ipmaker,...), it's shorter and easier to
2236 use make in other places (ipmaker,...), it's shorter and easier to
2231 type and say, etc. I'm trying to clean things before 0.7.2 so
2237 type and say, etc. I'm trying to clean things before 0.7.2 so
2232 that I can keep things stable wrt to ipapi in the chainsaw branch.
2238 that I can keep things stable wrt to ipapi in the chainsaw branch.
2233
2239
2234 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
2240 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
2235 python-mode recognizes our debugger mode. Add support for
2241 python-mode recognizes our debugger mode. Add support for
2236 autoindent inside (X)emacs. After a patch sent in by Jin Liu
2242 autoindent inside (X)emacs. After a patch sent in by Jin Liu
2237 <m.liu.jin-AT-gmail.com> originally written by
2243 <m.liu.jin-AT-gmail.com> originally written by
2238 doxgen-AT-newsmth.net (with minor modifications for xemacs
2244 doxgen-AT-newsmth.net (with minor modifications for xemacs
2239 compatibility)
2245 compatibility)
2240
2246
2241 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
2247 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
2242 tracebacks when walking the stack so that the stack tracking system
2248 tracebacks when walking the stack so that the stack tracking system
2243 in emacs' python-mode can identify the frames correctly.
2249 in emacs' python-mode can identify the frames correctly.
2244
2250
2245 * IPython/ipmaker.py (make_IPython): make the internal (and
2251 * IPython/ipmaker.py (make_IPython): make the internal (and
2246 default config) autoedit_syntax value false by default. Too many
2252 default config) autoedit_syntax value false by default. Too many
2247 users have complained to me (both on and off-list) about problems
2253 users have complained to me (both on and off-list) about problems
2248 with this option being on by default, so I'm making it default to
2254 with this option being on by default, so I'm making it default to
2249 off. It can still be enabled by anyone via the usual mechanisms.
2255 off. It can still be enabled by anyone via the usual mechanisms.
2250
2256
2251 * IPython/completer.py (Completer.attr_matches): add support for
2257 * IPython/completer.py (Completer.attr_matches): add support for
2252 PyCrust-style _getAttributeNames magic method. Patch contributed
2258 PyCrust-style _getAttributeNames magic method. Patch contributed
2253 by <mscott-AT-goldenspud.com>. Closes #50.
2259 by <mscott-AT-goldenspud.com>. Closes #50.
2254
2260
2255 * IPython/iplib.py (InteractiveShell.__init__): remove the
2261 * IPython/iplib.py (InteractiveShell.__init__): remove the
2256 deletion of exit/quit from __builtin__, which can break
2262 deletion of exit/quit from __builtin__, which can break
2257 third-party tools like the Zope debugging console. The
2263 third-party tools like the Zope debugging console. The
2258 %exit/%quit magics remain. In general, it's probably a good idea
2264 %exit/%quit magics remain. In general, it's probably a good idea
2259 not to delete anything from __builtin__, since we never know what
2265 not to delete anything from __builtin__, since we never know what
2260 that will break. In any case, python now (for 2.5) will support
2266 that will break. In any case, python now (for 2.5) will support
2261 'real' exit/quit, so this issue is moot. Closes #55.
2267 'real' exit/quit, so this issue is moot. Closes #55.
2262
2268
2263 * IPython/genutils.py (with_obj): rename the 'with' function to
2269 * IPython/genutils.py (with_obj): rename the 'with' function to
2264 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
2270 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
2265 becomes a language keyword. Closes #53.
2271 becomes a language keyword. Closes #53.
2266
2272
2267 * IPython/FakeModule.py (FakeModule.__init__): add a proper
2273 * IPython/FakeModule.py (FakeModule.__init__): add a proper
2268 __file__ attribute to this so it fools more things into thinking
2274 __file__ attribute to this so it fools more things into thinking
2269 it is a real module. Closes #59.
2275 it is a real module. Closes #59.
2270
2276
2271 * IPython/Magic.py (magic_edit): add -n option to open the editor
2277 * IPython/Magic.py (magic_edit): add -n option to open the editor
2272 at a specific line number. After a patch by Stefan van der Walt.
2278 at a specific line number. After a patch by Stefan van der Walt.
2273
2279
2274 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
2280 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
2275
2281
2276 * IPython/iplib.py (edit_syntax_error): fix crash when for some
2282 * IPython/iplib.py (edit_syntax_error): fix crash when for some
2277 reason the file could not be opened. After automatic crash
2283 reason the file could not be opened. After automatic crash
2278 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
2284 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
2279 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
2285 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
2280 (_should_recompile): Don't fire editor if using %bg, since there
2286 (_should_recompile): Don't fire editor if using %bg, since there
2281 is no file in the first place. From the same report as above.
2287 is no file in the first place. From the same report as above.
2282 (raw_input): protect against faulty third-party prefilters. After
2288 (raw_input): protect against faulty third-party prefilters. After
2283 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
2289 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
2284 while running under SAGE.
2290 while running under SAGE.
2285
2291
2286 2006-05-23 Ville Vainio <vivainio@gmail.com>
2292 2006-05-23 Ville Vainio <vivainio@gmail.com>
2287
2293
2288 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2294 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2289 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2295 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2290 now returns None (again), unless dummy is specifically allowed by
2296 now returns None (again), unless dummy is specifically allowed by
2291 ipapi.get(allow_dummy=True).
2297 ipapi.get(allow_dummy=True).
2292
2298
2293 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2299 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2294
2300
2295 * IPython: remove all 2.2-compatibility objects and hacks from
2301 * IPython: remove all 2.2-compatibility objects and hacks from
2296 everywhere, since we only support 2.3 at this point. Docs
2302 everywhere, since we only support 2.3 at this point. Docs
2297 updated.
2303 updated.
2298
2304
2299 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2305 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2300 Anything requiring extra validation can be turned into a Python
2306 Anything requiring extra validation can be turned into a Python
2301 property in the future. I used a property for the db one b/c
2307 property in the future. I used a property for the db one b/c
2302 there was a nasty circularity problem with the initialization
2308 there was a nasty circularity problem with the initialization
2303 order, which right now I don't have time to clean up.
2309 order, which right now I don't have time to clean up.
2304
2310
2305 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2311 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2306 another locking bug reported by Jorgen. I'm not 100% sure though,
2312 another locking bug reported by Jorgen. I'm not 100% sure though,
2307 so more testing is needed...
2313 so more testing is needed...
2308
2314
2309 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2315 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2310
2316
2311 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2317 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2312 local variables from any routine in user code (typically executed
2318 local variables from any routine in user code (typically executed
2313 with %run) directly into the interactive namespace. Very useful
2319 with %run) directly into the interactive namespace. Very useful
2314 when doing complex debugging.
2320 when doing complex debugging.
2315 (IPythonNotRunning): Changed the default None object to a dummy
2321 (IPythonNotRunning): Changed the default None object to a dummy
2316 whose attributes can be queried as well as called without
2322 whose attributes can be queried as well as called without
2317 exploding, to ease writing code which works transparently both in
2323 exploding, to ease writing code which works transparently both in
2318 and out of ipython and uses some of this API.
2324 and out of ipython and uses some of this API.
2319
2325
2320 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2326 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2321
2327
2322 * IPython/hooks.py (result_display): Fix the fact that our display
2328 * IPython/hooks.py (result_display): Fix the fact that our display
2323 hook was using str() instead of repr(), as the default python
2329 hook was using str() instead of repr(), as the default python
2324 console does. This had gone unnoticed b/c it only happened if
2330 console does. This had gone unnoticed b/c it only happened if
2325 %Pprint was off, but the inconsistency was there.
2331 %Pprint was off, but the inconsistency was there.
2326
2332
2327 2006-05-15 Ville Vainio <vivainio@gmail.com>
2333 2006-05-15 Ville Vainio <vivainio@gmail.com>
2328
2334
2329 * Oinspect.py: Only show docstring for nonexisting/binary files
2335 * Oinspect.py: Only show docstring for nonexisting/binary files
2330 when doing object??, closing ticket #62
2336 when doing object??, closing ticket #62
2331
2337
2332 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2338 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2333
2339
2334 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2340 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2335 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2341 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2336 was being released in a routine which hadn't checked if it had
2342 was being released in a routine which hadn't checked if it had
2337 been the one to acquire it.
2343 been the one to acquire it.
2338
2344
2339 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2345 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2340
2346
2341 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2347 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2342
2348
2343 2006-04-11 Ville Vainio <vivainio@gmail.com>
2349 2006-04-11 Ville Vainio <vivainio@gmail.com>
2344
2350
2345 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2351 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2346 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2352 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2347 prefilters, allowing stuff like magics and aliases in the file.
2353 prefilters, allowing stuff like magics and aliases in the file.
2348
2354
2349 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2355 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2350 added. Supported now are "%clear in" and "%clear out" (clear input and
2356 added. Supported now are "%clear in" and "%clear out" (clear input and
2351 output history, respectively). Also fixed CachedOutput.flush to
2357 output history, respectively). Also fixed CachedOutput.flush to
2352 properly flush the output cache.
2358 properly flush the output cache.
2353
2359
2354 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2360 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2355 half-success (and fail explicitly).
2361 half-success (and fail explicitly).
2356
2362
2357 2006-03-28 Ville Vainio <vivainio@gmail.com>
2363 2006-03-28 Ville Vainio <vivainio@gmail.com>
2358
2364
2359 * iplib.py: Fix quoting of aliases so that only argless ones
2365 * iplib.py: Fix quoting of aliases so that only argless ones
2360 are quoted
2366 are quoted
2361
2367
2362 2006-03-28 Ville Vainio <vivainio@gmail.com>
2368 2006-03-28 Ville Vainio <vivainio@gmail.com>
2363
2369
2364 * iplib.py: Quote aliases with spaces in the name.
2370 * iplib.py: Quote aliases with spaces in the name.
2365 "c:\program files\blah\bin" is now legal alias target.
2371 "c:\program files\blah\bin" is now legal alias target.
2366
2372
2367 * ext_rehashdir.py: Space no longer allowed as arg
2373 * ext_rehashdir.py: Space no longer allowed as arg
2368 separator, since space is legal in path names.
2374 separator, since space is legal in path names.
2369
2375
2370 2006-03-16 Ville Vainio <vivainio@gmail.com>
2376 2006-03-16 Ville Vainio <vivainio@gmail.com>
2371
2377
2372 * upgrade_dir.py: Take path.py from Extensions, correcting
2378 * upgrade_dir.py: Take path.py from Extensions, correcting
2373 %upgrade magic
2379 %upgrade magic
2374
2380
2375 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2381 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2376
2382
2377 * hooks.py: Only enclose editor binary in quotes if legal and
2383 * hooks.py: Only enclose editor binary in quotes if legal and
2378 necessary (space in the name, and is an existing file). Fixes a bug
2384 necessary (space in the name, and is an existing file). Fixes a bug
2379 reported by Zachary Pincus.
2385 reported by Zachary Pincus.
2380
2386
2381 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2387 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2382
2388
2383 * Manual: thanks to a tip on proper color handling for Emacs, by
2389 * Manual: thanks to a tip on proper color handling for Emacs, by
2384 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2390 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2385
2391
2386 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2392 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2387 by applying the provided patch. Thanks to Liu Jin
2393 by applying the provided patch. Thanks to Liu Jin
2388 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2394 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2389 XEmacs/Linux, I'm trusting the submitter that it actually helps
2395 XEmacs/Linux, I'm trusting the submitter that it actually helps
2390 under win32/GNU Emacs. Will revisit if any problems are reported.
2396 under win32/GNU Emacs. Will revisit if any problems are reported.
2391
2397
2392 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2398 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2393
2399
2394 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2400 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2395 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2401 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2396
2402
2397 2006-03-12 Ville Vainio <vivainio@gmail.com>
2403 2006-03-12 Ville Vainio <vivainio@gmail.com>
2398
2404
2399 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2405 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2400 Torsten Marek.
2406 Torsten Marek.
2401
2407
2402 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2408 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2403
2409
2404 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2410 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2405 line ranges works again.
2411 line ranges works again.
2406
2412
2407 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2413 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2408
2414
2409 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2415 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2410 and friends, after a discussion with Zach Pincus on ipython-user.
2416 and friends, after a discussion with Zach Pincus on ipython-user.
2411 I'm not 100% sure, but after thinking about it quite a bit, it may
2417 I'm not 100% sure, but after thinking about it quite a bit, it may
2412 be OK. Testing with the multithreaded shells didn't reveal any
2418 be OK. Testing with the multithreaded shells didn't reveal any
2413 problems, but let's keep an eye out.
2419 problems, but let's keep an eye out.
2414
2420
2415 In the process, I fixed a few things which were calling
2421 In the process, I fixed a few things which were calling
2416 self.InteractiveTB() directly (like safe_execfile), which is a
2422 self.InteractiveTB() directly (like safe_execfile), which is a
2417 mistake: ALL exception reporting should be done by calling
2423 mistake: ALL exception reporting should be done by calling
2418 self.showtraceback(), which handles state and tab-completion and
2424 self.showtraceback(), which handles state and tab-completion and
2419 more.
2425 more.
2420
2426
2421 2006-03-01 Ville Vainio <vivainio@gmail.com>
2427 2006-03-01 Ville Vainio <vivainio@gmail.com>
2422
2428
2423 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2429 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2424 To use, do "from ipipe import *".
2430 To use, do "from ipipe import *".
2425
2431
2426 2006-02-24 Ville Vainio <vivainio@gmail.com>
2432 2006-02-24 Ville Vainio <vivainio@gmail.com>
2427
2433
2428 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2434 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2429 "cleanly" and safely than the older upgrade mechanism.
2435 "cleanly" and safely than the older upgrade mechanism.
2430
2436
2431 2006-02-21 Ville Vainio <vivainio@gmail.com>
2437 2006-02-21 Ville Vainio <vivainio@gmail.com>
2432
2438
2433 * Magic.py: %save works again.
2439 * Magic.py: %save works again.
2434
2440
2435 2006-02-15 Ville Vainio <vivainio@gmail.com>
2441 2006-02-15 Ville Vainio <vivainio@gmail.com>
2436
2442
2437 * Magic.py: %Pprint works again
2443 * Magic.py: %Pprint works again
2438
2444
2439 * Extensions/ipy_sane_defaults.py: Provide everything provided
2445 * Extensions/ipy_sane_defaults.py: Provide everything provided
2440 in default ipythonrc, to make it possible to have a completely empty
2446 in default ipythonrc, to make it possible to have a completely empty
2441 ipythonrc (and thus completely rc-file free configuration)
2447 ipythonrc (and thus completely rc-file free configuration)
2442
2448
2443 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2449 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2444
2450
2445 * IPython/hooks.py (editor): quote the call to the editor command,
2451 * IPython/hooks.py (editor): quote the call to the editor command,
2446 to allow commands with spaces in them. Problem noted by watching
2452 to allow commands with spaces in them. Problem noted by watching
2447 Ian Oswald's video about textpad under win32 at
2453 Ian Oswald's video about textpad under win32 at
2448 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2454 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2449
2455
2450 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2456 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2451 describing magics (we haven't used @ for a loong time).
2457 describing magics (we haven't used @ for a loong time).
2452
2458
2453 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2459 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2454 contributed by marienz to close
2460 contributed by marienz to close
2455 http://www.scipy.net/roundup/ipython/issue53.
2461 http://www.scipy.net/roundup/ipython/issue53.
2456
2462
2457 2006-02-10 Ville Vainio <vivainio@gmail.com>
2463 2006-02-10 Ville Vainio <vivainio@gmail.com>
2458
2464
2459 * genutils.py: getoutput now works in win32 too
2465 * genutils.py: getoutput now works in win32 too
2460
2466
2461 * completer.py: alias and magic completion only invoked
2467 * completer.py: alias and magic completion only invoked
2462 at the first "item" in the line, to avoid "cd %store"
2468 at the first "item" in the line, to avoid "cd %store"
2463 nonsense.
2469 nonsense.
2464
2470
2465 2006-02-09 Ville Vainio <vivainio@gmail.com>
2471 2006-02-09 Ville Vainio <vivainio@gmail.com>
2466
2472
2467 * test/*: Added a unit testing framework (finally).
2473 * test/*: Added a unit testing framework (finally).
2468 '%run runtests.py' to run test_*.
2474 '%run runtests.py' to run test_*.
2469
2475
2470 * ipapi.py: Exposed runlines and set_custom_exc
2476 * ipapi.py: Exposed runlines and set_custom_exc
2471
2477
2472 2006-02-07 Ville Vainio <vivainio@gmail.com>
2478 2006-02-07 Ville Vainio <vivainio@gmail.com>
2473
2479
2474 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2480 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2475 instead use "f(1 2)" as before.
2481 instead use "f(1 2)" as before.
2476
2482
2477 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2483 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2478
2484
2479 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2485 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2480 facilities, for demos processed by the IPython input filter
2486 facilities, for demos processed by the IPython input filter
2481 (IPythonDemo), and for running a script one-line-at-a-time as a
2487 (IPythonDemo), and for running a script one-line-at-a-time as a
2482 demo, both for pure Python (LineDemo) and for IPython-processed
2488 demo, both for pure Python (LineDemo) and for IPython-processed
2483 input (IPythonLineDemo). After a request by Dave Kohel, from the
2489 input (IPythonLineDemo). After a request by Dave Kohel, from the
2484 SAGE team.
2490 SAGE team.
2485 (Demo.edit): added an edit() method to the demo objects, to edit
2491 (Demo.edit): added an edit() method to the demo objects, to edit
2486 the in-memory copy of the last executed block.
2492 the in-memory copy of the last executed block.
2487
2493
2488 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2494 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2489 processing to %edit, %macro and %save. These commands can now be
2495 processing to %edit, %macro and %save. These commands can now be
2490 invoked on the unprocessed input as it was typed by the user
2496 invoked on the unprocessed input as it was typed by the user
2491 (without any prefilters applied). After requests by the SAGE team
2497 (without any prefilters applied). After requests by the SAGE team
2492 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2498 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2493
2499
2494 2006-02-01 Ville Vainio <vivainio@gmail.com>
2500 2006-02-01 Ville Vainio <vivainio@gmail.com>
2495
2501
2496 * setup.py, eggsetup.py: easy_install ipython==dev works
2502 * setup.py, eggsetup.py: easy_install ipython==dev works
2497 correctly now (on Linux)
2503 correctly now (on Linux)
2498
2504
2499 * ipy_user_conf,ipmaker: user config changes, removed spurious
2505 * ipy_user_conf,ipmaker: user config changes, removed spurious
2500 warnings
2506 warnings
2501
2507
2502 * iplib: if rc.banner is string, use it as is.
2508 * iplib: if rc.banner is string, use it as is.
2503
2509
2504 * Magic: %pycat accepts a string argument and pages it's contents.
2510 * Magic: %pycat accepts a string argument and pages it's contents.
2505
2511
2506
2512
2507 2006-01-30 Ville Vainio <vivainio@gmail.com>
2513 2006-01-30 Ville Vainio <vivainio@gmail.com>
2508
2514
2509 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2515 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2510 Now %store and bookmarks work through PickleShare, meaning that
2516 Now %store and bookmarks work through PickleShare, meaning that
2511 concurrent access is possible and all ipython sessions see the
2517 concurrent access is possible and all ipython sessions see the
2512 same database situation all the time, instead of snapshot of
2518 same database situation all the time, instead of snapshot of
2513 the situation when the session was started. Hence, %bookmark
2519 the situation when the session was started. Hence, %bookmark
2514 results are immediately accessible from othes sessions. The database
2520 results are immediately accessible from othes sessions. The database
2515 is also available for use by user extensions. See:
2521 is also available for use by user extensions. See:
2516 http://www.python.org/pypi/pickleshare
2522 http://www.python.org/pypi/pickleshare
2517
2523
2518 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2524 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2519
2525
2520 * aliases can now be %store'd
2526 * aliases can now be %store'd
2521
2527
2522 * path.py moved to Extensions so that pickleshare does not need
2528 * path.py moved to Extensions so that pickleshare does not need
2523 IPython-specific import. Extensions added to pythonpath right
2529 IPython-specific import. Extensions added to pythonpath right
2524 at __init__.
2530 at __init__.
2525
2531
2526 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2532 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2527 called with _ip.system and the pre-transformed command string.
2533 called with _ip.system and the pre-transformed command string.
2528
2534
2529 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2535 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2530
2536
2531 * IPython/iplib.py (interact): Fix that we were not catching
2537 * IPython/iplib.py (interact): Fix that we were not catching
2532 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2538 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2533 logic here had to change, but it's fixed now.
2539 logic here had to change, but it's fixed now.
2534
2540
2535 2006-01-29 Ville Vainio <vivainio@gmail.com>
2541 2006-01-29 Ville Vainio <vivainio@gmail.com>
2536
2542
2537 * iplib.py: Try to import pyreadline on Windows.
2543 * iplib.py: Try to import pyreadline on Windows.
2538
2544
2539 2006-01-27 Ville Vainio <vivainio@gmail.com>
2545 2006-01-27 Ville Vainio <vivainio@gmail.com>
2540
2546
2541 * iplib.py: Expose ipapi as _ip in builtin namespace.
2547 * iplib.py: Expose ipapi as _ip in builtin namespace.
2542 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2548 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2543 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2549 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2544 syntax now produce _ip.* variant of the commands.
2550 syntax now produce _ip.* variant of the commands.
2545
2551
2546 * "_ip.options().autoedit_syntax = 2" automatically throws
2552 * "_ip.options().autoedit_syntax = 2" automatically throws
2547 user to editor for syntax error correction without prompting.
2553 user to editor for syntax error correction without prompting.
2548
2554
2549 2006-01-27 Ville Vainio <vivainio@gmail.com>
2555 2006-01-27 Ville Vainio <vivainio@gmail.com>
2550
2556
2551 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2557 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2552 'ipython' at argv[0]) executed through command line.
2558 'ipython' at argv[0]) executed through command line.
2553 NOTE: this DEPRECATES calling ipython with multiple scripts
2559 NOTE: this DEPRECATES calling ipython with multiple scripts
2554 ("ipython a.py b.py c.py")
2560 ("ipython a.py b.py c.py")
2555
2561
2556 * iplib.py, hooks.py: Added configurable input prefilter,
2562 * iplib.py, hooks.py: Added configurable input prefilter,
2557 named 'input_prefilter'. See ext_rescapture.py for example
2563 named 'input_prefilter'. See ext_rescapture.py for example
2558 usage.
2564 usage.
2559
2565
2560 * ext_rescapture.py, Magic.py: Better system command output capture
2566 * ext_rescapture.py, Magic.py: Better system command output capture
2561 through 'var = !ls' (deprecates user-visible %sc). Same notation
2567 through 'var = !ls' (deprecates user-visible %sc). Same notation
2562 applies for magics, 'var = %alias' assigns alias list to var.
2568 applies for magics, 'var = %alias' assigns alias list to var.
2563
2569
2564 * ipapi.py: added meta() for accessing extension-usable data store.
2570 * ipapi.py: added meta() for accessing extension-usable data store.
2565
2571
2566 * iplib.py: added InteractiveShell.getapi(). New magics should be
2572 * iplib.py: added InteractiveShell.getapi(). New magics should be
2567 written doing self.getapi() instead of using the shell directly.
2573 written doing self.getapi() instead of using the shell directly.
2568
2574
2569 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2575 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2570 %store foo >> ~/myfoo.txt to store variables to files (in clean
2576 %store foo >> ~/myfoo.txt to store variables to files (in clean
2571 textual form, not a restorable pickle).
2577 textual form, not a restorable pickle).
2572
2578
2573 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2579 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2574
2580
2575 * usage.py, Magic.py: added %quickref
2581 * usage.py, Magic.py: added %quickref
2576
2582
2577 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2583 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2578
2584
2579 * GetoptErrors when invoking magics etc. with wrong args
2585 * GetoptErrors when invoking magics etc. with wrong args
2580 are now more helpful:
2586 are now more helpful:
2581 GetoptError: option -l not recognized (allowed: "qb" )
2587 GetoptError: option -l not recognized (allowed: "qb" )
2582
2588
2583 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2589 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2584
2590
2585 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2591 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2586 computationally intensive blocks don't appear to stall the demo.
2592 computationally intensive blocks don't appear to stall the demo.
2587
2593
2588 2006-01-24 Ville Vainio <vivainio@gmail.com>
2594 2006-01-24 Ville Vainio <vivainio@gmail.com>
2589
2595
2590 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2596 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2591 value to manipulate resulting history entry.
2597 value to manipulate resulting history entry.
2592
2598
2593 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2599 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2594 to instance methods of IPApi class, to make extending an embedded
2600 to instance methods of IPApi class, to make extending an embedded
2595 IPython feasible. See ext_rehashdir.py for example usage.
2601 IPython feasible. See ext_rehashdir.py for example usage.
2596
2602
2597 * Merged 1071-1076 from branches/0.7.1
2603 * Merged 1071-1076 from branches/0.7.1
2598
2604
2599
2605
2600 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2606 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2601
2607
2602 * tools/release (daystamp): Fix build tools to use the new
2608 * tools/release (daystamp): Fix build tools to use the new
2603 eggsetup.py script to build lightweight eggs.
2609 eggsetup.py script to build lightweight eggs.
2604
2610
2605 * Applied changesets 1062 and 1064 before 0.7.1 release.
2611 * Applied changesets 1062 and 1064 before 0.7.1 release.
2606
2612
2607 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2613 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2608 see the raw input history (without conversions like %ls ->
2614 see the raw input history (without conversions like %ls ->
2609 ipmagic("ls")). After a request from W. Stein, SAGE
2615 ipmagic("ls")). After a request from W. Stein, SAGE
2610 (http://modular.ucsd.edu/sage) developer. This information is
2616 (http://modular.ucsd.edu/sage) developer. This information is
2611 stored in the input_hist_raw attribute of the IPython instance, so
2617 stored in the input_hist_raw attribute of the IPython instance, so
2612 developers can access it if needed (it's an InputList instance).
2618 developers can access it if needed (it's an InputList instance).
2613
2619
2614 * Versionstring = 0.7.2.svn
2620 * Versionstring = 0.7.2.svn
2615
2621
2616 * eggsetup.py: A separate script for constructing eggs, creates
2622 * eggsetup.py: A separate script for constructing eggs, creates
2617 proper launch scripts even on Windows (an .exe file in
2623 proper launch scripts even on Windows (an .exe file in
2618 \python24\scripts).
2624 \python24\scripts).
2619
2625
2620 * ipapi.py: launch_new_instance, launch entry point needed for the
2626 * ipapi.py: launch_new_instance, launch entry point needed for the
2621 egg.
2627 egg.
2622
2628
2623 2006-01-23 Ville Vainio <vivainio@gmail.com>
2629 2006-01-23 Ville Vainio <vivainio@gmail.com>
2624
2630
2625 * Added %cpaste magic for pasting python code
2631 * Added %cpaste magic for pasting python code
2626
2632
2627 2006-01-22 Ville Vainio <vivainio@gmail.com>
2633 2006-01-22 Ville Vainio <vivainio@gmail.com>
2628
2634
2629 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2635 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2630
2636
2631 * Versionstring = 0.7.2.svn
2637 * Versionstring = 0.7.2.svn
2632
2638
2633 * eggsetup.py: A separate script for constructing eggs, creates
2639 * eggsetup.py: A separate script for constructing eggs, creates
2634 proper launch scripts even on Windows (an .exe file in
2640 proper launch scripts even on Windows (an .exe file in
2635 \python24\scripts).
2641 \python24\scripts).
2636
2642
2637 * ipapi.py: launch_new_instance, launch entry point needed for the
2643 * ipapi.py: launch_new_instance, launch entry point needed for the
2638 egg.
2644 egg.
2639
2645
2640 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2646 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2641
2647
2642 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2648 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2643 %pfile foo would print the file for foo even if it was a binary.
2649 %pfile foo would print the file for foo even if it was a binary.
2644 Now, extensions '.so' and '.dll' are skipped.
2650 Now, extensions '.so' and '.dll' are skipped.
2645
2651
2646 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2652 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2647 bug, where macros would fail in all threaded modes. I'm not 100%
2653 bug, where macros would fail in all threaded modes. I'm not 100%
2648 sure, so I'm going to put out an rc instead of making a release
2654 sure, so I'm going to put out an rc instead of making a release
2649 today, and wait for feedback for at least a few days.
2655 today, and wait for feedback for at least a few days.
2650
2656
2651 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2657 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2652 it...) the handling of pasting external code with autoindent on.
2658 it...) the handling of pasting external code with autoindent on.
2653 To get out of a multiline input, the rule will appear for most
2659 To get out of a multiline input, the rule will appear for most
2654 users unchanged: two blank lines or change the indent level
2660 users unchanged: two blank lines or change the indent level
2655 proposed by IPython. But there is a twist now: you can
2661 proposed by IPython. But there is a twist now: you can
2656 add/subtract only *one or two spaces*. If you add/subtract three
2662 add/subtract only *one or two spaces*. If you add/subtract three
2657 or more (unless you completely delete the line), IPython will
2663 or more (unless you completely delete the line), IPython will
2658 accept that line, and you'll need to enter a second one of pure
2664 accept that line, and you'll need to enter a second one of pure
2659 whitespace. I know it sounds complicated, but I can't find a
2665 whitespace. I know it sounds complicated, but I can't find a
2660 different solution that covers all the cases, with the right
2666 different solution that covers all the cases, with the right
2661 heuristics. Hopefully in actual use, nobody will really notice
2667 heuristics. Hopefully in actual use, nobody will really notice
2662 all these strange rules and things will 'just work'.
2668 all these strange rules and things will 'just work'.
2663
2669
2664 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2670 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2665
2671
2666 * IPython/iplib.py (interact): catch exceptions which can be
2672 * IPython/iplib.py (interact): catch exceptions which can be
2667 triggered asynchronously by signal handlers. Thanks to an
2673 triggered asynchronously by signal handlers. Thanks to an
2668 automatic crash report, submitted by Colin Kingsley
2674 automatic crash report, submitted by Colin Kingsley
2669 <tercel-AT-gentoo.org>.
2675 <tercel-AT-gentoo.org>.
2670
2676
2671 2006-01-20 Ville Vainio <vivainio@gmail.com>
2677 2006-01-20 Ville Vainio <vivainio@gmail.com>
2672
2678
2673 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2679 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2674 (%rehashdir, very useful, try it out) of how to extend ipython
2680 (%rehashdir, very useful, try it out) of how to extend ipython
2675 with new magics. Also added Extensions dir to pythonpath to make
2681 with new magics. Also added Extensions dir to pythonpath to make
2676 importing extensions easy.
2682 importing extensions easy.
2677
2683
2678 * %store now complains when trying to store interactively declared
2684 * %store now complains when trying to store interactively declared
2679 classes / instances of those classes.
2685 classes / instances of those classes.
2680
2686
2681 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2687 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2682 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2688 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2683 if they exist, and ipy_user_conf.py with some defaults is created for
2689 if they exist, and ipy_user_conf.py with some defaults is created for
2684 the user.
2690 the user.
2685
2691
2686 * Startup rehashing done by the config file, not InterpreterExec.
2692 * Startup rehashing done by the config file, not InterpreterExec.
2687 This means system commands are available even without selecting the
2693 This means system commands are available even without selecting the
2688 pysh profile. It's the sensible default after all.
2694 pysh profile. It's the sensible default after all.
2689
2695
2690 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2696 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2691
2697
2692 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2698 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2693 multiline code with autoindent on working. But I am really not
2699 multiline code with autoindent on working. But I am really not
2694 sure, so this needs more testing. Will commit a debug-enabled
2700 sure, so this needs more testing. Will commit a debug-enabled
2695 version for now, while I test it some more, so that Ville and
2701 version for now, while I test it some more, so that Ville and
2696 others may also catch any problems. Also made
2702 others may also catch any problems. Also made
2697 self.indent_current_str() a method, to ensure that there's no
2703 self.indent_current_str() a method, to ensure that there's no
2698 chance of the indent space count and the corresponding string
2704 chance of the indent space count and the corresponding string
2699 falling out of sync. All code needing the string should just call
2705 falling out of sync. All code needing the string should just call
2700 the method.
2706 the method.
2701
2707
2702 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2708 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2703
2709
2704 * IPython/Magic.py (magic_edit): fix check for when users don't
2710 * IPython/Magic.py (magic_edit): fix check for when users don't
2705 save their output files, the try/except was in the wrong section.
2711 save their output files, the try/except was in the wrong section.
2706
2712
2707 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2713 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2708
2714
2709 * IPython/Magic.py (magic_run): fix __file__ global missing from
2715 * IPython/Magic.py (magic_run): fix __file__ global missing from
2710 script's namespace when executed via %run. After a report by
2716 script's namespace when executed via %run. After a report by
2711 Vivian.
2717 Vivian.
2712
2718
2713 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2719 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2714 when using python 2.4. The parent constructor changed in 2.4, and
2720 when using python 2.4. The parent constructor changed in 2.4, and
2715 we need to track it directly (we can't call it, as it messes up
2721 we need to track it directly (we can't call it, as it messes up
2716 readline and tab-completion inside our pdb would stop working).
2722 readline and tab-completion inside our pdb would stop working).
2717 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2723 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2718
2724
2719 2006-01-16 Ville Vainio <vivainio@gmail.com>
2725 2006-01-16 Ville Vainio <vivainio@gmail.com>
2720
2726
2721 * Ipython/magic.py: Reverted back to old %edit functionality
2727 * Ipython/magic.py: Reverted back to old %edit functionality
2722 that returns file contents on exit.
2728 that returns file contents on exit.
2723
2729
2724 * IPython/path.py: Added Jason Orendorff's "path" module to
2730 * IPython/path.py: Added Jason Orendorff's "path" module to
2725 IPython tree, http://www.jorendorff.com/articles/python/path/.
2731 IPython tree, http://www.jorendorff.com/articles/python/path/.
2726 You can get path objects conveniently through %sc, and !!, e.g.:
2732 You can get path objects conveniently through %sc, and !!, e.g.:
2727 sc files=ls
2733 sc files=ls
2728 for p in files.paths: # or files.p
2734 for p in files.paths: # or files.p
2729 print p,p.mtime
2735 print p,p.mtime
2730
2736
2731 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2737 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2732 now work again without considering the exclusion regexp -
2738 now work again without considering the exclusion regexp -
2733 hence, things like ',foo my/path' turn to 'foo("my/path")'
2739 hence, things like ',foo my/path' turn to 'foo("my/path")'
2734 instead of syntax error.
2740 instead of syntax error.
2735
2741
2736
2742
2737 2006-01-14 Ville Vainio <vivainio@gmail.com>
2743 2006-01-14 Ville Vainio <vivainio@gmail.com>
2738
2744
2739 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2745 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2740 ipapi decorators for python 2.4 users, options() provides access to rc
2746 ipapi decorators for python 2.4 users, options() provides access to rc
2741 data.
2747 data.
2742
2748
2743 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2749 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2744 as path separators (even on Linux ;-). Space character after
2750 as path separators (even on Linux ;-). Space character after
2745 backslash (as yielded by tab completer) is still space;
2751 backslash (as yielded by tab completer) is still space;
2746 "%cd long\ name" works as expected.
2752 "%cd long\ name" works as expected.
2747
2753
2748 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2754 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2749 as "chain of command", with priority. API stays the same,
2755 as "chain of command", with priority. API stays the same,
2750 TryNext exception raised by a hook function signals that
2756 TryNext exception raised by a hook function signals that
2751 current hook failed and next hook should try handling it, as
2757 current hook failed and next hook should try handling it, as
2752 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2758 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2753 requested configurable display hook, which is now implemented.
2759 requested configurable display hook, which is now implemented.
2754
2760
2755 2006-01-13 Ville Vainio <vivainio@gmail.com>
2761 2006-01-13 Ville Vainio <vivainio@gmail.com>
2756
2762
2757 * IPython/platutils*.py: platform specific utility functions,
2763 * IPython/platutils*.py: platform specific utility functions,
2758 so far only set_term_title is implemented (change terminal
2764 so far only set_term_title is implemented (change terminal
2759 label in windowing systems). %cd now changes the title to
2765 label in windowing systems). %cd now changes the title to
2760 current dir.
2766 current dir.
2761
2767
2762 * IPython/Release.py: Added myself to "authors" list,
2768 * IPython/Release.py: Added myself to "authors" list,
2763 had to create new files.
2769 had to create new files.
2764
2770
2765 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2771 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2766 shell escape; not a known bug but had potential to be one in the
2772 shell escape; not a known bug but had potential to be one in the
2767 future.
2773 future.
2768
2774
2769 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2775 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2770 extension API for IPython! See the module for usage example. Fix
2776 extension API for IPython! See the module for usage example. Fix
2771 OInspect for docstring-less magic functions.
2777 OInspect for docstring-less magic functions.
2772
2778
2773
2779
2774 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2780 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2775
2781
2776 * IPython/iplib.py (raw_input): temporarily deactivate all
2782 * IPython/iplib.py (raw_input): temporarily deactivate all
2777 attempts at allowing pasting of code with autoindent on. It
2783 attempts at allowing pasting of code with autoindent on. It
2778 introduced bugs (reported by Prabhu) and I can't seem to find a
2784 introduced bugs (reported by Prabhu) and I can't seem to find a
2779 robust combination which works in all cases. Will have to revisit
2785 robust combination which works in all cases. Will have to revisit
2780 later.
2786 later.
2781
2787
2782 * IPython/genutils.py: remove isspace() function. We've dropped
2788 * IPython/genutils.py: remove isspace() function. We've dropped
2783 2.2 compatibility, so it's OK to use the string method.
2789 2.2 compatibility, so it's OK to use the string method.
2784
2790
2785 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2791 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2786
2792
2787 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2793 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2788 matching what NOT to autocall on, to include all python binary
2794 matching what NOT to autocall on, to include all python binary
2789 operators (including things like 'and', 'or', 'is' and 'in').
2795 operators (including things like 'and', 'or', 'is' and 'in').
2790 Prompted by a bug report on 'foo & bar', but I realized we had
2796 Prompted by a bug report on 'foo & bar', but I realized we had
2791 many more potential bug cases with other operators. The regexp is
2797 many more potential bug cases with other operators. The regexp is
2792 self.re_exclude_auto, it's fairly commented.
2798 self.re_exclude_auto, it's fairly commented.
2793
2799
2794 2006-01-12 Ville Vainio <vivainio@gmail.com>
2800 2006-01-12 Ville Vainio <vivainio@gmail.com>
2795
2801
2796 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2802 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2797 Prettified and hardened string/backslash quoting with ipsystem(),
2803 Prettified and hardened string/backslash quoting with ipsystem(),
2798 ipalias() and ipmagic(). Now even \ characters are passed to
2804 ipalias() and ipmagic(). Now even \ characters are passed to
2799 %magics, !shell escapes and aliases exactly as they are in the
2805 %magics, !shell escapes and aliases exactly as they are in the
2800 ipython command line. Should improve backslash experience,
2806 ipython command line. Should improve backslash experience,
2801 particularly in Windows (path delimiter for some commands that
2807 particularly in Windows (path delimiter for some commands that
2802 won't understand '/'), but Unix benefits as well (regexps). %cd
2808 won't understand '/'), but Unix benefits as well (regexps). %cd
2803 magic still doesn't support backslash path delimiters, though. Also
2809 magic still doesn't support backslash path delimiters, though. Also
2804 deleted all pretense of supporting multiline command strings in
2810 deleted all pretense of supporting multiline command strings in
2805 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2811 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2806
2812
2807 * doc/build_doc_instructions.txt added. Documentation on how to
2813 * doc/build_doc_instructions.txt added. Documentation on how to
2808 use doc/update_manual.py, added yesterday. Both files contributed
2814 use doc/update_manual.py, added yesterday. Both files contributed
2809 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2815 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2810 doc/*.sh for deprecation at a later date.
2816 doc/*.sh for deprecation at a later date.
2811
2817
2812 * /ipython.py Added ipython.py to root directory for
2818 * /ipython.py Added ipython.py to root directory for
2813 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2819 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2814 ipython.py) and development convenience (no need to keep doing
2820 ipython.py) and development convenience (no need to keep doing
2815 "setup.py install" between changes).
2821 "setup.py install" between changes).
2816
2822
2817 * Made ! and !! shell escapes work (again) in multiline expressions:
2823 * Made ! and !! shell escapes work (again) in multiline expressions:
2818 if 1:
2824 if 1:
2819 !ls
2825 !ls
2820 !!ls
2826 !!ls
2821
2827
2822 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2828 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2823
2829
2824 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2830 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2825 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2831 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2826 module in case-insensitive installation. Was causing crashes
2832 module in case-insensitive installation. Was causing crashes
2827 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2833 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2828
2834
2829 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2835 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2830 <marienz-AT-gentoo.org>, closes
2836 <marienz-AT-gentoo.org>, closes
2831 http://www.scipy.net/roundup/ipython/issue51.
2837 http://www.scipy.net/roundup/ipython/issue51.
2832
2838
2833 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2839 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2834
2840
2835 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2841 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2836 problem of excessive CPU usage under *nix and keyboard lag under
2842 problem of excessive CPU usage under *nix and keyboard lag under
2837 win32.
2843 win32.
2838
2844
2839 2006-01-10 *** Released version 0.7.0
2845 2006-01-10 *** Released version 0.7.0
2840
2846
2841 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2847 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2842
2848
2843 * IPython/Release.py (revision): tag version number to 0.7.0,
2849 * IPython/Release.py (revision): tag version number to 0.7.0,
2844 ready for release.
2850 ready for release.
2845
2851
2846 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2852 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2847 it informs the user of the name of the temp. file used. This can
2853 it informs the user of the name of the temp. file used. This can
2848 help if you decide later to reuse that same file, so you know
2854 help if you decide later to reuse that same file, so you know
2849 where to copy the info from.
2855 where to copy the info from.
2850
2856
2851 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2857 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2852
2858
2853 * setup_bdist_egg.py: little script to build an egg. Added
2859 * setup_bdist_egg.py: little script to build an egg. Added
2854 support in the release tools as well.
2860 support in the release tools as well.
2855
2861
2856 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2862 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2857
2863
2858 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2864 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2859 version selection (new -wxversion command line and ipythonrc
2865 version selection (new -wxversion command line and ipythonrc
2860 parameter). Patch contributed by Arnd Baecker
2866 parameter). Patch contributed by Arnd Baecker
2861 <arnd.baecker-AT-web.de>.
2867 <arnd.baecker-AT-web.de>.
2862
2868
2863 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2869 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2864 embedded instances, for variables defined at the interactive
2870 embedded instances, for variables defined at the interactive
2865 prompt of the embedded ipython. Reported by Arnd.
2871 prompt of the embedded ipython. Reported by Arnd.
2866
2872
2867 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2873 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2868 it can be used as a (stateful) toggle, or with a direct parameter.
2874 it can be used as a (stateful) toggle, or with a direct parameter.
2869
2875
2870 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2876 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2871 could be triggered in certain cases and cause the traceback
2877 could be triggered in certain cases and cause the traceback
2872 printer not to work.
2878 printer not to work.
2873
2879
2874 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2880 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2875
2881
2876 * IPython/iplib.py (_should_recompile): Small fix, closes
2882 * IPython/iplib.py (_should_recompile): Small fix, closes
2877 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2883 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2878
2884
2879 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2885 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2880
2886
2881 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2887 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2882 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2888 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2883 Moad for help with tracking it down.
2889 Moad for help with tracking it down.
2884
2890
2885 * IPython/iplib.py (handle_auto): fix autocall handling for
2891 * IPython/iplib.py (handle_auto): fix autocall handling for
2886 objects which support BOTH __getitem__ and __call__ (so that f [x]
2892 objects which support BOTH __getitem__ and __call__ (so that f [x]
2887 is left alone, instead of becoming f([x]) automatically).
2893 is left alone, instead of becoming f([x]) automatically).
2888
2894
2889 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2895 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2890 Ville's patch.
2896 Ville's patch.
2891
2897
2892 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2898 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2893
2899
2894 * IPython/iplib.py (handle_auto): changed autocall semantics to
2900 * IPython/iplib.py (handle_auto): changed autocall semantics to
2895 include 'smart' mode, where the autocall transformation is NOT
2901 include 'smart' mode, where the autocall transformation is NOT
2896 applied if there are no arguments on the line. This allows you to
2902 applied if there are no arguments on the line. This allows you to
2897 just type 'foo' if foo is a callable to see its internal form,
2903 just type 'foo' if foo is a callable to see its internal form,
2898 instead of having it called with no arguments (typically a
2904 instead of having it called with no arguments (typically a
2899 mistake). The old 'full' autocall still exists: for that, you
2905 mistake). The old 'full' autocall still exists: for that, you
2900 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2906 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2901
2907
2902 * IPython/completer.py (Completer.attr_matches): add
2908 * IPython/completer.py (Completer.attr_matches): add
2903 tab-completion support for Enthoughts' traits. After a report by
2909 tab-completion support for Enthoughts' traits. After a report by
2904 Arnd and a patch by Prabhu.
2910 Arnd and a patch by Prabhu.
2905
2911
2906 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2912 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2907
2913
2908 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2914 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2909 Schmolck's patch to fix inspect.getinnerframes().
2915 Schmolck's patch to fix inspect.getinnerframes().
2910
2916
2911 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2917 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2912 for embedded instances, regarding handling of namespaces and items
2918 for embedded instances, regarding handling of namespaces and items
2913 added to the __builtin__ one. Multiple embedded instances and
2919 added to the __builtin__ one. Multiple embedded instances and
2914 recursive embeddings should work better now (though I'm not sure
2920 recursive embeddings should work better now (though I'm not sure
2915 I've got all the corner cases fixed, that code is a bit of a brain
2921 I've got all the corner cases fixed, that code is a bit of a brain
2916 twister).
2922 twister).
2917
2923
2918 * IPython/Magic.py (magic_edit): added support to edit in-memory
2924 * IPython/Magic.py (magic_edit): added support to edit in-memory
2919 macros (automatically creates the necessary temp files). %edit
2925 macros (automatically creates the necessary temp files). %edit
2920 also doesn't return the file contents anymore, it's just noise.
2926 also doesn't return the file contents anymore, it's just noise.
2921
2927
2922 * IPython/completer.py (Completer.attr_matches): revert change to
2928 * IPython/completer.py (Completer.attr_matches): revert change to
2923 complete only on attributes listed in __all__. I realized it
2929 complete only on attributes listed in __all__. I realized it
2924 cripples the tab-completion system as a tool for exploring the
2930 cripples the tab-completion system as a tool for exploring the
2925 internals of unknown libraries (it renders any non-__all__
2931 internals of unknown libraries (it renders any non-__all__
2926 attribute off-limits). I got bit by this when trying to see
2932 attribute off-limits). I got bit by this when trying to see
2927 something inside the dis module.
2933 something inside the dis module.
2928
2934
2929 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2935 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2930
2936
2931 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2937 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2932 namespace for users and extension writers to hold data in. This
2938 namespace for users and extension writers to hold data in. This
2933 follows the discussion in
2939 follows the discussion in
2934 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2940 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2935
2941
2936 * IPython/completer.py (IPCompleter.complete): small patch to help
2942 * IPython/completer.py (IPCompleter.complete): small patch to help
2937 tab-completion under Emacs, after a suggestion by John Barnard
2943 tab-completion under Emacs, after a suggestion by John Barnard
2938 <barnarj-AT-ccf.org>.
2944 <barnarj-AT-ccf.org>.
2939
2945
2940 * IPython/Magic.py (Magic.extract_input_slices): added support for
2946 * IPython/Magic.py (Magic.extract_input_slices): added support for
2941 the slice notation in magics to use N-M to represent numbers N...M
2947 the slice notation in magics to use N-M to represent numbers N...M
2942 (closed endpoints). This is used by %macro and %save.
2948 (closed endpoints). This is used by %macro and %save.
2943
2949
2944 * IPython/completer.py (Completer.attr_matches): for modules which
2950 * IPython/completer.py (Completer.attr_matches): for modules which
2945 define __all__, complete only on those. After a patch by Jeffrey
2951 define __all__, complete only on those. After a patch by Jeffrey
2946 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2952 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2947 speed up this routine.
2953 speed up this routine.
2948
2954
2949 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2955 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2950 don't know if this is the end of it, but the behavior now is
2956 don't know if this is the end of it, but the behavior now is
2951 certainly much more correct. Note that coupled with macros,
2957 certainly much more correct. Note that coupled with macros,
2952 slightly surprising (at first) behavior may occur: a macro will in
2958 slightly surprising (at first) behavior may occur: a macro will in
2953 general expand to multiple lines of input, so upon exiting, the
2959 general expand to multiple lines of input, so upon exiting, the
2954 in/out counters will both be bumped by the corresponding amount
2960 in/out counters will both be bumped by the corresponding amount
2955 (as if the macro's contents had been typed interactively). Typing
2961 (as if the macro's contents had been typed interactively). Typing
2956 %hist will reveal the intermediate (silently processed) lines.
2962 %hist will reveal the intermediate (silently processed) lines.
2957
2963
2958 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2964 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2959 pickle to fail (%run was overwriting __main__ and not restoring
2965 pickle to fail (%run was overwriting __main__ and not restoring
2960 it, but pickle relies on __main__ to operate).
2966 it, but pickle relies on __main__ to operate).
2961
2967
2962 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2968 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2963 using properties, but forgot to make the main InteractiveShell
2969 using properties, but forgot to make the main InteractiveShell
2964 class a new-style class. Properties fail silently, and
2970 class a new-style class. Properties fail silently, and
2965 mysteriously, with old-style class (getters work, but
2971 mysteriously, with old-style class (getters work, but
2966 setters don't do anything).
2972 setters don't do anything).
2967
2973
2968 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2974 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2969
2975
2970 * IPython/Magic.py (magic_history): fix history reporting bug (I
2976 * IPython/Magic.py (magic_history): fix history reporting bug (I
2971 know some nasties are still there, I just can't seem to find a
2977 know some nasties are still there, I just can't seem to find a
2972 reproducible test case to track them down; the input history is
2978 reproducible test case to track them down; the input history is
2973 falling out of sync...)
2979 falling out of sync...)
2974
2980
2975 * IPython/iplib.py (handle_shell_escape): fix bug where both
2981 * IPython/iplib.py (handle_shell_escape): fix bug where both
2976 aliases and system accesses where broken for indented code (such
2982 aliases and system accesses where broken for indented code (such
2977 as loops).
2983 as loops).
2978
2984
2979 * IPython/genutils.py (shell): fix small but critical bug for
2985 * IPython/genutils.py (shell): fix small but critical bug for
2980 win32 system access.
2986 win32 system access.
2981
2987
2982 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2988 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2983
2989
2984 * IPython/iplib.py (showtraceback): remove use of the
2990 * IPython/iplib.py (showtraceback): remove use of the
2985 sys.last_{type/value/traceback} structures, which are non
2991 sys.last_{type/value/traceback} structures, which are non
2986 thread-safe.
2992 thread-safe.
2987 (_prefilter): change control flow to ensure that we NEVER
2993 (_prefilter): change control flow to ensure that we NEVER
2988 introspect objects when autocall is off. This will guarantee that
2994 introspect objects when autocall is off. This will guarantee that
2989 having an input line of the form 'x.y', where access to attribute
2995 having an input line of the form 'x.y', where access to attribute
2990 'y' has side effects, doesn't trigger the side effect TWICE. It
2996 'y' has side effects, doesn't trigger the side effect TWICE. It
2991 is important to note that, with autocall on, these side effects
2997 is important to note that, with autocall on, these side effects
2992 can still happen.
2998 can still happen.
2993 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2999 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2994 trio. IPython offers these three kinds of special calls which are
3000 trio. IPython offers these three kinds of special calls which are
2995 not python code, and it's a good thing to have their call method
3001 not python code, and it's a good thing to have their call method
2996 be accessible as pure python functions (not just special syntax at
3002 be accessible as pure python functions (not just special syntax at
2997 the command line). It gives us a better internal implementation
3003 the command line). It gives us a better internal implementation
2998 structure, as well as exposing these for user scripting more
3004 structure, as well as exposing these for user scripting more
2999 cleanly.
3005 cleanly.
3000
3006
3001 * IPython/macro.py (Macro.__init__): moved macros to a standalone
3007 * IPython/macro.py (Macro.__init__): moved macros to a standalone
3002 file. Now that they'll be more likely to be used with the
3008 file. Now that they'll be more likely to be used with the
3003 persistance system (%store), I want to make sure their module path
3009 persistance system (%store), I want to make sure their module path
3004 doesn't change in the future, so that we don't break things for
3010 doesn't change in the future, so that we don't break things for
3005 users' persisted data.
3011 users' persisted data.
3006
3012
3007 * IPython/iplib.py (autoindent_update): move indentation
3013 * IPython/iplib.py (autoindent_update): move indentation
3008 management into the _text_ processing loop, not the keyboard
3014 management into the _text_ processing loop, not the keyboard
3009 interactive one. This is necessary to correctly process non-typed
3015 interactive one. This is necessary to correctly process non-typed
3010 multiline input (such as macros).
3016 multiline input (such as macros).
3011
3017
3012 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
3018 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
3013 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
3019 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
3014 which was producing problems in the resulting manual.
3020 which was producing problems in the resulting manual.
3015 (magic_whos): improve reporting of instances (show their class,
3021 (magic_whos): improve reporting of instances (show their class,
3016 instead of simply printing 'instance' which isn't terribly
3022 instead of simply printing 'instance' which isn't terribly
3017 informative).
3023 informative).
3018
3024
3019 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
3025 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
3020 (minor mods) to support network shares under win32.
3026 (minor mods) to support network shares under win32.
3021
3027
3022 * IPython/winconsole.py (get_console_size): add new winconsole
3028 * IPython/winconsole.py (get_console_size): add new winconsole
3023 module and fixes to page_dumb() to improve its behavior under
3029 module and fixes to page_dumb() to improve its behavior under
3024 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
3030 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
3025
3031
3026 * IPython/Magic.py (Macro): simplified Macro class to just
3032 * IPython/Magic.py (Macro): simplified Macro class to just
3027 subclass list. We've had only 2.2 compatibility for a very long
3033 subclass list. We've had only 2.2 compatibility for a very long
3028 time, yet I was still avoiding subclassing the builtin types. No
3034 time, yet I was still avoiding subclassing the builtin types. No
3029 more (I'm also starting to use properties, though I won't shift to
3035 more (I'm also starting to use properties, though I won't shift to
3030 2.3-specific features quite yet).
3036 2.3-specific features quite yet).
3031 (magic_store): added Ville's patch for lightweight variable
3037 (magic_store): added Ville's patch for lightweight variable
3032 persistence, after a request on the user list by Matt Wilkie
3038 persistence, after a request on the user list by Matt Wilkie
3033 <maphew-AT-gmail.com>. The new %store magic's docstring has full
3039 <maphew-AT-gmail.com>. The new %store magic's docstring has full
3034 details.
3040 details.
3035
3041
3036 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3042 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3037 changed the default logfile name from 'ipython.log' to
3043 changed the default logfile name from 'ipython.log' to
3038 'ipython_log.py'. These logs are real python files, and now that
3044 'ipython_log.py'. These logs are real python files, and now that
3039 we have much better multiline support, people are more likely to
3045 we have much better multiline support, people are more likely to
3040 want to use them as such. Might as well name them correctly.
3046 want to use them as such. Might as well name them correctly.
3041
3047
3042 * IPython/Magic.py: substantial cleanup. While we can't stop
3048 * IPython/Magic.py: substantial cleanup. While we can't stop
3043 using magics as mixins, due to the existing customizations 'out
3049 using magics as mixins, due to the existing customizations 'out
3044 there' which rely on the mixin naming conventions, at least I
3050 there' which rely on the mixin naming conventions, at least I
3045 cleaned out all cross-class name usage. So once we are OK with
3051 cleaned out all cross-class name usage. So once we are OK with
3046 breaking compatibility, the two systems can be separated.
3052 breaking compatibility, the two systems can be separated.
3047
3053
3048 * IPython/Logger.py: major cleanup. This one is NOT a mixin
3054 * IPython/Logger.py: major cleanup. This one is NOT a mixin
3049 anymore, and the class is a fair bit less hideous as well. New
3055 anymore, and the class is a fair bit less hideous as well. New
3050 features were also introduced: timestamping of input, and logging
3056 features were also introduced: timestamping of input, and logging
3051 of output results. These are user-visible with the -t and -o
3057 of output results. These are user-visible with the -t and -o
3052 options to %logstart. Closes
3058 options to %logstart. Closes
3053 http://www.scipy.net/roundup/ipython/issue11 and a request by
3059 http://www.scipy.net/roundup/ipython/issue11 and a request by
3054 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
3060 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
3055
3061
3056 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
3062 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
3057
3063
3058 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
3064 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
3059 better handle backslashes in paths. See the thread 'More Windows
3065 better handle backslashes in paths. See the thread 'More Windows
3060 questions part 2 - \/ characters revisited' on the iypthon user
3066 questions part 2 - \/ characters revisited' on the iypthon user
3061 list:
3067 list:
3062 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
3068 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
3063
3069
3064 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
3070 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
3065
3071
3066 (InteractiveShell.__init__): change threaded shells to not use the
3072 (InteractiveShell.__init__): change threaded shells to not use the
3067 ipython crash handler. This was causing more problems than not,
3073 ipython crash handler. This was causing more problems than not,
3068 as exceptions in the main thread (GUI code, typically) would
3074 as exceptions in the main thread (GUI code, typically) would
3069 always show up as a 'crash', when they really weren't.
3075 always show up as a 'crash', when they really weren't.
3070
3076
3071 The colors and exception mode commands (%colors/%xmode) have been
3077 The colors and exception mode commands (%colors/%xmode) have been
3072 synchronized to also take this into account, so users can get
3078 synchronized to also take this into account, so users can get
3073 verbose exceptions for their threaded code as well. I also added
3079 verbose exceptions for their threaded code as well. I also added
3074 support for activating pdb inside this exception handler as well,
3080 support for activating pdb inside this exception handler as well,
3075 so now GUI authors can use IPython's enhanced pdb at runtime.
3081 so now GUI authors can use IPython's enhanced pdb at runtime.
3076
3082
3077 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
3083 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
3078 true by default, and add it to the shipped ipythonrc file. Since
3084 true by default, and add it to the shipped ipythonrc file. Since
3079 this asks the user before proceeding, I think it's OK to make it
3085 this asks the user before proceeding, I think it's OK to make it
3080 true by default.
3086 true by default.
3081
3087
3082 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
3088 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
3083 of the previous special-casing of input in the eval loop. I think
3089 of the previous special-casing of input in the eval loop. I think
3084 this is cleaner, as they really are commands and shouldn't have
3090 this is cleaner, as they really are commands and shouldn't have
3085 a special role in the middle of the core code.
3091 a special role in the middle of the core code.
3086
3092
3087 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
3093 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
3088
3094
3089 * IPython/iplib.py (edit_syntax_error): added support for
3095 * IPython/iplib.py (edit_syntax_error): added support for
3090 automatically reopening the editor if the file had a syntax error
3096 automatically reopening the editor if the file had a syntax error
3091 in it. Thanks to scottt who provided the patch at:
3097 in it. Thanks to scottt who provided the patch at:
3092 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
3098 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
3093 version committed).
3099 version committed).
3094
3100
3095 * IPython/iplib.py (handle_normal): add suport for multi-line
3101 * IPython/iplib.py (handle_normal): add suport for multi-line
3096 input with emtpy lines. This fixes
3102 input with emtpy lines. This fixes
3097 http://www.scipy.net/roundup/ipython/issue43 and a similar
3103 http://www.scipy.net/roundup/ipython/issue43 and a similar
3098 discussion on the user list.
3104 discussion on the user list.
3099
3105
3100 WARNING: a behavior change is necessarily introduced to support
3106 WARNING: a behavior change is necessarily introduced to support
3101 blank lines: now a single blank line with whitespace does NOT
3107 blank lines: now a single blank line with whitespace does NOT
3102 break the input loop, which means that when autoindent is on, by
3108 break the input loop, which means that when autoindent is on, by
3103 default hitting return on the next (indented) line does NOT exit.
3109 default hitting return on the next (indented) line does NOT exit.
3104
3110
3105 Instead, to exit a multiline input you can either have:
3111 Instead, to exit a multiline input you can either have:
3106
3112
3107 - TWO whitespace lines (just hit return again), or
3113 - TWO whitespace lines (just hit return again), or
3108 - a single whitespace line of a different length than provided
3114 - a single whitespace line of a different length than provided
3109 by the autoindent (add or remove a space).
3115 by the autoindent (add or remove a space).
3110
3116
3111 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
3117 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
3112 module to better organize all readline-related functionality.
3118 module to better organize all readline-related functionality.
3113 I've deleted FlexCompleter and put all completion clases here.
3119 I've deleted FlexCompleter and put all completion clases here.
3114
3120
3115 * IPython/iplib.py (raw_input): improve indentation management.
3121 * IPython/iplib.py (raw_input): improve indentation management.
3116 It is now possible to paste indented code with autoindent on, and
3122 It is now possible to paste indented code with autoindent on, and
3117 the code is interpreted correctly (though it still looks bad on
3123 the code is interpreted correctly (though it still looks bad on
3118 screen, due to the line-oriented nature of ipython).
3124 screen, due to the line-oriented nature of ipython).
3119 (MagicCompleter.complete): change behavior so that a TAB key on an
3125 (MagicCompleter.complete): change behavior so that a TAB key on an
3120 otherwise empty line actually inserts a tab, instead of completing
3126 otherwise empty line actually inserts a tab, instead of completing
3121 on the entire global namespace. This makes it easier to use the
3127 on the entire global namespace. This makes it easier to use the
3122 TAB key for indentation. After a request by Hans Meine
3128 TAB key for indentation. After a request by Hans Meine
3123 <hans_meine-AT-gmx.net>
3129 <hans_meine-AT-gmx.net>
3124 (_prefilter): add support so that typing plain 'exit' or 'quit'
3130 (_prefilter): add support so that typing plain 'exit' or 'quit'
3125 does a sensible thing. Originally I tried to deviate as little as
3131 does a sensible thing. Originally I tried to deviate as little as
3126 possible from the default python behavior, but even that one may
3132 possible from the default python behavior, but even that one may
3127 change in this direction (thread on python-dev to that effect).
3133 change in this direction (thread on python-dev to that effect).
3128 Regardless, ipython should do the right thing even if CPython's
3134 Regardless, ipython should do the right thing even if CPython's
3129 '>>>' prompt doesn't.
3135 '>>>' prompt doesn't.
3130 (InteractiveShell): removed subclassing code.InteractiveConsole
3136 (InteractiveShell): removed subclassing code.InteractiveConsole
3131 class. By now we'd overridden just about all of its methods: I've
3137 class. By now we'd overridden just about all of its methods: I've
3132 copied the remaining two over, and now ipython is a standalone
3138 copied the remaining two over, and now ipython is a standalone
3133 class. This will provide a clearer picture for the chainsaw
3139 class. This will provide a clearer picture for the chainsaw
3134 branch refactoring.
3140 branch refactoring.
3135
3141
3136 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
3142 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
3137
3143
3138 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
3144 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
3139 failures for objects which break when dir() is called on them.
3145 failures for objects which break when dir() is called on them.
3140
3146
3141 * IPython/FlexCompleter.py (Completer.__init__): Added support for
3147 * IPython/FlexCompleter.py (Completer.__init__): Added support for
3142 distinct local and global namespaces in the completer API. This
3148 distinct local and global namespaces in the completer API. This
3143 change allows us to properly handle completion with distinct
3149 change allows us to properly handle completion with distinct
3144 scopes, including in embedded instances (this had never really
3150 scopes, including in embedded instances (this had never really
3145 worked correctly).
3151 worked correctly).
3146
3152
3147 Note: this introduces a change in the constructor for
3153 Note: this introduces a change in the constructor for
3148 MagicCompleter, as a new global_namespace parameter is now the
3154 MagicCompleter, as a new global_namespace parameter is now the
3149 second argument (the others were bumped one position).
3155 second argument (the others were bumped one position).
3150
3156
3151 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
3157 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
3152
3158
3153 * IPython/iplib.py (embed_mainloop): fix tab-completion in
3159 * IPython/iplib.py (embed_mainloop): fix tab-completion in
3154 embedded instances (which can be done now thanks to Vivian's
3160 embedded instances (which can be done now thanks to Vivian's
3155 frame-handling fixes for pdb).
3161 frame-handling fixes for pdb).
3156 (InteractiveShell.__init__): Fix namespace handling problem in
3162 (InteractiveShell.__init__): Fix namespace handling problem in
3157 embedded instances. We were overwriting __main__ unconditionally,
3163 embedded instances. We were overwriting __main__ unconditionally,
3158 and this should only be done for 'full' (non-embedded) IPython;
3164 and this should only be done for 'full' (non-embedded) IPython;
3159 embedded instances must respect the caller's __main__. Thanks to
3165 embedded instances must respect the caller's __main__. Thanks to
3160 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
3166 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
3161
3167
3162 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
3168 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
3163
3169
3164 * setup.py: added download_url to setup(). This registers the
3170 * setup.py: added download_url to setup(). This registers the
3165 download address at PyPI, which is not only useful to humans
3171 download address at PyPI, which is not only useful to humans
3166 browsing the site, but is also picked up by setuptools (the Eggs
3172 browsing the site, but is also picked up by setuptools (the Eggs
3167 machinery). Thanks to Ville and R. Kern for the info/discussion
3173 machinery). Thanks to Ville and R. Kern for the info/discussion
3168 on this.
3174 on this.
3169
3175
3170 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
3176 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
3171
3177
3172 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
3178 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
3173 This brings a lot of nice functionality to the pdb mode, which now
3179 This brings a lot of nice functionality to the pdb mode, which now
3174 has tab-completion, syntax highlighting, and better stack handling
3180 has tab-completion, syntax highlighting, and better stack handling
3175 than before. Many thanks to Vivian De Smedt
3181 than before. Many thanks to Vivian De Smedt
3176 <vivian-AT-vdesmedt.com> for the original patches.
3182 <vivian-AT-vdesmedt.com> for the original patches.
3177
3183
3178 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
3184 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
3179
3185
3180 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
3186 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
3181 sequence to consistently accept the banner argument. The
3187 sequence to consistently accept the banner argument. The
3182 inconsistency was tripping SAGE, thanks to Gary Zablackis
3188 inconsistency was tripping SAGE, thanks to Gary Zablackis
3183 <gzabl-AT-yahoo.com> for the report.
3189 <gzabl-AT-yahoo.com> for the report.
3184
3190
3185 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
3191 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
3186
3192
3187 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3193 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3188 Fix bug where a naked 'alias' call in the ipythonrc file would
3194 Fix bug where a naked 'alias' call in the ipythonrc file would
3189 cause a crash. Bug reported by Jorgen Stenarson.
3195 cause a crash. Bug reported by Jorgen Stenarson.
3190
3196
3191 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
3197 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
3192
3198
3193 * IPython/ipmaker.py (make_IPython): cleanups which should improve
3199 * IPython/ipmaker.py (make_IPython): cleanups which should improve
3194 startup time.
3200 startup time.
3195
3201
3196 * IPython/iplib.py (runcode): my globals 'fix' for embedded
3202 * IPython/iplib.py (runcode): my globals 'fix' for embedded
3197 instances had introduced a bug with globals in normal code. Now
3203 instances had introduced a bug with globals in normal code. Now
3198 it's working in all cases.
3204 it's working in all cases.
3199
3205
3200 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
3206 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
3201 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
3207 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
3202 has been introduced to set the default case sensitivity of the
3208 has been introduced to set the default case sensitivity of the
3203 searches. Users can still select either mode at runtime on a
3209 searches. Users can still select either mode at runtime on a
3204 per-search basis.
3210 per-search basis.
3205
3211
3206 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
3212 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
3207
3213
3208 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
3214 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
3209 attributes in wildcard searches for subclasses. Modified version
3215 attributes in wildcard searches for subclasses. Modified version
3210 of a patch by Jorgen.
3216 of a patch by Jorgen.
3211
3217
3212 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
3218 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
3213
3219
3214 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
3220 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
3215 embedded instances. I added a user_global_ns attribute to the
3221 embedded instances. I added a user_global_ns attribute to the
3216 InteractiveShell class to handle this.
3222 InteractiveShell class to handle this.
3217
3223
3218 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
3224 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
3219
3225
3220 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
3226 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
3221 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
3227 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
3222 (reported under win32, but may happen also in other platforms).
3228 (reported under win32, but may happen also in other platforms).
3223 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
3229 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
3224
3230
3225 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
3231 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
3226
3232
3227 * IPython/Magic.py (magic_psearch): new support for wildcard
3233 * IPython/Magic.py (magic_psearch): new support for wildcard
3228 patterns. Now, typing ?a*b will list all names which begin with a
3234 patterns. Now, typing ?a*b will list all names which begin with a
3229 and end in b, for example. The %psearch magic has full
3235 and end in b, for example. The %psearch magic has full
3230 docstrings. Many thanks to JΓΆrgen Stenarson
3236 docstrings. Many thanks to JΓΆrgen Stenarson
3231 <jorgen.stenarson-AT-bostream.nu>, author of the patches
3237 <jorgen.stenarson-AT-bostream.nu>, author of the patches
3232 implementing this functionality.
3238 implementing this functionality.
3233
3239
3234 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3240 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3235
3241
3236 * Manual: fixed long-standing annoyance of double-dashes (as in
3242 * Manual: fixed long-standing annoyance of double-dashes (as in
3237 --prefix=~, for example) being stripped in the HTML version. This
3243 --prefix=~, for example) being stripped in the HTML version. This
3238 is a latex2html bug, but a workaround was provided. Many thanks
3244 is a latex2html bug, but a workaround was provided. Many thanks
3239 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
3245 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
3240 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
3246 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
3241 rolling. This seemingly small issue had tripped a number of users
3247 rolling. This seemingly small issue had tripped a number of users
3242 when first installing, so I'm glad to see it gone.
3248 when first installing, so I'm glad to see it gone.
3243
3249
3244 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3250 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3245
3251
3246 * IPython/Extensions/numeric_formats.py: fix missing import,
3252 * IPython/Extensions/numeric_formats.py: fix missing import,
3247 reported by Stephen Walton.
3253 reported by Stephen Walton.
3248
3254
3249 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
3255 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
3250
3256
3251 * IPython/demo.py: finish demo module, fully documented now.
3257 * IPython/demo.py: finish demo module, fully documented now.
3252
3258
3253 * IPython/genutils.py (file_read): simple little utility to read a
3259 * IPython/genutils.py (file_read): simple little utility to read a
3254 file and ensure it's closed afterwards.
3260 file and ensure it's closed afterwards.
3255
3261
3256 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
3262 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
3257
3263
3258 * IPython/demo.py (Demo.__init__): added support for individually
3264 * IPython/demo.py (Demo.__init__): added support for individually
3259 tagging blocks for automatic execution.
3265 tagging blocks for automatic execution.
3260
3266
3261 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
3267 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
3262 syntax-highlighted python sources, requested by John.
3268 syntax-highlighted python sources, requested by John.
3263
3269
3264 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
3270 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
3265
3271
3266 * IPython/demo.py (Demo.again): fix bug where again() blocks after
3272 * IPython/demo.py (Demo.again): fix bug where again() blocks after
3267 finishing.
3273 finishing.
3268
3274
3269 * IPython/genutils.py (shlex_split): moved from Magic to here,
3275 * IPython/genutils.py (shlex_split): moved from Magic to here,
3270 where all 2.2 compatibility stuff lives. I needed it for demo.py.
3276 where all 2.2 compatibility stuff lives. I needed it for demo.py.
3271
3277
3272 * IPython/demo.py (Demo.__init__): added support for silent
3278 * IPython/demo.py (Demo.__init__): added support for silent
3273 blocks, improved marks as regexps, docstrings written.
3279 blocks, improved marks as regexps, docstrings written.
3274 (Demo.__init__): better docstring, added support for sys.argv.
3280 (Demo.__init__): better docstring, added support for sys.argv.
3275
3281
3276 * IPython/genutils.py (marquee): little utility used by the demo
3282 * IPython/genutils.py (marquee): little utility used by the demo
3277 code, handy in general.
3283 code, handy in general.
3278
3284
3279 * IPython/demo.py (Demo.__init__): new class for interactive
3285 * IPython/demo.py (Demo.__init__): new class for interactive
3280 demos. Not documented yet, I just wrote it in a hurry for
3286 demos. Not documented yet, I just wrote it in a hurry for
3281 scipy'05. Will docstring later.
3287 scipy'05. Will docstring later.
3282
3288
3283 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
3289 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
3284
3290
3285 * IPython/Shell.py (sigint_handler): Drastic simplification which
3291 * IPython/Shell.py (sigint_handler): Drastic simplification which
3286 also seems to make Ctrl-C work correctly across threads! This is
3292 also seems to make Ctrl-C work correctly across threads! This is
3287 so simple, that I can't beleive I'd missed it before. Needs more
3293 so simple, that I can't beleive I'd missed it before. Needs more
3288 testing, though.
3294 testing, though.
3289 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3295 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3290 like this before...
3296 like this before...
3291
3297
3292 * IPython/genutils.py (get_home_dir): add protection against
3298 * IPython/genutils.py (get_home_dir): add protection against
3293 non-dirs in win32 registry.
3299 non-dirs in win32 registry.
3294
3300
3295 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3301 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3296 bug where dict was mutated while iterating (pysh crash).
3302 bug where dict was mutated while iterating (pysh crash).
3297
3303
3298 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3304 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3299
3305
3300 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3306 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3301 spurious newlines added by this routine. After a report by
3307 spurious newlines added by this routine. After a report by
3302 F. Mantegazza.
3308 F. Mantegazza.
3303
3309
3304 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3310 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3305
3311
3306 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3312 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3307 calls. These were a leftover from the GTK 1.x days, and can cause
3313 calls. These were a leftover from the GTK 1.x days, and can cause
3308 problems in certain cases (after a report by John Hunter).
3314 problems in certain cases (after a report by John Hunter).
3309
3315
3310 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3316 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3311 os.getcwd() fails at init time. Thanks to patch from David Remahl
3317 os.getcwd() fails at init time. Thanks to patch from David Remahl
3312 <chmod007-AT-mac.com>.
3318 <chmod007-AT-mac.com>.
3313 (InteractiveShell.__init__): prevent certain special magics from
3319 (InteractiveShell.__init__): prevent certain special magics from
3314 being shadowed by aliases. Closes
3320 being shadowed by aliases. Closes
3315 http://www.scipy.net/roundup/ipython/issue41.
3321 http://www.scipy.net/roundup/ipython/issue41.
3316
3322
3317 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3323 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3318
3324
3319 * IPython/iplib.py (InteractiveShell.complete): Added new
3325 * IPython/iplib.py (InteractiveShell.complete): Added new
3320 top-level completion method to expose the completion mechanism
3326 top-level completion method to expose the completion mechanism
3321 beyond readline-based environments.
3327 beyond readline-based environments.
3322
3328
3323 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3329 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3324
3330
3325 * tools/ipsvnc (svnversion): fix svnversion capture.
3331 * tools/ipsvnc (svnversion): fix svnversion capture.
3326
3332
3327 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3333 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3328 attribute to self, which was missing. Before, it was set by a
3334 attribute to self, which was missing. Before, it was set by a
3329 routine which in certain cases wasn't being called, so the
3335 routine which in certain cases wasn't being called, so the
3330 instance could end up missing the attribute. This caused a crash.
3336 instance could end up missing the attribute. This caused a crash.
3331 Closes http://www.scipy.net/roundup/ipython/issue40.
3337 Closes http://www.scipy.net/roundup/ipython/issue40.
3332
3338
3333 2005-08-16 Fernando Perez <fperez@colorado.edu>
3339 2005-08-16 Fernando Perez <fperez@colorado.edu>
3334
3340
3335 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3341 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3336 contains non-string attribute. Closes
3342 contains non-string attribute. Closes
3337 http://www.scipy.net/roundup/ipython/issue38.
3343 http://www.scipy.net/roundup/ipython/issue38.
3338
3344
3339 2005-08-14 Fernando Perez <fperez@colorado.edu>
3345 2005-08-14 Fernando Perez <fperez@colorado.edu>
3340
3346
3341 * tools/ipsvnc: Minor improvements, to add changeset info.
3347 * tools/ipsvnc: Minor improvements, to add changeset info.
3342
3348
3343 2005-08-12 Fernando Perez <fperez@colorado.edu>
3349 2005-08-12 Fernando Perez <fperez@colorado.edu>
3344
3350
3345 * IPython/iplib.py (runsource): remove self.code_to_run_src
3351 * IPython/iplib.py (runsource): remove self.code_to_run_src
3346 attribute. I realized this is nothing more than
3352 attribute. I realized this is nothing more than
3347 '\n'.join(self.buffer), and having the same data in two different
3353 '\n'.join(self.buffer), and having the same data in two different
3348 places is just asking for synchronization bugs. This may impact
3354 places is just asking for synchronization bugs. This may impact
3349 people who have custom exception handlers, so I need to warn
3355 people who have custom exception handlers, so I need to warn
3350 ipython-dev about it (F. Mantegazza may use them).
3356 ipython-dev about it (F. Mantegazza may use them).
3351
3357
3352 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3358 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3353
3359
3354 * IPython/genutils.py: fix 2.2 compatibility (generators)
3360 * IPython/genutils.py: fix 2.2 compatibility (generators)
3355
3361
3356 2005-07-18 Fernando Perez <fperez@colorado.edu>
3362 2005-07-18 Fernando Perez <fperez@colorado.edu>
3357
3363
3358 * IPython/genutils.py (get_home_dir): fix to help users with
3364 * IPython/genutils.py (get_home_dir): fix to help users with
3359 invalid $HOME under win32.
3365 invalid $HOME under win32.
3360
3366
3361 2005-07-17 Fernando Perez <fperez@colorado.edu>
3367 2005-07-17 Fernando Perez <fperez@colorado.edu>
3362
3368
3363 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3369 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3364 some old hacks and clean up a bit other routines; code should be
3370 some old hacks and clean up a bit other routines; code should be
3365 simpler and a bit faster.
3371 simpler and a bit faster.
3366
3372
3367 * IPython/iplib.py (interact): removed some last-resort attempts
3373 * IPython/iplib.py (interact): removed some last-resort attempts
3368 to survive broken stdout/stderr. That code was only making it
3374 to survive broken stdout/stderr. That code was only making it
3369 harder to abstract out the i/o (necessary for gui integration),
3375 harder to abstract out the i/o (necessary for gui integration),
3370 and the crashes it could prevent were extremely rare in practice
3376 and the crashes it could prevent were extremely rare in practice
3371 (besides being fully user-induced in a pretty violent manner).
3377 (besides being fully user-induced in a pretty violent manner).
3372
3378
3373 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3379 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3374 Nothing major yet, but the code is simpler to read; this should
3380 Nothing major yet, but the code is simpler to read; this should
3375 make it easier to do more serious modifications in the future.
3381 make it easier to do more serious modifications in the future.
3376
3382
3377 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3383 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3378 which broke in .15 (thanks to a report by Ville).
3384 which broke in .15 (thanks to a report by Ville).
3379
3385
3380 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3386 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3381 be quite correct, I know next to nothing about unicode). This
3387 be quite correct, I know next to nothing about unicode). This
3382 will allow unicode strings to be used in prompts, amongst other
3388 will allow unicode strings to be used in prompts, amongst other
3383 cases. It also will prevent ipython from crashing when unicode
3389 cases. It also will prevent ipython from crashing when unicode
3384 shows up unexpectedly in many places. If ascii encoding fails, we
3390 shows up unexpectedly in many places. If ascii encoding fails, we
3385 assume utf_8. Currently the encoding is not a user-visible
3391 assume utf_8. Currently the encoding is not a user-visible
3386 setting, though it could be made so if there is demand for it.
3392 setting, though it could be made so if there is demand for it.
3387
3393
3388 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3394 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3389
3395
3390 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3396 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3391
3397
3392 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3398 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3393
3399
3394 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3400 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3395 code can work transparently for 2.2/2.3.
3401 code can work transparently for 2.2/2.3.
3396
3402
3397 2005-07-16 Fernando Perez <fperez@colorado.edu>
3403 2005-07-16 Fernando Perez <fperez@colorado.edu>
3398
3404
3399 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3405 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3400 out of the color scheme table used for coloring exception
3406 out of the color scheme table used for coloring exception
3401 tracebacks. This allows user code to add new schemes at runtime.
3407 tracebacks. This allows user code to add new schemes at runtime.
3402 This is a minimally modified version of the patch at
3408 This is a minimally modified version of the patch at
3403 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3409 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3404 for the contribution.
3410 for the contribution.
3405
3411
3406 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3412 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3407 slightly modified version of the patch in
3413 slightly modified version of the patch in
3408 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3414 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3409 to remove the previous try/except solution (which was costlier).
3415 to remove the previous try/except solution (which was costlier).
3410 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3416 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3411
3417
3412 2005-06-08 Fernando Perez <fperez@colorado.edu>
3418 2005-06-08 Fernando Perez <fperez@colorado.edu>
3413
3419
3414 * IPython/iplib.py (write/write_err): Add methods to abstract all
3420 * IPython/iplib.py (write/write_err): Add methods to abstract all
3415 I/O a bit more.
3421 I/O a bit more.
3416
3422
3417 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3423 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3418 warning, reported by Aric Hagberg, fix by JD Hunter.
3424 warning, reported by Aric Hagberg, fix by JD Hunter.
3419
3425
3420 2005-06-02 *** Released version 0.6.15
3426 2005-06-02 *** Released version 0.6.15
3421
3427
3422 2005-06-01 Fernando Perez <fperez@colorado.edu>
3428 2005-06-01 Fernando Perez <fperez@colorado.edu>
3423
3429
3424 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3430 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3425 tab-completion of filenames within open-quoted strings. Note that
3431 tab-completion of filenames within open-quoted strings. Note that
3426 this requires that in ~/.ipython/ipythonrc, users change the
3432 this requires that in ~/.ipython/ipythonrc, users change the
3427 readline delimiters configuration to read:
3433 readline delimiters configuration to read:
3428
3434
3429 readline_remove_delims -/~
3435 readline_remove_delims -/~
3430
3436
3431
3437
3432 2005-05-31 *** Released version 0.6.14
3438 2005-05-31 *** Released version 0.6.14
3433
3439
3434 2005-05-29 Fernando Perez <fperez@colorado.edu>
3440 2005-05-29 Fernando Perez <fperez@colorado.edu>
3435
3441
3436 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3442 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3437 with files not on the filesystem. Reported by Eliyahu Sandler
3443 with files not on the filesystem. Reported by Eliyahu Sandler
3438 <eli@gondolin.net>
3444 <eli@gondolin.net>
3439
3445
3440 2005-05-22 Fernando Perez <fperez@colorado.edu>
3446 2005-05-22 Fernando Perez <fperez@colorado.edu>
3441
3447
3442 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3448 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3443 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3449 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3444
3450
3445 2005-05-19 Fernando Perez <fperez@colorado.edu>
3451 2005-05-19 Fernando Perez <fperez@colorado.edu>
3446
3452
3447 * IPython/iplib.py (safe_execfile): close a file which could be
3453 * IPython/iplib.py (safe_execfile): close a file which could be
3448 left open (causing problems in win32, which locks open files).
3454 left open (causing problems in win32, which locks open files).
3449 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3455 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3450
3456
3451 2005-05-18 Fernando Perez <fperez@colorado.edu>
3457 2005-05-18 Fernando Perez <fperez@colorado.edu>
3452
3458
3453 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3459 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3454 keyword arguments correctly to safe_execfile().
3460 keyword arguments correctly to safe_execfile().
3455
3461
3456 2005-05-13 Fernando Perez <fperez@colorado.edu>
3462 2005-05-13 Fernando Perez <fperez@colorado.edu>
3457
3463
3458 * ipython.1: Added info about Qt to manpage, and threads warning
3464 * ipython.1: Added info about Qt to manpage, and threads warning
3459 to usage page (invoked with --help).
3465 to usage page (invoked with --help).
3460
3466
3461 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3467 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3462 new matcher (it goes at the end of the priority list) to do
3468 new matcher (it goes at the end of the priority list) to do
3463 tab-completion on named function arguments. Submitted by George
3469 tab-completion on named function arguments. Submitted by George
3464 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3470 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3465 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3471 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3466 for more details.
3472 for more details.
3467
3473
3468 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3474 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3469 SystemExit exceptions in the script being run. Thanks to a report
3475 SystemExit exceptions in the script being run. Thanks to a report
3470 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3476 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3471 producing very annoying behavior when running unit tests.
3477 producing very annoying behavior when running unit tests.
3472
3478
3473 2005-05-12 Fernando Perez <fperez@colorado.edu>
3479 2005-05-12 Fernando Perez <fperez@colorado.edu>
3474
3480
3475 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3481 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3476 which I'd broken (again) due to a changed regexp. In the process,
3482 which I'd broken (again) due to a changed regexp. In the process,
3477 added ';' as an escape to auto-quote the whole line without
3483 added ';' as an escape to auto-quote the whole line without
3478 splitting its arguments. Thanks to a report by Jerry McRae
3484 splitting its arguments. Thanks to a report by Jerry McRae
3479 <qrs0xyc02-AT-sneakemail.com>.
3485 <qrs0xyc02-AT-sneakemail.com>.
3480
3486
3481 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3487 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3482 possible crashes caused by a TokenError. Reported by Ed Schofield
3488 possible crashes caused by a TokenError. Reported by Ed Schofield
3483 <schofield-AT-ftw.at>.
3489 <schofield-AT-ftw.at>.
3484
3490
3485 2005-05-06 Fernando Perez <fperez@colorado.edu>
3491 2005-05-06 Fernando Perez <fperez@colorado.edu>
3486
3492
3487 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3493 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3488
3494
3489 2005-04-29 Fernando Perez <fperez@colorado.edu>
3495 2005-04-29 Fernando Perez <fperez@colorado.edu>
3490
3496
3491 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3497 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3492 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3498 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3493 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3499 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3494 which provides support for Qt interactive usage (similar to the
3500 which provides support for Qt interactive usage (similar to the
3495 existing one for WX and GTK). This had been often requested.
3501 existing one for WX and GTK). This had been often requested.
3496
3502
3497 2005-04-14 *** Released version 0.6.13
3503 2005-04-14 *** Released version 0.6.13
3498
3504
3499 2005-04-08 Fernando Perez <fperez@colorado.edu>
3505 2005-04-08 Fernando Perez <fperez@colorado.edu>
3500
3506
3501 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3507 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3502 from _ofind, which gets called on almost every input line. Now,
3508 from _ofind, which gets called on almost every input line. Now,
3503 we only try to get docstrings if they are actually going to be
3509 we only try to get docstrings if they are actually going to be
3504 used (the overhead of fetching unnecessary docstrings can be
3510 used (the overhead of fetching unnecessary docstrings can be
3505 noticeable for certain objects, such as Pyro proxies).
3511 noticeable for certain objects, such as Pyro proxies).
3506
3512
3507 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3513 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3508 for completers. For some reason I had been passing them the state
3514 for completers. For some reason I had been passing them the state
3509 variable, which completers never actually need, and was in
3515 variable, which completers never actually need, and was in
3510 conflict with the rlcompleter API. Custom completers ONLY need to
3516 conflict with the rlcompleter API. Custom completers ONLY need to
3511 take the text parameter.
3517 take the text parameter.
3512
3518
3513 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3519 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3514 work correctly in pysh. I've also moved all the logic which used
3520 work correctly in pysh. I've also moved all the logic which used
3515 to be in pysh.py here, which will prevent problems with future
3521 to be in pysh.py here, which will prevent problems with future
3516 upgrades. However, this time I must warn users to update their
3522 upgrades. However, this time I must warn users to update their
3517 pysh profile to include the line
3523 pysh profile to include the line
3518
3524
3519 import_all IPython.Extensions.InterpreterExec
3525 import_all IPython.Extensions.InterpreterExec
3520
3526
3521 because otherwise things won't work for them. They MUST also
3527 because otherwise things won't work for them. They MUST also
3522 delete pysh.py and the line
3528 delete pysh.py and the line
3523
3529
3524 execfile pysh.py
3530 execfile pysh.py
3525
3531
3526 from their ipythonrc-pysh.
3532 from their ipythonrc-pysh.
3527
3533
3528 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3534 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3529 robust in the face of objects whose dir() returns non-strings
3535 robust in the face of objects whose dir() returns non-strings
3530 (which it shouldn't, but some broken libs like ITK do). Thanks to
3536 (which it shouldn't, but some broken libs like ITK do). Thanks to
3531 a patch by John Hunter (implemented differently, though). Also
3537 a patch by John Hunter (implemented differently, though). Also
3532 minor improvements by using .extend instead of + on lists.
3538 minor improvements by using .extend instead of + on lists.
3533
3539
3534 * pysh.py:
3540 * pysh.py:
3535
3541
3536 2005-04-06 Fernando Perez <fperez@colorado.edu>
3542 2005-04-06 Fernando Perez <fperez@colorado.edu>
3537
3543
3538 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3544 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3539 by default, so that all users benefit from it. Those who don't
3545 by default, so that all users benefit from it. Those who don't
3540 want it can still turn it off.
3546 want it can still turn it off.
3541
3547
3542 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3548 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3543 config file, I'd forgotten about this, so users were getting it
3549 config file, I'd forgotten about this, so users were getting it
3544 off by default.
3550 off by default.
3545
3551
3546 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3552 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3547 consistency. Now magics can be called in multiline statements,
3553 consistency. Now magics can be called in multiline statements,
3548 and python variables can be expanded in magic calls via $var.
3554 and python variables can be expanded in magic calls via $var.
3549 This makes the magic system behave just like aliases or !system
3555 This makes the magic system behave just like aliases or !system
3550 calls.
3556 calls.
3551
3557
3552 2005-03-28 Fernando Perez <fperez@colorado.edu>
3558 2005-03-28 Fernando Perez <fperez@colorado.edu>
3553
3559
3554 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3560 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3555 expensive string additions for building command. Add support for
3561 expensive string additions for building command. Add support for
3556 trailing ';' when autocall is used.
3562 trailing ';' when autocall is used.
3557
3563
3558 2005-03-26 Fernando Perez <fperez@colorado.edu>
3564 2005-03-26 Fernando Perez <fperez@colorado.edu>
3559
3565
3560 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3566 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3561 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3567 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3562 ipython.el robust against prompts with any number of spaces
3568 ipython.el robust against prompts with any number of spaces
3563 (including 0) after the ':' character.
3569 (including 0) after the ':' character.
3564
3570
3565 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3571 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3566 continuation prompt, which misled users to think the line was
3572 continuation prompt, which misled users to think the line was
3567 already indented. Closes debian Bug#300847, reported to me by
3573 already indented. Closes debian Bug#300847, reported to me by
3568 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3574 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3569
3575
3570 2005-03-23 Fernando Perez <fperez@colorado.edu>
3576 2005-03-23 Fernando Perez <fperez@colorado.edu>
3571
3577
3572 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3578 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3573 properly aligned if they have embedded newlines.
3579 properly aligned if they have embedded newlines.
3574
3580
3575 * IPython/iplib.py (runlines): Add a public method to expose
3581 * IPython/iplib.py (runlines): Add a public method to expose
3576 IPython's code execution machinery, so that users can run strings
3582 IPython's code execution machinery, so that users can run strings
3577 as if they had been typed at the prompt interactively.
3583 as if they had been typed at the prompt interactively.
3578 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3584 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3579 methods which can call the system shell, but with python variable
3585 methods which can call the system shell, but with python variable
3580 expansion. The three such methods are: __IPYTHON__.system,
3586 expansion. The three such methods are: __IPYTHON__.system,
3581 .getoutput and .getoutputerror. These need to be documented in a
3587 .getoutput and .getoutputerror. These need to be documented in a
3582 'public API' section (to be written) of the manual.
3588 'public API' section (to be written) of the manual.
3583
3589
3584 2005-03-20 Fernando Perez <fperez@colorado.edu>
3590 2005-03-20 Fernando Perez <fperez@colorado.edu>
3585
3591
3586 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3592 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3587 for custom exception handling. This is quite powerful, and it
3593 for custom exception handling. This is quite powerful, and it
3588 allows for user-installable exception handlers which can trap
3594 allows for user-installable exception handlers which can trap
3589 custom exceptions at runtime and treat them separately from
3595 custom exceptions at runtime and treat them separately from
3590 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3596 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3591 Mantegazza <mantegazza-AT-ill.fr>.
3597 Mantegazza <mantegazza-AT-ill.fr>.
3592 (InteractiveShell.set_custom_completer): public API function to
3598 (InteractiveShell.set_custom_completer): public API function to
3593 add new completers at runtime.
3599 add new completers at runtime.
3594
3600
3595 2005-03-19 Fernando Perez <fperez@colorado.edu>
3601 2005-03-19 Fernando Perez <fperez@colorado.edu>
3596
3602
3597 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3603 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3598 allow objects which provide their docstrings via non-standard
3604 allow objects which provide their docstrings via non-standard
3599 mechanisms (like Pyro proxies) to still be inspected by ipython's
3605 mechanisms (like Pyro proxies) to still be inspected by ipython's
3600 ? system.
3606 ? system.
3601
3607
3602 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3608 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3603 automatic capture system. I tried quite hard to make it work
3609 automatic capture system. I tried quite hard to make it work
3604 reliably, and simply failed. I tried many combinations with the
3610 reliably, and simply failed. I tried many combinations with the
3605 subprocess module, but eventually nothing worked in all needed
3611 subprocess module, but eventually nothing worked in all needed
3606 cases (not blocking stdin for the child, duplicating stdout
3612 cases (not blocking stdin for the child, duplicating stdout
3607 without blocking, etc). The new %sc/%sx still do capture to these
3613 without blocking, etc). The new %sc/%sx still do capture to these
3608 magical list/string objects which make shell use much more
3614 magical list/string objects which make shell use much more
3609 conveninent, so not all is lost.
3615 conveninent, so not all is lost.
3610
3616
3611 XXX - FIX MANUAL for the change above!
3617 XXX - FIX MANUAL for the change above!
3612
3618
3613 (runsource): I copied code.py's runsource() into ipython to modify
3619 (runsource): I copied code.py's runsource() into ipython to modify
3614 it a bit. Now the code object and source to be executed are
3620 it a bit. Now the code object and source to be executed are
3615 stored in ipython. This makes this info accessible to third-party
3621 stored in ipython. This makes this info accessible to third-party
3616 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3622 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3617 Mantegazza <mantegazza-AT-ill.fr>.
3623 Mantegazza <mantegazza-AT-ill.fr>.
3618
3624
3619 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3625 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3620 history-search via readline (like C-p/C-n). I'd wanted this for a
3626 history-search via readline (like C-p/C-n). I'd wanted this for a
3621 long time, but only recently found out how to do it. For users
3627 long time, but only recently found out how to do it. For users
3622 who already have their ipythonrc files made and want this, just
3628 who already have their ipythonrc files made and want this, just
3623 add:
3629 add:
3624
3630
3625 readline_parse_and_bind "\e[A": history-search-backward
3631 readline_parse_and_bind "\e[A": history-search-backward
3626 readline_parse_and_bind "\e[B": history-search-forward
3632 readline_parse_and_bind "\e[B": history-search-forward
3627
3633
3628 2005-03-18 Fernando Perez <fperez@colorado.edu>
3634 2005-03-18 Fernando Perez <fperez@colorado.edu>
3629
3635
3630 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3636 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3631 LSString and SList classes which allow transparent conversions
3637 LSString and SList classes which allow transparent conversions
3632 between list mode and whitespace-separated string.
3638 between list mode and whitespace-separated string.
3633 (magic_r): Fix recursion problem in %r.
3639 (magic_r): Fix recursion problem in %r.
3634
3640
3635 * IPython/genutils.py (LSString): New class to be used for
3641 * IPython/genutils.py (LSString): New class to be used for
3636 automatic storage of the results of all alias/system calls in _o
3642 automatic storage of the results of all alias/system calls in _o
3637 and _e (stdout/err). These provide a .l/.list attribute which
3643 and _e (stdout/err). These provide a .l/.list attribute which
3638 does automatic splitting on newlines. This means that for most
3644 does automatic splitting on newlines. This means that for most
3639 uses, you'll never need to do capturing of output with %sc/%sx
3645 uses, you'll never need to do capturing of output with %sc/%sx
3640 anymore, since ipython keeps this always done for you. Note that
3646 anymore, since ipython keeps this always done for you. Note that
3641 only the LAST results are stored, the _o/e variables are
3647 only the LAST results are stored, the _o/e variables are
3642 overwritten on each call. If you need to save their contents
3648 overwritten on each call. If you need to save their contents
3643 further, simply bind them to any other name.
3649 further, simply bind them to any other name.
3644
3650
3645 2005-03-17 Fernando Perez <fperez@colorado.edu>
3651 2005-03-17 Fernando Perez <fperez@colorado.edu>
3646
3652
3647 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3653 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3648 prompt namespace handling.
3654 prompt namespace handling.
3649
3655
3650 2005-03-16 Fernando Perez <fperez@colorado.edu>
3656 2005-03-16 Fernando Perez <fperez@colorado.edu>
3651
3657
3652 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3658 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3653 classic prompts to be '>>> ' (final space was missing, and it
3659 classic prompts to be '>>> ' (final space was missing, and it
3654 trips the emacs python mode).
3660 trips the emacs python mode).
3655 (BasePrompt.__str__): Added safe support for dynamic prompt
3661 (BasePrompt.__str__): Added safe support for dynamic prompt
3656 strings. Now you can set your prompt string to be '$x', and the
3662 strings. Now you can set your prompt string to be '$x', and the
3657 value of x will be printed from your interactive namespace. The
3663 value of x will be printed from your interactive namespace. The
3658 interpolation syntax includes the full Itpl support, so
3664 interpolation syntax includes the full Itpl support, so
3659 ${foo()+x+bar()} is a valid prompt string now, and the function
3665 ${foo()+x+bar()} is a valid prompt string now, and the function
3660 calls will be made at runtime.
3666 calls will be made at runtime.
3661
3667
3662 2005-03-15 Fernando Perez <fperez@colorado.edu>
3668 2005-03-15 Fernando Perez <fperez@colorado.edu>
3663
3669
3664 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3670 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3665 avoid name clashes in pylab. %hist still works, it just forwards
3671 avoid name clashes in pylab. %hist still works, it just forwards
3666 the call to %history.
3672 the call to %history.
3667
3673
3668 2005-03-02 *** Released version 0.6.12
3674 2005-03-02 *** Released version 0.6.12
3669
3675
3670 2005-03-02 Fernando Perez <fperez@colorado.edu>
3676 2005-03-02 Fernando Perez <fperez@colorado.edu>
3671
3677
3672 * IPython/iplib.py (handle_magic): log magic calls properly as
3678 * IPython/iplib.py (handle_magic): log magic calls properly as
3673 ipmagic() function calls.
3679 ipmagic() function calls.
3674
3680
3675 * IPython/Magic.py (magic_time): Improved %time to support
3681 * IPython/Magic.py (magic_time): Improved %time to support
3676 statements and provide wall-clock as well as CPU time.
3682 statements and provide wall-clock as well as CPU time.
3677
3683
3678 2005-02-27 Fernando Perez <fperez@colorado.edu>
3684 2005-02-27 Fernando Perez <fperez@colorado.edu>
3679
3685
3680 * IPython/hooks.py: New hooks module, to expose user-modifiable
3686 * IPython/hooks.py: New hooks module, to expose user-modifiable
3681 IPython functionality in a clean manner. For now only the editor
3687 IPython functionality in a clean manner. For now only the editor
3682 hook is actually written, and other thigns which I intend to turn
3688 hook is actually written, and other thigns which I intend to turn
3683 into proper hooks aren't yet there. The display and prefilter
3689 into proper hooks aren't yet there. The display and prefilter
3684 stuff, for example, should be hooks. But at least now the
3690 stuff, for example, should be hooks. But at least now the
3685 framework is in place, and the rest can be moved here with more
3691 framework is in place, and the rest can be moved here with more
3686 time later. IPython had had a .hooks variable for a long time for
3692 time later. IPython had had a .hooks variable for a long time for
3687 this purpose, but I'd never actually used it for anything.
3693 this purpose, but I'd never actually used it for anything.
3688
3694
3689 2005-02-26 Fernando Perez <fperez@colorado.edu>
3695 2005-02-26 Fernando Perez <fperez@colorado.edu>
3690
3696
3691 * IPython/ipmaker.py (make_IPython): make the default ipython
3697 * IPython/ipmaker.py (make_IPython): make the default ipython
3692 directory be called _ipython under win32, to follow more the
3698 directory be called _ipython under win32, to follow more the
3693 naming peculiarities of that platform (where buggy software like
3699 naming peculiarities of that platform (where buggy software like
3694 Visual Sourcesafe breaks with .named directories). Reported by
3700 Visual Sourcesafe breaks with .named directories). Reported by
3695 Ville Vainio.
3701 Ville Vainio.
3696
3702
3697 2005-02-23 Fernando Perez <fperez@colorado.edu>
3703 2005-02-23 Fernando Perez <fperez@colorado.edu>
3698
3704
3699 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3705 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3700 auto_aliases for win32 which were causing problems. Users can
3706 auto_aliases for win32 which were causing problems. Users can
3701 define the ones they personally like.
3707 define the ones they personally like.
3702
3708
3703 2005-02-21 Fernando Perez <fperez@colorado.edu>
3709 2005-02-21 Fernando Perez <fperez@colorado.edu>
3704
3710
3705 * IPython/Magic.py (magic_time): new magic to time execution of
3711 * IPython/Magic.py (magic_time): new magic to time execution of
3706 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3712 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3707
3713
3708 2005-02-19 Fernando Perez <fperez@colorado.edu>
3714 2005-02-19 Fernando Perez <fperez@colorado.edu>
3709
3715
3710 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3716 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3711 into keys (for prompts, for example).
3717 into keys (for prompts, for example).
3712
3718
3713 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3719 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3714 prompts in case users want them. This introduces a small behavior
3720 prompts in case users want them. This introduces a small behavior
3715 change: ipython does not automatically add a space to all prompts
3721 change: ipython does not automatically add a space to all prompts
3716 anymore. To get the old prompts with a space, users should add it
3722 anymore. To get the old prompts with a space, users should add it
3717 manually to their ipythonrc file, so for example prompt_in1 should
3723 manually to their ipythonrc file, so for example prompt_in1 should
3718 now read 'In [\#]: ' instead of 'In [\#]:'.
3724 now read 'In [\#]: ' instead of 'In [\#]:'.
3719 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3725 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3720 file) to control left-padding of secondary prompts.
3726 file) to control left-padding of secondary prompts.
3721
3727
3722 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3728 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3723 the profiler can't be imported. Fix for Debian, which removed
3729 the profiler can't be imported. Fix for Debian, which removed
3724 profile.py because of License issues. I applied a slightly
3730 profile.py because of License issues. I applied a slightly
3725 modified version of the original Debian patch at
3731 modified version of the original Debian patch at
3726 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3732 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3727
3733
3728 2005-02-17 Fernando Perez <fperez@colorado.edu>
3734 2005-02-17 Fernando Perez <fperez@colorado.edu>
3729
3735
3730 * IPython/genutils.py (native_line_ends): Fix bug which would
3736 * IPython/genutils.py (native_line_ends): Fix bug which would
3731 cause improper line-ends under win32 b/c I was not opening files
3737 cause improper line-ends under win32 b/c I was not opening files
3732 in binary mode. Bug report and fix thanks to Ville.
3738 in binary mode. Bug report and fix thanks to Ville.
3733
3739
3734 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3740 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3735 trying to catch spurious foo[1] autocalls. My fix actually broke
3741 trying to catch spurious foo[1] autocalls. My fix actually broke
3736 ',/' autoquote/call with explicit escape (bad regexp).
3742 ',/' autoquote/call with explicit escape (bad regexp).
3737
3743
3738 2005-02-15 *** Released version 0.6.11
3744 2005-02-15 *** Released version 0.6.11
3739
3745
3740 2005-02-14 Fernando Perez <fperez@colorado.edu>
3746 2005-02-14 Fernando Perez <fperez@colorado.edu>
3741
3747
3742 * IPython/background_jobs.py: New background job management
3748 * IPython/background_jobs.py: New background job management
3743 subsystem. This is implemented via a new set of classes, and
3749 subsystem. This is implemented via a new set of classes, and
3744 IPython now provides a builtin 'jobs' object for background job
3750 IPython now provides a builtin 'jobs' object for background job
3745 execution. A convenience %bg magic serves as a lightweight
3751 execution. A convenience %bg magic serves as a lightweight
3746 frontend for starting the more common type of calls. This was
3752 frontend for starting the more common type of calls. This was
3747 inspired by discussions with B. Granger and the BackgroundCommand
3753 inspired by discussions with B. Granger and the BackgroundCommand
3748 class described in the book Python Scripting for Computational
3754 class described in the book Python Scripting for Computational
3749 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3755 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3750 (although ultimately no code from this text was used, as IPython's
3756 (although ultimately no code from this text was used, as IPython's
3751 system is a separate implementation).
3757 system is a separate implementation).
3752
3758
3753 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3759 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3754 to control the completion of single/double underscore names
3760 to control the completion of single/double underscore names
3755 separately. As documented in the example ipytonrc file, the
3761 separately. As documented in the example ipytonrc file, the
3756 readline_omit__names variable can now be set to 2, to omit even
3762 readline_omit__names variable can now be set to 2, to omit even
3757 single underscore names. Thanks to a patch by Brian Wong
3763 single underscore names. Thanks to a patch by Brian Wong
3758 <BrianWong-AT-AirgoNetworks.Com>.
3764 <BrianWong-AT-AirgoNetworks.Com>.
3759 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3765 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3760 be autocalled as foo([1]) if foo were callable. A problem for
3766 be autocalled as foo([1]) if foo were callable. A problem for
3761 things which are both callable and implement __getitem__.
3767 things which are both callable and implement __getitem__.
3762 (init_readline): Fix autoindentation for win32. Thanks to a patch
3768 (init_readline): Fix autoindentation for win32. Thanks to a patch
3763 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3769 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3764
3770
3765 2005-02-12 Fernando Perez <fperez@colorado.edu>
3771 2005-02-12 Fernando Perez <fperez@colorado.edu>
3766
3772
3767 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3773 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3768 which I had written long ago to sort out user error messages which
3774 which I had written long ago to sort out user error messages which
3769 may occur during startup. This seemed like a good idea initially,
3775 may occur during startup. This seemed like a good idea initially,
3770 but it has proven a disaster in retrospect. I don't want to
3776 but it has proven a disaster in retrospect. I don't want to
3771 change much code for now, so my fix is to set the internal 'debug'
3777 change much code for now, so my fix is to set the internal 'debug'
3772 flag to true everywhere, whose only job was precisely to control
3778 flag to true everywhere, whose only job was precisely to control
3773 this subsystem. This closes issue 28 (as well as avoiding all
3779 this subsystem. This closes issue 28 (as well as avoiding all
3774 sorts of strange hangups which occur from time to time).
3780 sorts of strange hangups which occur from time to time).
3775
3781
3776 2005-02-07 Fernando Perez <fperez@colorado.edu>
3782 2005-02-07 Fernando Perez <fperez@colorado.edu>
3777
3783
3778 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3784 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3779 previous call produced a syntax error.
3785 previous call produced a syntax error.
3780
3786
3781 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3787 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3782 classes without constructor.
3788 classes without constructor.
3783
3789
3784 2005-02-06 Fernando Perez <fperez@colorado.edu>
3790 2005-02-06 Fernando Perez <fperez@colorado.edu>
3785
3791
3786 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3792 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3787 completions with the results of each matcher, so we return results
3793 completions with the results of each matcher, so we return results
3788 to the user from all namespaces. This breaks with ipython
3794 to the user from all namespaces. This breaks with ipython
3789 tradition, but I think it's a nicer behavior. Now you get all
3795 tradition, but I think it's a nicer behavior. Now you get all
3790 possible completions listed, from all possible namespaces (python,
3796 possible completions listed, from all possible namespaces (python,
3791 filesystem, magics...) After a request by John Hunter
3797 filesystem, magics...) After a request by John Hunter
3792 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3798 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3793
3799
3794 2005-02-05 Fernando Perez <fperez@colorado.edu>
3800 2005-02-05 Fernando Perez <fperez@colorado.edu>
3795
3801
3796 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3802 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3797 the call had quote characters in it (the quotes were stripped).
3803 the call had quote characters in it (the quotes were stripped).
3798
3804
3799 2005-01-31 Fernando Perez <fperez@colorado.edu>
3805 2005-01-31 Fernando Perez <fperez@colorado.edu>
3800
3806
3801 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3807 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3802 Itpl.itpl() to make the code more robust against psyco
3808 Itpl.itpl() to make the code more robust against psyco
3803 optimizations.
3809 optimizations.
3804
3810
3805 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3811 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3806 of causing an exception. Quicker, cleaner.
3812 of causing an exception. Quicker, cleaner.
3807
3813
3808 2005-01-28 Fernando Perez <fperez@colorado.edu>
3814 2005-01-28 Fernando Perez <fperez@colorado.edu>
3809
3815
3810 * scripts/ipython_win_post_install.py (install): hardcode
3816 * scripts/ipython_win_post_install.py (install): hardcode
3811 sys.prefix+'python.exe' as the executable path. It turns out that
3817 sys.prefix+'python.exe' as the executable path. It turns out that
3812 during the post-installation run, sys.executable resolves to the
3818 during the post-installation run, sys.executable resolves to the
3813 name of the binary installer! I should report this as a distutils
3819 name of the binary installer! I should report this as a distutils
3814 bug, I think. I updated the .10 release with this tiny fix, to
3820 bug, I think. I updated the .10 release with this tiny fix, to
3815 avoid annoying the lists further.
3821 avoid annoying the lists further.
3816
3822
3817 2005-01-27 *** Released version 0.6.10
3823 2005-01-27 *** Released version 0.6.10
3818
3824
3819 2005-01-27 Fernando Perez <fperez@colorado.edu>
3825 2005-01-27 Fernando Perez <fperez@colorado.edu>
3820
3826
3821 * IPython/numutils.py (norm): Added 'inf' as optional name for
3827 * IPython/numutils.py (norm): Added 'inf' as optional name for
3822 L-infinity norm, included references to mathworld.com for vector
3828 L-infinity norm, included references to mathworld.com for vector
3823 norm definitions.
3829 norm definitions.
3824 (amin/amax): added amin/amax for array min/max. Similar to what
3830 (amin/amax): added amin/amax for array min/max. Similar to what
3825 pylab ships with after the recent reorganization of names.
3831 pylab ships with after the recent reorganization of names.
3826 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3832 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3827
3833
3828 * ipython.el: committed Alex's recent fixes and improvements.
3834 * ipython.el: committed Alex's recent fixes and improvements.
3829 Tested with python-mode from CVS, and it looks excellent. Since
3835 Tested with python-mode from CVS, and it looks excellent. Since
3830 python-mode hasn't released anything in a while, I'm temporarily
3836 python-mode hasn't released anything in a while, I'm temporarily
3831 putting a copy of today's CVS (v 4.70) of python-mode in:
3837 putting a copy of today's CVS (v 4.70) of python-mode in:
3832 http://ipython.scipy.org/tmp/python-mode.el
3838 http://ipython.scipy.org/tmp/python-mode.el
3833
3839
3834 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3840 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3835 sys.executable for the executable name, instead of assuming it's
3841 sys.executable for the executable name, instead of assuming it's
3836 called 'python.exe' (the post-installer would have produced broken
3842 called 'python.exe' (the post-installer would have produced broken
3837 setups on systems with a differently named python binary).
3843 setups on systems with a differently named python binary).
3838
3844
3839 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3845 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3840 references to os.linesep, to make the code more
3846 references to os.linesep, to make the code more
3841 platform-independent. This is also part of the win32 coloring
3847 platform-independent. This is also part of the win32 coloring
3842 fixes.
3848 fixes.
3843
3849
3844 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3850 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3845 lines, which actually cause coloring bugs because the length of
3851 lines, which actually cause coloring bugs because the length of
3846 the line is very difficult to correctly compute with embedded
3852 the line is very difficult to correctly compute with embedded
3847 escapes. This was the source of all the coloring problems under
3853 escapes. This was the source of all the coloring problems under
3848 Win32. I think that _finally_, Win32 users have a properly
3854 Win32. I think that _finally_, Win32 users have a properly
3849 working ipython in all respects. This would never have happened
3855 working ipython in all respects. This would never have happened
3850 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3856 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3851
3857
3852 2005-01-26 *** Released version 0.6.9
3858 2005-01-26 *** Released version 0.6.9
3853
3859
3854 2005-01-25 Fernando Perez <fperez@colorado.edu>
3860 2005-01-25 Fernando Perez <fperez@colorado.edu>
3855
3861
3856 * setup.py: finally, we have a true Windows installer, thanks to
3862 * setup.py: finally, we have a true Windows installer, thanks to
3857 the excellent work of Viktor Ransmayr
3863 the excellent work of Viktor Ransmayr
3858 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3864 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3859 Windows users. The setup routine is quite a bit cleaner thanks to
3865 Windows users. The setup routine is quite a bit cleaner thanks to
3860 this, and the post-install script uses the proper functions to
3866 this, and the post-install script uses the proper functions to
3861 allow a clean de-installation using the standard Windows Control
3867 allow a clean de-installation using the standard Windows Control
3862 Panel.
3868 Panel.
3863
3869
3864 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3870 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3865 environment variable under all OSes (including win32) if
3871 environment variable under all OSes (including win32) if
3866 available. This will give consistency to win32 users who have set
3872 available. This will give consistency to win32 users who have set
3867 this variable for any reason. If os.environ['HOME'] fails, the
3873 this variable for any reason. If os.environ['HOME'] fails, the
3868 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3874 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3869
3875
3870 2005-01-24 Fernando Perez <fperez@colorado.edu>
3876 2005-01-24 Fernando Perez <fperez@colorado.edu>
3871
3877
3872 * IPython/numutils.py (empty_like): add empty_like(), similar to
3878 * IPython/numutils.py (empty_like): add empty_like(), similar to
3873 zeros_like() but taking advantage of the new empty() Numeric routine.
3879 zeros_like() but taking advantage of the new empty() Numeric routine.
3874
3880
3875 2005-01-23 *** Released version 0.6.8
3881 2005-01-23 *** Released version 0.6.8
3876
3882
3877 2005-01-22 Fernando Perez <fperez@colorado.edu>
3883 2005-01-22 Fernando Perez <fperez@colorado.edu>
3878
3884
3879 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3885 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3880 automatic show() calls. After discussing things with JDH, it
3886 automatic show() calls. After discussing things with JDH, it
3881 turns out there are too many corner cases where this can go wrong.
3887 turns out there are too many corner cases where this can go wrong.
3882 It's best not to try to be 'too smart', and simply have ipython
3888 It's best not to try to be 'too smart', and simply have ipython
3883 reproduce as much as possible the default behavior of a normal
3889 reproduce as much as possible the default behavior of a normal
3884 python shell.
3890 python shell.
3885
3891
3886 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3892 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3887 line-splitting regexp and _prefilter() to avoid calling getattr()
3893 line-splitting regexp and _prefilter() to avoid calling getattr()
3888 on assignments. This closes
3894 on assignments. This closes
3889 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3895 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3890 readline uses getattr(), so a simple <TAB> keypress is still
3896 readline uses getattr(), so a simple <TAB> keypress is still
3891 enough to trigger getattr() calls on an object.
3897 enough to trigger getattr() calls on an object.
3892
3898
3893 2005-01-21 Fernando Perez <fperez@colorado.edu>
3899 2005-01-21 Fernando Perez <fperez@colorado.edu>
3894
3900
3895 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3901 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3896 docstring under pylab so it doesn't mask the original.
3902 docstring under pylab so it doesn't mask the original.
3897
3903
3898 2005-01-21 *** Released version 0.6.7
3904 2005-01-21 *** Released version 0.6.7
3899
3905
3900 2005-01-21 Fernando Perez <fperez@colorado.edu>
3906 2005-01-21 Fernando Perez <fperez@colorado.edu>
3901
3907
3902 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3908 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3903 signal handling for win32 users in multithreaded mode.
3909 signal handling for win32 users in multithreaded mode.
3904
3910
3905 2005-01-17 Fernando Perez <fperez@colorado.edu>
3911 2005-01-17 Fernando Perez <fperez@colorado.edu>
3906
3912
3907 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3913 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3908 instances with no __init__. After a crash report by Norbert Nemec
3914 instances with no __init__. After a crash report by Norbert Nemec
3909 <Norbert-AT-nemec-online.de>.
3915 <Norbert-AT-nemec-online.de>.
3910
3916
3911 2005-01-14 Fernando Perez <fperez@colorado.edu>
3917 2005-01-14 Fernando Perez <fperez@colorado.edu>
3912
3918
3913 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3919 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3914 names for verbose exceptions, when multiple dotted names and the
3920 names for verbose exceptions, when multiple dotted names and the
3915 'parent' object were present on the same line.
3921 'parent' object were present on the same line.
3916
3922
3917 2005-01-11 Fernando Perez <fperez@colorado.edu>
3923 2005-01-11 Fernando Perez <fperez@colorado.edu>
3918
3924
3919 * IPython/genutils.py (flag_calls): new utility to trap and flag
3925 * IPython/genutils.py (flag_calls): new utility to trap and flag
3920 calls in functions. I need it to clean up matplotlib support.
3926 calls in functions. I need it to clean up matplotlib support.
3921 Also removed some deprecated code in genutils.
3927 Also removed some deprecated code in genutils.
3922
3928
3923 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3929 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3924 that matplotlib scripts called with %run, which don't call show()
3930 that matplotlib scripts called with %run, which don't call show()
3925 themselves, still have their plotting windows open.
3931 themselves, still have their plotting windows open.
3926
3932
3927 2005-01-05 Fernando Perez <fperez@colorado.edu>
3933 2005-01-05 Fernando Perez <fperez@colorado.edu>
3928
3934
3929 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3935 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3930 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3936 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3931
3937
3932 2004-12-19 Fernando Perez <fperez@colorado.edu>
3938 2004-12-19 Fernando Perez <fperez@colorado.edu>
3933
3939
3934 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3940 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3935 parent_runcode, which was an eyesore. The same result can be
3941 parent_runcode, which was an eyesore. The same result can be
3936 obtained with Python's regular superclass mechanisms.
3942 obtained with Python's regular superclass mechanisms.
3937
3943
3938 2004-12-17 Fernando Perez <fperez@colorado.edu>
3944 2004-12-17 Fernando Perez <fperez@colorado.edu>
3939
3945
3940 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3946 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3941 reported by Prabhu.
3947 reported by Prabhu.
3942 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3948 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3943 sys.stderr) instead of explicitly calling sys.stderr. This helps
3949 sys.stderr) instead of explicitly calling sys.stderr. This helps
3944 maintain our I/O abstractions clean, for future GUI embeddings.
3950 maintain our I/O abstractions clean, for future GUI embeddings.
3945
3951
3946 * IPython/genutils.py (info): added new utility for sys.stderr
3952 * IPython/genutils.py (info): added new utility for sys.stderr
3947 unified info message handling (thin wrapper around warn()).
3953 unified info message handling (thin wrapper around warn()).
3948
3954
3949 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3955 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3950 composite (dotted) names on verbose exceptions.
3956 composite (dotted) names on verbose exceptions.
3951 (VerboseTB.nullrepr): harden against another kind of errors which
3957 (VerboseTB.nullrepr): harden against another kind of errors which
3952 Python's inspect module can trigger, and which were crashing
3958 Python's inspect module can trigger, and which were crashing
3953 IPython. Thanks to a report by Marco Lombardi
3959 IPython. Thanks to a report by Marco Lombardi
3954 <mlombard-AT-ma010192.hq.eso.org>.
3960 <mlombard-AT-ma010192.hq.eso.org>.
3955
3961
3956 2004-12-13 *** Released version 0.6.6
3962 2004-12-13 *** Released version 0.6.6
3957
3963
3958 2004-12-12 Fernando Perez <fperez@colorado.edu>
3964 2004-12-12 Fernando Perez <fperez@colorado.edu>
3959
3965
3960 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3966 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3961 generated by pygtk upon initialization if it was built without
3967 generated by pygtk upon initialization if it was built without
3962 threads (for matplotlib users). After a crash reported by
3968 threads (for matplotlib users). After a crash reported by
3963 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3969 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3964
3970
3965 * IPython/ipmaker.py (make_IPython): fix small bug in the
3971 * IPython/ipmaker.py (make_IPython): fix small bug in the
3966 import_some parameter for multiple imports.
3972 import_some parameter for multiple imports.
3967
3973
3968 * IPython/iplib.py (ipmagic): simplified the interface of
3974 * IPython/iplib.py (ipmagic): simplified the interface of
3969 ipmagic() to take a single string argument, just as it would be
3975 ipmagic() to take a single string argument, just as it would be
3970 typed at the IPython cmd line.
3976 typed at the IPython cmd line.
3971 (ipalias): Added new ipalias() with an interface identical to
3977 (ipalias): Added new ipalias() with an interface identical to
3972 ipmagic(). This completes exposing a pure python interface to the
3978 ipmagic(). This completes exposing a pure python interface to the
3973 alias and magic system, which can be used in loops or more complex
3979 alias and magic system, which can be used in loops or more complex
3974 code where IPython's automatic line mangling is not active.
3980 code where IPython's automatic line mangling is not active.
3975
3981
3976 * IPython/genutils.py (timing): changed interface of timing to
3982 * IPython/genutils.py (timing): changed interface of timing to
3977 simply run code once, which is the most common case. timings()
3983 simply run code once, which is the most common case. timings()
3978 remains unchanged, for the cases where you want multiple runs.
3984 remains unchanged, for the cases where you want multiple runs.
3979
3985
3980 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3986 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3981 bug where Python2.2 crashes with exec'ing code which does not end
3987 bug where Python2.2 crashes with exec'ing code which does not end
3982 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3988 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3983 before.
3989 before.
3984
3990
3985 2004-12-10 Fernando Perez <fperez@colorado.edu>
3991 2004-12-10 Fernando Perez <fperez@colorado.edu>
3986
3992
3987 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3993 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3988 -t to -T, to accomodate the new -t flag in %run (the %run and
3994 -t to -T, to accomodate the new -t flag in %run (the %run and
3989 %prun options are kind of intermixed, and it's not easy to change
3995 %prun options are kind of intermixed, and it's not easy to change
3990 this with the limitations of python's getopt).
3996 this with the limitations of python's getopt).
3991
3997
3992 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3998 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3993 the execution of scripts. It's not as fine-tuned as timeit.py,
3999 the execution of scripts. It's not as fine-tuned as timeit.py,
3994 but it works from inside ipython (and under 2.2, which lacks
4000 but it works from inside ipython (and under 2.2, which lacks
3995 timeit.py). Optionally a number of runs > 1 can be given for
4001 timeit.py). Optionally a number of runs > 1 can be given for
3996 timing very short-running code.
4002 timing very short-running code.
3997
4003
3998 * IPython/genutils.py (uniq_stable): new routine which returns a
4004 * IPython/genutils.py (uniq_stable): new routine which returns a
3999 list of unique elements in any iterable, but in stable order of
4005 list of unique elements in any iterable, but in stable order of
4000 appearance. I needed this for the ultraTB fixes, and it's a handy
4006 appearance. I needed this for the ultraTB fixes, and it's a handy
4001 utility.
4007 utility.
4002
4008
4003 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
4009 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
4004 dotted names in Verbose exceptions. This had been broken since
4010 dotted names in Verbose exceptions. This had been broken since
4005 the very start, now x.y will properly be printed in a Verbose
4011 the very start, now x.y will properly be printed in a Verbose
4006 traceback, instead of x being shown and y appearing always as an
4012 traceback, instead of x being shown and y appearing always as an
4007 'undefined global'. Getting this to work was a bit tricky,
4013 'undefined global'. Getting this to work was a bit tricky,
4008 because by default python tokenizers are stateless. Saved by
4014 because by default python tokenizers are stateless. Saved by
4009 python's ability to easily add a bit of state to an arbitrary
4015 python's ability to easily add a bit of state to an arbitrary
4010 function (without needing to build a full-blown callable object).
4016 function (without needing to build a full-blown callable object).
4011
4017
4012 Also big cleanup of this code, which had horrendous runtime
4018 Also big cleanup of this code, which had horrendous runtime
4013 lookups of zillions of attributes for colorization. Moved all
4019 lookups of zillions of attributes for colorization. Moved all
4014 this code into a few templates, which make it cleaner and quicker.
4020 this code into a few templates, which make it cleaner and quicker.
4015
4021
4016 Printout quality was also improved for Verbose exceptions: one
4022 Printout quality was also improved for Verbose exceptions: one
4017 variable per line, and memory addresses are printed (this can be
4023 variable per line, and memory addresses are printed (this can be
4018 quite handy in nasty debugging situations, which is what Verbose
4024 quite handy in nasty debugging situations, which is what Verbose
4019 is for).
4025 is for).
4020
4026
4021 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
4027 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
4022 the command line as scripts to be loaded by embedded instances.
4028 the command line as scripts to be loaded by embedded instances.
4023 Doing so has the potential for an infinite recursion if there are
4029 Doing so has the potential for an infinite recursion if there are
4024 exceptions thrown in the process. This fixes a strange crash
4030 exceptions thrown in the process. This fixes a strange crash
4025 reported by Philippe MULLER <muller-AT-irit.fr>.
4031 reported by Philippe MULLER <muller-AT-irit.fr>.
4026
4032
4027 2004-12-09 Fernando Perez <fperez@colorado.edu>
4033 2004-12-09 Fernando Perez <fperez@colorado.edu>
4028
4034
4029 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
4035 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
4030 to reflect new names in matplotlib, which now expose the
4036 to reflect new names in matplotlib, which now expose the
4031 matlab-compatible interface via a pylab module instead of the
4037 matlab-compatible interface via a pylab module instead of the
4032 'matlab' name. The new code is backwards compatible, so users of
4038 'matlab' name. The new code is backwards compatible, so users of
4033 all matplotlib versions are OK. Patch by J. Hunter.
4039 all matplotlib versions are OK. Patch by J. Hunter.
4034
4040
4035 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
4041 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
4036 of __init__ docstrings for instances (class docstrings are already
4042 of __init__ docstrings for instances (class docstrings are already
4037 automatically printed). Instances with customized docstrings
4043 automatically printed). Instances with customized docstrings
4038 (indep. of the class) are also recognized and all 3 separate
4044 (indep. of the class) are also recognized and all 3 separate
4039 docstrings are printed (instance, class, constructor). After some
4045 docstrings are printed (instance, class, constructor). After some
4040 comments/suggestions by J. Hunter.
4046 comments/suggestions by J. Hunter.
4041
4047
4042 2004-12-05 Fernando Perez <fperez@colorado.edu>
4048 2004-12-05 Fernando Perez <fperez@colorado.edu>
4043
4049
4044 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
4050 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
4045 warnings when tab-completion fails and triggers an exception.
4051 warnings when tab-completion fails and triggers an exception.
4046
4052
4047 2004-12-03 Fernando Perez <fperez@colorado.edu>
4053 2004-12-03 Fernando Perez <fperez@colorado.edu>
4048
4054
4049 * IPython/Magic.py (magic_prun): Fix bug where an exception would
4055 * IPython/Magic.py (magic_prun): Fix bug where an exception would
4050 be triggered when using 'run -p'. An incorrect option flag was
4056 be triggered when using 'run -p'. An incorrect option flag was
4051 being set ('d' instead of 'D').
4057 being set ('d' instead of 'D').
4052 (manpage): fix missing escaped \- sign.
4058 (manpage): fix missing escaped \- sign.
4053
4059
4054 2004-11-30 *** Released version 0.6.5
4060 2004-11-30 *** Released version 0.6.5
4055
4061
4056 2004-11-30 Fernando Perez <fperez@colorado.edu>
4062 2004-11-30 Fernando Perez <fperez@colorado.edu>
4057
4063
4058 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
4064 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
4059 setting with -d option.
4065 setting with -d option.
4060
4066
4061 * setup.py (docfiles): Fix problem where the doc glob I was using
4067 * setup.py (docfiles): Fix problem where the doc glob I was using
4062 was COMPLETELY BROKEN. It was giving the right files by pure
4068 was COMPLETELY BROKEN. It was giving the right files by pure
4063 accident, but failed once I tried to include ipython.el. Note:
4069 accident, but failed once I tried to include ipython.el. Note:
4064 glob() does NOT allow you to do exclusion on multiple endings!
4070 glob() does NOT allow you to do exclusion on multiple endings!
4065
4071
4066 2004-11-29 Fernando Perez <fperez@colorado.edu>
4072 2004-11-29 Fernando Perez <fperez@colorado.edu>
4067
4073
4068 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
4074 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
4069 the manpage as the source. Better formatting & consistency.
4075 the manpage as the source. Better formatting & consistency.
4070
4076
4071 * IPython/Magic.py (magic_run): Added new -d option, to run
4077 * IPython/Magic.py (magic_run): Added new -d option, to run
4072 scripts under the control of the python pdb debugger. Note that
4078 scripts under the control of the python pdb debugger. Note that
4073 this required changing the %prun option -d to -D, to avoid a clash
4079 this required changing the %prun option -d to -D, to avoid a clash
4074 (since %run must pass options to %prun, and getopt is too dumb to
4080 (since %run must pass options to %prun, and getopt is too dumb to
4075 handle options with string values with embedded spaces). Thanks
4081 handle options with string values with embedded spaces). Thanks
4076 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
4082 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
4077 (magic_who_ls): added type matching to %who and %whos, so that one
4083 (magic_who_ls): added type matching to %who and %whos, so that one
4078 can filter their output to only include variables of certain
4084 can filter their output to only include variables of certain
4079 types. Another suggestion by Matthew.
4085 types. Another suggestion by Matthew.
4080 (magic_whos): Added memory summaries in kb and Mb for arrays.
4086 (magic_whos): Added memory summaries in kb and Mb for arrays.
4081 (magic_who): Improve formatting (break lines every 9 vars).
4087 (magic_who): Improve formatting (break lines every 9 vars).
4082
4088
4083 2004-11-28 Fernando Perez <fperez@colorado.edu>
4089 2004-11-28 Fernando Perez <fperez@colorado.edu>
4084
4090
4085 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
4091 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
4086 cache when empty lines were present.
4092 cache when empty lines were present.
4087
4093
4088 2004-11-24 Fernando Perez <fperez@colorado.edu>
4094 2004-11-24 Fernando Perez <fperez@colorado.edu>
4089
4095
4090 * IPython/usage.py (__doc__): document the re-activated threading
4096 * IPython/usage.py (__doc__): document the re-activated threading
4091 options for WX and GTK.
4097 options for WX and GTK.
4092
4098
4093 2004-11-23 Fernando Perez <fperez@colorado.edu>
4099 2004-11-23 Fernando Perez <fperez@colorado.edu>
4094
4100
4095 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
4101 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
4096 the -wthread and -gthread options, along with a new -tk one to try
4102 the -wthread and -gthread options, along with a new -tk one to try
4097 and coordinate Tk threading with wx/gtk. The tk support is very
4103 and coordinate Tk threading with wx/gtk. The tk support is very
4098 platform dependent, since it seems to require Tcl and Tk to be
4104 platform dependent, since it seems to require Tcl and Tk to be
4099 built with threads (Fedora1/2 appears NOT to have it, but in
4105 built with threads (Fedora1/2 appears NOT to have it, but in
4100 Prabhu's Debian boxes it works OK). But even with some Tk
4106 Prabhu's Debian boxes it works OK). But even with some Tk
4101 limitations, this is a great improvement.
4107 limitations, this is a great improvement.
4102
4108
4103 * IPython/Prompts.py (prompt_specials_color): Added \t for time
4109 * IPython/Prompts.py (prompt_specials_color): Added \t for time
4104 info in user prompts. Patch by Prabhu.
4110 info in user prompts. Patch by Prabhu.
4105
4111
4106 2004-11-18 Fernando Perez <fperez@colorado.edu>
4112 2004-11-18 Fernando Perez <fperez@colorado.edu>
4107
4113
4108 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
4114 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
4109 EOFErrors and bail, to avoid infinite loops if a non-terminating
4115 EOFErrors and bail, to avoid infinite loops if a non-terminating
4110 file is fed into ipython. Patch submitted in issue 19 by user,
4116 file is fed into ipython. Patch submitted in issue 19 by user,
4111 many thanks.
4117 many thanks.
4112
4118
4113 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
4119 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
4114 autoquote/parens in continuation prompts, which can cause lots of
4120 autoquote/parens in continuation prompts, which can cause lots of
4115 problems. Closes roundup issue 20.
4121 problems. Closes roundup issue 20.
4116
4122
4117 2004-11-17 Fernando Perez <fperez@colorado.edu>
4123 2004-11-17 Fernando Perez <fperez@colorado.edu>
4118
4124
4119 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
4125 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
4120 reported as debian bug #280505. I'm not sure my local changelog
4126 reported as debian bug #280505. I'm not sure my local changelog
4121 entry has the proper debian format (Jack?).
4127 entry has the proper debian format (Jack?).
4122
4128
4123 2004-11-08 *** Released version 0.6.4
4129 2004-11-08 *** Released version 0.6.4
4124
4130
4125 2004-11-08 Fernando Perez <fperez@colorado.edu>
4131 2004-11-08 Fernando Perez <fperez@colorado.edu>
4126
4132
4127 * IPython/iplib.py (init_readline): Fix exit message for Windows
4133 * IPython/iplib.py (init_readline): Fix exit message for Windows
4128 when readline is active. Thanks to a report by Eric Jones
4134 when readline is active. Thanks to a report by Eric Jones
4129 <eric-AT-enthought.com>.
4135 <eric-AT-enthought.com>.
4130
4136
4131 2004-11-07 Fernando Perez <fperez@colorado.edu>
4137 2004-11-07 Fernando Perez <fperez@colorado.edu>
4132
4138
4133 * IPython/genutils.py (page): Add a trap for OSError exceptions,
4139 * IPython/genutils.py (page): Add a trap for OSError exceptions,
4134 sometimes seen by win2k/cygwin users.
4140 sometimes seen by win2k/cygwin users.
4135
4141
4136 2004-11-06 Fernando Perez <fperez@colorado.edu>
4142 2004-11-06 Fernando Perez <fperez@colorado.edu>
4137
4143
4138 * IPython/iplib.py (interact): Change the handling of %Exit from
4144 * IPython/iplib.py (interact): Change the handling of %Exit from
4139 trying to propagate a SystemExit to an internal ipython flag.
4145 trying to propagate a SystemExit to an internal ipython flag.
4140 This is less elegant than using Python's exception mechanism, but
4146 This is less elegant than using Python's exception mechanism, but
4141 I can't get that to work reliably with threads, so under -pylab
4147 I can't get that to work reliably with threads, so under -pylab
4142 %Exit was hanging IPython. Cross-thread exception handling is
4148 %Exit was hanging IPython. Cross-thread exception handling is
4143 really a bitch. Thaks to a bug report by Stephen Walton
4149 really a bitch. Thaks to a bug report by Stephen Walton
4144 <stephen.walton-AT-csun.edu>.
4150 <stephen.walton-AT-csun.edu>.
4145
4151
4146 2004-11-04 Fernando Perez <fperez@colorado.edu>
4152 2004-11-04 Fernando Perez <fperez@colorado.edu>
4147
4153
4148 * IPython/iplib.py (raw_input_original): store a pointer to the
4154 * IPython/iplib.py (raw_input_original): store a pointer to the
4149 true raw_input to harden against code which can modify it
4155 true raw_input to harden against code which can modify it
4150 (wx.py.PyShell does this and would otherwise crash ipython).
4156 (wx.py.PyShell does this and would otherwise crash ipython).
4151 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
4157 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
4152
4158
4153 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
4159 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
4154 Ctrl-C problem, which does not mess up the input line.
4160 Ctrl-C problem, which does not mess up the input line.
4155
4161
4156 2004-11-03 Fernando Perez <fperez@colorado.edu>
4162 2004-11-03 Fernando Perez <fperez@colorado.edu>
4157
4163
4158 * IPython/Release.py: Changed licensing to BSD, in all files.
4164 * IPython/Release.py: Changed licensing to BSD, in all files.
4159 (name): lowercase name for tarball/RPM release.
4165 (name): lowercase name for tarball/RPM release.
4160
4166
4161 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
4167 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
4162 use throughout ipython.
4168 use throughout ipython.
4163
4169
4164 * IPython/Magic.py (Magic._ofind): Switch to using the new
4170 * IPython/Magic.py (Magic._ofind): Switch to using the new
4165 OInspect.getdoc() function.
4171 OInspect.getdoc() function.
4166
4172
4167 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
4173 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
4168 of the line currently being canceled via Ctrl-C. It's extremely
4174 of the line currently being canceled via Ctrl-C. It's extremely
4169 ugly, but I don't know how to do it better (the problem is one of
4175 ugly, but I don't know how to do it better (the problem is one of
4170 handling cross-thread exceptions).
4176 handling cross-thread exceptions).
4171
4177
4172 2004-10-28 Fernando Perez <fperez@colorado.edu>
4178 2004-10-28 Fernando Perez <fperez@colorado.edu>
4173
4179
4174 * IPython/Shell.py (signal_handler): add signal handlers to trap
4180 * IPython/Shell.py (signal_handler): add signal handlers to trap
4175 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
4181 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
4176 report by Francesc Alted.
4182 report by Francesc Alted.
4177
4183
4178 2004-10-21 Fernando Perez <fperez@colorado.edu>
4184 2004-10-21 Fernando Perez <fperez@colorado.edu>
4179
4185
4180 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
4186 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
4181 to % for pysh syntax extensions.
4187 to % for pysh syntax extensions.
4182
4188
4183 2004-10-09 Fernando Perez <fperez@colorado.edu>
4189 2004-10-09 Fernando Perez <fperez@colorado.edu>
4184
4190
4185 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
4191 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
4186 arrays to print a more useful summary, without calling str(arr).
4192 arrays to print a more useful summary, without calling str(arr).
4187 This avoids the problem of extremely lengthy computations which
4193 This avoids the problem of extremely lengthy computations which
4188 occur if arr is large, and appear to the user as a system lockup
4194 occur if arr is large, and appear to the user as a system lockup
4189 with 100% cpu activity. After a suggestion by Kristian Sandberg
4195 with 100% cpu activity. After a suggestion by Kristian Sandberg
4190 <Kristian.Sandberg@colorado.edu>.
4196 <Kristian.Sandberg@colorado.edu>.
4191 (Magic.__init__): fix bug in global magic escapes not being
4197 (Magic.__init__): fix bug in global magic escapes not being
4192 correctly set.
4198 correctly set.
4193
4199
4194 2004-10-08 Fernando Perez <fperez@colorado.edu>
4200 2004-10-08 Fernando Perez <fperez@colorado.edu>
4195
4201
4196 * IPython/Magic.py (__license__): change to absolute imports of
4202 * IPython/Magic.py (__license__): change to absolute imports of
4197 ipython's own internal packages, to start adapting to the absolute
4203 ipython's own internal packages, to start adapting to the absolute
4198 import requirement of PEP-328.
4204 import requirement of PEP-328.
4199
4205
4200 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
4206 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
4201 files, and standardize author/license marks through the Release
4207 files, and standardize author/license marks through the Release
4202 module instead of having per/file stuff (except for files with
4208 module instead of having per/file stuff (except for files with
4203 particular licenses, like the MIT/PSF-licensed codes).
4209 particular licenses, like the MIT/PSF-licensed codes).
4204
4210
4205 * IPython/Debugger.py: remove dead code for python 2.1
4211 * IPython/Debugger.py: remove dead code for python 2.1
4206
4212
4207 2004-10-04 Fernando Perez <fperez@colorado.edu>
4213 2004-10-04 Fernando Perez <fperez@colorado.edu>
4208
4214
4209 * IPython/iplib.py (ipmagic): New function for accessing magics
4215 * IPython/iplib.py (ipmagic): New function for accessing magics
4210 via a normal python function call.
4216 via a normal python function call.
4211
4217
4212 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
4218 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
4213 from '@' to '%', to accomodate the new @decorator syntax of python
4219 from '@' to '%', to accomodate the new @decorator syntax of python
4214 2.4.
4220 2.4.
4215
4221
4216 2004-09-29 Fernando Perez <fperez@colorado.edu>
4222 2004-09-29 Fernando Perez <fperez@colorado.edu>
4217
4223
4218 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
4224 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
4219 matplotlib.use to prevent running scripts which try to switch
4225 matplotlib.use to prevent running scripts which try to switch
4220 interactive backends from within ipython. This will just crash
4226 interactive backends from within ipython. This will just crash
4221 the python interpreter, so we can't allow it (but a detailed error
4227 the python interpreter, so we can't allow it (but a detailed error
4222 is given to the user).
4228 is given to the user).
4223
4229
4224 2004-09-28 Fernando Perez <fperez@colorado.edu>
4230 2004-09-28 Fernando Perez <fperez@colorado.edu>
4225
4231
4226 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
4232 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
4227 matplotlib-related fixes so that using @run with non-matplotlib
4233 matplotlib-related fixes so that using @run with non-matplotlib
4228 scripts doesn't pop up spurious plot windows. This requires
4234 scripts doesn't pop up spurious plot windows. This requires
4229 matplotlib >= 0.63, where I had to make some changes as well.
4235 matplotlib >= 0.63, where I had to make some changes as well.
4230
4236
4231 * IPython/ipmaker.py (make_IPython): update version requirement to
4237 * IPython/ipmaker.py (make_IPython): update version requirement to
4232 python 2.2.
4238 python 2.2.
4233
4239
4234 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
4240 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
4235 banner arg for embedded customization.
4241 banner arg for embedded customization.
4236
4242
4237 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
4243 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
4238 explicit uses of __IP as the IPython's instance name. Now things
4244 explicit uses of __IP as the IPython's instance name. Now things
4239 are properly handled via the shell.name value. The actual code
4245 are properly handled via the shell.name value. The actual code
4240 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
4246 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
4241 is much better than before. I'll clean things completely when the
4247 is much better than before. I'll clean things completely when the
4242 magic stuff gets a real overhaul.
4248 magic stuff gets a real overhaul.
4243
4249
4244 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
4250 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
4245 minor changes to debian dir.
4251 minor changes to debian dir.
4246
4252
4247 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
4253 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
4248 pointer to the shell itself in the interactive namespace even when
4254 pointer to the shell itself in the interactive namespace even when
4249 a user-supplied dict is provided. This is needed for embedding
4255 a user-supplied dict is provided. This is needed for embedding
4250 purposes (found by tests with Michel Sanner).
4256 purposes (found by tests with Michel Sanner).
4251
4257
4252 2004-09-27 Fernando Perez <fperez@colorado.edu>
4258 2004-09-27 Fernando Perez <fperez@colorado.edu>
4253
4259
4254 * IPython/UserConfig/ipythonrc: remove []{} from
4260 * IPython/UserConfig/ipythonrc: remove []{} from
4255 readline_remove_delims, so that things like [modname.<TAB> do
4261 readline_remove_delims, so that things like [modname.<TAB> do
4256 proper completion. This disables [].TAB, but that's a less common
4262 proper completion. This disables [].TAB, but that's a less common
4257 case than module names in list comprehensions, for example.
4263 case than module names in list comprehensions, for example.
4258 Thanks to a report by Andrea Riciputi.
4264 Thanks to a report by Andrea Riciputi.
4259
4265
4260 2004-09-09 Fernando Perez <fperez@colorado.edu>
4266 2004-09-09 Fernando Perez <fperez@colorado.edu>
4261
4267
4262 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
4268 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
4263 blocking problems in win32 and osx. Fix by John.
4269 blocking problems in win32 and osx. Fix by John.
4264
4270
4265 2004-09-08 Fernando Perez <fperez@colorado.edu>
4271 2004-09-08 Fernando Perez <fperez@colorado.edu>
4266
4272
4267 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
4273 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
4268 for Win32 and OSX. Fix by John Hunter.
4274 for Win32 and OSX. Fix by John Hunter.
4269
4275
4270 2004-08-30 *** Released version 0.6.3
4276 2004-08-30 *** Released version 0.6.3
4271
4277
4272 2004-08-30 Fernando Perez <fperez@colorado.edu>
4278 2004-08-30 Fernando Perez <fperez@colorado.edu>
4273
4279
4274 * setup.py (isfile): Add manpages to list of dependent files to be
4280 * setup.py (isfile): Add manpages to list of dependent files to be
4275 updated.
4281 updated.
4276
4282
4277 2004-08-27 Fernando Perez <fperez@colorado.edu>
4283 2004-08-27 Fernando Perez <fperez@colorado.edu>
4278
4284
4279 * IPython/Shell.py (start): I've disabled -wthread and -gthread
4285 * IPython/Shell.py (start): I've disabled -wthread and -gthread
4280 for now. They don't really work with standalone WX/GTK code
4286 for now. They don't really work with standalone WX/GTK code
4281 (though matplotlib IS working fine with both of those backends).
4287 (though matplotlib IS working fine with both of those backends).
4282 This will neeed much more testing. I disabled most things with
4288 This will neeed much more testing. I disabled most things with
4283 comments, so turning it back on later should be pretty easy.
4289 comments, so turning it back on later should be pretty easy.
4284
4290
4285 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4291 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4286 autocalling of expressions like r'foo', by modifying the line
4292 autocalling of expressions like r'foo', by modifying the line
4287 split regexp. Closes
4293 split regexp. Closes
4288 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4294 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4289 Riley <ipythonbugs-AT-sabi.net>.
4295 Riley <ipythonbugs-AT-sabi.net>.
4290 (InteractiveShell.mainloop): honor --nobanner with banner
4296 (InteractiveShell.mainloop): honor --nobanner with banner
4291 extensions.
4297 extensions.
4292
4298
4293 * IPython/Shell.py: Significant refactoring of all classes, so
4299 * IPython/Shell.py: Significant refactoring of all classes, so
4294 that we can really support ALL matplotlib backends and threading
4300 that we can really support ALL matplotlib backends and threading
4295 models (John spotted a bug with Tk which required this). Now we
4301 models (John spotted a bug with Tk which required this). Now we
4296 should support single-threaded, WX-threads and GTK-threads, both
4302 should support single-threaded, WX-threads and GTK-threads, both
4297 for generic code and for matplotlib.
4303 for generic code and for matplotlib.
4298
4304
4299 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4305 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4300 -pylab, to simplify things for users. Will also remove the pylab
4306 -pylab, to simplify things for users. Will also remove the pylab
4301 profile, since now all of matplotlib configuration is directly
4307 profile, since now all of matplotlib configuration is directly
4302 handled here. This also reduces startup time.
4308 handled here. This also reduces startup time.
4303
4309
4304 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4310 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4305 shell wasn't being correctly called. Also in IPShellWX.
4311 shell wasn't being correctly called. Also in IPShellWX.
4306
4312
4307 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4313 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4308 fine-tune banner.
4314 fine-tune banner.
4309
4315
4310 * IPython/numutils.py (spike): Deprecate these spike functions,
4316 * IPython/numutils.py (spike): Deprecate these spike functions,
4311 delete (long deprecated) gnuplot_exec handler.
4317 delete (long deprecated) gnuplot_exec handler.
4312
4318
4313 2004-08-26 Fernando Perez <fperez@colorado.edu>
4319 2004-08-26 Fernando Perez <fperez@colorado.edu>
4314
4320
4315 * ipython.1: Update for threading options, plus some others which
4321 * ipython.1: Update for threading options, plus some others which
4316 were missing.
4322 were missing.
4317
4323
4318 * IPython/ipmaker.py (__call__): Added -wthread option for
4324 * IPython/ipmaker.py (__call__): Added -wthread option for
4319 wxpython thread handling. Make sure threading options are only
4325 wxpython thread handling. Make sure threading options are only
4320 valid at the command line.
4326 valid at the command line.
4321
4327
4322 * scripts/ipython: moved shell selection into a factory function
4328 * scripts/ipython: moved shell selection into a factory function
4323 in Shell.py, to keep the starter script to a minimum.
4329 in Shell.py, to keep the starter script to a minimum.
4324
4330
4325 2004-08-25 Fernando Perez <fperez@colorado.edu>
4331 2004-08-25 Fernando Perez <fperez@colorado.edu>
4326
4332
4327 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4333 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4328 John. Along with some recent changes he made to matplotlib, the
4334 John. Along with some recent changes he made to matplotlib, the
4329 next versions of both systems should work very well together.
4335 next versions of both systems should work very well together.
4330
4336
4331 2004-08-24 Fernando Perez <fperez@colorado.edu>
4337 2004-08-24 Fernando Perez <fperez@colorado.edu>
4332
4338
4333 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4339 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4334 tried to switch the profiling to using hotshot, but I'm getting
4340 tried to switch the profiling to using hotshot, but I'm getting
4335 strange errors from prof.runctx() there. I may be misreading the
4341 strange errors from prof.runctx() there. I may be misreading the
4336 docs, but it looks weird. For now the profiling code will
4342 docs, but it looks weird. For now the profiling code will
4337 continue to use the standard profiler.
4343 continue to use the standard profiler.
4338
4344
4339 2004-08-23 Fernando Perez <fperez@colorado.edu>
4345 2004-08-23 Fernando Perez <fperez@colorado.edu>
4340
4346
4341 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4347 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4342 threaded shell, by John Hunter. It's not quite ready yet, but
4348 threaded shell, by John Hunter. It's not quite ready yet, but
4343 close.
4349 close.
4344
4350
4345 2004-08-22 Fernando Perez <fperez@colorado.edu>
4351 2004-08-22 Fernando Perez <fperez@colorado.edu>
4346
4352
4347 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4353 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4348 in Magic and ultraTB.
4354 in Magic and ultraTB.
4349
4355
4350 * ipython.1: document threading options in manpage.
4356 * ipython.1: document threading options in manpage.
4351
4357
4352 * scripts/ipython: Changed name of -thread option to -gthread,
4358 * scripts/ipython: Changed name of -thread option to -gthread,
4353 since this is GTK specific. I want to leave the door open for a
4359 since this is GTK specific. I want to leave the door open for a
4354 -wthread option for WX, which will most likely be necessary. This
4360 -wthread option for WX, which will most likely be necessary. This
4355 change affects usage and ipmaker as well.
4361 change affects usage and ipmaker as well.
4356
4362
4357 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4363 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4358 handle the matplotlib shell issues. Code by John Hunter
4364 handle the matplotlib shell issues. Code by John Hunter
4359 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4365 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4360 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4366 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4361 broken (and disabled for end users) for now, but it puts the
4367 broken (and disabled for end users) for now, but it puts the
4362 infrastructure in place.
4368 infrastructure in place.
4363
4369
4364 2004-08-21 Fernando Perez <fperez@colorado.edu>
4370 2004-08-21 Fernando Perez <fperez@colorado.edu>
4365
4371
4366 * ipythonrc-pylab: Add matplotlib support.
4372 * ipythonrc-pylab: Add matplotlib support.
4367
4373
4368 * matplotlib_config.py: new files for matplotlib support, part of
4374 * matplotlib_config.py: new files for matplotlib support, part of
4369 the pylab profile.
4375 the pylab profile.
4370
4376
4371 * IPython/usage.py (__doc__): documented the threading options.
4377 * IPython/usage.py (__doc__): documented the threading options.
4372
4378
4373 2004-08-20 Fernando Perez <fperez@colorado.edu>
4379 2004-08-20 Fernando Perez <fperez@colorado.edu>
4374
4380
4375 * ipython: Modified the main calling routine to handle the -thread
4381 * ipython: Modified the main calling routine to handle the -thread
4376 and -mpthread options. This needs to be done as a top-level hack,
4382 and -mpthread options. This needs to be done as a top-level hack,
4377 because it determines which class to instantiate for IPython
4383 because it determines which class to instantiate for IPython
4378 itself.
4384 itself.
4379
4385
4380 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4386 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4381 classes to support multithreaded GTK operation without blocking,
4387 classes to support multithreaded GTK operation without blocking,
4382 and matplotlib with all backends. This is a lot of still very
4388 and matplotlib with all backends. This is a lot of still very
4383 experimental code, and threads are tricky. So it may still have a
4389 experimental code, and threads are tricky. So it may still have a
4384 few rough edges... This code owes a lot to
4390 few rough edges... This code owes a lot to
4385 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4391 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4386 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4392 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4387 to John Hunter for all the matplotlib work.
4393 to John Hunter for all the matplotlib work.
4388
4394
4389 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4395 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4390 options for gtk thread and matplotlib support.
4396 options for gtk thread and matplotlib support.
4391
4397
4392 2004-08-16 Fernando Perez <fperez@colorado.edu>
4398 2004-08-16 Fernando Perez <fperez@colorado.edu>
4393
4399
4394 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4400 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4395 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4401 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4396 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4402 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4397
4403
4398 2004-08-11 Fernando Perez <fperez@colorado.edu>
4404 2004-08-11 Fernando Perez <fperez@colorado.edu>
4399
4405
4400 * setup.py (isfile): Fix build so documentation gets updated for
4406 * setup.py (isfile): Fix build so documentation gets updated for
4401 rpms (it was only done for .tgz builds).
4407 rpms (it was only done for .tgz builds).
4402
4408
4403 2004-08-10 Fernando Perez <fperez@colorado.edu>
4409 2004-08-10 Fernando Perez <fperez@colorado.edu>
4404
4410
4405 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4411 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4406
4412
4407 * iplib.py : Silence syntax error exceptions in tab-completion.
4413 * iplib.py : Silence syntax error exceptions in tab-completion.
4408
4414
4409 2004-08-05 Fernando Perez <fperez@colorado.edu>
4415 2004-08-05 Fernando Perez <fperez@colorado.edu>
4410
4416
4411 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4417 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4412 'color off' mark for continuation prompts. This was causing long
4418 'color off' mark for continuation prompts. This was causing long
4413 continuation lines to mis-wrap.
4419 continuation lines to mis-wrap.
4414
4420
4415 2004-08-01 Fernando Perez <fperez@colorado.edu>
4421 2004-08-01 Fernando Perez <fperez@colorado.edu>
4416
4422
4417 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4423 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4418 for building ipython to be a parameter. All this is necessary
4424 for building ipython to be a parameter. All this is necessary
4419 right now to have a multithreaded version, but this insane
4425 right now to have a multithreaded version, but this insane
4420 non-design will be cleaned up soon. For now, it's a hack that
4426 non-design will be cleaned up soon. For now, it's a hack that
4421 works.
4427 works.
4422
4428
4423 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4429 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4424 args in various places. No bugs so far, but it's a dangerous
4430 args in various places. No bugs so far, but it's a dangerous
4425 practice.
4431 practice.
4426
4432
4427 2004-07-31 Fernando Perez <fperez@colorado.edu>
4433 2004-07-31 Fernando Perez <fperez@colorado.edu>
4428
4434
4429 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4435 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4430 fix completion of files with dots in their names under most
4436 fix completion of files with dots in their names under most
4431 profiles (pysh was OK because the completion order is different).
4437 profiles (pysh was OK because the completion order is different).
4432
4438
4433 2004-07-27 Fernando Perez <fperez@colorado.edu>
4439 2004-07-27 Fernando Perez <fperez@colorado.edu>
4434
4440
4435 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4441 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4436 keywords manually, b/c the one in keyword.py was removed in python
4442 keywords manually, b/c the one in keyword.py was removed in python
4437 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4443 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4438 This is NOT a bug under python 2.3 and earlier.
4444 This is NOT a bug under python 2.3 and earlier.
4439
4445
4440 2004-07-26 Fernando Perez <fperez@colorado.edu>
4446 2004-07-26 Fernando Perez <fperez@colorado.edu>
4441
4447
4442 * IPython/ultraTB.py (VerboseTB.text): Add another
4448 * IPython/ultraTB.py (VerboseTB.text): Add another
4443 linecache.checkcache() call to try to prevent inspect.py from
4449 linecache.checkcache() call to try to prevent inspect.py from
4444 crashing under python 2.3. I think this fixes
4450 crashing under python 2.3. I think this fixes
4445 http://www.scipy.net/roundup/ipython/issue17.
4451 http://www.scipy.net/roundup/ipython/issue17.
4446
4452
4447 2004-07-26 *** Released version 0.6.2
4453 2004-07-26 *** Released version 0.6.2
4448
4454
4449 2004-07-26 Fernando Perez <fperez@colorado.edu>
4455 2004-07-26 Fernando Perez <fperez@colorado.edu>
4450
4456
4451 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4457 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4452 fail for any number.
4458 fail for any number.
4453 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4459 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4454 empty bookmarks.
4460 empty bookmarks.
4455
4461
4456 2004-07-26 *** Released version 0.6.1
4462 2004-07-26 *** Released version 0.6.1
4457
4463
4458 2004-07-26 Fernando Perez <fperez@colorado.edu>
4464 2004-07-26 Fernando Perez <fperez@colorado.edu>
4459
4465
4460 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4466 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4461
4467
4462 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4468 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4463 escaping '()[]{}' in filenames.
4469 escaping '()[]{}' in filenames.
4464
4470
4465 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4471 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4466 Python 2.2 users who lack a proper shlex.split.
4472 Python 2.2 users who lack a proper shlex.split.
4467
4473
4468 2004-07-19 Fernando Perez <fperez@colorado.edu>
4474 2004-07-19 Fernando Perez <fperez@colorado.edu>
4469
4475
4470 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4476 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4471 for reading readline's init file. I follow the normal chain:
4477 for reading readline's init file. I follow the normal chain:
4472 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4478 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4473 report by Mike Heeter. This closes
4479 report by Mike Heeter. This closes
4474 http://www.scipy.net/roundup/ipython/issue16.
4480 http://www.scipy.net/roundup/ipython/issue16.
4475
4481
4476 2004-07-18 Fernando Perez <fperez@colorado.edu>
4482 2004-07-18 Fernando Perez <fperez@colorado.edu>
4477
4483
4478 * IPython/iplib.py (__init__): Add better handling of '\' under
4484 * IPython/iplib.py (__init__): Add better handling of '\' under
4479 Win32 for filenames. After a patch by Ville.
4485 Win32 for filenames. After a patch by Ville.
4480
4486
4481 2004-07-17 Fernando Perez <fperez@colorado.edu>
4487 2004-07-17 Fernando Perez <fperez@colorado.edu>
4482
4488
4483 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4489 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4484 autocalling would be triggered for 'foo is bar' if foo is
4490 autocalling would be triggered for 'foo is bar' if foo is
4485 callable. I also cleaned up the autocall detection code to use a
4491 callable. I also cleaned up the autocall detection code to use a
4486 regexp, which is faster. Bug reported by Alexander Schmolck.
4492 regexp, which is faster. Bug reported by Alexander Schmolck.
4487
4493
4488 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4494 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4489 '?' in them would confuse the help system. Reported by Alex
4495 '?' in them would confuse the help system. Reported by Alex
4490 Schmolck.
4496 Schmolck.
4491
4497
4492 2004-07-16 Fernando Perez <fperez@colorado.edu>
4498 2004-07-16 Fernando Perez <fperez@colorado.edu>
4493
4499
4494 * IPython/GnuplotInteractive.py (__all__): added plot2.
4500 * IPython/GnuplotInteractive.py (__all__): added plot2.
4495
4501
4496 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4502 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4497 plotting dictionaries, lists or tuples of 1d arrays.
4503 plotting dictionaries, lists or tuples of 1d arrays.
4498
4504
4499 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4505 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4500 optimizations.
4506 optimizations.
4501
4507
4502 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4508 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4503 the information which was there from Janko's original IPP code:
4509 the information which was there from Janko's original IPP code:
4504
4510
4505 03.05.99 20:53 porto.ifm.uni-kiel.de
4511 03.05.99 20:53 porto.ifm.uni-kiel.de
4506 --Started changelog.
4512 --Started changelog.
4507 --make clear do what it say it does
4513 --make clear do what it say it does
4508 --added pretty output of lines from inputcache
4514 --added pretty output of lines from inputcache
4509 --Made Logger a mixin class, simplifies handling of switches
4515 --Made Logger a mixin class, simplifies handling of switches
4510 --Added own completer class. .string<TAB> expands to last history
4516 --Added own completer class. .string<TAB> expands to last history
4511 line which starts with string. The new expansion is also present
4517 line which starts with string. The new expansion is also present
4512 with Ctrl-r from the readline library. But this shows, who this
4518 with Ctrl-r from the readline library. But this shows, who this
4513 can be done for other cases.
4519 can be done for other cases.
4514 --Added convention that all shell functions should accept a
4520 --Added convention that all shell functions should accept a
4515 parameter_string This opens the door for different behaviour for
4521 parameter_string This opens the door for different behaviour for
4516 each function. @cd is a good example of this.
4522 each function. @cd is a good example of this.
4517
4523
4518 04.05.99 12:12 porto.ifm.uni-kiel.de
4524 04.05.99 12:12 porto.ifm.uni-kiel.de
4519 --added logfile rotation
4525 --added logfile rotation
4520 --added new mainloop method which freezes first the namespace
4526 --added new mainloop method which freezes first the namespace
4521
4527
4522 07.05.99 21:24 porto.ifm.uni-kiel.de
4528 07.05.99 21:24 porto.ifm.uni-kiel.de
4523 --added the docreader classes. Now there is a help system.
4529 --added the docreader classes. Now there is a help system.
4524 -This is only a first try. Currently it's not easy to put new
4530 -This is only a first try. Currently it's not easy to put new
4525 stuff in the indices. But this is the way to go. Info would be
4531 stuff in the indices. But this is the way to go. Info would be
4526 better, but HTML is every where and not everybody has an info
4532 better, but HTML is every where and not everybody has an info
4527 system installed and it's not so easy to change html-docs to info.
4533 system installed and it's not so easy to change html-docs to info.
4528 --added global logfile option
4534 --added global logfile option
4529 --there is now a hook for object inspection method pinfo needs to
4535 --there is now a hook for object inspection method pinfo needs to
4530 be provided for this. Can be reached by two '??'.
4536 be provided for this. Can be reached by two '??'.
4531
4537
4532 08.05.99 20:51 porto.ifm.uni-kiel.de
4538 08.05.99 20:51 porto.ifm.uni-kiel.de
4533 --added a README
4539 --added a README
4534 --bug in rc file. Something has changed so functions in the rc
4540 --bug in rc file. Something has changed so functions in the rc
4535 file need to reference the shell and not self. Not clear if it's a
4541 file need to reference the shell and not self. Not clear if it's a
4536 bug or feature.
4542 bug or feature.
4537 --changed rc file for new behavior
4543 --changed rc file for new behavior
4538
4544
4539 2004-07-15 Fernando Perez <fperez@colorado.edu>
4545 2004-07-15 Fernando Perez <fperez@colorado.edu>
4540
4546
4541 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4547 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4542 cache was falling out of sync in bizarre manners when multi-line
4548 cache was falling out of sync in bizarre manners when multi-line
4543 input was present. Minor optimizations and cleanup.
4549 input was present. Minor optimizations and cleanup.
4544
4550
4545 (Logger): Remove old Changelog info for cleanup. This is the
4551 (Logger): Remove old Changelog info for cleanup. This is the
4546 information which was there from Janko's original code:
4552 information which was there from Janko's original code:
4547
4553
4548 Changes to Logger: - made the default log filename a parameter
4554 Changes to Logger: - made the default log filename a parameter
4549
4555
4550 - put a check for lines beginning with !@? in log(). Needed
4556 - put a check for lines beginning with !@? in log(). Needed
4551 (even if the handlers properly log their lines) for mid-session
4557 (even if the handlers properly log their lines) for mid-session
4552 logging activation to work properly. Without this, lines logged
4558 logging activation to work properly. Without this, lines logged
4553 in mid session, which get read from the cache, would end up
4559 in mid session, which get read from the cache, would end up
4554 'bare' (with !@? in the open) in the log. Now they are caught
4560 'bare' (with !@? in the open) in the log. Now they are caught
4555 and prepended with a #.
4561 and prepended with a #.
4556
4562
4557 * IPython/iplib.py (InteractiveShell.init_readline): added check
4563 * IPython/iplib.py (InteractiveShell.init_readline): added check
4558 in case MagicCompleter fails to be defined, so we don't crash.
4564 in case MagicCompleter fails to be defined, so we don't crash.
4559
4565
4560 2004-07-13 Fernando Perez <fperez@colorado.edu>
4566 2004-07-13 Fernando Perez <fperez@colorado.edu>
4561
4567
4562 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4568 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4563 of EPS if the requested filename ends in '.eps'.
4569 of EPS if the requested filename ends in '.eps'.
4564
4570
4565 2004-07-04 Fernando Perez <fperez@colorado.edu>
4571 2004-07-04 Fernando Perez <fperez@colorado.edu>
4566
4572
4567 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4573 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4568 escaping of quotes when calling the shell.
4574 escaping of quotes when calling the shell.
4569
4575
4570 2004-07-02 Fernando Perez <fperez@colorado.edu>
4576 2004-07-02 Fernando Perez <fperez@colorado.edu>
4571
4577
4572 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4578 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4573 gettext not working because we were clobbering '_'. Fixes
4579 gettext not working because we were clobbering '_'. Fixes
4574 http://www.scipy.net/roundup/ipython/issue6.
4580 http://www.scipy.net/roundup/ipython/issue6.
4575
4581
4576 2004-07-01 Fernando Perez <fperez@colorado.edu>
4582 2004-07-01 Fernando Perez <fperez@colorado.edu>
4577
4583
4578 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4584 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4579 into @cd. Patch by Ville.
4585 into @cd. Patch by Ville.
4580
4586
4581 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4587 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4582 new function to store things after ipmaker runs. Patch by Ville.
4588 new function to store things after ipmaker runs. Patch by Ville.
4583 Eventually this will go away once ipmaker is removed and the class
4589 Eventually this will go away once ipmaker is removed and the class
4584 gets cleaned up, but for now it's ok. Key functionality here is
4590 gets cleaned up, but for now it's ok. Key functionality here is
4585 the addition of the persistent storage mechanism, a dict for
4591 the addition of the persistent storage mechanism, a dict for
4586 keeping data across sessions (for now just bookmarks, but more can
4592 keeping data across sessions (for now just bookmarks, but more can
4587 be implemented later).
4593 be implemented later).
4588
4594
4589 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4595 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4590 persistent across sections. Patch by Ville, I modified it
4596 persistent across sections. Patch by Ville, I modified it
4591 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4597 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4592 added a '-l' option to list all bookmarks.
4598 added a '-l' option to list all bookmarks.
4593
4599
4594 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4600 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4595 center for cleanup. Registered with atexit.register(). I moved
4601 center for cleanup. Registered with atexit.register(). I moved
4596 here the old exit_cleanup(). After a patch by Ville.
4602 here the old exit_cleanup(). After a patch by Ville.
4597
4603
4598 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4604 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4599 characters in the hacked shlex_split for python 2.2.
4605 characters in the hacked shlex_split for python 2.2.
4600
4606
4601 * IPython/iplib.py (file_matches): more fixes to filenames with
4607 * IPython/iplib.py (file_matches): more fixes to filenames with
4602 whitespace in them. It's not perfect, but limitations in python's
4608 whitespace in them. It's not perfect, but limitations in python's
4603 readline make it impossible to go further.
4609 readline make it impossible to go further.
4604
4610
4605 2004-06-29 Fernando Perez <fperez@colorado.edu>
4611 2004-06-29 Fernando Perez <fperez@colorado.edu>
4606
4612
4607 * IPython/iplib.py (file_matches): escape whitespace correctly in
4613 * IPython/iplib.py (file_matches): escape whitespace correctly in
4608 filename completions. Bug reported by Ville.
4614 filename completions. Bug reported by Ville.
4609
4615
4610 2004-06-28 Fernando Perez <fperez@colorado.edu>
4616 2004-06-28 Fernando Perez <fperez@colorado.edu>
4611
4617
4612 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4618 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4613 the history file will be called 'history-PROFNAME' (or just
4619 the history file will be called 'history-PROFNAME' (or just
4614 'history' if no profile is loaded). I was getting annoyed at
4620 'history' if no profile is loaded). I was getting annoyed at
4615 getting my Numerical work history clobbered by pysh sessions.
4621 getting my Numerical work history clobbered by pysh sessions.
4616
4622
4617 * IPython/iplib.py (InteractiveShell.__init__): Internal
4623 * IPython/iplib.py (InteractiveShell.__init__): Internal
4618 getoutputerror() function so that we can honor the system_verbose
4624 getoutputerror() function so that we can honor the system_verbose
4619 flag for _all_ system calls. I also added escaping of #
4625 flag for _all_ system calls. I also added escaping of #
4620 characters here to avoid confusing Itpl.
4626 characters here to avoid confusing Itpl.
4621
4627
4622 * IPython/Magic.py (shlex_split): removed call to shell in
4628 * IPython/Magic.py (shlex_split): removed call to shell in
4623 parse_options and replaced it with shlex.split(). The annoying
4629 parse_options and replaced it with shlex.split(). The annoying
4624 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4630 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4625 to backport it from 2.3, with several frail hacks (the shlex
4631 to backport it from 2.3, with several frail hacks (the shlex
4626 module is rather limited in 2.2). Thanks to a suggestion by Ville
4632 module is rather limited in 2.2). Thanks to a suggestion by Ville
4627 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4633 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4628 problem.
4634 problem.
4629
4635
4630 (Magic.magic_system_verbose): new toggle to print the actual
4636 (Magic.magic_system_verbose): new toggle to print the actual
4631 system calls made by ipython. Mainly for debugging purposes.
4637 system calls made by ipython. Mainly for debugging purposes.
4632
4638
4633 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4639 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4634 doesn't support persistence. Reported (and fix suggested) by
4640 doesn't support persistence. Reported (and fix suggested) by
4635 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4641 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4636
4642
4637 2004-06-26 Fernando Perez <fperez@colorado.edu>
4643 2004-06-26 Fernando Perez <fperez@colorado.edu>
4638
4644
4639 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4645 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4640 continue prompts.
4646 continue prompts.
4641
4647
4642 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4648 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4643 function (basically a big docstring) and a few more things here to
4649 function (basically a big docstring) and a few more things here to
4644 speedup startup. pysh.py is now very lightweight. We want because
4650 speedup startup. pysh.py is now very lightweight. We want because
4645 it gets execfile'd, while InterpreterExec gets imported, so
4651 it gets execfile'd, while InterpreterExec gets imported, so
4646 byte-compilation saves time.
4652 byte-compilation saves time.
4647
4653
4648 2004-06-25 Fernando Perez <fperez@colorado.edu>
4654 2004-06-25 Fernando Perez <fperez@colorado.edu>
4649
4655
4650 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4656 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4651 -NUM', which was recently broken.
4657 -NUM', which was recently broken.
4652
4658
4653 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4659 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4654 in multi-line input (but not !!, which doesn't make sense there).
4660 in multi-line input (but not !!, which doesn't make sense there).
4655
4661
4656 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4662 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4657 It's just too useful, and people can turn it off in the less
4663 It's just too useful, and people can turn it off in the less
4658 common cases where it's a problem.
4664 common cases where it's a problem.
4659
4665
4660 2004-06-24 Fernando Perez <fperez@colorado.edu>
4666 2004-06-24 Fernando Perez <fperez@colorado.edu>
4661
4667
4662 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4668 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4663 special syntaxes (like alias calling) is now allied in multi-line
4669 special syntaxes (like alias calling) is now allied in multi-line
4664 input. This is still _very_ experimental, but it's necessary for
4670 input. This is still _very_ experimental, but it's necessary for
4665 efficient shell usage combining python looping syntax with system
4671 efficient shell usage combining python looping syntax with system
4666 calls. For now it's restricted to aliases, I don't think it
4672 calls. For now it's restricted to aliases, I don't think it
4667 really even makes sense to have this for magics.
4673 really even makes sense to have this for magics.
4668
4674
4669 2004-06-23 Fernando Perez <fperez@colorado.edu>
4675 2004-06-23 Fernando Perez <fperez@colorado.edu>
4670
4676
4671 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4677 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4672 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4678 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4673
4679
4674 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4680 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4675 extensions under Windows (after code sent by Gary Bishop). The
4681 extensions under Windows (after code sent by Gary Bishop). The
4676 extensions considered 'executable' are stored in IPython's rc
4682 extensions considered 'executable' are stored in IPython's rc
4677 structure as win_exec_ext.
4683 structure as win_exec_ext.
4678
4684
4679 * IPython/genutils.py (shell): new function, like system() but
4685 * IPython/genutils.py (shell): new function, like system() but
4680 without return value. Very useful for interactive shell work.
4686 without return value. Very useful for interactive shell work.
4681
4687
4682 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4688 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4683 delete aliases.
4689 delete aliases.
4684
4690
4685 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4691 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4686 sure that the alias table doesn't contain python keywords.
4692 sure that the alias table doesn't contain python keywords.
4687
4693
4688 2004-06-21 Fernando Perez <fperez@colorado.edu>
4694 2004-06-21 Fernando Perez <fperez@colorado.edu>
4689
4695
4690 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4696 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4691 non-existent items are found in $PATH. Reported by Thorsten.
4697 non-existent items are found in $PATH. Reported by Thorsten.
4692
4698
4693 2004-06-20 Fernando Perez <fperez@colorado.edu>
4699 2004-06-20 Fernando Perez <fperez@colorado.edu>
4694
4700
4695 * IPython/iplib.py (complete): modified the completer so that the
4701 * IPython/iplib.py (complete): modified the completer so that the
4696 order of priorities can be easily changed at runtime.
4702 order of priorities can be easily changed at runtime.
4697
4703
4698 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4704 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4699 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4705 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4700
4706
4701 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4707 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4702 expand Python variables prepended with $ in all system calls. The
4708 expand Python variables prepended with $ in all system calls. The
4703 same was done to InteractiveShell.handle_shell_escape. Now all
4709 same was done to InteractiveShell.handle_shell_escape. Now all
4704 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4710 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4705 expansion of python variables and expressions according to the
4711 expansion of python variables and expressions according to the
4706 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4712 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4707
4713
4708 Though PEP-215 has been rejected, a similar (but simpler) one
4714 Though PEP-215 has been rejected, a similar (but simpler) one
4709 seems like it will go into Python 2.4, PEP-292 -
4715 seems like it will go into Python 2.4, PEP-292 -
4710 http://www.python.org/peps/pep-0292.html.
4716 http://www.python.org/peps/pep-0292.html.
4711
4717
4712 I'll keep the full syntax of PEP-215, since IPython has since the
4718 I'll keep the full syntax of PEP-215, since IPython has since the
4713 start used Ka-Ping Yee's reference implementation discussed there
4719 start used Ka-Ping Yee's reference implementation discussed there
4714 (Itpl), and I actually like the powerful semantics it offers.
4720 (Itpl), and I actually like the powerful semantics it offers.
4715
4721
4716 In order to access normal shell variables, the $ has to be escaped
4722 In order to access normal shell variables, the $ has to be escaped
4717 via an extra $. For example:
4723 via an extra $. For example:
4718
4724
4719 In [7]: PATH='a python variable'
4725 In [7]: PATH='a python variable'
4720
4726
4721 In [8]: !echo $PATH
4727 In [8]: !echo $PATH
4722 a python variable
4728 a python variable
4723
4729
4724 In [9]: !echo $$PATH
4730 In [9]: !echo $$PATH
4725 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4731 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4726
4732
4727 (Magic.parse_options): escape $ so the shell doesn't evaluate
4733 (Magic.parse_options): escape $ so the shell doesn't evaluate
4728 things prematurely.
4734 things prematurely.
4729
4735
4730 * IPython/iplib.py (InteractiveShell.call_alias): added the
4736 * IPython/iplib.py (InteractiveShell.call_alias): added the
4731 ability for aliases to expand python variables via $.
4737 ability for aliases to expand python variables via $.
4732
4738
4733 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4739 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4734 system, now there's a @rehash/@rehashx pair of magics. These work
4740 system, now there's a @rehash/@rehashx pair of magics. These work
4735 like the csh rehash command, and can be invoked at any time. They
4741 like the csh rehash command, and can be invoked at any time. They
4736 build a table of aliases to everything in the user's $PATH
4742 build a table of aliases to everything in the user's $PATH
4737 (@rehash uses everything, @rehashx is slower but only adds
4743 (@rehash uses everything, @rehashx is slower but only adds
4738 executable files). With this, the pysh.py-based shell profile can
4744 executable files). With this, the pysh.py-based shell profile can
4739 now simply call rehash upon startup, and full access to all
4745 now simply call rehash upon startup, and full access to all
4740 programs in the user's path is obtained.
4746 programs in the user's path is obtained.
4741
4747
4742 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4748 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4743 functionality is now fully in place. I removed the old dynamic
4749 functionality is now fully in place. I removed the old dynamic
4744 code generation based approach, in favor of a much lighter one
4750 code generation based approach, in favor of a much lighter one
4745 based on a simple dict. The advantage is that this allows me to
4751 based on a simple dict. The advantage is that this allows me to
4746 now have thousands of aliases with negligible cost (unthinkable
4752 now have thousands of aliases with negligible cost (unthinkable
4747 with the old system).
4753 with the old system).
4748
4754
4749 2004-06-19 Fernando Perez <fperez@colorado.edu>
4755 2004-06-19 Fernando Perez <fperez@colorado.edu>
4750
4756
4751 * IPython/iplib.py (__init__): extended MagicCompleter class to
4757 * IPython/iplib.py (__init__): extended MagicCompleter class to
4752 also complete (last in priority) on user aliases.
4758 also complete (last in priority) on user aliases.
4753
4759
4754 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4760 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4755 call to eval.
4761 call to eval.
4756 (ItplNS.__init__): Added a new class which functions like Itpl,
4762 (ItplNS.__init__): Added a new class which functions like Itpl,
4757 but allows configuring the namespace for the evaluation to occur
4763 but allows configuring the namespace for the evaluation to occur
4758 in.
4764 in.
4759
4765
4760 2004-06-18 Fernando Perez <fperez@colorado.edu>
4766 2004-06-18 Fernando Perez <fperez@colorado.edu>
4761
4767
4762 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4768 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4763 better message when 'exit' or 'quit' are typed (a common newbie
4769 better message when 'exit' or 'quit' are typed (a common newbie
4764 confusion).
4770 confusion).
4765
4771
4766 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4772 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4767 check for Windows users.
4773 check for Windows users.
4768
4774
4769 * IPython/iplib.py (InteractiveShell.user_setup): removed
4775 * IPython/iplib.py (InteractiveShell.user_setup): removed
4770 disabling of colors for Windows. I'll test at runtime and issue a
4776 disabling of colors for Windows. I'll test at runtime and issue a
4771 warning if Gary's readline isn't found, as to nudge users to
4777 warning if Gary's readline isn't found, as to nudge users to
4772 download it.
4778 download it.
4773
4779
4774 2004-06-16 Fernando Perez <fperez@colorado.edu>
4780 2004-06-16 Fernando Perez <fperez@colorado.edu>
4775
4781
4776 * IPython/genutils.py (Stream.__init__): changed to print errors
4782 * IPython/genutils.py (Stream.__init__): changed to print errors
4777 to sys.stderr. I had a circular dependency here. Now it's
4783 to sys.stderr. I had a circular dependency here. Now it's
4778 possible to run ipython as IDLE's shell (consider this pre-alpha,
4784 possible to run ipython as IDLE's shell (consider this pre-alpha,
4779 since true stdout things end up in the starting terminal instead
4785 since true stdout things end up in the starting terminal instead
4780 of IDLE's out).
4786 of IDLE's out).
4781
4787
4782 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4788 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4783 users who haven't # updated their prompt_in2 definitions. Remove
4789 users who haven't # updated their prompt_in2 definitions. Remove
4784 eventually.
4790 eventually.
4785 (multiple_replace): added credit to original ASPN recipe.
4791 (multiple_replace): added credit to original ASPN recipe.
4786
4792
4787 2004-06-15 Fernando Perez <fperez@colorado.edu>
4793 2004-06-15 Fernando Perez <fperez@colorado.edu>
4788
4794
4789 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4795 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4790 list of auto-defined aliases.
4796 list of auto-defined aliases.
4791
4797
4792 2004-06-13 Fernando Perez <fperez@colorado.edu>
4798 2004-06-13 Fernando Perez <fperez@colorado.edu>
4793
4799
4794 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4800 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4795 install was really requested (so setup.py can be used for other
4801 install was really requested (so setup.py can be used for other
4796 things under Windows).
4802 things under Windows).
4797
4803
4798 2004-06-10 Fernando Perez <fperez@colorado.edu>
4804 2004-06-10 Fernando Perez <fperez@colorado.edu>
4799
4805
4800 * IPython/Logger.py (Logger.create_log): Manually remove any old
4806 * IPython/Logger.py (Logger.create_log): Manually remove any old
4801 backup, since os.remove may fail under Windows. Fixes bug
4807 backup, since os.remove may fail under Windows. Fixes bug
4802 reported by Thorsten.
4808 reported by Thorsten.
4803
4809
4804 2004-06-09 Fernando Perez <fperez@colorado.edu>
4810 2004-06-09 Fernando Perez <fperez@colorado.edu>
4805
4811
4806 * examples/example-embed.py: fixed all references to %n (replaced
4812 * examples/example-embed.py: fixed all references to %n (replaced
4807 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4813 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4808 for all examples and the manual as well.
4814 for all examples and the manual as well.
4809
4815
4810 2004-06-08 Fernando Perez <fperez@colorado.edu>
4816 2004-06-08 Fernando Perez <fperez@colorado.edu>
4811
4817
4812 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4818 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4813 alignment and color management. All 3 prompt subsystems now
4819 alignment and color management. All 3 prompt subsystems now
4814 inherit from BasePrompt.
4820 inherit from BasePrompt.
4815
4821
4816 * tools/release: updates for windows installer build and tag rpms
4822 * tools/release: updates for windows installer build and tag rpms
4817 with python version (since paths are fixed).
4823 with python version (since paths are fixed).
4818
4824
4819 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4825 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4820 which will become eventually obsolete. Also fixed the default
4826 which will become eventually obsolete. Also fixed the default
4821 prompt_in2 to use \D, so at least new users start with the correct
4827 prompt_in2 to use \D, so at least new users start with the correct
4822 defaults.
4828 defaults.
4823 WARNING: Users with existing ipythonrc files will need to apply
4829 WARNING: Users with existing ipythonrc files will need to apply
4824 this fix manually!
4830 this fix manually!
4825
4831
4826 * setup.py: make windows installer (.exe). This is finally the
4832 * setup.py: make windows installer (.exe). This is finally the
4827 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4833 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4828 which I hadn't included because it required Python 2.3 (or recent
4834 which I hadn't included because it required Python 2.3 (or recent
4829 distutils).
4835 distutils).
4830
4836
4831 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4837 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4832 usage of new '\D' escape.
4838 usage of new '\D' escape.
4833
4839
4834 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4840 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4835 lacks os.getuid())
4841 lacks os.getuid())
4836 (CachedOutput.set_colors): Added the ability to turn coloring
4842 (CachedOutput.set_colors): Added the ability to turn coloring
4837 on/off with @colors even for manually defined prompt colors. It
4843 on/off with @colors even for manually defined prompt colors. It
4838 uses a nasty global, but it works safely and via the generic color
4844 uses a nasty global, but it works safely and via the generic color
4839 handling mechanism.
4845 handling mechanism.
4840 (Prompt2.__init__): Introduced new escape '\D' for continuation
4846 (Prompt2.__init__): Introduced new escape '\D' for continuation
4841 prompts. It represents the counter ('\#') as dots.
4847 prompts. It represents the counter ('\#') as dots.
4842 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4848 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4843 need to update their ipythonrc files and replace '%n' with '\D' in
4849 need to update their ipythonrc files and replace '%n' with '\D' in
4844 their prompt_in2 settings everywhere. Sorry, but there's
4850 their prompt_in2 settings everywhere. Sorry, but there's
4845 otherwise no clean way to get all prompts to properly align. The
4851 otherwise no clean way to get all prompts to properly align. The
4846 ipythonrc shipped with IPython has been updated.
4852 ipythonrc shipped with IPython has been updated.
4847
4853
4848 2004-06-07 Fernando Perez <fperez@colorado.edu>
4854 2004-06-07 Fernando Perez <fperez@colorado.edu>
4849
4855
4850 * setup.py (isfile): Pass local_icons option to latex2html, so the
4856 * setup.py (isfile): Pass local_icons option to latex2html, so the
4851 resulting HTML file is self-contained. Thanks to
4857 resulting HTML file is self-contained. Thanks to
4852 dryice-AT-liu.com.cn for the tip.
4858 dryice-AT-liu.com.cn for the tip.
4853
4859
4854 * pysh.py: I created a new profile 'shell', which implements a
4860 * pysh.py: I created a new profile 'shell', which implements a
4855 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4861 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4856 system shell, nor will it become one anytime soon. It's mainly
4862 system shell, nor will it become one anytime soon. It's mainly
4857 meant to illustrate the use of the new flexible bash-like prompts.
4863 meant to illustrate the use of the new flexible bash-like prompts.
4858 I guess it could be used by hardy souls for true shell management,
4864 I guess it could be used by hardy souls for true shell management,
4859 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4865 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4860 profile. This uses the InterpreterExec extension provided by
4866 profile. This uses the InterpreterExec extension provided by
4861 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4867 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4862
4868
4863 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4869 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4864 auto-align itself with the length of the previous input prompt
4870 auto-align itself with the length of the previous input prompt
4865 (taking into account the invisible color escapes).
4871 (taking into account the invisible color escapes).
4866 (CachedOutput.__init__): Large restructuring of this class. Now
4872 (CachedOutput.__init__): Large restructuring of this class. Now
4867 all three prompts (primary1, primary2, output) are proper objects,
4873 all three prompts (primary1, primary2, output) are proper objects,
4868 managed by the 'parent' CachedOutput class. The code is still a
4874 managed by the 'parent' CachedOutput class. The code is still a
4869 bit hackish (all prompts share state via a pointer to the cache),
4875 bit hackish (all prompts share state via a pointer to the cache),
4870 but it's overall far cleaner than before.
4876 but it's overall far cleaner than before.
4871
4877
4872 * IPython/genutils.py (getoutputerror): modified to add verbose,
4878 * IPython/genutils.py (getoutputerror): modified to add verbose,
4873 debug and header options. This makes the interface of all getout*
4879 debug and header options. This makes the interface of all getout*
4874 functions uniform.
4880 functions uniform.
4875 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4881 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4876
4882
4877 * IPython/Magic.py (Magic.default_option): added a function to
4883 * IPython/Magic.py (Magic.default_option): added a function to
4878 allow registering default options for any magic command. This
4884 allow registering default options for any magic command. This
4879 makes it easy to have profiles which customize the magics globally
4885 makes it easy to have profiles which customize the magics globally
4880 for a certain use. The values set through this function are
4886 for a certain use. The values set through this function are
4881 picked up by the parse_options() method, which all magics should
4887 picked up by the parse_options() method, which all magics should
4882 use to parse their options.
4888 use to parse their options.
4883
4889
4884 * IPython/genutils.py (warn): modified the warnings framework to
4890 * IPython/genutils.py (warn): modified the warnings framework to
4885 use the Term I/O class. I'm trying to slowly unify all of
4891 use the Term I/O class. I'm trying to slowly unify all of
4886 IPython's I/O operations to pass through Term.
4892 IPython's I/O operations to pass through Term.
4887
4893
4888 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4894 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4889 the secondary prompt to correctly match the length of the primary
4895 the secondary prompt to correctly match the length of the primary
4890 one for any prompt. Now multi-line code will properly line up
4896 one for any prompt. Now multi-line code will properly line up
4891 even for path dependent prompts, such as the new ones available
4897 even for path dependent prompts, such as the new ones available
4892 via the prompt_specials.
4898 via the prompt_specials.
4893
4899
4894 2004-06-06 Fernando Perez <fperez@colorado.edu>
4900 2004-06-06 Fernando Perez <fperez@colorado.edu>
4895
4901
4896 * IPython/Prompts.py (prompt_specials): Added the ability to have
4902 * IPython/Prompts.py (prompt_specials): Added the ability to have
4897 bash-like special sequences in the prompts, which get
4903 bash-like special sequences in the prompts, which get
4898 automatically expanded. Things like hostname, current working
4904 automatically expanded. Things like hostname, current working
4899 directory and username are implemented already, but it's easy to
4905 directory and username are implemented already, but it's easy to
4900 add more in the future. Thanks to a patch by W.J. van der Laan
4906 add more in the future. Thanks to a patch by W.J. van der Laan
4901 <gnufnork-AT-hetdigitalegat.nl>
4907 <gnufnork-AT-hetdigitalegat.nl>
4902 (prompt_specials): Added color support for prompt strings, so
4908 (prompt_specials): Added color support for prompt strings, so
4903 users can define arbitrary color setups for their prompts.
4909 users can define arbitrary color setups for their prompts.
4904
4910
4905 2004-06-05 Fernando Perez <fperez@colorado.edu>
4911 2004-06-05 Fernando Perez <fperez@colorado.edu>
4906
4912
4907 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4913 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4908 code to load Gary Bishop's readline and configure it
4914 code to load Gary Bishop's readline and configure it
4909 automatically. Thanks to Gary for help on this.
4915 automatically. Thanks to Gary for help on this.
4910
4916
4911 2004-06-01 Fernando Perez <fperez@colorado.edu>
4917 2004-06-01 Fernando Perez <fperez@colorado.edu>
4912
4918
4913 * IPython/Logger.py (Logger.create_log): fix bug for logging
4919 * IPython/Logger.py (Logger.create_log): fix bug for logging
4914 with no filename (previous fix was incomplete).
4920 with no filename (previous fix was incomplete).
4915
4921
4916 2004-05-25 Fernando Perez <fperez@colorado.edu>
4922 2004-05-25 Fernando Perez <fperez@colorado.edu>
4917
4923
4918 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4924 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4919 parens would get passed to the shell.
4925 parens would get passed to the shell.
4920
4926
4921 2004-05-20 Fernando Perez <fperez@colorado.edu>
4927 2004-05-20 Fernando Perez <fperez@colorado.edu>
4922
4928
4923 * IPython/Magic.py (Magic.magic_prun): changed default profile
4929 * IPython/Magic.py (Magic.magic_prun): changed default profile
4924 sort order to 'time' (the more common profiling need).
4930 sort order to 'time' (the more common profiling need).
4925
4931
4926 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4932 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4927 so that source code shown is guaranteed in sync with the file on
4933 so that source code shown is guaranteed in sync with the file on
4928 disk (also changed in psource). Similar fix to the one for
4934 disk (also changed in psource). Similar fix to the one for
4929 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4935 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4930 <yann.ledu-AT-noos.fr>.
4936 <yann.ledu-AT-noos.fr>.
4931
4937
4932 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4938 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4933 with a single option would not be correctly parsed. Closes
4939 with a single option would not be correctly parsed. Closes
4934 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4940 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4935 introduced in 0.6.0 (on 2004-05-06).
4941 introduced in 0.6.0 (on 2004-05-06).
4936
4942
4937 2004-05-13 *** Released version 0.6.0
4943 2004-05-13 *** Released version 0.6.0
4938
4944
4939 2004-05-13 Fernando Perez <fperez@colorado.edu>
4945 2004-05-13 Fernando Perez <fperez@colorado.edu>
4940
4946
4941 * debian/: Added debian/ directory to CVS, so that debian support
4947 * debian/: Added debian/ directory to CVS, so that debian support
4942 is publicly accessible. The debian package is maintained by Jack
4948 is publicly accessible. The debian package is maintained by Jack
4943 Moffit <jack-AT-xiph.org>.
4949 Moffit <jack-AT-xiph.org>.
4944
4950
4945 * Documentation: included the notes about an ipython-based system
4951 * Documentation: included the notes about an ipython-based system
4946 shell (the hypothetical 'pysh') into the new_design.pdf document,
4952 shell (the hypothetical 'pysh') into the new_design.pdf document,
4947 so that these ideas get distributed to users along with the
4953 so that these ideas get distributed to users along with the
4948 official documentation.
4954 official documentation.
4949
4955
4950 2004-05-10 Fernando Perez <fperez@colorado.edu>
4956 2004-05-10 Fernando Perez <fperez@colorado.edu>
4951
4957
4952 * IPython/Logger.py (Logger.create_log): fix recently introduced
4958 * IPython/Logger.py (Logger.create_log): fix recently introduced
4953 bug (misindented line) where logstart would fail when not given an
4959 bug (misindented line) where logstart would fail when not given an
4954 explicit filename.
4960 explicit filename.
4955
4961
4956 2004-05-09 Fernando Perez <fperez@colorado.edu>
4962 2004-05-09 Fernando Perez <fperez@colorado.edu>
4957
4963
4958 * IPython/Magic.py (Magic.parse_options): skip system call when
4964 * IPython/Magic.py (Magic.parse_options): skip system call when
4959 there are no options to look for. Faster, cleaner for the common
4965 there are no options to look for. Faster, cleaner for the common
4960 case.
4966 case.
4961
4967
4962 * Documentation: many updates to the manual: describing Windows
4968 * Documentation: many updates to the manual: describing Windows
4963 support better, Gnuplot updates, credits, misc small stuff. Also
4969 support better, Gnuplot updates, credits, misc small stuff. Also
4964 updated the new_design doc a bit.
4970 updated the new_design doc a bit.
4965
4971
4966 2004-05-06 *** Released version 0.6.0.rc1
4972 2004-05-06 *** Released version 0.6.0.rc1
4967
4973
4968 2004-05-06 Fernando Perez <fperez@colorado.edu>
4974 2004-05-06 Fernando Perez <fperez@colorado.edu>
4969
4975
4970 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4976 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4971 operations to use the vastly more efficient list/''.join() method.
4977 operations to use the vastly more efficient list/''.join() method.
4972 (FormattedTB.text): Fix
4978 (FormattedTB.text): Fix
4973 http://www.scipy.net/roundup/ipython/issue12 - exception source
4979 http://www.scipy.net/roundup/ipython/issue12 - exception source
4974 extract not updated after reload. Thanks to Mike Salib
4980 extract not updated after reload. Thanks to Mike Salib
4975 <msalib-AT-mit.edu> for pinning the source of the problem.
4981 <msalib-AT-mit.edu> for pinning the source of the problem.
4976 Fortunately, the solution works inside ipython and doesn't require
4982 Fortunately, the solution works inside ipython and doesn't require
4977 any changes to python proper.
4983 any changes to python proper.
4978
4984
4979 * IPython/Magic.py (Magic.parse_options): Improved to process the
4985 * IPython/Magic.py (Magic.parse_options): Improved to process the
4980 argument list as a true shell would (by actually using the
4986 argument list as a true shell would (by actually using the
4981 underlying system shell). This way, all @magics automatically get
4987 underlying system shell). This way, all @magics automatically get
4982 shell expansion for variables. Thanks to a comment by Alex
4988 shell expansion for variables. Thanks to a comment by Alex
4983 Schmolck.
4989 Schmolck.
4984
4990
4985 2004-04-04 Fernando Perez <fperez@colorado.edu>
4991 2004-04-04 Fernando Perez <fperez@colorado.edu>
4986
4992
4987 * IPython/iplib.py (InteractiveShell.interact): Added a special
4993 * IPython/iplib.py (InteractiveShell.interact): Added a special
4988 trap for a debugger quit exception, which is basically impossible
4994 trap for a debugger quit exception, which is basically impossible
4989 to handle by normal mechanisms, given what pdb does to the stack.
4995 to handle by normal mechanisms, given what pdb does to the stack.
4990 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4996 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4991
4997
4992 2004-04-03 Fernando Perez <fperez@colorado.edu>
4998 2004-04-03 Fernando Perez <fperez@colorado.edu>
4993
4999
4994 * IPython/genutils.py (Term): Standardized the names of the Term
5000 * IPython/genutils.py (Term): Standardized the names of the Term
4995 class streams to cin/cout/cerr, following C++ naming conventions
5001 class streams to cin/cout/cerr, following C++ naming conventions
4996 (I can't use in/out/err because 'in' is not a valid attribute
5002 (I can't use in/out/err because 'in' is not a valid attribute
4997 name).
5003 name).
4998
5004
4999 * IPython/iplib.py (InteractiveShell.interact): don't increment
5005 * IPython/iplib.py (InteractiveShell.interact): don't increment
5000 the prompt if there's no user input. By Daniel 'Dang' Griffith
5006 the prompt if there's no user input. By Daniel 'Dang' Griffith
5001 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
5007 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
5002 Francois Pinard.
5008 Francois Pinard.
5003
5009
5004 2004-04-02 Fernando Perez <fperez@colorado.edu>
5010 2004-04-02 Fernando Perez <fperez@colorado.edu>
5005
5011
5006 * IPython/genutils.py (Stream.__init__): Modified to survive at
5012 * IPython/genutils.py (Stream.__init__): Modified to survive at
5007 least importing in contexts where stdin/out/err aren't true file
5013 least importing in contexts where stdin/out/err aren't true file
5008 objects, such as PyCrust (they lack fileno() and mode). However,
5014 objects, such as PyCrust (they lack fileno() and mode). However,
5009 the recovery facilities which rely on these things existing will
5015 the recovery facilities which rely on these things existing will
5010 not work.
5016 not work.
5011
5017
5012 2004-04-01 Fernando Perez <fperez@colorado.edu>
5018 2004-04-01 Fernando Perez <fperez@colorado.edu>
5013
5019
5014 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
5020 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
5015 use the new getoutputerror() function, so it properly
5021 use the new getoutputerror() function, so it properly
5016 distinguishes stdout/err.
5022 distinguishes stdout/err.
5017
5023
5018 * IPython/genutils.py (getoutputerror): added a function to
5024 * IPython/genutils.py (getoutputerror): added a function to
5019 capture separately the standard output and error of a command.
5025 capture separately the standard output and error of a command.
5020 After a comment from dang on the mailing lists. This code is
5026 After a comment from dang on the mailing lists. This code is
5021 basically a modified version of commands.getstatusoutput(), from
5027 basically a modified version of commands.getstatusoutput(), from
5022 the standard library.
5028 the standard library.
5023
5029
5024 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
5030 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
5025 '!!' as a special syntax (shorthand) to access @sx.
5031 '!!' as a special syntax (shorthand) to access @sx.
5026
5032
5027 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
5033 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
5028 command and return its output as a list split on '\n'.
5034 command and return its output as a list split on '\n'.
5029
5035
5030 2004-03-31 Fernando Perez <fperez@colorado.edu>
5036 2004-03-31 Fernando Perez <fperez@colorado.edu>
5031
5037
5032 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
5038 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
5033 method to dictionaries used as FakeModule instances if they lack
5039 method to dictionaries used as FakeModule instances if they lack
5034 it. At least pydoc in python2.3 breaks for runtime-defined
5040 it. At least pydoc in python2.3 breaks for runtime-defined
5035 functions without this hack. At some point I need to _really_
5041 functions without this hack. At some point I need to _really_
5036 understand what FakeModule is doing, because it's a gross hack.
5042 understand what FakeModule is doing, because it's a gross hack.
5037 But it solves Arnd's problem for now...
5043 But it solves Arnd's problem for now...
5038
5044
5039 2004-02-27 Fernando Perez <fperez@colorado.edu>
5045 2004-02-27 Fernando Perez <fperez@colorado.edu>
5040
5046
5041 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
5047 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
5042 mode would behave erratically. Also increased the number of
5048 mode would behave erratically. Also increased the number of
5043 possible logs in rotate mod to 999. Thanks to Rod Holland
5049 possible logs in rotate mod to 999. Thanks to Rod Holland
5044 <rhh@StructureLABS.com> for the report and fixes.
5050 <rhh@StructureLABS.com> for the report and fixes.
5045
5051
5046 2004-02-26 Fernando Perez <fperez@colorado.edu>
5052 2004-02-26 Fernando Perez <fperez@colorado.edu>
5047
5053
5048 * IPython/genutils.py (page): Check that the curses module really
5054 * IPython/genutils.py (page): Check that the curses module really
5049 has the initscr attribute before trying to use it. For some
5055 has the initscr attribute before trying to use it. For some
5050 reason, the Solaris curses module is missing this. I think this
5056 reason, the Solaris curses module is missing this. I think this
5051 should be considered a Solaris python bug, but I'm not sure.
5057 should be considered a Solaris python bug, but I'm not sure.
5052
5058
5053 2004-01-17 Fernando Perez <fperez@colorado.edu>
5059 2004-01-17 Fernando Perez <fperez@colorado.edu>
5054
5060
5055 * IPython/genutils.py (Stream.__init__): Changes to try to make
5061 * IPython/genutils.py (Stream.__init__): Changes to try to make
5056 ipython robust against stdin/out/err being closed by the user.
5062 ipython robust against stdin/out/err being closed by the user.
5057 This is 'user error' (and blocks a normal python session, at least
5063 This is 'user error' (and blocks a normal python session, at least
5058 the stdout case). However, Ipython should be able to survive such
5064 the stdout case). However, Ipython should be able to survive such
5059 instances of abuse as gracefully as possible. To simplify the
5065 instances of abuse as gracefully as possible. To simplify the
5060 coding and maintain compatibility with Gary Bishop's Term
5066 coding and maintain compatibility with Gary Bishop's Term
5061 contributions, I've made use of classmethods for this. I think
5067 contributions, I've made use of classmethods for this. I think
5062 this introduces a dependency on python 2.2.
5068 this introduces a dependency on python 2.2.
5063
5069
5064 2004-01-13 Fernando Perez <fperez@colorado.edu>
5070 2004-01-13 Fernando Perez <fperez@colorado.edu>
5065
5071
5066 * IPython/numutils.py (exp_safe): simplified the code a bit and
5072 * IPython/numutils.py (exp_safe): simplified the code a bit and
5067 removed the need for importing the kinds module altogether.
5073 removed the need for importing the kinds module altogether.
5068
5074
5069 2004-01-06 Fernando Perez <fperez@colorado.edu>
5075 2004-01-06 Fernando Perez <fperez@colorado.edu>
5070
5076
5071 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
5077 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
5072 a magic function instead, after some community feedback. No
5078 a magic function instead, after some community feedback. No
5073 special syntax will exist for it, but its name is deliberately
5079 special syntax will exist for it, but its name is deliberately
5074 very short.
5080 very short.
5075
5081
5076 2003-12-20 Fernando Perez <fperez@colorado.edu>
5082 2003-12-20 Fernando Perez <fperez@colorado.edu>
5077
5083
5078 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
5084 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
5079 new functionality, to automagically assign the result of a shell
5085 new functionality, to automagically assign the result of a shell
5080 command to a variable. I'll solicit some community feedback on
5086 command to a variable. I'll solicit some community feedback on
5081 this before making it permanent.
5087 this before making it permanent.
5082
5088
5083 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
5089 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
5084 requested about callables for which inspect couldn't obtain a
5090 requested about callables for which inspect couldn't obtain a
5085 proper argspec. Thanks to a crash report sent by Etienne
5091 proper argspec. Thanks to a crash report sent by Etienne
5086 Posthumus <etienne-AT-apple01.cs.vu.nl>.
5092 Posthumus <etienne-AT-apple01.cs.vu.nl>.
5087
5093
5088 2003-12-09 Fernando Perez <fperez@colorado.edu>
5094 2003-12-09 Fernando Perez <fperez@colorado.edu>
5089
5095
5090 * IPython/genutils.py (page): patch for the pager to work across
5096 * IPython/genutils.py (page): patch for the pager to work across
5091 various versions of Windows. By Gary Bishop.
5097 various versions of Windows. By Gary Bishop.
5092
5098
5093 2003-12-04 Fernando Perez <fperez@colorado.edu>
5099 2003-12-04 Fernando Perez <fperez@colorado.edu>
5094
5100
5095 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
5101 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
5096 Gnuplot.py version 1.7, whose internal names changed quite a bit.
5102 Gnuplot.py version 1.7, whose internal names changed quite a bit.
5097 While I tested this and it looks ok, there may still be corner
5103 While I tested this and it looks ok, there may still be corner
5098 cases I've missed.
5104 cases I've missed.
5099
5105
5100 2003-12-01 Fernando Perez <fperez@colorado.edu>
5106 2003-12-01 Fernando Perez <fperez@colorado.edu>
5101
5107
5102 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
5108 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
5103 where a line like 'p,q=1,2' would fail because the automagic
5109 where a line like 'p,q=1,2' would fail because the automagic
5104 system would be triggered for @p.
5110 system would be triggered for @p.
5105
5111
5106 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
5112 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
5107 cleanups, code unmodified.
5113 cleanups, code unmodified.
5108
5114
5109 * IPython/genutils.py (Term): added a class for IPython to handle
5115 * IPython/genutils.py (Term): added a class for IPython to handle
5110 output. In most cases it will just be a proxy for stdout/err, but
5116 output. In most cases it will just be a proxy for stdout/err, but
5111 having this allows modifications to be made for some platforms,
5117 having this allows modifications to be made for some platforms,
5112 such as handling color escapes under Windows. All of this code
5118 such as handling color escapes under Windows. All of this code
5113 was contributed by Gary Bishop, with minor modifications by me.
5119 was contributed by Gary Bishop, with minor modifications by me.
5114 The actual changes affect many files.
5120 The actual changes affect many files.
5115
5121
5116 2003-11-30 Fernando Perez <fperez@colorado.edu>
5122 2003-11-30 Fernando Perez <fperez@colorado.edu>
5117
5123
5118 * IPython/iplib.py (file_matches): new completion code, courtesy
5124 * IPython/iplib.py (file_matches): new completion code, courtesy
5119 of Jeff Collins. This enables filename completion again under
5125 of Jeff Collins. This enables filename completion again under
5120 python 2.3, which disabled it at the C level.
5126 python 2.3, which disabled it at the C level.
5121
5127
5122 2003-11-11 Fernando Perez <fperez@colorado.edu>
5128 2003-11-11 Fernando Perez <fperez@colorado.edu>
5123
5129
5124 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
5130 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
5125 for Numeric.array(map(...)), but often convenient.
5131 for Numeric.array(map(...)), but often convenient.
5126
5132
5127 2003-11-05 Fernando Perez <fperez@colorado.edu>
5133 2003-11-05 Fernando Perez <fperez@colorado.edu>
5128
5134
5129 * IPython/numutils.py (frange): Changed a call from int() to
5135 * IPython/numutils.py (frange): Changed a call from int() to
5130 int(round()) to prevent a problem reported with arange() in the
5136 int(round()) to prevent a problem reported with arange() in the
5131 numpy list.
5137 numpy list.
5132
5138
5133 2003-10-06 Fernando Perez <fperez@colorado.edu>
5139 2003-10-06 Fernando Perez <fperez@colorado.edu>
5134
5140
5135 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
5141 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
5136 prevent crashes if sys lacks an argv attribute (it happens with
5142 prevent crashes if sys lacks an argv attribute (it happens with
5137 embedded interpreters which build a bare-bones sys module).
5143 embedded interpreters which build a bare-bones sys module).
5138 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
5144 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
5139
5145
5140 2003-09-24 Fernando Perez <fperez@colorado.edu>
5146 2003-09-24 Fernando Perez <fperez@colorado.edu>
5141
5147
5142 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
5148 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
5143 to protect against poorly written user objects where __getattr__
5149 to protect against poorly written user objects where __getattr__
5144 raises exceptions other than AttributeError. Thanks to a bug
5150 raises exceptions other than AttributeError. Thanks to a bug
5145 report by Oliver Sander <osander-AT-gmx.de>.
5151 report by Oliver Sander <osander-AT-gmx.de>.
5146
5152
5147 * IPython/FakeModule.py (FakeModule.__repr__): this method was
5153 * IPython/FakeModule.py (FakeModule.__repr__): this method was
5148 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
5154 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
5149
5155
5150 2003-09-09 Fernando Perez <fperez@colorado.edu>
5156 2003-09-09 Fernando Perez <fperez@colorado.edu>
5151
5157
5152 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
5158 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
5153 unpacking a list whith a callable as first element would
5159 unpacking a list whith a callable as first element would
5154 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
5160 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
5155 Collins.
5161 Collins.
5156
5162
5157 2003-08-25 *** Released version 0.5.0
5163 2003-08-25 *** Released version 0.5.0
5158
5164
5159 2003-08-22 Fernando Perez <fperez@colorado.edu>
5165 2003-08-22 Fernando Perez <fperez@colorado.edu>
5160
5166
5161 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
5167 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
5162 improperly defined user exceptions. Thanks to feedback from Mark
5168 improperly defined user exceptions. Thanks to feedback from Mark
5163 Russell <mrussell-AT-verio.net>.
5169 Russell <mrussell-AT-verio.net>.
5164
5170
5165 2003-08-20 Fernando Perez <fperez@colorado.edu>
5171 2003-08-20 Fernando Perez <fperez@colorado.edu>
5166
5172
5167 * IPython/OInspect.py (Inspector.pinfo): changed String Form
5173 * IPython/OInspect.py (Inspector.pinfo): changed String Form
5168 printing so that it would print multi-line string forms starting
5174 printing so that it would print multi-line string forms starting
5169 with a new line. This way the formatting is better respected for
5175 with a new line. This way the formatting is better respected for
5170 objects which work hard to make nice string forms.
5176 objects which work hard to make nice string forms.
5171
5177
5172 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
5178 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
5173 autocall would overtake data access for objects with both
5179 autocall would overtake data access for objects with both
5174 __getitem__ and __call__.
5180 __getitem__ and __call__.
5175
5181
5176 2003-08-19 *** Released version 0.5.0-rc1
5182 2003-08-19 *** Released version 0.5.0-rc1
5177
5183
5178 2003-08-19 Fernando Perez <fperez@colorado.edu>
5184 2003-08-19 Fernando Perez <fperez@colorado.edu>
5179
5185
5180 * IPython/deep_reload.py (load_tail): single tiny change here
5186 * IPython/deep_reload.py (load_tail): single tiny change here
5181 seems to fix the long-standing bug of dreload() failing to work
5187 seems to fix the long-standing bug of dreload() failing to work
5182 for dotted names. But this module is pretty tricky, so I may have
5188 for dotted names. But this module is pretty tricky, so I may have
5183 missed some subtlety. Needs more testing!.
5189 missed some subtlety. Needs more testing!.
5184
5190
5185 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
5191 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
5186 exceptions which have badly implemented __str__ methods.
5192 exceptions which have badly implemented __str__ methods.
5187 (VerboseTB.text): harden against inspect.getinnerframes crashing,
5193 (VerboseTB.text): harden against inspect.getinnerframes crashing,
5188 which I've been getting reports about from Python 2.3 users. I
5194 which I've been getting reports about from Python 2.3 users. I
5189 wish I had a simple test case to reproduce the problem, so I could
5195 wish I had a simple test case to reproduce the problem, so I could
5190 either write a cleaner workaround or file a bug report if
5196 either write a cleaner workaround or file a bug report if
5191 necessary.
5197 necessary.
5192
5198
5193 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
5199 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
5194 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
5200 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
5195 a bug report by Tjabo Kloppenburg.
5201 a bug report by Tjabo Kloppenburg.
5196
5202
5197 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
5203 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
5198 crashes. Wrapped the pdb call in a blanket try/except, since pdb
5204 crashes. Wrapped the pdb call in a blanket try/except, since pdb
5199 seems rather unstable. Thanks to a bug report by Tjabo
5205 seems rather unstable. Thanks to a bug report by Tjabo
5200 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
5206 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
5201
5207
5202 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
5208 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
5203 this out soon because of the critical fixes in the inner loop for
5209 this out soon because of the critical fixes in the inner loop for
5204 generators.
5210 generators.
5205
5211
5206 * IPython/Magic.py (Magic.getargspec): removed. This (and
5212 * IPython/Magic.py (Magic.getargspec): removed. This (and
5207 _get_def) have been obsoleted by OInspect for a long time, I
5213 _get_def) have been obsoleted by OInspect for a long time, I
5208 hadn't noticed that they were dead code.
5214 hadn't noticed that they were dead code.
5209 (Magic._ofind): restored _ofind functionality for a few literals
5215 (Magic._ofind): restored _ofind functionality for a few literals
5210 (those in ["''",'""','[]','{}','()']). But it won't work anymore
5216 (those in ["''",'""','[]','{}','()']). But it won't work anymore
5211 for things like "hello".capitalize?, since that would require a
5217 for things like "hello".capitalize?, since that would require a
5212 potentially dangerous eval() again.
5218 potentially dangerous eval() again.
5213
5219
5214 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
5220 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
5215 logic a bit more to clean up the escapes handling and minimize the
5221 logic a bit more to clean up the escapes handling and minimize the
5216 use of _ofind to only necessary cases. The interactive 'feel' of
5222 use of _ofind to only necessary cases. The interactive 'feel' of
5217 IPython should have improved quite a bit with the changes in
5223 IPython should have improved quite a bit with the changes in
5218 _prefilter and _ofind (besides being far safer than before).
5224 _prefilter and _ofind (besides being far safer than before).
5219
5225
5220 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
5226 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
5221 obscure, never reported). Edit would fail to find the object to
5227 obscure, never reported). Edit would fail to find the object to
5222 edit under some circumstances.
5228 edit under some circumstances.
5223 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
5229 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
5224 which were causing double-calling of generators. Those eval calls
5230 which were causing double-calling of generators. Those eval calls
5225 were _very_ dangerous, since code with side effects could be
5231 were _very_ dangerous, since code with side effects could be
5226 triggered. As they say, 'eval is evil'... These were the
5232 triggered. As they say, 'eval is evil'... These were the
5227 nastiest evals in IPython. Besides, _ofind is now far simpler,
5233 nastiest evals in IPython. Besides, _ofind is now far simpler,
5228 and it should also be quite a bit faster. Its use of inspect is
5234 and it should also be quite a bit faster. Its use of inspect is
5229 also safer, so perhaps some of the inspect-related crashes I've
5235 also safer, so perhaps some of the inspect-related crashes I've
5230 seen lately with Python 2.3 might be taken care of. That will
5236 seen lately with Python 2.3 might be taken care of. That will
5231 need more testing.
5237 need more testing.
5232
5238
5233 2003-08-17 Fernando Perez <fperez@colorado.edu>
5239 2003-08-17 Fernando Perez <fperez@colorado.edu>
5234
5240
5235 * IPython/iplib.py (InteractiveShell._prefilter): significant
5241 * IPython/iplib.py (InteractiveShell._prefilter): significant
5236 simplifications to the logic for handling user escapes. Faster
5242 simplifications to the logic for handling user escapes. Faster
5237 and simpler code.
5243 and simpler code.
5238
5244
5239 2003-08-14 Fernando Perez <fperez@colorado.edu>
5245 2003-08-14 Fernando Perez <fperez@colorado.edu>
5240
5246
5241 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
5247 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
5242 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
5248 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
5243 but it should be quite a bit faster. And the recursive version
5249 but it should be quite a bit faster. And the recursive version
5244 generated O(log N) intermediate storage for all rank>1 arrays,
5250 generated O(log N) intermediate storage for all rank>1 arrays,
5245 even if they were contiguous.
5251 even if they were contiguous.
5246 (l1norm): Added this function.
5252 (l1norm): Added this function.
5247 (norm): Added this function for arbitrary norms (including
5253 (norm): Added this function for arbitrary norms (including
5248 l-infinity). l1 and l2 are still special cases for convenience
5254 l-infinity). l1 and l2 are still special cases for convenience
5249 and speed.
5255 and speed.
5250
5256
5251 2003-08-03 Fernando Perez <fperez@colorado.edu>
5257 2003-08-03 Fernando Perez <fperez@colorado.edu>
5252
5258
5253 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
5259 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
5254 exceptions, which now raise PendingDeprecationWarnings in Python
5260 exceptions, which now raise PendingDeprecationWarnings in Python
5255 2.3. There were some in Magic and some in Gnuplot2.
5261 2.3. There were some in Magic and some in Gnuplot2.
5256
5262
5257 2003-06-30 Fernando Perez <fperez@colorado.edu>
5263 2003-06-30 Fernando Perez <fperez@colorado.edu>
5258
5264
5259 * IPython/genutils.py (page): modified to call curses only for
5265 * IPython/genutils.py (page): modified to call curses only for
5260 terminals where TERM=='xterm'. After problems under many other
5266 terminals where TERM=='xterm'. After problems under many other
5261 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
5267 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
5262
5268
5263 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
5269 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
5264 would be triggered when readline was absent. This was just an old
5270 would be triggered when readline was absent. This was just an old
5265 debugging statement I'd forgotten to take out.
5271 debugging statement I'd forgotten to take out.
5266
5272
5267 2003-06-20 Fernando Perez <fperez@colorado.edu>
5273 2003-06-20 Fernando Perez <fperez@colorado.edu>
5268
5274
5269 * IPython/genutils.py (clock): modified to return only user time
5275 * IPython/genutils.py (clock): modified to return only user time
5270 (not counting system time), after a discussion on scipy. While
5276 (not counting system time), after a discussion on scipy. While
5271 system time may be a useful quantity occasionally, it may much
5277 system time may be a useful quantity occasionally, it may much
5272 more easily be skewed by occasional swapping or other similar
5278 more easily be skewed by occasional swapping or other similar
5273 activity.
5279 activity.
5274
5280
5275 2003-06-05 Fernando Perez <fperez@colorado.edu>
5281 2003-06-05 Fernando Perez <fperez@colorado.edu>
5276
5282
5277 * IPython/numutils.py (identity): new function, for building
5283 * IPython/numutils.py (identity): new function, for building
5278 arbitrary rank Kronecker deltas (mostly backwards compatible with
5284 arbitrary rank Kronecker deltas (mostly backwards compatible with
5279 Numeric.identity)
5285 Numeric.identity)
5280
5286
5281 2003-06-03 Fernando Perez <fperez@colorado.edu>
5287 2003-06-03 Fernando Perez <fperez@colorado.edu>
5282
5288
5283 * IPython/iplib.py (InteractiveShell.handle_magic): protect
5289 * IPython/iplib.py (InteractiveShell.handle_magic): protect
5284 arguments passed to magics with spaces, to allow trailing '\' to
5290 arguments passed to magics with spaces, to allow trailing '\' to
5285 work normally (mainly for Windows users).
5291 work normally (mainly for Windows users).
5286
5292
5287 2003-05-29 Fernando Perez <fperez@colorado.edu>
5293 2003-05-29 Fernando Perez <fperez@colorado.edu>
5288
5294
5289 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5295 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5290 instead of pydoc.help. This fixes a bizarre behavior where
5296 instead of pydoc.help. This fixes a bizarre behavior where
5291 printing '%s' % locals() would trigger the help system. Now
5297 printing '%s' % locals() would trigger the help system. Now
5292 ipython behaves like normal python does.
5298 ipython behaves like normal python does.
5293
5299
5294 Note that if one does 'from pydoc import help', the bizarre
5300 Note that if one does 'from pydoc import help', the bizarre
5295 behavior returns, but this will also happen in normal python, so
5301 behavior returns, but this will also happen in normal python, so
5296 it's not an ipython bug anymore (it has to do with how pydoc.help
5302 it's not an ipython bug anymore (it has to do with how pydoc.help
5297 is implemented).
5303 is implemented).
5298
5304
5299 2003-05-22 Fernando Perez <fperez@colorado.edu>
5305 2003-05-22 Fernando Perez <fperez@colorado.edu>
5300
5306
5301 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5307 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5302 return [] instead of None when nothing matches, also match to end
5308 return [] instead of None when nothing matches, also match to end
5303 of line. Patch by Gary Bishop.
5309 of line. Patch by Gary Bishop.
5304
5310
5305 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5311 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5306 protection as before, for files passed on the command line. This
5312 protection as before, for files passed on the command line. This
5307 prevents the CrashHandler from kicking in if user files call into
5313 prevents the CrashHandler from kicking in if user files call into
5308 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5314 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5309 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5315 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5310
5316
5311 2003-05-20 *** Released version 0.4.0
5317 2003-05-20 *** Released version 0.4.0
5312
5318
5313 2003-05-20 Fernando Perez <fperez@colorado.edu>
5319 2003-05-20 Fernando Perez <fperez@colorado.edu>
5314
5320
5315 * setup.py: added support for manpages. It's a bit hackish b/c of
5321 * setup.py: added support for manpages. It's a bit hackish b/c of
5316 a bug in the way the bdist_rpm distutils target handles gzipped
5322 a bug in the way the bdist_rpm distutils target handles gzipped
5317 manpages, but it works. After a patch by Jack.
5323 manpages, but it works. After a patch by Jack.
5318
5324
5319 2003-05-19 Fernando Perez <fperez@colorado.edu>
5325 2003-05-19 Fernando Perez <fperez@colorado.edu>
5320
5326
5321 * IPython/numutils.py: added a mockup of the kinds module, since
5327 * IPython/numutils.py: added a mockup of the kinds module, since
5322 it was recently removed from Numeric. This way, numutils will
5328 it was recently removed from Numeric. This way, numutils will
5323 work for all users even if they are missing kinds.
5329 work for all users even if they are missing kinds.
5324
5330
5325 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5331 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5326 failure, which can occur with SWIG-wrapped extensions. After a
5332 failure, which can occur with SWIG-wrapped extensions. After a
5327 crash report from Prabhu.
5333 crash report from Prabhu.
5328
5334
5329 2003-05-16 Fernando Perez <fperez@colorado.edu>
5335 2003-05-16 Fernando Perez <fperez@colorado.edu>
5330
5336
5331 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5337 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5332 protect ipython from user code which may call directly
5338 protect ipython from user code which may call directly
5333 sys.excepthook (this looks like an ipython crash to the user, even
5339 sys.excepthook (this looks like an ipython crash to the user, even
5334 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5340 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5335 This is especially important to help users of WxWindows, but may
5341 This is especially important to help users of WxWindows, but may
5336 also be useful in other cases.
5342 also be useful in other cases.
5337
5343
5338 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5344 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5339 an optional tb_offset to be specified, and to preserve exception
5345 an optional tb_offset to be specified, and to preserve exception
5340 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5346 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5341
5347
5342 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5348 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5343
5349
5344 2003-05-15 Fernando Perez <fperez@colorado.edu>
5350 2003-05-15 Fernando Perez <fperez@colorado.edu>
5345
5351
5346 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5352 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5347 installing for a new user under Windows.
5353 installing for a new user under Windows.
5348
5354
5349 2003-05-12 Fernando Perez <fperez@colorado.edu>
5355 2003-05-12 Fernando Perez <fperez@colorado.edu>
5350
5356
5351 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5357 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5352 handler for Emacs comint-based lines. Currently it doesn't do
5358 handler for Emacs comint-based lines. Currently it doesn't do
5353 much (but importantly, it doesn't update the history cache). In
5359 much (but importantly, it doesn't update the history cache). In
5354 the future it may be expanded if Alex needs more functionality
5360 the future it may be expanded if Alex needs more functionality
5355 there.
5361 there.
5356
5362
5357 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5363 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5358 info to crash reports.
5364 info to crash reports.
5359
5365
5360 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5366 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5361 just like Python's -c. Also fixed crash with invalid -color
5367 just like Python's -c. Also fixed crash with invalid -color
5362 option value at startup. Thanks to Will French
5368 option value at startup. Thanks to Will French
5363 <wfrench-AT-bestweb.net> for the bug report.
5369 <wfrench-AT-bestweb.net> for the bug report.
5364
5370
5365 2003-05-09 Fernando Perez <fperez@colorado.edu>
5371 2003-05-09 Fernando Perez <fperez@colorado.edu>
5366
5372
5367 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5373 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5368 to EvalDict (it's a mapping, after all) and simplified its code
5374 to EvalDict (it's a mapping, after all) and simplified its code
5369 quite a bit, after a nice discussion on c.l.py where Gustavo
5375 quite a bit, after a nice discussion on c.l.py where Gustavo
5370 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5376 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5371
5377
5372 2003-04-30 Fernando Perez <fperez@colorado.edu>
5378 2003-04-30 Fernando Perez <fperez@colorado.edu>
5373
5379
5374 * IPython/genutils.py (timings_out): modified it to reduce its
5380 * IPython/genutils.py (timings_out): modified it to reduce its
5375 overhead in the common reps==1 case.
5381 overhead in the common reps==1 case.
5376
5382
5377 2003-04-29 Fernando Perez <fperez@colorado.edu>
5383 2003-04-29 Fernando Perez <fperez@colorado.edu>
5378
5384
5379 * IPython/genutils.py (timings_out): Modified to use the resource
5385 * IPython/genutils.py (timings_out): Modified to use the resource
5380 module, which avoids the wraparound problems of time.clock().
5386 module, which avoids the wraparound problems of time.clock().
5381
5387
5382 2003-04-17 *** Released version 0.2.15pre4
5388 2003-04-17 *** Released version 0.2.15pre4
5383
5389
5384 2003-04-17 Fernando Perez <fperez@colorado.edu>
5390 2003-04-17 Fernando Perez <fperez@colorado.edu>
5385
5391
5386 * setup.py (scriptfiles): Split windows-specific stuff over to a
5392 * setup.py (scriptfiles): Split windows-specific stuff over to a
5387 separate file, in an attempt to have a Windows GUI installer.
5393 separate file, in an attempt to have a Windows GUI installer.
5388 That didn't work, but part of the groundwork is done.
5394 That didn't work, but part of the groundwork is done.
5389
5395
5390 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5396 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5391 indent/unindent with 4 spaces. Particularly useful in combination
5397 indent/unindent with 4 spaces. Particularly useful in combination
5392 with the new auto-indent option.
5398 with the new auto-indent option.
5393
5399
5394 2003-04-16 Fernando Perez <fperez@colorado.edu>
5400 2003-04-16 Fernando Perez <fperez@colorado.edu>
5395
5401
5396 * IPython/Magic.py: various replacements of self.rc for
5402 * IPython/Magic.py: various replacements of self.rc for
5397 self.shell.rc. A lot more remains to be done to fully disentangle
5403 self.shell.rc. A lot more remains to be done to fully disentangle
5398 this class from the main Shell class.
5404 this class from the main Shell class.
5399
5405
5400 * IPython/GnuplotRuntime.py: added checks for mouse support so
5406 * IPython/GnuplotRuntime.py: added checks for mouse support so
5401 that we don't try to enable it if the current gnuplot doesn't
5407 that we don't try to enable it if the current gnuplot doesn't
5402 really support it. Also added checks so that we don't try to
5408 really support it. Also added checks so that we don't try to
5403 enable persist under Windows (where Gnuplot doesn't recognize the
5409 enable persist under Windows (where Gnuplot doesn't recognize the
5404 option).
5410 option).
5405
5411
5406 * IPython/iplib.py (InteractiveShell.interact): Added optional
5412 * IPython/iplib.py (InteractiveShell.interact): Added optional
5407 auto-indenting code, after a patch by King C. Shu
5413 auto-indenting code, after a patch by King C. Shu
5408 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5414 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5409 get along well with pasting indented code. If I ever figure out
5415 get along well with pasting indented code. If I ever figure out
5410 how to make that part go well, it will become on by default.
5416 how to make that part go well, it will become on by default.
5411
5417
5412 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5418 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5413 crash ipython if there was an unmatched '%' in the user's prompt
5419 crash ipython if there was an unmatched '%' in the user's prompt
5414 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5420 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5415
5421
5416 * IPython/iplib.py (InteractiveShell.interact): removed the
5422 * IPython/iplib.py (InteractiveShell.interact): removed the
5417 ability to ask the user whether he wants to crash or not at the
5423 ability to ask the user whether he wants to crash or not at the
5418 'last line' exception handler. Calling functions at that point
5424 'last line' exception handler. Calling functions at that point
5419 changes the stack, and the error reports would have incorrect
5425 changes the stack, and the error reports would have incorrect
5420 tracebacks.
5426 tracebacks.
5421
5427
5422 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5428 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5423 pass through a peger a pretty-printed form of any object. After a
5429 pass through a peger a pretty-printed form of any object. After a
5424 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5430 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5425
5431
5426 2003-04-14 Fernando Perez <fperez@colorado.edu>
5432 2003-04-14 Fernando Perez <fperez@colorado.edu>
5427
5433
5428 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5434 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5429 all files in ~ would be modified at first install (instead of
5435 all files in ~ would be modified at first install (instead of
5430 ~/.ipython). This could be potentially disastrous, as the
5436 ~/.ipython). This could be potentially disastrous, as the
5431 modification (make line-endings native) could damage binary files.
5437 modification (make line-endings native) could damage binary files.
5432
5438
5433 2003-04-10 Fernando Perez <fperez@colorado.edu>
5439 2003-04-10 Fernando Perez <fperez@colorado.edu>
5434
5440
5435 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5441 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5436 handle only lines which are invalid python. This now means that
5442 handle only lines which are invalid python. This now means that
5437 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5443 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5438 for the bug report.
5444 for the bug report.
5439
5445
5440 2003-04-01 Fernando Perez <fperez@colorado.edu>
5446 2003-04-01 Fernando Perez <fperez@colorado.edu>
5441
5447
5442 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5448 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5443 where failing to set sys.last_traceback would crash pdb.pm().
5449 where failing to set sys.last_traceback would crash pdb.pm().
5444 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5450 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5445 report.
5451 report.
5446
5452
5447 2003-03-25 Fernando Perez <fperez@colorado.edu>
5453 2003-03-25 Fernando Perez <fperez@colorado.edu>
5448
5454
5449 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5455 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5450 before printing it (it had a lot of spurious blank lines at the
5456 before printing it (it had a lot of spurious blank lines at the
5451 end).
5457 end).
5452
5458
5453 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5459 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5454 output would be sent 21 times! Obviously people don't use this
5460 output would be sent 21 times! Obviously people don't use this
5455 too often, or I would have heard about it.
5461 too often, or I would have heard about it.
5456
5462
5457 2003-03-24 Fernando Perez <fperez@colorado.edu>
5463 2003-03-24 Fernando Perez <fperez@colorado.edu>
5458
5464
5459 * setup.py (scriptfiles): renamed the data_files parameter from
5465 * setup.py (scriptfiles): renamed the data_files parameter from
5460 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5466 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5461 for the patch.
5467 for the patch.
5462
5468
5463 2003-03-20 Fernando Perez <fperez@colorado.edu>
5469 2003-03-20 Fernando Perez <fperez@colorado.edu>
5464
5470
5465 * IPython/genutils.py (error): added error() and fatal()
5471 * IPython/genutils.py (error): added error() and fatal()
5466 functions.
5472 functions.
5467
5473
5468 2003-03-18 *** Released version 0.2.15pre3
5474 2003-03-18 *** Released version 0.2.15pre3
5469
5475
5470 2003-03-18 Fernando Perez <fperez@colorado.edu>
5476 2003-03-18 Fernando Perez <fperez@colorado.edu>
5471
5477
5472 * setupext/install_data_ext.py
5478 * setupext/install_data_ext.py
5473 (install_data_ext.initialize_options): Class contributed by Jack
5479 (install_data_ext.initialize_options): Class contributed by Jack
5474 Moffit for fixing the old distutils hack. He is sending this to
5480 Moffit for fixing the old distutils hack. He is sending this to
5475 the distutils folks so in the future we may not need it as a
5481 the distutils folks so in the future we may not need it as a
5476 private fix.
5482 private fix.
5477
5483
5478 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5484 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5479 changes for Debian packaging. See his patch for full details.
5485 changes for Debian packaging. See his patch for full details.
5480 The old distutils hack of making the ipythonrc* files carry a
5486 The old distutils hack of making the ipythonrc* files carry a
5481 bogus .py extension is gone, at last. Examples were moved to a
5487 bogus .py extension is gone, at last. Examples were moved to a
5482 separate subdir under doc/, and the separate executable scripts
5488 separate subdir under doc/, and the separate executable scripts
5483 now live in their own directory. Overall a great cleanup. The
5489 now live in their own directory. Overall a great cleanup. The
5484 manual was updated to use the new files, and setup.py has been
5490 manual was updated to use the new files, and setup.py has been
5485 fixed for this setup.
5491 fixed for this setup.
5486
5492
5487 * IPython/PyColorize.py (Parser.usage): made non-executable and
5493 * IPython/PyColorize.py (Parser.usage): made non-executable and
5488 created a pycolor wrapper around it to be included as a script.
5494 created a pycolor wrapper around it to be included as a script.
5489
5495
5490 2003-03-12 *** Released version 0.2.15pre2
5496 2003-03-12 *** Released version 0.2.15pre2
5491
5497
5492 2003-03-12 Fernando Perez <fperez@colorado.edu>
5498 2003-03-12 Fernando Perez <fperez@colorado.edu>
5493
5499
5494 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5500 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5495 long-standing problem with garbage characters in some terminals.
5501 long-standing problem with garbage characters in some terminals.
5496 The issue was really that the \001 and \002 escapes must _only_ be
5502 The issue was really that the \001 and \002 escapes must _only_ be
5497 passed to input prompts (which call readline), but _never_ to
5503 passed to input prompts (which call readline), but _never_ to
5498 normal text to be printed on screen. I changed ColorANSI to have
5504 normal text to be printed on screen. I changed ColorANSI to have
5499 two classes: TermColors and InputTermColors, each with the
5505 two classes: TermColors and InputTermColors, each with the
5500 appropriate escapes for input prompts or normal text. The code in
5506 appropriate escapes for input prompts or normal text. The code in
5501 Prompts.py got slightly more complicated, but this very old and
5507 Prompts.py got slightly more complicated, but this very old and
5502 annoying bug is finally fixed.
5508 annoying bug is finally fixed.
5503
5509
5504 All the credit for nailing down the real origin of this problem
5510 All the credit for nailing down the real origin of this problem
5505 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5511 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5506 *Many* thanks to him for spending quite a bit of effort on this.
5512 *Many* thanks to him for spending quite a bit of effort on this.
5507
5513
5508 2003-03-05 *** Released version 0.2.15pre1
5514 2003-03-05 *** Released version 0.2.15pre1
5509
5515
5510 2003-03-03 Fernando Perez <fperez@colorado.edu>
5516 2003-03-03 Fernando Perez <fperez@colorado.edu>
5511
5517
5512 * IPython/FakeModule.py: Moved the former _FakeModule to a
5518 * IPython/FakeModule.py: Moved the former _FakeModule to a
5513 separate file, because it's also needed by Magic (to fix a similar
5519 separate file, because it's also needed by Magic (to fix a similar
5514 pickle-related issue in @run).
5520 pickle-related issue in @run).
5515
5521
5516 2003-03-02 Fernando Perez <fperez@colorado.edu>
5522 2003-03-02 Fernando Perez <fperez@colorado.edu>
5517
5523
5518 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5524 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5519 the autocall option at runtime.
5525 the autocall option at runtime.
5520 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5526 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5521 across Magic.py to start separating Magic from InteractiveShell.
5527 across Magic.py to start separating Magic from InteractiveShell.
5522 (Magic._ofind): Fixed to return proper namespace for dotted
5528 (Magic._ofind): Fixed to return proper namespace for dotted
5523 names. Before, a dotted name would always return 'not currently
5529 names. Before, a dotted name would always return 'not currently
5524 defined', because it would find the 'parent'. s.x would be found,
5530 defined', because it would find the 'parent'. s.x would be found,
5525 but since 'x' isn't defined by itself, it would get confused.
5531 but since 'x' isn't defined by itself, it would get confused.
5526 (Magic.magic_run): Fixed pickling problems reported by Ralf
5532 (Magic.magic_run): Fixed pickling problems reported by Ralf
5527 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5533 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5528 that I'd used when Mike Heeter reported similar issues at the
5534 that I'd used when Mike Heeter reported similar issues at the
5529 top-level, but now for @run. It boils down to injecting the
5535 top-level, but now for @run. It boils down to injecting the
5530 namespace where code is being executed with something that looks
5536 namespace where code is being executed with something that looks
5531 enough like a module to fool pickle.dump(). Since a pickle stores
5537 enough like a module to fool pickle.dump(). Since a pickle stores
5532 a named reference to the importing module, we need this for
5538 a named reference to the importing module, we need this for
5533 pickles to save something sensible.
5539 pickles to save something sensible.
5534
5540
5535 * IPython/ipmaker.py (make_IPython): added an autocall option.
5541 * IPython/ipmaker.py (make_IPython): added an autocall option.
5536
5542
5537 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5543 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5538 the auto-eval code. Now autocalling is an option, and the code is
5544 the auto-eval code. Now autocalling is an option, and the code is
5539 also vastly safer. There is no more eval() involved at all.
5545 also vastly safer. There is no more eval() involved at all.
5540
5546
5541 2003-03-01 Fernando Perez <fperez@colorado.edu>
5547 2003-03-01 Fernando Perez <fperez@colorado.edu>
5542
5548
5543 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5549 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5544 dict with named keys instead of a tuple.
5550 dict with named keys instead of a tuple.
5545
5551
5546 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5552 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5547
5553
5548 * setup.py (make_shortcut): Fixed message about directories
5554 * setup.py (make_shortcut): Fixed message about directories
5549 created during Windows installation (the directories were ok, just
5555 created during Windows installation (the directories were ok, just
5550 the printed message was misleading). Thanks to Chris Liechti
5556 the printed message was misleading). Thanks to Chris Liechti
5551 <cliechti-AT-gmx.net> for the heads up.
5557 <cliechti-AT-gmx.net> for the heads up.
5552
5558
5553 2003-02-21 Fernando Perez <fperez@colorado.edu>
5559 2003-02-21 Fernando Perez <fperez@colorado.edu>
5554
5560
5555 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5561 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5556 of ValueError exception when checking for auto-execution. This
5562 of ValueError exception when checking for auto-execution. This
5557 one is raised by things like Numeric arrays arr.flat when the
5563 one is raised by things like Numeric arrays arr.flat when the
5558 array is non-contiguous.
5564 array is non-contiguous.
5559
5565
5560 2003-01-31 Fernando Perez <fperez@colorado.edu>
5566 2003-01-31 Fernando Perez <fperez@colorado.edu>
5561
5567
5562 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5568 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5563 not return any value at all (even though the command would get
5569 not return any value at all (even though the command would get
5564 executed).
5570 executed).
5565 (xsys): Flush stdout right after printing the command to ensure
5571 (xsys): Flush stdout right after printing the command to ensure
5566 proper ordering of commands and command output in the total
5572 proper ordering of commands and command output in the total
5567 output.
5573 output.
5568 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5574 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5569 system/getoutput as defaults. The old ones are kept for
5575 system/getoutput as defaults. The old ones are kept for
5570 compatibility reasons, so no code which uses this library needs
5576 compatibility reasons, so no code which uses this library needs
5571 changing.
5577 changing.
5572
5578
5573 2003-01-27 *** Released version 0.2.14
5579 2003-01-27 *** Released version 0.2.14
5574
5580
5575 2003-01-25 Fernando Perez <fperez@colorado.edu>
5581 2003-01-25 Fernando Perez <fperez@colorado.edu>
5576
5582
5577 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5583 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5578 functions defined in previous edit sessions could not be re-edited
5584 functions defined in previous edit sessions could not be re-edited
5579 (because the temp files were immediately removed). Now temp files
5585 (because the temp files were immediately removed). Now temp files
5580 are removed only at IPython's exit.
5586 are removed only at IPython's exit.
5581 (Magic.magic_run): Improved @run to perform shell-like expansions
5587 (Magic.magic_run): Improved @run to perform shell-like expansions
5582 on its arguments (~users and $VARS). With this, @run becomes more
5588 on its arguments (~users and $VARS). With this, @run becomes more
5583 like a normal command-line.
5589 like a normal command-line.
5584
5590
5585 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5591 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5586 bugs related to embedding and cleaned up that code. A fairly
5592 bugs related to embedding and cleaned up that code. A fairly
5587 important one was the impossibility to access the global namespace
5593 important one was the impossibility to access the global namespace
5588 through the embedded IPython (only local variables were visible).
5594 through the embedded IPython (only local variables were visible).
5589
5595
5590 2003-01-14 Fernando Perez <fperez@colorado.edu>
5596 2003-01-14 Fernando Perez <fperez@colorado.edu>
5591
5597
5592 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5598 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5593 auto-calling to be a bit more conservative. Now it doesn't get
5599 auto-calling to be a bit more conservative. Now it doesn't get
5594 triggered if any of '!=()<>' are in the rest of the input line, to
5600 triggered if any of '!=()<>' are in the rest of the input line, to
5595 allow comparing callables. Thanks to Alex for the heads up.
5601 allow comparing callables. Thanks to Alex for the heads up.
5596
5602
5597 2003-01-07 Fernando Perez <fperez@colorado.edu>
5603 2003-01-07 Fernando Perez <fperez@colorado.edu>
5598
5604
5599 * IPython/genutils.py (page): fixed estimation of the number of
5605 * IPython/genutils.py (page): fixed estimation of the number of
5600 lines in a string to be paged to simply count newlines. This
5606 lines in a string to be paged to simply count newlines. This
5601 prevents over-guessing due to embedded escape sequences. A better
5607 prevents over-guessing due to embedded escape sequences. A better
5602 long-term solution would involve stripping out the control chars
5608 long-term solution would involve stripping out the control chars
5603 for the count, but it's potentially so expensive I just don't
5609 for the count, but it's potentially so expensive I just don't
5604 think it's worth doing.
5610 think it's worth doing.
5605
5611
5606 2002-12-19 *** Released version 0.2.14pre50
5612 2002-12-19 *** Released version 0.2.14pre50
5607
5613
5608 2002-12-19 Fernando Perez <fperez@colorado.edu>
5614 2002-12-19 Fernando Perez <fperez@colorado.edu>
5609
5615
5610 * tools/release (version): Changed release scripts to inform
5616 * tools/release (version): Changed release scripts to inform
5611 Andrea and build a NEWS file with a list of recent changes.
5617 Andrea and build a NEWS file with a list of recent changes.
5612
5618
5613 * IPython/ColorANSI.py (__all__): changed terminal detection
5619 * IPython/ColorANSI.py (__all__): changed terminal detection
5614 code. Seems to work better for xterms without breaking
5620 code. Seems to work better for xterms without breaking
5615 konsole. Will need more testing to determine if WinXP and Mac OSX
5621 konsole. Will need more testing to determine if WinXP and Mac OSX
5616 also work ok.
5622 also work ok.
5617
5623
5618 2002-12-18 *** Released version 0.2.14pre49
5624 2002-12-18 *** Released version 0.2.14pre49
5619
5625
5620 2002-12-18 Fernando Perez <fperez@colorado.edu>
5626 2002-12-18 Fernando Perez <fperez@colorado.edu>
5621
5627
5622 * Docs: added new info about Mac OSX, from Andrea.
5628 * Docs: added new info about Mac OSX, from Andrea.
5623
5629
5624 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5630 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5625 allow direct plotting of python strings whose format is the same
5631 allow direct plotting of python strings whose format is the same
5626 of gnuplot data files.
5632 of gnuplot data files.
5627
5633
5628 2002-12-16 Fernando Perez <fperez@colorado.edu>
5634 2002-12-16 Fernando Perez <fperez@colorado.edu>
5629
5635
5630 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5636 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5631 value of exit question to be acknowledged.
5637 value of exit question to be acknowledged.
5632
5638
5633 2002-12-03 Fernando Perez <fperez@colorado.edu>
5639 2002-12-03 Fernando Perez <fperez@colorado.edu>
5634
5640
5635 * IPython/ipmaker.py: removed generators, which had been added
5641 * IPython/ipmaker.py: removed generators, which had been added
5636 by mistake in an earlier debugging run. This was causing trouble
5642 by mistake in an earlier debugging run. This was causing trouble
5637 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5643 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5638 for pointing this out.
5644 for pointing this out.
5639
5645
5640 2002-11-17 Fernando Perez <fperez@colorado.edu>
5646 2002-11-17 Fernando Perez <fperez@colorado.edu>
5641
5647
5642 * Manual: updated the Gnuplot section.
5648 * Manual: updated the Gnuplot section.
5643
5649
5644 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5650 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5645 a much better split of what goes in Runtime and what goes in
5651 a much better split of what goes in Runtime and what goes in
5646 Interactive.
5652 Interactive.
5647
5653
5648 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5654 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5649 being imported from iplib.
5655 being imported from iplib.
5650
5656
5651 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5657 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5652 for command-passing. Now the global Gnuplot instance is called
5658 for command-passing. Now the global Gnuplot instance is called
5653 'gp' instead of 'g', which was really a far too fragile and
5659 'gp' instead of 'g', which was really a far too fragile and
5654 common name.
5660 common name.
5655
5661
5656 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5662 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5657 bounding boxes generated by Gnuplot for square plots.
5663 bounding boxes generated by Gnuplot for square plots.
5658
5664
5659 * IPython/genutils.py (popkey): new function added. I should
5665 * IPython/genutils.py (popkey): new function added. I should
5660 suggest this on c.l.py as a dict method, it seems useful.
5666 suggest this on c.l.py as a dict method, it seems useful.
5661
5667
5662 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5668 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5663 to transparently handle PostScript generation. MUCH better than
5669 to transparently handle PostScript generation. MUCH better than
5664 the previous plot_eps/replot_eps (which I removed now). The code
5670 the previous plot_eps/replot_eps (which I removed now). The code
5665 is also fairly clean and well documented now (including
5671 is also fairly clean and well documented now (including
5666 docstrings).
5672 docstrings).
5667
5673
5668 2002-11-13 Fernando Perez <fperez@colorado.edu>
5674 2002-11-13 Fernando Perez <fperez@colorado.edu>
5669
5675
5670 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5676 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5671 (inconsistent with options).
5677 (inconsistent with options).
5672
5678
5673 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5679 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5674 manually disabled, I don't know why. Fixed it.
5680 manually disabled, I don't know why. Fixed it.
5675 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5681 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5676 eps output.
5682 eps output.
5677
5683
5678 2002-11-12 Fernando Perez <fperez@colorado.edu>
5684 2002-11-12 Fernando Perez <fperez@colorado.edu>
5679
5685
5680 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5686 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5681 don't propagate up to caller. Fixes crash reported by François
5687 don't propagate up to caller. Fixes crash reported by François
5682 Pinard.
5688 Pinard.
5683
5689
5684 2002-11-09 Fernando Perez <fperez@colorado.edu>
5690 2002-11-09 Fernando Perez <fperez@colorado.edu>
5685
5691
5686 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5692 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5687 history file for new users.
5693 history file for new users.
5688 (make_IPython): fixed bug where initial install would leave the
5694 (make_IPython): fixed bug where initial install would leave the
5689 user running in the .ipython dir.
5695 user running in the .ipython dir.
5690 (make_IPython): fixed bug where config dir .ipython would be
5696 (make_IPython): fixed bug where config dir .ipython would be
5691 created regardless of the given -ipythondir option. Thanks to Cory
5697 created regardless of the given -ipythondir option. Thanks to Cory
5692 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5698 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5693
5699
5694 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5700 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5695 type confirmations. Will need to use it in all of IPython's code
5701 type confirmations. Will need to use it in all of IPython's code
5696 consistently.
5702 consistently.
5697
5703
5698 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5704 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5699 context to print 31 lines instead of the default 5. This will make
5705 context to print 31 lines instead of the default 5. This will make
5700 the crash reports extremely detailed in case the problem is in
5706 the crash reports extremely detailed in case the problem is in
5701 libraries I don't have access to.
5707 libraries I don't have access to.
5702
5708
5703 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5709 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5704 line of defense' code to still crash, but giving users fair
5710 line of defense' code to still crash, but giving users fair
5705 warning. I don't want internal errors to go unreported: if there's
5711 warning. I don't want internal errors to go unreported: if there's
5706 an internal problem, IPython should crash and generate a full
5712 an internal problem, IPython should crash and generate a full
5707 report.
5713 report.
5708
5714
5709 2002-11-08 Fernando Perez <fperez@colorado.edu>
5715 2002-11-08 Fernando Perez <fperez@colorado.edu>
5710
5716
5711 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5717 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5712 otherwise uncaught exceptions which can appear if people set
5718 otherwise uncaught exceptions which can appear if people set
5713 sys.stdout to something badly broken. Thanks to a crash report
5719 sys.stdout to something badly broken. Thanks to a crash report
5714 from henni-AT-mail.brainbot.com.
5720 from henni-AT-mail.brainbot.com.
5715
5721
5716 2002-11-04 Fernando Perez <fperez@colorado.edu>
5722 2002-11-04 Fernando Perez <fperez@colorado.edu>
5717
5723
5718 * IPython/iplib.py (InteractiveShell.interact): added
5724 * IPython/iplib.py (InteractiveShell.interact): added
5719 __IPYTHON__active to the builtins. It's a flag which goes on when
5725 __IPYTHON__active to the builtins. It's a flag which goes on when
5720 the interaction starts and goes off again when it stops. This
5726 the interaction starts and goes off again when it stops. This
5721 allows embedding code to detect being inside IPython. Before this
5727 allows embedding code to detect being inside IPython. Before this
5722 was done via __IPYTHON__, but that only shows that an IPython
5728 was done via __IPYTHON__, but that only shows that an IPython
5723 instance has been created.
5729 instance has been created.
5724
5730
5725 * IPython/Magic.py (Magic.magic_env): I realized that in a
5731 * IPython/Magic.py (Magic.magic_env): I realized that in a
5726 UserDict, instance.data holds the data as a normal dict. So I
5732 UserDict, instance.data holds the data as a normal dict. So I
5727 modified @env to return os.environ.data instead of rebuilding a
5733 modified @env to return os.environ.data instead of rebuilding a
5728 dict by hand.
5734 dict by hand.
5729
5735
5730 2002-11-02 Fernando Perez <fperez@colorado.edu>
5736 2002-11-02 Fernando Perez <fperez@colorado.edu>
5731
5737
5732 * IPython/genutils.py (warn): changed so that level 1 prints no
5738 * IPython/genutils.py (warn): changed so that level 1 prints no
5733 header. Level 2 is now the default (with 'WARNING' header, as
5739 header. Level 2 is now the default (with 'WARNING' header, as
5734 before). I think I tracked all places where changes were needed in
5740 before). I think I tracked all places where changes were needed in
5735 IPython, but outside code using the old level numbering may have
5741 IPython, but outside code using the old level numbering may have
5736 broken.
5742 broken.
5737
5743
5738 * IPython/iplib.py (InteractiveShell.runcode): added this to
5744 * IPython/iplib.py (InteractiveShell.runcode): added this to
5739 handle the tracebacks in SystemExit traps correctly. The previous
5745 handle the tracebacks in SystemExit traps correctly. The previous
5740 code (through interact) was printing more of the stack than
5746 code (through interact) was printing more of the stack than
5741 necessary, showing IPython internal code to the user.
5747 necessary, showing IPython internal code to the user.
5742
5748
5743 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5749 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5744 default. Now that the default at the confirmation prompt is yes,
5750 default. Now that the default at the confirmation prompt is yes,
5745 it's not so intrusive. François' argument that ipython sessions
5751 it's not so intrusive. François' argument that ipython sessions
5746 tend to be complex enough not to lose them from an accidental C-d,
5752 tend to be complex enough not to lose them from an accidental C-d,
5747 is a valid one.
5753 is a valid one.
5748
5754
5749 * IPython/iplib.py (InteractiveShell.interact): added a
5755 * IPython/iplib.py (InteractiveShell.interact): added a
5750 showtraceback() call to the SystemExit trap, and modified the exit
5756 showtraceback() call to the SystemExit trap, and modified the exit
5751 confirmation to have yes as the default.
5757 confirmation to have yes as the default.
5752
5758
5753 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5759 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5754 this file. It's been gone from the code for a long time, this was
5760 this file. It's been gone from the code for a long time, this was
5755 simply leftover junk.
5761 simply leftover junk.
5756
5762
5757 2002-11-01 Fernando Perez <fperez@colorado.edu>
5763 2002-11-01 Fernando Perez <fperez@colorado.edu>
5758
5764
5759 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5765 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5760 added. If set, IPython now traps EOF and asks for
5766 added. If set, IPython now traps EOF and asks for
5761 confirmation. After a request by François Pinard.
5767 confirmation. After a request by François Pinard.
5762
5768
5763 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5769 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5764 of @abort, and with a new (better) mechanism for handling the
5770 of @abort, and with a new (better) mechanism for handling the
5765 exceptions.
5771 exceptions.
5766
5772
5767 2002-10-27 Fernando Perez <fperez@colorado.edu>
5773 2002-10-27 Fernando Perez <fperez@colorado.edu>
5768
5774
5769 * IPython/usage.py (__doc__): updated the --help information and
5775 * IPython/usage.py (__doc__): updated the --help information and
5770 the ipythonrc file to indicate that -log generates
5776 the ipythonrc file to indicate that -log generates
5771 ./ipython.log. Also fixed the corresponding info in @logstart.
5777 ./ipython.log. Also fixed the corresponding info in @logstart.
5772 This and several other fixes in the manuals thanks to reports by
5778 This and several other fixes in the manuals thanks to reports by
5773 François Pinard <pinard-AT-iro.umontreal.ca>.
5779 François Pinard <pinard-AT-iro.umontreal.ca>.
5774
5780
5775 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5781 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5776 refer to @logstart (instead of @log, which doesn't exist).
5782 refer to @logstart (instead of @log, which doesn't exist).
5777
5783
5778 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5784 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5779 AttributeError crash. Thanks to Christopher Armstrong
5785 AttributeError crash. Thanks to Christopher Armstrong
5780 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5786 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5781 introduced recently (in 0.2.14pre37) with the fix to the eval
5787 introduced recently (in 0.2.14pre37) with the fix to the eval
5782 problem mentioned below.
5788 problem mentioned below.
5783
5789
5784 2002-10-17 Fernando Perez <fperez@colorado.edu>
5790 2002-10-17 Fernando Perez <fperez@colorado.edu>
5785
5791
5786 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5792 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5787 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5793 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5788
5794
5789 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5795 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5790 this function to fix a problem reported by Alex Schmolck. He saw
5796 this function to fix a problem reported by Alex Schmolck. He saw
5791 it with list comprehensions and generators, which were getting
5797 it with list comprehensions and generators, which were getting
5792 called twice. The real problem was an 'eval' call in testing for
5798 called twice. The real problem was an 'eval' call in testing for
5793 automagic which was evaluating the input line silently.
5799 automagic which was evaluating the input line silently.
5794
5800
5795 This is a potentially very nasty bug, if the input has side
5801 This is a potentially very nasty bug, if the input has side
5796 effects which must not be repeated. The code is much cleaner now,
5802 effects which must not be repeated. The code is much cleaner now,
5797 without any blanket 'except' left and with a regexp test for
5803 without any blanket 'except' left and with a regexp test for
5798 actual function names.
5804 actual function names.
5799
5805
5800 But an eval remains, which I'm not fully comfortable with. I just
5806 But an eval remains, which I'm not fully comfortable with. I just
5801 don't know how to find out if an expression could be a callable in
5807 don't know how to find out if an expression could be a callable in
5802 the user's namespace without doing an eval on the string. However
5808 the user's namespace without doing an eval on the string. However
5803 that string is now much more strictly checked so that no code
5809 that string is now much more strictly checked so that no code
5804 slips by, so the eval should only happen for things that can
5810 slips by, so the eval should only happen for things that can
5805 really be only function/method names.
5811 really be only function/method names.
5806
5812
5807 2002-10-15 Fernando Perez <fperez@colorado.edu>
5813 2002-10-15 Fernando Perez <fperez@colorado.edu>
5808
5814
5809 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5815 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5810 OSX information to main manual, removed README_Mac_OSX file from
5816 OSX information to main manual, removed README_Mac_OSX file from
5811 distribution. Also updated credits for recent additions.
5817 distribution. Also updated credits for recent additions.
5812
5818
5813 2002-10-10 Fernando Perez <fperez@colorado.edu>
5819 2002-10-10 Fernando Perez <fperez@colorado.edu>
5814
5820
5815 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5821 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5816 terminal-related issues. Many thanks to Andrea Riciputi
5822 terminal-related issues. Many thanks to Andrea Riciputi
5817 <andrea.riciputi-AT-libero.it> for writing it.
5823 <andrea.riciputi-AT-libero.it> for writing it.
5818
5824
5819 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5825 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5820 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5826 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5821
5827
5822 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5828 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5823 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5829 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5824 <syver-en-AT-online.no> who both submitted patches for this problem.
5830 <syver-en-AT-online.no> who both submitted patches for this problem.
5825
5831
5826 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5832 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5827 global embedding to make sure that things don't overwrite user
5833 global embedding to make sure that things don't overwrite user
5828 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5834 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5829
5835
5830 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5836 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5831 compatibility. Thanks to Hayden Callow
5837 compatibility. Thanks to Hayden Callow
5832 <h.callow-AT-elec.canterbury.ac.nz>
5838 <h.callow-AT-elec.canterbury.ac.nz>
5833
5839
5834 2002-10-04 Fernando Perez <fperez@colorado.edu>
5840 2002-10-04 Fernando Perez <fperez@colorado.edu>
5835
5841
5836 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5842 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5837 Gnuplot.File objects.
5843 Gnuplot.File objects.
5838
5844
5839 2002-07-23 Fernando Perez <fperez@colorado.edu>
5845 2002-07-23 Fernando Perez <fperez@colorado.edu>
5840
5846
5841 * IPython/genutils.py (timing): Added timings() and timing() for
5847 * IPython/genutils.py (timing): Added timings() and timing() for
5842 quick access to the most commonly needed data, the execution
5848 quick access to the most commonly needed data, the execution
5843 times. Old timing() renamed to timings_out().
5849 times. Old timing() renamed to timings_out().
5844
5850
5845 2002-07-18 Fernando Perez <fperez@colorado.edu>
5851 2002-07-18 Fernando Perez <fperez@colorado.edu>
5846
5852
5847 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5853 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5848 bug with nested instances disrupting the parent's tab completion.
5854 bug with nested instances disrupting the parent's tab completion.
5849
5855
5850 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5856 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5851 all_completions code to begin the emacs integration.
5857 all_completions code to begin the emacs integration.
5852
5858
5853 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5859 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5854 argument to allow titling individual arrays when plotting.
5860 argument to allow titling individual arrays when plotting.
5855
5861
5856 2002-07-15 Fernando Perez <fperez@colorado.edu>
5862 2002-07-15 Fernando Perez <fperez@colorado.edu>
5857
5863
5858 * setup.py (make_shortcut): changed to retrieve the value of
5864 * setup.py (make_shortcut): changed to retrieve the value of
5859 'Program Files' directory from the registry (this value changes in
5865 'Program Files' directory from the registry (this value changes in
5860 non-english versions of Windows). Thanks to Thomas Fanslau
5866 non-english versions of Windows). Thanks to Thomas Fanslau
5861 <tfanslau-AT-gmx.de> for the report.
5867 <tfanslau-AT-gmx.de> for the report.
5862
5868
5863 2002-07-10 Fernando Perez <fperez@colorado.edu>
5869 2002-07-10 Fernando Perez <fperez@colorado.edu>
5864
5870
5865 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5871 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5866 a bug in pdb, which crashes if a line with only whitespace is
5872 a bug in pdb, which crashes if a line with only whitespace is
5867 entered. Bug report submitted to sourceforge.
5873 entered. Bug report submitted to sourceforge.
5868
5874
5869 2002-07-09 Fernando Perez <fperez@colorado.edu>
5875 2002-07-09 Fernando Perez <fperez@colorado.edu>
5870
5876
5871 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5877 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5872 reporting exceptions (it's a bug in inspect.py, I just set a
5878 reporting exceptions (it's a bug in inspect.py, I just set a
5873 workaround).
5879 workaround).
5874
5880
5875 2002-07-08 Fernando Perez <fperez@colorado.edu>
5881 2002-07-08 Fernando Perez <fperez@colorado.edu>
5876
5882
5877 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5883 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5878 __IPYTHON__ in __builtins__ to show up in user_ns.
5884 __IPYTHON__ in __builtins__ to show up in user_ns.
5879
5885
5880 2002-07-03 Fernando Perez <fperez@colorado.edu>
5886 2002-07-03 Fernando Perez <fperez@colorado.edu>
5881
5887
5882 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5888 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5883 name from @gp_set_instance to @gp_set_default.
5889 name from @gp_set_instance to @gp_set_default.
5884
5890
5885 * IPython/ipmaker.py (make_IPython): default editor value set to
5891 * IPython/ipmaker.py (make_IPython): default editor value set to
5886 '0' (a string), to match the rc file. Otherwise will crash when
5892 '0' (a string), to match the rc file. Otherwise will crash when
5887 .strip() is called on it.
5893 .strip() is called on it.
5888
5894
5889
5895
5890 2002-06-28 Fernando Perez <fperez@colorado.edu>
5896 2002-06-28 Fernando Perez <fperez@colorado.edu>
5891
5897
5892 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5898 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5893 of files in current directory when a file is executed via
5899 of files in current directory when a file is executed via
5894 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5900 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5895
5901
5896 * setup.py (manfiles): fix for rpm builds, submitted by RA
5902 * setup.py (manfiles): fix for rpm builds, submitted by RA
5897 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5903 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5898
5904
5899 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5905 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5900 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5906 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5901 string!). A. Schmolck caught this one.
5907 string!). A. Schmolck caught this one.
5902
5908
5903 2002-06-27 Fernando Perez <fperez@colorado.edu>
5909 2002-06-27 Fernando Perez <fperez@colorado.edu>
5904
5910
5905 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5911 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5906 defined files at the cmd line. __name__ wasn't being set to
5912 defined files at the cmd line. __name__ wasn't being set to
5907 __main__.
5913 __main__.
5908
5914
5909 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5915 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5910 regular lists and tuples besides Numeric arrays.
5916 regular lists and tuples besides Numeric arrays.
5911
5917
5912 * IPython/Prompts.py (CachedOutput.__call__): Added output
5918 * IPython/Prompts.py (CachedOutput.__call__): Added output
5913 supression for input ending with ';'. Similar to Mathematica and
5919 supression for input ending with ';'. Similar to Mathematica and
5914 Matlab. The _* vars and Out[] list are still updated, just like
5920 Matlab. The _* vars and Out[] list are still updated, just like
5915 Mathematica behaves.
5921 Mathematica behaves.
5916
5922
5917 2002-06-25 Fernando Perez <fperez@colorado.edu>
5923 2002-06-25 Fernando Perez <fperez@colorado.edu>
5918
5924
5919 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5925 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5920 .ini extensions for profiels under Windows.
5926 .ini extensions for profiels under Windows.
5921
5927
5922 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5928 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5923 string form. Fix contributed by Alexander Schmolck
5929 string form. Fix contributed by Alexander Schmolck
5924 <a.schmolck-AT-gmx.net>
5930 <a.schmolck-AT-gmx.net>
5925
5931
5926 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5932 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5927 pre-configured Gnuplot instance.
5933 pre-configured Gnuplot instance.
5928
5934
5929 2002-06-21 Fernando Perez <fperez@colorado.edu>
5935 2002-06-21 Fernando Perez <fperez@colorado.edu>
5930
5936
5931 * IPython/numutils.py (exp_safe): new function, works around the
5937 * IPython/numutils.py (exp_safe): new function, works around the
5932 underflow problems in Numeric.
5938 underflow problems in Numeric.
5933 (log2): New fn. Safe log in base 2: returns exact integer answer
5939 (log2): New fn. Safe log in base 2: returns exact integer answer
5934 for exact integer powers of 2.
5940 for exact integer powers of 2.
5935
5941
5936 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5942 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5937 properly.
5943 properly.
5938
5944
5939 2002-06-20 Fernando Perez <fperez@colorado.edu>
5945 2002-06-20 Fernando Perez <fperez@colorado.edu>
5940
5946
5941 * IPython/genutils.py (timing): new function like
5947 * IPython/genutils.py (timing): new function like
5942 Mathematica's. Similar to time_test, but returns more info.
5948 Mathematica's. Similar to time_test, but returns more info.
5943
5949
5944 2002-06-18 Fernando Perez <fperez@colorado.edu>
5950 2002-06-18 Fernando Perez <fperez@colorado.edu>
5945
5951
5946 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5952 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5947 according to Mike Heeter's suggestions.
5953 according to Mike Heeter's suggestions.
5948
5954
5949 2002-06-16 Fernando Perez <fperez@colorado.edu>
5955 2002-06-16 Fernando Perez <fperez@colorado.edu>
5950
5956
5951 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5957 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5952 system. GnuplotMagic is gone as a user-directory option. New files
5958 system. GnuplotMagic is gone as a user-directory option. New files
5953 make it easier to use all the gnuplot stuff both from external
5959 make it easier to use all the gnuplot stuff both from external
5954 programs as well as from IPython. Had to rewrite part of
5960 programs as well as from IPython. Had to rewrite part of
5955 hardcopy() b/c of a strange bug: often the ps files simply don't
5961 hardcopy() b/c of a strange bug: often the ps files simply don't
5956 get created, and require a repeat of the command (often several
5962 get created, and require a repeat of the command (often several
5957 times).
5963 times).
5958
5964
5959 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5965 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5960 resolve output channel at call time, so that if sys.stderr has
5966 resolve output channel at call time, so that if sys.stderr has
5961 been redirected by user this gets honored.
5967 been redirected by user this gets honored.
5962
5968
5963 2002-06-13 Fernando Perez <fperez@colorado.edu>
5969 2002-06-13 Fernando Perez <fperez@colorado.edu>
5964
5970
5965 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5971 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5966 IPShell. Kept a copy with the old names to avoid breaking people's
5972 IPShell. Kept a copy with the old names to avoid breaking people's
5967 embedded code.
5973 embedded code.
5968
5974
5969 * IPython/ipython: simplified it to the bare minimum after
5975 * IPython/ipython: simplified it to the bare minimum after
5970 Holger's suggestions. Added info about how to use it in
5976 Holger's suggestions. Added info about how to use it in
5971 PYTHONSTARTUP.
5977 PYTHONSTARTUP.
5972
5978
5973 * IPython/Shell.py (IPythonShell): changed the options passing
5979 * IPython/Shell.py (IPythonShell): changed the options passing
5974 from a string with funky %s replacements to a straight list. Maybe
5980 from a string with funky %s replacements to a straight list. Maybe
5975 a bit more typing, but it follows sys.argv conventions, so there's
5981 a bit more typing, but it follows sys.argv conventions, so there's
5976 less special-casing to remember.
5982 less special-casing to remember.
5977
5983
5978 2002-06-12 Fernando Perez <fperez@colorado.edu>
5984 2002-06-12 Fernando Perez <fperez@colorado.edu>
5979
5985
5980 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5986 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5981 command. Thanks to a suggestion by Mike Heeter.
5987 command. Thanks to a suggestion by Mike Heeter.
5982 (Magic.magic_pfile): added behavior to look at filenames if given
5988 (Magic.magic_pfile): added behavior to look at filenames if given
5983 arg is not a defined object.
5989 arg is not a defined object.
5984 (Magic.magic_save): New @save function to save code snippets. Also
5990 (Magic.magic_save): New @save function to save code snippets. Also
5985 a Mike Heeter idea.
5991 a Mike Heeter idea.
5986
5992
5987 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5993 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5988 plot() and replot(). Much more convenient now, especially for
5994 plot() and replot(). Much more convenient now, especially for
5989 interactive use.
5995 interactive use.
5990
5996
5991 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5997 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5992 filenames.
5998 filenames.
5993
5999
5994 2002-06-02 Fernando Perez <fperez@colorado.edu>
6000 2002-06-02 Fernando Perez <fperez@colorado.edu>
5995
6001
5996 * IPython/Struct.py (Struct.__init__): modified to admit
6002 * IPython/Struct.py (Struct.__init__): modified to admit
5997 initialization via another struct.
6003 initialization via another struct.
5998
6004
5999 * IPython/genutils.py (SystemExec.__init__): New stateful
6005 * IPython/genutils.py (SystemExec.__init__): New stateful
6000 interface to xsys and bq. Useful for writing system scripts.
6006 interface to xsys and bq. Useful for writing system scripts.
6001
6007
6002 2002-05-30 Fernando Perez <fperez@colorado.edu>
6008 2002-05-30 Fernando Perez <fperez@colorado.edu>
6003
6009
6004 * MANIFEST.in: Changed docfile selection to exclude all the lyx
6010 * MANIFEST.in: Changed docfile selection to exclude all the lyx
6005 documents. This will make the user download smaller (it's getting
6011 documents. This will make the user download smaller (it's getting
6006 too big).
6012 too big).
6007
6013
6008 2002-05-29 Fernando Perez <fperez@colorado.edu>
6014 2002-05-29 Fernando Perez <fperez@colorado.edu>
6009
6015
6010 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
6016 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
6011 fix problems with shelve and pickle. Seems to work, but I don't
6017 fix problems with shelve and pickle. Seems to work, but I don't
6012 know if corner cases break it. Thanks to Mike Heeter
6018 know if corner cases break it. Thanks to Mike Heeter
6013 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
6019 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
6014
6020
6015 2002-05-24 Fernando Perez <fperez@colorado.edu>
6021 2002-05-24 Fernando Perez <fperez@colorado.edu>
6016
6022
6017 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
6023 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
6018 macros having broken.
6024 macros having broken.
6019
6025
6020 2002-05-21 Fernando Perez <fperez@colorado.edu>
6026 2002-05-21 Fernando Perez <fperez@colorado.edu>
6021
6027
6022 * IPython/Magic.py (Magic.magic_logstart): fixed recently
6028 * IPython/Magic.py (Magic.magic_logstart): fixed recently
6023 introduced logging bug: all history before logging started was
6029 introduced logging bug: all history before logging started was
6024 being written one character per line! This came from the redesign
6030 being written one character per line! This came from the redesign
6025 of the input history as a special list which slices to strings,
6031 of the input history as a special list which slices to strings,
6026 not to lists.
6032 not to lists.
6027
6033
6028 2002-05-20 Fernando Perez <fperez@colorado.edu>
6034 2002-05-20 Fernando Perez <fperez@colorado.edu>
6029
6035
6030 * IPython/Prompts.py (CachedOutput.__init__): made the color table
6036 * IPython/Prompts.py (CachedOutput.__init__): made the color table
6031 be an attribute of all classes in this module. The design of these
6037 be an attribute of all classes in this module. The design of these
6032 classes needs some serious overhauling.
6038 classes needs some serious overhauling.
6033
6039
6034 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
6040 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
6035 which was ignoring '_' in option names.
6041 which was ignoring '_' in option names.
6036
6042
6037 * IPython/ultraTB.py (FormattedTB.__init__): Changed
6043 * IPython/ultraTB.py (FormattedTB.__init__): Changed
6038 'Verbose_novars' to 'Context' and made it the new default. It's a
6044 'Verbose_novars' to 'Context' and made it the new default. It's a
6039 bit more readable and also safer than verbose.
6045 bit more readable and also safer than verbose.
6040
6046
6041 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
6047 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
6042 triple-quoted strings.
6048 triple-quoted strings.
6043
6049
6044 * IPython/OInspect.py (__all__): new module exposing the object
6050 * IPython/OInspect.py (__all__): new module exposing the object
6045 introspection facilities. Now the corresponding magics are dummy
6051 introspection facilities. Now the corresponding magics are dummy
6046 wrappers around this. Having this module will make it much easier
6052 wrappers around this. Having this module will make it much easier
6047 to put these functions into our modified pdb.
6053 to put these functions into our modified pdb.
6048 This new object inspector system uses the new colorizing module,
6054 This new object inspector system uses the new colorizing module,
6049 so source code and other things are nicely syntax highlighted.
6055 so source code and other things are nicely syntax highlighted.
6050
6056
6051 2002-05-18 Fernando Perez <fperez@colorado.edu>
6057 2002-05-18 Fernando Perez <fperez@colorado.edu>
6052
6058
6053 * IPython/ColorANSI.py: Split the coloring tools into a separate
6059 * IPython/ColorANSI.py: Split the coloring tools into a separate
6054 module so I can use them in other code easier (they were part of
6060 module so I can use them in other code easier (they were part of
6055 ultraTB).
6061 ultraTB).
6056
6062
6057 2002-05-17 Fernando Perez <fperez@colorado.edu>
6063 2002-05-17 Fernando Perez <fperez@colorado.edu>
6058
6064
6059 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
6065 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
6060 fixed it to set the global 'g' also to the called instance, as
6066 fixed it to set the global 'g' also to the called instance, as
6061 long as 'g' was still a gnuplot instance (so it doesn't overwrite
6067 long as 'g' was still a gnuplot instance (so it doesn't overwrite
6062 user's 'g' variables).
6068 user's 'g' variables).
6063
6069
6064 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
6070 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
6065 global variables (aliases to _ih,_oh) so that users which expect
6071 global variables (aliases to _ih,_oh) so that users which expect
6066 In[5] or Out[7] to work aren't unpleasantly surprised.
6072 In[5] or Out[7] to work aren't unpleasantly surprised.
6067 (InputList.__getslice__): new class to allow executing slices of
6073 (InputList.__getslice__): new class to allow executing slices of
6068 input history directly. Very simple class, complements the use of
6074 input history directly. Very simple class, complements the use of
6069 macros.
6075 macros.
6070
6076
6071 2002-05-16 Fernando Perez <fperez@colorado.edu>
6077 2002-05-16 Fernando Perez <fperez@colorado.edu>
6072
6078
6073 * setup.py (docdirbase): make doc directory be just doc/IPython
6079 * setup.py (docdirbase): make doc directory be just doc/IPython
6074 without version numbers, it will reduce clutter for users.
6080 without version numbers, it will reduce clutter for users.
6075
6081
6076 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
6082 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
6077 execfile call to prevent possible memory leak. See for details:
6083 execfile call to prevent possible memory leak. See for details:
6078 http://mail.python.org/pipermail/python-list/2002-February/088476.html
6084 http://mail.python.org/pipermail/python-list/2002-February/088476.html
6079
6085
6080 2002-05-15 Fernando Perez <fperez@colorado.edu>
6086 2002-05-15 Fernando Perez <fperez@colorado.edu>
6081
6087
6082 * IPython/Magic.py (Magic.magic_psource): made the object
6088 * IPython/Magic.py (Magic.magic_psource): made the object
6083 introspection names be more standard: pdoc, pdef, pfile and
6089 introspection names be more standard: pdoc, pdef, pfile and
6084 psource. They all print/page their output, and it makes
6090 psource. They all print/page their output, and it makes
6085 remembering them easier. Kept old names for compatibility as
6091 remembering them easier. Kept old names for compatibility as
6086 aliases.
6092 aliases.
6087
6093
6088 2002-05-14 Fernando Perez <fperez@colorado.edu>
6094 2002-05-14 Fernando Perez <fperez@colorado.edu>
6089
6095
6090 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
6096 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
6091 what the mouse problem was. The trick is to use gnuplot with temp
6097 what the mouse problem was. The trick is to use gnuplot with temp
6092 files and NOT with pipes (for data communication), because having
6098 files and NOT with pipes (for data communication), because having
6093 both pipes and the mouse on is bad news.
6099 both pipes and the mouse on is bad news.
6094
6100
6095 2002-05-13 Fernando Perez <fperez@colorado.edu>
6101 2002-05-13 Fernando Perez <fperez@colorado.edu>
6096
6102
6097 * IPython/Magic.py (Magic._ofind): fixed namespace order search
6103 * IPython/Magic.py (Magic._ofind): fixed namespace order search
6098 bug. Information would be reported about builtins even when
6104 bug. Information would be reported about builtins even when
6099 user-defined functions overrode them.
6105 user-defined functions overrode them.
6100
6106
6101 2002-05-11 Fernando Perez <fperez@colorado.edu>
6107 2002-05-11 Fernando Perez <fperez@colorado.edu>
6102
6108
6103 * IPython/__init__.py (__all__): removed FlexCompleter from
6109 * IPython/__init__.py (__all__): removed FlexCompleter from
6104 __all__ so that things don't fail in platforms without readline.
6110 __all__ so that things don't fail in platforms without readline.
6105
6111
6106 2002-05-10 Fernando Perez <fperez@colorado.edu>
6112 2002-05-10 Fernando Perez <fperez@colorado.edu>
6107
6113
6108 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
6114 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
6109 it requires Numeric, effectively making Numeric a dependency for
6115 it requires Numeric, effectively making Numeric a dependency for
6110 IPython.
6116 IPython.
6111
6117
6112 * Released 0.2.13
6118 * Released 0.2.13
6113
6119
6114 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
6120 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
6115 profiler interface. Now all the major options from the profiler
6121 profiler interface. Now all the major options from the profiler
6116 module are directly supported in IPython, both for single
6122 module are directly supported in IPython, both for single
6117 expressions (@prun) and for full programs (@run -p).
6123 expressions (@prun) and for full programs (@run -p).
6118
6124
6119 2002-05-09 Fernando Perez <fperez@colorado.edu>
6125 2002-05-09 Fernando Perez <fperez@colorado.edu>
6120
6126
6121 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
6127 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
6122 magic properly formatted for screen.
6128 magic properly formatted for screen.
6123
6129
6124 * setup.py (make_shortcut): Changed things to put pdf version in
6130 * setup.py (make_shortcut): Changed things to put pdf version in
6125 doc/ instead of doc/manual (had to change lyxport a bit).
6131 doc/ instead of doc/manual (had to change lyxport a bit).
6126
6132
6127 * IPython/Magic.py (Profile.string_stats): made profile runs go
6133 * IPython/Magic.py (Profile.string_stats): made profile runs go
6128 through pager (they are long and a pager allows searching, saving,
6134 through pager (they are long and a pager allows searching, saving,
6129 etc.)
6135 etc.)
6130
6136
6131 2002-05-08 Fernando Perez <fperez@colorado.edu>
6137 2002-05-08 Fernando Perez <fperez@colorado.edu>
6132
6138
6133 * Released 0.2.12
6139 * Released 0.2.12
6134
6140
6135 2002-05-06 Fernando Perez <fperez@colorado.edu>
6141 2002-05-06 Fernando Perez <fperez@colorado.edu>
6136
6142
6137 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
6143 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
6138 introduced); 'hist n1 n2' was broken.
6144 introduced); 'hist n1 n2' was broken.
6139 (Magic.magic_pdb): added optional on/off arguments to @pdb
6145 (Magic.magic_pdb): added optional on/off arguments to @pdb
6140 (Magic.magic_run): added option -i to @run, which executes code in
6146 (Magic.magic_run): added option -i to @run, which executes code in
6141 the IPython namespace instead of a clean one. Also added @irun as
6147 the IPython namespace instead of a clean one. Also added @irun as
6142 an alias to @run -i.
6148 an alias to @run -i.
6143
6149
6144 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
6150 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
6145 fixed (it didn't really do anything, the namespaces were wrong).
6151 fixed (it didn't really do anything, the namespaces were wrong).
6146
6152
6147 * IPython/Debugger.py (__init__): Added workaround for python 2.1
6153 * IPython/Debugger.py (__init__): Added workaround for python 2.1
6148
6154
6149 * IPython/__init__.py (__all__): Fixed package namespace, now
6155 * IPython/__init__.py (__all__): Fixed package namespace, now
6150 'import IPython' does give access to IPython.<all> as
6156 'import IPython' does give access to IPython.<all> as
6151 expected. Also renamed __release__ to Release.
6157 expected. Also renamed __release__ to Release.
6152
6158
6153 * IPython/Debugger.py (__license__): created new Pdb class which
6159 * IPython/Debugger.py (__license__): created new Pdb class which
6154 functions like a drop-in for the normal pdb.Pdb but does NOT
6160 functions like a drop-in for the normal pdb.Pdb but does NOT
6155 import readline by default. This way it doesn't muck up IPython's
6161 import readline by default. This way it doesn't muck up IPython's
6156 readline handling, and now tab-completion finally works in the
6162 readline handling, and now tab-completion finally works in the
6157 debugger -- sort of. It completes things globally visible, but the
6163 debugger -- sort of. It completes things globally visible, but the
6158 completer doesn't track the stack as pdb walks it. That's a bit
6164 completer doesn't track the stack as pdb walks it. That's a bit
6159 tricky, and I'll have to implement it later.
6165 tricky, and I'll have to implement it later.
6160
6166
6161 2002-05-05 Fernando Perez <fperez@colorado.edu>
6167 2002-05-05 Fernando Perez <fperez@colorado.edu>
6162
6168
6163 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
6169 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
6164 magic docstrings when printed via ? (explicit \'s were being
6170 magic docstrings when printed via ? (explicit \'s were being
6165 printed).
6171 printed).
6166
6172
6167 * IPython/ipmaker.py (make_IPython): fixed namespace
6173 * IPython/ipmaker.py (make_IPython): fixed namespace
6168 identification bug. Now variables loaded via logs or command-line
6174 identification bug. Now variables loaded via logs or command-line
6169 files are recognized in the interactive namespace by @who.
6175 files are recognized in the interactive namespace by @who.
6170
6176
6171 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
6177 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
6172 log replay system stemming from the string form of Structs.
6178 log replay system stemming from the string form of Structs.
6173
6179
6174 * IPython/Magic.py (Macro.__init__): improved macros to properly
6180 * IPython/Magic.py (Macro.__init__): improved macros to properly
6175 handle magic commands in them.
6181 handle magic commands in them.
6176 (Magic.magic_logstart): usernames are now expanded so 'logstart
6182 (Magic.magic_logstart): usernames are now expanded so 'logstart
6177 ~/mylog' now works.
6183 ~/mylog' now works.
6178
6184
6179 * IPython/iplib.py (complete): fixed bug where paths starting with
6185 * IPython/iplib.py (complete): fixed bug where paths starting with
6180 '/' would be completed as magic names.
6186 '/' would be completed as magic names.
6181
6187
6182 2002-05-04 Fernando Perez <fperez@colorado.edu>
6188 2002-05-04 Fernando Perez <fperez@colorado.edu>
6183
6189
6184 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
6190 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
6185 allow running full programs under the profiler's control.
6191 allow running full programs under the profiler's control.
6186
6192
6187 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
6193 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
6188 mode to report exceptions verbosely but without formatting
6194 mode to report exceptions verbosely but without formatting
6189 variables. This addresses the issue of ipython 'freezing' (it's
6195 variables. This addresses the issue of ipython 'freezing' (it's
6190 not frozen, but caught in an expensive formatting loop) when huge
6196 not frozen, but caught in an expensive formatting loop) when huge
6191 variables are in the context of an exception.
6197 variables are in the context of an exception.
6192 (VerboseTB.text): Added '--->' markers at line where exception was
6198 (VerboseTB.text): Added '--->' markers at line where exception was
6193 triggered. Much clearer to read, especially in NoColor modes.
6199 triggered. Much clearer to read, especially in NoColor modes.
6194
6200
6195 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
6201 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
6196 implemented in reverse when changing to the new parse_options().
6202 implemented in reverse when changing to the new parse_options().
6197
6203
6198 2002-05-03 Fernando Perez <fperez@colorado.edu>
6204 2002-05-03 Fernando Perez <fperez@colorado.edu>
6199
6205
6200 * IPython/Magic.py (Magic.parse_options): new function so that
6206 * IPython/Magic.py (Magic.parse_options): new function so that
6201 magics can parse options easier.
6207 magics can parse options easier.
6202 (Magic.magic_prun): new function similar to profile.run(),
6208 (Magic.magic_prun): new function similar to profile.run(),
6203 suggested by Chris Hart.
6209 suggested by Chris Hart.
6204 (Magic.magic_cd): fixed behavior so that it only changes if
6210 (Magic.magic_cd): fixed behavior so that it only changes if
6205 directory actually is in history.
6211 directory actually is in history.
6206
6212
6207 * IPython/usage.py (__doc__): added information about potential
6213 * IPython/usage.py (__doc__): added information about potential
6208 slowness of Verbose exception mode when there are huge data
6214 slowness of Verbose exception mode when there are huge data
6209 structures to be formatted (thanks to Archie Paulson).
6215 structures to be formatted (thanks to Archie Paulson).
6210
6216
6211 * IPython/ipmaker.py (make_IPython): Changed default logging
6217 * IPython/ipmaker.py (make_IPython): Changed default logging
6212 (when simply called with -log) to use curr_dir/ipython.log in
6218 (when simply called with -log) to use curr_dir/ipython.log in
6213 rotate mode. Fixed crash which was occuring with -log before
6219 rotate mode. Fixed crash which was occuring with -log before
6214 (thanks to Jim Boyle).
6220 (thanks to Jim Boyle).
6215
6221
6216 2002-05-01 Fernando Perez <fperez@colorado.edu>
6222 2002-05-01 Fernando Perez <fperez@colorado.edu>
6217
6223
6218 * Released 0.2.11 for these fixes (mainly the ultraTB one which
6224 * Released 0.2.11 for these fixes (mainly the ultraTB one which
6219 was nasty -- though somewhat of a corner case).
6225 was nasty -- though somewhat of a corner case).
6220
6226
6221 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
6227 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
6222 text (was a bug).
6228 text (was a bug).
6223
6229
6224 2002-04-30 Fernando Perez <fperez@colorado.edu>
6230 2002-04-30 Fernando Perez <fperez@colorado.edu>
6225
6231
6226 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
6232 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
6227 a print after ^D or ^C from the user so that the In[] prompt
6233 a print after ^D or ^C from the user so that the In[] prompt
6228 doesn't over-run the gnuplot one.
6234 doesn't over-run the gnuplot one.
6229
6235
6230 2002-04-29 Fernando Perez <fperez@colorado.edu>
6236 2002-04-29 Fernando Perez <fperez@colorado.edu>
6231
6237
6232 * Released 0.2.10
6238 * Released 0.2.10
6233
6239
6234 * IPython/__release__.py (version): get date dynamically.
6240 * IPython/__release__.py (version): get date dynamically.
6235
6241
6236 * Misc. documentation updates thanks to Arnd's comments. Also ran
6242 * Misc. documentation updates thanks to Arnd's comments. Also ran
6237 a full spellcheck on the manual (hadn't been done in a while).
6243 a full spellcheck on the manual (hadn't been done in a while).
6238
6244
6239 2002-04-27 Fernando Perez <fperez@colorado.edu>
6245 2002-04-27 Fernando Perez <fperez@colorado.edu>
6240
6246
6241 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
6247 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
6242 starting a log in mid-session would reset the input history list.
6248 starting a log in mid-session would reset the input history list.
6243
6249
6244 2002-04-26 Fernando Perez <fperez@colorado.edu>
6250 2002-04-26 Fernando Perez <fperez@colorado.edu>
6245
6251
6246 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
6252 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
6247 all files were being included in an update. Now anything in
6253 all files were being included in an update. Now anything in
6248 UserConfig that matches [A-Za-z]*.py will go (this excludes
6254 UserConfig that matches [A-Za-z]*.py will go (this excludes
6249 __init__.py)
6255 __init__.py)
6250
6256
6251 2002-04-25 Fernando Perez <fperez@colorado.edu>
6257 2002-04-25 Fernando Perez <fperez@colorado.edu>
6252
6258
6253 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
6259 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
6254 to __builtins__ so that any form of embedded or imported code can
6260 to __builtins__ so that any form of embedded or imported code can
6255 test for being inside IPython.
6261 test for being inside IPython.
6256
6262
6257 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
6263 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
6258 changed to GnuplotMagic because it's now an importable module,
6264 changed to GnuplotMagic because it's now an importable module,
6259 this makes the name follow that of the standard Gnuplot module.
6265 this makes the name follow that of the standard Gnuplot module.
6260 GnuplotMagic can now be loaded at any time in mid-session.
6266 GnuplotMagic can now be loaded at any time in mid-session.
6261
6267
6262 2002-04-24 Fernando Perez <fperez@colorado.edu>
6268 2002-04-24 Fernando Perez <fperez@colorado.edu>
6263
6269
6264 * IPython/numutils.py: removed SIUnits. It doesn't properly set
6270 * IPython/numutils.py: removed SIUnits. It doesn't properly set
6265 the globals (IPython has its own namespace) and the
6271 the globals (IPython has its own namespace) and the
6266 PhysicalQuantity stuff is much better anyway.
6272 PhysicalQuantity stuff is much better anyway.
6267
6273
6268 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
6274 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
6269 embedding example to standard user directory for
6275 embedding example to standard user directory for
6270 distribution. Also put it in the manual.
6276 distribution. Also put it in the manual.
6271
6277
6272 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
6278 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
6273 instance as first argument (so it doesn't rely on some obscure
6279 instance as first argument (so it doesn't rely on some obscure
6274 hidden global).
6280 hidden global).
6275
6281
6276 * IPython/UserConfig/ipythonrc.py: put () back in accepted
6282 * IPython/UserConfig/ipythonrc.py: put () back in accepted
6277 delimiters. While it prevents ().TAB from working, it allows
6283 delimiters. While it prevents ().TAB from working, it allows
6278 completions in open (... expressions. This is by far a more common
6284 completions in open (... expressions. This is by far a more common
6279 case.
6285 case.
6280
6286
6281 2002-04-23 Fernando Perez <fperez@colorado.edu>
6287 2002-04-23 Fernando Perez <fperez@colorado.edu>
6282
6288
6283 * IPython/Extensions/InterpreterPasteInput.py: new
6289 * IPython/Extensions/InterpreterPasteInput.py: new
6284 syntax-processing module for pasting lines with >>> or ... at the
6290 syntax-processing module for pasting lines with >>> or ... at the
6285 start.
6291 start.
6286
6292
6287 * IPython/Extensions/PhysicalQ_Interactive.py
6293 * IPython/Extensions/PhysicalQ_Interactive.py
6288 (PhysicalQuantityInteractive.__int__): fixed to work with either
6294 (PhysicalQuantityInteractive.__int__): fixed to work with either
6289 Numeric or math.
6295 Numeric or math.
6290
6296
6291 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6297 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6292 provided profiles. Now we have:
6298 provided profiles. Now we have:
6293 -math -> math module as * and cmath with its own namespace.
6299 -math -> math module as * and cmath with its own namespace.
6294 -numeric -> Numeric as *, plus gnuplot & grace
6300 -numeric -> Numeric as *, plus gnuplot & grace
6295 -physics -> same as before
6301 -physics -> same as before
6296
6302
6297 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6303 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6298 user-defined magics wouldn't be found by @magic if they were
6304 user-defined magics wouldn't be found by @magic if they were
6299 defined as class methods. Also cleaned up the namespace search
6305 defined as class methods. Also cleaned up the namespace search
6300 logic and the string building (to use %s instead of many repeated
6306 logic and the string building (to use %s instead of many repeated
6301 string adds).
6307 string adds).
6302
6308
6303 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6309 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6304 of user-defined magics to operate with class methods (cleaner, in
6310 of user-defined magics to operate with class methods (cleaner, in
6305 line with the gnuplot code).
6311 line with the gnuplot code).
6306
6312
6307 2002-04-22 Fernando Perez <fperez@colorado.edu>
6313 2002-04-22 Fernando Perez <fperez@colorado.edu>
6308
6314
6309 * setup.py: updated dependency list so that manual is updated when
6315 * setup.py: updated dependency list so that manual is updated when
6310 all included files change.
6316 all included files change.
6311
6317
6312 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6318 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6313 the delimiter removal option (the fix is ugly right now).
6319 the delimiter removal option (the fix is ugly right now).
6314
6320
6315 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6321 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6316 all of the math profile (quicker loading, no conflict between
6322 all of the math profile (quicker loading, no conflict between
6317 g-9.8 and g-gnuplot).
6323 g-9.8 and g-gnuplot).
6318
6324
6319 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6325 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6320 name of post-mortem files to IPython_crash_report.txt.
6326 name of post-mortem files to IPython_crash_report.txt.
6321
6327
6322 * Cleanup/update of the docs. Added all the new readline info and
6328 * Cleanup/update of the docs. Added all the new readline info and
6323 formatted all lists as 'real lists'.
6329 formatted all lists as 'real lists'.
6324
6330
6325 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6331 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6326 tab-completion options, since the full readline parse_and_bind is
6332 tab-completion options, since the full readline parse_and_bind is
6327 now accessible.
6333 now accessible.
6328
6334
6329 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6335 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6330 handling of readline options. Now users can specify any string to
6336 handling of readline options. Now users can specify any string to
6331 be passed to parse_and_bind(), as well as the delimiters to be
6337 be passed to parse_and_bind(), as well as the delimiters to be
6332 removed.
6338 removed.
6333 (InteractiveShell.__init__): Added __name__ to the global
6339 (InteractiveShell.__init__): Added __name__ to the global
6334 namespace so that things like Itpl which rely on its existence
6340 namespace so that things like Itpl which rely on its existence
6335 don't crash.
6341 don't crash.
6336 (InteractiveShell._prefilter): Defined the default with a _ so
6342 (InteractiveShell._prefilter): Defined the default with a _ so
6337 that prefilter() is easier to override, while the default one
6343 that prefilter() is easier to override, while the default one
6338 remains available.
6344 remains available.
6339
6345
6340 2002-04-18 Fernando Perez <fperez@colorado.edu>
6346 2002-04-18 Fernando Perez <fperez@colorado.edu>
6341
6347
6342 * Added information about pdb in the docs.
6348 * Added information about pdb in the docs.
6343
6349
6344 2002-04-17 Fernando Perez <fperez@colorado.edu>
6350 2002-04-17 Fernando Perez <fperez@colorado.edu>
6345
6351
6346 * IPython/ipmaker.py (make_IPython): added rc_override option to
6352 * IPython/ipmaker.py (make_IPython): added rc_override option to
6347 allow passing config options at creation time which may override
6353 allow passing config options at creation time which may override
6348 anything set in the config files or command line. This is
6354 anything set in the config files or command line. This is
6349 particularly useful for configuring embedded instances.
6355 particularly useful for configuring embedded instances.
6350
6356
6351 2002-04-15 Fernando Perez <fperez@colorado.edu>
6357 2002-04-15 Fernando Perez <fperez@colorado.edu>
6352
6358
6353 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6359 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6354 crash embedded instances because of the input cache falling out of
6360 crash embedded instances because of the input cache falling out of
6355 sync with the output counter.
6361 sync with the output counter.
6356
6362
6357 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6363 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6358 mode which calls pdb after an uncaught exception in IPython itself.
6364 mode which calls pdb after an uncaught exception in IPython itself.
6359
6365
6360 2002-04-14 Fernando Perez <fperez@colorado.edu>
6366 2002-04-14 Fernando Perez <fperez@colorado.edu>
6361
6367
6362 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6368 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6363 readline, fix it back after each call.
6369 readline, fix it back after each call.
6364
6370
6365 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6371 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6366 method to force all access via __call__(), which guarantees that
6372 method to force all access via __call__(), which guarantees that
6367 traceback references are properly deleted.
6373 traceback references are properly deleted.
6368
6374
6369 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6375 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6370 improve printing when pprint is in use.
6376 improve printing when pprint is in use.
6371
6377
6372 2002-04-13 Fernando Perez <fperez@colorado.edu>
6378 2002-04-13 Fernando Perez <fperez@colorado.edu>
6373
6379
6374 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6380 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6375 exceptions aren't caught anymore. If the user triggers one, he
6381 exceptions aren't caught anymore. If the user triggers one, he
6376 should know why he's doing it and it should go all the way up,
6382 should know why he's doing it and it should go all the way up,
6377 just like any other exception. So now @abort will fully kill the
6383 just like any other exception. So now @abort will fully kill the
6378 embedded interpreter and the embedding code (unless that happens
6384 embedded interpreter and the embedding code (unless that happens
6379 to catch SystemExit).
6385 to catch SystemExit).
6380
6386
6381 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6387 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6382 and a debugger() method to invoke the interactive pdb debugger
6388 and a debugger() method to invoke the interactive pdb debugger
6383 after printing exception information. Also added the corresponding
6389 after printing exception information. Also added the corresponding
6384 -pdb option and @pdb magic to control this feature, and updated
6390 -pdb option and @pdb magic to control this feature, and updated
6385 the docs. After a suggestion from Christopher Hart
6391 the docs. After a suggestion from Christopher Hart
6386 (hart-AT-caltech.edu).
6392 (hart-AT-caltech.edu).
6387
6393
6388 2002-04-12 Fernando Perez <fperez@colorado.edu>
6394 2002-04-12 Fernando Perez <fperez@colorado.edu>
6389
6395
6390 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6396 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6391 the exception handlers defined by the user (not the CrashHandler)
6397 the exception handlers defined by the user (not the CrashHandler)
6392 so that user exceptions don't trigger an ipython bug report.
6398 so that user exceptions don't trigger an ipython bug report.
6393
6399
6394 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6400 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6395 configurable (it should have always been so).
6401 configurable (it should have always been so).
6396
6402
6397 2002-03-26 Fernando Perez <fperez@colorado.edu>
6403 2002-03-26 Fernando Perez <fperez@colorado.edu>
6398
6404
6399 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6405 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6400 and there to fix embedding namespace issues. This should all be
6406 and there to fix embedding namespace issues. This should all be
6401 done in a more elegant way.
6407 done in a more elegant way.
6402
6408
6403 2002-03-25 Fernando Perez <fperez@colorado.edu>
6409 2002-03-25 Fernando Perez <fperez@colorado.edu>
6404
6410
6405 * IPython/genutils.py (get_home_dir): Try to make it work under
6411 * IPython/genutils.py (get_home_dir): Try to make it work under
6406 win9x also.
6412 win9x also.
6407
6413
6408 2002-03-20 Fernando Perez <fperez@colorado.edu>
6414 2002-03-20 Fernando Perez <fperez@colorado.edu>
6409
6415
6410 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6416 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6411 sys.displayhook untouched upon __init__.
6417 sys.displayhook untouched upon __init__.
6412
6418
6413 2002-03-19 Fernando Perez <fperez@colorado.edu>
6419 2002-03-19 Fernando Perez <fperez@colorado.edu>
6414
6420
6415 * Released 0.2.9 (for embedding bug, basically).
6421 * Released 0.2.9 (for embedding bug, basically).
6416
6422
6417 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6423 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6418 exceptions so that enclosing shell's state can be restored.
6424 exceptions so that enclosing shell's state can be restored.
6419
6425
6420 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6426 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6421 naming conventions in the .ipython/ dir.
6427 naming conventions in the .ipython/ dir.
6422
6428
6423 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6429 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6424 from delimiters list so filenames with - in them get expanded.
6430 from delimiters list so filenames with - in them get expanded.
6425
6431
6426 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6432 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6427 sys.displayhook not being properly restored after an embedded call.
6433 sys.displayhook not being properly restored after an embedded call.
6428
6434
6429 2002-03-18 Fernando Perez <fperez@colorado.edu>
6435 2002-03-18 Fernando Perez <fperez@colorado.edu>
6430
6436
6431 * Released 0.2.8
6437 * Released 0.2.8
6432
6438
6433 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6439 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6434 some files weren't being included in a -upgrade.
6440 some files weren't being included in a -upgrade.
6435 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6441 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6436 on' so that the first tab completes.
6442 on' so that the first tab completes.
6437 (InteractiveShell.handle_magic): fixed bug with spaces around
6443 (InteractiveShell.handle_magic): fixed bug with spaces around
6438 quotes breaking many magic commands.
6444 quotes breaking many magic commands.
6439
6445
6440 * setup.py: added note about ignoring the syntax error messages at
6446 * setup.py: added note about ignoring the syntax error messages at
6441 installation.
6447 installation.
6442
6448
6443 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6449 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6444 streamlining the gnuplot interface, now there's only one magic @gp.
6450 streamlining the gnuplot interface, now there's only one magic @gp.
6445
6451
6446 2002-03-17 Fernando Perez <fperez@colorado.edu>
6452 2002-03-17 Fernando Perez <fperez@colorado.edu>
6447
6453
6448 * IPython/UserConfig/magic_gnuplot.py: new name for the
6454 * IPython/UserConfig/magic_gnuplot.py: new name for the
6449 example-magic_pm.py file. Much enhanced system, now with a shell
6455 example-magic_pm.py file. Much enhanced system, now with a shell
6450 for communicating directly with gnuplot, one command at a time.
6456 for communicating directly with gnuplot, one command at a time.
6451
6457
6452 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6458 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6453 setting __name__=='__main__'.
6459 setting __name__=='__main__'.
6454
6460
6455 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6461 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6456 mini-shell for accessing gnuplot from inside ipython. Should
6462 mini-shell for accessing gnuplot from inside ipython. Should
6457 extend it later for grace access too. Inspired by Arnd's
6463 extend it later for grace access too. Inspired by Arnd's
6458 suggestion.
6464 suggestion.
6459
6465
6460 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6466 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6461 calling magic functions with () in their arguments. Thanks to Arnd
6467 calling magic functions with () in their arguments. Thanks to Arnd
6462 Baecker for pointing this to me.
6468 Baecker for pointing this to me.
6463
6469
6464 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6470 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6465 infinitely for integer or complex arrays (only worked with floats).
6471 infinitely for integer or complex arrays (only worked with floats).
6466
6472
6467 2002-03-16 Fernando Perez <fperez@colorado.edu>
6473 2002-03-16 Fernando Perez <fperez@colorado.edu>
6468
6474
6469 * setup.py: Merged setup and setup_windows into a single script
6475 * setup.py: Merged setup and setup_windows into a single script
6470 which properly handles things for windows users.
6476 which properly handles things for windows users.
6471
6477
6472 2002-03-15 Fernando Perez <fperez@colorado.edu>
6478 2002-03-15 Fernando Perez <fperez@colorado.edu>
6473
6479
6474 * Big change to the manual: now the magics are all automatically
6480 * Big change to the manual: now the magics are all automatically
6475 documented. This information is generated from their docstrings
6481 documented. This information is generated from their docstrings
6476 and put in a latex file included by the manual lyx file. This way
6482 and put in a latex file included by the manual lyx file. This way
6477 we get always up to date information for the magics. The manual
6483 we get always up to date information for the magics. The manual
6478 now also has proper version information, also auto-synced.
6484 now also has proper version information, also auto-synced.
6479
6485
6480 For this to work, an undocumented --magic_docstrings option was added.
6486 For this to work, an undocumented --magic_docstrings option was added.
6481
6487
6482 2002-03-13 Fernando Perez <fperez@colorado.edu>
6488 2002-03-13 Fernando Perez <fperez@colorado.edu>
6483
6489
6484 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6490 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6485 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6491 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6486
6492
6487 2002-03-12 Fernando Perez <fperez@colorado.edu>
6493 2002-03-12 Fernando Perez <fperez@colorado.edu>
6488
6494
6489 * IPython/ultraTB.py (TermColors): changed color escapes again to
6495 * IPython/ultraTB.py (TermColors): changed color escapes again to
6490 fix the (old, reintroduced) line-wrapping bug. Basically, if
6496 fix the (old, reintroduced) line-wrapping bug. Basically, if
6491 \001..\002 aren't given in the color escapes, lines get wrapped
6497 \001..\002 aren't given in the color escapes, lines get wrapped
6492 weirdly. But giving those screws up old xterms and emacs terms. So
6498 weirdly. But giving those screws up old xterms and emacs terms. So
6493 I added some logic for emacs terms to be ok, but I can't identify old
6499 I added some logic for emacs terms to be ok, but I can't identify old
6494 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6500 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6495
6501
6496 2002-03-10 Fernando Perez <fperez@colorado.edu>
6502 2002-03-10 Fernando Perez <fperez@colorado.edu>
6497
6503
6498 * IPython/usage.py (__doc__): Various documentation cleanups and
6504 * IPython/usage.py (__doc__): Various documentation cleanups and
6499 updates, both in usage docstrings and in the manual.
6505 updates, both in usage docstrings and in the manual.
6500
6506
6501 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6507 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6502 handling of caching. Set minimum acceptabe value for having a
6508 handling of caching. Set minimum acceptabe value for having a
6503 cache at 20 values.
6509 cache at 20 values.
6504
6510
6505 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6511 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6506 install_first_time function to a method, renamed it and added an
6512 install_first_time function to a method, renamed it and added an
6507 'upgrade' mode. Now people can update their config directory with
6513 'upgrade' mode. Now people can update their config directory with
6508 a simple command line switch (-upgrade, also new).
6514 a simple command line switch (-upgrade, also new).
6509
6515
6510 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6516 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6511 @file (convenient for automagic users under Python >= 2.2).
6517 @file (convenient for automagic users under Python >= 2.2).
6512 Removed @files (it seemed more like a plural than an abbrev. of
6518 Removed @files (it seemed more like a plural than an abbrev. of
6513 'file show').
6519 'file show').
6514
6520
6515 * IPython/iplib.py (install_first_time): Fixed crash if there were
6521 * IPython/iplib.py (install_first_time): Fixed crash if there were
6516 backup files ('~') in .ipython/ install directory.
6522 backup files ('~') in .ipython/ install directory.
6517
6523
6518 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6524 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6519 system. Things look fine, but these changes are fairly
6525 system. Things look fine, but these changes are fairly
6520 intrusive. Test them for a few days.
6526 intrusive. Test them for a few days.
6521
6527
6522 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6528 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6523 the prompts system. Now all in/out prompt strings are user
6529 the prompts system. Now all in/out prompt strings are user
6524 controllable. This is particularly useful for embedding, as one
6530 controllable. This is particularly useful for embedding, as one
6525 can tag embedded instances with particular prompts.
6531 can tag embedded instances with particular prompts.
6526
6532
6527 Also removed global use of sys.ps1/2, which now allows nested
6533 Also removed global use of sys.ps1/2, which now allows nested
6528 embeddings without any problems. Added command-line options for
6534 embeddings without any problems. Added command-line options for
6529 the prompt strings.
6535 the prompt strings.
6530
6536
6531 2002-03-08 Fernando Perez <fperez@colorado.edu>
6537 2002-03-08 Fernando Perez <fperez@colorado.edu>
6532
6538
6533 * IPython/UserConfig/example-embed-short.py (ipshell): added
6539 * IPython/UserConfig/example-embed-short.py (ipshell): added
6534 example file with the bare minimum code for embedding.
6540 example file with the bare minimum code for embedding.
6535
6541
6536 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6542 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6537 functionality for the embeddable shell to be activated/deactivated
6543 functionality for the embeddable shell to be activated/deactivated
6538 either globally or at each call.
6544 either globally or at each call.
6539
6545
6540 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6546 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6541 rewriting the prompt with '--->' for auto-inputs with proper
6547 rewriting the prompt with '--->' for auto-inputs with proper
6542 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6548 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6543 this is handled by the prompts class itself, as it should.
6549 this is handled by the prompts class itself, as it should.
6544
6550
6545 2002-03-05 Fernando Perez <fperez@colorado.edu>
6551 2002-03-05 Fernando Perez <fperez@colorado.edu>
6546
6552
6547 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6553 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6548 @logstart to avoid name clashes with the math log function.
6554 @logstart to avoid name clashes with the math log function.
6549
6555
6550 * Big updates to X/Emacs section of the manual.
6556 * Big updates to X/Emacs section of the manual.
6551
6557
6552 * Removed ipython_emacs. Milan explained to me how to pass
6558 * Removed ipython_emacs. Milan explained to me how to pass
6553 arguments to ipython through Emacs. Some day I'm going to end up
6559 arguments to ipython through Emacs. Some day I'm going to end up
6554 learning some lisp...
6560 learning some lisp...
6555
6561
6556 2002-03-04 Fernando Perez <fperez@colorado.edu>
6562 2002-03-04 Fernando Perez <fperez@colorado.edu>
6557
6563
6558 * IPython/ipython_emacs: Created script to be used as the
6564 * IPython/ipython_emacs: Created script to be used as the
6559 py-python-command Emacs variable so we can pass IPython
6565 py-python-command Emacs variable so we can pass IPython
6560 parameters. I can't figure out how to tell Emacs directly to pass
6566 parameters. I can't figure out how to tell Emacs directly to pass
6561 parameters to IPython, so a dummy shell script will do it.
6567 parameters to IPython, so a dummy shell script will do it.
6562
6568
6563 Other enhancements made for things to work better under Emacs'
6569 Other enhancements made for things to work better under Emacs'
6564 various types of terminals. Many thanks to Milan Zamazal
6570 various types of terminals. Many thanks to Milan Zamazal
6565 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6571 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6566
6572
6567 2002-03-01 Fernando Perez <fperez@colorado.edu>
6573 2002-03-01 Fernando Perez <fperez@colorado.edu>
6568
6574
6569 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6575 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6570 that loading of readline is now optional. This gives better
6576 that loading of readline is now optional. This gives better
6571 control to emacs users.
6577 control to emacs users.
6572
6578
6573 * IPython/ultraTB.py (__date__): Modified color escape sequences
6579 * IPython/ultraTB.py (__date__): Modified color escape sequences
6574 and now things work fine under xterm and in Emacs' term buffers
6580 and now things work fine under xterm and in Emacs' term buffers
6575 (though not shell ones). Well, in emacs you get colors, but all
6581 (though not shell ones). Well, in emacs you get colors, but all
6576 seem to be 'light' colors (no difference between dark and light
6582 seem to be 'light' colors (no difference between dark and light
6577 ones). But the garbage chars are gone, and also in xterms. It
6583 ones). But the garbage chars are gone, and also in xterms. It
6578 seems that now I'm using 'cleaner' ansi sequences.
6584 seems that now I'm using 'cleaner' ansi sequences.
6579
6585
6580 2002-02-21 Fernando Perez <fperez@colorado.edu>
6586 2002-02-21 Fernando Perez <fperez@colorado.edu>
6581
6587
6582 * Released 0.2.7 (mainly to publish the scoping fix).
6588 * Released 0.2.7 (mainly to publish the scoping fix).
6583
6589
6584 * IPython/Logger.py (Logger.logstate): added. A corresponding
6590 * IPython/Logger.py (Logger.logstate): added. A corresponding
6585 @logstate magic was created.
6591 @logstate magic was created.
6586
6592
6587 * IPython/Magic.py: fixed nested scoping problem under Python
6593 * IPython/Magic.py: fixed nested scoping problem under Python
6588 2.1.x (automagic wasn't working).
6594 2.1.x (automagic wasn't working).
6589
6595
6590 2002-02-20 Fernando Perez <fperez@colorado.edu>
6596 2002-02-20 Fernando Perez <fperez@colorado.edu>
6591
6597
6592 * Released 0.2.6.
6598 * Released 0.2.6.
6593
6599
6594 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6600 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6595 option so that logs can come out without any headers at all.
6601 option so that logs can come out without any headers at all.
6596
6602
6597 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6603 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6598 SciPy.
6604 SciPy.
6599
6605
6600 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6606 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6601 that embedded IPython calls don't require vars() to be explicitly
6607 that embedded IPython calls don't require vars() to be explicitly
6602 passed. Now they are extracted from the caller's frame (code
6608 passed. Now they are extracted from the caller's frame (code
6603 snatched from Eric Jones' weave). Added better documentation to
6609 snatched from Eric Jones' weave). Added better documentation to
6604 the section on embedding and the example file.
6610 the section on embedding and the example file.
6605
6611
6606 * IPython/genutils.py (page): Changed so that under emacs, it just
6612 * IPython/genutils.py (page): Changed so that under emacs, it just
6607 prints the string. You can then page up and down in the emacs
6613 prints the string. You can then page up and down in the emacs
6608 buffer itself. This is how the builtin help() works.
6614 buffer itself. This is how the builtin help() works.
6609
6615
6610 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6616 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6611 macro scoping: macros need to be executed in the user's namespace
6617 macro scoping: macros need to be executed in the user's namespace
6612 to work as if they had been typed by the user.
6618 to work as if they had been typed by the user.
6613
6619
6614 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6620 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6615 execute automatically (no need to type 'exec...'). They then
6621 execute automatically (no need to type 'exec...'). They then
6616 behave like 'true macros'. The printing system was also modified
6622 behave like 'true macros'. The printing system was also modified
6617 for this to work.
6623 for this to work.
6618
6624
6619 2002-02-19 Fernando Perez <fperez@colorado.edu>
6625 2002-02-19 Fernando Perez <fperez@colorado.edu>
6620
6626
6621 * IPython/genutils.py (page_file): new function for paging files
6627 * IPython/genutils.py (page_file): new function for paging files
6622 in an OS-independent way. Also necessary for file viewing to work
6628 in an OS-independent way. Also necessary for file viewing to work
6623 well inside Emacs buffers.
6629 well inside Emacs buffers.
6624 (page): Added checks for being in an emacs buffer.
6630 (page): Added checks for being in an emacs buffer.
6625 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6631 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6626 same bug in iplib.
6632 same bug in iplib.
6627
6633
6628 2002-02-18 Fernando Perez <fperez@colorado.edu>
6634 2002-02-18 Fernando Perez <fperez@colorado.edu>
6629
6635
6630 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6636 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6631 of readline so that IPython can work inside an Emacs buffer.
6637 of readline so that IPython can work inside an Emacs buffer.
6632
6638
6633 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6639 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6634 method signatures (they weren't really bugs, but it looks cleaner
6640 method signatures (they weren't really bugs, but it looks cleaner
6635 and keeps PyChecker happy).
6641 and keeps PyChecker happy).
6636
6642
6637 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6643 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6638 for implementing various user-defined hooks. Currently only
6644 for implementing various user-defined hooks. Currently only
6639 display is done.
6645 display is done.
6640
6646
6641 * IPython/Prompts.py (CachedOutput._display): changed display
6647 * IPython/Prompts.py (CachedOutput._display): changed display
6642 functions so that they can be dynamically changed by users easily.
6648 functions so that they can be dynamically changed by users easily.
6643
6649
6644 * IPython/Extensions/numeric_formats.py (num_display): added an
6650 * IPython/Extensions/numeric_formats.py (num_display): added an
6645 extension for printing NumPy arrays in flexible manners. It
6651 extension for printing NumPy arrays in flexible manners. It
6646 doesn't do anything yet, but all the structure is in
6652 doesn't do anything yet, but all the structure is in
6647 place. Ultimately the plan is to implement output format control
6653 place. Ultimately the plan is to implement output format control
6648 like in Octave.
6654 like in Octave.
6649
6655
6650 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6656 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6651 methods are found at run-time by all the automatic machinery.
6657 methods are found at run-time by all the automatic machinery.
6652
6658
6653 2002-02-17 Fernando Perez <fperez@colorado.edu>
6659 2002-02-17 Fernando Perez <fperez@colorado.edu>
6654
6660
6655 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6661 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6656 whole file a little.
6662 whole file a little.
6657
6663
6658 * ToDo: closed this document. Now there's a new_design.lyx
6664 * ToDo: closed this document. Now there's a new_design.lyx
6659 document for all new ideas. Added making a pdf of it for the
6665 document for all new ideas. Added making a pdf of it for the
6660 end-user distro.
6666 end-user distro.
6661
6667
6662 * IPython/Logger.py (Logger.switch_log): Created this to replace
6668 * IPython/Logger.py (Logger.switch_log): Created this to replace
6663 logon() and logoff(). It also fixes a nasty crash reported by
6669 logon() and logoff(). It also fixes a nasty crash reported by
6664 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6670 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6665
6671
6666 * IPython/iplib.py (complete): got auto-completion to work with
6672 * IPython/iplib.py (complete): got auto-completion to work with
6667 automagic (I had wanted this for a long time).
6673 automagic (I had wanted this for a long time).
6668
6674
6669 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6675 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6670 to @file, since file() is now a builtin and clashes with automagic
6676 to @file, since file() is now a builtin and clashes with automagic
6671 for @file.
6677 for @file.
6672
6678
6673 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6679 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6674 of this was previously in iplib, which had grown to more than 2000
6680 of this was previously in iplib, which had grown to more than 2000
6675 lines, way too long. No new functionality, but it makes managing
6681 lines, way too long. No new functionality, but it makes managing
6676 the code a bit easier.
6682 the code a bit easier.
6677
6683
6678 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6684 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6679 information to crash reports.
6685 information to crash reports.
6680
6686
6681 2002-02-12 Fernando Perez <fperez@colorado.edu>
6687 2002-02-12 Fernando Perez <fperez@colorado.edu>
6682
6688
6683 * Released 0.2.5.
6689 * Released 0.2.5.
6684
6690
6685 2002-02-11 Fernando Perez <fperez@colorado.edu>
6691 2002-02-11 Fernando Perez <fperez@colorado.edu>
6686
6692
6687 * Wrote a relatively complete Windows installer. It puts
6693 * Wrote a relatively complete Windows installer. It puts
6688 everything in place, creates Start Menu entries and fixes the
6694 everything in place, creates Start Menu entries and fixes the
6689 color issues. Nothing fancy, but it works.
6695 color issues. Nothing fancy, but it works.
6690
6696
6691 2002-02-10 Fernando Perez <fperez@colorado.edu>
6697 2002-02-10 Fernando Perez <fperez@colorado.edu>
6692
6698
6693 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6699 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6694 os.path.expanduser() call so that we can type @run ~/myfile.py and
6700 os.path.expanduser() call so that we can type @run ~/myfile.py and
6695 have thigs work as expected.
6701 have thigs work as expected.
6696
6702
6697 * IPython/genutils.py (page): fixed exception handling so things
6703 * IPython/genutils.py (page): fixed exception handling so things
6698 work both in Unix and Windows correctly. Quitting a pager triggers
6704 work both in Unix and Windows correctly. Quitting a pager triggers
6699 an IOError/broken pipe in Unix, and in windows not finding a pager
6705 an IOError/broken pipe in Unix, and in windows not finding a pager
6700 is also an IOError, so I had to actually look at the return value
6706 is also an IOError, so I had to actually look at the return value
6701 of the exception, not just the exception itself. Should be ok now.
6707 of the exception, not just the exception itself. Should be ok now.
6702
6708
6703 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6709 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6704 modified to allow case-insensitive color scheme changes.
6710 modified to allow case-insensitive color scheme changes.
6705
6711
6706 2002-02-09 Fernando Perez <fperez@colorado.edu>
6712 2002-02-09 Fernando Perez <fperez@colorado.edu>
6707
6713
6708 * IPython/genutils.py (native_line_ends): new function to leave
6714 * IPython/genutils.py (native_line_ends): new function to leave
6709 user config files with os-native line-endings.
6715 user config files with os-native line-endings.
6710
6716
6711 * README and manual updates.
6717 * README and manual updates.
6712
6718
6713 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6719 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6714 instead of StringType to catch Unicode strings.
6720 instead of StringType to catch Unicode strings.
6715
6721
6716 * IPython/genutils.py (filefind): fixed bug for paths with
6722 * IPython/genutils.py (filefind): fixed bug for paths with
6717 embedded spaces (very common in Windows).
6723 embedded spaces (very common in Windows).
6718
6724
6719 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6725 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6720 files under Windows, so that they get automatically associated
6726 files under Windows, so that they get automatically associated
6721 with a text editor. Windows makes it a pain to handle
6727 with a text editor. Windows makes it a pain to handle
6722 extension-less files.
6728 extension-less files.
6723
6729
6724 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6730 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6725 warning about readline only occur for Posix. In Windows there's no
6731 warning about readline only occur for Posix. In Windows there's no
6726 way to get readline, so why bother with the warning.
6732 way to get readline, so why bother with the warning.
6727
6733
6728 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6734 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6729 for __str__ instead of dir(self), since dir() changed in 2.2.
6735 for __str__ instead of dir(self), since dir() changed in 2.2.
6730
6736
6731 * Ported to Windows! Tested on XP, I suspect it should work fine
6737 * Ported to Windows! Tested on XP, I suspect it should work fine
6732 on NT/2000, but I don't think it will work on 98 et al. That
6738 on NT/2000, but I don't think it will work on 98 et al. That
6733 series of Windows is such a piece of junk anyway that I won't try
6739 series of Windows is such a piece of junk anyway that I won't try
6734 porting it there. The XP port was straightforward, showed a few
6740 porting it there. The XP port was straightforward, showed a few
6735 bugs here and there (fixed all), in particular some string
6741 bugs here and there (fixed all), in particular some string
6736 handling stuff which required considering Unicode strings (which
6742 handling stuff which required considering Unicode strings (which
6737 Windows uses). This is good, but hasn't been too tested :) No
6743 Windows uses). This is good, but hasn't been too tested :) No
6738 fancy installer yet, I'll put a note in the manual so people at
6744 fancy installer yet, I'll put a note in the manual so people at
6739 least make manually a shortcut.
6745 least make manually a shortcut.
6740
6746
6741 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6747 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6742 into a single one, "colors". This now controls both prompt and
6748 into a single one, "colors". This now controls both prompt and
6743 exception color schemes, and can be changed both at startup
6749 exception color schemes, and can be changed both at startup
6744 (either via command-line switches or via ipythonrc files) and at
6750 (either via command-line switches or via ipythonrc files) and at
6745 runtime, with @colors.
6751 runtime, with @colors.
6746 (Magic.magic_run): renamed @prun to @run and removed the old
6752 (Magic.magic_run): renamed @prun to @run and removed the old
6747 @run. The two were too similar to warrant keeping both.
6753 @run. The two were too similar to warrant keeping both.
6748
6754
6749 2002-02-03 Fernando Perez <fperez@colorado.edu>
6755 2002-02-03 Fernando Perez <fperez@colorado.edu>
6750
6756
6751 * IPython/iplib.py (install_first_time): Added comment on how to
6757 * IPython/iplib.py (install_first_time): Added comment on how to
6752 configure the color options for first-time users. Put a <return>
6758 configure the color options for first-time users. Put a <return>
6753 request at the end so that small-terminal users get a chance to
6759 request at the end so that small-terminal users get a chance to
6754 read the startup info.
6760 read the startup info.
6755
6761
6756 2002-01-23 Fernando Perez <fperez@colorado.edu>
6762 2002-01-23 Fernando Perez <fperez@colorado.edu>
6757
6763
6758 * IPython/iplib.py (CachedOutput.update): Changed output memory
6764 * IPython/iplib.py (CachedOutput.update): Changed output memory
6759 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6765 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6760 input history we still use _i. Did this b/c these variable are
6766 input history we still use _i. Did this b/c these variable are
6761 very commonly used in interactive work, so the less we need to
6767 very commonly used in interactive work, so the less we need to
6762 type the better off we are.
6768 type the better off we are.
6763 (Magic.magic_prun): updated @prun to better handle the namespaces
6769 (Magic.magic_prun): updated @prun to better handle the namespaces
6764 the file will run in, including a fix for __name__ not being set
6770 the file will run in, including a fix for __name__ not being set
6765 before.
6771 before.
6766
6772
6767 2002-01-20 Fernando Perez <fperez@colorado.edu>
6773 2002-01-20 Fernando Perez <fperez@colorado.edu>
6768
6774
6769 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6775 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6770 extra garbage for Python 2.2. Need to look more carefully into
6776 extra garbage for Python 2.2. Need to look more carefully into
6771 this later.
6777 this later.
6772
6778
6773 2002-01-19 Fernando Perez <fperez@colorado.edu>
6779 2002-01-19 Fernando Perez <fperez@colorado.edu>
6774
6780
6775 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6781 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6776 display SyntaxError exceptions properly formatted when they occur
6782 display SyntaxError exceptions properly formatted when they occur
6777 (they can be triggered by imported code).
6783 (they can be triggered by imported code).
6778
6784
6779 2002-01-18 Fernando Perez <fperez@colorado.edu>
6785 2002-01-18 Fernando Perez <fperez@colorado.edu>
6780
6786
6781 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6787 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6782 SyntaxError exceptions are reported nicely formatted, instead of
6788 SyntaxError exceptions are reported nicely formatted, instead of
6783 spitting out only offset information as before.
6789 spitting out only offset information as before.
6784 (Magic.magic_prun): Added the @prun function for executing
6790 (Magic.magic_prun): Added the @prun function for executing
6785 programs with command line args inside IPython.
6791 programs with command line args inside IPython.
6786
6792
6787 2002-01-16 Fernando Perez <fperez@colorado.edu>
6793 2002-01-16 Fernando Perez <fperez@colorado.edu>
6788
6794
6789 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6795 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6790 to *not* include the last item given in a range. This brings their
6796 to *not* include the last item given in a range. This brings their
6791 behavior in line with Python's slicing:
6797 behavior in line with Python's slicing:
6792 a[n1:n2] -> a[n1]...a[n2-1]
6798 a[n1:n2] -> a[n1]...a[n2-1]
6793 It may be a bit less convenient, but I prefer to stick to Python's
6799 It may be a bit less convenient, but I prefer to stick to Python's
6794 conventions *everywhere*, so users never have to wonder.
6800 conventions *everywhere*, so users never have to wonder.
6795 (Magic.magic_macro): Added @macro function to ease the creation of
6801 (Magic.magic_macro): Added @macro function to ease the creation of
6796 macros.
6802 macros.
6797
6803
6798 2002-01-05 Fernando Perez <fperez@colorado.edu>
6804 2002-01-05 Fernando Perez <fperez@colorado.edu>
6799
6805
6800 * Released 0.2.4.
6806 * Released 0.2.4.
6801
6807
6802 * IPython/iplib.py (Magic.magic_pdef):
6808 * IPython/iplib.py (Magic.magic_pdef):
6803 (InteractiveShell.safe_execfile): report magic lines and error
6809 (InteractiveShell.safe_execfile): report magic lines and error
6804 lines without line numbers so one can easily copy/paste them for
6810 lines without line numbers so one can easily copy/paste them for
6805 re-execution.
6811 re-execution.
6806
6812
6807 * Updated manual with recent changes.
6813 * Updated manual with recent changes.
6808
6814
6809 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6815 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6810 docstring printing when class? is called. Very handy for knowing
6816 docstring printing when class? is called. Very handy for knowing
6811 how to create class instances (as long as __init__ is well
6817 how to create class instances (as long as __init__ is well
6812 documented, of course :)
6818 documented, of course :)
6813 (Magic.magic_doc): print both class and constructor docstrings.
6819 (Magic.magic_doc): print both class and constructor docstrings.
6814 (Magic.magic_pdef): give constructor info if passed a class and
6820 (Magic.magic_pdef): give constructor info if passed a class and
6815 __call__ info for callable object instances.
6821 __call__ info for callable object instances.
6816
6822
6817 2002-01-04 Fernando Perez <fperez@colorado.edu>
6823 2002-01-04 Fernando Perez <fperez@colorado.edu>
6818
6824
6819 * Made deep_reload() off by default. It doesn't always work
6825 * Made deep_reload() off by default. It doesn't always work
6820 exactly as intended, so it's probably safer to have it off. It's
6826 exactly as intended, so it's probably safer to have it off. It's
6821 still available as dreload() anyway, so nothing is lost.
6827 still available as dreload() anyway, so nothing is lost.
6822
6828
6823 2002-01-02 Fernando Perez <fperez@colorado.edu>
6829 2002-01-02 Fernando Perez <fperez@colorado.edu>
6824
6830
6825 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6831 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6826 so I wanted an updated release).
6832 so I wanted an updated release).
6827
6833
6828 2001-12-27 Fernando Perez <fperez@colorado.edu>
6834 2001-12-27 Fernando Perez <fperez@colorado.edu>
6829
6835
6830 * IPython/iplib.py (InteractiveShell.interact): Added the original
6836 * IPython/iplib.py (InteractiveShell.interact): Added the original
6831 code from 'code.py' for this module in order to change the
6837 code from 'code.py' for this module in order to change the
6832 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6838 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6833 the history cache would break when the user hit Ctrl-C, and
6839 the history cache would break when the user hit Ctrl-C, and
6834 interact() offers no way to add any hooks to it.
6840 interact() offers no way to add any hooks to it.
6835
6841
6836 2001-12-23 Fernando Perez <fperez@colorado.edu>
6842 2001-12-23 Fernando Perez <fperez@colorado.edu>
6837
6843
6838 * setup.py: added check for 'MANIFEST' before trying to remove
6844 * setup.py: added check for 'MANIFEST' before trying to remove
6839 it. Thanks to Sean Reifschneider.
6845 it. Thanks to Sean Reifschneider.
6840
6846
6841 2001-12-22 Fernando Perez <fperez@colorado.edu>
6847 2001-12-22 Fernando Perez <fperez@colorado.edu>
6842
6848
6843 * Released 0.2.2.
6849 * Released 0.2.2.
6844
6850
6845 * Finished (reasonably) writing the manual. Later will add the
6851 * Finished (reasonably) writing the manual. Later will add the
6846 python-standard navigation stylesheets, but for the time being
6852 python-standard navigation stylesheets, but for the time being
6847 it's fairly complete. Distribution will include html and pdf
6853 it's fairly complete. Distribution will include html and pdf
6848 versions.
6854 versions.
6849
6855
6850 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6856 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6851 (MayaVi author).
6857 (MayaVi author).
6852
6858
6853 2001-12-21 Fernando Perez <fperez@colorado.edu>
6859 2001-12-21 Fernando Perez <fperez@colorado.edu>
6854
6860
6855 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6861 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6856 good public release, I think (with the manual and the distutils
6862 good public release, I think (with the manual and the distutils
6857 installer). The manual can use some work, but that can go
6863 installer). The manual can use some work, but that can go
6858 slowly. Otherwise I think it's quite nice for end users. Next
6864 slowly. Otherwise I think it's quite nice for end users. Next
6859 summer, rewrite the guts of it...
6865 summer, rewrite the guts of it...
6860
6866
6861 * Changed format of ipythonrc files to use whitespace as the
6867 * Changed format of ipythonrc files to use whitespace as the
6862 separator instead of an explicit '='. Cleaner.
6868 separator instead of an explicit '='. Cleaner.
6863
6869
6864 2001-12-20 Fernando Perez <fperez@colorado.edu>
6870 2001-12-20 Fernando Perez <fperez@colorado.edu>
6865
6871
6866 * Started a manual in LyX. For now it's just a quick merge of the
6872 * Started a manual in LyX. For now it's just a quick merge of the
6867 various internal docstrings and READMEs. Later it may grow into a
6873 various internal docstrings and READMEs. Later it may grow into a
6868 nice, full-blown manual.
6874 nice, full-blown manual.
6869
6875
6870 * Set up a distutils based installer. Installation should now be
6876 * Set up a distutils based installer. Installation should now be
6871 trivially simple for end-users.
6877 trivially simple for end-users.
6872
6878
6873 2001-12-11 Fernando Perez <fperez@colorado.edu>
6879 2001-12-11 Fernando Perez <fperez@colorado.edu>
6874
6880
6875 * Released 0.2.0. First public release, announced it at
6881 * Released 0.2.0. First public release, announced it at
6876 comp.lang.python. From now on, just bugfixes...
6882 comp.lang.python. From now on, just bugfixes...
6877
6883
6878 * Went through all the files, set copyright/license notices and
6884 * Went through all the files, set copyright/license notices and
6879 cleaned up things. Ready for release.
6885 cleaned up things. Ready for release.
6880
6886
6881 2001-12-10 Fernando Perez <fperez@colorado.edu>
6887 2001-12-10 Fernando Perez <fperez@colorado.edu>
6882
6888
6883 * Changed the first-time installer not to use tarfiles. It's more
6889 * Changed the first-time installer not to use tarfiles. It's more
6884 robust now and less unix-dependent. Also makes it easier for
6890 robust now and less unix-dependent. Also makes it easier for
6885 people to later upgrade versions.
6891 people to later upgrade versions.
6886
6892
6887 * Changed @exit to @abort to reflect the fact that it's pretty
6893 * Changed @exit to @abort to reflect the fact that it's pretty
6888 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6894 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6889 becomes significant only when IPyhton is embedded: in that case,
6895 becomes significant only when IPyhton is embedded: in that case,
6890 C-D closes IPython only, but @abort kills the enclosing program
6896 C-D closes IPython only, but @abort kills the enclosing program
6891 too (unless it had called IPython inside a try catching
6897 too (unless it had called IPython inside a try catching
6892 SystemExit).
6898 SystemExit).
6893
6899
6894 * Created Shell module which exposes the actuall IPython Shell
6900 * Created Shell module which exposes the actuall IPython Shell
6895 classes, currently the normal and the embeddable one. This at
6901 classes, currently the normal and the embeddable one. This at
6896 least offers a stable interface we won't need to change when
6902 least offers a stable interface we won't need to change when
6897 (later) the internals are rewritten. That rewrite will be confined
6903 (later) the internals are rewritten. That rewrite will be confined
6898 to iplib and ipmaker, but the Shell interface should remain as is.
6904 to iplib and ipmaker, but the Shell interface should remain as is.
6899
6905
6900 * Added embed module which offers an embeddable IPShell object,
6906 * Added embed module which offers an embeddable IPShell object,
6901 useful to fire up IPython *inside* a running program. Great for
6907 useful to fire up IPython *inside* a running program. Great for
6902 debugging or dynamical data analysis.
6908 debugging or dynamical data analysis.
6903
6909
6904 2001-12-08 Fernando Perez <fperez@colorado.edu>
6910 2001-12-08 Fernando Perez <fperez@colorado.edu>
6905
6911
6906 * Fixed small bug preventing seeing info from methods of defined
6912 * Fixed small bug preventing seeing info from methods of defined
6907 objects (incorrect namespace in _ofind()).
6913 objects (incorrect namespace in _ofind()).
6908
6914
6909 * Documentation cleanup. Moved the main usage docstrings to a
6915 * Documentation cleanup. Moved the main usage docstrings to a
6910 separate file, usage.py (cleaner to maintain, and hopefully in the
6916 separate file, usage.py (cleaner to maintain, and hopefully in the
6911 future some perlpod-like way of producing interactive, man and
6917 future some perlpod-like way of producing interactive, man and
6912 html docs out of it will be found).
6918 html docs out of it will be found).
6913
6919
6914 * Added @profile to see your profile at any time.
6920 * Added @profile to see your profile at any time.
6915
6921
6916 * Added @p as an alias for 'print'. It's especially convenient if
6922 * Added @p as an alias for 'print'. It's especially convenient if
6917 using automagic ('p x' prints x).
6923 using automagic ('p x' prints x).
6918
6924
6919 * Small cleanups and fixes after a pychecker run.
6925 * Small cleanups and fixes after a pychecker run.
6920
6926
6921 * Changed the @cd command to handle @cd - and @cd -<n> for
6927 * Changed the @cd command to handle @cd - and @cd -<n> for
6922 visiting any directory in _dh.
6928 visiting any directory in _dh.
6923
6929
6924 * Introduced _dh, a history of visited directories. @dhist prints
6930 * Introduced _dh, a history of visited directories. @dhist prints
6925 it out with numbers.
6931 it out with numbers.
6926
6932
6927 2001-12-07 Fernando Perez <fperez@colorado.edu>
6933 2001-12-07 Fernando Perez <fperez@colorado.edu>
6928
6934
6929 * Released 0.1.22
6935 * Released 0.1.22
6930
6936
6931 * Made initialization a bit more robust against invalid color
6937 * Made initialization a bit more robust against invalid color
6932 options in user input (exit, not traceback-crash).
6938 options in user input (exit, not traceback-crash).
6933
6939
6934 * Changed the bug crash reporter to write the report only in the
6940 * Changed the bug crash reporter to write the report only in the
6935 user's .ipython directory. That way IPython won't litter people's
6941 user's .ipython directory. That way IPython won't litter people's
6936 hard disks with crash files all over the place. Also print on
6942 hard disks with crash files all over the place. Also print on
6937 screen the necessary mail command.
6943 screen the necessary mail command.
6938
6944
6939 * With the new ultraTB, implemented LightBG color scheme for light
6945 * With the new ultraTB, implemented LightBG color scheme for light
6940 background terminals. A lot of people like white backgrounds, so I
6946 background terminals. A lot of people like white backgrounds, so I
6941 guess we should at least give them something readable.
6947 guess we should at least give them something readable.
6942
6948
6943 2001-12-06 Fernando Perez <fperez@colorado.edu>
6949 2001-12-06 Fernando Perez <fperez@colorado.edu>
6944
6950
6945 * Modified the structure of ultraTB. Now there's a proper class
6951 * Modified the structure of ultraTB. Now there's a proper class
6946 for tables of color schemes which allow adding schemes easily and
6952 for tables of color schemes which allow adding schemes easily and
6947 switching the active scheme without creating a new instance every
6953 switching the active scheme without creating a new instance every
6948 time (which was ridiculous). The syntax for creating new schemes
6954 time (which was ridiculous). The syntax for creating new schemes
6949 is also cleaner. I think ultraTB is finally done, with a clean
6955 is also cleaner. I think ultraTB is finally done, with a clean
6950 class structure. Names are also much cleaner (now there's proper
6956 class structure. Names are also much cleaner (now there's proper
6951 color tables, no need for every variable to also have 'color' in
6957 color tables, no need for every variable to also have 'color' in
6952 its name).
6958 its name).
6953
6959
6954 * Broke down genutils into separate files. Now genutils only
6960 * Broke down genutils into separate files. Now genutils only
6955 contains utility functions, and classes have been moved to their
6961 contains utility functions, and classes have been moved to their
6956 own files (they had enough independent functionality to warrant
6962 own files (they had enough independent functionality to warrant
6957 it): ConfigLoader, OutputTrap, Struct.
6963 it): ConfigLoader, OutputTrap, Struct.
6958
6964
6959 2001-12-05 Fernando Perez <fperez@colorado.edu>
6965 2001-12-05 Fernando Perez <fperez@colorado.edu>
6960
6966
6961 * IPython turns 21! Released version 0.1.21, as a candidate for
6967 * IPython turns 21! Released version 0.1.21, as a candidate for
6962 public consumption. If all goes well, release in a few days.
6968 public consumption. If all goes well, release in a few days.
6963
6969
6964 * Fixed path bug (files in Extensions/ directory wouldn't be found
6970 * Fixed path bug (files in Extensions/ directory wouldn't be found
6965 unless IPython/ was explicitly in sys.path).
6971 unless IPython/ was explicitly in sys.path).
6966
6972
6967 * Extended the FlexCompleter class as MagicCompleter to allow
6973 * Extended the FlexCompleter class as MagicCompleter to allow
6968 completion of @-starting lines.
6974 completion of @-starting lines.
6969
6975
6970 * Created __release__.py file as a central repository for release
6976 * Created __release__.py file as a central repository for release
6971 info that other files can read from.
6977 info that other files can read from.
6972
6978
6973 * Fixed small bug in logging: when logging was turned on in
6979 * Fixed small bug in logging: when logging was turned on in
6974 mid-session, old lines with special meanings (!@?) were being
6980 mid-session, old lines with special meanings (!@?) were being
6975 logged without the prepended comment, which is necessary since
6981 logged without the prepended comment, which is necessary since
6976 they are not truly valid python syntax. This should make session
6982 they are not truly valid python syntax. This should make session
6977 restores produce less errors.
6983 restores produce less errors.
6978
6984
6979 * The namespace cleanup forced me to make a FlexCompleter class
6985 * The namespace cleanup forced me to make a FlexCompleter class
6980 which is nothing but a ripoff of rlcompleter, but with selectable
6986 which is nothing but a ripoff of rlcompleter, but with selectable
6981 namespace (rlcompleter only works in __main__.__dict__). I'll try
6987 namespace (rlcompleter only works in __main__.__dict__). I'll try
6982 to submit a note to the authors to see if this change can be
6988 to submit a note to the authors to see if this change can be
6983 incorporated in future rlcompleter releases (Dec.6: done)
6989 incorporated in future rlcompleter releases (Dec.6: done)
6984
6990
6985 * More fixes to namespace handling. It was a mess! Now all
6991 * More fixes to namespace handling. It was a mess! Now all
6986 explicit references to __main__.__dict__ are gone (except when
6992 explicit references to __main__.__dict__ are gone (except when
6987 really needed) and everything is handled through the namespace
6993 really needed) and everything is handled through the namespace
6988 dicts in the IPython instance. We seem to be getting somewhere
6994 dicts in the IPython instance. We seem to be getting somewhere
6989 with this, finally...
6995 with this, finally...
6990
6996
6991 * Small documentation updates.
6997 * Small documentation updates.
6992
6998
6993 * Created the Extensions directory under IPython (with an
6999 * Created the Extensions directory under IPython (with an
6994 __init__.py). Put the PhysicalQ stuff there. This directory should
7000 __init__.py). Put the PhysicalQ stuff there. This directory should
6995 be used for all special-purpose extensions.
7001 be used for all special-purpose extensions.
6996
7002
6997 * File renaming:
7003 * File renaming:
6998 ipythonlib --> ipmaker
7004 ipythonlib --> ipmaker
6999 ipplib --> iplib
7005 ipplib --> iplib
7000 This makes a bit more sense in terms of what these files actually do.
7006 This makes a bit more sense in terms of what these files actually do.
7001
7007
7002 * Moved all the classes and functions in ipythonlib to ipplib, so
7008 * Moved all the classes and functions in ipythonlib to ipplib, so
7003 now ipythonlib only has make_IPython(). This will ease up its
7009 now ipythonlib only has make_IPython(). This will ease up its
7004 splitting in smaller functional chunks later.
7010 splitting in smaller functional chunks later.
7005
7011
7006 * Cleaned up (done, I think) output of @whos. Better column
7012 * Cleaned up (done, I think) output of @whos. Better column
7007 formatting, and now shows str(var) for as much as it can, which is
7013 formatting, and now shows str(var) for as much as it can, which is
7008 typically what one gets with a 'print var'.
7014 typically what one gets with a 'print var'.
7009
7015
7010 2001-12-04 Fernando Perez <fperez@colorado.edu>
7016 2001-12-04 Fernando Perez <fperez@colorado.edu>
7011
7017
7012 * Fixed namespace problems. Now builtin/IPyhton/user names get
7018 * Fixed namespace problems. Now builtin/IPyhton/user names get
7013 properly reported in their namespace. Internal namespace handling
7019 properly reported in their namespace. Internal namespace handling
7014 is finally getting decent (not perfect yet, but much better than
7020 is finally getting decent (not perfect yet, but much better than
7015 the ad-hoc mess we had).
7021 the ad-hoc mess we had).
7016
7022
7017 * Removed -exit option. If people just want to run a python
7023 * Removed -exit option. If people just want to run a python
7018 script, that's what the normal interpreter is for. Less
7024 script, that's what the normal interpreter is for. Less
7019 unnecessary options, less chances for bugs.
7025 unnecessary options, less chances for bugs.
7020
7026
7021 * Added a crash handler which generates a complete post-mortem if
7027 * Added a crash handler which generates a complete post-mortem if
7022 IPython crashes. This will help a lot in tracking bugs down the
7028 IPython crashes. This will help a lot in tracking bugs down the
7023 road.
7029 road.
7024
7030
7025 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
7031 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
7026 which were boud to functions being reassigned would bypass the
7032 which were boud to functions being reassigned would bypass the
7027 logger, breaking the sync of _il with the prompt counter. This
7033 logger, breaking the sync of _il with the prompt counter. This
7028 would then crash IPython later when a new line was logged.
7034 would then crash IPython later when a new line was logged.
7029
7035
7030 2001-12-02 Fernando Perez <fperez@colorado.edu>
7036 2001-12-02 Fernando Perez <fperez@colorado.edu>
7031
7037
7032 * Made IPython a package. This means people don't have to clutter
7038 * Made IPython a package. This means people don't have to clutter
7033 their sys.path with yet another directory. Changed the INSTALL
7039 their sys.path with yet another directory. Changed the INSTALL
7034 file accordingly.
7040 file accordingly.
7035
7041
7036 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
7042 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
7037 sorts its output (so @who shows it sorted) and @whos formats the
7043 sorts its output (so @who shows it sorted) and @whos formats the
7038 table according to the width of the first column. Nicer, easier to
7044 table according to the width of the first column. Nicer, easier to
7039 read. Todo: write a generic table_format() which takes a list of
7045 read. Todo: write a generic table_format() which takes a list of
7040 lists and prints it nicely formatted, with optional row/column
7046 lists and prints it nicely formatted, with optional row/column
7041 separators and proper padding and justification.
7047 separators and proper padding and justification.
7042
7048
7043 * Released 0.1.20
7049 * Released 0.1.20
7044
7050
7045 * Fixed bug in @log which would reverse the inputcache list (a
7051 * Fixed bug in @log which would reverse the inputcache list (a
7046 copy operation was missing).
7052 copy operation was missing).
7047
7053
7048 * Code cleanup. @config was changed to use page(). Better, since
7054 * Code cleanup. @config was changed to use page(). Better, since
7049 its output is always quite long.
7055 its output is always quite long.
7050
7056
7051 * Itpl is back as a dependency. I was having too many problems
7057 * Itpl is back as a dependency. I was having too many problems
7052 getting the parametric aliases to work reliably, and it's just
7058 getting the parametric aliases to work reliably, and it's just
7053 easier to code weird string operations with it than playing %()s
7059 easier to code weird string operations with it than playing %()s
7054 games. It's only ~6k, so I don't think it's too big a deal.
7060 games. It's only ~6k, so I don't think it's too big a deal.
7055
7061
7056 * Found (and fixed) a very nasty bug with history. !lines weren't
7062 * Found (and fixed) a very nasty bug with history. !lines weren't
7057 getting cached, and the out of sync caches would crash
7063 getting cached, and the out of sync caches would crash
7058 IPython. Fixed it by reorganizing the prefilter/handlers/logger
7064 IPython. Fixed it by reorganizing the prefilter/handlers/logger
7059 division of labor a bit better. Bug fixed, cleaner structure.
7065 division of labor a bit better. Bug fixed, cleaner structure.
7060
7066
7061 2001-12-01 Fernando Perez <fperez@colorado.edu>
7067 2001-12-01 Fernando Perez <fperez@colorado.edu>
7062
7068
7063 * Released 0.1.19
7069 * Released 0.1.19
7064
7070
7065 * Added option -n to @hist to prevent line number printing. Much
7071 * Added option -n to @hist to prevent line number printing. Much
7066 easier to copy/paste code this way.
7072 easier to copy/paste code this way.
7067
7073
7068 * Created global _il to hold the input list. Allows easy
7074 * Created global _il to hold the input list. Allows easy
7069 re-execution of blocks of code by slicing it (inspired by Janko's
7075 re-execution of blocks of code by slicing it (inspired by Janko's
7070 comment on 'macros').
7076 comment on 'macros').
7071
7077
7072 * Small fixes and doc updates.
7078 * Small fixes and doc updates.
7073
7079
7074 * Rewrote @history function (was @h). Renamed it to @hist, @h is
7080 * Rewrote @history function (was @h). Renamed it to @hist, @h is
7075 much too fragile with automagic. Handles properly multi-line
7081 much too fragile with automagic. Handles properly multi-line
7076 statements and takes parameters.
7082 statements and takes parameters.
7077
7083
7078 2001-11-30 Fernando Perez <fperez@colorado.edu>
7084 2001-11-30 Fernando Perez <fperez@colorado.edu>
7079
7085
7080 * Version 0.1.18 released.
7086 * Version 0.1.18 released.
7081
7087
7082 * Fixed nasty namespace bug in initial module imports.
7088 * Fixed nasty namespace bug in initial module imports.
7083
7089
7084 * Added copyright/license notes to all code files (except
7090 * Added copyright/license notes to all code files (except
7085 DPyGetOpt). For the time being, LGPL. That could change.
7091 DPyGetOpt). For the time being, LGPL. That could change.
7086
7092
7087 * Rewrote a much nicer README, updated INSTALL, cleaned up
7093 * Rewrote a much nicer README, updated INSTALL, cleaned up
7088 ipythonrc-* samples.
7094 ipythonrc-* samples.
7089
7095
7090 * Overall code/documentation cleanup. Basically ready for
7096 * Overall code/documentation cleanup. Basically ready for
7091 release. Only remaining thing: licence decision (LGPL?).
7097 release. Only remaining thing: licence decision (LGPL?).
7092
7098
7093 * Converted load_config to a class, ConfigLoader. Now recursion
7099 * Converted load_config to a class, ConfigLoader. Now recursion
7094 control is better organized. Doesn't include the same file twice.
7100 control is better organized. Doesn't include the same file twice.
7095
7101
7096 2001-11-29 Fernando Perez <fperez@colorado.edu>
7102 2001-11-29 Fernando Perez <fperez@colorado.edu>
7097
7103
7098 * Got input history working. Changed output history variables from
7104 * Got input history working. Changed output history variables from
7099 _p to _o so that _i is for input and _o for output. Just cleaner
7105 _p to _o so that _i is for input and _o for output. Just cleaner
7100 convention.
7106 convention.
7101
7107
7102 * Implemented parametric aliases. This pretty much allows the
7108 * Implemented parametric aliases. This pretty much allows the
7103 alias system to offer full-blown shell convenience, I think.
7109 alias system to offer full-blown shell convenience, I think.
7104
7110
7105 * Version 0.1.17 released, 0.1.18 opened.
7111 * Version 0.1.17 released, 0.1.18 opened.
7106
7112
7107 * dot_ipython/ipythonrc (alias): added documentation.
7113 * dot_ipython/ipythonrc (alias): added documentation.
7108 (xcolor): Fixed small bug (xcolors -> xcolor)
7114 (xcolor): Fixed small bug (xcolors -> xcolor)
7109
7115
7110 * Changed the alias system. Now alias is a magic command to define
7116 * Changed the alias system. Now alias is a magic command to define
7111 aliases just like the shell. Rationale: the builtin magics should
7117 aliases just like the shell. Rationale: the builtin magics should
7112 be there for things deeply connected to IPython's
7118 be there for things deeply connected to IPython's
7113 architecture. And this is a much lighter system for what I think
7119 architecture. And this is a much lighter system for what I think
7114 is the really important feature: allowing users to define quickly
7120 is the really important feature: allowing users to define quickly
7115 magics that will do shell things for them, so they can customize
7121 magics that will do shell things for them, so they can customize
7116 IPython easily to match their work habits. If someone is really
7122 IPython easily to match their work habits. If someone is really
7117 desperate to have another name for a builtin alias, they can
7123 desperate to have another name for a builtin alias, they can
7118 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
7124 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
7119 works.
7125 works.
7120
7126
7121 2001-11-28 Fernando Perez <fperez@colorado.edu>
7127 2001-11-28 Fernando Perez <fperez@colorado.edu>
7122
7128
7123 * Changed @file so that it opens the source file at the proper
7129 * Changed @file so that it opens the source file at the proper
7124 line. Since it uses less, if your EDITOR environment is
7130 line. Since it uses less, if your EDITOR environment is
7125 configured, typing v will immediately open your editor of choice
7131 configured, typing v will immediately open your editor of choice
7126 right at the line where the object is defined. Not as quick as
7132 right at the line where the object is defined. Not as quick as
7127 having a direct @edit command, but for all intents and purposes it
7133 having a direct @edit command, but for all intents and purposes it
7128 works. And I don't have to worry about writing @edit to deal with
7134 works. And I don't have to worry about writing @edit to deal with
7129 all the editors, less does that.
7135 all the editors, less does that.
7130
7136
7131 * Version 0.1.16 released, 0.1.17 opened.
7137 * Version 0.1.16 released, 0.1.17 opened.
7132
7138
7133 * Fixed some nasty bugs in the page/page_dumb combo that could
7139 * Fixed some nasty bugs in the page/page_dumb combo that could
7134 crash IPython.
7140 crash IPython.
7135
7141
7136 2001-11-27 Fernando Perez <fperez@colorado.edu>
7142 2001-11-27 Fernando Perez <fperez@colorado.edu>
7137
7143
7138 * Version 0.1.15 released, 0.1.16 opened.
7144 * Version 0.1.15 released, 0.1.16 opened.
7139
7145
7140 * Finally got ? and ?? to work for undefined things: now it's
7146 * Finally got ? and ?? to work for undefined things: now it's
7141 possible to type {}.get? and get information about the get method
7147 possible to type {}.get? and get information about the get method
7142 of dicts, or os.path? even if only os is defined (so technically
7148 of dicts, or os.path? even if only os is defined (so technically
7143 os.path isn't). Works at any level. For example, after import os,
7149 os.path isn't). Works at any level. For example, after import os,
7144 os?, os.path?, os.path.abspath? all work. This is great, took some
7150 os?, os.path?, os.path.abspath? all work. This is great, took some
7145 work in _ofind.
7151 work in _ofind.
7146
7152
7147 * Fixed more bugs with logging. The sanest way to do it was to add
7153 * Fixed more bugs with logging. The sanest way to do it was to add
7148 to @log a 'mode' parameter. Killed two in one shot (this mode
7154 to @log a 'mode' parameter. Killed two in one shot (this mode
7149 option was a request of Janko's). I think it's finally clean
7155 option was a request of Janko's). I think it's finally clean
7150 (famous last words).
7156 (famous last words).
7151
7157
7152 * Added a page_dumb() pager which does a decent job of paging on
7158 * Added a page_dumb() pager which does a decent job of paging on
7153 screen, if better things (like less) aren't available. One less
7159 screen, if better things (like less) aren't available. One less
7154 unix dependency (someday maybe somebody will port this to
7160 unix dependency (someday maybe somebody will port this to
7155 windows).
7161 windows).
7156
7162
7157 * Fixed problem in magic_log: would lock of logging out if log
7163 * Fixed problem in magic_log: would lock of logging out if log
7158 creation failed (because it would still think it had succeeded).
7164 creation failed (because it would still think it had succeeded).
7159
7165
7160 * Improved the page() function using curses to auto-detect screen
7166 * Improved the page() function using curses to auto-detect screen
7161 size. Now it can make a much better decision on whether to print
7167 size. Now it can make a much better decision on whether to print
7162 or page a string. Option screen_length was modified: a value 0
7168 or page a string. Option screen_length was modified: a value 0
7163 means auto-detect, and that's the default now.
7169 means auto-detect, and that's the default now.
7164
7170
7165 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
7171 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
7166 go out. I'll test it for a few days, then talk to Janko about
7172 go out. I'll test it for a few days, then talk to Janko about
7167 licences and announce it.
7173 licences and announce it.
7168
7174
7169 * Fixed the length of the auto-generated ---> prompt which appears
7175 * Fixed the length of the auto-generated ---> prompt which appears
7170 for auto-parens and auto-quotes. Getting this right isn't trivial,
7176 for auto-parens and auto-quotes. Getting this right isn't trivial,
7171 with all the color escapes, different prompt types and optional
7177 with all the color escapes, different prompt types and optional
7172 separators. But it seems to be working in all the combinations.
7178 separators. But it seems to be working in all the combinations.
7173
7179
7174 2001-11-26 Fernando Perez <fperez@colorado.edu>
7180 2001-11-26 Fernando Perez <fperez@colorado.edu>
7175
7181
7176 * Wrote a regexp filter to get option types from the option names
7182 * Wrote a regexp filter to get option types from the option names
7177 string. This eliminates the need to manually keep two duplicate
7183 string. This eliminates the need to manually keep two duplicate
7178 lists.
7184 lists.
7179
7185
7180 * Removed the unneeded check_option_names. Now options are handled
7186 * Removed the unneeded check_option_names. Now options are handled
7181 in a much saner manner and it's easy to visually check that things
7187 in a much saner manner and it's easy to visually check that things
7182 are ok.
7188 are ok.
7183
7189
7184 * Updated version numbers on all files I modified to carry a
7190 * Updated version numbers on all files I modified to carry a
7185 notice so Janko and Nathan have clear version markers.
7191 notice so Janko and Nathan have clear version markers.
7186
7192
7187 * Updated docstring for ultraTB with my changes. I should send
7193 * Updated docstring for ultraTB with my changes. I should send
7188 this to Nathan.
7194 this to Nathan.
7189
7195
7190 * Lots of small fixes. Ran everything through pychecker again.
7196 * Lots of small fixes. Ran everything through pychecker again.
7191
7197
7192 * Made loading of deep_reload an cmd line option. If it's not too
7198 * Made loading of deep_reload an cmd line option. If it's not too
7193 kosher, now people can just disable it. With -nodeep_reload it's
7199 kosher, now people can just disable it. With -nodeep_reload it's
7194 still available as dreload(), it just won't overwrite reload().
7200 still available as dreload(), it just won't overwrite reload().
7195
7201
7196 * Moved many options to the no| form (-opt and -noopt
7202 * Moved many options to the no| form (-opt and -noopt
7197 accepted). Cleaner.
7203 accepted). Cleaner.
7198
7204
7199 * Changed magic_log so that if called with no parameters, it uses
7205 * Changed magic_log so that if called with no parameters, it uses
7200 'rotate' mode. That way auto-generated logs aren't automatically
7206 'rotate' mode. That way auto-generated logs aren't automatically
7201 over-written. For normal logs, now a backup is made if it exists
7207 over-written. For normal logs, now a backup is made if it exists
7202 (only 1 level of backups). A new 'backup' mode was added to the
7208 (only 1 level of backups). A new 'backup' mode was added to the
7203 Logger class to support this. This was a request by Janko.
7209 Logger class to support this. This was a request by Janko.
7204
7210
7205 * Added @logoff/@logon to stop/restart an active log.
7211 * Added @logoff/@logon to stop/restart an active log.
7206
7212
7207 * Fixed a lot of bugs in log saving/replay. It was pretty
7213 * Fixed a lot of bugs in log saving/replay. It was pretty
7208 broken. Now special lines (!@,/) appear properly in the command
7214 broken. Now special lines (!@,/) appear properly in the command
7209 history after a log replay.
7215 history after a log replay.
7210
7216
7211 * Tried and failed to implement full session saving via pickle. My
7217 * Tried and failed to implement full session saving via pickle. My
7212 idea was to pickle __main__.__dict__, but modules can't be
7218 idea was to pickle __main__.__dict__, but modules can't be
7213 pickled. This would be a better alternative to replaying logs, but
7219 pickled. This would be a better alternative to replaying logs, but
7214 seems quite tricky to get to work. Changed -session to be called
7220 seems quite tricky to get to work. Changed -session to be called
7215 -logplay, which more accurately reflects what it does. And if we
7221 -logplay, which more accurately reflects what it does. And if we
7216 ever get real session saving working, -session is now available.
7222 ever get real session saving working, -session is now available.
7217
7223
7218 * Implemented color schemes for prompts also. As for tracebacks,
7224 * Implemented color schemes for prompts also. As for tracebacks,
7219 currently only NoColor and Linux are supported. But now the
7225 currently only NoColor and Linux are supported. But now the
7220 infrastructure is in place, based on a generic ColorScheme
7226 infrastructure is in place, based on a generic ColorScheme
7221 class. So writing and activating new schemes both for the prompts
7227 class. So writing and activating new schemes both for the prompts
7222 and the tracebacks should be straightforward.
7228 and the tracebacks should be straightforward.
7223
7229
7224 * Version 0.1.13 released, 0.1.14 opened.
7230 * Version 0.1.13 released, 0.1.14 opened.
7225
7231
7226 * Changed handling of options for output cache. Now counter is
7232 * Changed handling of options for output cache. Now counter is
7227 hardwired starting at 1 and one specifies the maximum number of
7233 hardwired starting at 1 and one specifies the maximum number of
7228 entries *in the outcache* (not the max prompt counter). This is
7234 entries *in the outcache* (not the max prompt counter). This is
7229 much better, since many statements won't increase the cache
7235 much better, since many statements won't increase the cache
7230 count. It also eliminated some confusing options, now there's only
7236 count. It also eliminated some confusing options, now there's only
7231 one: cache_size.
7237 one: cache_size.
7232
7238
7233 * Added 'alias' magic function and magic_alias option in the
7239 * Added 'alias' magic function and magic_alias option in the
7234 ipythonrc file. Now the user can easily define whatever names he
7240 ipythonrc file. Now the user can easily define whatever names he
7235 wants for the magic functions without having to play weird
7241 wants for the magic functions without having to play weird
7236 namespace games. This gives IPython a real shell-like feel.
7242 namespace games. This gives IPython a real shell-like feel.
7237
7243
7238 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
7244 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
7239 @ or not).
7245 @ or not).
7240
7246
7241 This was one of the last remaining 'visible' bugs (that I know
7247 This was one of the last remaining 'visible' bugs (that I know
7242 of). I think if I can clean up the session loading so it works
7248 of). I think if I can clean up the session loading so it works
7243 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
7249 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
7244 about licensing).
7250 about licensing).
7245
7251
7246 2001-11-25 Fernando Perez <fperez@colorado.edu>
7252 2001-11-25 Fernando Perez <fperez@colorado.edu>
7247
7253
7248 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
7254 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
7249 there's a cleaner distinction between what ? and ?? show.
7255 there's a cleaner distinction between what ? and ?? show.
7250
7256
7251 * Added screen_length option. Now the user can define his own
7257 * Added screen_length option. Now the user can define his own
7252 screen size for page() operations.
7258 screen size for page() operations.
7253
7259
7254 * Implemented magic shell-like functions with automatic code
7260 * Implemented magic shell-like functions with automatic code
7255 generation. Now adding another function is just a matter of adding
7261 generation. Now adding another function is just a matter of adding
7256 an entry to a dict, and the function is dynamically generated at
7262 an entry to a dict, and the function is dynamically generated at
7257 run-time. Python has some really cool features!
7263 run-time. Python has some really cool features!
7258
7264
7259 * Renamed many options to cleanup conventions a little. Now all
7265 * Renamed many options to cleanup conventions a little. Now all
7260 are lowercase, and only underscores where needed. Also in the code
7266 are lowercase, and only underscores where needed. Also in the code
7261 option name tables are clearer.
7267 option name tables are clearer.
7262
7268
7263 * Changed prompts a little. Now input is 'In [n]:' instead of
7269 * Changed prompts a little. Now input is 'In [n]:' instead of
7264 'In[n]:='. This allows it the numbers to be aligned with the
7270 'In[n]:='. This allows it the numbers to be aligned with the
7265 Out[n] numbers, and removes usage of ':=' which doesn't exist in
7271 Out[n] numbers, and removes usage of ':=' which doesn't exist in
7266 Python (it was a Mathematica thing). The '...' continuation prompt
7272 Python (it was a Mathematica thing). The '...' continuation prompt
7267 was also changed a little to align better.
7273 was also changed a little to align better.
7268
7274
7269 * Fixed bug when flushing output cache. Not all _p<n> variables
7275 * Fixed bug when flushing output cache. Not all _p<n> variables
7270 exist, so their deletion needs to be wrapped in a try:
7276 exist, so their deletion needs to be wrapped in a try:
7271
7277
7272 * Figured out how to properly use inspect.formatargspec() (it
7278 * Figured out how to properly use inspect.formatargspec() (it
7273 requires the args preceded by *). So I removed all the code from
7279 requires the args preceded by *). So I removed all the code from
7274 _get_pdef in Magic, which was just replicating that.
7280 _get_pdef in Magic, which was just replicating that.
7275
7281
7276 * Added test to prefilter to allow redefining magic function names
7282 * Added test to prefilter to allow redefining magic function names
7277 as variables. This is ok, since the @ form is always available,
7283 as variables. This is ok, since the @ form is always available,
7278 but whe should allow the user to define a variable called 'ls' if
7284 but whe should allow the user to define a variable called 'ls' if
7279 he needs it.
7285 he needs it.
7280
7286
7281 * Moved the ToDo information from README into a separate ToDo.
7287 * Moved the ToDo information from README into a separate ToDo.
7282
7288
7283 * General code cleanup and small bugfixes. I think it's close to a
7289 * General code cleanup and small bugfixes. I think it's close to a
7284 state where it can be released, obviously with a big 'beta'
7290 state where it can be released, obviously with a big 'beta'
7285 warning on it.
7291 warning on it.
7286
7292
7287 * Got the magic function split to work. Now all magics are defined
7293 * Got the magic function split to work. Now all magics are defined
7288 in a separate class. It just organizes things a bit, and now
7294 in a separate class. It just organizes things a bit, and now
7289 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7295 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7290 was too long).
7296 was too long).
7291
7297
7292 * Changed @clear to @reset to avoid potential confusions with
7298 * Changed @clear to @reset to avoid potential confusions with
7293 the shell command clear. Also renamed @cl to @clear, which does
7299 the shell command clear. Also renamed @cl to @clear, which does
7294 exactly what people expect it to from their shell experience.
7300 exactly what people expect it to from their shell experience.
7295
7301
7296 Added a check to the @reset command (since it's so
7302 Added a check to the @reset command (since it's so
7297 destructive, it's probably a good idea to ask for confirmation).
7303 destructive, it's probably a good idea to ask for confirmation).
7298 But now reset only works for full namespace resetting. Since the
7304 But now reset only works for full namespace resetting. Since the
7299 del keyword is already there for deleting a few specific
7305 del keyword is already there for deleting a few specific
7300 variables, I don't see the point of having a redundant magic
7306 variables, I don't see the point of having a redundant magic
7301 function for the same task.
7307 function for the same task.
7302
7308
7303 2001-11-24 Fernando Perez <fperez@colorado.edu>
7309 2001-11-24 Fernando Perez <fperez@colorado.edu>
7304
7310
7305 * Updated the builtin docs (esp. the ? ones).
7311 * Updated the builtin docs (esp. the ? ones).
7306
7312
7307 * Ran all the code through pychecker. Not terribly impressed with
7313 * Ran all the code through pychecker. Not terribly impressed with
7308 it: lots of spurious warnings and didn't really find anything of
7314 it: lots of spurious warnings and didn't really find anything of
7309 substance (just a few modules being imported and not used).
7315 substance (just a few modules being imported and not used).
7310
7316
7311 * Implemented the new ultraTB functionality into IPython. New
7317 * Implemented the new ultraTB functionality into IPython. New
7312 option: xcolors. This chooses color scheme. xmode now only selects
7318 option: xcolors. This chooses color scheme. xmode now only selects
7313 between Plain and Verbose. Better orthogonality.
7319 between Plain and Verbose. Better orthogonality.
7314
7320
7315 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7321 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7316 mode and color scheme for the exception handlers. Now it's
7322 mode and color scheme for the exception handlers. Now it's
7317 possible to have the verbose traceback with no coloring.
7323 possible to have the verbose traceback with no coloring.
7318
7324
7319 2001-11-23 Fernando Perez <fperez@colorado.edu>
7325 2001-11-23 Fernando Perez <fperez@colorado.edu>
7320
7326
7321 * Version 0.1.12 released, 0.1.13 opened.
7327 * Version 0.1.12 released, 0.1.13 opened.
7322
7328
7323 * Removed option to set auto-quote and auto-paren escapes by
7329 * Removed option to set auto-quote and auto-paren escapes by
7324 user. The chances of breaking valid syntax are just too high. If
7330 user. The chances of breaking valid syntax are just too high. If
7325 someone *really* wants, they can always dig into the code.
7331 someone *really* wants, they can always dig into the code.
7326
7332
7327 * Made prompt separators configurable.
7333 * Made prompt separators configurable.
7328
7334
7329 2001-11-22 Fernando Perez <fperez@colorado.edu>
7335 2001-11-22 Fernando Perez <fperez@colorado.edu>
7330
7336
7331 * Small bugfixes in many places.
7337 * Small bugfixes in many places.
7332
7338
7333 * Removed the MyCompleter class from ipplib. It seemed redundant
7339 * Removed the MyCompleter class from ipplib. It seemed redundant
7334 with the C-p,C-n history search functionality. Less code to
7340 with the C-p,C-n history search functionality. Less code to
7335 maintain.
7341 maintain.
7336
7342
7337 * Moved all the original ipython.py code into ipythonlib.py. Right
7343 * Moved all the original ipython.py code into ipythonlib.py. Right
7338 now it's just one big dump into a function called make_IPython, so
7344 now it's just one big dump into a function called make_IPython, so
7339 no real modularity has been gained. But at least it makes the
7345 no real modularity has been gained. But at least it makes the
7340 wrapper script tiny, and since ipythonlib is a module, it gets
7346 wrapper script tiny, and since ipythonlib is a module, it gets
7341 compiled and startup is much faster.
7347 compiled and startup is much faster.
7342
7348
7343 This is a reasobably 'deep' change, so we should test it for a
7349 This is a reasobably 'deep' change, so we should test it for a
7344 while without messing too much more with the code.
7350 while without messing too much more with the code.
7345
7351
7346 2001-11-21 Fernando Perez <fperez@colorado.edu>
7352 2001-11-21 Fernando Perez <fperez@colorado.edu>
7347
7353
7348 * Version 0.1.11 released, 0.1.12 opened for further work.
7354 * Version 0.1.11 released, 0.1.12 opened for further work.
7349
7355
7350 * Removed dependency on Itpl. It was only needed in one place. It
7356 * Removed dependency on Itpl. It was only needed in one place. It
7351 would be nice if this became part of python, though. It makes life
7357 would be nice if this became part of python, though. It makes life
7352 *a lot* easier in some cases.
7358 *a lot* easier in some cases.
7353
7359
7354 * Simplified the prefilter code a bit. Now all handlers are
7360 * Simplified the prefilter code a bit. Now all handlers are
7355 expected to explicitly return a value (at least a blank string).
7361 expected to explicitly return a value (at least a blank string).
7356
7362
7357 * Heavy edits in ipplib. Removed the help system altogether. Now
7363 * Heavy edits in ipplib. Removed the help system altogether. Now
7358 obj?/?? is used for inspecting objects, a magic @doc prints
7364 obj?/?? is used for inspecting objects, a magic @doc prints
7359 docstrings, and full-blown Python help is accessed via the 'help'
7365 docstrings, and full-blown Python help is accessed via the 'help'
7360 keyword. This cleans up a lot of code (less to maintain) and does
7366 keyword. This cleans up a lot of code (less to maintain) and does
7361 the job. Since 'help' is now a standard Python component, might as
7367 the job. Since 'help' is now a standard Python component, might as
7362 well use it and remove duplicate functionality.
7368 well use it and remove duplicate functionality.
7363
7369
7364 Also removed the option to use ipplib as a standalone program. By
7370 Also removed the option to use ipplib as a standalone program. By
7365 now it's too dependent on other parts of IPython to function alone.
7371 now it's too dependent on other parts of IPython to function alone.
7366
7372
7367 * Fixed bug in genutils.pager. It would crash if the pager was
7373 * Fixed bug in genutils.pager. It would crash if the pager was
7368 exited immediately after opening (broken pipe).
7374 exited immediately after opening (broken pipe).
7369
7375
7370 * Trimmed down the VerboseTB reporting a little. The header is
7376 * Trimmed down the VerboseTB reporting a little. The header is
7371 much shorter now and the repeated exception arguments at the end
7377 much shorter now and the repeated exception arguments at the end
7372 have been removed. For interactive use the old header seemed a bit
7378 have been removed. For interactive use the old header seemed a bit
7373 excessive.
7379 excessive.
7374
7380
7375 * Fixed small bug in output of @whos for variables with multi-word
7381 * Fixed small bug in output of @whos for variables with multi-word
7376 types (only first word was displayed).
7382 types (only first word was displayed).
7377
7383
7378 2001-11-17 Fernando Perez <fperez@colorado.edu>
7384 2001-11-17 Fernando Perez <fperez@colorado.edu>
7379
7385
7380 * Version 0.1.10 released, 0.1.11 opened for further work.
7386 * Version 0.1.10 released, 0.1.11 opened for further work.
7381
7387
7382 * Modified dirs and friends. dirs now *returns* the stack (not
7388 * Modified dirs and friends. dirs now *returns* the stack (not
7383 prints), so one can manipulate it as a variable. Convenient to
7389 prints), so one can manipulate it as a variable. Convenient to
7384 travel along many directories.
7390 travel along many directories.
7385
7391
7386 * Fixed bug in magic_pdef: would only work with functions with
7392 * Fixed bug in magic_pdef: would only work with functions with
7387 arguments with default values.
7393 arguments with default values.
7388
7394
7389 2001-11-14 Fernando Perez <fperez@colorado.edu>
7395 2001-11-14 Fernando Perez <fperez@colorado.edu>
7390
7396
7391 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7397 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7392 example with IPython. Various other minor fixes and cleanups.
7398 example with IPython. Various other minor fixes and cleanups.
7393
7399
7394 * Version 0.1.9 released, 0.1.10 opened for further work.
7400 * Version 0.1.9 released, 0.1.10 opened for further work.
7395
7401
7396 * Added sys.path to the list of directories searched in the
7402 * Added sys.path to the list of directories searched in the
7397 execfile= option. It used to be the current directory and the
7403 execfile= option. It used to be the current directory and the
7398 user's IPYTHONDIR only.
7404 user's IPYTHONDIR only.
7399
7405
7400 2001-11-13 Fernando Perez <fperez@colorado.edu>
7406 2001-11-13 Fernando Perez <fperez@colorado.edu>
7401
7407
7402 * Reinstated the raw_input/prefilter separation that Janko had
7408 * Reinstated the raw_input/prefilter separation that Janko had
7403 initially. This gives a more convenient setup for extending the
7409 initially. This gives a more convenient setup for extending the
7404 pre-processor from the outside: raw_input always gets a string,
7410 pre-processor from the outside: raw_input always gets a string,
7405 and prefilter has to process it. We can then redefine prefilter
7411 and prefilter has to process it. We can then redefine prefilter
7406 from the outside and implement extensions for special
7412 from the outside and implement extensions for special
7407 purposes.
7413 purposes.
7408
7414
7409 Today I got one for inputting PhysicalQuantity objects
7415 Today I got one for inputting PhysicalQuantity objects
7410 (from Scientific) without needing any function calls at
7416 (from Scientific) without needing any function calls at
7411 all. Extremely convenient, and it's all done as a user-level
7417 all. Extremely convenient, and it's all done as a user-level
7412 extension (no IPython code was touched). Now instead of:
7418 extension (no IPython code was touched). Now instead of:
7413 a = PhysicalQuantity(4.2,'m/s**2')
7419 a = PhysicalQuantity(4.2,'m/s**2')
7414 one can simply say
7420 one can simply say
7415 a = 4.2 m/s**2
7421 a = 4.2 m/s**2
7416 or even
7422 or even
7417 a = 4.2 m/s^2
7423 a = 4.2 m/s^2
7418
7424
7419 I use this, but it's also a proof of concept: IPython really is
7425 I use this, but it's also a proof of concept: IPython really is
7420 fully user-extensible, even at the level of the parsing of the
7426 fully user-extensible, even at the level of the parsing of the
7421 command line. It's not trivial, but it's perfectly doable.
7427 command line. It's not trivial, but it's perfectly doable.
7422
7428
7423 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7429 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7424 the problem of modules being loaded in the inverse order in which
7430 the problem of modules being loaded in the inverse order in which
7425 they were defined in
7431 they were defined in
7426
7432
7427 * Version 0.1.8 released, 0.1.9 opened for further work.
7433 * Version 0.1.8 released, 0.1.9 opened for further work.
7428
7434
7429 * Added magics pdef, source and file. They respectively show the
7435 * Added magics pdef, source and file. They respectively show the
7430 definition line ('prototype' in C), source code and full python
7436 definition line ('prototype' in C), source code and full python
7431 file for any callable object. The object inspector oinfo uses
7437 file for any callable object. The object inspector oinfo uses
7432 these to show the same information.
7438 these to show the same information.
7433
7439
7434 * Version 0.1.7 released, 0.1.8 opened for further work.
7440 * Version 0.1.7 released, 0.1.8 opened for further work.
7435
7441
7436 * Separated all the magic functions into a class called Magic. The
7442 * Separated all the magic functions into a class called Magic. The
7437 InteractiveShell class was becoming too big for Xemacs to handle
7443 InteractiveShell class was becoming too big for Xemacs to handle
7438 (de-indenting a line would lock it up for 10 seconds while it
7444 (de-indenting a line would lock it up for 10 seconds while it
7439 backtracked on the whole class!)
7445 backtracked on the whole class!)
7440
7446
7441 FIXME: didn't work. It can be done, but right now namespaces are
7447 FIXME: didn't work. It can be done, but right now namespaces are
7442 all messed up. Do it later (reverted it for now, so at least
7448 all messed up. Do it later (reverted it for now, so at least
7443 everything works as before).
7449 everything works as before).
7444
7450
7445 * Got the object introspection system (magic_oinfo) working! I
7451 * Got the object introspection system (magic_oinfo) working! I
7446 think this is pretty much ready for release to Janko, so he can
7452 think this is pretty much ready for release to Janko, so he can
7447 test it for a while and then announce it. Pretty much 100% of what
7453 test it for a while and then announce it. Pretty much 100% of what
7448 I wanted for the 'phase 1' release is ready. Happy, tired.
7454 I wanted for the 'phase 1' release is ready. Happy, tired.
7449
7455
7450 2001-11-12 Fernando Perez <fperez@colorado.edu>
7456 2001-11-12 Fernando Perez <fperez@colorado.edu>
7451
7457
7452 * Version 0.1.6 released, 0.1.7 opened for further work.
7458 * Version 0.1.6 released, 0.1.7 opened for further work.
7453
7459
7454 * Fixed bug in printing: it used to test for truth before
7460 * Fixed bug in printing: it used to test for truth before
7455 printing, so 0 wouldn't print. Now checks for None.
7461 printing, so 0 wouldn't print. Now checks for None.
7456
7462
7457 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7463 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7458 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7464 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7459 reaches by hand into the outputcache. Think of a better way to do
7465 reaches by hand into the outputcache. Think of a better way to do
7460 this later.
7466 this later.
7461
7467
7462 * Various small fixes thanks to Nathan's comments.
7468 * Various small fixes thanks to Nathan's comments.
7463
7469
7464 * Changed magic_pprint to magic_Pprint. This way it doesn't
7470 * Changed magic_pprint to magic_Pprint. This way it doesn't
7465 collide with pprint() and the name is consistent with the command
7471 collide with pprint() and the name is consistent with the command
7466 line option.
7472 line option.
7467
7473
7468 * Changed prompt counter behavior to be fully like
7474 * Changed prompt counter behavior to be fully like
7469 Mathematica's. That is, even input that doesn't return a result
7475 Mathematica's. That is, even input that doesn't return a result
7470 raises the prompt counter. The old behavior was kind of confusing
7476 raises the prompt counter. The old behavior was kind of confusing
7471 (getting the same prompt number several times if the operation
7477 (getting the same prompt number several times if the operation
7472 didn't return a result).
7478 didn't return a result).
7473
7479
7474 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7480 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7475
7481
7476 * Fixed -Classic mode (wasn't working anymore).
7482 * Fixed -Classic mode (wasn't working anymore).
7477
7483
7478 * Added colored prompts using Nathan's new code. Colors are
7484 * Added colored prompts using Nathan's new code. Colors are
7479 currently hardwired, they can be user-configurable. For
7485 currently hardwired, they can be user-configurable. For
7480 developers, they can be chosen in file ipythonlib.py, at the
7486 developers, they can be chosen in file ipythonlib.py, at the
7481 beginning of the CachedOutput class def.
7487 beginning of the CachedOutput class def.
7482
7488
7483 2001-11-11 Fernando Perez <fperez@colorado.edu>
7489 2001-11-11 Fernando Perez <fperez@colorado.edu>
7484
7490
7485 * Version 0.1.5 released, 0.1.6 opened for further work.
7491 * Version 0.1.5 released, 0.1.6 opened for further work.
7486
7492
7487 * Changed magic_env to *return* the environment as a dict (not to
7493 * Changed magic_env to *return* the environment as a dict (not to
7488 print it). This way it prints, but it can also be processed.
7494 print it). This way it prints, but it can also be processed.
7489
7495
7490 * Added Verbose exception reporting to interactive
7496 * Added Verbose exception reporting to interactive
7491 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7497 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7492 traceback. Had to make some changes to the ultraTB file. This is
7498 traceback. Had to make some changes to the ultraTB file. This is
7493 probably the last 'big' thing in my mental todo list. This ties
7499 probably the last 'big' thing in my mental todo list. This ties
7494 in with the next entry:
7500 in with the next entry:
7495
7501
7496 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7502 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7497 has to specify is Plain, Color or Verbose for all exception
7503 has to specify is Plain, Color or Verbose for all exception
7498 handling.
7504 handling.
7499
7505
7500 * Removed ShellServices option. All this can really be done via
7506 * Removed ShellServices option. All this can really be done via
7501 the magic system. It's easier to extend, cleaner and has automatic
7507 the magic system. It's easier to extend, cleaner and has automatic
7502 namespace protection and documentation.
7508 namespace protection and documentation.
7503
7509
7504 2001-11-09 Fernando Perez <fperez@colorado.edu>
7510 2001-11-09 Fernando Perez <fperez@colorado.edu>
7505
7511
7506 * Fixed bug in output cache flushing (missing parameter to
7512 * Fixed bug in output cache flushing (missing parameter to
7507 __init__). Other small bugs fixed (found using pychecker).
7513 __init__). Other small bugs fixed (found using pychecker).
7508
7514
7509 * Version 0.1.4 opened for bugfixing.
7515 * Version 0.1.4 opened for bugfixing.
7510
7516
7511 2001-11-07 Fernando Perez <fperez@colorado.edu>
7517 2001-11-07 Fernando Perez <fperez@colorado.edu>
7512
7518
7513 * Version 0.1.3 released, mainly because of the raw_input bug.
7519 * Version 0.1.3 released, mainly because of the raw_input bug.
7514
7520
7515 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7521 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7516 and when testing for whether things were callable, a call could
7522 and when testing for whether things were callable, a call could
7517 actually be made to certain functions. They would get called again
7523 actually be made to certain functions. They would get called again
7518 once 'really' executed, with a resulting double call. A disaster
7524 once 'really' executed, with a resulting double call. A disaster
7519 in many cases (list.reverse() would never work!).
7525 in many cases (list.reverse() would never work!).
7520
7526
7521 * Removed prefilter() function, moved its code to raw_input (which
7527 * Removed prefilter() function, moved its code to raw_input (which
7522 after all was just a near-empty caller for prefilter). This saves
7528 after all was just a near-empty caller for prefilter). This saves
7523 a function call on every prompt, and simplifies the class a tiny bit.
7529 a function call on every prompt, and simplifies the class a tiny bit.
7524
7530
7525 * Fix _ip to __ip name in magic example file.
7531 * Fix _ip to __ip name in magic example file.
7526
7532
7527 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7533 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7528 work with non-gnu versions of tar.
7534 work with non-gnu versions of tar.
7529
7535
7530 2001-11-06 Fernando Perez <fperez@colorado.edu>
7536 2001-11-06 Fernando Perez <fperez@colorado.edu>
7531
7537
7532 * Version 0.1.2. Just to keep track of the recent changes.
7538 * Version 0.1.2. Just to keep track of the recent changes.
7533
7539
7534 * Fixed nasty bug in output prompt routine. It used to check 'if
7540 * Fixed nasty bug in output prompt routine. It used to check 'if
7535 arg != None...'. Problem is, this fails if arg implements a
7541 arg != None...'. Problem is, this fails if arg implements a
7536 special comparison (__cmp__) which disallows comparing to
7542 special comparison (__cmp__) which disallows comparing to
7537 None. Found it when trying to use the PhysicalQuantity module from
7543 None. Found it when trying to use the PhysicalQuantity module from
7538 ScientificPython.
7544 ScientificPython.
7539
7545
7540 2001-11-05 Fernando Perez <fperez@colorado.edu>
7546 2001-11-05 Fernando Perez <fperez@colorado.edu>
7541
7547
7542 * Also added dirs. Now the pushd/popd/dirs family functions
7548 * Also added dirs. Now the pushd/popd/dirs family functions
7543 basically like the shell, with the added convenience of going home
7549 basically like the shell, with the added convenience of going home
7544 when called with no args.
7550 when called with no args.
7545
7551
7546 * pushd/popd slightly modified to mimic shell behavior more
7552 * pushd/popd slightly modified to mimic shell behavior more
7547 closely.
7553 closely.
7548
7554
7549 * Added env,pushd,popd from ShellServices as magic functions. I
7555 * Added env,pushd,popd from ShellServices as magic functions. I
7550 think the cleanest will be to port all desired functions from
7556 think the cleanest will be to port all desired functions from
7551 ShellServices as magics and remove ShellServices altogether. This
7557 ShellServices as magics and remove ShellServices altogether. This
7552 will provide a single, clean way of adding functionality
7558 will provide a single, clean way of adding functionality
7553 (shell-type or otherwise) to IP.
7559 (shell-type or otherwise) to IP.
7554
7560
7555 2001-11-04 Fernando Perez <fperez@colorado.edu>
7561 2001-11-04 Fernando Perez <fperez@colorado.edu>
7556
7562
7557 * Added .ipython/ directory to sys.path. This way users can keep
7563 * Added .ipython/ directory to sys.path. This way users can keep
7558 customizations there and access them via import.
7564 customizations there and access them via import.
7559
7565
7560 2001-11-03 Fernando Perez <fperez@colorado.edu>
7566 2001-11-03 Fernando Perez <fperez@colorado.edu>
7561
7567
7562 * Opened version 0.1.1 for new changes.
7568 * Opened version 0.1.1 for new changes.
7563
7569
7564 * Changed version number to 0.1.0: first 'public' release, sent to
7570 * Changed version number to 0.1.0: first 'public' release, sent to
7565 Nathan and Janko.
7571 Nathan and Janko.
7566
7572
7567 * Lots of small fixes and tweaks.
7573 * Lots of small fixes and tweaks.
7568
7574
7569 * Minor changes to whos format. Now strings are shown, snipped if
7575 * Minor changes to whos format. Now strings are shown, snipped if
7570 too long.
7576 too long.
7571
7577
7572 * Changed ShellServices to work on __main__ so they show up in @who
7578 * Changed ShellServices to work on __main__ so they show up in @who
7573
7579
7574 * Help also works with ? at the end of a line:
7580 * Help also works with ? at the end of a line:
7575 ?sin and sin?
7581 ?sin and sin?
7576 both produce the same effect. This is nice, as often I use the
7582 both produce the same effect. This is nice, as often I use the
7577 tab-complete to find the name of a method, but I used to then have
7583 tab-complete to find the name of a method, but I used to then have
7578 to go to the beginning of the line to put a ? if I wanted more
7584 to go to the beginning of the line to put a ? if I wanted more
7579 info. Now I can just add the ? and hit return. Convenient.
7585 info. Now I can just add the ? and hit return. Convenient.
7580
7586
7581 2001-11-02 Fernando Perez <fperez@colorado.edu>
7587 2001-11-02 Fernando Perez <fperez@colorado.edu>
7582
7588
7583 * Python version check (>=2.1) added.
7589 * Python version check (>=2.1) added.
7584
7590
7585 * Added LazyPython documentation. At this point the docs are quite
7591 * Added LazyPython documentation. At this point the docs are quite
7586 a mess. A cleanup is in order.
7592 a mess. A cleanup is in order.
7587
7593
7588 * Auto-installer created. For some bizarre reason, the zipfiles
7594 * Auto-installer created. For some bizarre reason, the zipfiles
7589 module isn't working on my system. So I made a tar version
7595 module isn't working on my system. So I made a tar version
7590 (hopefully the command line options in various systems won't kill
7596 (hopefully the command line options in various systems won't kill
7591 me).
7597 me).
7592
7598
7593 * Fixes to Struct in genutils. Now all dictionary-like methods are
7599 * Fixes to Struct in genutils. Now all dictionary-like methods are
7594 protected (reasonably).
7600 protected (reasonably).
7595
7601
7596 * Added pager function to genutils and changed ? to print usage
7602 * Added pager function to genutils and changed ? to print usage
7597 note through it (it was too long).
7603 note through it (it was too long).
7598
7604
7599 * Added the LazyPython functionality. Works great! I changed the
7605 * Added the LazyPython functionality. Works great! I changed the
7600 auto-quote escape to ';', it's on home row and next to '. But
7606 auto-quote escape to ';', it's on home row and next to '. But
7601 both auto-quote and auto-paren (still /) escapes are command-line
7607 both auto-quote and auto-paren (still /) escapes are command-line
7602 parameters.
7608 parameters.
7603
7609
7604
7610
7605 2001-11-01 Fernando Perez <fperez@colorado.edu>
7611 2001-11-01 Fernando Perez <fperez@colorado.edu>
7606
7612
7607 * Version changed to 0.0.7. Fairly large change: configuration now
7613 * Version changed to 0.0.7. Fairly large change: configuration now
7608 is all stored in a directory, by default .ipython. There, all
7614 is all stored in a directory, by default .ipython. There, all
7609 config files have normal looking names (not .names)
7615 config files have normal looking names (not .names)
7610
7616
7611 * Version 0.0.6 Released first to Lucas and Archie as a test
7617 * Version 0.0.6 Released first to Lucas and Archie as a test
7612 run. Since it's the first 'semi-public' release, change version to
7618 run. Since it's the first 'semi-public' release, change version to
7613 > 0.0.6 for any changes now.
7619 > 0.0.6 for any changes now.
7614
7620
7615 * Stuff I had put in the ipplib.py changelog:
7621 * Stuff I had put in the ipplib.py changelog:
7616
7622
7617 Changes to InteractiveShell:
7623 Changes to InteractiveShell:
7618
7624
7619 - Made the usage message a parameter.
7625 - Made the usage message a parameter.
7620
7626
7621 - Require the name of the shell variable to be given. It's a bit
7627 - Require the name of the shell variable to be given. It's a bit
7622 of a hack, but allows the name 'shell' not to be hardwired in the
7628 of a hack, but allows the name 'shell' not to be hardwired in the
7623 magic (@) handler, which is problematic b/c it requires
7629 magic (@) handler, which is problematic b/c it requires
7624 polluting the global namespace with 'shell'. This in turn is
7630 polluting the global namespace with 'shell'. This in turn is
7625 fragile: if a user redefines a variable called shell, things
7631 fragile: if a user redefines a variable called shell, things
7626 break.
7632 break.
7627
7633
7628 - magic @: all functions available through @ need to be defined
7634 - magic @: all functions available through @ need to be defined
7629 as magic_<name>, even though they can be called simply as
7635 as magic_<name>, even though they can be called simply as
7630 @<name>. This allows the special command @magic to gather
7636 @<name>. This allows the special command @magic to gather
7631 information automatically about all existing magic functions,
7637 information automatically about all existing magic functions,
7632 even if they are run-time user extensions, by parsing the shell
7638 even if they are run-time user extensions, by parsing the shell
7633 instance __dict__ looking for special magic_ names.
7639 instance __dict__ looking for special magic_ names.
7634
7640
7635 - mainloop: added *two* local namespace parameters. This allows
7641 - mainloop: added *two* local namespace parameters. This allows
7636 the class to differentiate between parameters which were there
7642 the class to differentiate between parameters which were there
7637 before and after command line initialization was processed. This
7643 before and after command line initialization was processed. This
7638 way, later @who can show things loaded at startup by the
7644 way, later @who can show things loaded at startup by the
7639 user. This trick was necessary to make session saving/reloading
7645 user. This trick was necessary to make session saving/reloading
7640 really work: ideally after saving/exiting/reloading a session,
7646 really work: ideally after saving/exiting/reloading a session,
7641 *everything* should look the same, including the output of @who. I
7647 *everything* should look the same, including the output of @who. I
7642 was only able to make this work with this double namespace
7648 was only able to make this work with this double namespace
7643 trick.
7649 trick.
7644
7650
7645 - added a header to the logfile which allows (almost) full
7651 - added a header to the logfile which allows (almost) full
7646 session restoring.
7652 session restoring.
7647
7653
7648 - prepend lines beginning with @ or !, with a and log
7654 - prepend lines beginning with @ or !, with a and log
7649 them. Why? !lines: may be useful to know what you did @lines:
7655 them. Why? !lines: may be useful to know what you did @lines:
7650 they may affect session state. So when restoring a session, at
7656 they may affect session state. So when restoring a session, at
7651 least inform the user of their presence. I couldn't quite get
7657 least inform the user of their presence. I couldn't quite get
7652 them to properly re-execute, but at least the user is warned.
7658 them to properly re-execute, but at least the user is warned.
7653
7659
7654 * Started ChangeLog.
7660 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now