##// END OF EJS Templates
Add license notes, closes #203
vivainio -
Show More
@@ -1,520 +1,515 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 Pdb debugger class.
3 Pdb debugger class.
4
4
5 Modified from the standard pdb.Pdb class to avoid including readline, so that
5 Modified from the standard pdb.Pdb class to avoid including readline, so that
6 the command line completion of other programs which include this isn't
6 the command line completion of other programs which include this isn't
7 damaged.
7 damaged.
8
8
9 In the future, this class will be expanded with improvements over the standard
9 In the future, this class will be expanded with improvements over the standard
10 pdb.
10 pdb.
11
11
12 The code in this file is mainly lifted out of cmd.py in Python 2.2, with minor
12 The code in this file is mainly lifted out of cmd.py in Python 2.2, with minor
13 changes. Licensing should therefore be under the standard Python terms. For
13 changes. Licensing should therefore be under the standard Python terms. For
14 details on the PSF (Python Software Foundation) standard license, see:
14 details on the PSF (Python Software Foundation) standard license, see:
15
15
16 http://www.python.org/2.2.3/license.html
16 http://www.python.org/2.2.3/license.html
17
17
18 $Id: Debugger.py 2261 2007-04-20 17:50:00Z jdh2358 $"""
18 $Id: Debugger.py 2902 2007-12-28 12:28:01Z vivainio $"""
19
19
20 #*****************************************************************************
20 #*****************************************************************************
21 #
21 #
22 # Since this file is essentially a modified copy of the pdb module which is
22 # This file is licensed under the PSF license.
23 # part of the standard Python distribution, I assume that the proper procedure
24 # is to maintain its copyright as belonging to the Python Software Foundation
25 # (in addition to my own, for all new code).
26 #
23 #
27 # Copyright (C) 2001 Python Software Foundation, www.python.org
24 # Copyright (C) 2001 Python Software Foundation, www.python.org
28 # Copyright (C) 2005-2006 Fernando Perez. <fperez@colorado.edu>
25 # Copyright (C) 2005-2006 Fernando Perez. <fperez@colorado.edu>
29 #
26 #
30 # Distributed under the terms of the BSD License. The full license is in
31 # the file COPYING, distributed as part of this software.
32 #
27 #
33 #*****************************************************************************
28 #*****************************************************************************
34
29
35 from IPython import Release
30 from IPython import Release
36 __author__ = '%s <%s>' % Release.authors['Fernando']
31 __author__ = '%s <%s>' % Release.authors['Fernando']
37 __license__ = 'Python'
32 __license__ = 'Python'
38
33
39 import bdb
34 import bdb
40 import cmd
35 import cmd
41 import linecache
36 import linecache
42 import os
37 import os
43 import sys
38 import sys
44
39
45 from IPython import PyColorize, ColorANSI, ipapi
40 from IPython import PyColorize, ColorANSI, ipapi
46 from IPython.genutils import Term
41 from IPython.genutils import Term
47 from IPython.excolors import ExceptionColors
42 from IPython.excolors import ExceptionColors
48
43
49 # See if we can use pydb.
44 # See if we can use pydb.
50 has_pydb = False
45 has_pydb = False
51 prompt = 'ipdb> '
46 prompt = 'ipdb> '
52 try:
47 try:
53 import pydb
48 import pydb
54 if hasattr(pydb.pydb, "runl") and pydb.version>'1.17':
49 if hasattr(pydb.pydb, "runl") and pydb.version>'1.17':
55 # Version 1.17 is broken, and that's what ships with Ubuntu Edgy, so we
50 # Version 1.17 is broken, and that's what ships with Ubuntu Edgy, so we
56 # better protetct against it.
51 # better protetct against it.
57 has_pydb = True
52 has_pydb = True
58 from pydb import Pdb as OldPdb
53 from pydb import Pdb as OldPdb
59 except ImportError:
54 except ImportError:
60 pass
55 pass
61
56
62 if has_pydb:
57 if has_pydb:
63 from pydb import Pdb as OldPdb
58 from pydb import Pdb as OldPdb
64 prompt = 'ipydb> '
59 prompt = 'ipydb> '
65 else:
60 else:
66 from pdb import Pdb as OldPdb
61 from pdb import Pdb as OldPdb
67
62
68 # Allow the set_trace code to operate outside of an ipython instance, even if
63 # Allow the set_trace code to operate outside of an ipython instance, even if
69 # it does so with some limitations. The rest of this support is implemented in
64 # it does so with some limitations. The rest of this support is implemented in
70 # the Tracer constructor.
65 # the Tracer constructor.
71 def BdbQuit_excepthook(et,ev,tb):
66 def BdbQuit_excepthook(et,ev,tb):
72 if et==bdb.BdbQuit:
67 if et==bdb.BdbQuit:
73 print 'Exiting Debugger.'
68 print 'Exiting Debugger.'
74 else:
69 else:
75 BdbQuit_excepthook.excepthook_ori(et,ev,tb)
70 BdbQuit_excepthook.excepthook_ori(et,ev,tb)
76
71
77 def BdbQuit_IPython_excepthook(self,et,ev,tb):
72 def BdbQuit_IPython_excepthook(self,et,ev,tb):
78 print 'Exiting Debugger.'
73 print 'Exiting Debugger.'
79
74
80 class Tracer(object):
75 class Tracer(object):
81 """Class for local debugging, similar to pdb.set_trace.
76 """Class for local debugging, similar to pdb.set_trace.
82
77
83 Instances of this class, when called, behave like pdb.set_trace, but
78 Instances of this class, when called, behave like pdb.set_trace, but
84 providing IPython's enhanced capabilities.
79 providing IPython's enhanced capabilities.
85
80
86 This is implemented as a class which must be initialized in your own code
81 This is implemented as a class which must be initialized in your own code
87 and not as a standalone function because we need to detect at runtime
82 and not as a standalone function because we need to detect at runtime
88 whether IPython is already active or not. That detection is done in the
83 whether IPython is already active or not. That detection is done in the
89 constructor, ensuring that this code plays nicely with a running IPython,
84 constructor, ensuring that this code plays nicely with a running IPython,
90 while functioning acceptably (though with limitations) if outside of it.
85 while functioning acceptably (though with limitations) if outside of it.
91 """
86 """
92
87
93 def __init__(self,colors=None):
88 def __init__(self,colors=None):
94 """Create a local debugger instance.
89 """Create a local debugger instance.
95
90
96 :Parameters:
91 :Parameters:
97
92
98 - `colors` (None): a string containing the name of the color scheme to
93 - `colors` (None): a string containing the name of the color scheme to
99 use, it must be one of IPython's valid color schemes. If not given, the
94 use, it must be one of IPython's valid color schemes. If not given, the
100 function will default to the current IPython scheme when running inside
95 function will default to the current IPython scheme when running inside
101 IPython, and to 'NoColor' otherwise.
96 IPython, and to 'NoColor' otherwise.
102
97
103 Usage example:
98 Usage example:
104
99
105 from IPython.Debugger import Tracer; debug_here = Tracer()
100 from IPython.Debugger import Tracer; debug_here = Tracer()
106
101
107 ... later in your code
102 ... later in your code
108 debug_here() # -> will open up the debugger at that point.
103 debug_here() # -> will open up the debugger at that point.
109
104
110 Once the debugger activates, you can use all of its regular commands to
105 Once the debugger activates, you can use all of its regular commands to
111 step through code, set breakpoints, etc. See the pdb documentation
106 step through code, set breakpoints, etc. See the pdb documentation
112 from the Python standard library for usage details.
107 from the Python standard library for usage details.
113 """
108 """
114
109
115 global __IPYTHON__
110 global __IPYTHON__
116 try:
111 try:
117 __IPYTHON__
112 __IPYTHON__
118 except NameError:
113 except NameError:
119 # Outside of ipython, we set our own exception hook manually
114 # Outside of ipython, we set our own exception hook manually
120 __IPYTHON__ = ipapi.get(True,False)
115 __IPYTHON__ = ipapi.get(True,False)
121 BdbQuit_excepthook.excepthook_ori = sys.excepthook
116 BdbQuit_excepthook.excepthook_ori = sys.excepthook
122 sys.excepthook = BdbQuit_excepthook
117 sys.excepthook = BdbQuit_excepthook
123 def_colors = 'NoColor'
118 def_colors = 'NoColor'
124 try:
119 try:
125 # Limited tab completion support
120 # Limited tab completion support
126 import rlcompleter,readline
121 import rlcompleter,readline
127 readline.parse_and_bind('tab: complete')
122 readline.parse_and_bind('tab: complete')
128 except ImportError:
123 except ImportError:
129 pass
124 pass
130 else:
125 else:
131 # In ipython, we use its custom exception handler mechanism
126 # In ipython, we use its custom exception handler mechanism
132 ip = ipapi.get()
127 ip = ipapi.get()
133 def_colors = ip.options.colors
128 def_colors = ip.options.colors
134 ip.set_custom_exc((bdb.BdbQuit,),BdbQuit_IPython_excepthook)
129 ip.set_custom_exc((bdb.BdbQuit,),BdbQuit_IPython_excepthook)
135
130
136 if colors is None:
131 if colors is None:
137 colors = def_colors
132 colors = def_colors
138 self.debugger = Pdb(colors)
133 self.debugger = Pdb(colors)
139
134
140 def __call__(self):
135 def __call__(self):
141 """Starts an interactive debugger at the point where called.
136 """Starts an interactive debugger at the point where called.
142
137
143 This is similar to the pdb.set_trace() function from the std lib, but
138 This is similar to the pdb.set_trace() function from the std lib, but
144 using IPython's enhanced debugger."""
139 using IPython's enhanced debugger."""
145
140
146 self.debugger.set_trace(sys._getframe().f_back)
141 self.debugger.set_trace(sys._getframe().f_back)
147
142
148 def decorate_fn_with_doc(new_fn, old_fn, additional_text=""):
143 def decorate_fn_with_doc(new_fn, old_fn, additional_text=""):
149 """Make new_fn have old_fn's doc string. This is particularly useful
144 """Make new_fn have old_fn's doc string. This is particularly useful
150 for the do_... commands that hook into the help system.
145 for the do_... commands that hook into the help system.
151 Adapted from from a comp.lang.python posting
146 Adapted from from a comp.lang.python posting
152 by Duncan Booth."""
147 by Duncan Booth."""
153 def wrapper(*args, **kw):
148 def wrapper(*args, **kw):
154 return new_fn(*args, **kw)
149 return new_fn(*args, **kw)
155 if old_fn.__doc__:
150 if old_fn.__doc__:
156 wrapper.__doc__ = old_fn.__doc__ + additional_text
151 wrapper.__doc__ = old_fn.__doc__ + additional_text
157 return wrapper
152 return wrapper
158
153
159 def _file_lines(fname):
154 def _file_lines(fname):
160 """Return the contents of a named file as a list of lines.
155 """Return the contents of a named file as a list of lines.
161
156
162 This function never raises an IOError exception: if the file can't be
157 This function never raises an IOError exception: if the file can't be
163 read, it simply returns an empty list."""
158 read, it simply returns an empty list."""
164
159
165 try:
160 try:
166 outfile = open(fname)
161 outfile = open(fname)
167 except IOError:
162 except IOError:
168 return []
163 return []
169 else:
164 else:
170 out = outfile.readlines()
165 out = outfile.readlines()
171 outfile.close()
166 outfile.close()
172 return out
167 return out
173
168
174 class Pdb(OldPdb):
169 class Pdb(OldPdb):
175 """Modified Pdb class, does not load readline."""
170 """Modified Pdb class, does not load readline."""
176
171
177 if sys.version[:3] >= '2.5' or has_pydb:
172 if sys.version[:3] >= '2.5' or has_pydb:
178 def __init__(self,color_scheme='NoColor',completekey=None,
173 def __init__(self,color_scheme='NoColor',completekey=None,
179 stdin=None, stdout=None):
174 stdin=None, stdout=None):
180
175
181 # Parent constructor:
176 # Parent constructor:
182 if has_pydb and completekey is None:
177 if has_pydb and completekey is None:
183 OldPdb.__init__(self,stdin=stdin,stdout=Term.cout)
178 OldPdb.__init__(self,stdin=stdin,stdout=Term.cout)
184 else:
179 else:
185 OldPdb.__init__(self,completekey,stdin,stdout)
180 OldPdb.__init__(self,completekey,stdin,stdout)
186
181
187 self.prompt = prompt # The default prompt is '(Pdb)'
182 self.prompt = prompt # The default prompt is '(Pdb)'
188
183
189 # IPython changes...
184 # IPython changes...
190 self.is_pydb = has_pydb
185 self.is_pydb = has_pydb
191
186
192 if self.is_pydb:
187 if self.is_pydb:
193
188
194 # iplib.py's ipalias seems to want pdb's checkline
189 # iplib.py's ipalias seems to want pdb's checkline
195 # which located in pydb.fn
190 # which located in pydb.fn
196 import pydb.fns
191 import pydb.fns
197 self.checkline = lambda filename, lineno: \
192 self.checkline = lambda filename, lineno: \
198 pydb.fns.checkline(self, filename, lineno)
193 pydb.fns.checkline(self, filename, lineno)
199
194
200 self.curframe = None
195 self.curframe = None
201 self.do_restart = self.new_do_restart
196 self.do_restart = self.new_do_restart
202
197
203 self.old_all_completions = __IPYTHON__.Completer.all_completions
198 self.old_all_completions = __IPYTHON__.Completer.all_completions
204 __IPYTHON__.Completer.all_completions=self.all_completions
199 __IPYTHON__.Completer.all_completions=self.all_completions
205
200
206 self.do_list = decorate_fn_with_doc(self.list_command_pydb,
201 self.do_list = decorate_fn_with_doc(self.list_command_pydb,
207 OldPdb.do_list)
202 OldPdb.do_list)
208 self.do_l = self.do_list
203 self.do_l = self.do_list
209 self.do_frame = decorate_fn_with_doc(self.new_do_frame,
204 self.do_frame = decorate_fn_with_doc(self.new_do_frame,
210 OldPdb.do_frame)
205 OldPdb.do_frame)
211
206
212 self.aliases = {}
207 self.aliases = {}
213
208
214 # Create color table: we copy the default one from the traceback
209 # Create color table: we copy the default one from the traceback
215 # module and add a few attributes needed for debugging
210 # module and add a few attributes needed for debugging
216 self.color_scheme_table = ExceptionColors.copy()
211 self.color_scheme_table = ExceptionColors.copy()
217
212
218 # shorthands
213 # shorthands
219 C = ColorANSI.TermColors
214 C = ColorANSI.TermColors
220 cst = self.color_scheme_table
215 cst = self.color_scheme_table
221
216
222 cst['NoColor'].colors.breakpoint_enabled = C.NoColor
217 cst['NoColor'].colors.breakpoint_enabled = C.NoColor
223 cst['NoColor'].colors.breakpoint_disabled = C.NoColor
218 cst['NoColor'].colors.breakpoint_disabled = C.NoColor
224
219
225 cst['Linux'].colors.breakpoint_enabled = C.LightRed
220 cst['Linux'].colors.breakpoint_enabled = C.LightRed
226 cst['Linux'].colors.breakpoint_disabled = C.Red
221 cst['Linux'].colors.breakpoint_disabled = C.Red
227
222
228 cst['LightBG'].colors.breakpoint_enabled = C.LightRed
223 cst['LightBG'].colors.breakpoint_enabled = C.LightRed
229 cst['LightBG'].colors.breakpoint_disabled = C.Red
224 cst['LightBG'].colors.breakpoint_disabled = C.Red
230
225
231 self.set_colors(color_scheme)
226 self.set_colors(color_scheme)
232
227
233 # Add a python parser so we can syntax highlight source while
228 # Add a python parser so we can syntax highlight source while
234 # debugging.
229 # debugging.
235 self.parser = PyColorize.Parser()
230 self.parser = PyColorize.Parser()
236
231
237
232
238 else:
233 else:
239 # Ugly hack: for Python 2.3-2.4, we can't call the parent constructor,
234 # Ugly hack: for Python 2.3-2.4, we can't call the parent constructor,
240 # because it binds readline and breaks tab-completion. This means we
235 # because it binds readline and breaks tab-completion. This means we
241 # have to COPY the constructor here.
236 # have to COPY the constructor here.
242 def __init__(self,color_scheme='NoColor'):
237 def __init__(self,color_scheme='NoColor'):
243 bdb.Bdb.__init__(self)
238 bdb.Bdb.__init__(self)
244 cmd.Cmd.__init__(self,completekey=None) # don't load readline
239 cmd.Cmd.__init__(self,completekey=None) # don't load readline
245 self.prompt = 'ipdb> ' # The default prompt is '(Pdb)'
240 self.prompt = 'ipdb> ' # The default prompt is '(Pdb)'
246 self.aliases = {}
241 self.aliases = {}
247
242
248 # These two lines are part of the py2.4 constructor, let's put them
243 # These two lines are part of the py2.4 constructor, let's put them
249 # unconditionally here as they won't cause any problems in 2.3.
244 # unconditionally here as they won't cause any problems in 2.3.
250 self.mainpyfile = ''
245 self.mainpyfile = ''
251 self._wait_for_mainpyfile = 0
246 self._wait_for_mainpyfile = 0
252
247
253 # Read $HOME/.pdbrc and ./.pdbrc
248 # Read $HOME/.pdbrc and ./.pdbrc
254 try:
249 try:
255 self.rcLines = _file_lines(os.path.join(os.environ['HOME'],
250 self.rcLines = _file_lines(os.path.join(os.environ['HOME'],
256 ".pdbrc"))
251 ".pdbrc"))
257 except KeyError:
252 except KeyError:
258 self.rcLines = []
253 self.rcLines = []
259 self.rcLines.extend(_file_lines(".pdbrc"))
254 self.rcLines.extend(_file_lines(".pdbrc"))
260
255
261 # Create color table: we copy the default one from the traceback
256 # Create color table: we copy the default one from the traceback
262 # module and add a few attributes needed for debugging
257 # module and add a few attributes needed for debugging
263 ExceptionColors.set_active_scheme(color_scheme)
258 ExceptionColors.set_active_scheme(color_scheme)
264 self.color_scheme_table = ExceptionColors.copy()
259 self.color_scheme_table = ExceptionColors.copy()
265
260
266 # shorthands
261 # shorthands
267 C = ColorANSI.TermColors
262 C = ColorANSI.TermColors
268 cst = self.color_scheme_table
263 cst = self.color_scheme_table
269
264
270 cst['NoColor'].colors.breakpoint_enabled = C.NoColor
265 cst['NoColor'].colors.breakpoint_enabled = C.NoColor
271 cst['NoColor'].colors.breakpoint_disabled = C.NoColor
266 cst['NoColor'].colors.breakpoint_disabled = C.NoColor
272
267
273 cst['Linux'].colors.breakpoint_enabled = C.LightRed
268 cst['Linux'].colors.breakpoint_enabled = C.LightRed
274 cst['Linux'].colors.breakpoint_disabled = C.Red
269 cst['Linux'].colors.breakpoint_disabled = C.Red
275
270
276 cst['LightBG'].colors.breakpoint_enabled = C.LightRed
271 cst['LightBG'].colors.breakpoint_enabled = C.LightRed
277 cst['LightBG'].colors.breakpoint_disabled = C.Red
272 cst['LightBG'].colors.breakpoint_disabled = C.Red
278
273
279 self.set_colors(color_scheme)
274 self.set_colors(color_scheme)
280
275
281 # Add a python parser so we can syntax highlight source while
276 # Add a python parser so we can syntax highlight source while
282 # debugging.
277 # debugging.
283 self.parser = PyColorize.Parser()
278 self.parser = PyColorize.Parser()
284
279
285 def set_colors(self, scheme):
280 def set_colors(self, scheme):
286 """Shorthand access to the color table scheme selector method."""
281 """Shorthand access to the color table scheme selector method."""
287 self.color_scheme_table.set_active_scheme(scheme)
282 self.color_scheme_table.set_active_scheme(scheme)
288
283
289 def interaction(self, frame, traceback):
284 def interaction(self, frame, traceback):
290 __IPYTHON__.set_completer_frame(frame)
285 __IPYTHON__.set_completer_frame(frame)
291 OldPdb.interaction(self, frame, traceback)
286 OldPdb.interaction(self, frame, traceback)
292
287
293 def new_do_up(self, arg):
288 def new_do_up(self, arg):
294 OldPdb.do_up(self, arg)
289 OldPdb.do_up(self, arg)
295 __IPYTHON__.set_completer_frame(self.curframe)
290 __IPYTHON__.set_completer_frame(self.curframe)
296 do_u = do_up = decorate_fn_with_doc(new_do_up, OldPdb.do_up)
291 do_u = do_up = decorate_fn_with_doc(new_do_up, OldPdb.do_up)
297
292
298 def new_do_down(self, arg):
293 def new_do_down(self, arg):
299 OldPdb.do_down(self, arg)
294 OldPdb.do_down(self, arg)
300 __IPYTHON__.set_completer_frame(self.curframe)
295 __IPYTHON__.set_completer_frame(self.curframe)
301
296
302 do_d = do_down = decorate_fn_with_doc(new_do_down, OldPdb.do_down)
297 do_d = do_down = decorate_fn_with_doc(new_do_down, OldPdb.do_down)
303
298
304 def new_do_frame(self, arg):
299 def new_do_frame(self, arg):
305 OldPdb.do_frame(self, arg)
300 OldPdb.do_frame(self, arg)
306 __IPYTHON__.set_completer_frame(self.curframe)
301 __IPYTHON__.set_completer_frame(self.curframe)
307
302
308 def new_do_quit(self, arg):
303 def new_do_quit(self, arg):
309
304
310 if hasattr(self, 'old_all_completions'):
305 if hasattr(self, 'old_all_completions'):
311 __IPYTHON__.Completer.all_completions=self.old_all_completions
306 __IPYTHON__.Completer.all_completions=self.old_all_completions
312
307
313
308
314 return OldPdb.do_quit(self, arg)
309 return OldPdb.do_quit(self, arg)
315
310
316 do_q = do_quit = decorate_fn_with_doc(new_do_quit, OldPdb.do_quit)
311 do_q = do_quit = decorate_fn_with_doc(new_do_quit, OldPdb.do_quit)
317
312
318 def new_do_restart(self, arg):
313 def new_do_restart(self, arg):
319 """Restart command. In the context of ipython this is exactly the same
314 """Restart command. In the context of ipython this is exactly the same
320 thing as 'quit'."""
315 thing as 'quit'."""
321 self.msg("Restart doesn't make sense here. Using 'quit' instead.")
316 self.msg("Restart doesn't make sense here. Using 'quit' instead.")
322 return self.do_quit(arg)
317 return self.do_quit(arg)
323
318
324 def postloop(self):
319 def postloop(self):
325 __IPYTHON__.set_completer_frame(None)
320 __IPYTHON__.set_completer_frame(None)
326
321
327 def print_stack_trace(self):
322 def print_stack_trace(self):
328 try:
323 try:
329 for frame_lineno in self.stack:
324 for frame_lineno in self.stack:
330 self.print_stack_entry(frame_lineno, context = 5)
325 self.print_stack_entry(frame_lineno, context = 5)
331 except KeyboardInterrupt:
326 except KeyboardInterrupt:
332 pass
327 pass
333
328
334 def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ',
329 def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ',
335 context = 3):
330 context = 3):
336 #frame, lineno = frame_lineno
331 #frame, lineno = frame_lineno
337 print >>Term.cout, self.format_stack_entry(frame_lineno, '', context)
332 print >>Term.cout, self.format_stack_entry(frame_lineno, '', context)
338
333
339 def format_stack_entry(self, frame_lineno, lprefix=': ', context = 3):
334 def format_stack_entry(self, frame_lineno, lprefix=': ', context = 3):
340 import linecache, repr
335 import linecache, repr
341
336
342 ret = []
337 ret = []
343
338
344 Colors = self.color_scheme_table.active_colors
339 Colors = self.color_scheme_table.active_colors
345 ColorsNormal = Colors.Normal
340 ColorsNormal = Colors.Normal
346 tpl_link = '%s%%s%s' % (Colors.filenameEm, ColorsNormal)
341 tpl_link = '%s%%s%s' % (Colors.filenameEm, ColorsNormal)
347 tpl_call = '%s%%s%s%%s%s' % (Colors.vName, Colors.valEm, ColorsNormal)
342 tpl_call = '%s%%s%s%%s%s' % (Colors.vName, Colors.valEm, ColorsNormal)
348 tpl_line = '%%s%s%%s %s%%s' % (Colors.lineno, ColorsNormal)
343 tpl_line = '%%s%s%%s %s%%s' % (Colors.lineno, ColorsNormal)
349 tpl_line_em = '%%s%s%%s %s%%s%s' % (Colors.linenoEm, Colors.line,
344 tpl_line_em = '%%s%s%%s %s%%s%s' % (Colors.linenoEm, Colors.line,
350 ColorsNormal)
345 ColorsNormal)
351
346
352 frame, lineno = frame_lineno
347 frame, lineno = frame_lineno
353
348
354 return_value = ''
349 return_value = ''
355 if '__return__' in frame.f_locals:
350 if '__return__' in frame.f_locals:
356 rv = frame.f_locals['__return__']
351 rv = frame.f_locals['__return__']
357 #return_value += '->'
352 #return_value += '->'
358 return_value += repr.repr(rv) + '\n'
353 return_value += repr.repr(rv) + '\n'
359 ret.append(return_value)
354 ret.append(return_value)
360
355
361 #s = filename + '(' + `lineno` + ')'
356 #s = filename + '(' + `lineno` + ')'
362 filename = self.canonic(frame.f_code.co_filename)
357 filename = self.canonic(frame.f_code.co_filename)
363 link = tpl_link % filename
358 link = tpl_link % filename
364
359
365 if frame.f_code.co_name:
360 if frame.f_code.co_name:
366 func = frame.f_code.co_name
361 func = frame.f_code.co_name
367 else:
362 else:
368 func = "<lambda>"
363 func = "<lambda>"
369
364
370 call = ''
365 call = ''
371 if func != '?':
366 if func != '?':
372 if '__args__' in frame.f_locals:
367 if '__args__' in frame.f_locals:
373 args = repr.repr(frame.f_locals['__args__'])
368 args = repr.repr(frame.f_locals['__args__'])
374 else:
369 else:
375 args = '()'
370 args = '()'
376 call = tpl_call % (func, args)
371 call = tpl_call % (func, args)
377
372
378 # The level info should be generated in the same format pdb uses, to
373 # The level info should be generated in the same format pdb uses, to
379 # avoid breaking the pdbtrack functionality of python-mode in *emacs.
374 # avoid breaking the pdbtrack functionality of python-mode in *emacs.
380 if frame is self.curframe:
375 if frame is self.curframe:
381 ret.append('> ')
376 ret.append('> ')
382 else:
377 else:
383 ret.append(' ')
378 ret.append(' ')
384 ret.append('%s(%s)%s\n' % (link,lineno,call))
379 ret.append('%s(%s)%s\n' % (link,lineno,call))
385
380
386 start = lineno - 1 - context//2
381 start = lineno - 1 - context//2
387 lines = linecache.getlines(filename)
382 lines = linecache.getlines(filename)
388 start = max(start, 0)
383 start = max(start, 0)
389 start = min(start, len(lines) - context)
384 start = min(start, len(lines) - context)
390 lines = lines[start : start + context]
385 lines = lines[start : start + context]
391
386
392 for i,line in enumerate(lines):
387 for i,line in enumerate(lines):
393 show_arrow = (start + 1 + i == lineno)
388 show_arrow = (start + 1 + i == lineno)
394 linetpl = (frame is self.curframe or show_arrow) \
389 linetpl = (frame is self.curframe or show_arrow) \
395 and tpl_line_em \
390 and tpl_line_em \
396 or tpl_line
391 or tpl_line
397 ret.append(self.__format_line(linetpl, filename,
392 ret.append(self.__format_line(linetpl, filename,
398 start + 1 + i, line,
393 start + 1 + i, line,
399 arrow = show_arrow) )
394 arrow = show_arrow) )
400
395
401 return ''.join(ret)
396 return ''.join(ret)
402
397
403 def __format_line(self, tpl_line, filename, lineno, line, arrow = False):
398 def __format_line(self, tpl_line, filename, lineno, line, arrow = False):
404 bp_mark = ""
399 bp_mark = ""
405 bp_mark_color = ""
400 bp_mark_color = ""
406
401
407 scheme = self.color_scheme_table.active_scheme_name
402 scheme = self.color_scheme_table.active_scheme_name
408 new_line, err = self.parser.format2(line, 'str', scheme)
403 new_line, err = self.parser.format2(line, 'str', scheme)
409 if not err: line = new_line
404 if not err: line = new_line
410
405
411 bp = None
406 bp = None
412 if lineno in self.get_file_breaks(filename):
407 if lineno in self.get_file_breaks(filename):
413 bps = self.get_breaks(filename, lineno)
408 bps = self.get_breaks(filename, lineno)
414 bp = bps[-1]
409 bp = bps[-1]
415
410
416 if bp:
411 if bp:
417 Colors = self.color_scheme_table.active_colors
412 Colors = self.color_scheme_table.active_colors
418 bp_mark = str(bp.number)
413 bp_mark = str(bp.number)
419 bp_mark_color = Colors.breakpoint_enabled
414 bp_mark_color = Colors.breakpoint_enabled
420 if not bp.enabled:
415 if not bp.enabled:
421 bp_mark_color = Colors.breakpoint_disabled
416 bp_mark_color = Colors.breakpoint_disabled
422
417
423 numbers_width = 7
418 numbers_width = 7
424 if arrow:
419 if arrow:
425 # This is the line with the error
420 # This is the line with the error
426 pad = numbers_width - len(str(lineno)) - len(bp_mark)
421 pad = numbers_width - len(str(lineno)) - len(bp_mark)
427 if pad >= 3:
422 if pad >= 3:
428 marker = '-'*(pad-3) + '-> '
423 marker = '-'*(pad-3) + '-> '
429 elif pad == 2:
424 elif pad == 2:
430 marker = '> '
425 marker = '> '
431 elif pad == 1:
426 elif pad == 1:
432 marker = '>'
427 marker = '>'
433 else:
428 else:
434 marker = ''
429 marker = ''
435 num = '%s%s' % (marker, str(lineno))
430 num = '%s%s' % (marker, str(lineno))
436 line = tpl_line % (bp_mark_color + bp_mark, num, line)
431 line = tpl_line % (bp_mark_color + bp_mark, num, line)
437 else:
432 else:
438 num = '%*s' % (numbers_width - len(bp_mark), str(lineno))
433 num = '%*s' % (numbers_width - len(bp_mark), str(lineno))
439 line = tpl_line % (bp_mark_color + bp_mark, num, line)
434 line = tpl_line % (bp_mark_color + bp_mark, num, line)
440
435
441 return line
436 return line
442
437
443 def list_command_pydb(self, arg):
438 def list_command_pydb(self, arg):
444 """List command to use if we have a newer pydb installed"""
439 """List command to use if we have a newer pydb installed"""
445 filename, first, last = OldPdb.parse_list_cmd(self, arg)
440 filename, first, last = OldPdb.parse_list_cmd(self, arg)
446 if filename is not None:
441 if filename is not None:
447 self.print_list_lines(filename, first, last)
442 self.print_list_lines(filename, first, last)
448
443
449 def print_list_lines(self, filename, first, last):
444 def print_list_lines(self, filename, first, last):
450 """The printing (as opposed to the parsing part of a 'list'
445 """The printing (as opposed to the parsing part of a 'list'
451 command."""
446 command."""
452 try:
447 try:
453 Colors = self.color_scheme_table.active_colors
448 Colors = self.color_scheme_table.active_colors
454 ColorsNormal = Colors.Normal
449 ColorsNormal = Colors.Normal
455 tpl_line = '%%s%s%%s %s%%s' % (Colors.lineno, ColorsNormal)
450 tpl_line = '%%s%s%%s %s%%s' % (Colors.lineno, ColorsNormal)
456 tpl_line_em = '%%s%s%%s %s%%s%s' % (Colors.linenoEm, Colors.line, ColorsNormal)
451 tpl_line_em = '%%s%s%%s %s%%s%s' % (Colors.linenoEm, Colors.line, ColorsNormal)
457 src = []
452 src = []
458 for lineno in range(first, last+1):
453 for lineno in range(first, last+1):
459 line = linecache.getline(filename, lineno)
454 line = linecache.getline(filename, lineno)
460 if not line:
455 if not line:
461 break
456 break
462
457
463 if lineno == self.curframe.f_lineno:
458 if lineno == self.curframe.f_lineno:
464 line = self.__format_line(tpl_line_em, filename, lineno, line, arrow = True)
459 line = self.__format_line(tpl_line_em, filename, lineno, line, arrow = True)
465 else:
460 else:
466 line = self.__format_line(tpl_line, filename, lineno, line, arrow = False)
461 line = self.__format_line(tpl_line, filename, lineno, line, arrow = False)
467
462
468 src.append(line)
463 src.append(line)
469 self.lineno = lineno
464 self.lineno = lineno
470
465
471 print >>Term.cout, ''.join(src)
466 print >>Term.cout, ''.join(src)
472
467
473 except KeyboardInterrupt:
468 except KeyboardInterrupt:
474 pass
469 pass
475
470
476 def do_list(self, arg):
471 def do_list(self, arg):
477 self.lastcmd = 'list'
472 self.lastcmd = 'list'
478 last = None
473 last = None
479 if arg:
474 if arg:
480 try:
475 try:
481 x = eval(arg, {}, {})
476 x = eval(arg, {}, {})
482 if type(x) == type(()):
477 if type(x) == type(()):
483 first, last = x
478 first, last = x
484 first = int(first)
479 first = int(first)
485 last = int(last)
480 last = int(last)
486 if last < first:
481 if last < first:
487 # Assume it's a count
482 # Assume it's a count
488 last = first + last
483 last = first + last
489 else:
484 else:
490 first = max(1, int(x) - 5)
485 first = max(1, int(x) - 5)
491 except:
486 except:
492 print '*** Error in argument:', `arg`
487 print '*** Error in argument:', `arg`
493 return
488 return
494 elif self.lineno is None:
489 elif self.lineno is None:
495 first = max(1, self.curframe.f_lineno - 5)
490 first = max(1, self.curframe.f_lineno - 5)
496 else:
491 else:
497 first = self.lineno + 1
492 first = self.lineno + 1
498 if last is None:
493 if last is None:
499 last = first + 10
494 last = first + 10
500 self.print_list_lines(self.curframe.f_code.co_filename, first, last)
495 self.print_list_lines(self.curframe.f_code.co_filename, first, last)
501
496
502 do_l = do_list
497 do_l = do_list
503
498
504 def do_pdef(self, arg):
499 def do_pdef(self, arg):
505 """The debugger interface to magic_pdef"""
500 """The debugger interface to magic_pdef"""
506 namespaces = [('Locals', self.curframe.f_locals),
501 namespaces = [('Locals', self.curframe.f_locals),
507 ('Globals', self.curframe.f_globals)]
502 ('Globals', self.curframe.f_globals)]
508 __IPYTHON__.magic_pdef(arg, namespaces=namespaces)
503 __IPYTHON__.magic_pdef(arg, namespaces=namespaces)
509
504
510 def do_pdoc(self, arg):
505 def do_pdoc(self, arg):
511 """The debugger interface to magic_pdoc"""
506 """The debugger interface to magic_pdoc"""
512 namespaces = [('Locals', self.curframe.f_locals),
507 namespaces = [('Locals', self.curframe.f_locals),
513 ('Globals', self.curframe.f_globals)]
508 ('Globals', self.curframe.f_globals)]
514 __IPYTHON__.magic_pdoc(arg, namespaces=namespaces)
509 __IPYTHON__.magic_pdoc(arg, namespaces=namespaces)
515
510
516 def do_pinfo(self, arg):
511 def do_pinfo(self, arg):
517 """The debugger equivalant of ?obj"""
512 """The debugger equivalant of ?obj"""
518 namespaces = [('Locals', self.curframe.f_locals),
513 namespaces = [('Locals', self.curframe.f_locals),
519 ('Globals', self.curframe.f_globals)]
514 ('Globals', self.curframe.f_globals)]
520 __IPYTHON__.magic_pinfo("pinfo %s" % arg, namespaces=namespaces)
515 __IPYTHON__.magic_pinfo("pinfo %s" % arg, namespaces=namespaces)
@@ -1,130 +1,139 b''
1 __all__ = ["generic"]
1 #Name: simplegeneric
2
2 #Version: 0.6
3 from types import ClassType, InstanceType
3 #Summary: Simple generic functions (similar to Python's own len(), pickle.dump(), etc.)
4 classtypes = type, ClassType
4 #Home-page: http://cheeseshop.python.org/pypi/simplegeneric
5 #Author: Phillip J. Eby
6 #Author-email: peak@eby-sarna.com
7 #License: PSF or ZPL
5
8
6 # This is version 0.6 of Philip J. Eby's simplegeneric module
9 # This is version 0.6 of Philip J. Eby's simplegeneric module
7 # (http://cheeseshop.python.org/pypi/simplegeneric) patched to work
10 # (http://cheeseshop.python.org/pypi/simplegeneric) patched to work
8 # with Python 2.3 (which doesn't support assigning to __name__)
11 # with Python 2.3 (which doesn't support assigning to __name__)
9
12
13 __all__ = ["generic"]
14
15
16 from types import ClassType, InstanceType
17 classtypes = type, ClassType
18
10 def generic(func):
19 def generic(func):
11 """Create a simple generic function"""
20 """Create a simple generic function"""
12
21
13 _sentinel = object()
22 _sentinel = object()
14
23
15 def _by_class(*args, **kw):
24 def _by_class(*args, **kw):
16 cls = args[0].__class__
25 cls = args[0].__class__
17 for t in type(cls.__name__, (cls,object), {}).__mro__:
26 for t in type(cls.__name__, (cls,object), {}).__mro__:
18 f = _gbt(t, _sentinel)
27 f = _gbt(t, _sentinel)
19 if f is not _sentinel:
28 if f is not _sentinel:
20 return f(*args, **kw)
29 return f(*args, **kw)
21 else:
30 else:
22 return func(*args, **kw)
31 return func(*args, **kw)
23
32
24 _by_type = {object: func, InstanceType: _by_class}
33 _by_type = {object: func, InstanceType: _by_class}
25 _gbt = _by_type.get
34 _gbt = _by_type.get
26
35
27 def when_type(t):
36 def when_type(t):
28 """Decorator to add a method that will be called for type `t`"""
37 """Decorator to add a method that will be called for type `t`"""
29 if not isinstance(t, classtypes):
38 if not isinstance(t, classtypes):
30 raise TypeError(
39 raise TypeError(
31 "%r is not a type or class" % (t,)
40 "%r is not a type or class" % (t,)
32 )
41 )
33 def decorate(f):
42 def decorate(f):
34 if _by_type.setdefault(t,f) is not f:
43 if _by_type.setdefault(t,f) is not f:
35 raise TypeError(
44 raise TypeError(
36 "%r already has method for type %r" % (func, t)
45 "%r already has method for type %r" % (func, t)
37 )
46 )
38 return f
47 return f
39 return decorate
48 return decorate
40
49
41
50
42
51
43
52
44
53
45
54
46 _by_object = {}
55 _by_object = {}
47 _gbo = _by_object.get
56 _gbo = _by_object.get
48
57
49 def when_object(o):
58 def when_object(o):
50 """Decorator to add a method that will be called for object `o`"""
59 """Decorator to add a method that will be called for object `o`"""
51 def decorate(f):
60 def decorate(f):
52 if _by_object.setdefault(id(o), (o,f))[1] is not f:
61 if _by_object.setdefault(id(o), (o,f))[1] is not f:
53 raise TypeError(
62 raise TypeError(
54 "%r already has method for object %r" % (func, o)
63 "%r already has method for object %r" % (func, o)
55 )
64 )
56 return f
65 return f
57 return decorate
66 return decorate
58
67
59
68
60 def dispatch(*args, **kw):
69 def dispatch(*args, **kw):
61 f = _gbo(id(args[0]), _sentinel)
70 f = _gbo(id(args[0]), _sentinel)
62 if f is _sentinel:
71 if f is _sentinel:
63 for t in type(args[0]).__mro__:
72 for t in type(args[0]).__mro__:
64 f = _gbt(t, _sentinel)
73 f = _gbt(t, _sentinel)
65 if f is not _sentinel:
74 if f is not _sentinel:
66 return f(*args, **kw)
75 return f(*args, **kw)
67 else:
76 else:
68 return func(*args, **kw)
77 return func(*args, **kw)
69 else:
78 else:
70 return f[1](*args, **kw)
79 return f[1](*args, **kw)
71
80
72 try:
81 try:
73 dispatch.__name__ = func.__name__
82 dispatch.__name__ = func.__name__
74 except TypeError:
83 except TypeError:
75 pass
84 pass
76 dispatch.__dict__ = func.__dict__.copy()
85 dispatch.__dict__ = func.__dict__.copy()
77 dispatch.__doc__ = func.__doc__
86 dispatch.__doc__ = func.__doc__
78 dispatch.__module__ = func.__module__
87 dispatch.__module__ = func.__module__
79
88
80 dispatch.when_type = when_type
89 dispatch.when_type = when_type
81 dispatch.when_object = when_object
90 dispatch.when_object = when_object
82 dispatch.default = func
91 dispatch.default = func
83 dispatch.has_object = lambda o: id(o) in _by_object
92 dispatch.has_object = lambda o: id(o) in _by_object
84 dispatch.has_type = lambda t: t in _by_type
93 dispatch.has_type = lambda t: t in _by_type
85 return dispatch
94 return dispatch
86
95
87
96
88
97
89
98
90 def test_suite():
99 def test_suite():
91 import doctest
100 import doctest
92 return doctest.DocFileSuite(
101 return doctest.DocFileSuite(
93 'README.txt',
102 'README.txt',
94 optionflags=doctest.ELLIPSIS|doctest.REPORT_ONLY_FIRST_FAILURE,
103 optionflags=doctest.ELLIPSIS|doctest.REPORT_ONLY_FIRST_FAILURE,
95 )
104 )
96
105
97
106
98
107
99
108
100
109
101
110
102
111
103
112
104
113
105
114
106
115
107
116
108
117
109
118
110
119
111
120
112
121
113
122
114
123
115
124
116
125
117
126
118
127
119
128
120
129
121
130
122
131
123
132
124
133
125
134
126
135
127
136
128
137
129
138
130
139
@@ -1,7323 +1,7327 b''
1 2007-12-28 Ville Vainio <vivainio@gmail.com>
1 2007-12-28 Ville Vainio <vivainio@gmail.com>
2
2
3 * ipy_server.py: TCP socket server for "remote control" of an IPython
3 * ipy_server.py: TCP socket server for "remote control" of an IPython
4 instance.
4 instance.
5
6 * Debugger.py: Change to PSF license
7
8 * simplegeneric.py: Add license & author notes.
5
9
6 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
10 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
7
11
8 * IPython/dtutils.py: Add utilities for interactively running
12 * IPython/dtutils.py: Add utilities for interactively running
9 doctests. Still needs work to more easily handle the namespace of
13 doctests. Still needs work to more easily handle the namespace of
10 the package one may be working on, but the basics are in place.
14 the package one may be working on, but the basics are in place.
11
15
12 2007-12-27 Ville Vainio <vivainio@gmail.com>
16 2007-12-27 Ville Vainio <vivainio@gmail.com>
13
17
14 * ipy_completers.py: Applied arno's patch to get proper list of
18 * ipy_completers.py: Applied arno's patch to get proper list of
15 packages in import completer. Closes #196.
19 packages in import completer. Closes #196.
16
20
17 2007-12-20 Ville Vainio <vivainio@gmail.com>
21 2007-12-20 Ville Vainio <vivainio@gmail.com>
18
22
19 * completer.py, generics.py(complete_object): Allow
23 * completer.py, generics.py(complete_object): Allow
20 custom complers based on python objects via simplegeneric.
24 custom complers based on python objects via simplegeneric.
21 See generics.py / my_demo_complete_object
25 See generics.py / my_demo_complete_object
22
26
23 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
27 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
24
28
25 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
29 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
26 behavior to prompt objects, useful for display hooks to adjust
30 behavior to prompt objects, useful for display hooks to adjust
27 themselves depending on whether prompts will be there or not.
31 themselves depending on whether prompts will be there or not.
28
32
29 2007-12-13 Ville Vainio <vivainio@gmail.com>
33 2007-12-13 Ville Vainio <vivainio@gmail.com>
30
34
31 * iplib.py(raw_input): unix readline does not allow unicode in
35 * iplib.py(raw_input): unix readline does not allow unicode in
32 history, encode to normal string. After patch by Tiago.
36 history, encode to normal string. After patch by Tiago.
33 Close #201
37 Close #201
34
38
35 2007-12-12 Ville Vainio <vivainio@gmail.com>
39 2007-12-12 Ville Vainio <vivainio@gmail.com>
36
40
37 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
41 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
38 current directory.
42 current directory.
39
43
40 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
44 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
41
45
42 * IPython/Shell.py (_select_shell): add support for controlling
46 * IPython/Shell.py (_select_shell): add support for controlling
43 the pylab threading mode directly at the command line, without
47 the pylab threading mode directly at the command line, without
44 having to modify MPL config files. Added unit tests for this
48 having to modify MPL config files. Added unit tests for this
45 feature, though manual/docs update is still pending, will do later.
49 feature, though manual/docs update is still pending, will do later.
46
50
47 2007-12-11 Ville Vainio <vivainio@gmail.com>
51 2007-12-11 Ville Vainio <vivainio@gmail.com>
48
52
49 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
53 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
50 use in scripts)
54 use in scripts)
51
55
52 2007-12-07 Ville Vainio <vivainio@gmail.com>
56 2007-12-07 Ville Vainio <vivainio@gmail.com>
53
57
54 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
58 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
55 anymore (to \#) - even if it is a comment char that is implicitly
59 anymore (to \#) - even if it is a comment char that is implicitly
56 escaped in some unix shells in interactive mode, it is ok to leave
60 escaped in some unix shells in interactive mode, it is ok to leave
57 it in IPython as such.
61 it in IPython as such.
58
62
59
63
60 2007-12-01 Robert Kern <robert.kern@gmail.com>
64 2007-12-01 Robert Kern <robert.kern@gmail.com>
61
65
62 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
66 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
63 inspect.findsource(). It can now find source lines inside zipped
67 inspect.findsource(). It can now find source lines inside zipped
64 packages.
68 packages.
65
69
66 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
70 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
67 in the frame's namespace before trusting the filename in the code object
71 in the frame's namespace before trusting the filename in the code object
68 which created the frame.
72 which created the frame.
69
73
70 2007-11-29 *** Released version 0.8.2
74 2007-11-29 *** Released version 0.8.2
71
75
72 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
76 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
73
77
74 * IPython/Logger.py (Logger.logstop): add a proper logstop()
78 * IPython/Logger.py (Logger.logstop): add a proper logstop()
75 method to fully stop the logger, along with a corresponding
79 method to fully stop the logger, along with a corresponding
76 %logstop magic for interactive use.
80 %logstop magic for interactive use.
77
81
78 * IPython/Extensions/ipy_host_completers.py: added new host
82 * IPython/Extensions/ipy_host_completers.py: added new host
79 completers functionality, contributed by Gael Pasgrimaud
83 completers functionality, contributed by Gael Pasgrimaud
80 <gawel-AT-afpy.org>.
84 <gawel-AT-afpy.org>.
81
85
82 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
86 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
83
87
84 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
88 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
85 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
89 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
86 options handling. Unicode fix in %whos (committed a while ago)
90 options handling. Unicode fix in %whos (committed a while ago)
87 was also contributed by Paul.
91 was also contributed by Paul.
88
92
89 2007-11-23 Darren Dale <darren.dale@cornell.edu>
93 2007-11-23 Darren Dale <darren.dale@cornell.edu>
90 * ipy_traits_completer.py: let traits_completer respect the user's
94 * ipy_traits_completer.py: let traits_completer respect the user's
91 readline_omit__names setting.
95 readline_omit__names setting.
92
96
93 2007-11-08 Ville Vainio <vivainio@gmail.com>
97 2007-11-08 Ville Vainio <vivainio@gmail.com>
94
98
95 * ipy_completers.py (import completer): assume 'xml' module exists.
99 * ipy_completers.py (import completer): assume 'xml' module exists.
96 Do not add every module twice anymore. Closes #196.
100 Do not add every module twice anymore. Closes #196.
97
101
98 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
102 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
99 completer that uses apt-cache to search for existing packages.
103 completer that uses apt-cache to search for existing packages.
100
104
101 2007-11-06 Ville Vainio <vivainio@gmail.com>
105 2007-11-06 Ville Vainio <vivainio@gmail.com>
102
106
103 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
107 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
104 true. Closes #194.
108 true. Closes #194.
105
109
106 2007-11-01 Brian Granger <ellisonbg@gmail.com>
110 2007-11-01 Brian Granger <ellisonbg@gmail.com>
107
111
108 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
112 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
109 working with OS X 10.5 libedit implementation of readline.
113 working with OS X 10.5 libedit implementation of readline.
110
114
111 2007-10-24 Ville Vainio <vivainio@gmail.com>
115 2007-10-24 Ville Vainio <vivainio@gmail.com>
112
116
113 * iplib.py(user_setup): To route around buggy installations where
117 * iplib.py(user_setup): To route around buggy installations where
114 UserConfig is not available, create a minimal _ipython.
118 UserConfig is not available, create a minimal _ipython.
115
119
116 * iplib.py: Unicode fixes from Jorgen.
120 * iplib.py: Unicode fixes from Jorgen.
117
121
118 * genutils.py: Slist now has new method 'fields()' for extraction of
122 * genutils.py: Slist now has new method 'fields()' for extraction of
119 whitespace-separated fields from line-oriented data.
123 whitespace-separated fields from line-oriented data.
120
124
121 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
125 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
122
126
123 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
127 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
124 when querying objects with no __class__ attribute (such as
128 when querying objects with no __class__ attribute (such as
125 f2py-generated modules).
129 f2py-generated modules).
126
130
127 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
131 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
128
132
129 * IPython/Magic.py (magic_time): track compilation time and report
133 * IPython/Magic.py (magic_time): track compilation time and report
130 it if longer than 0.1s (fix done to %time and %timeit). After a
134 it if longer than 0.1s (fix done to %time and %timeit). After a
131 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
135 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
132
136
133 2007-09-18 Ville Vainio <vivainio@gmail.com>
137 2007-09-18 Ville Vainio <vivainio@gmail.com>
134
138
135 * genutils.py(make_quoted_expr): Do not use Itpl, it does
139 * genutils.py(make_quoted_expr): Do not use Itpl, it does
136 not support unicode at the moment. Fixes (many) magic calls with
140 not support unicode at the moment. Fixes (many) magic calls with
137 special characters.
141 special characters.
138
142
139 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
143 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
140
144
141 * IPython/genutils.py (doctest_reload): expose the doctest
145 * IPython/genutils.py (doctest_reload): expose the doctest
142 reloader to the user so that people can easily reset doctest while
146 reloader to the user so that people can easily reset doctest while
143 using it interactively. Fixes a problem reported by Jorgen.
147 using it interactively. Fixes a problem reported by Jorgen.
144
148
145 * IPython/iplib.py (InteractiveShell.__init__): protect the
149 * IPython/iplib.py (InteractiveShell.__init__): protect the
146 FakeModule instances used for __main__ in %run calls from
150 FakeModule instances used for __main__ in %run calls from
147 deletion, so that user code defined in them isn't left with
151 deletion, so that user code defined in them isn't left with
148 dangling references due to the Python module deletion machinery.
152 dangling references due to the Python module deletion machinery.
149 This should fix the problems reported by Darren.
153 This should fix the problems reported by Darren.
150
154
151 2007-09-10 Darren Dale <dd55@cornell.edu>
155 2007-09-10 Darren Dale <dd55@cornell.edu>
152
156
153 * Cleanup of IPShellQt and IPShellQt4
157 * Cleanup of IPShellQt and IPShellQt4
154
158
155 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
159 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
156
160
157 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
161 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
158 doctest support.
162 doctest support.
159
163
160 * IPython/iplib.py (safe_execfile): minor docstring improvements.
164 * IPython/iplib.py (safe_execfile): minor docstring improvements.
161
165
162 2007-09-08 Ville Vainio <vivainio@gmail.com>
166 2007-09-08 Ville Vainio <vivainio@gmail.com>
163
167
164 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
168 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
165 directory, not the target directory.
169 directory, not the target directory.
166
170
167 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
171 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
168 exception that won't print the tracebacks. Switched many magics to
172 exception that won't print the tracebacks. Switched many magics to
169 raise them on error situations, also GetoptError is not printed
173 raise them on error situations, also GetoptError is not printed
170 anymore.
174 anymore.
171
175
172 2007-09-07 Ville Vainio <vivainio@gmail.com>
176 2007-09-07 Ville Vainio <vivainio@gmail.com>
173
177
174 * iplib.py: do not auto-alias "dir", it screws up other dir auto
178 * iplib.py: do not auto-alias "dir", it screws up other dir auto
175 aliases.
179 aliases.
176
180
177 * genutils.py: SList.grep() implemented.
181 * genutils.py: SList.grep() implemented.
178
182
179 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
183 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
180 for easy "out of the box" setup of several common editors, so that
184 for easy "out of the box" setup of several common editors, so that
181 e.g. '%edit os.path.isfile' will jump to the correct line
185 e.g. '%edit os.path.isfile' will jump to the correct line
182 automatically. Contributions for command lines of your favourite
186 automatically. Contributions for command lines of your favourite
183 editors welcome.
187 editors welcome.
184
188
185 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
189 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
186
190
187 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
191 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
188 preventing source display in certain cases. In reality I think
192 preventing source display in certain cases. In reality I think
189 the problem is with Ubuntu's Python build, but this change works
193 the problem is with Ubuntu's Python build, but this change works
190 around the issue in some cases (not in all, unfortunately). I'd
194 around the issue in some cases (not in all, unfortunately). I'd
191 filed a Python bug on this with more details, but in the change of
195 filed a Python bug on this with more details, but in the change of
192 bug trackers it seems to have been lost.
196 bug trackers it seems to have been lost.
193
197
194 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
198 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
195 not the same, it's not self-documenting, doesn't allow range
199 not the same, it's not self-documenting, doesn't allow range
196 selection, and sorts alphabetically instead of numerically.
200 selection, and sorts alphabetically instead of numerically.
197 (magic_r): restore %r. No, "up + enter. One char magic" is not
201 (magic_r): restore %r. No, "up + enter. One char magic" is not
198 the same thing, since %r takes parameters to allow fast retrieval
202 the same thing, since %r takes parameters to allow fast retrieval
199 of old commands. I've received emails from users who use this a
203 of old commands. I've received emails from users who use this a
200 LOT, so it stays.
204 LOT, so it stays.
201 (magic_automagic): restore %automagic. "use _ip.option.automagic"
205 (magic_automagic): restore %automagic. "use _ip.option.automagic"
202 is not a valid replacement b/c it doesn't provide an complete
206 is not a valid replacement b/c it doesn't provide an complete
203 explanation (which the automagic docstring does).
207 explanation (which the automagic docstring does).
204 (magic_autocall): restore %autocall, with improved docstring.
208 (magic_autocall): restore %autocall, with improved docstring.
205 Same argument as for others, "use _ip.options.autocall" is not a
209 Same argument as for others, "use _ip.options.autocall" is not a
206 valid replacement.
210 valid replacement.
207 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
211 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
208 tutorials and online docs.
212 tutorials and online docs.
209
213
210 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
214 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
211
215
212 * IPython/usage.py (quick_reference): mention magics in quickref,
216 * IPython/usage.py (quick_reference): mention magics in quickref,
213 modified main banner to mention %quickref.
217 modified main banner to mention %quickref.
214
218
215 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
219 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
216
220
217 2007-09-06 Ville Vainio <vivainio@gmail.com>
221 2007-09-06 Ville Vainio <vivainio@gmail.com>
218
222
219 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
223 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
220 Callable aliases now pass the _ip as first arg. This breaks
224 Callable aliases now pass the _ip as first arg. This breaks
221 compatibility with earlier 0.8.2.svn series! (though they should
225 compatibility with earlier 0.8.2.svn series! (though they should
222 not have been in use yet outside these few extensions)
226 not have been in use yet outside these few extensions)
223
227
224 2007-09-05 Ville Vainio <vivainio@gmail.com>
228 2007-09-05 Ville Vainio <vivainio@gmail.com>
225
229
226 * external/mglob.py: expand('dirname') => ['dirname'], instead
230 * external/mglob.py: expand('dirname') => ['dirname'], instead
227 of ['dirname/foo','dirname/bar', ...].
231 of ['dirname/foo','dirname/bar', ...].
228
232
229 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
233 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
230 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
234 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
231 is useful for others as well).
235 is useful for others as well).
232
236
233 * iplib.py: on callable aliases (as opposed to old style aliases),
237 * iplib.py: on callable aliases (as opposed to old style aliases),
234 do var_expand() immediately, and use make_quoted_expr instead
238 do var_expand() immediately, and use make_quoted_expr instead
235 of hardcoded r"""
239 of hardcoded r"""
236
240
237 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
241 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
238 if not available load ipy_fsops.py for cp, mv, etc. replacements
242 if not available load ipy_fsops.py for cp, mv, etc. replacements
239
243
240 * OInspect.py, ipy_which.py: improve %which and obj? for callable
244 * OInspect.py, ipy_which.py: improve %which and obj? for callable
241 aliases
245 aliases
242
246
243 2007-09-04 Ville Vainio <vivainio@gmail.com>
247 2007-09-04 Ville Vainio <vivainio@gmail.com>
244
248
245 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
249 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
246 Relicensed under BSD with the authors approval.
250 Relicensed under BSD with the authors approval.
247
251
248 * ipmaker.py, usage.py: Remove %magic from default banner, improve
252 * ipmaker.py, usage.py: Remove %magic from default banner, improve
249 %quickref
253 %quickref
250
254
251 2007-09-03 Ville Vainio <vivainio@gmail.com>
255 2007-09-03 Ville Vainio <vivainio@gmail.com>
252
256
253 * Magic.py: %time now passes expression through prefilter,
257 * Magic.py: %time now passes expression through prefilter,
254 allowing IPython syntax.
258 allowing IPython syntax.
255
259
256 2007-09-01 Ville Vainio <vivainio@gmail.com>
260 2007-09-01 Ville Vainio <vivainio@gmail.com>
257
261
258 * ipmaker.py: Always show full traceback when newstyle config fails
262 * ipmaker.py: Always show full traceback when newstyle config fails
259
263
260 2007-08-27 Ville Vainio <vivainio@gmail.com>
264 2007-08-27 Ville Vainio <vivainio@gmail.com>
261
265
262 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
266 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
263
267
264 2007-08-26 Ville Vainio <vivainio@gmail.com>
268 2007-08-26 Ville Vainio <vivainio@gmail.com>
265
269
266 * ipmaker.py: Command line args have the highest priority again
270 * ipmaker.py: Command line args have the highest priority again
267
271
268 * iplib.py, ipmaker.py: -i command line argument now behaves as in
272 * iplib.py, ipmaker.py: -i command line argument now behaves as in
269 normal python, i.e. leaves the IPython session running after -c
273 normal python, i.e. leaves the IPython session running after -c
270 command or running a batch file from command line.
274 command or running a batch file from command line.
271
275
272 2007-08-22 Ville Vainio <vivainio@gmail.com>
276 2007-08-22 Ville Vainio <vivainio@gmail.com>
273
277
274 * iplib.py: no extra empty (last) line in raw hist w/ multiline
278 * iplib.py: no extra empty (last) line in raw hist w/ multiline
275 statements
279 statements
276
280
277 * logger.py: Fix bug where blank lines in history were not
281 * logger.py: Fix bug where blank lines in history were not
278 added until AFTER adding the current line; translated and raw
282 added until AFTER adding the current line; translated and raw
279 history should finally be in sync with prompt now.
283 history should finally be in sync with prompt now.
280
284
281 * ipy_completers.py: quick_completer now makes it easy to create
285 * ipy_completers.py: quick_completer now makes it easy to create
282 trivial custom completers
286 trivial custom completers
283
287
284 * clearcmd.py: shadow history compression & erasing, fixed input hist
288 * clearcmd.py: shadow history compression & erasing, fixed input hist
285 clearing.
289 clearing.
286
290
287 * envpersist.py, history.py: %env (sh profile only), %hist completers
291 * envpersist.py, history.py: %env (sh profile only), %hist completers
288
292
289 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
293 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
290 term title now include the drive letter, and always use / instead of
294 term title now include the drive letter, and always use / instead of
291 os.sep (as per recommended approach for win32 ipython in general).
295 os.sep (as per recommended approach for win32 ipython in general).
292
296
293 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
297 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
294 plain python scripts from ipykit command line by running
298 plain python scripts from ipykit command line by running
295 "py myscript.py", even w/o installed python.
299 "py myscript.py", even w/o installed python.
296
300
297 2007-08-21 Ville Vainio <vivainio@gmail.com>
301 2007-08-21 Ville Vainio <vivainio@gmail.com>
298
302
299 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
303 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
300 (for backwards compatibility)
304 (for backwards compatibility)
301
305
302 * history.py: switch back to %hist -t from %hist -r as default.
306 * history.py: switch back to %hist -t from %hist -r as default.
303 At least until raw history is fixed for good.
307 At least until raw history is fixed for good.
304
308
305 2007-08-20 Ville Vainio <vivainio@gmail.com>
309 2007-08-20 Ville Vainio <vivainio@gmail.com>
306
310
307 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
311 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
308 locate alias redeclarations etc. Also, avoid handling
312 locate alias redeclarations etc. Also, avoid handling
309 _ip.IP.alias_table directly, prefer using _ip.defalias.
313 _ip.IP.alias_table directly, prefer using _ip.defalias.
310
314
311
315
312 2007-08-15 Ville Vainio <vivainio@gmail.com>
316 2007-08-15 Ville Vainio <vivainio@gmail.com>
313
317
314 * prefilter.py: ! is now always served first
318 * prefilter.py: ! is now always served first
315
319
316 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
320 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
317
321
318 * IPython/iplib.py (safe_execfile): fix the SystemExit
322 * IPython/iplib.py (safe_execfile): fix the SystemExit
319 auto-suppression code to work in Python2.4 (the internal structure
323 auto-suppression code to work in Python2.4 (the internal structure
320 of that exception changed and I'd only tested the code with 2.5).
324 of that exception changed and I'd only tested the code with 2.5).
321 Bug reported by a SciPy attendee.
325 Bug reported by a SciPy attendee.
322
326
323 2007-08-13 Ville Vainio <vivainio@gmail.com>
327 2007-08-13 Ville Vainio <vivainio@gmail.com>
324
328
325 * prefilter.py: reverted !c:/bin/foo fix, made % in
329 * prefilter.py: reverted !c:/bin/foo fix, made % in
326 multiline specials work again
330 multiline specials work again
327
331
328 2007-08-13 Ville Vainio <vivainio@gmail.com>
332 2007-08-13 Ville Vainio <vivainio@gmail.com>
329
333
330 * prefilter.py: Take more care to special-case !, so that
334 * prefilter.py: Take more care to special-case !, so that
331 !c:/bin/foo.exe works.
335 !c:/bin/foo.exe works.
332
336
333 * setup.py: if we are building eggs, strip all docs and
337 * setup.py: if we are building eggs, strip all docs and
334 examples (it doesn't make sense to bytecompile examples,
338 examples (it doesn't make sense to bytecompile examples,
335 and docs would be in an awkward place anyway).
339 and docs would be in an awkward place anyway).
336
340
337 * Ryan Krauss' patch fixes start menu shortcuts when IPython
341 * Ryan Krauss' patch fixes start menu shortcuts when IPython
338 is installed into a directory that has spaces in the name.
342 is installed into a directory that has spaces in the name.
339
343
340 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
344 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
341
345
342 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
346 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
343 doctest profile and %doctest_mode, so they actually generate the
347 doctest profile and %doctest_mode, so they actually generate the
344 blank lines needed by doctest to separate individual tests.
348 blank lines needed by doctest to separate individual tests.
345
349
346 * IPython/iplib.py (safe_execfile): modify so that running code
350 * IPython/iplib.py (safe_execfile): modify so that running code
347 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
351 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
348 doesn't get a printed traceback. Any other value in sys.exit(),
352 doesn't get a printed traceback. Any other value in sys.exit(),
349 including the empty call, still generates a traceback. This
353 including the empty call, still generates a traceback. This
350 enables use of %run without having to pass '-e' for codes that
354 enables use of %run without having to pass '-e' for codes that
351 correctly set the exit status flag.
355 correctly set the exit status flag.
352
356
353 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
357 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
354
358
355 * IPython/iplib.py (InteractiveShell.post_config_initialization):
359 * IPython/iplib.py (InteractiveShell.post_config_initialization):
356 fix problems with doctests failing when run inside IPython due to
360 fix problems with doctests failing when run inside IPython due to
357 IPython's modifications of sys.displayhook.
361 IPython's modifications of sys.displayhook.
358
362
359 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
363 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
360
364
361 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
365 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
362 a string with names.
366 a string with names.
363
367
364 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
368 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
365
369
366 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
370 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
367 magic to toggle on/off the doctest pasting support without having
371 magic to toggle on/off the doctest pasting support without having
368 to leave a session to switch to a separate profile.
372 to leave a session to switch to a separate profile.
369
373
370 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
374 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
371
375
372 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
376 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
373 introduce a blank line between inputs, to conform to doctest
377 introduce a blank line between inputs, to conform to doctest
374 requirements.
378 requirements.
375
379
376 * IPython/OInspect.py (Inspector.pinfo): fix another part where
380 * IPython/OInspect.py (Inspector.pinfo): fix another part where
377 auto-generated docstrings for new-style classes were showing up.
381 auto-generated docstrings for new-style classes were showing up.
378
382
379 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
383 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
380
384
381 * api_changes: Add new file to track backward-incompatible
385 * api_changes: Add new file to track backward-incompatible
382 user-visible changes.
386 user-visible changes.
383
387
384 2007-08-06 Ville Vainio <vivainio@gmail.com>
388 2007-08-06 Ville Vainio <vivainio@gmail.com>
385
389
386 * ipmaker.py: fix bug where user_config_ns didn't exist at all
390 * ipmaker.py: fix bug where user_config_ns didn't exist at all
387 before all the config files were handled.
391 before all the config files were handled.
388
392
389 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
393 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
390
394
391 * IPython/irunner.py (RunnerFactory): Add new factory class for
395 * IPython/irunner.py (RunnerFactory): Add new factory class for
392 creating reusable runners based on filenames.
396 creating reusable runners based on filenames.
393
397
394 * IPython/Extensions/ipy_profile_doctest.py: New profile for
398 * IPython/Extensions/ipy_profile_doctest.py: New profile for
395 doctest support. It sets prompts/exceptions as similar to
399 doctest support. It sets prompts/exceptions as similar to
396 standard Python as possible, so that ipython sessions in this
400 standard Python as possible, so that ipython sessions in this
397 profile can be easily pasted as doctests with minimal
401 profile can be easily pasted as doctests with minimal
398 modifications. It also enables pasting of doctests from external
402 modifications. It also enables pasting of doctests from external
399 sources (even if they have leading whitespace), so that you can
403 sources (even if they have leading whitespace), so that you can
400 rerun doctests from existing sources.
404 rerun doctests from existing sources.
401
405
402 * IPython/iplib.py (_prefilter): fix a buglet where after entering
406 * IPython/iplib.py (_prefilter): fix a buglet where after entering
403 some whitespace, the prompt would become a continuation prompt
407 some whitespace, the prompt would become a continuation prompt
404 with no way of exiting it other than Ctrl-C. This fix brings us
408 with no way of exiting it other than Ctrl-C. This fix brings us
405 into conformity with how the default python prompt works.
409 into conformity with how the default python prompt works.
406
410
407 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
411 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
408 Add support for pasting not only lines that start with '>>>', but
412 Add support for pasting not only lines that start with '>>>', but
409 also with ' >>>'. That is, arbitrary whitespace can now precede
413 also with ' >>>'. That is, arbitrary whitespace can now precede
410 the prompts. This makes the system useful for pasting doctests
414 the prompts. This makes the system useful for pasting doctests
411 from docstrings back into a normal session.
415 from docstrings back into a normal session.
412
416
413 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
417 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
414
418
415 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
419 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
416 r1357, which had killed multiple invocations of an embedded
420 r1357, which had killed multiple invocations of an embedded
417 ipython (this means that example-embed has been broken for over 1
421 ipython (this means that example-embed has been broken for over 1
418 year!!!). Rather than possibly breaking the batch stuff for which
422 year!!!). Rather than possibly breaking the batch stuff for which
419 the code in iplib.py/interact was introduced, I worked around the
423 the code in iplib.py/interact was introduced, I worked around the
420 problem in the embedding class in Shell.py. We really need a
424 problem in the embedding class in Shell.py. We really need a
421 bloody test suite for this code, I'm sick of finding stuff that
425 bloody test suite for this code, I'm sick of finding stuff that
422 used to work breaking left and right every time I use an old
426 used to work breaking left and right every time I use an old
423 feature I hadn't touched in a few months.
427 feature I hadn't touched in a few months.
424 (kill_embedded): Add a new magic that only shows up in embedded
428 (kill_embedded): Add a new magic that only shows up in embedded
425 mode, to allow users to permanently deactivate an embedded instance.
429 mode, to allow users to permanently deactivate an embedded instance.
426
430
427 2007-08-01 Ville Vainio <vivainio@gmail.com>
431 2007-08-01 Ville Vainio <vivainio@gmail.com>
428
432
429 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
433 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
430 history gets out of sync on runlines (e.g. when running macros).
434 history gets out of sync on runlines (e.g. when running macros).
431
435
432 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
436 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
433
437
434 * IPython/Magic.py (magic_colors): fix win32-related error message
438 * IPython/Magic.py (magic_colors): fix win32-related error message
435 that could appear under *nix when readline was missing. Patch by
439 that could appear under *nix when readline was missing. Patch by
436 Scott Jackson, closes #175.
440 Scott Jackson, closes #175.
437
441
438 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
442 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
439
443
440 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
444 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
441 completer that it traits-aware, so that traits objects don't show
445 completer that it traits-aware, so that traits objects don't show
442 all of their internal attributes all the time.
446 all of their internal attributes all the time.
443
447
444 * IPython/genutils.py (dir2): moved this code from inside
448 * IPython/genutils.py (dir2): moved this code from inside
445 completer.py to expose it publicly, so I could use it in the
449 completer.py to expose it publicly, so I could use it in the
446 wildcards bugfix.
450 wildcards bugfix.
447
451
448 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
452 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
449 Stefan with Traits.
453 Stefan with Traits.
450
454
451 * IPython/completer.py (Completer.attr_matches): change internal
455 * IPython/completer.py (Completer.attr_matches): change internal
452 var name from 'object' to 'obj', since 'object' is now a builtin
456 var name from 'object' to 'obj', since 'object' is now a builtin
453 and this can lead to weird bugs if reusing this code elsewhere.
457 and this can lead to weird bugs if reusing this code elsewhere.
454
458
455 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
459 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
456
460
457 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
461 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
458 'foo?' and update the code to prevent printing of default
462 'foo?' and update the code to prevent printing of default
459 docstrings that started appearing after I added support for
463 docstrings that started appearing after I added support for
460 new-style classes. The approach I'm using isn't ideal (I just
464 new-style classes. The approach I'm using isn't ideal (I just
461 special-case those strings) but I'm not sure how to more robustly
465 special-case those strings) but I'm not sure how to more robustly
462 differentiate between truly user-written strings and Python's
466 differentiate between truly user-written strings and Python's
463 automatic ones.
467 automatic ones.
464
468
465 2007-07-09 Ville Vainio <vivainio@gmail.com>
469 2007-07-09 Ville Vainio <vivainio@gmail.com>
466
470
467 * completer.py: Applied Matthew Neeley's patch:
471 * completer.py: Applied Matthew Neeley's patch:
468 Dynamic attributes from trait_names and _getAttributeNames are added
472 Dynamic attributes from trait_names and _getAttributeNames are added
469 to the list of tab completions, but when this happens, the attribute
473 to the list of tab completions, but when this happens, the attribute
470 list is turned into a set, so the attributes are unordered when
474 list is turned into a set, so the attributes are unordered when
471 printed, which makes it hard to find the right completion. This patch
475 printed, which makes it hard to find the right completion. This patch
472 turns this set back into a list and sort it.
476 turns this set back into a list and sort it.
473
477
474 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
478 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
475
479
476 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
480 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
477 classes in various inspector functions.
481 classes in various inspector functions.
478
482
479 2007-06-28 Ville Vainio <vivainio@gmail.com>
483 2007-06-28 Ville Vainio <vivainio@gmail.com>
480
484
481 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
485 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
482 Implement "shadow" namespace, and callable aliases that reside there.
486 Implement "shadow" namespace, and callable aliases that reside there.
483 Use them by:
487 Use them by:
484
488
485 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
489 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
486
490
487 foo hello world
491 foo hello world
488 (gets translated to:)
492 (gets translated to:)
489 _sh.foo(r"""hello world""")
493 _sh.foo(r"""hello world""")
490
494
491 In practice, this kind of alias can take the role of a magic function
495 In practice, this kind of alias can take the role of a magic function
492
496
493 * New generic inspect_object, called on obj? and obj??
497 * New generic inspect_object, called on obj? and obj??
494
498
495 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
499 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
496
500
497 * IPython/ultraTB.py (findsource): fix a problem with
501 * IPython/ultraTB.py (findsource): fix a problem with
498 inspect.getfile that can cause crashes during traceback construction.
502 inspect.getfile that can cause crashes during traceback construction.
499
503
500 2007-06-14 Ville Vainio <vivainio@gmail.com>
504 2007-06-14 Ville Vainio <vivainio@gmail.com>
501
505
502 * iplib.py (handle_auto): Try to use ascii for printing "--->"
506 * iplib.py (handle_auto): Try to use ascii for printing "--->"
503 autocall rewrite indication, becausesometimes unicode fails to print
507 autocall rewrite indication, becausesometimes unicode fails to print
504 properly (and you get ' - - - '). Use plain uncoloured ---> for
508 properly (and you get ' - - - '). Use plain uncoloured ---> for
505 unicode.
509 unicode.
506
510
507 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
511 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
508
512
509 . pickleshare 'hash' commands (hget, hset, hcompress,
513 . pickleshare 'hash' commands (hget, hset, hcompress,
510 hdict) for efficient shadow history storage.
514 hdict) for efficient shadow history storage.
511
515
512 2007-06-13 Ville Vainio <vivainio@gmail.com>
516 2007-06-13 Ville Vainio <vivainio@gmail.com>
513
517
514 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
518 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
515 Added kw arg 'interactive', tell whether vars should be visible
519 Added kw arg 'interactive', tell whether vars should be visible
516 with %whos.
520 with %whos.
517
521
518 2007-06-11 Ville Vainio <vivainio@gmail.com>
522 2007-06-11 Ville Vainio <vivainio@gmail.com>
519
523
520 * pspersistence.py, Magic.py, iplib.py: directory history now saved
524 * pspersistence.py, Magic.py, iplib.py: directory history now saved
521 to db
525 to db
522
526
523 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
527 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
524 Also, it exits IPython immediately after evaluating the command (just like
528 Also, it exits IPython immediately after evaluating the command (just like
525 std python)
529 std python)
526
530
527 2007-06-05 Walter Doerwald <walter@livinglogic.de>
531 2007-06-05 Walter Doerwald <walter@livinglogic.de>
528
532
529 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
533 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
530 Python string and captures the output. (Idea and original patch by
534 Python string and captures the output. (Idea and original patch by
531 Stefan van der Walt)
535 Stefan van der Walt)
532
536
533 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
537 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
534
538
535 * IPython/ultraTB.py (VerboseTB.text): update printing of
539 * IPython/ultraTB.py (VerboseTB.text): update printing of
536 exception types for Python 2.5 (now all exceptions in the stdlib
540 exception types for Python 2.5 (now all exceptions in the stdlib
537 are new-style classes).
541 are new-style classes).
538
542
539 2007-05-31 Walter Doerwald <walter@livinglogic.de>
543 2007-05-31 Walter Doerwald <walter@livinglogic.de>
540
544
541 * IPython/Extensions/igrid.py: Add new commands refresh and
545 * IPython/Extensions/igrid.py: Add new commands refresh and
542 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
546 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
543 the iterator once (refresh) or after every x seconds (refresh_timer).
547 the iterator once (refresh) or after every x seconds (refresh_timer).
544 Add a working implementation of "searchexpression", where the text
548 Add a working implementation of "searchexpression", where the text
545 entered is not the text to search for, but an expression that must
549 entered is not the text to search for, but an expression that must
546 be true. Added display of shortcuts to the menu. Added commands "pickinput"
550 be true. Added display of shortcuts to the menu. Added commands "pickinput"
547 and "pickinputattr" that put the object or attribute under the cursor
551 and "pickinputattr" that put the object or attribute under the cursor
548 in the input line. Split the statusbar to be able to display the currently
552 in the input line. Split the statusbar to be able to display the currently
549 active refresh interval. (Patch by Nik Tautenhahn)
553 active refresh interval. (Patch by Nik Tautenhahn)
550
554
551 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
555 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
552
556
553 * fixing set_term_title to use ctypes as default
557 * fixing set_term_title to use ctypes as default
554
558
555 * fixing set_term_title fallback to work when curent dir
559 * fixing set_term_title fallback to work when curent dir
556 is on a windows network share
560 is on a windows network share
557
561
558 2007-05-28 Ville Vainio <vivainio@gmail.com>
562 2007-05-28 Ville Vainio <vivainio@gmail.com>
559
563
560 * %cpaste: strip + with > from left (diffs).
564 * %cpaste: strip + with > from left (diffs).
561
565
562 * iplib.py: Fix crash when readline not installed
566 * iplib.py: Fix crash when readline not installed
563
567
564 2007-05-26 Ville Vainio <vivainio@gmail.com>
568 2007-05-26 Ville Vainio <vivainio@gmail.com>
565
569
566 * generics.py: intruduce easy to extend result_display generic
570 * generics.py: intruduce easy to extend result_display generic
567 function (using simplegeneric.py).
571 function (using simplegeneric.py).
568
572
569 * Fixed the append functionality of %set.
573 * Fixed the append functionality of %set.
570
574
571 2007-05-25 Ville Vainio <vivainio@gmail.com>
575 2007-05-25 Ville Vainio <vivainio@gmail.com>
572
576
573 * New magic: %rep (fetch / run old commands from history)
577 * New magic: %rep (fetch / run old commands from history)
574
578
575 * New extension: mglob (%mglob magic), for powerful glob / find /filter
579 * New extension: mglob (%mglob magic), for powerful glob / find /filter
576 like functionality
580 like functionality
577
581
578 % maghistory.py: %hist -g PATTERM greps the history for pattern
582 % maghistory.py: %hist -g PATTERM greps the history for pattern
579
583
580 2007-05-24 Walter Doerwald <walter@livinglogic.de>
584 2007-05-24 Walter Doerwald <walter@livinglogic.de>
581
585
582 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
586 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
583 browse the IPython input history
587 browse the IPython input history
584
588
585 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
589 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
586 (mapped to "i") can be used to put the object under the curser in the input
590 (mapped to "i") can be used to put the object under the curser in the input
587 line. pickinputattr (mapped to "I") does the same for the attribute under
591 line. pickinputattr (mapped to "I") does the same for the attribute under
588 the cursor.
592 the cursor.
589
593
590 2007-05-24 Ville Vainio <vivainio@gmail.com>
594 2007-05-24 Ville Vainio <vivainio@gmail.com>
591
595
592 * Grand magic cleansing (changeset [2380]):
596 * Grand magic cleansing (changeset [2380]):
593
597
594 * Introduce ipy_legacy.py where the following magics were
598 * Introduce ipy_legacy.py where the following magics were
595 moved:
599 moved:
596
600
597 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
601 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
598
602
599 If you need them, either use default profile or "import ipy_legacy"
603 If you need them, either use default profile or "import ipy_legacy"
600 in your ipy_user_conf.py
604 in your ipy_user_conf.py
601
605
602 * Move sh and scipy profile to Extensions from UserConfig. this implies
606 * Move sh and scipy profile to Extensions from UserConfig. this implies
603 you should not edit them, but you don't need to run %upgrade when
607 you should not edit them, but you don't need to run %upgrade when
604 upgrading IPython anymore.
608 upgrading IPython anymore.
605
609
606 * %hist/%history now operates in "raw" mode by default. To get the old
610 * %hist/%history now operates in "raw" mode by default. To get the old
607 behaviour, run '%hist -n' (native mode).
611 behaviour, run '%hist -n' (native mode).
608
612
609 * split ipy_stock_completers.py to ipy_stock_completers.py and
613 * split ipy_stock_completers.py to ipy_stock_completers.py and
610 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
614 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
611 installed as default.
615 installed as default.
612
616
613 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
617 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
614 handling.
618 handling.
615
619
616 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
620 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
617 input if readline is available.
621 input if readline is available.
618
622
619 2007-05-23 Ville Vainio <vivainio@gmail.com>
623 2007-05-23 Ville Vainio <vivainio@gmail.com>
620
624
621 * macro.py: %store uses __getstate__ properly
625 * macro.py: %store uses __getstate__ properly
622
626
623 * exesetup.py: added new setup script for creating
627 * exesetup.py: added new setup script for creating
624 standalone IPython executables with py2exe (i.e.
628 standalone IPython executables with py2exe (i.e.
625 no python installation required).
629 no python installation required).
626
630
627 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
631 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
628 its place.
632 its place.
629
633
630 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
634 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
631
635
632 2007-05-21 Ville Vainio <vivainio@gmail.com>
636 2007-05-21 Ville Vainio <vivainio@gmail.com>
633
637
634 * platutil_win32.py (set_term_title): handle
638 * platutil_win32.py (set_term_title): handle
635 failure of 'title' system call properly.
639 failure of 'title' system call properly.
636
640
637 2007-05-17 Walter Doerwald <walter@livinglogic.de>
641 2007-05-17 Walter Doerwald <walter@livinglogic.de>
638
642
639 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
643 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
640 (Bug detected by Paul Mueller).
644 (Bug detected by Paul Mueller).
641
645
642 2007-05-16 Ville Vainio <vivainio@gmail.com>
646 2007-05-16 Ville Vainio <vivainio@gmail.com>
643
647
644 * ipy_profile_sci.py, ipython_win_post_install.py: Create
648 * ipy_profile_sci.py, ipython_win_post_install.py: Create
645 new "sci" profile, effectively a modern version of the old
649 new "sci" profile, effectively a modern version of the old
646 "scipy" profile (which is now slated for deprecation).
650 "scipy" profile (which is now slated for deprecation).
647
651
648 2007-05-15 Ville Vainio <vivainio@gmail.com>
652 2007-05-15 Ville Vainio <vivainio@gmail.com>
649
653
650 * pycolorize.py, pycolor.1: Paul Mueller's patches that
654 * pycolorize.py, pycolor.1: Paul Mueller's patches that
651 make pycolorize read input from stdin when run without arguments.
655 make pycolorize read input from stdin when run without arguments.
652
656
653 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
657 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
654
658
655 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
659 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
656 it in sh profile (instead of ipy_system_conf.py).
660 it in sh profile (instead of ipy_system_conf.py).
657
661
658 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
662 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
659 aliases are now lower case on windows (MyCommand.exe => mycommand).
663 aliases are now lower case on windows (MyCommand.exe => mycommand).
660
664
661 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
665 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
662 Macros are now callable objects that inherit from ipapi.IPyAutocall,
666 Macros are now callable objects that inherit from ipapi.IPyAutocall,
663 i.e. get autocalled regardless of system autocall setting.
667 i.e. get autocalled regardless of system autocall setting.
664
668
665 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
669 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
666
670
667 * IPython/rlineimpl.py: check for clear_history in readline and
671 * IPython/rlineimpl.py: check for clear_history in readline and
668 make it a dummy no-op if not available. This function isn't
672 make it a dummy no-op if not available. This function isn't
669 guaranteed to be in the API and appeared in Python 2.4, so we need
673 guaranteed to be in the API and appeared in Python 2.4, so we need
670 to check it ourselves. Also, clean up this file quite a bit.
674 to check it ourselves. Also, clean up this file quite a bit.
671
675
672 * ipython.1: update man page and full manual with information
676 * ipython.1: update man page and full manual with information
673 about threads (remove outdated warning). Closes #151.
677 about threads (remove outdated warning). Closes #151.
674
678
675 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
679 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
676
680
677 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
681 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
678 in trunk (note that this made it into the 0.8.1 release already,
682 in trunk (note that this made it into the 0.8.1 release already,
679 but the changelogs didn't get coordinated). Many thanks to Gael
683 but the changelogs didn't get coordinated). Many thanks to Gael
680 Varoquaux <gael.varoquaux-AT-normalesup.org>
684 Varoquaux <gael.varoquaux-AT-normalesup.org>
681
685
682 2007-05-09 *** Released version 0.8.1
686 2007-05-09 *** Released version 0.8.1
683
687
684 2007-05-10 Walter Doerwald <walter@livinglogic.de>
688 2007-05-10 Walter Doerwald <walter@livinglogic.de>
685
689
686 * IPython/Extensions/igrid.py: Incorporate html help into
690 * IPython/Extensions/igrid.py: Incorporate html help into
687 the module, so we don't have to search for the file.
691 the module, so we don't have to search for the file.
688
692
689 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
693 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
690
694
691 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
695 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
692
696
693 2007-04-30 Ville Vainio <vivainio@gmail.com>
697 2007-04-30 Ville Vainio <vivainio@gmail.com>
694
698
695 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
699 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
696 user has illegal (non-ascii) home directory name
700 user has illegal (non-ascii) home directory name
697
701
698 2007-04-27 Ville Vainio <vivainio@gmail.com>
702 2007-04-27 Ville Vainio <vivainio@gmail.com>
699
703
700 * platutils_win32.py: implement set_term_title for windows
704 * platutils_win32.py: implement set_term_title for windows
701
705
702 * Update version number
706 * Update version number
703
707
704 * ipy_profile_sh.py: more informative prompt (2 dir levels)
708 * ipy_profile_sh.py: more informative prompt (2 dir levels)
705
709
706 2007-04-26 Walter Doerwald <walter@livinglogic.de>
710 2007-04-26 Walter Doerwald <walter@livinglogic.de>
707
711
708 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
712 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
709 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
713 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
710 bug discovered by Ville).
714 bug discovered by Ville).
711
715
712 2007-04-26 Ville Vainio <vivainio@gmail.com>
716 2007-04-26 Ville Vainio <vivainio@gmail.com>
713
717
714 * Extensions/ipy_completers.py: Olivier's module completer now
718 * Extensions/ipy_completers.py: Olivier's module completer now
715 saves the list of root modules if it takes > 4 secs on the first run.
719 saves the list of root modules if it takes > 4 secs on the first run.
716
720
717 * Magic.py (%rehashx): %rehashx now clears the completer cache
721 * Magic.py (%rehashx): %rehashx now clears the completer cache
718
722
719
723
720 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
724 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
721
725
722 * ipython.el: fix incorrect color scheme, reported by Stefan.
726 * ipython.el: fix incorrect color scheme, reported by Stefan.
723 Closes #149.
727 Closes #149.
724
728
725 * IPython/PyColorize.py (Parser.format2): fix state-handling
729 * IPython/PyColorize.py (Parser.format2): fix state-handling
726 logic. I still don't like how that code handles state, but at
730 logic. I still don't like how that code handles state, but at
727 least now it should be correct, if inelegant. Closes #146.
731 least now it should be correct, if inelegant. Closes #146.
728
732
729 2007-04-25 Ville Vainio <vivainio@gmail.com>
733 2007-04-25 Ville Vainio <vivainio@gmail.com>
730
734
731 * Extensions/ipy_which.py: added extension for %which magic, works
735 * Extensions/ipy_which.py: added extension for %which magic, works
732 a lot like unix 'which' but also finds and expands aliases, and
736 a lot like unix 'which' but also finds and expands aliases, and
733 allows wildcards.
737 allows wildcards.
734
738
735 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
739 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
736 as opposed to returning nothing.
740 as opposed to returning nothing.
737
741
738 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
742 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
739 ipy_stock_completers on default profile, do import on sh profile.
743 ipy_stock_completers on default profile, do import on sh profile.
740
744
741 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
745 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
742
746
743 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
747 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
744 like ipython.py foo.py which raised a IndexError.
748 like ipython.py foo.py which raised a IndexError.
745
749
746 2007-04-21 Ville Vainio <vivainio@gmail.com>
750 2007-04-21 Ville Vainio <vivainio@gmail.com>
747
751
748 * Extensions/ipy_extutil.py: added extension to manage other ipython
752 * Extensions/ipy_extutil.py: added extension to manage other ipython
749 extensions. Now only supports 'ls' == list extensions.
753 extensions. Now only supports 'ls' == list extensions.
750
754
751 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
755 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
752
756
753 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
757 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
754 would prevent use of the exception system outside of a running
758 would prevent use of the exception system outside of a running
755 IPython instance.
759 IPython instance.
756
760
757 2007-04-20 Ville Vainio <vivainio@gmail.com>
761 2007-04-20 Ville Vainio <vivainio@gmail.com>
758
762
759 * Extensions/ipy_render.py: added extension for easy
763 * Extensions/ipy_render.py: added extension for easy
760 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
764 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
761 'Iptl' template notation,
765 'Iptl' template notation,
762
766
763 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
767 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
764 safer & faster 'import' completer.
768 safer & faster 'import' completer.
765
769
766 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
770 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
767 and _ip.defalias(name, command).
771 and _ip.defalias(name, command).
768
772
769 * Extensions/ipy_exportdb.py: New extension for exporting all the
773 * Extensions/ipy_exportdb.py: New extension for exporting all the
770 %store'd data in a portable format (normal ipapi calls like
774 %store'd data in a portable format (normal ipapi calls like
771 defmacro() etc.)
775 defmacro() etc.)
772
776
773 2007-04-19 Ville Vainio <vivainio@gmail.com>
777 2007-04-19 Ville Vainio <vivainio@gmail.com>
774
778
775 * upgrade_dir.py: skip junk files like *.pyc
779 * upgrade_dir.py: skip junk files like *.pyc
776
780
777 * Release.py: version number to 0.8.1
781 * Release.py: version number to 0.8.1
778
782
779 2007-04-18 Ville Vainio <vivainio@gmail.com>
783 2007-04-18 Ville Vainio <vivainio@gmail.com>
780
784
781 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
785 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
782 and later on win32.
786 and later on win32.
783
787
784 2007-04-16 Ville Vainio <vivainio@gmail.com>
788 2007-04-16 Ville Vainio <vivainio@gmail.com>
785
789
786 * iplib.py (showtraceback): Do not crash when running w/o readline.
790 * iplib.py (showtraceback): Do not crash when running w/o readline.
787
791
788 2007-04-12 Walter Doerwald <walter@livinglogic.de>
792 2007-04-12 Walter Doerwald <walter@livinglogic.de>
789
793
790 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
794 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
791 sorted (case sensitive with files and dirs mixed).
795 sorted (case sensitive with files and dirs mixed).
792
796
793 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
797 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
794
798
795 * IPython/Release.py (version): Open trunk for 0.8.1 development.
799 * IPython/Release.py (version): Open trunk for 0.8.1 development.
796
800
797 2007-04-10 *** Released version 0.8.0
801 2007-04-10 *** Released version 0.8.0
798
802
799 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
803 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
800
804
801 * Tag 0.8.0 for release.
805 * Tag 0.8.0 for release.
802
806
803 * IPython/iplib.py (reloadhist): add API function to cleanly
807 * IPython/iplib.py (reloadhist): add API function to cleanly
804 reload the readline history, which was growing inappropriately on
808 reload the readline history, which was growing inappropriately on
805 every %run call.
809 every %run call.
806
810
807 * win32_manual_post_install.py (run): apply last part of Nicolas
811 * win32_manual_post_install.py (run): apply last part of Nicolas
808 Pernetty's patch (I'd accidentally applied it in a different
812 Pernetty's patch (I'd accidentally applied it in a different
809 directory and this particular file didn't get patched).
813 directory and this particular file didn't get patched).
810
814
811 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
815 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
812
816
813 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
817 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
814 find the main thread id and use the proper API call. Thanks to
818 find the main thread id and use the proper API call. Thanks to
815 Stefan for the fix.
819 Stefan for the fix.
816
820
817 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
821 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
818 unit tests to reflect fixed ticket #52, and add more tests sent by
822 unit tests to reflect fixed ticket #52, and add more tests sent by
819 him.
823 him.
820
824
821 * IPython/iplib.py (raw_input): restore the readline completer
825 * IPython/iplib.py (raw_input): restore the readline completer
822 state on every input, in case third-party code messed it up.
826 state on every input, in case third-party code messed it up.
823 (_prefilter): revert recent addition of early-escape checks which
827 (_prefilter): revert recent addition of early-escape checks which
824 prevent many valid alias calls from working.
828 prevent many valid alias calls from working.
825
829
826 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
830 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
827 flag for sigint handler so we don't run a full signal() call on
831 flag for sigint handler so we don't run a full signal() call on
828 each runcode access.
832 each runcode access.
829
833
830 * IPython/Magic.py (magic_whos): small improvement to diagnostic
834 * IPython/Magic.py (magic_whos): small improvement to diagnostic
831 message.
835 message.
832
836
833 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
837 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
834
838
835 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
839 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
836 asynchronous exceptions working, i.e., Ctrl-C can actually
840 asynchronous exceptions working, i.e., Ctrl-C can actually
837 interrupt long-running code in the multithreaded shells.
841 interrupt long-running code in the multithreaded shells.
838
842
839 This is using Tomer Filiba's great ctypes-based trick:
843 This is using Tomer Filiba's great ctypes-based trick:
840 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
844 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
841 this in the past, but hadn't been able to make it work before. So
845 this in the past, but hadn't been able to make it work before. So
842 far it looks like it's actually running, but this needs more
846 far it looks like it's actually running, but this needs more
843 testing. If it really works, I'll be *very* happy, and we'll owe
847 testing. If it really works, I'll be *very* happy, and we'll owe
844 a huge thank you to Tomer. My current implementation is ugly,
848 a huge thank you to Tomer. My current implementation is ugly,
845 hackish and uses nasty globals, but I don't want to try and clean
849 hackish and uses nasty globals, but I don't want to try and clean
846 anything up until we know if it actually works.
850 anything up until we know if it actually works.
847
851
848 NOTE: this feature needs ctypes to work. ctypes is included in
852 NOTE: this feature needs ctypes to work. ctypes is included in
849 Python2.5, but 2.4 users will need to manually install it. This
853 Python2.5, but 2.4 users will need to manually install it. This
850 feature makes multi-threaded shells so much more usable that it's
854 feature makes multi-threaded shells so much more usable that it's
851 a minor price to pay (ctypes is very easy to install, already a
855 a minor price to pay (ctypes is very easy to install, already a
852 requirement for win32 and available in major linux distros).
856 requirement for win32 and available in major linux distros).
853
857
854 2007-04-04 Ville Vainio <vivainio@gmail.com>
858 2007-04-04 Ville Vainio <vivainio@gmail.com>
855
859
856 * Extensions/ipy_completers.py, ipy_stock_completers.py:
860 * Extensions/ipy_completers.py, ipy_stock_completers.py:
857 Moved implementations of 'bundled' completers to ipy_completers.py,
861 Moved implementations of 'bundled' completers to ipy_completers.py,
858 they are only enabled in ipy_stock_completers.py.
862 they are only enabled in ipy_stock_completers.py.
859
863
860 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
864 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
861
865
862 * IPython/PyColorize.py (Parser.format2): Fix identation of
866 * IPython/PyColorize.py (Parser.format2): Fix identation of
863 colorzied output and return early if color scheme is NoColor, to
867 colorzied output and return early if color scheme is NoColor, to
864 avoid unnecessary and expensive tokenization. Closes #131.
868 avoid unnecessary and expensive tokenization. Closes #131.
865
869
866 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
870 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
867
871
868 * IPython/Debugger.py: disable the use of pydb version 1.17. It
872 * IPython/Debugger.py: disable the use of pydb version 1.17. It
869 has a critical bug (a missing import that makes post-mortem not
873 has a critical bug (a missing import that makes post-mortem not
870 work at all). Unfortunately as of this time, this is the version
874 work at all). Unfortunately as of this time, this is the version
871 shipped with Ubuntu Edgy, so quite a few people have this one. I
875 shipped with Ubuntu Edgy, so quite a few people have this one. I
872 hope Edgy will update to a more recent package.
876 hope Edgy will update to a more recent package.
873
877
874 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
878 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
875
879
876 * IPython/iplib.py (_prefilter): close #52, second part of a patch
880 * IPython/iplib.py (_prefilter): close #52, second part of a patch
877 set by Stefan (only the first part had been applied before).
881 set by Stefan (only the first part had been applied before).
878
882
879 * IPython/Extensions/ipy_stock_completers.py (module_completer):
883 * IPython/Extensions/ipy_stock_completers.py (module_completer):
880 remove usage of the dangerous pkgutil.walk_packages(). See
884 remove usage of the dangerous pkgutil.walk_packages(). See
881 details in comments left in the code.
885 details in comments left in the code.
882
886
883 * IPython/Magic.py (magic_whos): add support for numpy arrays
887 * IPython/Magic.py (magic_whos): add support for numpy arrays
884 similar to what we had for Numeric.
888 similar to what we had for Numeric.
885
889
886 * IPython/completer.py (IPCompleter.complete): extend the
890 * IPython/completer.py (IPCompleter.complete): extend the
887 complete() call API to support completions by other mechanisms
891 complete() call API to support completions by other mechanisms
888 than readline. Closes #109.
892 than readline. Closes #109.
889
893
890 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
894 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
891 protect against a bug in Python's execfile(). Closes #123.
895 protect against a bug in Python's execfile(). Closes #123.
892
896
893 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
897 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
894
898
895 * IPython/iplib.py (split_user_input): ensure that when splitting
899 * IPython/iplib.py (split_user_input): ensure that when splitting
896 user input, the part that can be treated as a python name is pure
900 user input, the part that can be treated as a python name is pure
897 ascii (Python identifiers MUST be pure ascii). Part of the
901 ascii (Python identifiers MUST be pure ascii). Part of the
898 ongoing Unicode support work.
902 ongoing Unicode support work.
899
903
900 * IPython/Prompts.py (prompt_specials_color): Add \N for the
904 * IPython/Prompts.py (prompt_specials_color): Add \N for the
901 actual prompt number, without any coloring. This allows users to
905 actual prompt number, without any coloring. This allows users to
902 produce numbered prompts with their own colors. Added after a
906 produce numbered prompts with their own colors. Added after a
903 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
907 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
904
908
905 2007-03-31 Walter Doerwald <walter@livinglogic.de>
909 2007-03-31 Walter Doerwald <walter@livinglogic.de>
906
910
907 * IPython/Extensions/igrid.py: Map the return key
911 * IPython/Extensions/igrid.py: Map the return key
908 to enter() and shift-return to enterattr().
912 to enter() and shift-return to enterattr().
909
913
910 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
914 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
911
915
912 * IPython/Magic.py (magic_psearch): add unicode support by
916 * IPython/Magic.py (magic_psearch): add unicode support by
913 encoding to ascii the input, since this routine also only deals
917 encoding to ascii the input, since this routine also only deals
914 with valid Python names. Fixes a bug reported by Stefan.
918 with valid Python names. Fixes a bug reported by Stefan.
915
919
916 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
920 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
917
921
918 * IPython/Magic.py (_inspect): convert unicode input into ascii
922 * IPython/Magic.py (_inspect): convert unicode input into ascii
919 before trying to evaluate it as a Python identifier. This fixes a
923 before trying to evaluate it as a Python identifier. This fixes a
920 problem that the new unicode support had introduced when analyzing
924 problem that the new unicode support had introduced when analyzing
921 long definition lines for functions.
925 long definition lines for functions.
922
926
923 2007-03-24 Walter Doerwald <walter@livinglogic.de>
927 2007-03-24 Walter Doerwald <walter@livinglogic.de>
924
928
925 * IPython/Extensions/igrid.py: Fix picking. Using
929 * IPython/Extensions/igrid.py: Fix picking. Using
926 igrid with wxPython 2.6 and -wthread should work now.
930 igrid with wxPython 2.6 and -wthread should work now.
927 igrid.display() simply tries to create a frame without
931 igrid.display() simply tries to create a frame without
928 an application. Only if this fails an application is created.
932 an application. Only if this fails an application is created.
929
933
930 2007-03-23 Walter Doerwald <walter@livinglogic.de>
934 2007-03-23 Walter Doerwald <walter@livinglogic.de>
931
935
932 * IPython/Extensions/path.py: Updated to version 2.2.
936 * IPython/Extensions/path.py: Updated to version 2.2.
933
937
934 2007-03-23 Ville Vainio <vivainio@gmail.com>
938 2007-03-23 Ville Vainio <vivainio@gmail.com>
935
939
936 * iplib.py: recursive alias expansion now works better, so that
940 * iplib.py: recursive alias expansion now works better, so that
937 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
941 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
938 doesn't trip up the process, if 'd' has been aliased to 'ls'.
942 doesn't trip up the process, if 'd' has been aliased to 'ls'.
939
943
940 * Extensions/ipy_gnuglobal.py added, provides %global magic
944 * Extensions/ipy_gnuglobal.py added, provides %global magic
941 for users of http://www.gnu.org/software/global
945 for users of http://www.gnu.org/software/global
942
946
943 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
947 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
944 Closes #52. Patch by Stefan van der Walt.
948 Closes #52. Patch by Stefan van der Walt.
945
949
946 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
950 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
947
951
948 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
952 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
949 respect the __file__ attribute when using %run. Thanks to a bug
953 respect the __file__ attribute when using %run. Thanks to a bug
950 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
954 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
951
955
952 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
956 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
953
957
954 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
958 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
955 input. Patch sent by Stefan.
959 input. Patch sent by Stefan.
956
960
957 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
961 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
958 * IPython/Extensions/ipy_stock_completer.py
962 * IPython/Extensions/ipy_stock_completer.py
959 shlex_split, fix bug in shlex_split. len function
963 shlex_split, fix bug in shlex_split. len function
960 call was missing an if statement. Caused shlex_split to
964 call was missing an if statement. Caused shlex_split to
961 sometimes return "" as last element.
965 sometimes return "" as last element.
962
966
963 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
967 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
964
968
965 * IPython/completer.py
969 * IPython/completer.py
966 (IPCompleter.file_matches.single_dir_expand): fix a problem
970 (IPCompleter.file_matches.single_dir_expand): fix a problem
967 reported by Stefan, where directories containign a single subdir
971 reported by Stefan, where directories containign a single subdir
968 would be completed too early.
972 would be completed too early.
969
973
970 * IPython/Shell.py (_load_pylab): Make the execution of 'from
974 * IPython/Shell.py (_load_pylab): Make the execution of 'from
971 pylab import *' when -pylab is given be optional. A new flag,
975 pylab import *' when -pylab is given be optional. A new flag,
972 pylab_import_all controls this behavior, the default is True for
976 pylab_import_all controls this behavior, the default is True for
973 backwards compatibility.
977 backwards compatibility.
974
978
975 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
979 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
976 modified) R. Bernstein's patch for fully syntax highlighted
980 modified) R. Bernstein's patch for fully syntax highlighted
977 tracebacks. The functionality is also available under ultraTB for
981 tracebacks. The functionality is also available under ultraTB for
978 non-ipython users (someone using ultraTB but outside an ipython
982 non-ipython users (someone using ultraTB but outside an ipython
979 session). They can select the color scheme by setting the
983 session). They can select the color scheme by setting the
980 module-level global DEFAULT_SCHEME. The highlight functionality
984 module-level global DEFAULT_SCHEME. The highlight functionality
981 also works when debugging.
985 also works when debugging.
982
986
983 * IPython/genutils.py (IOStream.close): small patch by
987 * IPython/genutils.py (IOStream.close): small patch by
984 R. Bernstein for improved pydb support.
988 R. Bernstein for improved pydb support.
985
989
986 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
990 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
987 DaveS <davls@telus.net> to improve support of debugging under
991 DaveS <davls@telus.net> to improve support of debugging under
988 NTEmacs, including improved pydb behavior.
992 NTEmacs, including improved pydb behavior.
989
993
990 * IPython/Magic.py (magic_prun): Fix saving of profile info for
994 * IPython/Magic.py (magic_prun): Fix saving of profile info for
991 Python 2.5, where the stats object API changed a little. Thanks
995 Python 2.5, where the stats object API changed a little. Thanks
992 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
996 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
993
997
994 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
998 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
995 Pernetty's patch to improve support for (X)Emacs under Win32.
999 Pernetty's patch to improve support for (X)Emacs under Win32.
996
1000
997 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1001 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
998
1002
999 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1003 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1000 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1004 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1001 a report by Nik Tautenhahn.
1005 a report by Nik Tautenhahn.
1002
1006
1003 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1007 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1004
1008
1005 * setup.py: Add the igrid help files to the list of data files
1009 * setup.py: Add the igrid help files to the list of data files
1006 to be installed alongside igrid.
1010 to be installed alongside igrid.
1007 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1011 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1008 Show the input object of the igrid browser as the window tile.
1012 Show the input object of the igrid browser as the window tile.
1009 Show the object the cursor is on in the statusbar.
1013 Show the object the cursor is on in the statusbar.
1010
1014
1011 2007-03-15 Ville Vainio <vivainio@gmail.com>
1015 2007-03-15 Ville Vainio <vivainio@gmail.com>
1012
1016
1013 * Extensions/ipy_stock_completers.py: Fixed exception
1017 * Extensions/ipy_stock_completers.py: Fixed exception
1014 on mismatching quotes in %run completer. Patch by
1018 on mismatching quotes in %run completer. Patch by
1015 Jorgen Stenarson. Closes #127.
1019 Jorgen Stenarson. Closes #127.
1016
1020
1017 2007-03-14 Ville Vainio <vivainio@gmail.com>
1021 2007-03-14 Ville Vainio <vivainio@gmail.com>
1018
1022
1019 * Extensions/ext_rehashdir.py: Do not do auto_alias
1023 * Extensions/ext_rehashdir.py: Do not do auto_alias
1020 in %rehashdir, it clobbers %store'd aliases.
1024 in %rehashdir, it clobbers %store'd aliases.
1021
1025
1022 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1026 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1023 (beefed up %env) imported for sh profile.
1027 (beefed up %env) imported for sh profile.
1024
1028
1025 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1029 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1026
1030
1027 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1031 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1028 as the default browser.
1032 as the default browser.
1029 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1033 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1030 As igrid displays all attributes it ever encounters, fetch() (which has
1034 As igrid displays all attributes it ever encounters, fetch() (which has
1031 been renamed to _fetch()) doesn't have to recalculate the display attributes
1035 been renamed to _fetch()) doesn't have to recalculate the display attributes
1032 every time a new item is fetched. This should speed up scrolling.
1036 every time a new item is fetched. This should speed up scrolling.
1033
1037
1034 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1038 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1035
1039
1036 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1040 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1037 Schmolck's recently reported tab-completion bug (my previous one
1041 Schmolck's recently reported tab-completion bug (my previous one
1038 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1042 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1039
1043
1040 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1044 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1041
1045
1042 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1046 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1043 Close help window if exiting igrid.
1047 Close help window if exiting igrid.
1044
1048
1045 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1049 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1046
1050
1047 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1051 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1048 before calling functions from readline.
1052 before calling functions from readline.
1049
1053
1050 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1054 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1051
1055
1052 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1056 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1053 igrid is a wxPython-based display object for ipipe. If your system has
1057 igrid is a wxPython-based display object for ipipe. If your system has
1054 wx installed igrid will be the default display. Without wx ipipe falls
1058 wx installed igrid will be the default display. Without wx ipipe falls
1055 back to ibrowse (which needs curses). If no curses is installed ipipe
1059 back to ibrowse (which needs curses). If no curses is installed ipipe
1056 falls back to idump.
1060 falls back to idump.
1057
1061
1058 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1062 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1059
1063
1060 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1064 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1061 my changes from yesterday, they introduced bugs. Will reactivate
1065 my changes from yesterday, they introduced bugs. Will reactivate
1062 once I get a correct solution, which will be much easier thanks to
1066 once I get a correct solution, which will be much easier thanks to
1063 Dan Milstein's new prefilter test suite.
1067 Dan Milstein's new prefilter test suite.
1064
1068
1065 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1069 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1066
1070
1067 * IPython/iplib.py (split_user_input): fix input splitting so we
1071 * IPython/iplib.py (split_user_input): fix input splitting so we
1068 don't attempt attribute accesses on things that can't possibly be
1072 don't attempt attribute accesses on things that can't possibly be
1069 valid Python attributes. After a bug report by Alex Schmolck.
1073 valid Python attributes. After a bug report by Alex Schmolck.
1070 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1074 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1071 %magic with explicit % prefix.
1075 %magic with explicit % prefix.
1072
1076
1073 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1077 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1074
1078
1075 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1079 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1076 avoid a DeprecationWarning from GTK.
1080 avoid a DeprecationWarning from GTK.
1077
1081
1078 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1082 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1079
1083
1080 * IPython/genutils.py (clock): I modified clock() to return total
1084 * IPython/genutils.py (clock): I modified clock() to return total
1081 time, user+system. This is a more commonly needed metric. I also
1085 time, user+system. This is a more commonly needed metric. I also
1082 introduced the new clocku/clocks to get only user/system time if
1086 introduced the new clocku/clocks to get only user/system time if
1083 one wants those instead.
1087 one wants those instead.
1084
1088
1085 ***WARNING: API CHANGE*** clock() used to return only user time,
1089 ***WARNING: API CHANGE*** clock() used to return only user time,
1086 so if you want exactly the same results as before, use clocku
1090 so if you want exactly the same results as before, use clocku
1087 instead.
1091 instead.
1088
1092
1089 2007-02-22 Ville Vainio <vivainio@gmail.com>
1093 2007-02-22 Ville Vainio <vivainio@gmail.com>
1090
1094
1091 * IPython/Extensions/ipy_p4.py: Extension for improved
1095 * IPython/Extensions/ipy_p4.py: Extension for improved
1092 p4 (perforce version control system) experience.
1096 p4 (perforce version control system) experience.
1093 Adds %p4 magic with p4 command completion and
1097 Adds %p4 magic with p4 command completion and
1094 automatic -G argument (marshall output as python dict)
1098 automatic -G argument (marshall output as python dict)
1095
1099
1096 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1100 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1097
1101
1098 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1102 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1099 stop marks.
1103 stop marks.
1100 (ClearingMixin): a simple mixin to easily make a Demo class clear
1104 (ClearingMixin): a simple mixin to easily make a Demo class clear
1101 the screen in between blocks and have empty marquees. The
1105 the screen in between blocks and have empty marquees. The
1102 ClearDemo and ClearIPDemo classes that use it are included.
1106 ClearDemo and ClearIPDemo classes that use it are included.
1103
1107
1104 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1108 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1105
1109
1106 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1110 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1107 protect against exceptions at Python shutdown time. Patch
1111 protect against exceptions at Python shutdown time. Patch
1108 sumbmitted to upstream.
1112 sumbmitted to upstream.
1109
1113
1110 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1114 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1111
1115
1112 * IPython/Extensions/ibrowse.py: If entering the first object level
1116 * IPython/Extensions/ibrowse.py: If entering the first object level
1113 (i.e. the object for which the browser has been started) fails,
1117 (i.e. the object for which the browser has been started) fails,
1114 now the error is raised directly (aborting the browser) instead of
1118 now the error is raised directly (aborting the browser) instead of
1115 running into an empty levels list later.
1119 running into an empty levels list later.
1116
1120
1117 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1121 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1118
1122
1119 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1123 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1120 for the noitem object.
1124 for the noitem object.
1121
1125
1122 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1126 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1123
1127
1124 * IPython/completer.py (Completer.attr_matches): Fix small
1128 * IPython/completer.py (Completer.attr_matches): Fix small
1125 tab-completion bug with Enthought Traits objects with units.
1129 tab-completion bug with Enthought Traits objects with units.
1126 Thanks to a bug report by Tom Denniston
1130 Thanks to a bug report by Tom Denniston
1127 <tom.denniston-AT-alum.dartmouth.org>.
1131 <tom.denniston-AT-alum.dartmouth.org>.
1128
1132
1129 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1133 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1130
1134
1131 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1135 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1132 bug where only .ipy or .py would be completed. Once the first
1136 bug where only .ipy or .py would be completed. Once the first
1133 argument to %run has been given, all completions are valid because
1137 argument to %run has been given, all completions are valid because
1134 they are the arguments to the script, which may well be non-python
1138 they are the arguments to the script, which may well be non-python
1135 filenames.
1139 filenames.
1136
1140
1137 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1141 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1138 to irunner to allow it to correctly support real doctesting of
1142 to irunner to allow it to correctly support real doctesting of
1139 out-of-process ipython code.
1143 out-of-process ipython code.
1140
1144
1141 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1145 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1142 title an option (-noterm_title) because it completely breaks
1146 title an option (-noterm_title) because it completely breaks
1143 doctesting.
1147 doctesting.
1144
1148
1145 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1149 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1146
1150
1147 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1151 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1148
1152
1149 * IPython/irunner.py (main): fix small bug where extensions were
1153 * IPython/irunner.py (main): fix small bug where extensions were
1150 not being correctly recognized.
1154 not being correctly recognized.
1151
1155
1152 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1156 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1153
1157
1154 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1158 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1155 a string containing a single line yields the string itself as the
1159 a string containing a single line yields the string itself as the
1156 only item.
1160 only item.
1157
1161
1158 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1162 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1159 object if it's the same as the one on the last level (This avoids
1163 object if it's the same as the one on the last level (This avoids
1160 infinite recursion for one line strings).
1164 infinite recursion for one line strings).
1161
1165
1162 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1166 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1163
1167
1164 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1168 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1165 all output streams before printing tracebacks. This ensures that
1169 all output streams before printing tracebacks. This ensures that
1166 user output doesn't end up interleaved with traceback output.
1170 user output doesn't end up interleaved with traceback output.
1167
1171
1168 2007-01-10 Ville Vainio <vivainio@gmail.com>
1172 2007-01-10 Ville Vainio <vivainio@gmail.com>
1169
1173
1170 * Extensions/envpersist.py: Turbocharged %env that remembers
1174 * Extensions/envpersist.py: Turbocharged %env that remembers
1171 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1175 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1172 "%env VISUAL=jed".
1176 "%env VISUAL=jed".
1173
1177
1174 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1178 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1175
1179
1176 * IPython/iplib.py (showtraceback): ensure that we correctly call
1180 * IPython/iplib.py (showtraceback): ensure that we correctly call
1177 custom handlers in all cases (some with pdb were slipping through,
1181 custom handlers in all cases (some with pdb were slipping through,
1178 but I'm not exactly sure why).
1182 but I'm not exactly sure why).
1179
1183
1180 * IPython/Debugger.py (Tracer.__init__): added new class to
1184 * IPython/Debugger.py (Tracer.__init__): added new class to
1181 support set_trace-like usage of IPython's enhanced debugger.
1185 support set_trace-like usage of IPython's enhanced debugger.
1182
1186
1183 2006-12-24 Ville Vainio <vivainio@gmail.com>
1187 2006-12-24 Ville Vainio <vivainio@gmail.com>
1184
1188
1185 * ipmaker.py: more informative message when ipy_user_conf
1189 * ipmaker.py: more informative message when ipy_user_conf
1186 import fails (suggest running %upgrade).
1190 import fails (suggest running %upgrade).
1187
1191
1188 * tools/run_ipy_in_profiler.py: Utility to see where
1192 * tools/run_ipy_in_profiler.py: Utility to see where
1189 the time during IPython startup is spent.
1193 the time during IPython startup is spent.
1190
1194
1191 2006-12-20 Ville Vainio <vivainio@gmail.com>
1195 2006-12-20 Ville Vainio <vivainio@gmail.com>
1192
1196
1193 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1197 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1194
1198
1195 * ipapi.py: Add new ipapi method, expand_alias.
1199 * ipapi.py: Add new ipapi method, expand_alias.
1196
1200
1197 * Release.py: Bump up version to 0.7.4.svn
1201 * Release.py: Bump up version to 0.7.4.svn
1198
1202
1199 2006-12-17 Ville Vainio <vivainio@gmail.com>
1203 2006-12-17 Ville Vainio <vivainio@gmail.com>
1200
1204
1201 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1205 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1202 to work properly on posix too
1206 to work properly on posix too
1203
1207
1204 * Release.py: Update revnum (version is still just 0.7.3).
1208 * Release.py: Update revnum (version is still just 0.7.3).
1205
1209
1206 2006-12-15 Ville Vainio <vivainio@gmail.com>
1210 2006-12-15 Ville Vainio <vivainio@gmail.com>
1207
1211
1208 * scripts/ipython_win_post_install: create ipython.py in
1212 * scripts/ipython_win_post_install: create ipython.py in
1209 prefix + "/scripts".
1213 prefix + "/scripts".
1210
1214
1211 * Release.py: Update version to 0.7.3.
1215 * Release.py: Update version to 0.7.3.
1212
1216
1213 2006-12-14 Ville Vainio <vivainio@gmail.com>
1217 2006-12-14 Ville Vainio <vivainio@gmail.com>
1214
1218
1215 * scripts/ipython_win_post_install: Overwrite old shortcuts
1219 * scripts/ipython_win_post_install: Overwrite old shortcuts
1216 if they already exist
1220 if they already exist
1217
1221
1218 * Release.py: release 0.7.3rc2
1222 * Release.py: release 0.7.3rc2
1219
1223
1220 2006-12-13 Ville Vainio <vivainio@gmail.com>
1224 2006-12-13 Ville Vainio <vivainio@gmail.com>
1221
1225
1222 * Branch and update Release.py for 0.7.3rc1
1226 * Branch and update Release.py for 0.7.3rc1
1223
1227
1224 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1228 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1225
1229
1226 * IPython/Shell.py (IPShellWX): update for current WX naming
1230 * IPython/Shell.py (IPShellWX): update for current WX naming
1227 conventions, to avoid a deprecation warning with current WX
1231 conventions, to avoid a deprecation warning with current WX
1228 versions. Thanks to a report by Danny Shevitz.
1232 versions. Thanks to a report by Danny Shevitz.
1229
1233
1230 2006-12-12 Ville Vainio <vivainio@gmail.com>
1234 2006-12-12 Ville Vainio <vivainio@gmail.com>
1231
1235
1232 * ipmaker.py: apply david cournapeau's patch to make
1236 * ipmaker.py: apply david cournapeau's patch to make
1233 import_some work properly even when ipythonrc does
1237 import_some work properly even when ipythonrc does
1234 import_some on empty list (it was an old bug!).
1238 import_some on empty list (it was an old bug!).
1235
1239
1236 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1240 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1237 Add deprecation note to ipythonrc and a url to wiki
1241 Add deprecation note to ipythonrc and a url to wiki
1238 in ipy_user_conf.py
1242 in ipy_user_conf.py
1239
1243
1240
1244
1241 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1245 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1242 as if it was typed on IPython command prompt, i.e.
1246 as if it was typed on IPython command prompt, i.e.
1243 as IPython script.
1247 as IPython script.
1244
1248
1245 * example-magic.py, magic_grepl.py: remove outdated examples
1249 * example-magic.py, magic_grepl.py: remove outdated examples
1246
1250
1247 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1251 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1248
1252
1249 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1253 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1250 is called before any exception has occurred.
1254 is called before any exception has occurred.
1251
1255
1252 2006-12-08 Ville Vainio <vivainio@gmail.com>
1256 2006-12-08 Ville Vainio <vivainio@gmail.com>
1253
1257
1254 * Extensions/ipy_stock_completers.py: fix cd completer
1258 * Extensions/ipy_stock_completers.py: fix cd completer
1255 to translate /'s to \'s again.
1259 to translate /'s to \'s again.
1256
1260
1257 * completer.py: prevent traceback on file completions w/
1261 * completer.py: prevent traceback on file completions w/
1258 backslash.
1262 backslash.
1259
1263
1260 * Release.py: Update release number to 0.7.3b3 for release
1264 * Release.py: Update release number to 0.7.3b3 for release
1261
1265
1262 2006-12-07 Ville Vainio <vivainio@gmail.com>
1266 2006-12-07 Ville Vainio <vivainio@gmail.com>
1263
1267
1264 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1268 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1265 while executing external code. Provides more shell-like behaviour
1269 while executing external code. Provides more shell-like behaviour
1266 and overall better response to ctrl + C / ctrl + break.
1270 and overall better response to ctrl + C / ctrl + break.
1267
1271
1268 * tools/make_tarball.py: new script to create tarball straight from svn
1272 * tools/make_tarball.py: new script to create tarball straight from svn
1269 (setup.py sdist doesn't work on win32).
1273 (setup.py sdist doesn't work on win32).
1270
1274
1271 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1275 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1272 on dirnames with spaces and use the default completer instead.
1276 on dirnames with spaces and use the default completer instead.
1273
1277
1274 * Revision.py: Change version to 0.7.3b2 for release.
1278 * Revision.py: Change version to 0.7.3b2 for release.
1275
1279
1276 2006-12-05 Ville Vainio <vivainio@gmail.com>
1280 2006-12-05 Ville Vainio <vivainio@gmail.com>
1277
1281
1278 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1282 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1279 pydb patch 4 (rm debug printing, py 2.5 checking)
1283 pydb patch 4 (rm debug printing, py 2.5 checking)
1280
1284
1281 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1285 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1282 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1286 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1283 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1287 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1284 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1288 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1285 object the cursor was on before the refresh. The command "markrange" is
1289 object the cursor was on before the refresh. The command "markrange" is
1286 mapped to "%" now.
1290 mapped to "%" now.
1287 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1291 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1288
1292
1289 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1293 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1290
1294
1291 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1295 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1292 interactive debugger on the last traceback, without having to call
1296 interactive debugger on the last traceback, without having to call
1293 %pdb and rerun your code. Made minor changes in various modules,
1297 %pdb and rerun your code. Made minor changes in various modules,
1294 should automatically recognize pydb if available.
1298 should automatically recognize pydb if available.
1295
1299
1296 2006-11-28 Ville Vainio <vivainio@gmail.com>
1300 2006-11-28 Ville Vainio <vivainio@gmail.com>
1297
1301
1298 * completer.py: If the text start with !, show file completions
1302 * completer.py: If the text start with !, show file completions
1299 properly. This helps when trying to complete command name
1303 properly. This helps when trying to complete command name
1300 for shell escapes.
1304 for shell escapes.
1301
1305
1302 2006-11-27 Ville Vainio <vivainio@gmail.com>
1306 2006-11-27 Ville Vainio <vivainio@gmail.com>
1303
1307
1304 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1308 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1305 der Walt. Clean up svn and hg completers by using a common
1309 der Walt. Clean up svn and hg completers by using a common
1306 vcs_completer.
1310 vcs_completer.
1307
1311
1308 2006-11-26 Ville Vainio <vivainio@gmail.com>
1312 2006-11-26 Ville Vainio <vivainio@gmail.com>
1309
1313
1310 * Remove ipconfig and %config; you should use _ip.options structure
1314 * Remove ipconfig and %config; you should use _ip.options structure
1311 directly instead!
1315 directly instead!
1312
1316
1313 * genutils.py: add wrap_deprecated function for deprecating callables
1317 * genutils.py: add wrap_deprecated function for deprecating callables
1314
1318
1315 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1319 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1316 _ip.system instead. ipalias is redundant.
1320 _ip.system instead. ipalias is redundant.
1317
1321
1318 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1322 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1319 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1323 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1320 explicit.
1324 explicit.
1321
1325
1322 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1326 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1323 completer. Try it by entering 'hg ' and pressing tab.
1327 completer. Try it by entering 'hg ' and pressing tab.
1324
1328
1325 * macro.py: Give Macro a useful __repr__ method
1329 * macro.py: Give Macro a useful __repr__ method
1326
1330
1327 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1331 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1328
1332
1329 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1333 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1330 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1334 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1331 we don't get a duplicate ipipe module, where registration of the xrepr
1335 we don't get a duplicate ipipe module, where registration of the xrepr
1332 implementation for Text is useless.
1336 implementation for Text is useless.
1333
1337
1334 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1338 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1335
1339
1336 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1340 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1337
1341
1338 2006-11-24 Ville Vainio <vivainio@gmail.com>
1342 2006-11-24 Ville Vainio <vivainio@gmail.com>
1339
1343
1340 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1344 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1341 try to use "cProfile" instead of the slower pure python
1345 try to use "cProfile" instead of the slower pure python
1342 "profile"
1346 "profile"
1343
1347
1344 2006-11-23 Ville Vainio <vivainio@gmail.com>
1348 2006-11-23 Ville Vainio <vivainio@gmail.com>
1345
1349
1346 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1350 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1347 Qt+IPython+Designer link in documentation.
1351 Qt+IPython+Designer link in documentation.
1348
1352
1349 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1353 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1350 correct Pdb object to %pydb.
1354 correct Pdb object to %pydb.
1351
1355
1352
1356
1353 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1357 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1354 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1358 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1355 generic xrepr(), otherwise the list implementation would kick in.
1359 generic xrepr(), otherwise the list implementation would kick in.
1356
1360
1357 2006-11-21 Ville Vainio <vivainio@gmail.com>
1361 2006-11-21 Ville Vainio <vivainio@gmail.com>
1358
1362
1359 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1363 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1360 with one from UserConfig.
1364 with one from UserConfig.
1361
1365
1362 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1366 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1363 it was missing which broke the sh profile.
1367 it was missing which broke the sh profile.
1364
1368
1365 * completer.py: file completer now uses explicit '/' instead
1369 * completer.py: file completer now uses explicit '/' instead
1366 of os.path.join, expansion of 'foo' was broken on win32
1370 of os.path.join, expansion of 'foo' was broken on win32
1367 if there was one directory with name 'foobar'.
1371 if there was one directory with name 'foobar'.
1368
1372
1369 * A bunch of patches from Kirill Smelkov:
1373 * A bunch of patches from Kirill Smelkov:
1370
1374
1371 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1375 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1372
1376
1373 * [patch 7/9] Implement %page -r (page in raw mode) -
1377 * [patch 7/9] Implement %page -r (page in raw mode) -
1374
1378
1375 * [patch 5/9] ScientificPython webpage has moved
1379 * [patch 5/9] ScientificPython webpage has moved
1376
1380
1377 * [patch 4/9] The manual mentions %ds, should be %dhist
1381 * [patch 4/9] The manual mentions %ds, should be %dhist
1378
1382
1379 * [patch 3/9] Kill old bits from %prun doc.
1383 * [patch 3/9] Kill old bits from %prun doc.
1380
1384
1381 * [patch 1/9] Fix typos here and there.
1385 * [patch 1/9] Fix typos here and there.
1382
1386
1383 2006-11-08 Ville Vainio <vivainio@gmail.com>
1387 2006-11-08 Ville Vainio <vivainio@gmail.com>
1384
1388
1385 * completer.py (attr_matches): catch all exceptions raised
1389 * completer.py (attr_matches): catch all exceptions raised
1386 by eval of expr with dots.
1390 by eval of expr with dots.
1387
1391
1388 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1392 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1389
1393
1390 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1394 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1391 input if it starts with whitespace. This allows you to paste
1395 input if it starts with whitespace. This allows you to paste
1392 indented input from any editor without manually having to type in
1396 indented input from any editor without manually having to type in
1393 the 'if 1:', which is convenient when working interactively.
1397 the 'if 1:', which is convenient when working interactively.
1394 Slightly modifed version of a patch by Bo Peng
1398 Slightly modifed version of a patch by Bo Peng
1395 <bpeng-AT-rice.edu>.
1399 <bpeng-AT-rice.edu>.
1396
1400
1397 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1401 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1398
1402
1399 * IPython/irunner.py (main): modified irunner so it automatically
1403 * IPython/irunner.py (main): modified irunner so it automatically
1400 recognizes the right runner to use based on the extension (.py for
1404 recognizes the right runner to use based on the extension (.py for
1401 python, .ipy for ipython and .sage for sage).
1405 python, .ipy for ipython and .sage for sage).
1402
1406
1403 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1407 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1404 visible in ipapi as ip.config(), to programatically control the
1408 visible in ipapi as ip.config(), to programatically control the
1405 internal rc object. There's an accompanying %config magic for
1409 internal rc object. There's an accompanying %config magic for
1406 interactive use, which has been enhanced to match the
1410 interactive use, which has been enhanced to match the
1407 funtionality in ipconfig.
1411 funtionality in ipconfig.
1408
1412
1409 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1413 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1410 so it's not just a toggle, it now takes an argument. Add support
1414 so it's not just a toggle, it now takes an argument. Add support
1411 for a customizable header when making system calls, as the new
1415 for a customizable header when making system calls, as the new
1412 system_header variable in the ipythonrc file.
1416 system_header variable in the ipythonrc file.
1413
1417
1414 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1418 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1415
1419
1416 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1420 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1417 generic functions (using Philip J. Eby's simplegeneric package).
1421 generic functions (using Philip J. Eby's simplegeneric package).
1418 This makes it possible to customize the display of third-party classes
1422 This makes it possible to customize the display of third-party classes
1419 without having to monkeypatch them. xiter() no longer supports a mode
1423 without having to monkeypatch them. xiter() no longer supports a mode
1420 argument and the XMode class has been removed. The same functionality can
1424 argument and the XMode class has been removed. The same functionality can
1421 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1425 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1422 One consequence of the switch to generic functions is that xrepr() and
1426 One consequence of the switch to generic functions is that xrepr() and
1423 xattrs() implementation must define the default value for the mode
1427 xattrs() implementation must define the default value for the mode
1424 argument themselves and xattrs() implementations must return real
1428 argument themselves and xattrs() implementations must return real
1425 descriptors.
1429 descriptors.
1426
1430
1427 * IPython/external: This new subpackage will contain all third-party
1431 * IPython/external: This new subpackage will contain all third-party
1428 packages that are bundled with IPython. (The first one is simplegeneric).
1432 packages that are bundled with IPython. (The first one is simplegeneric).
1429
1433
1430 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1434 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1431 directory which as been dropped in r1703.
1435 directory which as been dropped in r1703.
1432
1436
1433 * IPython/Extensions/ipipe.py (iless): Fixed.
1437 * IPython/Extensions/ipipe.py (iless): Fixed.
1434
1438
1435 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1439 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1436
1440
1437 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1441 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1438
1442
1439 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1443 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1440 handling in variable expansion so that shells and magics recognize
1444 handling in variable expansion so that shells and magics recognize
1441 function local scopes correctly. Bug reported by Brian.
1445 function local scopes correctly. Bug reported by Brian.
1442
1446
1443 * scripts/ipython: remove the very first entry in sys.path which
1447 * scripts/ipython: remove the very first entry in sys.path which
1444 Python auto-inserts for scripts, so that sys.path under IPython is
1448 Python auto-inserts for scripts, so that sys.path under IPython is
1445 as similar as possible to that under plain Python.
1449 as similar as possible to that under plain Python.
1446
1450
1447 * IPython/completer.py (IPCompleter.file_matches): Fix
1451 * IPython/completer.py (IPCompleter.file_matches): Fix
1448 tab-completion so that quotes are not closed unless the completion
1452 tab-completion so that quotes are not closed unless the completion
1449 is unambiguous. After a request by Stefan. Minor cleanups in
1453 is unambiguous. After a request by Stefan. Minor cleanups in
1450 ipy_stock_completers.
1454 ipy_stock_completers.
1451
1455
1452 2006-11-02 Ville Vainio <vivainio@gmail.com>
1456 2006-11-02 Ville Vainio <vivainio@gmail.com>
1453
1457
1454 * ipy_stock_completers.py: Add %run and %cd completers.
1458 * ipy_stock_completers.py: Add %run and %cd completers.
1455
1459
1456 * completer.py: Try running custom completer for both
1460 * completer.py: Try running custom completer for both
1457 "foo" and "%foo" if the command is just "foo". Ignore case
1461 "foo" and "%foo" if the command is just "foo". Ignore case
1458 when filtering possible completions.
1462 when filtering possible completions.
1459
1463
1460 * UserConfig/ipy_user_conf.py: install stock completers as default
1464 * UserConfig/ipy_user_conf.py: install stock completers as default
1461
1465
1462 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1466 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1463 simplified readline history save / restore through a wrapper
1467 simplified readline history save / restore through a wrapper
1464 function
1468 function
1465
1469
1466
1470
1467 2006-10-31 Ville Vainio <vivainio@gmail.com>
1471 2006-10-31 Ville Vainio <vivainio@gmail.com>
1468
1472
1469 * strdispatch.py, completer.py, ipy_stock_completers.py:
1473 * strdispatch.py, completer.py, ipy_stock_completers.py:
1470 Allow str_key ("command") in completer hooks. Implement
1474 Allow str_key ("command") in completer hooks. Implement
1471 trivial completer for 'import' (stdlib modules only). Rename
1475 trivial completer for 'import' (stdlib modules only). Rename
1472 ipy_linux_package_managers.py to ipy_stock_completers.py.
1476 ipy_linux_package_managers.py to ipy_stock_completers.py.
1473 SVN completer.
1477 SVN completer.
1474
1478
1475 * Extensions/ledit.py: %magic line editor for easily and
1479 * Extensions/ledit.py: %magic line editor for easily and
1476 incrementally manipulating lists of strings. The magic command
1480 incrementally manipulating lists of strings. The magic command
1477 name is %led.
1481 name is %led.
1478
1482
1479 2006-10-30 Ville Vainio <vivainio@gmail.com>
1483 2006-10-30 Ville Vainio <vivainio@gmail.com>
1480
1484
1481 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1485 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1482 Bernsteins's patches for pydb integration.
1486 Bernsteins's patches for pydb integration.
1483 http://bashdb.sourceforge.net/pydb/
1487 http://bashdb.sourceforge.net/pydb/
1484
1488
1485 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1489 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1486 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1490 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1487 custom completer hook to allow the users to implement their own
1491 custom completer hook to allow the users to implement their own
1488 completers. See ipy_linux_package_managers.py for example. The
1492 completers. See ipy_linux_package_managers.py for example. The
1489 hook name is 'complete_command'.
1493 hook name is 'complete_command'.
1490
1494
1491 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1495 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1492
1496
1493 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1497 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1494 Numeric leftovers.
1498 Numeric leftovers.
1495
1499
1496 * ipython.el (py-execute-region): apply Stefan's patch to fix
1500 * ipython.el (py-execute-region): apply Stefan's patch to fix
1497 garbled results if the python shell hasn't been previously started.
1501 garbled results if the python shell hasn't been previously started.
1498
1502
1499 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1503 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1500 pretty generic function and useful for other things.
1504 pretty generic function and useful for other things.
1501
1505
1502 * IPython/OInspect.py (getsource): Add customizable source
1506 * IPython/OInspect.py (getsource): Add customizable source
1503 extractor. After a request/patch form W. Stein (SAGE).
1507 extractor. After a request/patch form W. Stein (SAGE).
1504
1508
1505 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1509 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1506 window size to a more reasonable value from what pexpect does,
1510 window size to a more reasonable value from what pexpect does,
1507 since their choice causes wrapping bugs with long input lines.
1511 since their choice causes wrapping bugs with long input lines.
1508
1512
1509 2006-10-28 Ville Vainio <vivainio@gmail.com>
1513 2006-10-28 Ville Vainio <vivainio@gmail.com>
1510
1514
1511 * Magic.py (%run): Save and restore the readline history from
1515 * Magic.py (%run): Save and restore the readline history from
1512 file around %run commands to prevent side effects from
1516 file around %run commands to prevent side effects from
1513 %runned programs that might use readline (e.g. pydb).
1517 %runned programs that might use readline (e.g. pydb).
1514
1518
1515 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1519 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1516 invoking the pydb enhanced debugger.
1520 invoking the pydb enhanced debugger.
1517
1521
1518 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1522 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1519
1523
1520 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1524 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1521 call the base class method and propagate the return value to
1525 call the base class method and propagate the return value to
1522 ifile. This is now done by path itself.
1526 ifile. This is now done by path itself.
1523
1527
1524 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1528 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1525
1529
1526 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1530 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1527 api: set_crash_handler(), to expose the ability to change the
1531 api: set_crash_handler(), to expose the ability to change the
1528 internal crash handler.
1532 internal crash handler.
1529
1533
1530 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1534 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1531 the various parameters of the crash handler so that apps using
1535 the various parameters of the crash handler so that apps using
1532 IPython as their engine can customize crash handling. Ipmlemented
1536 IPython as their engine can customize crash handling. Ipmlemented
1533 at the request of SAGE.
1537 at the request of SAGE.
1534
1538
1535 2006-10-14 Ville Vainio <vivainio@gmail.com>
1539 2006-10-14 Ville Vainio <vivainio@gmail.com>
1536
1540
1537 * Magic.py, ipython.el: applied first "safe" part of Rocky
1541 * Magic.py, ipython.el: applied first "safe" part of Rocky
1538 Bernstein's patch set for pydb integration.
1542 Bernstein's patch set for pydb integration.
1539
1543
1540 * Magic.py (%unalias, %alias): %store'd aliases can now be
1544 * Magic.py (%unalias, %alias): %store'd aliases can now be
1541 removed with '%unalias'. %alias w/o args now shows most
1545 removed with '%unalias'. %alias w/o args now shows most
1542 interesting (stored / manually defined) aliases last
1546 interesting (stored / manually defined) aliases last
1543 where they catch the eye w/o scrolling.
1547 where they catch the eye w/o scrolling.
1544
1548
1545 * Magic.py (%rehashx), ext_rehashdir.py: files with
1549 * Magic.py (%rehashx), ext_rehashdir.py: files with
1546 'py' extension are always considered executable, even
1550 'py' extension are always considered executable, even
1547 when not in PATHEXT environment variable.
1551 when not in PATHEXT environment variable.
1548
1552
1549 2006-10-12 Ville Vainio <vivainio@gmail.com>
1553 2006-10-12 Ville Vainio <vivainio@gmail.com>
1550
1554
1551 * jobctrl.py: Add new "jobctrl" extension for spawning background
1555 * jobctrl.py: Add new "jobctrl" extension for spawning background
1552 processes with "&find /". 'import jobctrl' to try it out. Requires
1556 processes with "&find /". 'import jobctrl' to try it out. Requires
1553 'subprocess' module, standard in python 2.4+.
1557 'subprocess' module, standard in python 2.4+.
1554
1558
1555 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1559 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1556 so if foo -> bar and bar -> baz, then foo -> baz.
1560 so if foo -> bar and bar -> baz, then foo -> baz.
1557
1561
1558 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1562 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1559
1563
1560 * IPython/Magic.py (Magic.parse_options): add a new posix option
1564 * IPython/Magic.py (Magic.parse_options): add a new posix option
1561 to allow parsing of input args in magics that doesn't strip quotes
1565 to allow parsing of input args in magics that doesn't strip quotes
1562 (if posix=False). This also closes %timeit bug reported by
1566 (if posix=False). This also closes %timeit bug reported by
1563 Stefan.
1567 Stefan.
1564
1568
1565 2006-10-03 Ville Vainio <vivainio@gmail.com>
1569 2006-10-03 Ville Vainio <vivainio@gmail.com>
1566
1570
1567 * iplib.py (raw_input, interact): Return ValueError catching for
1571 * iplib.py (raw_input, interact): Return ValueError catching for
1568 raw_input. Fixes infinite loop for sys.stdin.close() or
1572 raw_input. Fixes infinite loop for sys.stdin.close() or
1569 sys.stdout.close().
1573 sys.stdout.close().
1570
1574
1571 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1575 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1572
1576
1573 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1577 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1574 to help in handling doctests. irunner is now pretty useful for
1578 to help in handling doctests. irunner is now pretty useful for
1575 running standalone scripts and simulate a full interactive session
1579 running standalone scripts and simulate a full interactive session
1576 in a format that can be then pasted as a doctest.
1580 in a format that can be then pasted as a doctest.
1577
1581
1578 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1582 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1579 on top of the default (useless) ones. This also fixes the nasty
1583 on top of the default (useless) ones. This also fixes the nasty
1580 way in which 2.5's Quitter() exits (reverted [1785]).
1584 way in which 2.5's Quitter() exits (reverted [1785]).
1581
1585
1582 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1586 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1583 2.5.
1587 2.5.
1584
1588
1585 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1589 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1586 color scheme is updated as well when color scheme is changed
1590 color scheme is updated as well when color scheme is changed
1587 interactively.
1591 interactively.
1588
1592
1589 2006-09-27 Ville Vainio <vivainio@gmail.com>
1593 2006-09-27 Ville Vainio <vivainio@gmail.com>
1590
1594
1591 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1595 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1592 infinite loop and just exit. It's a hack, but will do for a while.
1596 infinite loop and just exit. It's a hack, but will do for a while.
1593
1597
1594 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1598 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1595
1599
1596 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1600 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1597 the constructor, this makes it possible to get a list of only directories
1601 the constructor, this makes it possible to get a list of only directories
1598 or only files.
1602 or only files.
1599
1603
1600 2006-08-12 Ville Vainio <vivainio@gmail.com>
1604 2006-08-12 Ville Vainio <vivainio@gmail.com>
1601
1605
1602 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1606 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1603 they broke unittest
1607 they broke unittest
1604
1608
1605 2006-08-11 Ville Vainio <vivainio@gmail.com>
1609 2006-08-11 Ville Vainio <vivainio@gmail.com>
1606
1610
1607 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1611 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1608 by resolving issue properly, i.e. by inheriting FakeModule
1612 by resolving issue properly, i.e. by inheriting FakeModule
1609 from types.ModuleType. Pickling ipython interactive data
1613 from types.ModuleType. Pickling ipython interactive data
1610 should still work as usual (testing appreciated).
1614 should still work as usual (testing appreciated).
1611
1615
1612 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1616 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1613
1617
1614 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1618 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1615 running under python 2.3 with code from 2.4 to fix a bug with
1619 running under python 2.3 with code from 2.4 to fix a bug with
1616 help(). Reported by the Debian maintainers, Norbert Tretkowski
1620 help(). Reported by the Debian maintainers, Norbert Tretkowski
1617 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1621 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1618 <afayolle-AT-debian.org>.
1622 <afayolle-AT-debian.org>.
1619
1623
1620 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1624 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1621
1625
1622 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1626 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1623 (which was displaying "quit" twice).
1627 (which was displaying "quit" twice).
1624
1628
1625 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1629 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1626
1630
1627 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1631 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1628 the mode argument).
1632 the mode argument).
1629
1633
1630 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1634 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1631
1635
1632 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1636 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1633 not running under IPython.
1637 not running under IPython.
1634
1638
1635 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1639 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1636 and make it iterable (iterating over the attribute itself). Add two new
1640 and make it iterable (iterating over the attribute itself). Add two new
1637 magic strings for __xattrs__(): If the string starts with "-", the attribute
1641 magic strings for __xattrs__(): If the string starts with "-", the attribute
1638 will not be displayed in ibrowse's detail view (but it can still be
1642 will not be displayed in ibrowse's detail view (but it can still be
1639 iterated over). This makes it possible to add attributes that are large
1643 iterated over). This makes it possible to add attributes that are large
1640 lists or generator methods to the detail view. Replace magic attribute names
1644 lists or generator methods to the detail view. Replace magic attribute names
1641 and _attrname() and _getattr() with "descriptors": For each type of magic
1645 and _attrname() and _getattr() with "descriptors": For each type of magic
1642 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1646 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1643 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1647 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1644 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1648 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1645 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1649 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1646 are still supported.
1650 are still supported.
1647
1651
1648 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1652 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1649 fails in ibrowse.fetch(), the exception object is added as the last item
1653 fails in ibrowse.fetch(), the exception object is added as the last item
1650 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1654 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1651 a generator throws an exception midway through execution.
1655 a generator throws an exception midway through execution.
1652
1656
1653 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1657 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1654 encoding into methods.
1658 encoding into methods.
1655
1659
1656 2006-07-26 Ville Vainio <vivainio@gmail.com>
1660 2006-07-26 Ville Vainio <vivainio@gmail.com>
1657
1661
1658 * iplib.py: history now stores multiline input as single
1662 * iplib.py: history now stores multiline input as single
1659 history entries. Patch by Jorgen Cederlof.
1663 history entries. Patch by Jorgen Cederlof.
1660
1664
1661 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1665 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1662
1666
1663 * IPython/Extensions/ibrowse.py: Make cursor visible over
1667 * IPython/Extensions/ibrowse.py: Make cursor visible over
1664 non existing attributes.
1668 non existing attributes.
1665
1669
1666 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1670 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1667
1671
1668 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1672 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1669 error output of the running command doesn't mess up the screen.
1673 error output of the running command doesn't mess up the screen.
1670
1674
1671 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1675 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1672
1676
1673 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1677 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1674 argument. This sorts the items themselves.
1678 argument. This sorts the items themselves.
1675
1679
1676 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1680 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1677
1681
1678 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1682 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1679 Compile expression strings into code objects. This should speed
1683 Compile expression strings into code objects. This should speed
1680 up ifilter and friends somewhat.
1684 up ifilter and friends somewhat.
1681
1685
1682 2006-07-08 Ville Vainio <vivainio@gmail.com>
1686 2006-07-08 Ville Vainio <vivainio@gmail.com>
1683
1687
1684 * Magic.py: %cpaste now strips > from the beginning of lines
1688 * Magic.py: %cpaste now strips > from the beginning of lines
1685 to ease pasting quoted code from emails. Contributed by
1689 to ease pasting quoted code from emails. Contributed by
1686 Stefan van der Walt.
1690 Stefan van der Walt.
1687
1691
1688 2006-06-29 Ville Vainio <vivainio@gmail.com>
1692 2006-06-29 Ville Vainio <vivainio@gmail.com>
1689
1693
1690 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1694 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1691 mode, patch contributed by Darren Dale. NEEDS TESTING!
1695 mode, patch contributed by Darren Dale. NEEDS TESTING!
1692
1696
1693 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1697 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1694
1698
1695 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1699 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1696 a blue background. Fix fetching new display rows when the browser
1700 a blue background. Fix fetching new display rows when the browser
1697 scrolls more than a screenful (e.g. by using the goto command).
1701 scrolls more than a screenful (e.g. by using the goto command).
1698
1702
1699 2006-06-27 Ville Vainio <vivainio@gmail.com>
1703 2006-06-27 Ville Vainio <vivainio@gmail.com>
1700
1704
1701 * Magic.py (_inspect, _ofind) Apply David Huard's
1705 * Magic.py (_inspect, _ofind) Apply David Huard's
1702 patch for displaying the correct docstring for 'property'
1706 patch for displaying the correct docstring for 'property'
1703 attributes.
1707 attributes.
1704
1708
1705 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1709 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1706
1710
1707 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1711 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1708 commands into the methods implementing them.
1712 commands into the methods implementing them.
1709
1713
1710 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1714 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1711
1715
1712 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1716 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1713 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1717 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1714 autoindent support was authored by Jin Liu.
1718 autoindent support was authored by Jin Liu.
1715
1719
1716 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1720 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1717
1721
1718 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1722 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1719 for keymaps with a custom class that simplifies handling.
1723 for keymaps with a custom class that simplifies handling.
1720
1724
1721 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1725 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1722
1726
1723 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1727 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1724 resizing. This requires Python 2.5 to work.
1728 resizing. This requires Python 2.5 to work.
1725
1729
1726 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1730 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1727
1731
1728 * IPython/Extensions/ibrowse.py: Add two new commands to
1732 * IPython/Extensions/ibrowse.py: Add two new commands to
1729 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1733 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1730 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1734 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1731 attributes again. Remapped the help command to "?". Display
1735 attributes again. Remapped the help command to "?". Display
1732 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1736 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1733 as keys for the "home" and "end" commands. Add three new commands
1737 as keys for the "home" and "end" commands. Add three new commands
1734 to the input mode for "find" and friends: "delend" (CTRL-K)
1738 to the input mode for "find" and friends: "delend" (CTRL-K)
1735 deletes to the end of line. "incsearchup" searches upwards in the
1739 deletes to the end of line. "incsearchup" searches upwards in the
1736 command history for an input that starts with the text before the cursor.
1740 command history for an input that starts with the text before the cursor.
1737 "incsearchdown" does the same downwards. Removed a bogus mapping of
1741 "incsearchdown" does the same downwards. Removed a bogus mapping of
1738 the x key to "delete".
1742 the x key to "delete".
1739
1743
1740 2006-06-15 Ville Vainio <vivainio@gmail.com>
1744 2006-06-15 Ville Vainio <vivainio@gmail.com>
1741
1745
1742 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1746 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1743 used to create prompts dynamically, instead of the "old" way of
1747 used to create prompts dynamically, instead of the "old" way of
1744 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1748 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1745 way still works (it's invoked by the default hook), of course.
1749 way still works (it's invoked by the default hook), of course.
1746
1750
1747 * Prompts.py: added generate_output_prompt hook for altering output
1751 * Prompts.py: added generate_output_prompt hook for altering output
1748 prompt
1752 prompt
1749
1753
1750 * Release.py: Changed version string to 0.7.3.svn.
1754 * Release.py: Changed version string to 0.7.3.svn.
1751
1755
1752 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1756 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1753
1757
1754 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1758 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1755 the call to fetch() always tries to fetch enough data for at least one
1759 the call to fetch() always tries to fetch enough data for at least one
1756 full screen. This makes it possible to simply call moveto(0,0,True) in
1760 full screen. This makes it possible to simply call moveto(0,0,True) in
1757 the constructor. Fix typos and removed the obsolete goto attribute.
1761 the constructor. Fix typos and removed the obsolete goto attribute.
1758
1762
1759 2006-06-12 Ville Vainio <vivainio@gmail.com>
1763 2006-06-12 Ville Vainio <vivainio@gmail.com>
1760
1764
1761 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1765 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1762 allowing $variable interpolation within multiline statements,
1766 allowing $variable interpolation within multiline statements,
1763 though so far only with "sh" profile for a testing period.
1767 though so far only with "sh" profile for a testing period.
1764 The patch also enables splitting long commands with \ but it
1768 The patch also enables splitting long commands with \ but it
1765 doesn't work properly yet.
1769 doesn't work properly yet.
1766
1770
1767 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1771 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1768
1772
1769 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1773 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1770 input history and the position of the cursor in the input history for
1774 input history and the position of the cursor in the input history for
1771 the find, findbackwards and goto command.
1775 the find, findbackwards and goto command.
1772
1776
1773 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1777 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1774
1778
1775 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1779 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1776 implements the basic functionality of browser commands that require
1780 implements the basic functionality of browser commands that require
1777 input. Reimplement the goto, find and findbackwards commands as
1781 input. Reimplement the goto, find and findbackwards commands as
1778 subclasses of _CommandInput. Add an input history and keymaps to those
1782 subclasses of _CommandInput. Add an input history and keymaps to those
1779 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1783 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1780 execute commands.
1784 execute commands.
1781
1785
1782 2006-06-07 Ville Vainio <vivainio@gmail.com>
1786 2006-06-07 Ville Vainio <vivainio@gmail.com>
1783
1787
1784 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1788 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1785 running the batch files instead of leaving the session open.
1789 running the batch files instead of leaving the session open.
1786
1790
1787 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1791 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1788
1792
1789 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1793 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1790 the original fix was incomplete. Patch submitted by W. Maier.
1794 the original fix was incomplete. Patch submitted by W. Maier.
1791
1795
1792 2006-06-07 Ville Vainio <vivainio@gmail.com>
1796 2006-06-07 Ville Vainio <vivainio@gmail.com>
1793
1797
1794 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1798 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1795 Confirmation prompts can be supressed by 'quiet' option.
1799 Confirmation prompts can be supressed by 'quiet' option.
1796 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1800 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1797
1801
1798 2006-06-06 *** Released version 0.7.2
1802 2006-06-06 *** Released version 0.7.2
1799
1803
1800 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1804 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1801
1805
1802 * IPython/Release.py (version): Made 0.7.2 final for release.
1806 * IPython/Release.py (version): Made 0.7.2 final for release.
1803 Repo tagged and release cut.
1807 Repo tagged and release cut.
1804
1808
1805 2006-06-05 Ville Vainio <vivainio@gmail.com>
1809 2006-06-05 Ville Vainio <vivainio@gmail.com>
1806
1810
1807 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1811 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1808 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1812 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1809
1813
1810 * upgrade_dir.py: try import 'path' module a bit harder
1814 * upgrade_dir.py: try import 'path' module a bit harder
1811 (for %upgrade)
1815 (for %upgrade)
1812
1816
1813 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1817 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1814
1818
1815 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1819 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1816 instead of looping 20 times.
1820 instead of looping 20 times.
1817
1821
1818 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1822 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1819 correctly at initialization time. Bug reported by Krishna Mohan
1823 correctly at initialization time. Bug reported by Krishna Mohan
1820 Gundu <gkmohan-AT-gmail.com> on the user list.
1824 Gundu <gkmohan-AT-gmail.com> on the user list.
1821
1825
1822 * IPython/Release.py (version): Mark 0.7.2 version to start
1826 * IPython/Release.py (version): Mark 0.7.2 version to start
1823 testing for release on 06/06.
1827 testing for release on 06/06.
1824
1828
1825 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1829 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1826
1830
1827 * scripts/irunner: thin script interface so users don't have to
1831 * scripts/irunner: thin script interface so users don't have to
1828 find the module and call it as an executable, since modules rarely
1832 find the module and call it as an executable, since modules rarely
1829 live in people's PATH.
1833 live in people's PATH.
1830
1834
1831 * IPython/irunner.py (InteractiveRunner.__init__): added
1835 * IPython/irunner.py (InteractiveRunner.__init__): added
1832 delaybeforesend attribute to control delays with newer versions of
1836 delaybeforesend attribute to control delays with newer versions of
1833 pexpect. Thanks to detailed help from pexpect's author, Noah
1837 pexpect. Thanks to detailed help from pexpect's author, Noah
1834 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1838 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1835 correctly (it works in NoColor mode).
1839 correctly (it works in NoColor mode).
1836
1840
1837 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1841 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1838 SAGE list, from improper log() calls.
1842 SAGE list, from improper log() calls.
1839
1843
1840 2006-05-31 Ville Vainio <vivainio@gmail.com>
1844 2006-05-31 Ville Vainio <vivainio@gmail.com>
1841
1845
1842 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1846 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1843 with args in parens to work correctly with dirs that have spaces.
1847 with args in parens to work correctly with dirs that have spaces.
1844
1848
1845 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1849 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1846
1850
1847 * IPython/Logger.py (Logger.logstart): add option to log raw input
1851 * IPython/Logger.py (Logger.logstart): add option to log raw input
1848 instead of the processed one. A -r flag was added to the
1852 instead of the processed one. A -r flag was added to the
1849 %logstart magic used for controlling logging.
1853 %logstart magic used for controlling logging.
1850
1854
1851 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1855 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1852
1856
1853 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1857 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1854 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1858 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1855 recognize the option. After a bug report by Will Maier. This
1859 recognize the option. After a bug report by Will Maier. This
1856 closes #64 (will do it after confirmation from W. Maier).
1860 closes #64 (will do it after confirmation from W. Maier).
1857
1861
1858 * IPython/irunner.py: New module to run scripts as if manually
1862 * IPython/irunner.py: New module to run scripts as if manually
1859 typed into an interactive environment, based on pexpect. After a
1863 typed into an interactive environment, based on pexpect. After a
1860 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1864 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1861 ipython-user list. Simple unittests in the tests/ directory.
1865 ipython-user list. Simple unittests in the tests/ directory.
1862
1866
1863 * tools/release: add Will Maier, OpenBSD port maintainer, to
1867 * tools/release: add Will Maier, OpenBSD port maintainer, to
1864 recepients list. We are now officially part of the OpenBSD ports:
1868 recepients list. We are now officially part of the OpenBSD ports:
1865 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1869 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1866 work.
1870 work.
1867
1871
1868 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1872 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1869
1873
1870 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1874 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1871 so that it doesn't break tkinter apps.
1875 so that it doesn't break tkinter apps.
1872
1876
1873 * IPython/iplib.py (_prefilter): fix bug where aliases would
1877 * IPython/iplib.py (_prefilter): fix bug where aliases would
1874 shadow variables when autocall was fully off. Reported by SAGE
1878 shadow variables when autocall was fully off. Reported by SAGE
1875 author William Stein.
1879 author William Stein.
1876
1880
1877 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1881 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1878 at what detail level strings are computed when foo? is requested.
1882 at what detail level strings are computed when foo? is requested.
1879 This allows users to ask for example that the string form of an
1883 This allows users to ask for example that the string form of an
1880 object is only computed when foo?? is called, or even never, by
1884 object is only computed when foo?? is called, or even never, by
1881 setting the object_info_string_level >= 2 in the configuration
1885 setting the object_info_string_level >= 2 in the configuration
1882 file. This new option has been added and documented. After a
1886 file. This new option has been added and documented. After a
1883 request by SAGE to be able to control the printing of very large
1887 request by SAGE to be able to control the printing of very large
1884 objects more easily.
1888 objects more easily.
1885
1889
1886 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1890 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1887
1891
1888 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1892 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1889 from sys.argv, to be 100% consistent with how Python itself works
1893 from sys.argv, to be 100% consistent with how Python itself works
1890 (as seen for example with python -i file.py). After a bug report
1894 (as seen for example with python -i file.py). After a bug report
1891 by Jeffrey Collins.
1895 by Jeffrey Collins.
1892
1896
1893 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1897 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1894 nasty bug which was preventing custom namespaces with -pylab,
1898 nasty bug which was preventing custom namespaces with -pylab,
1895 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1899 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1896 compatibility (long gone from mpl).
1900 compatibility (long gone from mpl).
1897
1901
1898 * IPython/ipapi.py (make_session): name change: create->make. We
1902 * IPython/ipapi.py (make_session): name change: create->make. We
1899 use make in other places (ipmaker,...), it's shorter and easier to
1903 use make in other places (ipmaker,...), it's shorter and easier to
1900 type and say, etc. I'm trying to clean things before 0.7.2 so
1904 type and say, etc. I'm trying to clean things before 0.7.2 so
1901 that I can keep things stable wrt to ipapi in the chainsaw branch.
1905 that I can keep things stable wrt to ipapi in the chainsaw branch.
1902
1906
1903 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1907 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1904 python-mode recognizes our debugger mode. Add support for
1908 python-mode recognizes our debugger mode. Add support for
1905 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1909 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1906 <m.liu.jin-AT-gmail.com> originally written by
1910 <m.liu.jin-AT-gmail.com> originally written by
1907 doxgen-AT-newsmth.net (with minor modifications for xemacs
1911 doxgen-AT-newsmth.net (with minor modifications for xemacs
1908 compatibility)
1912 compatibility)
1909
1913
1910 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1914 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1911 tracebacks when walking the stack so that the stack tracking system
1915 tracebacks when walking the stack so that the stack tracking system
1912 in emacs' python-mode can identify the frames correctly.
1916 in emacs' python-mode can identify the frames correctly.
1913
1917
1914 * IPython/ipmaker.py (make_IPython): make the internal (and
1918 * IPython/ipmaker.py (make_IPython): make the internal (and
1915 default config) autoedit_syntax value false by default. Too many
1919 default config) autoedit_syntax value false by default. Too many
1916 users have complained to me (both on and off-list) about problems
1920 users have complained to me (both on and off-list) about problems
1917 with this option being on by default, so I'm making it default to
1921 with this option being on by default, so I'm making it default to
1918 off. It can still be enabled by anyone via the usual mechanisms.
1922 off. It can still be enabled by anyone via the usual mechanisms.
1919
1923
1920 * IPython/completer.py (Completer.attr_matches): add support for
1924 * IPython/completer.py (Completer.attr_matches): add support for
1921 PyCrust-style _getAttributeNames magic method. Patch contributed
1925 PyCrust-style _getAttributeNames magic method. Patch contributed
1922 by <mscott-AT-goldenspud.com>. Closes #50.
1926 by <mscott-AT-goldenspud.com>. Closes #50.
1923
1927
1924 * IPython/iplib.py (InteractiveShell.__init__): remove the
1928 * IPython/iplib.py (InteractiveShell.__init__): remove the
1925 deletion of exit/quit from __builtin__, which can break
1929 deletion of exit/quit from __builtin__, which can break
1926 third-party tools like the Zope debugging console. The
1930 third-party tools like the Zope debugging console. The
1927 %exit/%quit magics remain. In general, it's probably a good idea
1931 %exit/%quit magics remain. In general, it's probably a good idea
1928 not to delete anything from __builtin__, since we never know what
1932 not to delete anything from __builtin__, since we never know what
1929 that will break. In any case, python now (for 2.5) will support
1933 that will break. In any case, python now (for 2.5) will support
1930 'real' exit/quit, so this issue is moot. Closes #55.
1934 'real' exit/quit, so this issue is moot. Closes #55.
1931
1935
1932 * IPython/genutils.py (with_obj): rename the 'with' function to
1936 * IPython/genutils.py (with_obj): rename the 'with' function to
1933 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1937 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1934 becomes a language keyword. Closes #53.
1938 becomes a language keyword. Closes #53.
1935
1939
1936 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1940 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1937 __file__ attribute to this so it fools more things into thinking
1941 __file__ attribute to this so it fools more things into thinking
1938 it is a real module. Closes #59.
1942 it is a real module. Closes #59.
1939
1943
1940 * IPython/Magic.py (magic_edit): add -n option to open the editor
1944 * IPython/Magic.py (magic_edit): add -n option to open the editor
1941 at a specific line number. After a patch by Stefan van der Walt.
1945 at a specific line number. After a patch by Stefan van der Walt.
1942
1946
1943 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1947 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1944
1948
1945 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1949 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1946 reason the file could not be opened. After automatic crash
1950 reason the file could not be opened. After automatic crash
1947 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1951 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1948 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1952 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1949 (_should_recompile): Don't fire editor if using %bg, since there
1953 (_should_recompile): Don't fire editor if using %bg, since there
1950 is no file in the first place. From the same report as above.
1954 is no file in the first place. From the same report as above.
1951 (raw_input): protect against faulty third-party prefilters. After
1955 (raw_input): protect against faulty third-party prefilters. After
1952 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1956 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1953 while running under SAGE.
1957 while running under SAGE.
1954
1958
1955 2006-05-23 Ville Vainio <vivainio@gmail.com>
1959 2006-05-23 Ville Vainio <vivainio@gmail.com>
1956
1960
1957 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1961 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1958 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1962 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1959 now returns None (again), unless dummy is specifically allowed by
1963 now returns None (again), unless dummy is specifically allowed by
1960 ipapi.get(allow_dummy=True).
1964 ipapi.get(allow_dummy=True).
1961
1965
1962 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1966 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1963
1967
1964 * IPython: remove all 2.2-compatibility objects and hacks from
1968 * IPython: remove all 2.2-compatibility objects and hacks from
1965 everywhere, since we only support 2.3 at this point. Docs
1969 everywhere, since we only support 2.3 at this point. Docs
1966 updated.
1970 updated.
1967
1971
1968 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1972 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1969 Anything requiring extra validation can be turned into a Python
1973 Anything requiring extra validation can be turned into a Python
1970 property in the future. I used a property for the db one b/c
1974 property in the future. I used a property for the db one b/c
1971 there was a nasty circularity problem with the initialization
1975 there was a nasty circularity problem with the initialization
1972 order, which right now I don't have time to clean up.
1976 order, which right now I don't have time to clean up.
1973
1977
1974 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1978 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1975 another locking bug reported by Jorgen. I'm not 100% sure though,
1979 another locking bug reported by Jorgen. I'm not 100% sure though,
1976 so more testing is needed...
1980 so more testing is needed...
1977
1981
1978 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1982 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1979
1983
1980 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1984 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1981 local variables from any routine in user code (typically executed
1985 local variables from any routine in user code (typically executed
1982 with %run) directly into the interactive namespace. Very useful
1986 with %run) directly into the interactive namespace. Very useful
1983 when doing complex debugging.
1987 when doing complex debugging.
1984 (IPythonNotRunning): Changed the default None object to a dummy
1988 (IPythonNotRunning): Changed the default None object to a dummy
1985 whose attributes can be queried as well as called without
1989 whose attributes can be queried as well as called without
1986 exploding, to ease writing code which works transparently both in
1990 exploding, to ease writing code which works transparently both in
1987 and out of ipython and uses some of this API.
1991 and out of ipython and uses some of this API.
1988
1992
1989 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1993 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1990
1994
1991 * IPython/hooks.py (result_display): Fix the fact that our display
1995 * IPython/hooks.py (result_display): Fix the fact that our display
1992 hook was using str() instead of repr(), as the default python
1996 hook was using str() instead of repr(), as the default python
1993 console does. This had gone unnoticed b/c it only happened if
1997 console does. This had gone unnoticed b/c it only happened if
1994 %Pprint was off, but the inconsistency was there.
1998 %Pprint was off, but the inconsistency was there.
1995
1999
1996 2006-05-15 Ville Vainio <vivainio@gmail.com>
2000 2006-05-15 Ville Vainio <vivainio@gmail.com>
1997
2001
1998 * Oinspect.py: Only show docstring for nonexisting/binary files
2002 * Oinspect.py: Only show docstring for nonexisting/binary files
1999 when doing object??, closing ticket #62
2003 when doing object??, closing ticket #62
2000
2004
2001 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2005 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2002
2006
2003 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2007 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2004 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2008 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2005 was being released in a routine which hadn't checked if it had
2009 was being released in a routine which hadn't checked if it had
2006 been the one to acquire it.
2010 been the one to acquire it.
2007
2011
2008 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2012 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2009
2013
2010 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2014 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2011
2015
2012 2006-04-11 Ville Vainio <vivainio@gmail.com>
2016 2006-04-11 Ville Vainio <vivainio@gmail.com>
2013
2017
2014 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2018 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2015 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2019 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2016 prefilters, allowing stuff like magics and aliases in the file.
2020 prefilters, allowing stuff like magics and aliases in the file.
2017
2021
2018 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2022 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2019 added. Supported now are "%clear in" and "%clear out" (clear input and
2023 added. Supported now are "%clear in" and "%clear out" (clear input and
2020 output history, respectively). Also fixed CachedOutput.flush to
2024 output history, respectively). Also fixed CachedOutput.flush to
2021 properly flush the output cache.
2025 properly flush the output cache.
2022
2026
2023 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2027 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2024 half-success (and fail explicitly).
2028 half-success (and fail explicitly).
2025
2029
2026 2006-03-28 Ville Vainio <vivainio@gmail.com>
2030 2006-03-28 Ville Vainio <vivainio@gmail.com>
2027
2031
2028 * iplib.py: Fix quoting of aliases so that only argless ones
2032 * iplib.py: Fix quoting of aliases so that only argless ones
2029 are quoted
2033 are quoted
2030
2034
2031 2006-03-28 Ville Vainio <vivainio@gmail.com>
2035 2006-03-28 Ville Vainio <vivainio@gmail.com>
2032
2036
2033 * iplib.py: Quote aliases with spaces in the name.
2037 * iplib.py: Quote aliases with spaces in the name.
2034 "c:\program files\blah\bin" is now legal alias target.
2038 "c:\program files\blah\bin" is now legal alias target.
2035
2039
2036 * ext_rehashdir.py: Space no longer allowed as arg
2040 * ext_rehashdir.py: Space no longer allowed as arg
2037 separator, since space is legal in path names.
2041 separator, since space is legal in path names.
2038
2042
2039 2006-03-16 Ville Vainio <vivainio@gmail.com>
2043 2006-03-16 Ville Vainio <vivainio@gmail.com>
2040
2044
2041 * upgrade_dir.py: Take path.py from Extensions, correcting
2045 * upgrade_dir.py: Take path.py from Extensions, correcting
2042 %upgrade magic
2046 %upgrade magic
2043
2047
2044 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2048 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2045
2049
2046 * hooks.py: Only enclose editor binary in quotes if legal and
2050 * hooks.py: Only enclose editor binary in quotes if legal and
2047 necessary (space in the name, and is an existing file). Fixes a bug
2051 necessary (space in the name, and is an existing file). Fixes a bug
2048 reported by Zachary Pincus.
2052 reported by Zachary Pincus.
2049
2053
2050 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2054 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2051
2055
2052 * Manual: thanks to a tip on proper color handling for Emacs, by
2056 * Manual: thanks to a tip on proper color handling for Emacs, by
2053 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2057 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2054
2058
2055 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2059 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2056 by applying the provided patch. Thanks to Liu Jin
2060 by applying the provided patch. Thanks to Liu Jin
2057 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2061 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2058 XEmacs/Linux, I'm trusting the submitter that it actually helps
2062 XEmacs/Linux, I'm trusting the submitter that it actually helps
2059 under win32/GNU Emacs. Will revisit if any problems are reported.
2063 under win32/GNU Emacs. Will revisit if any problems are reported.
2060
2064
2061 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2065 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2062
2066
2063 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2067 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2064 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2068 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2065
2069
2066 2006-03-12 Ville Vainio <vivainio@gmail.com>
2070 2006-03-12 Ville Vainio <vivainio@gmail.com>
2067
2071
2068 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2072 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2069 Torsten Marek.
2073 Torsten Marek.
2070
2074
2071 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2075 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2072
2076
2073 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2077 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2074 line ranges works again.
2078 line ranges works again.
2075
2079
2076 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2080 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2077
2081
2078 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2082 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2079 and friends, after a discussion with Zach Pincus on ipython-user.
2083 and friends, after a discussion with Zach Pincus on ipython-user.
2080 I'm not 100% sure, but after thinking about it quite a bit, it may
2084 I'm not 100% sure, but after thinking about it quite a bit, it may
2081 be OK. Testing with the multithreaded shells didn't reveal any
2085 be OK. Testing with the multithreaded shells didn't reveal any
2082 problems, but let's keep an eye out.
2086 problems, but let's keep an eye out.
2083
2087
2084 In the process, I fixed a few things which were calling
2088 In the process, I fixed a few things which were calling
2085 self.InteractiveTB() directly (like safe_execfile), which is a
2089 self.InteractiveTB() directly (like safe_execfile), which is a
2086 mistake: ALL exception reporting should be done by calling
2090 mistake: ALL exception reporting should be done by calling
2087 self.showtraceback(), which handles state and tab-completion and
2091 self.showtraceback(), which handles state and tab-completion and
2088 more.
2092 more.
2089
2093
2090 2006-03-01 Ville Vainio <vivainio@gmail.com>
2094 2006-03-01 Ville Vainio <vivainio@gmail.com>
2091
2095
2092 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2096 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2093 To use, do "from ipipe import *".
2097 To use, do "from ipipe import *".
2094
2098
2095 2006-02-24 Ville Vainio <vivainio@gmail.com>
2099 2006-02-24 Ville Vainio <vivainio@gmail.com>
2096
2100
2097 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2101 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2098 "cleanly" and safely than the older upgrade mechanism.
2102 "cleanly" and safely than the older upgrade mechanism.
2099
2103
2100 2006-02-21 Ville Vainio <vivainio@gmail.com>
2104 2006-02-21 Ville Vainio <vivainio@gmail.com>
2101
2105
2102 * Magic.py: %save works again.
2106 * Magic.py: %save works again.
2103
2107
2104 2006-02-15 Ville Vainio <vivainio@gmail.com>
2108 2006-02-15 Ville Vainio <vivainio@gmail.com>
2105
2109
2106 * Magic.py: %Pprint works again
2110 * Magic.py: %Pprint works again
2107
2111
2108 * Extensions/ipy_sane_defaults.py: Provide everything provided
2112 * Extensions/ipy_sane_defaults.py: Provide everything provided
2109 in default ipythonrc, to make it possible to have a completely empty
2113 in default ipythonrc, to make it possible to have a completely empty
2110 ipythonrc (and thus completely rc-file free configuration)
2114 ipythonrc (and thus completely rc-file free configuration)
2111
2115
2112 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2116 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2113
2117
2114 * IPython/hooks.py (editor): quote the call to the editor command,
2118 * IPython/hooks.py (editor): quote the call to the editor command,
2115 to allow commands with spaces in them. Problem noted by watching
2119 to allow commands with spaces in them. Problem noted by watching
2116 Ian Oswald's video about textpad under win32 at
2120 Ian Oswald's video about textpad under win32 at
2117 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2121 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2118
2122
2119 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2123 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2120 describing magics (we haven't used @ for a loong time).
2124 describing magics (we haven't used @ for a loong time).
2121
2125
2122 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2126 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2123 contributed by marienz to close
2127 contributed by marienz to close
2124 http://www.scipy.net/roundup/ipython/issue53.
2128 http://www.scipy.net/roundup/ipython/issue53.
2125
2129
2126 2006-02-10 Ville Vainio <vivainio@gmail.com>
2130 2006-02-10 Ville Vainio <vivainio@gmail.com>
2127
2131
2128 * genutils.py: getoutput now works in win32 too
2132 * genutils.py: getoutput now works in win32 too
2129
2133
2130 * completer.py: alias and magic completion only invoked
2134 * completer.py: alias and magic completion only invoked
2131 at the first "item" in the line, to avoid "cd %store"
2135 at the first "item" in the line, to avoid "cd %store"
2132 nonsense.
2136 nonsense.
2133
2137
2134 2006-02-09 Ville Vainio <vivainio@gmail.com>
2138 2006-02-09 Ville Vainio <vivainio@gmail.com>
2135
2139
2136 * test/*: Added a unit testing framework (finally).
2140 * test/*: Added a unit testing framework (finally).
2137 '%run runtests.py' to run test_*.
2141 '%run runtests.py' to run test_*.
2138
2142
2139 * ipapi.py: Exposed runlines and set_custom_exc
2143 * ipapi.py: Exposed runlines and set_custom_exc
2140
2144
2141 2006-02-07 Ville Vainio <vivainio@gmail.com>
2145 2006-02-07 Ville Vainio <vivainio@gmail.com>
2142
2146
2143 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2147 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2144 instead use "f(1 2)" as before.
2148 instead use "f(1 2)" as before.
2145
2149
2146 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2150 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2147
2151
2148 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2152 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2149 facilities, for demos processed by the IPython input filter
2153 facilities, for demos processed by the IPython input filter
2150 (IPythonDemo), and for running a script one-line-at-a-time as a
2154 (IPythonDemo), and for running a script one-line-at-a-time as a
2151 demo, both for pure Python (LineDemo) and for IPython-processed
2155 demo, both for pure Python (LineDemo) and for IPython-processed
2152 input (IPythonLineDemo). After a request by Dave Kohel, from the
2156 input (IPythonLineDemo). After a request by Dave Kohel, from the
2153 SAGE team.
2157 SAGE team.
2154 (Demo.edit): added an edit() method to the demo objects, to edit
2158 (Demo.edit): added an edit() method to the demo objects, to edit
2155 the in-memory copy of the last executed block.
2159 the in-memory copy of the last executed block.
2156
2160
2157 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2161 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2158 processing to %edit, %macro and %save. These commands can now be
2162 processing to %edit, %macro and %save. These commands can now be
2159 invoked on the unprocessed input as it was typed by the user
2163 invoked on the unprocessed input as it was typed by the user
2160 (without any prefilters applied). After requests by the SAGE team
2164 (without any prefilters applied). After requests by the SAGE team
2161 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2165 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2162
2166
2163 2006-02-01 Ville Vainio <vivainio@gmail.com>
2167 2006-02-01 Ville Vainio <vivainio@gmail.com>
2164
2168
2165 * setup.py, eggsetup.py: easy_install ipython==dev works
2169 * setup.py, eggsetup.py: easy_install ipython==dev works
2166 correctly now (on Linux)
2170 correctly now (on Linux)
2167
2171
2168 * ipy_user_conf,ipmaker: user config changes, removed spurious
2172 * ipy_user_conf,ipmaker: user config changes, removed spurious
2169 warnings
2173 warnings
2170
2174
2171 * iplib: if rc.banner is string, use it as is.
2175 * iplib: if rc.banner is string, use it as is.
2172
2176
2173 * Magic: %pycat accepts a string argument and pages it's contents.
2177 * Magic: %pycat accepts a string argument and pages it's contents.
2174
2178
2175
2179
2176 2006-01-30 Ville Vainio <vivainio@gmail.com>
2180 2006-01-30 Ville Vainio <vivainio@gmail.com>
2177
2181
2178 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2182 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2179 Now %store and bookmarks work through PickleShare, meaning that
2183 Now %store and bookmarks work through PickleShare, meaning that
2180 concurrent access is possible and all ipython sessions see the
2184 concurrent access is possible and all ipython sessions see the
2181 same database situation all the time, instead of snapshot of
2185 same database situation all the time, instead of snapshot of
2182 the situation when the session was started. Hence, %bookmark
2186 the situation when the session was started. Hence, %bookmark
2183 results are immediately accessible from othes sessions. The database
2187 results are immediately accessible from othes sessions. The database
2184 is also available for use by user extensions. See:
2188 is also available for use by user extensions. See:
2185 http://www.python.org/pypi/pickleshare
2189 http://www.python.org/pypi/pickleshare
2186
2190
2187 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2191 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2188
2192
2189 * aliases can now be %store'd
2193 * aliases can now be %store'd
2190
2194
2191 * path.py moved to Extensions so that pickleshare does not need
2195 * path.py moved to Extensions so that pickleshare does not need
2192 IPython-specific import. Extensions added to pythonpath right
2196 IPython-specific import. Extensions added to pythonpath right
2193 at __init__.
2197 at __init__.
2194
2198
2195 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2199 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2196 called with _ip.system and the pre-transformed command string.
2200 called with _ip.system and the pre-transformed command string.
2197
2201
2198 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2202 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2199
2203
2200 * IPython/iplib.py (interact): Fix that we were not catching
2204 * IPython/iplib.py (interact): Fix that we were not catching
2201 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2205 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2202 logic here had to change, but it's fixed now.
2206 logic here had to change, but it's fixed now.
2203
2207
2204 2006-01-29 Ville Vainio <vivainio@gmail.com>
2208 2006-01-29 Ville Vainio <vivainio@gmail.com>
2205
2209
2206 * iplib.py: Try to import pyreadline on Windows.
2210 * iplib.py: Try to import pyreadline on Windows.
2207
2211
2208 2006-01-27 Ville Vainio <vivainio@gmail.com>
2212 2006-01-27 Ville Vainio <vivainio@gmail.com>
2209
2213
2210 * iplib.py: Expose ipapi as _ip in builtin namespace.
2214 * iplib.py: Expose ipapi as _ip in builtin namespace.
2211 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2215 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2212 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2216 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2213 syntax now produce _ip.* variant of the commands.
2217 syntax now produce _ip.* variant of the commands.
2214
2218
2215 * "_ip.options().autoedit_syntax = 2" automatically throws
2219 * "_ip.options().autoedit_syntax = 2" automatically throws
2216 user to editor for syntax error correction without prompting.
2220 user to editor for syntax error correction without prompting.
2217
2221
2218 2006-01-27 Ville Vainio <vivainio@gmail.com>
2222 2006-01-27 Ville Vainio <vivainio@gmail.com>
2219
2223
2220 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2224 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2221 'ipython' at argv[0]) executed through command line.
2225 'ipython' at argv[0]) executed through command line.
2222 NOTE: this DEPRECATES calling ipython with multiple scripts
2226 NOTE: this DEPRECATES calling ipython with multiple scripts
2223 ("ipython a.py b.py c.py")
2227 ("ipython a.py b.py c.py")
2224
2228
2225 * iplib.py, hooks.py: Added configurable input prefilter,
2229 * iplib.py, hooks.py: Added configurable input prefilter,
2226 named 'input_prefilter'. See ext_rescapture.py for example
2230 named 'input_prefilter'. See ext_rescapture.py for example
2227 usage.
2231 usage.
2228
2232
2229 * ext_rescapture.py, Magic.py: Better system command output capture
2233 * ext_rescapture.py, Magic.py: Better system command output capture
2230 through 'var = !ls' (deprecates user-visible %sc). Same notation
2234 through 'var = !ls' (deprecates user-visible %sc). Same notation
2231 applies for magics, 'var = %alias' assigns alias list to var.
2235 applies for magics, 'var = %alias' assigns alias list to var.
2232
2236
2233 * ipapi.py: added meta() for accessing extension-usable data store.
2237 * ipapi.py: added meta() for accessing extension-usable data store.
2234
2238
2235 * iplib.py: added InteractiveShell.getapi(). New magics should be
2239 * iplib.py: added InteractiveShell.getapi(). New magics should be
2236 written doing self.getapi() instead of using the shell directly.
2240 written doing self.getapi() instead of using the shell directly.
2237
2241
2238 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2242 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2239 %store foo >> ~/myfoo.txt to store variables to files (in clean
2243 %store foo >> ~/myfoo.txt to store variables to files (in clean
2240 textual form, not a restorable pickle).
2244 textual form, not a restorable pickle).
2241
2245
2242 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2246 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2243
2247
2244 * usage.py, Magic.py: added %quickref
2248 * usage.py, Magic.py: added %quickref
2245
2249
2246 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2250 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2247
2251
2248 * GetoptErrors when invoking magics etc. with wrong args
2252 * GetoptErrors when invoking magics etc. with wrong args
2249 are now more helpful:
2253 are now more helpful:
2250 GetoptError: option -l not recognized (allowed: "qb" )
2254 GetoptError: option -l not recognized (allowed: "qb" )
2251
2255
2252 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2256 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2253
2257
2254 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2258 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2255 computationally intensive blocks don't appear to stall the demo.
2259 computationally intensive blocks don't appear to stall the demo.
2256
2260
2257 2006-01-24 Ville Vainio <vivainio@gmail.com>
2261 2006-01-24 Ville Vainio <vivainio@gmail.com>
2258
2262
2259 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2263 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2260 value to manipulate resulting history entry.
2264 value to manipulate resulting history entry.
2261
2265
2262 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2266 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2263 to instance methods of IPApi class, to make extending an embedded
2267 to instance methods of IPApi class, to make extending an embedded
2264 IPython feasible. See ext_rehashdir.py for example usage.
2268 IPython feasible. See ext_rehashdir.py for example usage.
2265
2269
2266 * Merged 1071-1076 from branches/0.7.1
2270 * Merged 1071-1076 from branches/0.7.1
2267
2271
2268
2272
2269 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2273 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2270
2274
2271 * tools/release (daystamp): Fix build tools to use the new
2275 * tools/release (daystamp): Fix build tools to use the new
2272 eggsetup.py script to build lightweight eggs.
2276 eggsetup.py script to build lightweight eggs.
2273
2277
2274 * Applied changesets 1062 and 1064 before 0.7.1 release.
2278 * Applied changesets 1062 and 1064 before 0.7.1 release.
2275
2279
2276 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2280 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2277 see the raw input history (without conversions like %ls ->
2281 see the raw input history (without conversions like %ls ->
2278 ipmagic("ls")). After a request from W. Stein, SAGE
2282 ipmagic("ls")). After a request from W. Stein, SAGE
2279 (http://modular.ucsd.edu/sage) developer. This information is
2283 (http://modular.ucsd.edu/sage) developer. This information is
2280 stored in the input_hist_raw attribute of the IPython instance, so
2284 stored in the input_hist_raw attribute of the IPython instance, so
2281 developers can access it if needed (it's an InputList instance).
2285 developers can access it if needed (it's an InputList instance).
2282
2286
2283 * Versionstring = 0.7.2.svn
2287 * Versionstring = 0.7.2.svn
2284
2288
2285 * eggsetup.py: A separate script for constructing eggs, creates
2289 * eggsetup.py: A separate script for constructing eggs, creates
2286 proper launch scripts even on Windows (an .exe file in
2290 proper launch scripts even on Windows (an .exe file in
2287 \python24\scripts).
2291 \python24\scripts).
2288
2292
2289 * ipapi.py: launch_new_instance, launch entry point needed for the
2293 * ipapi.py: launch_new_instance, launch entry point needed for the
2290 egg.
2294 egg.
2291
2295
2292 2006-01-23 Ville Vainio <vivainio@gmail.com>
2296 2006-01-23 Ville Vainio <vivainio@gmail.com>
2293
2297
2294 * Added %cpaste magic for pasting python code
2298 * Added %cpaste magic for pasting python code
2295
2299
2296 2006-01-22 Ville Vainio <vivainio@gmail.com>
2300 2006-01-22 Ville Vainio <vivainio@gmail.com>
2297
2301
2298 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2302 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2299
2303
2300 * Versionstring = 0.7.2.svn
2304 * Versionstring = 0.7.2.svn
2301
2305
2302 * eggsetup.py: A separate script for constructing eggs, creates
2306 * eggsetup.py: A separate script for constructing eggs, creates
2303 proper launch scripts even on Windows (an .exe file in
2307 proper launch scripts even on Windows (an .exe file in
2304 \python24\scripts).
2308 \python24\scripts).
2305
2309
2306 * ipapi.py: launch_new_instance, launch entry point needed for the
2310 * ipapi.py: launch_new_instance, launch entry point needed for the
2307 egg.
2311 egg.
2308
2312
2309 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2313 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2310
2314
2311 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2315 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2312 %pfile foo would print the file for foo even if it was a binary.
2316 %pfile foo would print the file for foo even if it was a binary.
2313 Now, extensions '.so' and '.dll' are skipped.
2317 Now, extensions '.so' and '.dll' are skipped.
2314
2318
2315 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2319 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2316 bug, where macros would fail in all threaded modes. I'm not 100%
2320 bug, where macros would fail in all threaded modes. I'm not 100%
2317 sure, so I'm going to put out an rc instead of making a release
2321 sure, so I'm going to put out an rc instead of making a release
2318 today, and wait for feedback for at least a few days.
2322 today, and wait for feedback for at least a few days.
2319
2323
2320 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2324 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2321 it...) the handling of pasting external code with autoindent on.
2325 it...) the handling of pasting external code with autoindent on.
2322 To get out of a multiline input, the rule will appear for most
2326 To get out of a multiline input, the rule will appear for most
2323 users unchanged: two blank lines or change the indent level
2327 users unchanged: two blank lines or change the indent level
2324 proposed by IPython. But there is a twist now: you can
2328 proposed by IPython. But there is a twist now: you can
2325 add/subtract only *one or two spaces*. If you add/subtract three
2329 add/subtract only *one or two spaces*. If you add/subtract three
2326 or more (unless you completely delete the line), IPython will
2330 or more (unless you completely delete the line), IPython will
2327 accept that line, and you'll need to enter a second one of pure
2331 accept that line, and you'll need to enter a second one of pure
2328 whitespace. I know it sounds complicated, but I can't find a
2332 whitespace. I know it sounds complicated, but I can't find a
2329 different solution that covers all the cases, with the right
2333 different solution that covers all the cases, with the right
2330 heuristics. Hopefully in actual use, nobody will really notice
2334 heuristics. Hopefully in actual use, nobody will really notice
2331 all these strange rules and things will 'just work'.
2335 all these strange rules and things will 'just work'.
2332
2336
2333 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2337 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2334
2338
2335 * IPython/iplib.py (interact): catch exceptions which can be
2339 * IPython/iplib.py (interact): catch exceptions which can be
2336 triggered asynchronously by signal handlers. Thanks to an
2340 triggered asynchronously by signal handlers. Thanks to an
2337 automatic crash report, submitted by Colin Kingsley
2341 automatic crash report, submitted by Colin Kingsley
2338 <tercel-AT-gentoo.org>.
2342 <tercel-AT-gentoo.org>.
2339
2343
2340 2006-01-20 Ville Vainio <vivainio@gmail.com>
2344 2006-01-20 Ville Vainio <vivainio@gmail.com>
2341
2345
2342 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2346 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2343 (%rehashdir, very useful, try it out) of how to extend ipython
2347 (%rehashdir, very useful, try it out) of how to extend ipython
2344 with new magics. Also added Extensions dir to pythonpath to make
2348 with new magics. Also added Extensions dir to pythonpath to make
2345 importing extensions easy.
2349 importing extensions easy.
2346
2350
2347 * %store now complains when trying to store interactively declared
2351 * %store now complains when trying to store interactively declared
2348 classes / instances of those classes.
2352 classes / instances of those classes.
2349
2353
2350 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2354 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2351 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2355 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2352 if they exist, and ipy_user_conf.py with some defaults is created for
2356 if they exist, and ipy_user_conf.py with some defaults is created for
2353 the user.
2357 the user.
2354
2358
2355 * Startup rehashing done by the config file, not InterpreterExec.
2359 * Startup rehashing done by the config file, not InterpreterExec.
2356 This means system commands are available even without selecting the
2360 This means system commands are available even without selecting the
2357 pysh profile. It's the sensible default after all.
2361 pysh profile. It's the sensible default after all.
2358
2362
2359 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2363 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2360
2364
2361 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2365 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2362 multiline code with autoindent on working. But I am really not
2366 multiline code with autoindent on working. But I am really not
2363 sure, so this needs more testing. Will commit a debug-enabled
2367 sure, so this needs more testing. Will commit a debug-enabled
2364 version for now, while I test it some more, so that Ville and
2368 version for now, while I test it some more, so that Ville and
2365 others may also catch any problems. Also made
2369 others may also catch any problems. Also made
2366 self.indent_current_str() a method, to ensure that there's no
2370 self.indent_current_str() a method, to ensure that there's no
2367 chance of the indent space count and the corresponding string
2371 chance of the indent space count and the corresponding string
2368 falling out of sync. All code needing the string should just call
2372 falling out of sync. All code needing the string should just call
2369 the method.
2373 the method.
2370
2374
2371 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2375 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2372
2376
2373 * IPython/Magic.py (magic_edit): fix check for when users don't
2377 * IPython/Magic.py (magic_edit): fix check for when users don't
2374 save their output files, the try/except was in the wrong section.
2378 save their output files, the try/except was in the wrong section.
2375
2379
2376 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2380 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2377
2381
2378 * IPython/Magic.py (magic_run): fix __file__ global missing from
2382 * IPython/Magic.py (magic_run): fix __file__ global missing from
2379 script's namespace when executed via %run. After a report by
2383 script's namespace when executed via %run. After a report by
2380 Vivian.
2384 Vivian.
2381
2385
2382 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2386 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2383 when using python 2.4. The parent constructor changed in 2.4, and
2387 when using python 2.4. The parent constructor changed in 2.4, and
2384 we need to track it directly (we can't call it, as it messes up
2388 we need to track it directly (we can't call it, as it messes up
2385 readline and tab-completion inside our pdb would stop working).
2389 readline and tab-completion inside our pdb would stop working).
2386 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2390 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2387
2391
2388 2006-01-16 Ville Vainio <vivainio@gmail.com>
2392 2006-01-16 Ville Vainio <vivainio@gmail.com>
2389
2393
2390 * Ipython/magic.py: Reverted back to old %edit functionality
2394 * Ipython/magic.py: Reverted back to old %edit functionality
2391 that returns file contents on exit.
2395 that returns file contents on exit.
2392
2396
2393 * IPython/path.py: Added Jason Orendorff's "path" module to
2397 * IPython/path.py: Added Jason Orendorff's "path" module to
2394 IPython tree, http://www.jorendorff.com/articles/python/path/.
2398 IPython tree, http://www.jorendorff.com/articles/python/path/.
2395 You can get path objects conveniently through %sc, and !!, e.g.:
2399 You can get path objects conveniently through %sc, and !!, e.g.:
2396 sc files=ls
2400 sc files=ls
2397 for p in files.paths: # or files.p
2401 for p in files.paths: # or files.p
2398 print p,p.mtime
2402 print p,p.mtime
2399
2403
2400 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2404 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2401 now work again without considering the exclusion regexp -
2405 now work again without considering the exclusion regexp -
2402 hence, things like ',foo my/path' turn to 'foo("my/path")'
2406 hence, things like ',foo my/path' turn to 'foo("my/path")'
2403 instead of syntax error.
2407 instead of syntax error.
2404
2408
2405
2409
2406 2006-01-14 Ville Vainio <vivainio@gmail.com>
2410 2006-01-14 Ville Vainio <vivainio@gmail.com>
2407
2411
2408 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2412 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2409 ipapi decorators for python 2.4 users, options() provides access to rc
2413 ipapi decorators for python 2.4 users, options() provides access to rc
2410 data.
2414 data.
2411
2415
2412 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2416 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2413 as path separators (even on Linux ;-). Space character after
2417 as path separators (even on Linux ;-). Space character after
2414 backslash (as yielded by tab completer) is still space;
2418 backslash (as yielded by tab completer) is still space;
2415 "%cd long\ name" works as expected.
2419 "%cd long\ name" works as expected.
2416
2420
2417 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2421 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2418 as "chain of command", with priority. API stays the same,
2422 as "chain of command", with priority. API stays the same,
2419 TryNext exception raised by a hook function signals that
2423 TryNext exception raised by a hook function signals that
2420 current hook failed and next hook should try handling it, as
2424 current hook failed and next hook should try handling it, as
2421 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2425 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2422 requested configurable display hook, which is now implemented.
2426 requested configurable display hook, which is now implemented.
2423
2427
2424 2006-01-13 Ville Vainio <vivainio@gmail.com>
2428 2006-01-13 Ville Vainio <vivainio@gmail.com>
2425
2429
2426 * IPython/platutils*.py: platform specific utility functions,
2430 * IPython/platutils*.py: platform specific utility functions,
2427 so far only set_term_title is implemented (change terminal
2431 so far only set_term_title is implemented (change terminal
2428 label in windowing systems). %cd now changes the title to
2432 label in windowing systems). %cd now changes the title to
2429 current dir.
2433 current dir.
2430
2434
2431 * IPython/Release.py: Added myself to "authors" list,
2435 * IPython/Release.py: Added myself to "authors" list,
2432 had to create new files.
2436 had to create new files.
2433
2437
2434 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2438 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2435 shell escape; not a known bug but had potential to be one in the
2439 shell escape; not a known bug but had potential to be one in the
2436 future.
2440 future.
2437
2441
2438 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2442 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2439 extension API for IPython! See the module for usage example. Fix
2443 extension API for IPython! See the module for usage example. Fix
2440 OInspect for docstring-less magic functions.
2444 OInspect for docstring-less magic functions.
2441
2445
2442
2446
2443 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2447 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2444
2448
2445 * IPython/iplib.py (raw_input): temporarily deactivate all
2449 * IPython/iplib.py (raw_input): temporarily deactivate all
2446 attempts at allowing pasting of code with autoindent on. It
2450 attempts at allowing pasting of code with autoindent on. It
2447 introduced bugs (reported by Prabhu) and I can't seem to find a
2451 introduced bugs (reported by Prabhu) and I can't seem to find a
2448 robust combination which works in all cases. Will have to revisit
2452 robust combination which works in all cases. Will have to revisit
2449 later.
2453 later.
2450
2454
2451 * IPython/genutils.py: remove isspace() function. We've dropped
2455 * IPython/genutils.py: remove isspace() function. We've dropped
2452 2.2 compatibility, so it's OK to use the string method.
2456 2.2 compatibility, so it's OK to use the string method.
2453
2457
2454 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2458 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2455
2459
2456 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2460 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2457 matching what NOT to autocall on, to include all python binary
2461 matching what NOT to autocall on, to include all python binary
2458 operators (including things like 'and', 'or', 'is' and 'in').
2462 operators (including things like 'and', 'or', 'is' and 'in').
2459 Prompted by a bug report on 'foo & bar', but I realized we had
2463 Prompted by a bug report on 'foo & bar', but I realized we had
2460 many more potential bug cases with other operators. The regexp is
2464 many more potential bug cases with other operators. The regexp is
2461 self.re_exclude_auto, it's fairly commented.
2465 self.re_exclude_auto, it's fairly commented.
2462
2466
2463 2006-01-12 Ville Vainio <vivainio@gmail.com>
2467 2006-01-12 Ville Vainio <vivainio@gmail.com>
2464
2468
2465 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2469 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2466 Prettified and hardened string/backslash quoting with ipsystem(),
2470 Prettified and hardened string/backslash quoting with ipsystem(),
2467 ipalias() and ipmagic(). Now even \ characters are passed to
2471 ipalias() and ipmagic(). Now even \ characters are passed to
2468 %magics, !shell escapes and aliases exactly as they are in the
2472 %magics, !shell escapes and aliases exactly as they are in the
2469 ipython command line. Should improve backslash experience,
2473 ipython command line. Should improve backslash experience,
2470 particularly in Windows (path delimiter for some commands that
2474 particularly in Windows (path delimiter for some commands that
2471 won't understand '/'), but Unix benefits as well (regexps). %cd
2475 won't understand '/'), but Unix benefits as well (regexps). %cd
2472 magic still doesn't support backslash path delimiters, though. Also
2476 magic still doesn't support backslash path delimiters, though. Also
2473 deleted all pretense of supporting multiline command strings in
2477 deleted all pretense of supporting multiline command strings in
2474 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2478 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2475
2479
2476 * doc/build_doc_instructions.txt added. Documentation on how to
2480 * doc/build_doc_instructions.txt added. Documentation on how to
2477 use doc/update_manual.py, added yesterday. Both files contributed
2481 use doc/update_manual.py, added yesterday. Both files contributed
2478 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2482 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2479 doc/*.sh for deprecation at a later date.
2483 doc/*.sh for deprecation at a later date.
2480
2484
2481 * /ipython.py Added ipython.py to root directory for
2485 * /ipython.py Added ipython.py to root directory for
2482 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2486 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2483 ipython.py) and development convenience (no need to keep doing
2487 ipython.py) and development convenience (no need to keep doing
2484 "setup.py install" between changes).
2488 "setup.py install" between changes).
2485
2489
2486 * Made ! and !! shell escapes work (again) in multiline expressions:
2490 * Made ! and !! shell escapes work (again) in multiline expressions:
2487 if 1:
2491 if 1:
2488 !ls
2492 !ls
2489 !!ls
2493 !!ls
2490
2494
2491 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2495 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2492
2496
2493 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2497 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2494 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2498 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2495 module in case-insensitive installation. Was causing crashes
2499 module in case-insensitive installation. Was causing crashes
2496 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2500 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2497
2501
2498 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2502 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2499 <marienz-AT-gentoo.org>, closes
2503 <marienz-AT-gentoo.org>, closes
2500 http://www.scipy.net/roundup/ipython/issue51.
2504 http://www.scipy.net/roundup/ipython/issue51.
2501
2505
2502 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2506 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2503
2507
2504 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2508 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2505 problem of excessive CPU usage under *nix and keyboard lag under
2509 problem of excessive CPU usage under *nix and keyboard lag under
2506 win32.
2510 win32.
2507
2511
2508 2006-01-10 *** Released version 0.7.0
2512 2006-01-10 *** Released version 0.7.0
2509
2513
2510 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2514 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2511
2515
2512 * IPython/Release.py (revision): tag version number to 0.7.0,
2516 * IPython/Release.py (revision): tag version number to 0.7.0,
2513 ready for release.
2517 ready for release.
2514
2518
2515 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2519 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2516 it informs the user of the name of the temp. file used. This can
2520 it informs the user of the name of the temp. file used. This can
2517 help if you decide later to reuse that same file, so you know
2521 help if you decide later to reuse that same file, so you know
2518 where to copy the info from.
2522 where to copy the info from.
2519
2523
2520 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2524 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2521
2525
2522 * setup_bdist_egg.py: little script to build an egg. Added
2526 * setup_bdist_egg.py: little script to build an egg. Added
2523 support in the release tools as well.
2527 support in the release tools as well.
2524
2528
2525 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2529 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2526
2530
2527 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2531 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2528 version selection (new -wxversion command line and ipythonrc
2532 version selection (new -wxversion command line and ipythonrc
2529 parameter). Patch contributed by Arnd Baecker
2533 parameter). Patch contributed by Arnd Baecker
2530 <arnd.baecker-AT-web.de>.
2534 <arnd.baecker-AT-web.de>.
2531
2535
2532 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2536 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2533 embedded instances, for variables defined at the interactive
2537 embedded instances, for variables defined at the interactive
2534 prompt of the embedded ipython. Reported by Arnd.
2538 prompt of the embedded ipython. Reported by Arnd.
2535
2539
2536 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2540 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2537 it can be used as a (stateful) toggle, or with a direct parameter.
2541 it can be used as a (stateful) toggle, or with a direct parameter.
2538
2542
2539 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2543 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2540 could be triggered in certain cases and cause the traceback
2544 could be triggered in certain cases and cause the traceback
2541 printer not to work.
2545 printer not to work.
2542
2546
2543 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2547 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2544
2548
2545 * IPython/iplib.py (_should_recompile): Small fix, closes
2549 * IPython/iplib.py (_should_recompile): Small fix, closes
2546 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2550 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2547
2551
2548 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2552 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2549
2553
2550 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2554 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2551 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2555 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2552 Moad for help with tracking it down.
2556 Moad for help with tracking it down.
2553
2557
2554 * IPython/iplib.py (handle_auto): fix autocall handling for
2558 * IPython/iplib.py (handle_auto): fix autocall handling for
2555 objects which support BOTH __getitem__ and __call__ (so that f [x]
2559 objects which support BOTH __getitem__ and __call__ (so that f [x]
2556 is left alone, instead of becoming f([x]) automatically).
2560 is left alone, instead of becoming f([x]) automatically).
2557
2561
2558 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2562 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2559 Ville's patch.
2563 Ville's patch.
2560
2564
2561 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2565 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2562
2566
2563 * IPython/iplib.py (handle_auto): changed autocall semantics to
2567 * IPython/iplib.py (handle_auto): changed autocall semantics to
2564 include 'smart' mode, where the autocall transformation is NOT
2568 include 'smart' mode, where the autocall transformation is NOT
2565 applied if there are no arguments on the line. This allows you to
2569 applied if there are no arguments on the line. This allows you to
2566 just type 'foo' if foo is a callable to see its internal form,
2570 just type 'foo' if foo is a callable to see its internal form,
2567 instead of having it called with no arguments (typically a
2571 instead of having it called with no arguments (typically a
2568 mistake). The old 'full' autocall still exists: for that, you
2572 mistake). The old 'full' autocall still exists: for that, you
2569 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2573 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2570
2574
2571 * IPython/completer.py (Completer.attr_matches): add
2575 * IPython/completer.py (Completer.attr_matches): add
2572 tab-completion support for Enthoughts' traits. After a report by
2576 tab-completion support for Enthoughts' traits. After a report by
2573 Arnd and a patch by Prabhu.
2577 Arnd and a patch by Prabhu.
2574
2578
2575 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2579 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2576
2580
2577 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2581 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2578 Schmolck's patch to fix inspect.getinnerframes().
2582 Schmolck's patch to fix inspect.getinnerframes().
2579
2583
2580 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2584 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2581 for embedded instances, regarding handling of namespaces and items
2585 for embedded instances, regarding handling of namespaces and items
2582 added to the __builtin__ one. Multiple embedded instances and
2586 added to the __builtin__ one. Multiple embedded instances and
2583 recursive embeddings should work better now (though I'm not sure
2587 recursive embeddings should work better now (though I'm not sure
2584 I've got all the corner cases fixed, that code is a bit of a brain
2588 I've got all the corner cases fixed, that code is a bit of a brain
2585 twister).
2589 twister).
2586
2590
2587 * IPython/Magic.py (magic_edit): added support to edit in-memory
2591 * IPython/Magic.py (magic_edit): added support to edit in-memory
2588 macros (automatically creates the necessary temp files). %edit
2592 macros (automatically creates the necessary temp files). %edit
2589 also doesn't return the file contents anymore, it's just noise.
2593 also doesn't return the file contents anymore, it's just noise.
2590
2594
2591 * IPython/completer.py (Completer.attr_matches): revert change to
2595 * IPython/completer.py (Completer.attr_matches): revert change to
2592 complete only on attributes listed in __all__. I realized it
2596 complete only on attributes listed in __all__. I realized it
2593 cripples the tab-completion system as a tool for exploring the
2597 cripples the tab-completion system as a tool for exploring the
2594 internals of unknown libraries (it renders any non-__all__
2598 internals of unknown libraries (it renders any non-__all__
2595 attribute off-limits). I got bit by this when trying to see
2599 attribute off-limits). I got bit by this when trying to see
2596 something inside the dis module.
2600 something inside the dis module.
2597
2601
2598 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2602 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2599
2603
2600 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2604 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2601 namespace for users and extension writers to hold data in. This
2605 namespace for users and extension writers to hold data in. This
2602 follows the discussion in
2606 follows the discussion in
2603 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2607 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2604
2608
2605 * IPython/completer.py (IPCompleter.complete): small patch to help
2609 * IPython/completer.py (IPCompleter.complete): small patch to help
2606 tab-completion under Emacs, after a suggestion by John Barnard
2610 tab-completion under Emacs, after a suggestion by John Barnard
2607 <barnarj-AT-ccf.org>.
2611 <barnarj-AT-ccf.org>.
2608
2612
2609 * IPython/Magic.py (Magic.extract_input_slices): added support for
2613 * IPython/Magic.py (Magic.extract_input_slices): added support for
2610 the slice notation in magics to use N-M to represent numbers N...M
2614 the slice notation in magics to use N-M to represent numbers N...M
2611 (closed endpoints). This is used by %macro and %save.
2615 (closed endpoints). This is used by %macro and %save.
2612
2616
2613 * IPython/completer.py (Completer.attr_matches): for modules which
2617 * IPython/completer.py (Completer.attr_matches): for modules which
2614 define __all__, complete only on those. After a patch by Jeffrey
2618 define __all__, complete only on those. After a patch by Jeffrey
2615 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2619 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2616 speed up this routine.
2620 speed up this routine.
2617
2621
2618 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2622 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2619 don't know if this is the end of it, but the behavior now is
2623 don't know if this is the end of it, but the behavior now is
2620 certainly much more correct. Note that coupled with macros,
2624 certainly much more correct. Note that coupled with macros,
2621 slightly surprising (at first) behavior may occur: a macro will in
2625 slightly surprising (at first) behavior may occur: a macro will in
2622 general expand to multiple lines of input, so upon exiting, the
2626 general expand to multiple lines of input, so upon exiting, the
2623 in/out counters will both be bumped by the corresponding amount
2627 in/out counters will both be bumped by the corresponding amount
2624 (as if the macro's contents had been typed interactively). Typing
2628 (as if the macro's contents had been typed interactively). Typing
2625 %hist will reveal the intermediate (silently processed) lines.
2629 %hist will reveal the intermediate (silently processed) lines.
2626
2630
2627 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2631 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2628 pickle to fail (%run was overwriting __main__ and not restoring
2632 pickle to fail (%run was overwriting __main__ and not restoring
2629 it, but pickle relies on __main__ to operate).
2633 it, but pickle relies on __main__ to operate).
2630
2634
2631 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2635 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2632 using properties, but forgot to make the main InteractiveShell
2636 using properties, but forgot to make the main InteractiveShell
2633 class a new-style class. Properties fail silently, and
2637 class a new-style class. Properties fail silently, and
2634 mysteriously, with old-style class (getters work, but
2638 mysteriously, with old-style class (getters work, but
2635 setters don't do anything).
2639 setters don't do anything).
2636
2640
2637 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2641 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2638
2642
2639 * IPython/Magic.py (magic_history): fix history reporting bug (I
2643 * IPython/Magic.py (magic_history): fix history reporting bug (I
2640 know some nasties are still there, I just can't seem to find a
2644 know some nasties are still there, I just can't seem to find a
2641 reproducible test case to track them down; the input history is
2645 reproducible test case to track them down; the input history is
2642 falling out of sync...)
2646 falling out of sync...)
2643
2647
2644 * IPython/iplib.py (handle_shell_escape): fix bug where both
2648 * IPython/iplib.py (handle_shell_escape): fix bug where both
2645 aliases and system accesses where broken for indented code (such
2649 aliases and system accesses where broken for indented code (such
2646 as loops).
2650 as loops).
2647
2651
2648 * IPython/genutils.py (shell): fix small but critical bug for
2652 * IPython/genutils.py (shell): fix small but critical bug for
2649 win32 system access.
2653 win32 system access.
2650
2654
2651 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2655 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2652
2656
2653 * IPython/iplib.py (showtraceback): remove use of the
2657 * IPython/iplib.py (showtraceback): remove use of the
2654 sys.last_{type/value/traceback} structures, which are non
2658 sys.last_{type/value/traceback} structures, which are non
2655 thread-safe.
2659 thread-safe.
2656 (_prefilter): change control flow to ensure that we NEVER
2660 (_prefilter): change control flow to ensure that we NEVER
2657 introspect objects when autocall is off. This will guarantee that
2661 introspect objects when autocall is off. This will guarantee that
2658 having an input line of the form 'x.y', where access to attribute
2662 having an input line of the form 'x.y', where access to attribute
2659 'y' has side effects, doesn't trigger the side effect TWICE. It
2663 'y' has side effects, doesn't trigger the side effect TWICE. It
2660 is important to note that, with autocall on, these side effects
2664 is important to note that, with autocall on, these side effects
2661 can still happen.
2665 can still happen.
2662 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2666 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2663 trio. IPython offers these three kinds of special calls which are
2667 trio. IPython offers these three kinds of special calls which are
2664 not python code, and it's a good thing to have their call method
2668 not python code, and it's a good thing to have their call method
2665 be accessible as pure python functions (not just special syntax at
2669 be accessible as pure python functions (not just special syntax at
2666 the command line). It gives us a better internal implementation
2670 the command line). It gives us a better internal implementation
2667 structure, as well as exposing these for user scripting more
2671 structure, as well as exposing these for user scripting more
2668 cleanly.
2672 cleanly.
2669
2673
2670 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2674 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2671 file. Now that they'll be more likely to be used with the
2675 file. Now that they'll be more likely to be used with the
2672 persistance system (%store), I want to make sure their module path
2676 persistance system (%store), I want to make sure their module path
2673 doesn't change in the future, so that we don't break things for
2677 doesn't change in the future, so that we don't break things for
2674 users' persisted data.
2678 users' persisted data.
2675
2679
2676 * IPython/iplib.py (autoindent_update): move indentation
2680 * IPython/iplib.py (autoindent_update): move indentation
2677 management into the _text_ processing loop, not the keyboard
2681 management into the _text_ processing loop, not the keyboard
2678 interactive one. This is necessary to correctly process non-typed
2682 interactive one. This is necessary to correctly process non-typed
2679 multiline input (such as macros).
2683 multiline input (such as macros).
2680
2684
2681 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2685 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2682 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2686 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2683 which was producing problems in the resulting manual.
2687 which was producing problems in the resulting manual.
2684 (magic_whos): improve reporting of instances (show their class,
2688 (magic_whos): improve reporting of instances (show their class,
2685 instead of simply printing 'instance' which isn't terribly
2689 instead of simply printing 'instance' which isn't terribly
2686 informative).
2690 informative).
2687
2691
2688 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2692 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2689 (minor mods) to support network shares under win32.
2693 (minor mods) to support network shares under win32.
2690
2694
2691 * IPython/winconsole.py (get_console_size): add new winconsole
2695 * IPython/winconsole.py (get_console_size): add new winconsole
2692 module and fixes to page_dumb() to improve its behavior under
2696 module and fixes to page_dumb() to improve its behavior under
2693 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2697 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2694
2698
2695 * IPython/Magic.py (Macro): simplified Macro class to just
2699 * IPython/Magic.py (Macro): simplified Macro class to just
2696 subclass list. We've had only 2.2 compatibility for a very long
2700 subclass list. We've had only 2.2 compatibility for a very long
2697 time, yet I was still avoiding subclassing the builtin types. No
2701 time, yet I was still avoiding subclassing the builtin types. No
2698 more (I'm also starting to use properties, though I won't shift to
2702 more (I'm also starting to use properties, though I won't shift to
2699 2.3-specific features quite yet).
2703 2.3-specific features quite yet).
2700 (magic_store): added Ville's patch for lightweight variable
2704 (magic_store): added Ville's patch for lightweight variable
2701 persistence, after a request on the user list by Matt Wilkie
2705 persistence, after a request on the user list by Matt Wilkie
2702 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2706 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2703 details.
2707 details.
2704
2708
2705 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2709 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2706 changed the default logfile name from 'ipython.log' to
2710 changed the default logfile name from 'ipython.log' to
2707 'ipython_log.py'. These logs are real python files, and now that
2711 'ipython_log.py'. These logs are real python files, and now that
2708 we have much better multiline support, people are more likely to
2712 we have much better multiline support, people are more likely to
2709 want to use them as such. Might as well name them correctly.
2713 want to use them as such. Might as well name them correctly.
2710
2714
2711 * IPython/Magic.py: substantial cleanup. While we can't stop
2715 * IPython/Magic.py: substantial cleanup. While we can't stop
2712 using magics as mixins, due to the existing customizations 'out
2716 using magics as mixins, due to the existing customizations 'out
2713 there' which rely on the mixin naming conventions, at least I
2717 there' which rely on the mixin naming conventions, at least I
2714 cleaned out all cross-class name usage. So once we are OK with
2718 cleaned out all cross-class name usage. So once we are OK with
2715 breaking compatibility, the two systems can be separated.
2719 breaking compatibility, the two systems can be separated.
2716
2720
2717 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2721 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2718 anymore, and the class is a fair bit less hideous as well. New
2722 anymore, and the class is a fair bit less hideous as well. New
2719 features were also introduced: timestamping of input, and logging
2723 features were also introduced: timestamping of input, and logging
2720 of output results. These are user-visible with the -t and -o
2724 of output results. These are user-visible with the -t and -o
2721 options to %logstart. Closes
2725 options to %logstart. Closes
2722 http://www.scipy.net/roundup/ipython/issue11 and a request by
2726 http://www.scipy.net/roundup/ipython/issue11 and a request by
2723 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2727 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2724
2728
2725 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2729 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2726
2730
2727 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2731 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2728 better handle backslashes in paths. See the thread 'More Windows
2732 better handle backslashes in paths. See the thread 'More Windows
2729 questions part 2 - \/ characters revisited' on the iypthon user
2733 questions part 2 - \/ characters revisited' on the iypthon user
2730 list:
2734 list:
2731 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2735 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2732
2736
2733 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2737 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2734
2738
2735 (InteractiveShell.__init__): change threaded shells to not use the
2739 (InteractiveShell.__init__): change threaded shells to not use the
2736 ipython crash handler. This was causing more problems than not,
2740 ipython crash handler. This was causing more problems than not,
2737 as exceptions in the main thread (GUI code, typically) would
2741 as exceptions in the main thread (GUI code, typically) would
2738 always show up as a 'crash', when they really weren't.
2742 always show up as a 'crash', when they really weren't.
2739
2743
2740 The colors and exception mode commands (%colors/%xmode) have been
2744 The colors and exception mode commands (%colors/%xmode) have been
2741 synchronized to also take this into account, so users can get
2745 synchronized to also take this into account, so users can get
2742 verbose exceptions for their threaded code as well. I also added
2746 verbose exceptions for their threaded code as well. I also added
2743 support for activating pdb inside this exception handler as well,
2747 support for activating pdb inside this exception handler as well,
2744 so now GUI authors can use IPython's enhanced pdb at runtime.
2748 so now GUI authors can use IPython's enhanced pdb at runtime.
2745
2749
2746 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2750 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2747 true by default, and add it to the shipped ipythonrc file. Since
2751 true by default, and add it to the shipped ipythonrc file. Since
2748 this asks the user before proceeding, I think it's OK to make it
2752 this asks the user before proceeding, I think it's OK to make it
2749 true by default.
2753 true by default.
2750
2754
2751 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2755 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2752 of the previous special-casing of input in the eval loop. I think
2756 of the previous special-casing of input in the eval loop. I think
2753 this is cleaner, as they really are commands and shouldn't have
2757 this is cleaner, as they really are commands and shouldn't have
2754 a special role in the middle of the core code.
2758 a special role in the middle of the core code.
2755
2759
2756 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2760 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2757
2761
2758 * IPython/iplib.py (edit_syntax_error): added support for
2762 * IPython/iplib.py (edit_syntax_error): added support for
2759 automatically reopening the editor if the file had a syntax error
2763 automatically reopening the editor if the file had a syntax error
2760 in it. Thanks to scottt who provided the patch at:
2764 in it. Thanks to scottt who provided the patch at:
2761 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2765 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2762 version committed).
2766 version committed).
2763
2767
2764 * IPython/iplib.py (handle_normal): add suport for multi-line
2768 * IPython/iplib.py (handle_normal): add suport for multi-line
2765 input with emtpy lines. This fixes
2769 input with emtpy lines. This fixes
2766 http://www.scipy.net/roundup/ipython/issue43 and a similar
2770 http://www.scipy.net/roundup/ipython/issue43 and a similar
2767 discussion on the user list.
2771 discussion on the user list.
2768
2772
2769 WARNING: a behavior change is necessarily introduced to support
2773 WARNING: a behavior change is necessarily introduced to support
2770 blank lines: now a single blank line with whitespace does NOT
2774 blank lines: now a single blank line with whitespace does NOT
2771 break the input loop, which means that when autoindent is on, by
2775 break the input loop, which means that when autoindent is on, by
2772 default hitting return on the next (indented) line does NOT exit.
2776 default hitting return on the next (indented) line does NOT exit.
2773
2777
2774 Instead, to exit a multiline input you can either have:
2778 Instead, to exit a multiline input you can either have:
2775
2779
2776 - TWO whitespace lines (just hit return again), or
2780 - TWO whitespace lines (just hit return again), or
2777 - a single whitespace line of a different length than provided
2781 - a single whitespace line of a different length than provided
2778 by the autoindent (add or remove a space).
2782 by the autoindent (add or remove a space).
2779
2783
2780 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2784 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2781 module to better organize all readline-related functionality.
2785 module to better organize all readline-related functionality.
2782 I've deleted FlexCompleter and put all completion clases here.
2786 I've deleted FlexCompleter and put all completion clases here.
2783
2787
2784 * IPython/iplib.py (raw_input): improve indentation management.
2788 * IPython/iplib.py (raw_input): improve indentation management.
2785 It is now possible to paste indented code with autoindent on, and
2789 It is now possible to paste indented code with autoindent on, and
2786 the code is interpreted correctly (though it still looks bad on
2790 the code is interpreted correctly (though it still looks bad on
2787 screen, due to the line-oriented nature of ipython).
2791 screen, due to the line-oriented nature of ipython).
2788 (MagicCompleter.complete): change behavior so that a TAB key on an
2792 (MagicCompleter.complete): change behavior so that a TAB key on an
2789 otherwise empty line actually inserts a tab, instead of completing
2793 otherwise empty line actually inserts a tab, instead of completing
2790 on the entire global namespace. This makes it easier to use the
2794 on the entire global namespace. This makes it easier to use the
2791 TAB key for indentation. After a request by Hans Meine
2795 TAB key for indentation. After a request by Hans Meine
2792 <hans_meine-AT-gmx.net>
2796 <hans_meine-AT-gmx.net>
2793 (_prefilter): add support so that typing plain 'exit' or 'quit'
2797 (_prefilter): add support so that typing plain 'exit' or 'quit'
2794 does a sensible thing. Originally I tried to deviate as little as
2798 does a sensible thing. Originally I tried to deviate as little as
2795 possible from the default python behavior, but even that one may
2799 possible from the default python behavior, but even that one may
2796 change in this direction (thread on python-dev to that effect).
2800 change in this direction (thread on python-dev to that effect).
2797 Regardless, ipython should do the right thing even if CPython's
2801 Regardless, ipython should do the right thing even if CPython's
2798 '>>>' prompt doesn't.
2802 '>>>' prompt doesn't.
2799 (InteractiveShell): removed subclassing code.InteractiveConsole
2803 (InteractiveShell): removed subclassing code.InteractiveConsole
2800 class. By now we'd overridden just about all of its methods: I've
2804 class. By now we'd overridden just about all of its methods: I've
2801 copied the remaining two over, and now ipython is a standalone
2805 copied the remaining two over, and now ipython is a standalone
2802 class. This will provide a clearer picture for the chainsaw
2806 class. This will provide a clearer picture for the chainsaw
2803 branch refactoring.
2807 branch refactoring.
2804
2808
2805 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2809 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2806
2810
2807 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2811 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2808 failures for objects which break when dir() is called on them.
2812 failures for objects which break when dir() is called on them.
2809
2813
2810 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2814 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2811 distinct local and global namespaces in the completer API. This
2815 distinct local and global namespaces in the completer API. This
2812 change allows us to properly handle completion with distinct
2816 change allows us to properly handle completion with distinct
2813 scopes, including in embedded instances (this had never really
2817 scopes, including in embedded instances (this had never really
2814 worked correctly).
2818 worked correctly).
2815
2819
2816 Note: this introduces a change in the constructor for
2820 Note: this introduces a change in the constructor for
2817 MagicCompleter, as a new global_namespace parameter is now the
2821 MagicCompleter, as a new global_namespace parameter is now the
2818 second argument (the others were bumped one position).
2822 second argument (the others were bumped one position).
2819
2823
2820 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2824 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2821
2825
2822 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2826 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2823 embedded instances (which can be done now thanks to Vivian's
2827 embedded instances (which can be done now thanks to Vivian's
2824 frame-handling fixes for pdb).
2828 frame-handling fixes for pdb).
2825 (InteractiveShell.__init__): Fix namespace handling problem in
2829 (InteractiveShell.__init__): Fix namespace handling problem in
2826 embedded instances. We were overwriting __main__ unconditionally,
2830 embedded instances. We were overwriting __main__ unconditionally,
2827 and this should only be done for 'full' (non-embedded) IPython;
2831 and this should only be done for 'full' (non-embedded) IPython;
2828 embedded instances must respect the caller's __main__. Thanks to
2832 embedded instances must respect the caller's __main__. Thanks to
2829 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2833 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2830
2834
2831 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2835 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2832
2836
2833 * setup.py: added download_url to setup(). This registers the
2837 * setup.py: added download_url to setup(). This registers the
2834 download address at PyPI, which is not only useful to humans
2838 download address at PyPI, which is not only useful to humans
2835 browsing the site, but is also picked up by setuptools (the Eggs
2839 browsing the site, but is also picked up by setuptools (the Eggs
2836 machinery). Thanks to Ville and R. Kern for the info/discussion
2840 machinery). Thanks to Ville and R. Kern for the info/discussion
2837 on this.
2841 on this.
2838
2842
2839 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2843 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2840
2844
2841 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2845 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2842 This brings a lot of nice functionality to the pdb mode, which now
2846 This brings a lot of nice functionality to the pdb mode, which now
2843 has tab-completion, syntax highlighting, and better stack handling
2847 has tab-completion, syntax highlighting, and better stack handling
2844 than before. Many thanks to Vivian De Smedt
2848 than before. Many thanks to Vivian De Smedt
2845 <vivian-AT-vdesmedt.com> for the original patches.
2849 <vivian-AT-vdesmedt.com> for the original patches.
2846
2850
2847 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2851 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2848
2852
2849 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2853 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2850 sequence to consistently accept the banner argument. The
2854 sequence to consistently accept the banner argument. The
2851 inconsistency was tripping SAGE, thanks to Gary Zablackis
2855 inconsistency was tripping SAGE, thanks to Gary Zablackis
2852 <gzabl-AT-yahoo.com> for the report.
2856 <gzabl-AT-yahoo.com> for the report.
2853
2857
2854 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2858 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2855
2859
2856 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2860 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2857 Fix bug where a naked 'alias' call in the ipythonrc file would
2861 Fix bug where a naked 'alias' call in the ipythonrc file would
2858 cause a crash. Bug reported by Jorgen Stenarson.
2862 cause a crash. Bug reported by Jorgen Stenarson.
2859
2863
2860 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2864 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2861
2865
2862 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2866 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2863 startup time.
2867 startup time.
2864
2868
2865 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2869 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2866 instances had introduced a bug with globals in normal code. Now
2870 instances had introduced a bug with globals in normal code. Now
2867 it's working in all cases.
2871 it's working in all cases.
2868
2872
2869 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2873 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2870 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2874 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2871 has been introduced to set the default case sensitivity of the
2875 has been introduced to set the default case sensitivity of the
2872 searches. Users can still select either mode at runtime on a
2876 searches. Users can still select either mode at runtime on a
2873 per-search basis.
2877 per-search basis.
2874
2878
2875 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2879 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2876
2880
2877 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2881 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2878 attributes in wildcard searches for subclasses. Modified version
2882 attributes in wildcard searches for subclasses. Modified version
2879 of a patch by Jorgen.
2883 of a patch by Jorgen.
2880
2884
2881 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2885 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2882
2886
2883 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2887 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2884 embedded instances. I added a user_global_ns attribute to the
2888 embedded instances. I added a user_global_ns attribute to the
2885 InteractiveShell class to handle this.
2889 InteractiveShell class to handle this.
2886
2890
2887 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2891 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2888
2892
2889 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2893 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2890 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2894 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2891 (reported under win32, but may happen also in other platforms).
2895 (reported under win32, but may happen also in other platforms).
2892 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2896 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2893
2897
2894 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2898 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2895
2899
2896 * IPython/Magic.py (magic_psearch): new support for wildcard
2900 * IPython/Magic.py (magic_psearch): new support for wildcard
2897 patterns. Now, typing ?a*b will list all names which begin with a
2901 patterns. Now, typing ?a*b will list all names which begin with a
2898 and end in b, for example. The %psearch magic has full
2902 and end in b, for example. The %psearch magic has full
2899 docstrings. Many thanks to JΓΆrgen Stenarson
2903 docstrings. Many thanks to JΓΆrgen Stenarson
2900 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2904 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2901 implementing this functionality.
2905 implementing this functionality.
2902
2906
2903 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2907 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2904
2908
2905 * Manual: fixed long-standing annoyance of double-dashes (as in
2909 * Manual: fixed long-standing annoyance of double-dashes (as in
2906 --prefix=~, for example) being stripped in the HTML version. This
2910 --prefix=~, for example) being stripped in the HTML version. This
2907 is a latex2html bug, but a workaround was provided. Many thanks
2911 is a latex2html bug, but a workaround was provided. Many thanks
2908 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2912 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2909 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2913 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2910 rolling. This seemingly small issue had tripped a number of users
2914 rolling. This seemingly small issue had tripped a number of users
2911 when first installing, so I'm glad to see it gone.
2915 when first installing, so I'm glad to see it gone.
2912
2916
2913 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2917 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2914
2918
2915 * IPython/Extensions/numeric_formats.py: fix missing import,
2919 * IPython/Extensions/numeric_formats.py: fix missing import,
2916 reported by Stephen Walton.
2920 reported by Stephen Walton.
2917
2921
2918 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2922 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2919
2923
2920 * IPython/demo.py: finish demo module, fully documented now.
2924 * IPython/demo.py: finish demo module, fully documented now.
2921
2925
2922 * IPython/genutils.py (file_read): simple little utility to read a
2926 * IPython/genutils.py (file_read): simple little utility to read a
2923 file and ensure it's closed afterwards.
2927 file and ensure it's closed afterwards.
2924
2928
2925 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2929 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2926
2930
2927 * IPython/demo.py (Demo.__init__): added support for individually
2931 * IPython/demo.py (Demo.__init__): added support for individually
2928 tagging blocks for automatic execution.
2932 tagging blocks for automatic execution.
2929
2933
2930 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2934 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2931 syntax-highlighted python sources, requested by John.
2935 syntax-highlighted python sources, requested by John.
2932
2936
2933 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2937 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2934
2938
2935 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2939 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2936 finishing.
2940 finishing.
2937
2941
2938 * IPython/genutils.py (shlex_split): moved from Magic to here,
2942 * IPython/genutils.py (shlex_split): moved from Magic to here,
2939 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2943 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2940
2944
2941 * IPython/demo.py (Demo.__init__): added support for silent
2945 * IPython/demo.py (Demo.__init__): added support for silent
2942 blocks, improved marks as regexps, docstrings written.
2946 blocks, improved marks as regexps, docstrings written.
2943 (Demo.__init__): better docstring, added support for sys.argv.
2947 (Demo.__init__): better docstring, added support for sys.argv.
2944
2948
2945 * IPython/genutils.py (marquee): little utility used by the demo
2949 * IPython/genutils.py (marquee): little utility used by the demo
2946 code, handy in general.
2950 code, handy in general.
2947
2951
2948 * IPython/demo.py (Demo.__init__): new class for interactive
2952 * IPython/demo.py (Demo.__init__): new class for interactive
2949 demos. Not documented yet, I just wrote it in a hurry for
2953 demos. Not documented yet, I just wrote it in a hurry for
2950 scipy'05. Will docstring later.
2954 scipy'05. Will docstring later.
2951
2955
2952 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2956 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2953
2957
2954 * IPython/Shell.py (sigint_handler): Drastic simplification which
2958 * IPython/Shell.py (sigint_handler): Drastic simplification which
2955 also seems to make Ctrl-C work correctly across threads! This is
2959 also seems to make Ctrl-C work correctly across threads! This is
2956 so simple, that I can't beleive I'd missed it before. Needs more
2960 so simple, that I can't beleive I'd missed it before. Needs more
2957 testing, though.
2961 testing, though.
2958 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2962 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2959 like this before...
2963 like this before...
2960
2964
2961 * IPython/genutils.py (get_home_dir): add protection against
2965 * IPython/genutils.py (get_home_dir): add protection against
2962 non-dirs in win32 registry.
2966 non-dirs in win32 registry.
2963
2967
2964 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2968 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2965 bug where dict was mutated while iterating (pysh crash).
2969 bug where dict was mutated while iterating (pysh crash).
2966
2970
2967 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2971 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2968
2972
2969 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2973 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2970 spurious newlines added by this routine. After a report by
2974 spurious newlines added by this routine. After a report by
2971 F. Mantegazza.
2975 F. Mantegazza.
2972
2976
2973 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2977 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2974
2978
2975 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2979 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2976 calls. These were a leftover from the GTK 1.x days, and can cause
2980 calls. These were a leftover from the GTK 1.x days, and can cause
2977 problems in certain cases (after a report by John Hunter).
2981 problems in certain cases (after a report by John Hunter).
2978
2982
2979 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2983 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2980 os.getcwd() fails at init time. Thanks to patch from David Remahl
2984 os.getcwd() fails at init time. Thanks to patch from David Remahl
2981 <chmod007-AT-mac.com>.
2985 <chmod007-AT-mac.com>.
2982 (InteractiveShell.__init__): prevent certain special magics from
2986 (InteractiveShell.__init__): prevent certain special magics from
2983 being shadowed by aliases. Closes
2987 being shadowed by aliases. Closes
2984 http://www.scipy.net/roundup/ipython/issue41.
2988 http://www.scipy.net/roundup/ipython/issue41.
2985
2989
2986 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2990 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2987
2991
2988 * IPython/iplib.py (InteractiveShell.complete): Added new
2992 * IPython/iplib.py (InteractiveShell.complete): Added new
2989 top-level completion method to expose the completion mechanism
2993 top-level completion method to expose the completion mechanism
2990 beyond readline-based environments.
2994 beyond readline-based environments.
2991
2995
2992 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2996 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2993
2997
2994 * tools/ipsvnc (svnversion): fix svnversion capture.
2998 * tools/ipsvnc (svnversion): fix svnversion capture.
2995
2999
2996 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3000 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2997 attribute to self, which was missing. Before, it was set by a
3001 attribute to self, which was missing. Before, it was set by a
2998 routine which in certain cases wasn't being called, so the
3002 routine which in certain cases wasn't being called, so the
2999 instance could end up missing the attribute. This caused a crash.
3003 instance could end up missing the attribute. This caused a crash.
3000 Closes http://www.scipy.net/roundup/ipython/issue40.
3004 Closes http://www.scipy.net/roundup/ipython/issue40.
3001
3005
3002 2005-08-16 Fernando Perez <fperez@colorado.edu>
3006 2005-08-16 Fernando Perez <fperez@colorado.edu>
3003
3007
3004 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3008 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3005 contains non-string attribute. Closes
3009 contains non-string attribute. Closes
3006 http://www.scipy.net/roundup/ipython/issue38.
3010 http://www.scipy.net/roundup/ipython/issue38.
3007
3011
3008 2005-08-14 Fernando Perez <fperez@colorado.edu>
3012 2005-08-14 Fernando Perez <fperez@colorado.edu>
3009
3013
3010 * tools/ipsvnc: Minor improvements, to add changeset info.
3014 * tools/ipsvnc: Minor improvements, to add changeset info.
3011
3015
3012 2005-08-12 Fernando Perez <fperez@colorado.edu>
3016 2005-08-12 Fernando Perez <fperez@colorado.edu>
3013
3017
3014 * IPython/iplib.py (runsource): remove self.code_to_run_src
3018 * IPython/iplib.py (runsource): remove self.code_to_run_src
3015 attribute. I realized this is nothing more than
3019 attribute. I realized this is nothing more than
3016 '\n'.join(self.buffer), and having the same data in two different
3020 '\n'.join(self.buffer), and having the same data in two different
3017 places is just asking for synchronization bugs. This may impact
3021 places is just asking for synchronization bugs. This may impact
3018 people who have custom exception handlers, so I need to warn
3022 people who have custom exception handlers, so I need to warn
3019 ipython-dev about it (F. Mantegazza may use them).
3023 ipython-dev about it (F. Mantegazza may use them).
3020
3024
3021 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3025 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3022
3026
3023 * IPython/genutils.py: fix 2.2 compatibility (generators)
3027 * IPython/genutils.py: fix 2.2 compatibility (generators)
3024
3028
3025 2005-07-18 Fernando Perez <fperez@colorado.edu>
3029 2005-07-18 Fernando Perez <fperez@colorado.edu>
3026
3030
3027 * IPython/genutils.py (get_home_dir): fix to help users with
3031 * IPython/genutils.py (get_home_dir): fix to help users with
3028 invalid $HOME under win32.
3032 invalid $HOME under win32.
3029
3033
3030 2005-07-17 Fernando Perez <fperez@colorado.edu>
3034 2005-07-17 Fernando Perez <fperez@colorado.edu>
3031
3035
3032 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3036 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3033 some old hacks and clean up a bit other routines; code should be
3037 some old hacks and clean up a bit other routines; code should be
3034 simpler and a bit faster.
3038 simpler and a bit faster.
3035
3039
3036 * IPython/iplib.py (interact): removed some last-resort attempts
3040 * IPython/iplib.py (interact): removed some last-resort attempts
3037 to survive broken stdout/stderr. That code was only making it
3041 to survive broken stdout/stderr. That code was only making it
3038 harder to abstract out the i/o (necessary for gui integration),
3042 harder to abstract out the i/o (necessary for gui integration),
3039 and the crashes it could prevent were extremely rare in practice
3043 and the crashes it could prevent were extremely rare in practice
3040 (besides being fully user-induced in a pretty violent manner).
3044 (besides being fully user-induced in a pretty violent manner).
3041
3045
3042 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3046 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3043 Nothing major yet, but the code is simpler to read; this should
3047 Nothing major yet, but the code is simpler to read; this should
3044 make it easier to do more serious modifications in the future.
3048 make it easier to do more serious modifications in the future.
3045
3049
3046 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3050 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3047 which broke in .15 (thanks to a report by Ville).
3051 which broke in .15 (thanks to a report by Ville).
3048
3052
3049 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3053 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3050 be quite correct, I know next to nothing about unicode). This
3054 be quite correct, I know next to nothing about unicode). This
3051 will allow unicode strings to be used in prompts, amongst other
3055 will allow unicode strings to be used in prompts, amongst other
3052 cases. It also will prevent ipython from crashing when unicode
3056 cases. It also will prevent ipython from crashing when unicode
3053 shows up unexpectedly in many places. If ascii encoding fails, we
3057 shows up unexpectedly in many places. If ascii encoding fails, we
3054 assume utf_8. Currently the encoding is not a user-visible
3058 assume utf_8. Currently the encoding is not a user-visible
3055 setting, though it could be made so if there is demand for it.
3059 setting, though it could be made so if there is demand for it.
3056
3060
3057 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3061 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3058
3062
3059 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3063 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3060
3064
3061 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3065 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3062
3066
3063 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3067 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3064 code can work transparently for 2.2/2.3.
3068 code can work transparently for 2.2/2.3.
3065
3069
3066 2005-07-16 Fernando Perez <fperez@colorado.edu>
3070 2005-07-16 Fernando Perez <fperez@colorado.edu>
3067
3071
3068 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3072 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3069 out of the color scheme table used for coloring exception
3073 out of the color scheme table used for coloring exception
3070 tracebacks. This allows user code to add new schemes at runtime.
3074 tracebacks. This allows user code to add new schemes at runtime.
3071 This is a minimally modified version of the patch at
3075 This is a minimally modified version of the patch at
3072 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3076 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3073 for the contribution.
3077 for the contribution.
3074
3078
3075 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3079 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3076 slightly modified version of the patch in
3080 slightly modified version of the patch in
3077 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3081 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3078 to remove the previous try/except solution (which was costlier).
3082 to remove the previous try/except solution (which was costlier).
3079 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3083 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3080
3084
3081 2005-06-08 Fernando Perez <fperez@colorado.edu>
3085 2005-06-08 Fernando Perez <fperez@colorado.edu>
3082
3086
3083 * IPython/iplib.py (write/write_err): Add methods to abstract all
3087 * IPython/iplib.py (write/write_err): Add methods to abstract all
3084 I/O a bit more.
3088 I/O a bit more.
3085
3089
3086 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3090 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3087 warning, reported by Aric Hagberg, fix by JD Hunter.
3091 warning, reported by Aric Hagberg, fix by JD Hunter.
3088
3092
3089 2005-06-02 *** Released version 0.6.15
3093 2005-06-02 *** Released version 0.6.15
3090
3094
3091 2005-06-01 Fernando Perez <fperez@colorado.edu>
3095 2005-06-01 Fernando Perez <fperez@colorado.edu>
3092
3096
3093 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3097 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3094 tab-completion of filenames within open-quoted strings. Note that
3098 tab-completion of filenames within open-quoted strings. Note that
3095 this requires that in ~/.ipython/ipythonrc, users change the
3099 this requires that in ~/.ipython/ipythonrc, users change the
3096 readline delimiters configuration to read:
3100 readline delimiters configuration to read:
3097
3101
3098 readline_remove_delims -/~
3102 readline_remove_delims -/~
3099
3103
3100
3104
3101 2005-05-31 *** Released version 0.6.14
3105 2005-05-31 *** Released version 0.6.14
3102
3106
3103 2005-05-29 Fernando Perez <fperez@colorado.edu>
3107 2005-05-29 Fernando Perez <fperez@colorado.edu>
3104
3108
3105 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3109 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3106 with files not on the filesystem. Reported by Eliyahu Sandler
3110 with files not on the filesystem. Reported by Eliyahu Sandler
3107 <eli@gondolin.net>
3111 <eli@gondolin.net>
3108
3112
3109 2005-05-22 Fernando Perez <fperez@colorado.edu>
3113 2005-05-22 Fernando Perez <fperez@colorado.edu>
3110
3114
3111 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3115 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3112 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3116 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3113
3117
3114 2005-05-19 Fernando Perez <fperez@colorado.edu>
3118 2005-05-19 Fernando Perez <fperez@colorado.edu>
3115
3119
3116 * IPython/iplib.py (safe_execfile): close a file which could be
3120 * IPython/iplib.py (safe_execfile): close a file which could be
3117 left open (causing problems in win32, which locks open files).
3121 left open (causing problems in win32, which locks open files).
3118 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3122 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3119
3123
3120 2005-05-18 Fernando Perez <fperez@colorado.edu>
3124 2005-05-18 Fernando Perez <fperez@colorado.edu>
3121
3125
3122 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3126 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3123 keyword arguments correctly to safe_execfile().
3127 keyword arguments correctly to safe_execfile().
3124
3128
3125 2005-05-13 Fernando Perez <fperez@colorado.edu>
3129 2005-05-13 Fernando Perez <fperez@colorado.edu>
3126
3130
3127 * ipython.1: Added info about Qt to manpage, and threads warning
3131 * ipython.1: Added info about Qt to manpage, and threads warning
3128 to usage page (invoked with --help).
3132 to usage page (invoked with --help).
3129
3133
3130 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3134 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3131 new matcher (it goes at the end of the priority list) to do
3135 new matcher (it goes at the end of the priority list) to do
3132 tab-completion on named function arguments. Submitted by George
3136 tab-completion on named function arguments. Submitted by George
3133 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3137 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3134 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3138 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3135 for more details.
3139 for more details.
3136
3140
3137 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3141 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3138 SystemExit exceptions in the script being run. Thanks to a report
3142 SystemExit exceptions in the script being run. Thanks to a report
3139 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3143 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3140 producing very annoying behavior when running unit tests.
3144 producing very annoying behavior when running unit tests.
3141
3145
3142 2005-05-12 Fernando Perez <fperez@colorado.edu>
3146 2005-05-12 Fernando Perez <fperez@colorado.edu>
3143
3147
3144 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3148 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3145 which I'd broken (again) due to a changed regexp. In the process,
3149 which I'd broken (again) due to a changed regexp. In the process,
3146 added ';' as an escape to auto-quote the whole line without
3150 added ';' as an escape to auto-quote the whole line without
3147 splitting its arguments. Thanks to a report by Jerry McRae
3151 splitting its arguments. Thanks to a report by Jerry McRae
3148 <qrs0xyc02-AT-sneakemail.com>.
3152 <qrs0xyc02-AT-sneakemail.com>.
3149
3153
3150 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3154 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3151 possible crashes caused by a TokenError. Reported by Ed Schofield
3155 possible crashes caused by a TokenError. Reported by Ed Schofield
3152 <schofield-AT-ftw.at>.
3156 <schofield-AT-ftw.at>.
3153
3157
3154 2005-05-06 Fernando Perez <fperez@colorado.edu>
3158 2005-05-06 Fernando Perez <fperez@colorado.edu>
3155
3159
3156 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3160 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3157
3161
3158 2005-04-29 Fernando Perez <fperez@colorado.edu>
3162 2005-04-29 Fernando Perez <fperez@colorado.edu>
3159
3163
3160 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3164 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3161 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3165 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3162 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3166 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3163 which provides support for Qt interactive usage (similar to the
3167 which provides support for Qt interactive usage (similar to the
3164 existing one for WX and GTK). This had been often requested.
3168 existing one for WX and GTK). This had been often requested.
3165
3169
3166 2005-04-14 *** Released version 0.6.13
3170 2005-04-14 *** Released version 0.6.13
3167
3171
3168 2005-04-08 Fernando Perez <fperez@colorado.edu>
3172 2005-04-08 Fernando Perez <fperez@colorado.edu>
3169
3173
3170 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3174 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3171 from _ofind, which gets called on almost every input line. Now,
3175 from _ofind, which gets called on almost every input line. Now,
3172 we only try to get docstrings if they are actually going to be
3176 we only try to get docstrings if they are actually going to be
3173 used (the overhead of fetching unnecessary docstrings can be
3177 used (the overhead of fetching unnecessary docstrings can be
3174 noticeable for certain objects, such as Pyro proxies).
3178 noticeable for certain objects, such as Pyro proxies).
3175
3179
3176 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3180 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3177 for completers. For some reason I had been passing them the state
3181 for completers. For some reason I had been passing them the state
3178 variable, which completers never actually need, and was in
3182 variable, which completers never actually need, and was in
3179 conflict with the rlcompleter API. Custom completers ONLY need to
3183 conflict with the rlcompleter API. Custom completers ONLY need to
3180 take the text parameter.
3184 take the text parameter.
3181
3185
3182 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3186 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3183 work correctly in pysh. I've also moved all the logic which used
3187 work correctly in pysh. I've also moved all the logic which used
3184 to be in pysh.py here, which will prevent problems with future
3188 to be in pysh.py here, which will prevent problems with future
3185 upgrades. However, this time I must warn users to update their
3189 upgrades. However, this time I must warn users to update their
3186 pysh profile to include the line
3190 pysh profile to include the line
3187
3191
3188 import_all IPython.Extensions.InterpreterExec
3192 import_all IPython.Extensions.InterpreterExec
3189
3193
3190 because otherwise things won't work for them. They MUST also
3194 because otherwise things won't work for them. They MUST also
3191 delete pysh.py and the line
3195 delete pysh.py and the line
3192
3196
3193 execfile pysh.py
3197 execfile pysh.py
3194
3198
3195 from their ipythonrc-pysh.
3199 from their ipythonrc-pysh.
3196
3200
3197 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3201 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3198 robust in the face of objects whose dir() returns non-strings
3202 robust in the face of objects whose dir() returns non-strings
3199 (which it shouldn't, but some broken libs like ITK do). Thanks to
3203 (which it shouldn't, but some broken libs like ITK do). Thanks to
3200 a patch by John Hunter (implemented differently, though). Also
3204 a patch by John Hunter (implemented differently, though). Also
3201 minor improvements by using .extend instead of + on lists.
3205 minor improvements by using .extend instead of + on lists.
3202
3206
3203 * pysh.py:
3207 * pysh.py:
3204
3208
3205 2005-04-06 Fernando Perez <fperez@colorado.edu>
3209 2005-04-06 Fernando Perez <fperez@colorado.edu>
3206
3210
3207 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3211 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3208 by default, so that all users benefit from it. Those who don't
3212 by default, so that all users benefit from it. Those who don't
3209 want it can still turn it off.
3213 want it can still turn it off.
3210
3214
3211 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3215 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3212 config file, I'd forgotten about this, so users were getting it
3216 config file, I'd forgotten about this, so users were getting it
3213 off by default.
3217 off by default.
3214
3218
3215 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3219 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3216 consistency. Now magics can be called in multiline statements,
3220 consistency. Now magics can be called in multiline statements,
3217 and python variables can be expanded in magic calls via $var.
3221 and python variables can be expanded in magic calls via $var.
3218 This makes the magic system behave just like aliases or !system
3222 This makes the magic system behave just like aliases or !system
3219 calls.
3223 calls.
3220
3224
3221 2005-03-28 Fernando Perez <fperez@colorado.edu>
3225 2005-03-28 Fernando Perez <fperez@colorado.edu>
3222
3226
3223 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3227 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3224 expensive string additions for building command. Add support for
3228 expensive string additions for building command. Add support for
3225 trailing ';' when autocall is used.
3229 trailing ';' when autocall is used.
3226
3230
3227 2005-03-26 Fernando Perez <fperez@colorado.edu>
3231 2005-03-26 Fernando Perez <fperez@colorado.edu>
3228
3232
3229 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3233 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3230 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3234 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3231 ipython.el robust against prompts with any number of spaces
3235 ipython.el robust against prompts with any number of spaces
3232 (including 0) after the ':' character.
3236 (including 0) after the ':' character.
3233
3237
3234 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3238 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3235 continuation prompt, which misled users to think the line was
3239 continuation prompt, which misled users to think the line was
3236 already indented. Closes debian Bug#300847, reported to me by
3240 already indented. Closes debian Bug#300847, reported to me by
3237 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3241 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3238
3242
3239 2005-03-23 Fernando Perez <fperez@colorado.edu>
3243 2005-03-23 Fernando Perez <fperez@colorado.edu>
3240
3244
3241 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3245 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3242 properly aligned if they have embedded newlines.
3246 properly aligned if they have embedded newlines.
3243
3247
3244 * IPython/iplib.py (runlines): Add a public method to expose
3248 * IPython/iplib.py (runlines): Add a public method to expose
3245 IPython's code execution machinery, so that users can run strings
3249 IPython's code execution machinery, so that users can run strings
3246 as if they had been typed at the prompt interactively.
3250 as if they had been typed at the prompt interactively.
3247 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3251 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3248 methods which can call the system shell, but with python variable
3252 methods which can call the system shell, but with python variable
3249 expansion. The three such methods are: __IPYTHON__.system,
3253 expansion. The three such methods are: __IPYTHON__.system,
3250 .getoutput and .getoutputerror. These need to be documented in a
3254 .getoutput and .getoutputerror. These need to be documented in a
3251 'public API' section (to be written) of the manual.
3255 'public API' section (to be written) of the manual.
3252
3256
3253 2005-03-20 Fernando Perez <fperez@colorado.edu>
3257 2005-03-20 Fernando Perez <fperez@colorado.edu>
3254
3258
3255 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3259 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3256 for custom exception handling. This is quite powerful, and it
3260 for custom exception handling. This is quite powerful, and it
3257 allows for user-installable exception handlers which can trap
3261 allows for user-installable exception handlers which can trap
3258 custom exceptions at runtime and treat them separately from
3262 custom exceptions at runtime and treat them separately from
3259 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3263 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3260 Mantegazza <mantegazza-AT-ill.fr>.
3264 Mantegazza <mantegazza-AT-ill.fr>.
3261 (InteractiveShell.set_custom_completer): public API function to
3265 (InteractiveShell.set_custom_completer): public API function to
3262 add new completers at runtime.
3266 add new completers at runtime.
3263
3267
3264 2005-03-19 Fernando Perez <fperez@colorado.edu>
3268 2005-03-19 Fernando Perez <fperez@colorado.edu>
3265
3269
3266 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3270 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3267 allow objects which provide their docstrings via non-standard
3271 allow objects which provide their docstrings via non-standard
3268 mechanisms (like Pyro proxies) to still be inspected by ipython's
3272 mechanisms (like Pyro proxies) to still be inspected by ipython's
3269 ? system.
3273 ? system.
3270
3274
3271 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3275 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3272 automatic capture system. I tried quite hard to make it work
3276 automatic capture system. I tried quite hard to make it work
3273 reliably, and simply failed. I tried many combinations with the
3277 reliably, and simply failed. I tried many combinations with the
3274 subprocess module, but eventually nothing worked in all needed
3278 subprocess module, but eventually nothing worked in all needed
3275 cases (not blocking stdin for the child, duplicating stdout
3279 cases (not blocking stdin for the child, duplicating stdout
3276 without blocking, etc). The new %sc/%sx still do capture to these
3280 without blocking, etc). The new %sc/%sx still do capture to these
3277 magical list/string objects which make shell use much more
3281 magical list/string objects which make shell use much more
3278 conveninent, so not all is lost.
3282 conveninent, so not all is lost.
3279
3283
3280 XXX - FIX MANUAL for the change above!
3284 XXX - FIX MANUAL for the change above!
3281
3285
3282 (runsource): I copied code.py's runsource() into ipython to modify
3286 (runsource): I copied code.py's runsource() into ipython to modify
3283 it a bit. Now the code object and source to be executed are
3287 it a bit. Now the code object and source to be executed are
3284 stored in ipython. This makes this info accessible to third-party
3288 stored in ipython. This makes this info accessible to third-party
3285 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3289 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3286 Mantegazza <mantegazza-AT-ill.fr>.
3290 Mantegazza <mantegazza-AT-ill.fr>.
3287
3291
3288 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3292 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3289 history-search via readline (like C-p/C-n). I'd wanted this for a
3293 history-search via readline (like C-p/C-n). I'd wanted this for a
3290 long time, but only recently found out how to do it. For users
3294 long time, but only recently found out how to do it. For users
3291 who already have their ipythonrc files made and want this, just
3295 who already have their ipythonrc files made and want this, just
3292 add:
3296 add:
3293
3297
3294 readline_parse_and_bind "\e[A": history-search-backward
3298 readline_parse_and_bind "\e[A": history-search-backward
3295 readline_parse_and_bind "\e[B": history-search-forward
3299 readline_parse_and_bind "\e[B": history-search-forward
3296
3300
3297 2005-03-18 Fernando Perez <fperez@colorado.edu>
3301 2005-03-18 Fernando Perez <fperez@colorado.edu>
3298
3302
3299 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3303 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3300 LSString and SList classes which allow transparent conversions
3304 LSString and SList classes which allow transparent conversions
3301 between list mode and whitespace-separated string.
3305 between list mode and whitespace-separated string.
3302 (magic_r): Fix recursion problem in %r.
3306 (magic_r): Fix recursion problem in %r.
3303
3307
3304 * IPython/genutils.py (LSString): New class to be used for
3308 * IPython/genutils.py (LSString): New class to be used for
3305 automatic storage of the results of all alias/system calls in _o
3309 automatic storage of the results of all alias/system calls in _o
3306 and _e (stdout/err). These provide a .l/.list attribute which
3310 and _e (stdout/err). These provide a .l/.list attribute which
3307 does automatic splitting on newlines. This means that for most
3311 does automatic splitting on newlines. This means that for most
3308 uses, you'll never need to do capturing of output with %sc/%sx
3312 uses, you'll never need to do capturing of output with %sc/%sx
3309 anymore, since ipython keeps this always done for you. Note that
3313 anymore, since ipython keeps this always done for you. Note that
3310 only the LAST results are stored, the _o/e variables are
3314 only the LAST results are stored, the _o/e variables are
3311 overwritten on each call. If you need to save their contents
3315 overwritten on each call. If you need to save their contents
3312 further, simply bind them to any other name.
3316 further, simply bind them to any other name.
3313
3317
3314 2005-03-17 Fernando Perez <fperez@colorado.edu>
3318 2005-03-17 Fernando Perez <fperez@colorado.edu>
3315
3319
3316 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3320 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3317 prompt namespace handling.
3321 prompt namespace handling.
3318
3322
3319 2005-03-16 Fernando Perez <fperez@colorado.edu>
3323 2005-03-16 Fernando Perez <fperez@colorado.edu>
3320
3324
3321 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3325 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3322 classic prompts to be '>>> ' (final space was missing, and it
3326 classic prompts to be '>>> ' (final space was missing, and it
3323 trips the emacs python mode).
3327 trips the emacs python mode).
3324 (BasePrompt.__str__): Added safe support for dynamic prompt
3328 (BasePrompt.__str__): Added safe support for dynamic prompt
3325 strings. Now you can set your prompt string to be '$x', and the
3329 strings. Now you can set your prompt string to be '$x', and the
3326 value of x will be printed from your interactive namespace. The
3330 value of x will be printed from your interactive namespace. The
3327 interpolation syntax includes the full Itpl support, so
3331 interpolation syntax includes the full Itpl support, so
3328 ${foo()+x+bar()} is a valid prompt string now, and the function
3332 ${foo()+x+bar()} is a valid prompt string now, and the function
3329 calls will be made at runtime.
3333 calls will be made at runtime.
3330
3334
3331 2005-03-15 Fernando Perez <fperez@colorado.edu>
3335 2005-03-15 Fernando Perez <fperez@colorado.edu>
3332
3336
3333 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3337 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3334 avoid name clashes in pylab. %hist still works, it just forwards
3338 avoid name clashes in pylab. %hist still works, it just forwards
3335 the call to %history.
3339 the call to %history.
3336
3340
3337 2005-03-02 *** Released version 0.6.12
3341 2005-03-02 *** Released version 0.6.12
3338
3342
3339 2005-03-02 Fernando Perez <fperez@colorado.edu>
3343 2005-03-02 Fernando Perez <fperez@colorado.edu>
3340
3344
3341 * IPython/iplib.py (handle_magic): log magic calls properly as
3345 * IPython/iplib.py (handle_magic): log magic calls properly as
3342 ipmagic() function calls.
3346 ipmagic() function calls.
3343
3347
3344 * IPython/Magic.py (magic_time): Improved %time to support
3348 * IPython/Magic.py (magic_time): Improved %time to support
3345 statements and provide wall-clock as well as CPU time.
3349 statements and provide wall-clock as well as CPU time.
3346
3350
3347 2005-02-27 Fernando Perez <fperez@colorado.edu>
3351 2005-02-27 Fernando Perez <fperez@colorado.edu>
3348
3352
3349 * IPython/hooks.py: New hooks module, to expose user-modifiable
3353 * IPython/hooks.py: New hooks module, to expose user-modifiable
3350 IPython functionality in a clean manner. For now only the editor
3354 IPython functionality in a clean manner. For now only the editor
3351 hook is actually written, and other thigns which I intend to turn
3355 hook is actually written, and other thigns which I intend to turn
3352 into proper hooks aren't yet there. The display and prefilter
3356 into proper hooks aren't yet there. The display and prefilter
3353 stuff, for example, should be hooks. But at least now the
3357 stuff, for example, should be hooks. But at least now the
3354 framework is in place, and the rest can be moved here with more
3358 framework is in place, and the rest can be moved here with more
3355 time later. IPython had had a .hooks variable for a long time for
3359 time later. IPython had had a .hooks variable for a long time for
3356 this purpose, but I'd never actually used it for anything.
3360 this purpose, but I'd never actually used it for anything.
3357
3361
3358 2005-02-26 Fernando Perez <fperez@colorado.edu>
3362 2005-02-26 Fernando Perez <fperez@colorado.edu>
3359
3363
3360 * IPython/ipmaker.py (make_IPython): make the default ipython
3364 * IPython/ipmaker.py (make_IPython): make the default ipython
3361 directory be called _ipython under win32, to follow more the
3365 directory be called _ipython under win32, to follow more the
3362 naming peculiarities of that platform (where buggy software like
3366 naming peculiarities of that platform (where buggy software like
3363 Visual Sourcesafe breaks with .named directories). Reported by
3367 Visual Sourcesafe breaks with .named directories). Reported by
3364 Ville Vainio.
3368 Ville Vainio.
3365
3369
3366 2005-02-23 Fernando Perez <fperez@colorado.edu>
3370 2005-02-23 Fernando Perez <fperez@colorado.edu>
3367
3371
3368 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3372 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3369 auto_aliases for win32 which were causing problems. Users can
3373 auto_aliases for win32 which were causing problems. Users can
3370 define the ones they personally like.
3374 define the ones they personally like.
3371
3375
3372 2005-02-21 Fernando Perez <fperez@colorado.edu>
3376 2005-02-21 Fernando Perez <fperez@colorado.edu>
3373
3377
3374 * IPython/Magic.py (magic_time): new magic to time execution of
3378 * IPython/Magic.py (magic_time): new magic to time execution of
3375 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3379 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3376
3380
3377 2005-02-19 Fernando Perez <fperez@colorado.edu>
3381 2005-02-19 Fernando Perez <fperez@colorado.edu>
3378
3382
3379 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3383 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3380 into keys (for prompts, for example).
3384 into keys (for prompts, for example).
3381
3385
3382 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3386 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3383 prompts in case users want them. This introduces a small behavior
3387 prompts in case users want them. This introduces a small behavior
3384 change: ipython does not automatically add a space to all prompts
3388 change: ipython does not automatically add a space to all prompts
3385 anymore. To get the old prompts with a space, users should add it
3389 anymore. To get the old prompts with a space, users should add it
3386 manually to their ipythonrc file, so for example prompt_in1 should
3390 manually to their ipythonrc file, so for example prompt_in1 should
3387 now read 'In [\#]: ' instead of 'In [\#]:'.
3391 now read 'In [\#]: ' instead of 'In [\#]:'.
3388 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3392 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3389 file) to control left-padding of secondary prompts.
3393 file) to control left-padding of secondary prompts.
3390
3394
3391 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3395 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3392 the profiler can't be imported. Fix for Debian, which removed
3396 the profiler can't be imported. Fix for Debian, which removed
3393 profile.py because of License issues. I applied a slightly
3397 profile.py because of License issues. I applied a slightly
3394 modified version of the original Debian patch at
3398 modified version of the original Debian patch at
3395 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3399 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3396
3400
3397 2005-02-17 Fernando Perez <fperez@colorado.edu>
3401 2005-02-17 Fernando Perez <fperez@colorado.edu>
3398
3402
3399 * IPython/genutils.py (native_line_ends): Fix bug which would
3403 * IPython/genutils.py (native_line_ends): Fix bug which would
3400 cause improper line-ends under win32 b/c I was not opening files
3404 cause improper line-ends under win32 b/c I was not opening files
3401 in binary mode. Bug report and fix thanks to Ville.
3405 in binary mode. Bug report and fix thanks to Ville.
3402
3406
3403 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3407 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3404 trying to catch spurious foo[1] autocalls. My fix actually broke
3408 trying to catch spurious foo[1] autocalls. My fix actually broke
3405 ',/' autoquote/call with explicit escape (bad regexp).
3409 ',/' autoquote/call with explicit escape (bad regexp).
3406
3410
3407 2005-02-15 *** Released version 0.6.11
3411 2005-02-15 *** Released version 0.6.11
3408
3412
3409 2005-02-14 Fernando Perez <fperez@colorado.edu>
3413 2005-02-14 Fernando Perez <fperez@colorado.edu>
3410
3414
3411 * IPython/background_jobs.py: New background job management
3415 * IPython/background_jobs.py: New background job management
3412 subsystem. This is implemented via a new set of classes, and
3416 subsystem. This is implemented via a new set of classes, and
3413 IPython now provides a builtin 'jobs' object for background job
3417 IPython now provides a builtin 'jobs' object for background job
3414 execution. A convenience %bg magic serves as a lightweight
3418 execution. A convenience %bg magic serves as a lightweight
3415 frontend for starting the more common type of calls. This was
3419 frontend for starting the more common type of calls. This was
3416 inspired by discussions with B. Granger and the BackgroundCommand
3420 inspired by discussions with B. Granger and the BackgroundCommand
3417 class described in the book Python Scripting for Computational
3421 class described in the book Python Scripting for Computational
3418 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3422 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3419 (although ultimately no code from this text was used, as IPython's
3423 (although ultimately no code from this text was used, as IPython's
3420 system is a separate implementation).
3424 system is a separate implementation).
3421
3425
3422 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3426 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3423 to control the completion of single/double underscore names
3427 to control the completion of single/double underscore names
3424 separately. As documented in the example ipytonrc file, the
3428 separately. As documented in the example ipytonrc file, the
3425 readline_omit__names variable can now be set to 2, to omit even
3429 readline_omit__names variable can now be set to 2, to omit even
3426 single underscore names. Thanks to a patch by Brian Wong
3430 single underscore names. Thanks to a patch by Brian Wong
3427 <BrianWong-AT-AirgoNetworks.Com>.
3431 <BrianWong-AT-AirgoNetworks.Com>.
3428 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3432 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3429 be autocalled as foo([1]) if foo were callable. A problem for
3433 be autocalled as foo([1]) if foo were callable. A problem for
3430 things which are both callable and implement __getitem__.
3434 things which are both callable and implement __getitem__.
3431 (init_readline): Fix autoindentation for win32. Thanks to a patch
3435 (init_readline): Fix autoindentation for win32. Thanks to a patch
3432 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3436 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3433
3437
3434 2005-02-12 Fernando Perez <fperez@colorado.edu>
3438 2005-02-12 Fernando Perez <fperez@colorado.edu>
3435
3439
3436 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3440 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3437 which I had written long ago to sort out user error messages which
3441 which I had written long ago to sort out user error messages which
3438 may occur during startup. This seemed like a good idea initially,
3442 may occur during startup. This seemed like a good idea initially,
3439 but it has proven a disaster in retrospect. I don't want to
3443 but it has proven a disaster in retrospect. I don't want to
3440 change much code for now, so my fix is to set the internal 'debug'
3444 change much code for now, so my fix is to set the internal 'debug'
3441 flag to true everywhere, whose only job was precisely to control
3445 flag to true everywhere, whose only job was precisely to control
3442 this subsystem. This closes issue 28 (as well as avoiding all
3446 this subsystem. This closes issue 28 (as well as avoiding all
3443 sorts of strange hangups which occur from time to time).
3447 sorts of strange hangups which occur from time to time).
3444
3448
3445 2005-02-07 Fernando Perez <fperez@colorado.edu>
3449 2005-02-07 Fernando Perez <fperez@colorado.edu>
3446
3450
3447 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3451 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3448 previous call produced a syntax error.
3452 previous call produced a syntax error.
3449
3453
3450 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3454 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3451 classes without constructor.
3455 classes without constructor.
3452
3456
3453 2005-02-06 Fernando Perez <fperez@colorado.edu>
3457 2005-02-06 Fernando Perez <fperez@colorado.edu>
3454
3458
3455 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3459 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3456 completions with the results of each matcher, so we return results
3460 completions with the results of each matcher, so we return results
3457 to the user from all namespaces. This breaks with ipython
3461 to the user from all namespaces. This breaks with ipython
3458 tradition, but I think it's a nicer behavior. Now you get all
3462 tradition, but I think it's a nicer behavior. Now you get all
3459 possible completions listed, from all possible namespaces (python,
3463 possible completions listed, from all possible namespaces (python,
3460 filesystem, magics...) After a request by John Hunter
3464 filesystem, magics...) After a request by John Hunter
3461 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3465 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3462
3466
3463 2005-02-05 Fernando Perez <fperez@colorado.edu>
3467 2005-02-05 Fernando Perez <fperez@colorado.edu>
3464
3468
3465 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3469 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3466 the call had quote characters in it (the quotes were stripped).
3470 the call had quote characters in it (the quotes were stripped).
3467
3471
3468 2005-01-31 Fernando Perez <fperez@colorado.edu>
3472 2005-01-31 Fernando Perez <fperez@colorado.edu>
3469
3473
3470 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3474 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3471 Itpl.itpl() to make the code more robust against psyco
3475 Itpl.itpl() to make the code more robust against psyco
3472 optimizations.
3476 optimizations.
3473
3477
3474 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3478 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3475 of causing an exception. Quicker, cleaner.
3479 of causing an exception. Quicker, cleaner.
3476
3480
3477 2005-01-28 Fernando Perez <fperez@colorado.edu>
3481 2005-01-28 Fernando Perez <fperez@colorado.edu>
3478
3482
3479 * scripts/ipython_win_post_install.py (install): hardcode
3483 * scripts/ipython_win_post_install.py (install): hardcode
3480 sys.prefix+'python.exe' as the executable path. It turns out that
3484 sys.prefix+'python.exe' as the executable path. It turns out that
3481 during the post-installation run, sys.executable resolves to the
3485 during the post-installation run, sys.executable resolves to the
3482 name of the binary installer! I should report this as a distutils
3486 name of the binary installer! I should report this as a distutils
3483 bug, I think. I updated the .10 release with this tiny fix, to
3487 bug, I think. I updated the .10 release with this tiny fix, to
3484 avoid annoying the lists further.
3488 avoid annoying the lists further.
3485
3489
3486 2005-01-27 *** Released version 0.6.10
3490 2005-01-27 *** Released version 0.6.10
3487
3491
3488 2005-01-27 Fernando Perez <fperez@colorado.edu>
3492 2005-01-27 Fernando Perez <fperez@colorado.edu>
3489
3493
3490 * IPython/numutils.py (norm): Added 'inf' as optional name for
3494 * IPython/numutils.py (norm): Added 'inf' as optional name for
3491 L-infinity norm, included references to mathworld.com for vector
3495 L-infinity norm, included references to mathworld.com for vector
3492 norm definitions.
3496 norm definitions.
3493 (amin/amax): added amin/amax for array min/max. Similar to what
3497 (amin/amax): added amin/amax for array min/max. Similar to what
3494 pylab ships with after the recent reorganization of names.
3498 pylab ships with after the recent reorganization of names.
3495 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3499 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3496
3500
3497 * ipython.el: committed Alex's recent fixes and improvements.
3501 * ipython.el: committed Alex's recent fixes and improvements.
3498 Tested with python-mode from CVS, and it looks excellent. Since
3502 Tested with python-mode from CVS, and it looks excellent. Since
3499 python-mode hasn't released anything in a while, I'm temporarily
3503 python-mode hasn't released anything in a while, I'm temporarily
3500 putting a copy of today's CVS (v 4.70) of python-mode in:
3504 putting a copy of today's CVS (v 4.70) of python-mode in:
3501 http://ipython.scipy.org/tmp/python-mode.el
3505 http://ipython.scipy.org/tmp/python-mode.el
3502
3506
3503 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3507 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3504 sys.executable for the executable name, instead of assuming it's
3508 sys.executable for the executable name, instead of assuming it's
3505 called 'python.exe' (the post-installer would have produced broken
3509 called 'python.exe' (the post-installer would have produced broken
3506 setups on systems with a differently named python binary).
3510 setups on systems with a differently named python binary).
3507
3511
3508 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3512 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3509 references to os.linesep, to make the code more
3513 references to os.linesep, to make the code more
3510 platform-independent. This is also part of the win32 coloring
3514 platform-independent. This is also part of the win32 coloring
3511 fixes.
3515 fixes.
3512
3516
3513 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3517 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3514 lines, which actually cause coloring bugs because the length of
3518 lines, which actually cause coloring bugs because the length of
3515 the line is very difficult to correctly compute with embedded
3519 the line is very difficult to correctly compute with embedded
3516 escapes. This was the source of all the coloring problems under
3520 escapes. This was the source of all the coloring problems under
3517 Win32. I think that _finally_, Win32 users have a properly
3521 Win32. I think that _finally_, Win32 users have a properly
3518 working ipython in all respects. This would never have happened
3522 working ipython in all respects. This would never have happened
3519 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3523 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3520
3524
3521 2005-01-26 *** Released version 0.6.9
3525 2005-01-26 *** Released version 0.6.9
3522
3526
3523 2005-01-25 Fernando Perez <fperez@colorado.edu>
3527 2005-01-25 Fernando Perez <fperez@colorado.edu>
3524
3528
3525 * setup.py: finally, we have a true Windows installer, thanks to
3529 * setup.py: finally, we have a true Windows installer, thanks to
3526 the excellent work of Viktor Ransmayr
3530 the excellent work of Viktor Ransmayr
3527 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3531 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3528 Windows users. The setup routine is quite a bit cleaner thanks to
3532 Windows users. The setup routine is quite a bit cleaner thanks to
3529 this, and the post-install script uses the proper functions to
3533 this, and the post-install script uses the proper functions to
3530 allow a clean de-installation using the standard Windows Control
3534 allow a clean de-installation using the standard Windows Control
3531 Panel.
3535 Panel.
3532
3536
3533 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3537 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3534 environment variable under all OSes (including win32) if
3538 environment variable under all OSes (including win32) if
3535 available. This will give consistency to win32 users who have set
3539 available. This will give consistency to win32 users who have set
3536 this variable for any reason. If os.environ['HOME'] fails, the
3540 this variable for any reason. If os.environ['HOME'] fails, the
3537 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3541 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3538
3542
3539 2005-01-24 Fernando Perez <fperez@colorado.edu>
3543 2005-01-24 Fernando Perez <fperez@colorado.edu>
3540
3544
3541 * IPython/numutils.py (empty_like): add empty_like(), similar to
3545 * IPython/numutils.py (empty_like): add empty_like(), similar to
3542 zeros_like() but taking advantage of the new empty() Numeric routine.
3546 zeros_like() but taking advantage of the new empty() Numeric routine.
3543
3547
3544 2005-01-23 *** Released version 0.6.8
3548 2005-01-23 *** Released version 0.6.8
3545
3549
3546 2005-01-22 Fernando Perez <fperez@colorado.edu>
3550 2005-01-22 Fernando Perez <fperez@colorado.edu>
3547
3551
3548 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3552 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3549 automatic show() calls. After discussing things with JDH, it
3553 automatic show() calls. After discussing things with JDH, it
3550 turns out there are too many corner cases where this can go wrong.
3554 turns out there are too many corner cases where this can go wrong.
3551 It's best not to try to be 'too smart', and simply have ipython
3555 It's best not to try to be 'too smart', and simply have ipython
3552 reproduce as much as possible the default behavior of a normal
3556 reproduce as much as possible the default behavior of a normal
3553 python shell.
3557 python shell.
3554
3558
3555 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3559 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3556 line-splitting regexp and _prefilter() to avoid calling getattr()
3560 line-splitting regexp and _prefilter() to avoid calling getattr()
3557 on assignments. This closes
3561 on assignments. This closes
3558 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3562 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3559 readline uses getattr(), so a simple <TAB> keypress is still
3563 readline uses getattr(), so a simple <TAB> keypress is still
3560 enough to trigger getattr() calls on an object.
3564 enough to trigger getattr() calls on an object.
3561
3565
3562 2005-01-21 Fernando Perez <fperez@colorado.edu>
3566 2005-01-21 Fernando Perez <fperez@colorado.edu>
3563
3567
3564 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3568 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3565 docstring under pylab so it doesn't mask the original.
3569 docstring under pylab so it doesn't mask the original.
3566
3570
3567 2005-01-21 *** Released version 0.6.7
3571 2005-01-21 *** Released version 0.6.7
3568
3572
3569 2005-01-21 Fernando Perez <fperez@colorado.edu>
3573 2005-01-21 Fernando Perez <fperez@colorado.edu>
3570
3574
3571 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3575 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3572 signal handling for win32 users in multithreaded mode.
3576 signal handling for win32 users in multithreaded mode.
3573
3577
3574 2005-01-17 Fernando Perez <fperez@colorado.edu>
3578 2005-01-17 Fernando Perez <fperez@colorado.edu>
3575
3579
3576 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3580 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3577 instances with no __init__. After a crash report by Norbert Nemec
3581 instances with no __init__. After a crash report by Norbert Nemec
3578 <Norbert-AT-nemec-online.de>.
3582 <Norbert-AT-nemec-online.de>.
3579
3583
3580 2005-01-14 Fernando Perez <fperez@colorado.edu>
3584 2005-01-14 Fernando Perez <fperez@colorado.edu>
3581
3585
3582 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3586 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3583 names for verbose exceptions, when multiple dotted names and the
3587 names for verbose exceptions, when multiple dotted names and the
3584 'parent' object were present on the same line.
3588 'parent' object were present on the same line.
3585
3589
3586 2005-01-11 Fernando Perez <fperez@colorado.edu>
3590 2005-01-11 Fernando Perez <fperez@colorado.edu>
3587
3591
3588 * IPython/genutils.py (flag_calls): new utility to trap and flag
3592 * IPython/genutils.py (flag_calls): new utility to trap and flag
3589 calls in functions. I need it to clean up matplotlib support.
3593 calls in functions. I need it to clean up matplotlib support.
3590 Also removed some deprecated code in genutils.
3594 Also removed some deprecated code in genutils.
3591
3595
3592 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3596 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3593 that matplotlib scripts called with %run, which don't call show()
3597 that matplotlib scripts called with %run, which don't call show()
3594 themselves, still have their plotting windows open.
3598 themselves, still have their plotting windows open.
3595
3599
3596 2005-01-05 Fernando Perez <fperez@colorado.edu>
3600 2005-01-05 Fernando Perez <fperez@colorado.edu>
3597
3601
3598 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3602 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3599 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3603 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3600
3604
3601 2004-12-19 Fernando Perez <fperez@colorado.edu>
3605 2004-12-19 Fernando Perez <fperez@colorado.edu>
3602
3606
3603 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3607 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3604 parent_runcode, which was an eyesore. The same result can be
3608 parent_runcode, which was an eyesore. The same result can be
3605 obtained with Python's regular superclass mechanisms.
3609 obtained with Python's regular superclass mechanisms.
3606
3610
3607 2004-12-17 Fernando Perez <fperez@colorado.edu>
3611 2004-12-17 Fernando Perez <fperez@colorado.edu>
3608
3612
3609 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3613 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3610 reported by Prabhu.
3614 reported by Prabhu.
3611 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3615 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3612 sys.stderr) instead of explicitly calling sys.stderr. This helps
3616 sys.stderr) instead of explicitly calling sys.stderr. This helps
3613 maintain our I/O abstractions clean, for future GUI embeddings.
3617 maintain our I/O abstractions clean, for future GUI embeddings.
3614
3618
3615 * IPython/genutils.py (info): added new utility for sys.stderr
3619 * IPython/genutils.py (info): added new utility for sys.stderr
3616 unified info message handling (thin wrapper around warn()).
3620 unified info message handling (thin wrapper around warn()).
3617
3621
3618 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3622 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3619 composite (dotted) names on verbose exceptions.
3623 composite (dotted) names on verbose exceptions.
3620 (VerboseTB.nullrepr): harden against another kind of errors which
3624 (VerboseTB.nullrepr): harden against another kind of errors which
3621 Python's inspect module can trigger, and which were crashing
3625 Python's inspect module can trigger, and which were crashing
3622 IPython. Thanks to a report by Marco Lombardi
3626 IPython. Thanks to a report by Marco Lombardi
3623 <mlombard-AT-ma010192.hq.eso.org>.
3627 <mlombard-AT-ma010192.hq.eso.org>.
3624
3628
3625 2004-12-13 *** Released version 0.6.6
3629 2004-12-13 *** Released version 0.6.6
3626
3630
3627 2004-12-12 Fernando Perez <fperez@colorado.edu>
3631 2004-12-12 Fernando Perez <fperez@colorado.edu>
3628
3632
3629 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3633 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3630 generated by pygtk upon initialization if it was built without
3634 generated by pygtk upon initialization if it was built without
3631 threads (for matplotlib users). After a crash reported by
3635 threads (for matplotlib users). After a crash reported by
3632 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3636 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3633
3637
3634 * IPython/ipmaker.py (make_IPython): fix small bug in the
3638 * IPython/ipmaker.py (make_IPython): fix small bug in the
3635 import_some parameter for multiple imports.
3639 import_some parameter for multiple imports.
3636
3640
3637 * IPython/iplib.py (ipmagic): simplified the interface of
3641 * IPython/iplib.py (ipmagic): simplified the interface of
3638 ipmagic() to take a single string argument, just as it would be
3642 ipmagic() to take a single string argument, just as it would be
3639 typed at the IPython cmd line.
3643 typed at the IPython cmd line.
3640 (ipalias): Added new ipalias() with an interface identical to
3644 (ipalias): Added new ipalias() with an interface identical to
3641 ipmagic(). This completes exposing a pure python interface to the
3645 ipmagic(). This completes exposing a pure python interface to the
3642 alias and magic system, which can be used in loops or more complex
3646 alias and magic system, which can be used in loops or more complex
3643 code where IPython's automatic line mangling is not active.
3647 code where IPython's automatic line mangling is not active.
3644
3648
3645 * IPython/genutils.py (timing): changed interface of timing to
3649 * IPython/genutils.py (timing): changed interface of timing to
3646 simply run code once, which is the most common case. timings()
3650 simply run code once, which is the most common case. timings()
3647 remains unchanged, for the cases where you want multiple runs.
3651 remains unchanged, for the cases where you want multiple runs.
3648
3652
3649 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3653 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3650 bug where Python2.2 crashes with exec'ing code which does not end
3654 bug where Python2.2 crashes with exec'ing code which does not end
3651 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3655 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3652 before.
3656 before.
3653
3657
3654 2004-12-10 Fernando Perez <fperez@colorado.edu>
3658 2004-12-10 Fernando Perez <fperez@colorado.edu>
3655
3659
3656 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3660 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3657 -t to -T, to accomodate the new -t flag in %run (the %run and
3661 -t to -T, to accomodate the new -t flag in %run (the %run and
3658 %prun options are kind of intermixed, and it's not easy to change
3662 %prun options are kind of intermixed, and it's not easy to change
3659 this with the limitations of python's getopt).
3663 this with the limitations of python's getopt).
3660
3664
3661 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3665 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3662 the execution of scripts. It's not as fine-tuned as timeit.py,
3666 the execution of scripts. It's not as fine-tuned as timeit.py,
3663 but it works from inside ipython (and under 2.2, which lacks
3667 but it works from inside ipython (and under 2.2, which lacks
3664 timeit.py). Optionally a number of runs > 1 can be given for
3668 timeit.py). Optionally a number of runs > 1 can be given for
3665 timing very short-running code.
3669 timing very short-running code.
3666
3670
3667 * IPython/genutils.py (uniq_stable): new routine which returns a
3671 * IPython/genutils.py (uniq_stable): new routine which returns a
3668 list of unique elements in any iterable, but in stable order of
3672 list of unique elements in any iterable, but in stable order of
3669 appearance. I needed this for the ultraTB fixes, and it's a handy
3673 appearance. I needed this for the ultraTB fixes, and it's a handy
3670 utility.
3674 utility.
3671
3675
3672 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3676 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3673 dotted names in Verbose exceptions. This had been broken since
3677 dotted names in Verbose exceptions. This had been broken since
3674 the very start, now x.y will properly be printed in a Verbose
3678 the very start, now x.y will properly be printed in a Verbose
3675 traceback, instead of x being shown and y appearing always as an
3679 traceback, instead of x being shown and y appearing always as an
3676 'undefined global'. Getting this to work was a bit tricky,
3680 'undefined global'. Getting this to work was a bit tricky,
3677 because by default python tokenizers are stateless. Saved by
3681 because by default python tokenizers are stateless. Saved by
3678 python's ability to easily add a bit of state to an arbitrary
3682 python's ability to easily add a bit of state to an arbitrary
3679 function (without needing to build a full-blown callable object).
3683 function (without needing to build a full-blown callable object).
3680
3684
3681 Also big cleanup of this code, which had horrendous runtime
3685 Also big cleanup of this code, which had horrendous runtime
3682 lookups of zillions of attributes for colorization. Moved all
3686 lookups of zillions of attributes for colorization. Moved all
3683 this code into a few templates, which make it cleaner and quicker.
3687 this code into a few templates, which make it cleaner and quicker.
3684
3688
3685 Printout quality was also improved for Verbose exceptions: one
3689 Printout quality was also improved for Verbose exceptions: one
3686 variable per line, and memory addresses are printed (this can be
3690 variable per line, and memory addresses are printed (this can be
3687 quite handy in nasty debugging situations, which is what Verbose
3691 quite handy in nasty debugging situations, which is what Verbose
3688 is for).
3692 is for).
3689
3693
3690 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3694 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3691 the command line as scripts to be loaded by embedded instances.
3695 the command line as scripts to be loaded by embedded instances.
3692 Doing so has the potential for an infinite recursion if there are
3696 Doing so has the potential for an infinite recursion if there are
3693 exceptions thrown in the process. This fixes a strange crash
3697 exceptions thrown in the process. This fixes a strange crash
3694 reported by Philippe MULLER <muller-AT-irit.fr>.
3698 reported by Philippe MULLER <muller-AT-irit.fr>.
3695
3699
3696 2004-12-09 Fernando Perez <fperez@colorado.edu>
3700 2004-12-09 Fernando Perez <fperez@colorado.edu>
3697
3701
3698 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3702 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3699 to reflect new names in matplotlib, which now expose the
3703 to reflect new names in matplotlib, which now expose the
3700 matlab-compatible interface via a pylab module instead of the
3704 matlab-compatible interface via a pylab module instead of the
3701 'matlab' name. The new code is backwards compatible, so users of
3705 'matlab' name. The new code is backwards compatible, so users of
3702 all matplotlib versions are OK. Patch by J. Hunter.
3706 all matplotlib versions are OK. Patch by J. Hunter.
3703
3707
3704 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3708 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3705 of __init__ docstrings for instances (class docstrings are already
3709 of __init__ docstrings for instances (class docstrings are already
3706 automatically printed). Instances with customized docstrings
3710 automatically printed). Instances with customized docstrings
3707 (indep. of the class) are also recognized and all 3 separate
3711 (indep. of the class) are also recognized and all 3 separate
3708 docstrings are printed (instance, class, constructor). After some
3712 docstrings are printed (instance, class, constructor). After some
3709 comments/suggestions by J. Hunter.
3713 comments/suggestions by J. Hunter.
3710
3714
3711 2004-12-05 Fernando Perez <fperez@colorado.edu>
3715 2004-12-05 Fernando Perez <fperez@colorado.edu>
3712
3716
3713 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3717 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3714 warnings when tab-completion fails and triggers an exception.
3718 warnings when tab-completion fails and triggers an exception.
3715
3719
3716 2004-12-03 Fernando Perez <fperez@colorado.edu>
3720 2004-12-03 Fernando Perez <fperez@colorado.edu>
3717
3721
3718 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3722 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3719 be triggered when using 'run -p'. An incorrect option flag was
3723 be triggered when using 'run -p'. An incorrect option flag was
3720 being set ('d' instead of 'D').
3724 being set ('d' instead of 'D').
3721 (manpage): fix missing escaped \- sign.
3725 (manpage): fix missing escaped \- sign.
3722
3726
3723 2004-11-30 *** Released version 0.6.5
3727 2004-11-30 *** Released version 0.6.5
3724
3728
3725 2004-11-30 Fernando Perez <fperez@colorado.edu>
3729 2004-11-30 Fernando Perez <fperez@colorado.edu>
3726
3730
3727 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3731 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3728 setting with -d option.
3732 setting with -d option.
3729
3733
3730 * setup.py (docfiles): Fix problem where the doc glob I was using
3734 * setup.py (docfiles): Fix problem where the doc glob I was using
3731 was COMPLETELY BROKEN. It was giving the right files by pure
3735 was COMPLETELY BROKEN. It was giving the right files by pure
3732 accident, but failed once I tried to include ipython.el. Note:
3736 accident, but failed once I tried to include ipython.el. Note:
3733 glob() does NOT allow you to do exclusion on multiple endings!
3737 glob() does NOT allow you to do exclusion on multiple endings!
3734
3738
3735 2004-11-29 Fernando Perez <fperez@colorado.edu>
3739 2004-11-29 Fernando Perez <fperez@colorado.edu>
3736
3740
3737 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3741 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3738 the manpage as the source. Better formatting & consistency.
3742 the manpage as the source. Better formatting & consistency.
3739
3743
3740 * IPython/Magic.py (magic_run): Added new -d option, to run
3744 * IPython/Magic.py (magic_run): Added new -d option, to run
3741 scripts under the control of the python pdb debugger. Note that
3745 scripts under the control of the python pdb debugger. Note that
3742 this required changing the %prun option -d to -D, to avoid a clash
3746 this required changing the %prun option -d to -D, to avoid a clash
3743 (since %run must pass options to %prun, and getopt is too dumb to
3747 (since %run must pass options to %prun, and getopt is too dumb to
3744 handle options with string values with embedded spaces). Thanks
3748 handle options with string values with embedded spaces). Thanks
3745 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3749 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3746 (magic_who_ls): added type matching to %who and %whos, so that one
3750 (magic_who_ls): added type matching to %who and %whos, so that one
3747 can filter their output to only include variables of certain
3751 can filter their output to only include variables of certain
3748 types. Another suggestion by Matthew.
3752 types. Another suggestion by Matthew.
3749 (magic_whos): Added memory summaries in kb and Mb for arrays.
3753 (magic_whos): Added memory summaries in kb and Mb for arrays.
3750 (magic_who): Improve formatting (break lines every 9 vars).
3754 (magic_who): Improve formatting (break lines every 9 vars).
3751
3755
3752 2004-11-28 Fernando Perez <fperez@colorado.edu>
3756 2004-11-28 Fernando Perez <fperez@colorado.edu>
3753
3757
3754 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3758 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3755 cache when empty lines were present.
3759 cache when empty lines were present.
3756
3760
3757 2004-11-24 Fernando Perez <fperez@colorado.edu>
3761 2004-11-24 Fernando Perez <fperez@colorado.edu>
3758
3762
3759 * IPython/usage.py (__doc__): document the re-activated threading
3763 * IPython/usage.py (__doc__): document the re-activated threading
3760 options for WX and GTK.
3764 options for WX and GTK.
3761
3765
3762 2004-11-23 Fernando Perez <fperez@colorado.edu>
3766 2004-11-23 Fernando Perez <fperez@colorado.edu>
3763
3767
3764 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3768 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3765 the -wthread and -gthread options, along with a new -tk one to try
3769 the -wthread and -gthread options, along with a new -tk one to try
3766 and coordinate Tk threading with wx/gtk. The tk support is very
3770 and coordinate Tk threading with wx/gtk. The tk support is very
3767 platform dependent, since it seems to require Tcl and Tk to be
3771 platform dependent, since it seems to require Tcl and Tk to be
3768 built with threads (Fedora1/2 appears NOT to have it, but in
3772 built with threads (Fedora1/2 appears NOT to have it, but in
3769 Prabhu's Debian boxes it works OK). But even with some Tk
3773 Prabhu's Debian boxes it works OK). But even with some Tk
3770 limitations, this is a great improvement.
3774 limitations, this is a great improvement.
3771
3775
3772 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3776 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3773 info in user prompts. Patch by Prabhu.
3777 info in user prompts. Patch by Prabhu.
3774
3778
3775 2004-11-18 Fernando Perez <fperez@colorado.edu>
3779 2004-11-18 Fernando Perez <fperez@colorado.edu>
3776
3780
3777 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3781 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3778 EOFErrors and bail, to avoid infinite loops if a non-terminating
3782 EOFErrors and bail, to avoid infinite loops if a non-terminating
3779 file is fed into ipython. Patch submitted in issue 19 by user,
3783 file is fed into ipython. Patch submitted in issue 19 by user,
3780 many thanks.
3784 many thanks.
3781
3785
3782 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3786 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3783 autoquote/parens in continuation prompts, which can cause lots of
3787 autoquote/parens in continuation prompts, which can cause lots of
3784 problems. Closes roundup issue 20.
3788 problems. Closes roundup issue 20.
3785
3789
3786 2004-11-17 Fernando Perez <fperez@colorado.edu>
3790 2004-11-17 Fernando Perez <fperez@colorado.edu>
3787
3791
3788 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3792 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3789 reported as debian bug #280505. I'm not sure my local changelog
3793 reported as debian bug #280505. I'm not sure my local changelog
3790 entry has the proper debian format (Jack?).
3794 entry has the proper debian format (Jack?).
3791
3795
3792 2004-11-08 *** Released version 0.6.4
3796 2004-11-08 *** Released version 0.6.4
3793
3797
3794 2004-11-08 Fernando Perez <fperez@colorado.edu>
3798 2004-11-08 Fernando Perez <fperez@colorado.edu>
3795
3799
3796 * IPython/iplib.py (init_readline): Fix exit message for Windows
3800 * IPython/iplib.py (init_readline): Fix exit message for Windows
3797 when readline is active. Thanks to a report by Eric Jones
3801 when readline is active. Thanks to a report by Eric Jones
3798 <eric-AT-enthought.com>.
3802 <eric-AT-enthought.com>.
3799
3803
3800 2004-11-07 Fernando Perez <fperez@colorado.edu>
3804 2004-11-07 Fernando Perez <fperez@colorado.edu>
3801
3805
3802 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3806 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3803 sometimes seen by win2k/cygwin users.
3807 sometimes seen by win2k/cygwin users.
3804
3808
3805 2004-11-06 Fernando Perez <fperez@colorado.edu>
3809 2004-11-06 Fernando Perez <fperez@colorado.edu>
3806
3810
3807 * IPython/iplib.py (interact): Change the handling of %Exit from
3811 * IPython/iplib.py (interact): Change the handling of %Exit from
3808 trying to propagate a SystemExit to an internal ipython flag.
3812 trying to propagate a SystemExit to an internal ipython flag.
3809 This is less elegant than using Python's exception mechanism, but
3813 This is less elegant than using Python's exception mechanism, but
3810 I can't get that to work reliably with threads, so under -pylab
3814 I can't get that to work reliably with threads, so under -pylab
3811 %Exit was hanging IPython. Cross-thread exception handling is
3815 %Exit was hanging IPython. Cross-thread exception handling is
3812 really a bitch. Thaks to a bug report by Stephen Walton
3816 really a bitch. Thaks to a bug report by Stephen Walton
3813 <stephen.walton-AT-csun.edu>.
3817 <stephen.walton-AT-csun.edu>.
3814
3818
3815 2004-11-04 Fernando Perez <fperez@colorado.edu>
3819 2004-11-04 Fernando Perez <fperez@colorado.edu>
3816
3820
3817 * IPython/iplib.py (raw_input_original): store a pointer to the
3821 * IPython/iplib.py (raw_input_original): store a pointer to the
3818 true raw_input to harden against code which can modify it
3822 true raw_input to harden against code which can modify it
3819 (wx.py.PyShell does this and would otherwise crash ipython).
3823 (wx.py.PyShell does this and would otherwise crash ipython).
3820 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3824 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3821
3825
3822 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3826 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3823 Ctrl-C problem, which does not mess up the input line.
3827 Ctrl-C problem, which does not mess up the input line.
3824
3828
3825 2004-11-03 Fernando Perez <fperez@colorado.edu>
3829 2004-11-03 Fernando Perez <fperez@colorado.edu>
3826
3830
3827 * IPython/Release.py: Changed licensing to BSD, in all files.
3831 * IPython/Release.py: Changed licensing to BSD, in all files.
3828 (name): lowercase name for tarball/RPM release.
3832 (name): lowercase name for tarball/RPM release.
3829
3833
3830 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3834 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3831 use throughout ipython.
3835 use throughout ipython.
3832
3836
3833 * IPython/Magic.py (Magic._ofind): Switch to using the new
3837 * IPython/Magic.py (Magic._ofind): Switch to using the new
3834 OInspect.getdoc() function.
3838 OInspect.getdoc() function.
3835
3839
3836 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3840 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3837 of the line currently being canceled via Ctrl-C. It's extremely
3841 of the line currently being canceled via Ctrl-C. It's extremely
3838 ugly, but I don't know how to do it better (the problem is one of
3842 ugly, but I don't know how to do it better (the problem is one of
3839 handling cross-thread exceptions).
3843 handling cross-thread exceptions).
3840
3844
3841 2004-10-28 Fernando Perez <fperez@colorado.edu>
3845 2004-10-28 Fernando Perez <fperez@colorado.edu>
3842
3846
3843 * IPython/Shell.py (signal_handler): add signal handlers to trap
3847 * IPython/Shell.py (signal_handler): add signal handlers to trap
3844 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3848 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3845 report by Francesc Alted.
3849 report by Francesc Alted.
3846
3850
3847 2004-10-21 Fernando Perez <fperez@colorado.edu>
3851 2004-10-21 Fernando Perez <fperez@colorado.edu>
3848
3852
3849 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3853 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3850 to % for pysh syntax extensions.
3854 to % for pysh syntax extensions.
3851
3855
3852 2004-10-09 Fernando Perez <fperez@colorado.edu>
3856 2004-10-09 Fernando Perez <fperez@colorado.edu>
3853
3857
3854 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3858 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3855 arrays to print a more useful summary, without calling str(arr).
3859 arrays to print a more useful summary, without calling str(arr).
3856 This avoids the problem of extremely lengthy computations which
3860 This avoids the problem of extremely lengthy computations which
3857 occur if arr is large, and appear to the user as a system lockup
3861 occur if arr is large, and appear to the user as a system lockup
3858 with 100% cpu activity. After a suggestion by Kristian Sandberg
3862 with 100% cpu activity. After a suggestion by Kristian Sandberg
3859 <Kristian.Sandberg@colorado.edu>.
3863 <Kristian.Sandberg@colorado.edu>.
3860 (Magic.__init__): fix bug in global magic escapes not being
3864 (Magic.__init__): fix bug in global magic escapes not being
3861 correctly set.
3865 correctly set.
3862
3866
3863 2004-10-08 Fernando Perez <fperez@colorado.edu>
3867 2004-10-08 Fernando Perez <fperez@colorado.edu>
3864
3868
3865 * IPython/Magic.py (__license__): change to absolute imports of
3869 * IPython/Magic.py (__license__): change to absolute imports of
3866 ipython's own internal packages, to start adapting to the absolute
3870 ipython's own internal packages, to start adapting to the absolute
3867 import requirement of PEP-328.
3871 import requirement of PEP-328.
3868
3872
3869 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3873 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3870 files, and standardize author/license marks through the Release
3874 files, and standardize author/license marks through the Release
3871 module instead of having per/file stuff (except for files with
3875 module instead of having per/file stuff (except for files with
3872 particular licenses, like the MIT/PSF-licensed codes).
3876 particular licenses, like the MIT/PSF-licensed codes).
3873
3877
3874 * IPython/Debugger.py: remove dead code for python 2.1
3878 * IPython/Debugger.py: remove dead code for python 2.1
3875
3879
3876 2004-10-04 Fernando Perez <fperez@colorado.edu>
3880 2004-10-04 Fernando Perez <fperez@colorado.edu>
3877
3881
3878 * IPython/iplib.py (ipmagic): New function for accessing magics
3882 * IPython/iplib.py (ipmagic): New function for accessing magics
3879 via a normal python function call.
3883 via a normal python function call.
3880
3884
3881 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3885 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3882 from '@' to '%', to accomodate the new @decorator syntax of python
3886 from '@' to '%', to accomodate the new @decorator syntax of python
3883 2.4.
3887 2.4.
3884
3888
3885 2004-09-29 Fernando Perez <fperez@colorado.edu>
3889 2004-09-29 Fernando Perez <fperez@colorado.edu>
3886
3890
3887 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3891 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3888 matplotlib.use to prevent running scripts which try to switch
3892 matplotlib.use to prevent running scripts which try to switch
3889 interactive backends from within ipython. This will just crash
3893 interactive backends from within ipython. This will just crash
3890 the python interpreter, so we can't allow it (but a detailed error
3894 the python interpreter, so we can't allow it (but a detailed error
3891 is given to the user).
3895 is given to the user).
3892
3896
3893 2004-09-28 Fernando Perez <fperez@colorado.edu>
3897 2004-09-28 Fernando Perez <fperez@colorado.edu>
3894
3898
3895 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3899 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3896 matplotlib-related fixes so that using @run with non-matplotlib
3900 matplotlib-related fixes so that using @run with non-matplotlib
3897 scripts doesn't pop up spurious plot windows. This requires
3901 scripts doesn't pop up spurious plot windows. This requires
3898 matplotlib >= 0.63, where I had to make some changes as well.
3902 matplotlib >= 0.63, where I had to make some changes as well.
3899
3903
3900 * IPython/ipmaker.py (make_IPython): update version requirement to
3904 * IPython/ipmaker.py (make_IPython): update version requirement to
3901 python 2.2.
3905 python 2.2.
3902
3906
3903 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3907 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3904 banner arg for embedded customization.
3908 banner arg for embedded customization.
3905
3909
3906 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3910 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3907 explicit uses of __IP as the IPython's instance name. Now things
3911 explicit uses of __IP as the IPython's instance name. Now things
3908 are properly handled via the shell.name value. The actual code
3912 are properly handled via the shell.name value. The actual code
3909 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3913 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3910 is much better than before. I'll clean things completely when the
3914 is much better than before. I'll clean things completely when the
3911 magic stuff gets a real overhaul.
3915 magic stuff gets a real overhaul.
3912
3916
3913 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3917 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3914 minor changes to debian dir.
3918 minor changes to debian dir.
3915
3919
3916 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3920 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3917 pointer to the shell itself in the interactive namespace even when
3921 pointer to the shell itself in the interactive namespace even when
3918 a user-supplied dict is provided. This is needed for embedding
3922 a user-supplied dict is provided. This is needed for embedding
3919 purposes (found by tests with Michel Sanner).
3923 purposes (found by tests with Michel Sanner).
3920
3924
3921 2004-09-27 Fernando Perez <fperez@colorado.edu>
3925 2004-09-27 Fernando Perez <fperez@colorado.edu>
3922
3926
3923 * IPython/UserConfig/ipythonrc: remove []{} from
3927 * IPython/UserConfig/ipythonrc: remove []{} from
3924 readline_remove_delims, so that things like [modname.<TAB> do
3928 readline_remove_delims, so that things like [modname.<TAB> do
3925 proper completion. This disables [].TAB, but that's a less common
3929 proper completion. This disables [].TAB, but that's a less common
3926 case than module names in list comprehensions, for example.
3930 case than module names in list comprehensions, for example.
3927 Thanks to a report by Andrea Riciputi.
3931 Thanks to a report by Andrea Riciputi.
3928
3932
3929 2004-09-09 Fernando Perez <fperez@colorado.edu>
3933 2004-09-09 Fernando Perez <fperez@colorado.edu>
3930
3934
3931 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3935 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3932 blocking problems in win32 and osx. Fix by John.
3936 blocking problems in win32 and osx. Fix by John.
3933
3937
3934 2004-09-08 Fernando Perez <fperez@colorado.edu>
3938 2004-09-08 Fernando Perez <fperez@colorado.edu>
3935
3939
3936 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3940 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3937 for Win32 and OSX. Fix by John Hunter.
3941 for Win32 and OSX. Fix by John Hunter.
3938
3942
3939 2004-08-30 *** Released version 0.6.3
3943 2004-08-30 *** Released version 0.6.3
3940
3944
3941 2004-08-30 Fernando Perez <fperez@colorado.edu>
3945 2004-08-30 Fernando Perez <fperez@colorado.edu>
3942
3946
3943 * setup.py (isfile): Add manpages to list of dependent files to be
3947 * setup.py (isfile): Add manpages to list of dependent files to be
3944 updated.
3948 updated.
3945
3949
3946 2004-08-27 Fernando Perez <fperez@colorado.edu>
3950 2004-08-27 Fernando Perez <fperez@colorado.edu>
3947
3951
3948 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3952 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3949 for now. They don't really work with standalone WX/GTK code
3953 for now. They don't really work with standalone WX/GTK code
3950 (though matplotlib IS working fine with both of those backends).
3954 (though matplotlib IS working fine with both of those backends).
3951 This will neeed much more testing. I disabled most things with
3955 This will neeed much more testing. I disabled most things with
3952 comments, so turning it back on later should be pretty easy.
3956 comments, so turning it back on later should be pretty easy.
3953
3957
3954 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3958 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3955 autocalling of expressions like r'foo', by modifying the line
3959 autocalling of expressions like r'foo', by modifying the line
3956 split regexp. Closes
3960 split regexp. Closes
3957 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3961 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3958 Riley <ipythonbugs-AT-sabi.net>.
3962 Riley <ipythonbugs-AT-sabi.net>.
3959 (InteractiveShell.mainloop): honor --nobanner with banner
3963 (InteractiveShell.mainloop): honor --nobanner with banner
3960 extensions.
3964 extensions.
3961
3965
3962 * IPython/Shell.py: Significant refactoring of all classes, so
3966 * IPython/Shell.py: Significant refactoring of all classes, so
3963 that we can really support ALL matplotlib backends and threading
3967 that we can really support ALL matplotlib backends and threading
3964 models (John spotted a bug with Tk which required this). Now we
3968 models (John spotted a bug with Tk which required this). Now we
3965 should support single-threaded, WX-threads and GTK-threads, both
3969 should support single-threaded, WX-threads and GTK-threads, both
3966 for generic code and for matplotlib.
3970 for generic code and for matplotlib.
3967
3971
3968 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3972 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3969 -pylab, to simplify things for users. Will also remove the pylab
3973 -pylab, to simplify things for users. Will also remove the pylab
3970 profile, since now all of matplotlib configuration is directly
3974 profile, since now all of matplotlib configuration is directly
3971 handled here. This also reduces startup time.
3975 handled here. This also reduces startup time.
3972
3976
3973 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3977 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3974 shell wasn't being correctly called. Also in IPShellWX.
3978 shell wasn't being correctly called. Also in IPShellWX.
3975
3979
3976 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3980 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3977 fine-tune banner.
3981 fine-tune banner.
3978
3982
3979 * IPython/numutils.py (spike): Deprecate these spike functions,
3983 * IPython/numutils.py (spike): Deprecate these spike functions,
3980 delete (long deprecated) gnuplot_exec handler.
3984 delete (long deprecated) gnuplot_exec handler.
3981
3985
3982 2004-08-26 Fernando Perez <fperez@colorado.edu>
3986 2004-08-26 Fernando Perez <fperez@colorado.edu>
3983
3987
3984 * ipython.1: Update for threading options, plus some others which
3988 * ipython.1: Update for threading options, plus some others which
3985 were missing.
3989 were missing.
3986
3990
3987 * IPython/ipmaker.py (__call__): Added -wthread option for
3991 * IPython/ipmaker.py (__call__): Added -wthread option for
3988 wxpython thread handling. Make sure threading options are only
3992 wxpython thread handling. Make sure threading options are only
3989 valid at the command line.
3993 valid at the command line.
3990
3994
3991 * scripts/ipython: moved shell selection into a factory function
3995 * scripts/ipython: moved shell selection into a factory function
3992 in Shell.py, to keep the starter script to a minimum.
3996 in Shell.py, to keep the starter script to a minimum.
3993
3997
3994 2004-08-25 Fernando Perez <fperez@colorado.edu>
3998 2004-08-25 Fernando Perez <fperez@colorado.edu>
3995
3999
3996 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4000 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3997 John. Along with some recent changes he made to matplotlib, the
4001 John. Along with some recent changes he made to matplotlib, the
3998 next versions of both systems should work very well together.
4002 next versions of both systems should work very well together.
3999
4003
4000 2004-08-24 Fernando Perez <fperez@colorado.edu>
4004 2004-08-24 Fernando Perez <fperez@colorado.edu>
4001
4005
4002 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4006 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4003 tried to switch the profiling to using hotshot, but I'm getting
4007 tried to switch the profiling to using hotshot, but I'm getting
4004 strange errors from prof.runctx() there. I may be misreading the
4008 strange errors from prof.runctx() there. I may be misreading the
4005 docs, but it looks weird. For now the profiling code will
4009 docs, but it looks weird. For now the profiling code will
4006 continue to use the standard profiler.
4010 continue to use the standard profiler.
4007
4011
4008 2004-08-23 Fernando Perez <fperez@colorado.edu>
4012 2004-08-23 Fernando Perez <fperez@colorado.edu>
4009
4013
4010 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4014 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4011 threaded shell, by John Hunter. It's not quite ready yet, but
4015 threaded shell, by John Hunter. It's not quite ready yet, but
4012 close.
4016 close.
4013
4017
4014 2004-08-22 Fernando Perez <fperez@colorado.edu>
4018 2004-08-22 Fernando Perez <fperez@colorado.edu>
4015
4019
4016 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4020 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4017 in Magic and ultraTB.
4021 in Magic and ultraTB.
4018
4022
4019 * ipython.1: document threading options in manpage.
4023 * ipython.1: document threading options in manpage.
4020
4024
4021 * scripts/ipython: Changed name of -thread option to -gthread,
4025 * scripts/ipython: Changed name of -thread option to -gthread,
4022 since this is GTK specific. I want to leave the door open for a
4026 since this is GTK specific. I want to leave the door open for a
4023 -wthread option for WX, which will most likely be necessary. This
4027 -wthread option for WX, which will most likely be necessary. This
4024 change affects usage and ipmaker as well.
4028 change affects usage and ipmaker as well.
4025
4029
4026 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4030 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4027 handle the matplotlib shell issues. Code by John Hunter
4031 handle the matplotlib shell issues. Code by John Hunter
4028 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4032 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4029 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4033 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4030 broken (and disabled for end users) for now, but it puts the
4034 broken (and disabled for end users) for now, but it puts the
4031 infrastructure in place.
4035 infrastructure in place.
4032
4036
4033 2004-08-21 Fernando Perez <fperez@colorado.edu>
4037 2004-08-21 Fernando Perez <fperez@colorado.edu>
4034
4038
4035 * ipythonrc-pylab: Add matplotlib support.
4039 * ipythonrc-pylab: Add matplotlib support.
4036
4040
4037 * matplotlib_config.py: new files for matplotlib support, part of
4041 * matplotlib_config.py: new files for matplotlib support, part of
4038 the pylab profile.
4042 the pylab profile.
4039
4043
4040 * IPython/usage.py (__doc__): documented the threading options.
4044 * IPython/usage.py (__doc__): documented the threading options.
4041
4045
4042 2004-08-20 Fernando Perez <fperez@colorado.edu>
4046 2004-08-20 Fernando Perez <fperez@colorado.edu>
4043
4047
4044 * ipython: Modified the main calling routine to handle the -thread
4048 * ipython: Modified the main calling routine to handle the -thread
4045 and -mpthread options. This needs to be done as a top-level hack,
4049 and -mpthread options. This needs to be done as a top-level hack,
4046 because it determines which class to instantiate for IPython
4050 because it determines which class to instantiate for IPython
4047 itself.
4051 itself.
4048
4052
4049 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4053 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4050 classes to support multithreaded GTK operation without blocking,
4054 classes to support multithreaded GTK operation without blocking,
4051 and matplotlib with all backends. This is a lot of still very
4055 and matplotlib with all backends. This is a lot of still very
4052 experimental code, and threads are tricky. So it may still have a
4056 experimental code, and threads are tricky. So it may still have a
4053 few rough edges... This code owes a lot to
4057 few rough edges... This code owes a lot to
4054 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4058 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4055 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4059 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4056 to John Hunter for all the matplotlib work.
4060 to John Hunter for all the matplotlib work.
4057
4061
4058 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4062 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4059 options for gtk thread and matplotlib support.
4063 options for gtk thread and matplotlib support.
4060
4064
4061 2004-08-16 Fernando Perez <fperez@colorado.edu>
4065 2004-08-16 Fernando Perez <fperez@colorado.edu>
4062
4066
4063 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4067 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4064 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4068 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4065 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4069 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4066
4070
4067 2004-08-11 Fernando Perez <fperez@colorado.edu>
4071 2004-08-11 Fernando Perez <fperez@colorado.edu>
4068
4072
4069 * setup.py (isfile): Fix build so documentation gets updated for
4073 * setup.py (isfile): Fix build so documentation gets updated for
4070 rpms (it was only done for .tgz builds).
4074 rpms (it was only done for .tgz builds).
4071
4075
4072 2004-08-10 Fernando Perez <fperez@colorado.edu>
4076 2004-08-10 Fernando Perez <fperez@colorado.edu>
4073
4077
4074 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4078 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4075
4079
4076 * iplib.py : Silence syntax error exceptions in tab-completion.
4080 * iplib.py : Silence syntax error exceptions in tab-completion.
4077
4081
4078 2004-08-05 Fernando Perez <fperez@colorado.edu>
4082 2004-08-05 Fernando Perez <fperez@colorado.edu>
4079
4083
4080 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4084 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4081 'color off' mark for continuation prompts. This was causing long
4085 'color off' mark for continuation prompts. This was causing long
4082 continuation lines to mis-wrap.
4086 continuation lines to mis-wrap.
4083
4087
4084 2004-08-01 Fernando Perez <fperez@colorado.edu>
4088 2004-08-01 Fernando Perez <fperez@colorado.edu>
4085
4089
4086 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4090 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4087 for building ipython to be a parameter. All this is necessary
4091 for building ipython to be a parameter. All this is necessary
4088 right now to have a multithreaded version, but this insane
4092 right now to have a multithreaded version, but this insane
4089 non-design will be cleaned up soon. For now, it's a hack that
4093 non-design will be cleaned up soon. For now, it's a hack that
4090 works.
4094 works.
4091
4095
4092 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4096 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4093 args in various places. No bugs so far, but it's a dangerous
4097 args in various places. No bugs so far, but it's a dangerous
4094 practice.
4098 practice.
4095
4099
4096 2004-07-31 Fernando Perez <fperez@colorado.edu>
4100 2004-07-31 Fernando Perez <fperez@colorado.edu>
4097
4101
4098 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4102 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4099 fix completion of files with dots in their names under most
4103 fix completion of files with dots in their names under most
4100 profiles (pysh was OK because the completion order is different).
4104 profiles (pysh was OK because the completion order is different).
4101
4105
4102 2004-07-27 Fernando Perez <fperez@colorado.edu>
4106 2004-07-27 Fernando Perez <fperez@colorado.edu>
4103
4107
4104 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4108 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4105 keywords manually, b/c the one in keyword.py was removed in python
4109 keywords manually, b/c the one in keyword.py was removed in python
4106 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4110 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4107 This is NOT a bug under python 2.3 and earlier.
4111 This is NOT a bug under python 2.3 and earlier.
4108
4112
4109 2004-07-26 Fernando Perez <fperez@colorado.edu>
4113 2004-07-26 Fernando Perez <fperez@colorado.edu>
4110
4114
4111 * IPython/ultraTB.py (VerboseTB.text): Add another
4115 * IPython/ultraTB.py (VerboseTB.text): Add another
4112 linecache.checkcache() call to try to prevent inspect.py from
4116 linecache.checkcache() call to try to prevent inspect.py from
4113 crashing under python 2.3. I think this fixes
4117 crashing under python 2.3. I think this fixes
4114 http://www.scipy.net/roundup/ipython/issue17.
4118 http://www.scipy.net/roundup/ipython/issue17.
4115
4119
4116 2004-07-26 *** Released version 0.6.2
4120 2004-07-26 *** Released version 0.6.2
4117
4121
4118 2004-07-26 Fernando Perez <fperez@colorado.edu>
4122 2004-07-26 Fernando Perez <fperez@colorado.edu>
4119
4123
4120 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4124 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4121 fail for any number.
4125 fail for any number.
4122 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4126 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4123 empty bookmarks.
4127 empty bookmarks.
4124
4128
4125 2004-07-26 *** Released version 0.6.1
4129 2004-07-26 *** Released version 0.6.1
4126
4130
4127 2004-07-26 Fernando Perez <fperez@colorado.edu>
4131 2004-07-26 Fernando Perez <fperez@colorado.edu>
4128
4132
4129 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4133 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4130
4134
4131 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4135 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4132 escaping '()[]{}' in filenames.
4136 escaping '()[]{}' in filenames.
4133
4137
4134 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4138 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4135 Python 2.2 users who lack a proper shlex.split.
4139 Python 2.2 users who lack a proper shlex.split.
4136
4140
4137 2004-07-19 Fernando Perez <fperez@colorado.edu>
4141 2004-07-19 Fernando Perez <fperez@colorado.edu>
4138
4142
4139 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4143 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4140 for reading readline's init file. I follow the normal chain:
4144 for reading readline's init file. I follow the normal chain:
4141 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4145 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4142 report by Mike Heeter. This closes
4146 report by Mike Heeter. This closes
4143 http://www.scipy.net/roundup/ipython/issue16.
4147 http://www.scipy.net/roundup/ipython/issue16.
4144
4148
4145 2004-07-18 Fernando Perez <fperez@colorado.edu>
4149 2004-07-18 Fernando Perez <fperez@colorado.edu>
4146
4150
4147 * IPython/iplib.py (__init__): Add better handling of '\' under
4151 * IPython/iplib.py (__init__): Add better handling of '\' under
4148 Win32 for filenames. After a patch by Ville.
4152 Win32 for filenames. After a patch by Ville.
4149
4153
4150 2004-07-17 Fernando Perez <fperez@colorado.edu>
4154 2004-07-17 Fernando Perez <fperez@colorado.edu>
4151
4155
4152 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4156 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4153 autocalling would be triggered for 'foo is bar' if foo is
4157 autocalling would be triggered for 'foo is bar' if foo is
4154 callable. I also cleaned up the autocall detection code to use a
4158 callable. I also cleaned up the autocall detection code to use a
4155 regexp, which is faster. Bug reported by Alexander Schmolck.
4159 regexp, which is faster. Bug reported by Alexander Schmolck.
4156
4160
4157 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4161 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4158 '?' in them would confuse the help system. Reported by Alex
4162 '?' in them would confuse the help system. Reported by Alex
4159 Schmolck.
4163 Schmolck.
4160
4164
4161 2004-07-16 Fernando Perez <fperez@colorado.edu>
4165 2004-07-16 Fernando Perez <fperez@colorado.edu>
4162
4166
4163 * IPython/GnuplotInteractive.py (__all__): added plot2.
4167 * IPython/GnuplotInteractive.py (__all__): added plot2.
4164
4168
4165 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4169 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4166 plotting dictionaries, lists or tuples of 1d arrays.
4170 plotting dictionaries, lists or tuples of 1d arrays.
4167
4171
4168 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4172 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4169 optimizations.
4173 optimizations.
4170
4174
4171 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4175 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4172 the information which was there from Janko's original IPP code:
4176 the information which was there from Janko's original IPP code:
4173
4177
4174 03.05.99 20:53 porto.ifm.uni-kiel.de
4178 03.05.99 20:53 porto.ifm.uni-kiel.de
4175 --Started changelog.
4179 --Started changelog.
4176 --make clear do what it say it does
4180 --make clear do what it say it does
4177 --added pretty output of lines from inputcache
4181 --added pretty output of lines from inputcache
4178 --Made Logger a mixin class, simplifies handling of switches
4182 --Made Logger a mixin class, simplifies handling of switches
4179 --Added own completer class. .string<TAB> expands to last history
4183 --Added own completer class. .string<TAB> expands to last history
4180 line which starts with string. The new expansion is also present
4184 line which starts with string. The new expansion is also present
4181 with Ctrl-r from the readline library. But this shows, who this
4185 with Ctrl-r from the readline library. But this shows, who this
4182 can be done for other cases.
4186 can be done for other cases.
4183 --Added convention that all shell functions should accept a
4187 --Added convention that all shell functions should accept a
4184 parameter_string This opens the door for different behaviour for
4188 parameter_string This opens the door for different behaviour for
4185 each function. @cd is a good example of this.
4189 each function. @cd is a good example of this.
4186
4190
4187 04.05.99 12:12 porto.ifm.uni-kiel.de
4191 04.05.99 12:12 porto.ifm.uni-kiel.de
4188 --added logfile rotation
4192 --added logfile rotation
4189 --added new mainloop method which freezes first the namespace
4193 --added new mainloop method which freezes first the namespace
4190
4194
4191 07.05.99 21:24 porto.ifm.uni-kiel.de
4195 07.05.99 21:24 porto.ifm.uni-kiel.de
4192 --added the docreader classes. Now there is a help system.
4196 --added the docreader classes. Now there is a help system.
4193 -This is only a first try. Currently it's not easy to put new
4197 -This is only a first try. Currently it's not easy to put new
4194 stuff in the indices. But this is the way to go. Info would be
4198 stuff in the indices. But this is the way to go. Info would be
4195 better, but HTML is every where and not everybody has an info
4199 better, but HTML is every where and not everybody has an info
4196 system installed and it's not so easy to change html-docs to info.
4200 system installed and it's not so easy to change html-docs to info.
4197 --added global logfile option
4201 --added global logfile option
4198 --there is now a hook for object inspection method pinfo needs to
4202 --there is now a hook for object inspection method pinfo needs to
4199 be provided for this. Can be reached by two '??'.
4203 be provided for this. Can be reached by two '??'.
4200
4204
4201 08.05.99 20:51 porto.ifm.uni-kiel.de
4205 08.05.99 20:51 porto.ifm.uni-kiel.de
4202 --added a README
4206 --added a README
4203 --bug in rc file. Something has changed so functions in the rc
4207 --bug in rc file. Something has changed so functions in the rc
4204 file need to reference the shell and not self. Not clear if it's a
4208 file need to reference the shell and not self. Not clear if it's a
4205 bug or feature.
4209 bug or feature.
4206 --changed rc file for new behavior
4210 --changed rc file for new behavior
4207
4211
4208 2004-07-15 Fernando Perez <fperez@colorado.edu>
4212 2004-07-15 Fernando Perez <fperez@colorado.edu>
4209
4213
4210 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4214 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4211 cache was falling out of sync in bizarre manners when multi-line
4215 cache was falling out of sync in bizarre manners when multi-line
4212 input was present. Minor optimizations and cleanup.
4216 input was present. Minor optimizations and cleanup.
4213
4217
4214 (Logger): Remove old Changelog info for cleanup. This is the
4218 (Logger): Remove old Changelog info for cleanup. This is the
4215 information which was there from Janko's original code:
4219 information which was there from Janko's original code:
4216
4220
4217 Changes to Logger: - made the default log filename a parameter
4221 Changes to Logger: - made the default log filename a parameter
4218
4222
4219 - put a check for lines beginning with !@? in log(). Needed
4223 - put a check for lines beginning with !@? in log(). Needed
4220 (even if the handlers properly log their lines) for mid-session
4224 (even if the handlers properly log their lines) for mid-session
4221 logging activation to work properly. Without this, lines logged
4225 logging activation to work properly. Without this, lines logged
4222 in mid session, which get read from the cache, would end up
4226 in mid session, which get read from the cache, would end up
4223 'bare' (with !@? in the open) in the log. Now they are caught
4227 'bare' (with !@? in the open) in the log. Now they are caught
4224 and prepended with a #.
4228 and prepended with a #.
4225
4229
4226 * IPython/iplib.py (InteractiveShell.init_readline): added check
4230 * IPython/iplib.py (InteractiveShell.init_readline): added check
4227 in case MagicCompleter fails to be defined, so we don't crash.
4231 in case MagicCompleter fails to be defined, so we don't crash.
4228
4232
4229 2004-07-13 Fernando Perez <fperez@colorado.edu>
4233 2004-07-13 Fernando Perez <fperez@colorado.edu>
4230
4234
4231 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4235 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4232 of EPS if the requested filename ends in '.eps'.
4236 of EPS if the requested filename ends in '.eps'.
4233
4237
4234 2004-07-04 Fernando Perez <fperez@colorado.edu>
4238 2004-07-04 Fernando Perez <fperez@colorado.edu>
4235
4239
4236 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4240 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4237 escaping of quotes when calling the shell.
4241 escaping of quotes when calling the shell.
4238
4242
4239 2004-07-02 Fernando Perez <fperez@colorado.edu>
4243 2004-07-02 Fernando Perez <fperez@colorado.edu>
4240
4244
4241 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4245 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4242 gettext not working because we were clobbering '_'. Fixes
4246 gettext not working because we were clobbering '_'. Fixes
4243 http://www.scipy.net/roundup/ipython/issue6.
4247 http://www.scipy.net/roundup/ipython/issue6.
4244
4248
4245 2004-07-01 Fernando Perez <fperez@colorado.edu>
4249 2004-07-01 Fernando Perez <fperez@colorado.edu>
4246
4250
4247 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4251 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4248 into @cd. Patch by Ville.
4252 into @cd. Patch by Ville.
4249
4253
4250 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4254 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4251 new function to store things after ipmaker runs. Patch by Ville.
4255 new function to store things after ipmaker runs. Patch by Ville.
4252 Eventually this will go away once ipmaker is removed and the class
4256 Eventually this will go away once ipmaker is removed and the class
4253 gets cleaned up, but for now it's ok. Key functionality here is
4257 gets cleaned up, but for now it's ok. Key functionality here is
4254 the addition of the persistent storage mechanism, a dict for
4258 the addition of the persistent storage mechanism, a dict for
4255 keeping data across sessions (for now just bookmarks, but more can
4259 keeping data across sessions (for now just bookmarks, but more can
4256 be implemented later).
4260 be implemented later).
4257
4261
4258 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4262 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4259 persistent across sections. Patch by Ville, I modified it
4263 persistent across sections. Patch by Ville, I modified it
4260 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4264 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4261 added a '-l' option to list all bookmarks.
4265 added a '-l' option to list all bookmarks.
4262
4266
4263 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4267 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4264 center for cleanup. Registered with atexit.register(). I moved
4268 center for cleanup. Registered with atexit.register(). I moved
4265 here the old exit_cleanup(). After a patch by Ville.
4269 here the old exit_cleanup(). After a patch by Ville.
4266
4270
4267 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4271 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4268 characters in the hacked shlex_split for python 2.2.
4272 characters in the hacked shlex_split for python 2.2.
4269
4273
4270 * IPython/iplib.py (file_matches): more fixes to filenames with
4274 * IPython/iplib.py (file_matches): more fixes to filenames with
4271 whitespace in them. It's not perfect, but limitations in python's
4275 whitespace in them. It's not perfect, but limitations in python's
4272 readline make it impossible to go further.
4276 readline make it impossible to go further.
4273
4277
4274 2004-06-29 Fernando Perez <fperez@colorado.edu>
4278 2004-06-29 Fernando Perez <fperez@colorado.edu>
4275
4279
4276 * IPython/iplib.py (file_matches): escape whitespace correctly in
4280 * IPython/iplib.py (file_matches): escape whitespace correctly in
4277 filename completions. Bug reported by Ville.
4281 filename completions. Bug reported by Ville.
4278
4282
4279 2004-06-28 Fernando Perez <fperez@colorado.edu>
4283 2004-06-28 Fernando Perez <fperez@colorado.edu>
4280
4284
4281 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4285 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4282 the history file will be called 'history-PROFNAME' (or just
4286 the history file will be called 'history-PROFNAME' (or just
4283 'history' if no profile is loaded). I was getting annoyed at
4287 'history' if no profile is loaded). I was getting annoyed at
4284 getting my Numerical work history clobbered by pysh sessions.
4288 getting my Numerical work history clobbered by pysh sessions.
4285
4289
4286 * IPython/iplib.py (InteractiveShell.__init__): Internal
4290 * IPython/iplib.py (InteractiveShell.__init__): Internal
4287 getoutputerror() function so that we can honor the system_verbose
4291 getoutputerror() function so that we can honor the system_verbose
4288 flag for _all_ system calls. I also added escaping of #
4292 flag for _all_ system calls. I also added escaping of #
4289 characters here to avoid confusing Itpl.
4293 characters here to avoid confusing Itpl.
4290
4294
4291 * IPython/Magic.py (shlex_split): removed call to shell in
4295 * IPython/Magic.py (shlex_split): removed call to shell in
4292 parse_options and replaced it with shlex.split(). The annoying
4296 parse_options and replaced it with shlex.split(). The annoying
4293 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4297 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4294 to backport it from 2.3, with several frail hacks (the shlex
4298 to backport it from 2.3, with several frail hacks (the shlex
4295 module is rather limited in 2.2). Thanks to a suggestion by Ville
4299 module is rather limited in 2.2). Thanks to a suggestion by Ville
4296 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4300 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4297 problem.
4301 problem.
4298
4302
4299 (Magic.magic_system_verbose): new toggle to print the actual
4303 (Magic.magic_system_verbose): new toggle to print the actual
4300 system calls made by ipython. Mainly for debugging purposes.
4304 system calls made by ipython. Mainly for debugging purposes.
4301
4305
4302 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4306 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4303 doesn't support persistence. Reported (and fix suggested) by
4307 doesn't support persistence. Reported (and fix suggested) by
4304 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4308 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4305
4309
4306 2004-06-26 Fernando Perez <fperez@colorado.edu>
4310 2004-06-26 Fernando Perez <fperez@colorado.edu>
4307
4311
4308 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4312 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4309 continue prompts.
4313 continue prompts.
4310
4314
4311 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4315 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4312 function (basically a big docstring) and a few more things here to
4316 function (basically a big docstring) and a few more things here to
4313 speedup startup. pysh.py is now very lightweight. We want because
4317 speedup startup. pysh.py is now very lightweight. We want because
4314 it gets execfile'd, while InterpreterExec gets imported, so
4318 it gets execfile'd, while InterpreterExec gets imported, so
4315 byte-compilation saves time.
4319 byte-compilation saves time.
4316
4320
4317 2004-06-25 Fernando Perez <fperez@colorado.edu>
4321 2004-06-25 Fernando Perez <fperez@colorado.edu>
4318
4322
4319 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4323 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4320 -NUM', which was recently broken.
4324 -NUM', which was recently broken.
4321
4325
4322 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4326 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4323 in multi-line input (but not !!, which doesn't make sense there).
4327 in multi-line input (but not !!, which doesn't make sense there).
4324
4328
4325 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4329 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4326 It's just too useful, and people can turn it off in the less
4330 It's just too useful, and people can turn it off in the less
4327 common cases where it's a problem.
4331 common cases where it's a problem.
4328
4332
4329 2004-06-24 Fernando Perez <fperez@colorado.edu>
4333 2004-06-24 Fernando Perez <fperez@colorado.edu>
4330
4334
4331 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4335 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4332 special syntaxes (like alias calling) is now allied in multi-line
4336 special syntaxes (like alias calling) is now allied in multi-line
4333 input. This is still _very_ experimental, but it's necessary for
4337 input. This is still _very_ experimental, but it's necessary for
4334 efficient shell usage combining python looping syntax with system
4338 efficient shell usage combining python looping syntax with system
4335 calls. For now it's restricted to aliases, I don't think it
4339 calls. For now it's restricted to aliases, I don't think it
4336 really even makes sense to have this for magics.
4340 really even makes sense to have this for magics.
4337
4341
4338 2004-06-23 Fernando Perez <fperez@colorado.edu>
4342 2004-06-23 Fernando Perez <fperez@colorado.edu>
4339
4343
4340 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4344 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4341 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4345 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4342
4346
4343 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4347 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4344 extensions under Windows (after code sent by Gary Bishop). The
4348 extensions under Windows (after code sent by Gary Bishop). The
4345 extensions considered 'executable' are stored in IPython's rc
4349 extensions considered 'executable' are stored in IPython's rc
4346 structure as win_exec_ext.
4350 structure as win_exec_ext.
4347
4351
4348 * IPython/genutils.py (shell): new function, like system() but
4352 * IPython/genutils.py (shell): new function, like system() but
4349 without return value. Very useful for interactive shell work.
4353 without return value. Very useful for interactive shell work.
4350
4354
4351 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4355 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4352 delete aliases.
4356 delete aliases.
4353
4357
4354 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4358 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4355 sure that the alias table doesn't contain python keywords.
4359 sure that the alias table doesn't contain python keywords.
4356
4360
4357 2004-06-21 Fernando Perez <fperez@colorado.edu>
4361 2004-06-21 Fernando Perez <fperez@colorado.edu>
4358
4362
4359 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4363 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4360 non-existent items are found in $PATH. Reported by Thorsten.
4364 non-existent items are found in $PATH. Reported by Thorsten.
4361
4365
4362 2004-06-20 Fernando Perez <fperez@colorado.edu>
4366 2004-06-20 Fernando Perez <fperez@colorado.edu>
4363
4367
4364 * IPython/iplib.py (complete): modified the completer so that the
4368 * IPython/iplib.py (complete): modified the completer so that the
4365 order of priorities can be easily changed at runtime.
4369 order of priorities can be easily changed at runtime.
4366
4370
4367 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4371 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4368 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4372 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4369
4373
4370 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4374 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4371 expand Python variables prepended with $ in all system calls. The
4375 expand Python variables prepended with $ in all system calls. The
4372 same was done to InteractiveShell.handle_shell_escape. Now all
4376 same was done to InteractiveShell.handle_shell_escape. Now all
4373 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4377 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4374 expansion of python variables and expressions according to the
4378 expansion of python variables and expressions according to the
4375 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4379 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4376
4380
4377 Though PEP-215 has been rejected, a similar (but simpler) one
4381 Though PEP-215 has been rejected, a similar (but simpler) one
4378 seems like it will go into Python 2.4, PEP-292 -
4382 seems like it will go into Python 2.4, PEP-292 -
4379 http://www.python.org/peps/pep-0292.html.
4383 http://www.python.org/peps/pep-0292.html.
4380
4384
4381 I'll keep the full syntax of PEP-215, since IPython has since the
4385 I'll keep the full syntax of PEP-215, since IPython has since the
4382 start used Ka-Ping Yee's reference implementation discussed there
4386 start used Ka-Ping Yee's reference implementation discussed there
4383 (Itpl), and I actually like the powerful semantics it offers.
4387 (Itpl), and I actually like the powerful semantics it offers.
4384
4388
4385 In order to access normal shell variables, the $ has to be escaped
4389 In order to access normal shell variables, the $ has to be escaped
4386 via an extra $. For example:
4390 via an extra $. For example:
4387
4391
4388 In [7]: PATH='a python variable'
4392 In [7]: PATH='a python variable'
4389
4393
4390 In [8]: !echo $PATH
4394 In [8]: !echo $PATH
4391 a python variable
4395 a python variable
4392
4396
4393 In [9]: !echo $$PATH
4397 In [9]: !echo $$PATH
4394 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4398 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4395
4399
4396 (Magic.parse_options): escape $ so the shell doesn't evaluate
4400 (Magic.parse_options): escape $ so the shell doesn't evaluate
4397 things prematurely.
4401 things prematurely.
4398
4402
4399 * IPython/iplib.py (InteractiveShell.call_alias): added the
4403 * IPython/iplib.py (InteractiveShell.call_alias): added the
4400 ability for aliases to expand python variables via $.
4404 ability for aliases to expand python variables via $.
4401
4405
4402 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4406 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4403 system, now there's a @rehash/@rehashx pair of magics. These work
4407 system, now there's a @rehash/@rehashx pair of magics. These work
4404 like the csh rehash command, and can be invoked at any time. They
4408 like the csh rehash command, and can be invoked at any time. They
4405 build a table of aliases to everything in the user's $PATH
4409 build a table of aliases to everything in the user's $PATH
4406 (@rehash uses everything, @rehashx is slower but only adds
4410 (@rehash uses everything, @rehashx is slower but only adds
4407 executable files). With this, the pysh.py-based shell profile can
4411 executable files). With this, the pysh.py-based shell profile can
4408 now simply call rehash upon startup, and full access to all
4412 now simply call rehash upon startup, and full access to all
4409 programs in the user's path is obtained.
4413 programs in the user's path is obtained.
4410
4414
4411 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4415 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4412 functionality is now fully in place. I removed the old dynamic
4416 functionality is now fully in place. I removed the old dynamic
4413 code generation based approach, in favor of a much lighter one
4417 code generation based approach, in favor of a much lighter one
4414 based on a simple dict. The advantage is that this allows me to
4418 based on a simple dict. The advantage is that this allows me to
4415 now have thousands of aliases with negligible cost (unthinkable
4419 now have thousands of aliases with negligible cost (unthinkable
4416 with the old system).
4420 with the old system).
4417
4421
4418 2004-06-19 Fernando Perez <fperez@colorado.edu>
4422 2004-06-19 Fernando Perez <fperez@colorado.edu>
4419
4423
4420 * IPython/iplib.py (__init__): extended MagicCompleter class to
4424 * IPython/iplib.py (__init__): extended MagicCompleter class to
4421 also complete (last in priority) on user aliases.
4425 also complete (last in priority) on user aliases.
4422
4426
4423 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4427 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4424 call to eval.
4428 call to eval.
4425 (ItplNS.__init__): Added a new class which functions like Itpl,
4429 (ItplNS.__init__): Added a new class which functions like Itpl,
4426 but allows configuring the namespace for the evaluation to occur
4430 but allows configuring the namespace for the evaluation to occur
4427 in.
4431 in.
4428
4432
4429 2004-06-18 Fernando Perez <fperez@colorado.edu>
4433 2004-06-18 Fernando Perez <fperez@colorado.edu>
4430
4434
4431 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4435 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4432 better message when 'exit' or 'quit' are typed (a common newbie
4436 better message when 'exit' or 'quit' are typed (a common newbie
4433 confusion).
4437 confusion).
4434
4438
4435 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4439 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4436 check for Windows users.
4440 check for Windows users.
4437
4441
4438 * IPython/iplib.py (InteractiveShell.user_setup): removed
4442 * IPython/iplib.py (InteractiveShell.user_setup): removed
4439 disabling of colors for Windows. I'll test at runtime and issue a
4443 disabling of colors for Windows. I'll test at runtime and issue a
4440 warning if Gary's readline isn't found, as to nudge users to
4444 warning if Gary's readline isn't found, as to nudge users to
4441 download it.
4445 download it.
4442
4446
4443 2004-06-16 Fernando Perez <fperez@colorado.edu>
4447 2004-06-16 Fernando Perez <fperez@colorado.edu>
4444
4448
4445 * IPython/genutils.py (Stream.__init__): changed to print errors
4449 * IPython/genutils.py (Stream.__init__): changed to print errors
4446 to sys.stderr. I had a circular dependency here. Now it's
4450 to sys.stderr. I had a circular dependency here. Now it's
4447 possible to run ipython as IDLE's shell (consider this pre-alpha,
4451 possible to run ipython as IDLE's shell (consider this pre-alpha,
4448 since true stdout things end up in the starting terminal instead
4452 since true stdout things end up in the starting terminal instead
4449 of IDLE's out).
4453 of IDLE's out).
4450
4454
4451 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4455 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4452 users who haven't # updated their prompt_in2 definitions. Remove
4456 users who haven't # updated their prompt_in2 definitions. Remove
4453 eventually.
4457 eventually.
4454 (multiple_replace): added credit to original ASPN recipe.
4458 (multiple_replace): added credit to original ASPN recipe.
4455
4459
4456 2004-06-15 Fernando Perez <fperez@colorado.edu>
4460 2004-06-15 Fernando Perez <fperez@colorado.edu>
4457
4461
4458 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4462 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4459 list of auto-defined aliases.
4463 list of auto-defined aliases.
4460
4464
4461 2004-06-13 Fernando Perez <fperez@colorado.edu>
4465 2004-06-13 Fernando Perez <fperez@colorado.edu>
4462
4466
4463 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4467 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4464 install was really requested (so setup.py can be used for other
4468 install was really requested (so setup.py can be used for other
4465 things under Windows).
4469 things under Windows).
4466
4470
4467 2004-06-10 Fernando Perez <fperez@colorado.edu>
4471 2004-06-10 Fernando Perez <fperez@colorado.edu>
4468
4472
4469 * IPython/Logger.py (Logger.create_log): Manually remove any old
4473 * IPython/Logger.py (Logger.create_log): Manually remove any old
4470 backup, since os.remove may fail under Windows. Fixes bug
4474 backup, since os.remove may fail under Windows. Fixes bug
4471 reported by Thorsten.
4475 reported by Thorsten.
4472
4476
4473 2004-06-09 Fernando Perez <fperez@colorado.edu>
4477 2004-06-09 Fernando Perez <fperez@colorado.edu>
4474
4478
4475 * examples/example-embed.py: fixed all references to %n (replaced
4479 * examples/example-embed.py: fixed all references to %n (replaced
4476 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4480 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4477 for all examples and the manual as well.
4481 for all examples and the manual as well.
4478
4482
4479 2004-06-08 Fernando Perez <fperez@colorado.edu>
4483 2004-06-08 Fernando Perez <fperez@colorado.edu>
4480
4484
4481 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4485 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4482 alignment and color management. All 3 prompt subsystems now
4486 alignment and color management. All 3 prompt subsystems now
4483 inherit from BasePrompt.
4487 inherit from BasePrompt.
4484
4488
4485 * tools/release: updates for windows installer build and tag rpms
4489 * tools/release: updates for windows installer build and tag rpms
4486 with python version (since paths are fixed).
4490 with python version (since paths are fixed).
4487
4491
4488 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4492 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4489 which will become eventually obsolete. Also fixed the default
4493 which will become eventually obsolete. Also fixed the default
4490 prompt_in2 to use \D, so at least new users start with the correct
4494 prompt_in2 to use \D, so at least new users start with the correct
4491 defaults.
4495 defaults.
4492 WARNING: Users with existing ipythonrc files will need to apply
4496 WARNING: Users with existing ipythonrc files will need to apply
4493 this fix manually!
4497 this fix manually!
4494
4498
4495 * setup.py: make windows installer (.exe). This is finally the
4499 * setup.py: make windows installer (.exe). This is finally the
4496 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4500 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4497 which I hadn't included because it required Python 2.3 (or recent
4501 which I hadn't included because it required Python 2.3 (or recent
4498 distutils).
4502 distutils).
4499
4503
4500 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4504 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4501 usage of new '\D' escape.
4505 usage of new '\D' escape.
4502
4506
4503 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4507 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4504 lacks os.getuid())
4508 lacks os.getuid())
4505 (CachedOutput.set_colors): Added the ability to turn coloring
4509 (CachedOutput.set_colors): Added the ability to turn coloring
4506 on/off with @colors even for manually defined prompt colors. It
4510 on/off with @colors even for manually defined prompt colors. It
4507 uses a nasty global, but it works safely and via the generic color
4511 uses a nasty global, but it works safely and via the generic color
4508 handling mechanism.
4512 handling mechanism.
4509 (Prompt2.__init__): Introduced new escape '\D' for continuation
4513 (Prompt2.__init__): Introduced new escape '\D' for continuation
4510 prompts. It represents the counter ('\#') as dots.
4514 prompts. It represents the counter ('\#') as dots.
4511 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4515 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4512 need to update their ipythonrc files and replace '%n' with '\D' in
4516 need to update their ipythonrc files and replace '%n' with '\D' in
4513 their prompt_in2 settings everywhere. Sorry, but there's
4517 their prompt_in2 settings everywhere. Sorry, but there's
4514 otherwise no clean way to get all prompts to properly align. The
4518 otherwise no clean way to get all prompts to properly align. The
4515 ipythonrc shipped with IPython has been updated.
4519 ipythonrc shipped with IPython has been updated.
4516
4520
4517 2004-06-07 Fernando Perez <fperez@colorado.edu>
4521 2004-06-07 Fernando Perez <fperez@colorado.edu>
4518
4522
4519 * setup.py (isfile): Pass local_icons option to latex2html, so the
4523 * setup.py (isfile): Pass local_icons option to latex2html, so the
4520 resulting HTML file is self-contained. Thanks to
4524 resulting HTML file is self-contained. Thanks to
4521 dryice-AT-liu.com.cn for the tip.
4525 dryice-AT-liu.com.cn for the tip.
4522
4526
4523 * pysh.py: I created a new profile 'shell', which implements a
4527 * pysh.py: I created a new profile 'shell', which implements a
4524 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4528 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4525 system shell, nor will it become one anytime soon. It's mainly
4529 system shell, nor will it become one anytime soon. It's mainly
4526 meant to illustrate the use of the new flexible bash-like prompts.
4530 meant to illustrate the use of the new flexible bash-like prompts.
4527 I guess it could be used by hardy souls for true shell management,
4531 I guess it could be used by hardy souls for true shell management,
4528 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4532 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4529 profile. This uses the InterpreterExec extension provided by
4533 profile. This uses the InterpreterExec extension provided by
4530 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4534 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4531
4535
4532 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4536 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4533 auto-align itself with the length of the previous input prompt
4537 auto-align itself with the length of the previous input prompt
4534 (taking into account the invisible color escapes).
4538 (taking into account the invisible color escapes).
4535 (CachedOutput.__init__): Large restructuring of this class. Now
4539 (CachedOutput.__init__): Large restructuring of this class. Now
4536 all three prompts (primary1, primary2, output) are proper objects,
4540 all three prompts (primary1, primary2, output) are proper objects,
4537 managed by the 'parent' CachedOutput class. The code is still a
4541 managed by the 'parent' CachedOutput class. The code is still a
4538 bit hackish (all prompts share state via a pointer to the cache),
4542 bit hackish (all prompts share state via a pointer to the cache),
4539 but it's overall far cleaner than before.
4543 but it's overall far cleaner than before.
4540
4544
4541 * IPython/genutils.py (getoutputerror): modified to add verbose,
4545 * IPython/genutils.py (getoutputerror): modified to add verbose,
4542 debug and header options. This makes the interface of all getout*
4546 debug and header options. This makes the interface of all getout*
4543 functions uniform.
4547 functions uniform.
4544 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4548 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4545
4549
4546 * IPython/Magic.py (Magic.default_option): added a function to
4550 * IPython/Magic.py (Magic.default_option): added a function to
4547 allow registering default options for any magic command. This
4551 allow registering default options for any magic command. This
4548 makes it easy to have profiles which customize the magics globally
4552 makes it easy to have profiles which customize the magics globally
4549 for a certain use. The values set through this function are
4553 for a certain use. The values set through this function are
4550 picked up by the parse_options() method, which all magics should
4554 picked up by the parse_options() method, which all magics should
4551 use to parse their options.
4555 use to parse their options.
4552
4556
4553 * IPython/genutils.py (warn): modified the warnings framework to
4557 * IPython/genutils.py (warn): modified the warnings framework to
4554 use the Term I/O class. I'm trying to slowly unify all of
4558 use the Term I/O class. I'm trying to slowly unify all of
4555 IPython's I/O operations to pass through Term.
4559 IPython's I/O operations to pass through Term.
4556
4560
4557 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4561 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4558 the secondary prompt to correctly match the length of the primary
4562 the secondary prompt to correctly match the length of the primary
4559 one for any prompt. Now multi-line code will properly line up
4563 one for any prompt. Now multi-line code will properly line up
4560 even for path dependent prompts, such as the new ones available
4564 even for path dependent prompts, such as the new ones available
4561 via the prompt_specials.
4565 via the prompt_specials.
4562
4566
4563 2004-06-06 Fernando Perez <fperez@colorado.edu>
4567 2004-06-06 Fernando Perez <fperez@colorado.edu>
4564
4568
4565 * IPython/Prompts.py (prompt_specials): Added the ability to have
4569 * IPython/Prompts.py (prompt_specials): Added the ability to have
4566 bash-like special sequences in the prompts, which get
4570 bash-like special sequences in the prompts, which get
4567 automatically expanded. Things like hostname, current working
4571 automatically expanded. Things like hostname, current working
4568 directory and username are implemented already, but it's easy to
4572 directory and username are implemented already, but it's easy to
4569 add more in the future. Thanks to a patch by W.J. van der Laan
4573 add more in the future. Thanks to a patch by W.J. van der Laan
4570 <gnufnork-AT-hetdigitalegat.nl>
4574 <gnufnork-AT-hetdigitalegat.nl>
4571 (prompt_specials): Added color support for prompt strings, so
4575 (prompt_specials): Added color support for prompt strings, so
4572 users can define arbitrary color setups for their prompts.
4576 users can define arbitrary color setups for their prompts.
4573
4577
4574 2004-06-05 Fernando Perez <fperez@colorado.edu>
4578 2004-06-05 Fernando Perez <fperez@colorado.edu>
4575
4579
4576 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4580 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4577 code to load Gary Bishop's readline and configure it
4581 code to load Gary Bishop's readline and configure it
4578 automatically. Thanks to Gary for help on this.
4582 automatically. Thanks to Gary for help on this.
4579
4583
4580 2004-06-01 Fernando Perez <fperez@colorado.edu>
4584 2004-06-01 Fernando Perez <fperez@colorado.edu>
4581
4585
4582 * IPython/Logger.py (Logger.create_log): fix bug for logging
4586 * IPython/Logger.py (Logger.create_log): fix bug for logging
4583 with no filename (previous fix was incomplete).
4587 with no filename (previous fix was incomplete).
4584
4588
4585 2004-05-25 Fernando Perez <fperez@colorado.edu>
4589 2004-05-25 Fernando Perez <fperez@colorado.edu>
4586
4590
4587 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4591 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4588 parens would get passed to the shell.
4592 parens would get passed to the shell.
4589
4593
4590 2004-05-20 Fernando Perez <fperez@colorado.edu>
4594 2004-05-20 Fernando Perez <fperez@colorado.edu>
4591
4595
4592 * IPython/Magic.py (Magic.magic_prun): changed default profile
4596 * IPython/Magic.py (Magic.magic_prun): changed default profile
4593 sort order to 'time' (the more common profiling need).
4597 sort order to 'time' (the more common profiling need).
4594
4598
4595 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4599 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4596 so that source code shown is guaranteed in sync with the file on
4600 so that source code shown is guaranteed in sync with the file on
4597 disk (also changed in psource). Similar fix to the one for
4601 disk (also changed in psource). Similar fix to the one for
4598 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4602 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4599 <yann.ledu-AT-noos.fr>.
4603 <yann.ledu-AT-noos.fr>.
4600
4604
4601 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4605 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4602 with a single option would not be correctly parsed. Closes
4606 with a single option would not be correctly parsed. Closes
4603 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4607 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4604 introduced in 0.6.0 (on 2004-05-06).
4608 introduced in 0.6.0 (on 2004-05-06).
4605
4609
4606 2004-05-13 *** Released version 0.6.0
4610 2004-05-13 *** Released version 0.6.0
4607
4611
4608 2004-05-13 Fernando Perez <fperez@colorado.edu>
4612 2004-05-13 Fernando Perez <fperez@colorado.edu>
4609
4613
4610 * debian/: Added debian/ directory to CVS, so that debian support
4614 * debian/: Added debian/ directory to CVS, so that debian support
4611 is publicly accessible. The debian package is maintained by Jack
4615 is publicly accessible. The debian package is maintained by Jack
4612 Moffit <jack-AT-xiph.org>.
4616 Moffit <jack-AT-xiph.org>.
4613
4617
4614 * Documentation: included the notes about an ipython-based system
4618 * Documentation: included the notes about an ipython-based system
4615 shell (the hypothetical 'pysh') into the new_design.pdf document,
4619 shell (the hypothetical 'pysh') into the new_design.pdf document,
4616 so that these ideas get distributed to users along with the
4620 so that these ideas get distributed to users along with the
4617 official documentation.
4621 official documentation.
4618
4622
4619 2004-05-10 Fernando Perez <fperez@colorado.edu>
4623 2004-05-10 Fernando Perez <fperez@colorado.edu>
4620
4624
4621 * IPython/Logger.py (Logger.create_log): fix recently introduced
4625 * IPython/Logger.py (Logger.create_log): fix recently introduced
4622 bug (misindented line) where logstart would fail when not given an
4626 bug (misindented line) where logstart would fail when not given an
4623 explicit filename.
4627 explicit filename.
4624
4628
4625 2004-05-09 Fernando Perez <fperez@colorado.edu>
4629 2004-05-09 Fernando Perez <fperez@colorado.edu>
4626
4630
4627 * IPython/Magic.py (Magic.parse_options): skip system call when
4631 * IPython/Magic.py (Magic.parse_options): skip system call when
4628 there are no options to look for. Faster, cleaner for the common
4632 there are no options to look for. Faster, cleaner for the common
4629 case.
4633 case.
4630
4634
4631 * Documentation: many updates to the manual: describing Windows
4635 * Documentation: many updates to the manual: describing Windows
4632 support better, Gnuplot updates, credits, misc small stuff. Also
4636 support better, Gnuplot updates, credits, misc small stuff. Also
4633 updated the new_design doc a bit.
4637 updated the new_design doc a bit.
4634
4638
4635 2004-05-06 *** Released version 0.6.0.rc1
4639 2004-05-06 *** Released version 0.6.0.rc1
4636
4640
4637 2004-05-06 Fernando Perez <fperez@colorado.edu>
4641 2004-05-06 Fernando Perez <fperez@colorado.edu>
4638
4642
4639 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4643 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4640 operations to use the vastly more efficient list/''.join() method.
4644 operations to use the vastly more efficient list/''.join() method.
4641 (FormattedTB.text): Fix
4645 (FormattedTB.text): Fix
4642 http://www.scipy.net/roundup/ipython/issue12 - exception source
4646 http://www.scipy.net/roundup/ipython/issue12 - exception source
4643 extract not updated after reload. Thanks to Mike Salib
4647 extract not updated after reload. Thanks to Mike Salib
4644 <msalib-AT-mit.edu> for pinning the source of the problem.
4648 <msalib-AT-mit.edu> for pinning the source of the problem.
4645 Fortunately, the solution works inside ipython and doesn't require
4649 Fortunately, the solution works inside ipython and doesn't require
4646 any changes to python proper.
4650 any changes to python proper.
4647
4651
4648 * IPython/Magic.py (Magic.parse_options): Improved to process the
4652 * IPython/Magic.py (Magic.parse_options): Improved to process the
4649 argument list as a true shell would (by actually using the
4653 argument list as a true shell would (by actually using the
4650 underlying system shell). This way, all @magics automatically get
4654 underlying system shell). This way, all @magics automatically get
4651 shell expansion for variables. Thanks to a comment by Alex
4655 shell expansion for variables. Thanks to a comment by Alex
4652 Schmolck.
4656 Schmolck.
4653
4657
4654 2004-04-04 Fernando Perez <fperez@colorado.edu>
4658 2004-04-04 Fernando Perez <fperez@colorado.edu>
4655
4659
4656 * IPython/iplib.py (InteractiveShell.interact): Added a special
4660 * IPython/iplib.py (InteractiveShell.interact): Added a special
4657 trap for a debugger quit exception, which is basically impossible
4661 trap for a debugger quit exception, which is basically impossible
4658 to handle by normal mechanisms, given what pdb does to the stack.
4662 to handle by normal mechanisms, given what pdb does to the stack.
4659 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4663 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4660
4664
4661 2004-04-03 Fernando Perez <fperez@colorado.edu>
4665 2004-04-03 Fernando Perez <fperez@colorado.edu>
4662
4666
4663 * IPython/genutils.py (Term): Standardized the names of the Term
4667 * IPython/genutils.py (Term): Standardized the names of the Term
4664 class streams to cin/cout/cerr, following C++ naming conventions
4668 class streams to cin/cout/cerr, following C++ naming conventions
4665 (I can't use in/out/err because 'in' is not a valid attribute
4669 (I can't use in/out/err because 'in' is not a valid attribute
4666 name).
4670 name).
4667
4671
4668 * IPython/iplib.py (InteractiveShell.interact): don't increment
4672 * IPython/iplib.py (InteractiveShell.interact): don't increment
4669 the prompt if there's no user input. By Daniel 'Dang' Griffith
4673 the prompt if there's no user input. By Daniel 'Dang' Griffith
4670 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4674 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4671 Francois Pinard.
4675 Francois Pinard.
4672
4676
4673 2004-04-02 Fernando Perez <fperez@colorado.edu>
4677 2004-04-02 Fernando Perez <fperez@colorado.edu>
4674
4678
4675 * IPython/genutils.py (Stream.__init__): Modified to survive at
4679 * IPython/genutils.py (Stream.__init__): Modified to survive at
4676 least importing in contexts where stdin/out/err aren't true file
4680 least importing in contexts where stdin/out/err aren't true file
4677 objects, such as PyCrust (they lack fileno() and mode). However,
4681 objects, such as PyCrust (they lack fileno() and mode). However,
4678 the recovery facilities which rely on these things existing will
4682 the recovery facilities which rely on these things existing will
4679 not work.
4683 not work.
4680
4684
4681 2004-04-01 Fernando Perez <fperez@colorado.edu>
4685 2004-04-01 Fernando Perez <fperez@colorado.edu>
4682
4686
4683 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4687 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4684 use the new getoutputerror() function, so it properly
4688 use the new getoutputerror() function, so it properly
4685 distinguishes stdout/err.
4689 distinguishes stdout/err.
4686
4690
4687 * IPython/genutils.py (getoutputerror): added a function to
4691 * IPython/genutils.py (getoutputerror): added a function to
4688 capture separately the standard output and error of a command.
4692 capture separately the standard output and error of a command.
4689 After a comment from dang on the mailing lists. This code is
4693 After a comment from dang on the mailing lists. This code is
4690 basically a modified version of commands.getstatusoutput(), from
4694 basically a modified version of commands.getstatusoutput(), from
4691 the standard library.
4695 the standard library.
4692
4696
4693 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4697 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4694 '!!' as a special syntax (shorthand) to access @sx.
4698 '!!' as a special syntax (shorthand) to access @sx.
4695
4699
4696 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4700 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4697 command and return its output as a list split on '\n'.
4701 command and return its output as a list split on '\n'.
4698
4702
4699 2004-03-31 Fernando Perez <fperez@colorado.edu>
4703 2004-03-31 Fernando Perez <fperez@colorado.edu>
4700
4704
4701 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4705 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4702 method to dictionaries used as FakeModule instances if they lack
4706 method to dictionaries used as FakeModule instances if they lack
4703 it. At least pydoc in python2.3 breaks for runtime-defined
4707 it. At least pydoc in python2.3 breaks for runtime-defined
4704 functions without this hack. At some point I need to _really_
4708 functions without this hack. At some point I need to _really_
4705 understand what FakeModule is doing, because it's a gross hack.
4709 understand what FakeModule is doing, because it's a gross hack.
4706 But it solves Arnd's problem for now...
4710 But it solves Arnd's problem for now...
4707
4711
4708 2004-02-27 Fernando Perez <fperez@colorado.edu>
4712 2004-02-27 Fernando Perez <fperez@colorado.edu>
4709
4713
4710 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4714 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4711 mode would behave erratically. Also increased the number of
4715 mode would behave erratically. Also increased the number of
4712 possible logs in rotate mod to 999. Thanks to Rod Holland
4716 possible logs in rotate mod to 999. Thanks to Rod Holland
4713 <rhh@StructureLABS.com> for the report and fixes.
4717 <rhh@StructureLABS.com> for the report and fixes.
4714
4718
4715 2004-02-26 Fernando Perez <fperez@colorado.edu>
4719 2004-02-26 Fernando Perez <fperez@colorado.edu>
4716
4720
4717 * IPython/genutils.py (page): Check that the curses module really
4721 * IPython/genutils.py (page): Check that the curses module really
4718 has the initscr attribute before trying to use it. For some
4722 has the initscr attribute before trying to use it. For some
4719 reason, the Solaris curses module is missing this. I think this
4723 reason, the Solaris curses module is missing this. I think this
4720 should be considered a Solaris python bug, but I'm not sure.
4724 should be considered a Solaris python bug, but I'm not sure.
4721
4725
4722 2004-01-17 Fernando Perez <fperez@colorado.edu>
4726 2004-01-17 Fernando Perez <fperez@colorado.edu>
4723
4727
4724 * IPython/genutils.py (Stream.__init__): Changes to try to make
4728 * IPython/genutils.py (Stream.__init__): Changes to try to make
4725 ipython robust against stdin/out/err being closed by the user.
4729 ipython robust against stdin/out/err being closed by the user.
4726 This is 'user error' (and blocks a normal python session, at least
4730 This is 'user error' (and blocks a normal python session, at least
4727 the stdout case). However, Ipython should be able to survive such
4731 the stdout case). However, Ipython should be able to survive such
4728 instances of abuse as gracefully as possible. To simplify the
4732 instances of abuse as gracefully as possible. To simplify the
4729 coding and maintain compatibility with Gary Bishop's Term
4733 coding and maintain compatibility with Gary Bishop's Term
4730 contributions, I've made use of classmethods for this. I think
4734 contributions, I've made use of classmethods for this. I think
4731 this introduces a dependency on python 2.2.
4735 this introduces a dependency on python 2.2.
4732
4736
4733 2004-01-13 Fernando Perez <fperez@colorado.edu>
4737 2004-01-13 Fernando Perez <fperez@colorado.edu>
4734
4738
4735 * IPython/numutils.py (exp_safe): simplified the code a bit and
4739 * IPython/numutils.py (exp_safe): simplified the code a bit and
4736 removed the need for importing the kinds module altogether.
4740 removed the need for importing the kinds module altogether.
4737
4741
4738 2004-01-06 Fernando Perez <fperez@colorado.edu>
4742 2004-01-06 Fernando Perez <fperez@colorado.edu>
4739
4743
4740 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4744 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4741 a magic function instead, after some community feedback. No
4745 a magic function instead, after some community feedback. No
4742 special syntax will exist for it, but its name is deliberately
4746 special syntax will exist for it, but its name is deliberately
4743 very short.
4747 very short.
4744
4748
4745 2003-12-20 Fernando Perez <fperez@colorado.edu>
4749 2003-12-20 Fernando Perez <fperez@colorado.edu>
4746
4750
4747 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4751 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4748 new functionality, to automagically assign the result of a shell
4752 new functionality, to automagically assign the result of a shell
4749 command to a variable. I'll solicit some community feedback on
4753 command to a variable. I'll solicit some community feedback on
4750 this before making it permanent.
4754 this before making it permanent.
4751
4755
4752 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4756 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4753 requested about callables for which inspect couldn't obtain a
4757 requested about callables for which inspect couldn't obtain a
4754 proper argspec. Thanks to a crash report sent by Etienne
4758 proper argspec. Thanks to a crash report sent by Etienne
4755 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4759 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4756
4760
4757 2003-12-09 Fernando Perez <fperez@colorado.edu>
4761 2003-12-09 Fernando Perez <fperez@colorado.edu>
4758
4762
4759 * IPython/genutils.py (page): patch for the pager to work across
4763 * IPython/genutils.py (page): patch for the pager to work across
4760 various versions of Windows. By Gary Bishop.
4764 various versions of Windows. By Gary Bishop.
4761
4765
4762 2003-12-04 Fernando Perez <fperez@colorado.edu>
4766 2003-12-04 Fernando Perez <fperez@colorado.edu>
4763
4767
4764 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4768 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4765 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4769 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4766 While I tested this and it looks ok, there may still be corner
4770 While I tested this and it looks ok, there may still be corner
4767 cases I've missed.
4771 cases I've missed.
4768
4772
4769 2003-12-01 Fernando Perez <fperez@colorado.edu>
4773 2003-12-01 Fernando Perez <fperez@colorado.edu>
4770
4774
4771 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4775 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4772 where a line like 'p,q=1,2' would fail because the automagic
4776 where a line like 'p,q=1,2' would fail because the automagic
4773 system would be triggered for @p.
4777 system would be triggered for @p.
4774
4778
4775 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4779 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4776 cleanups, code unmodified.
4780 cleanups, code unmodified.
4777
4781
4778 * IPython/genutils.py (Term): added a class for IPython to handle
4782 * IPython/genutils.py (Term): added a class for IPython to handle
4779 output. In most cases it will just be a proxy for stdout/err, but
4783 output. In most cases it will just be a proxy for stdout/err, but
4780 having this allows modifications to be made for some platforms,
4784 having this allows modifications to be made for some platforms,
4781 such as handling color escapes under Windows. All of this code
4785 such as handling color escapes under Windows. All of this code
4782 was contributed by Gary Bishop, with minor modifications by me.
4786 was contributed by Gary Bishop, with minor modifications by me.
4783 The actual changes affect many files.
4787 The actual changes affect many files.
4784
4788
4785 2003-11-30 Fernando Perez <fperez@colorado.edu>
4789 2003-11-30 Fernando Perez <fperez@colorado.edu>
4786
4790
4787 * IPython/iplib.py (file_matches): new completion code, courtesy
4791 * IPython/iplib.py (file_matches): new completion code, courtesy
4788 of Jeff Collins. This enables filename completion again under
4792 of Jeff Collins. This enables filename completion again under
4789 python 2.3, which disabled it at the C level.
4793 python 2.3, which disabled it at the C level.
4790
4794
4791 2003-11-11 Fernando Perez <fperez@colorado.edu>
4795 2003-11-11 Fernando Perez <fperez@colorado.edu>
4792
4796
4793 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4797 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4794 for Numeric.array(map(...)), but often convenient.
4798 for Numeric.array(map(...)), but often convenient.
4795
4799
4796 2003-11-05 Fernando Perez <fperez@colorado.edu>
4800 2003-11-05 Fernando Perez <fperez@colorado.edu>
4797
4801
4798 * IPython/numutils.py (frange): Changed a call from int() to
4802 * IPython/numutils.py (frange): Changed a call from int() to
4799 int(round()) to prevent a problem reported with arange() in the
4803 int(round()) to prevent a problem reported with arange() in the
4800 numpy list.
4804 numpy list.
4801
4805
4802 2003-10-06 Fernando Perez <fperez@colorado.edu>
4806 2003-10-06 Fernando Perez <fperez@colorado.edu>
4803
4807
4804 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4808 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4805 prevent crashes if sys lacks an argv attribute (it happens with
4809 prevent crashes if sys lacks an argv attribute (it happens with
4806 embedded interpreters which build a bare-bones sys module).
4810 embedded interpreters which build a bare-bones sys module).
4807 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4811 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4808
4812
4809 2003-09-24 Fernando Perez <fperez@colorado.edu>
4813 2003-09-24 Fernando Perez <fperez@colorado.edu>
4810
4814
4811 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4815 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4812 to protect against poorly written user objects where __getattr__
4816 to protect against poorly written user objects where __getattr__
4813 raises exceptions other than AttributeError. Thanks to a bug
4817 raises exceptions other than AttributeError. Thanks to a bug
4814 report by Oliver Sander <osander-AT-gmx.de>.
4818 report by Oliver Sander <osander-AT-gmx.de>.
4815
4819
4816 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4820 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4817 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4821 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4818
4822
4819 2003-09-09 Fernando Perez <fperez@colorado.edu>
4823 2003-09-09 Fernando Perez <fperez@colorado.edu>
4820
4824
4821 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4825 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4822 unpacking a list whith a callable as first element would
4826 unpacking a list whith a callable as first element would
4823 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4827 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4824 Collins.
4828 Collins.
4825
4829
4826 2003-08-25 *** Released version 0.5.0
4830 2003-08-25 *** Released version 0.5.0
4827
4831
4828 2003-08-22 Fernando Perez <fperez@colorado.edu>
4832 2003-08-22 Fernando Perez <fperez@colorado.edu>
4829
4833
4830 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4834 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4831 improperly defined user exceptions. Thanks to feedback from Mark
4835 improperly defined user exceptions. Thanks to feedback from Mark
4832 Russell <mrussell-AT-verio.net>.
4836 Russell <mrussell-AT-verio.net>.
4833
4837
4834 2003-08-20 Fernando Perez <fperez@colorado.edu>
4838 2003-08-20 Fernando Perez <fperez@colorado.edu>
4835
4839
4836 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4840 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4837 printing so that it would print multi-line string forms starting
4841 printing so that it would print multi-line string forms starting
4838 with a new line. This way the formatting is better respected for
4842 with a new line. This way the formatting is better respected for
4839 objects which work hard to make nice string forms.
4843 objects which work hard to make nice string forms.
4840
4844
4841 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4845 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4842 autocall would overtake data access for objects with both
4846 autocall would overtake data access for objects with both
4843 __getitem__ and __call__.
4847 __getitem__ and __call__.
4844
4848
4845 2003-08-19 *** Released version 0.5.0-rc1
4849 2003-08-19 *** Released version 0.5.0-rc1
4846
4850
4847 2003-08-19 Fernando Perez <fperez@colorado.edu>
4851 2003-08-19 Fernando Perez <fperez@colorado.edu>
4848
4852
4849 * IPython/deep_reload.py (load_tail): single tiny change here
4853 * IPython/deep_reload.py (load_tail): single tiny change here
4850 seems to fix the long-standing bug of dreload() failing to work
4854 seems to fix the long-standing bug of dreload() failing to work
4851 for dotted names. But this module is pretty tricky, so I may have
4855 for dotted names. But this module is pretty tricky, so I may have
4852 missed some subtlety. Needs more testing!.
4856 missed some subtlety. Needs more testing!.
4853
4857
4854 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4858 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4855 exceptions which have badly implemented __str__ methods.
4859 exceptions which have badly implemented __str__ methods.
4856 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4860 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4857 which I've been getting reports about from Python 2.3 users. I
4861 which I've been getting reports about from Python 2.3 users. I
4858 wish I had a simple test case to reproduce the problem, so I could
4862 wish I had a simple test case to reproduce the problem, so I could
4859 either write a cleaner workaround or file a bug report if
4863 either write a cleaner workaround or file a bug report if
4860 necessary.
4864 necessary.
4861
4865
4862 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4866 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4863 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4867 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4864 a bug report by Tjabo Kloppenburg.
4868 a bug report by Tjabo Kloppenburg.
4865
4869
4866 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4870 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4867 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4871 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4868 seems rather unstable. Thanks to a bug report by Tjabo
4872 seems rather unstable. Thanks to a bug report by Tjabo
4869 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4873 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4870
4874
4871 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4875 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4872 this out soon because of the critical fixes in the inner loop for
4876 this out soon because of the critical fixes in the inner loop for
4873 generators.
4877 generators.
4874
4878
4875 * IPython/Magic.py (Magic.getargspec): removed. This (and
4879 * IPython/Magic.py (Magic.getargspec): removed. This (and
4876 _get_def) have been obsoleted by OInspect for a long time, I
4880 _get_def) have been obsoleted by OInspect for a long time, I
4877 hadn't noticed that they were dead code.
4881 hadn't noticed that they were dead code.
4878 (Magic._ofind): restored _ofind functionality for a few literals
4882 (Magic._ofind): restored _ofind functionality for a few literals
4879 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4883 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4880 for things like "hello".capitalize?, since that would require a
4884 for things like "hello".capitalize?, since that would require a
4881 potentially dangerous eval() again.
4885 potentially dangerous eval() again.
4882
4886
4883 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4887 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4884 logic a bit more to clean up the escapes handling and minimize the
4888 logic a bit more to clean up the escapes handling and minimize the
4885 use of _ofind to only necessary cases. The interactive 'feel' of
4889 use of _ofind to only necessary cases. The interactive 'feel' of
4886 IPython should have improved quite a bit with the changes in
4890 IPython should have improved quite a bit with the changes in
4887 _prefilter and _ofind (besides being far safer than before).
4891 _prefilter and _ofind (besides being far safer than before).
4888
4892
4889 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4893 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4890 obscure, never reported). Edit would fail to find the object to
4894 obscure, never reported). Edit would fail to find the object to
4891 edit under some circumstances.
4895 edit under some circumstances.
4892 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4896 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4893 which were causing double-calling of generators. Those eval calls
4897 which were causing double-calling of generators. Those eval calls
4894 were _very_ dangerous, since code with side effects could be
4898 were _very_ dangerous, since code with side effects could be
4895 triggered. As they say, 'eval is evil'... These were the
4899 triggered. As they say, 'eval is evil'... These were the
4896 nastiest evals in IPython. Besides, _ofind is now far simpler,
4900 nastiest evals in IPython. Besides, _ofind is now far simpler,
4897 and it should also be quite a bit faster. Its use of inspect is
4901 and it should also be quite a bit faster. Its use of inspect is
4898 also safer, so perhaps some of the inspect-related crashes I've
4902 also safer, so perhaps some of the inspect-related crashes I've
4899 seen lately with Python 2.3 might be taken care of. That will
4903 seen lately with Python 2.3 might be taken care of. That will
4900 need more testing.
4904 need more testing.
4901
4905
4902 2003-08-17 Fernando Perez <fperez@colorado.edu>
4906 2003-08-17 Fernando Perez <fperez@colorado.edu>
4903
4907
4904 * IPython/iplib.py (InteractiveShell._prefilter): significant
4908 * IPython/iplib.py (InteractiveShell._prefilter): significant
4905 simplifications to the logic for handling user escapes. Faster
4909 simplifications to the logic for handling user escapes. Faster
4906 and simpler code.
4910 and simpler code.
4907
4911
4908 2003-08-14 Fernando Perez <fperez@colorado.edu>
4912 2003-08-14 Fernando Perez <fperez@colorado.edu>
4909
4913
4910 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4914 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4911 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4915 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4912 but it should be quite a bit faster. And the recursive version
4916 but it should be quite a bit faster. And the recursive version
4913 generated O(log N) intermediate storage for all rank>1 arrays,
4917 generated O(log N) intermediate storage for all rank>1 arrays,
4914 even if they were contiguous.
4918 even if they were contiguous.
4915 (l1norm): Added this function.
4919 (l1norm): Added this function.
4916 (norm): Added this function for arbitrary norms (including
4920 (norm): Added this function for arbitrary norms (including
4917 l-infinity). l1 and l2 are still special cases for convenience
4921 l-infinity). l1 and l2 are still special cases for convenience
4918 and speed.
4922 and speed.
4919
4923
4920 2003-08-03 Fernando Perez <fperez@colorado.edu>
4924 2003-08-03 Fernando Perez <fperez@colorado.edu>
4921
4925
4922 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4926 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4923 exceptions, which now raise PendingDeprecationWarnings in Python
4927 exceptions, which now raise PendingDeprecationWarnings in Python
4924 2.3. There were some in Magic and some in Gnuplot2.
4928 2.3. There were some in Magic and some in Gnuplot2.
4925
4929
4926 2003-06-30 Fernando Perez <fperez@colorado.edu>
4930 2003-06-30 Fernando Perez <fperez@colorado.edu>
4927
4931
4928 * IPython/genutils.py (page): modified to call curses only for
4932 * IPython/genutils.py (page): modified to call curses only for
4929 terminals where TERM=='xterm'. After problems under many other
4933 terminals where TERM=='xterm'. After problems under many other
4930 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4934 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4931
4935
4932 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4936 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4933 would be triggered when readline was absent. This was just an old
4937 would be triggered when readline was absent. This was just an old
4934 debugging statement I'd forgotten to take out.
4938 debugging statement I'd forgotten to take out.
4935
4939
4936 2003-06-20 Fernando Perez <fperez@colorado.edu>
4940 2003-06-20 Fernando Perez <fperez@colorado.edu>
4937
4941
4938 * IPython/genutils.py (clock): modified to return only user time
4942 * IPython/genutils.py (clock): modified to return only user time
4939 (not counting system time), after a discussion on scipy. While
4943 (not counting system time), after a discussion on scipy. While
4940 system time may be a useful quantity occasionally, it may much
4944 system time may be a useful quantity occasionally, it may much
4941 more easily be skewed by occasional swapping or other similar
4945 more easily be skewed by occasional swapping or other similar
4942 activity.
4946 activity.
4943
4947
4944 2003-06-05 Fernando Perez <fperez@colorado.edu>
4948 2003-06-05 Fernando Perez <fperez@colorado.edu>
4945
4949
4946 * IPython/numutils.py (identity): new function, for building
4950 * IPython/numutils.py (identity): new function, for building
4947 arbitrary rank Kronecker deltas (mostly backwards compatible with
4951 arbitrary rank Kronecker deltas (mostly backwards compatible with
4948 Numeric.identity)
4952 Numeric.identity)
4949
4953
4950 2003-06-03 Fernando Perez <fperez@colorado.edu>
4954 2003-06-03 Fernando Perez <fperez@colorado.edu>
4951
4955
4952 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4956 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4953 arguments passed to magics with spaces, to allow trailing '\' to
4957 arguments passed to magics with spaces, to allow trailing '\' to
4954 work normally (mainly for Windows users).
4958 work normally (mainly for Windows users).
4955
4959
4956 2003-05-29 Fernando Perez <fperez@colorado.edu>
4960 2003-05-29 Fernando Perez <fperez@colorado.edu>
4957
4961
4958 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4962 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4959 instead of pydoc.help. This fixes a bizarre behavior where
4963 instead of pydoc.help. This fixes a bizarre behavior where
4960 printing '%s' % locals() would trigger the help system. Now
4964 printing '%s' % locals() would trigger the help system. Now
4961 ipython behaves like normal python does.
4965 ipython behaves like normal python does.
4962
4966
4963 Note that if one does 'from pydoc import help', the bizarre
4967 Note that if one does 'from pydoc import help', the bizarre
4964 behavior returns, but this will also happen in normal python, so
4968 behavior returns, but this will also happen in normal python, so
4965 it's not an ipython bug anymore (it has to do with how pydoc.help
4969 it's not an ipython bug anymore (it has to do with how pydoc.help
4966 is implemented).
4970 is implemented).
4967
4971
4968 2003-05-22 Fernando Perez <fperez@colorado.edu>
4972 2003-05-22 Fernando Perez <fperez@colorado.edu>
4969
4973
4970 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4974 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4971 return [] instead of None when nothing matches, also match to end
4975 return [] instead of None when nothing matches, also match to end
4972 of line. Patch by Gary Bishop.
4976 of line. Patch by Gary Bishop.
4973
4977
4974 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4978 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4975 protection as before, for files passed on the command line. This
4979 protection as before, for files passed on the command line. This
4976 prevents the CrashHandler from kicking in if user files call into
4980 prevents the CrashHandler from kicking in if user files call into
4977 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4981 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4978 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4982 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4979
4983
4980 2003-05-20 *** Released version 0.4.0
4984 2003-05-20 *** Released version 0.4.0
4981
4985
4982 2003-05-20 Fernando Perez <fperez@colorado.edu>
4986 2003-05-20 Fernando Perez <fperez@colorado.edu>
4983
4987
4984 * setup.py: added support for manpages. It's a bit hackish b/c of
4988 * setup.py: added support for manpages. It's a bit hackish b/c of
4985 a bug in the way the bdist_rpm distutils target handles gzipped
4989 a bug in the way the bdist_rpm distutils target handles gzipped
4986 manpages, but it works. After a patch by Jack.
4990 manpages, but it works. After a patch by Jack.
4987
4991
4988 2003-05-19 Fernando Perez <fperez@colorado.edu>
4992 2003-05-19 Fernando Perez <fperez@colorado.edu>
4989
4993
4990 * IPython/numutils.py: added a mockup of the kinds module, since
4994 * IPython/numutils.py: added a mockup of the kinds module, since
4991 it was recently removed from Numeric. This way, numutils will
4995 it was recently removed from Numeric. This way, numutils will
4992 work for all users even if they are missing kinds.
4996 work for all users even if they are missing kinds.
4993
4997
4994 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4998 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4995 failure, which can occur with SWIG-wrapped extensions. After a
4999 failure, which can occur with SWIG-wrapped extensions. After a
4996 crash report from Prabhu.
5000 crash report from Prabhu.
4997
5001
4998 2003-05-16 Fernando Perez <fperez@colorado.edu>
5002 2003-05-16 Fernando Perez <fperez@colorado.edu>
4999
5003
5000 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5004 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5001 protect ipython from user code which may call directly
5005 protect ipython from user code which may call directly
5002 sys.excepthook (this looks like an ipython crash to the user, even
5006 sys.excepthook (this looks like an ipython crash to the user, even
5003 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5007 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5004 This is especially important to help users of WxWindows, but may
5008 This is especially important to help users of WxWindows, but may
5005 also be useful in other cases.
5009 also be useful in other cases.
5006
5010
5007 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5011 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5008 an optional tb_offset to be specified, and to preserve exception
5012 an optional tb_offset to be specified, and to preserve exception
5009 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5013 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5010
5014
5011 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5015 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5012
5016
5013 2003-05-15 Fernando Perez <fperez@colorado.edu>
5017 2003-05-15 Fernando Perez <fperez@colorado.edu>
5014
5018
5015 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5019 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5016 installing for a new user under Windows.
5020 installing for a new user under Windows.
5017
5021
5018 2003-05-12 Fernando Perez <fperez@colorado.edu>
5022 2003-05-12 Fernando Perez <fperez@colorado.edu>
5019
5023
5020 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5024 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5021 handler for Emacs comint-based lines. Currently it doesn't do
5025 handler for Emacs comint-based lines. Currently it doesn't do
5022 much (but importantly, it doesn't update the history cache). In
5026 much (but importantly, it doesn't update the history cache). In
5023 the future it may be expanded if Alex needs more functionality
5027 the future it may be expanded if Alex needs more functionality
5024 there.
5028 there.
5025
5029
5026 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5030 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5027 info to crash reports.
5031 info to crash reports.
5028
5032
5029 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5033 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5030 just like Python's -c. Also fixed crash with invalid -color
5034 just like Python's -c. Also fixed crash with invalid -color
5031 option value at startup. Thanks to Will French
5035 option value at startup. Thanks to Will French
5032 <wfrench-AT-bestweb.net> for the bug report.
5036 <wfrench-AT-bestweb.net> for the bug report.
5033
5037
5034 2003-05-09 Fernando Perez <fperez@colorado.edu>
5038 2003-05-09 Fernando Perez <fperez@colorado.edu>
5035
5039
5036 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5040 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5037 to EvalDict (it's a mapping, after all) and simplified its code
5041 to EvalDict (it's a mapping, after all) and simplified its code
5038 quite a bit, after a nice discussion on c.l.py where Gustavo
5042 quite a bit, after a nice discussion on c.l.py where Gustavo
5039 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5043 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5040
5044
5041 2003-04-30 Fernando Perez <fperez@colorado.edu>
5045 2003-04-30 Fernando Perez <fperez@colorado.edu>
5042
5046
5043 * IPython/genutils.py (timings_out): modified it to reduce its
5047 * IPython/genutils.py (timings_out): modified it to reduce its
5044 overhead in the common reps==1 case.
5048 overhead in the common reps==1 case.
5045
5049
5046 2003-04-29 Fernando Perez <fperez@colorado.edu>
5050 2003-04-29 Fernando Perez <fperez@colorado.edu>
5047
5051
5048 * IPython/genutils.py (timings_out): Modified to use the resource
5052 * IPython/genutils.py (timings_out): Modified to use the resource
5049 module, which avoids the wraparound problems of time.clock().
5053 module, which avoids the wraparound problems of time.clock().
5050
5054
5051 2003-04-17 *** Released version 0.2.15pre4
5055 2003-04-17 *** Released version 0.2.15pre4
5052
5056
5053 2003-04-17 Fernando Perez <fperez@colorado.edu>
5057 2003-04-17 Fernando Perez <fperez@colorado.edu>
5054
5058
5055 * setup.py (scriptfiles): Split windows-specific stuff over to a
5059 * setup.py (scriptfiles): Split windows-specific stuff over to a
5056 separate file, in an attempt to have a Windows GUI installer.
5060 separate file, in an attempt to have a Windows GUI installer.
5057 That didn't work, but part of the groundwork is done.
5061 That didn't work, but part of the groundwork is done.
5058
5062
5059 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5063 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5060 indent/unindent with 4 spaces. Particularly useful in combination
5064 indent/unindent with 4 spaces. Particularly useful in combination
5061 with the new auto-indent option.
5065 with the new auto-indent option.
5062
5066
5063 2003-04-16 Fernando Perez <fperez@colorado.edu>
5067 2003-04-16 Fernando Perez <fperez@colorado.edu>
5064
5068
5065 * IPython/Magic.py: various replacements of self.rc for
5069 * IPython/Magic.py: various replacements of self.rc for
5066 self.shell.rc. A lot more remains to be done to fully disentangle
5070 self.shell.rc. A lot more remains to be done to fully disentangle
5067 this class from the main Shell class.
5071 this class from the main Shell class.
5068
5072
5069 * IPython/GnuplotRuntime.py: added checks for mouse support so
5073 * IPython/GnuplotRuntime.py: added checks for mouse support so
5070 that we don't try to enable it if the current gnuplot doesn't
5074 that we don't try to enable it if the current gnuplot doesn't
5071 really support it. Also added checks so that we don't try to
5075 really support it. Also added checks so that we don't try to
5072 enable persist under Windows (where Gnuplot doesn't recognize the
5076 enable persist under Windows (where Gnuplot doesn't recognize the
5073 option).
5077 option).
5074
5078
5075 * IPython/iplib.py (InteractiveShell.interact): Added optional
5079 * IPython/iplib.py (InteractiveShell.interact): Added optional
5076 auto-indenting code, after a patch by King C. Shu
5080 auto-indenting code, after a patch by King C. Shu
5077 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5081 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5078 get along well with pasting indented code. If I ever figure out
5082 get along well with pasting indented code. If I ever figure out
5079 how to make that part go well, it will become on by default.
5083 how to make that part go well, it will become on by default.
5080
5084
5081 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5085 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5082 crash ipython if there was an unmatched '%' in the user's prompt
5086 crash ipython if there was an unmatched '%' in the user's prompt
5083 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5087 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5084
5088
5085 * IPython/iplib.py (InteractiveShell.interact): removed the
5089 * IPython/iplib.py (InteractiveShell.interact): removed the
5086 ability to ask the user whether he wants to crash or not at the
5090 ability to ask the user whether he wants to crash or not at the
5087 'last line' exception handler. Calling functions at that point
5091 'last line' exception handler. Calling functions at that point
5088 changes the stack, and the error reports would have incorrect
5092 changes the stack, and the error reports would have incorrect
5089 tracebacks.
5093 tracebacks.
5090
5094
5091 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5095 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5092 pass through a peger a pretty-printed form of any object. After a
5096 pass through a peger a pretty-printed form of any object. After a
5093 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5097 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5094
5098
5095 2003-04-14 Fernando Perez <fperez@colorado.edu>
5099 2003-04-14 Fernando Perez <fperez@colorado.edu>
5096
5100
5097 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5101 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5098 all files in ~ would be modified at first install (instead of
5102 all files in ~ would be modified at first install (instead of
5099 ~/.ipython). This could be potentially disastrous, as the
5103 ~/.ipython). This could be potentially disastrous, as the
5100 modification (make line-endings native) could damage binary files.
5104 modification (make line-endings native) could damage binary files.
5101
5105
5102 2003-04-10 Fernando Perez <fperez@colorado.edu>
5106 2003-04-10 Fernando Perez <fperez@colorado.edu>
5103
5107
5104 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5108 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5105 handle only lines which are invalid python. This now means that
5109 handle only lines which are invalid python. This now means that
5106 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5110 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5107 for the bug report.
5111 for the bug report.
5108
5112
5109 2003-04-01 Fernando Perez <fperez@colorado.edu>
5113 2003-04-01 Fernando Perez <fperez@colorado.edu>
5110
5114
5111 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5115 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5112 where failing to set sys.last_traceback would crash pdb.pm().
5116 where failing to set sys.last_traceback would crash pdb.pm().
5113 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5117 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5114 report.
5118 report.
5115
5119
5116 2003-03-25 Fernando Perez <fperez@colorado.edu>
5120 2003-03-25 Fernando Perez <fperez@colorado.edu>
5117
5121
5118 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5122 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5119 before printing it (it had a lot of spurious blank lines at the
5123 before printing it (it had a lot of spurious blank lines at the
5120 end).
5124 end).
5121
5125
5122 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5126 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5123 output would be sent 21 times! Obviously people don't use this
5127 output would be sent 21 times! Obviously people don't use this
5124 too often, or I would have heard about it.
5128 too often, or I would have heard about it.
5125
5129
5126 2003-03-24 Fernando Perez <fperez@colorado.edu>
5130 2003-03-24 Fernando Perez <fperez@colorado.edu>
5127
5131
5128 * setup.py (scriptfiles): renamed the data_files parameter from
5132 * setup.py (scriptfiles): renamed the data_files parameter from
5129 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5133 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5130 for the patch.
5134 for the patch.
5131
5135
5132 2003-03-20 Fernando Perez <fperez@colorado.edu>
5136 2003-03-20 Fernando Perez <fperez@colorado.edu>
5133
5137
5134 * IPython/genutils.py (error): added error() and fatal()
5138 * IPython/genutils.py (error): added error() and fatal()
5135 functions.
5139 functions.
5136
5140
5137 2003-03-18 *** Released version 0.2.15pre3
5141 2003-03-18 *** Released version 0.2.15pre3
5138
5142
5139 2003-03-18 Fernando Perez <fperez@colorado.edu>
5143 2003-03-18 Fernando Perez <fperez@colorado.edu>
5140
5144
5141 * setupext/install_data_ext.py
5145 * setupext/install_data_ext.py
5142 (install_data_ext.initialize_options): Class contributed by Jack
5146 (install_data_ext.initialize_options): Class contributed by Jack
5143 Moffit for fixing the old distutils hack. He is sending this to
5147 Moffit for fixing the old distutils hack. He is sending this to
5144 the distutils folks so in the future we may not need it as a
5148 the distutils folks so in the future we may not need it as a
5145 private fix.
5149 private fix.
5146
5150
5147 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5151 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5148 changes for Debian packaging. See his patch for full details.
5152 changes for Debian packaging. See his patch for full details.
5149 The old distutils hack of making the ipythonrc* files carry a
5153 The old distutils hack of making the ipythonrc* files carry a
5150 bogus .py extension is gone, at last. Examples were moved to a
5154 bogus .py extension is gone, at last. Examples were moved to a
5151 separate subdir under doc/, and the separate executable scripts
5155 separate subdir under doc/, and the separate executable scripts
5152 now live in their own directory. Overall a great cleanup. The
5156 now live in their own directory. Overall a great cleanup. The
5153 manual was updated to use the new files, and setup.py has been
5157 manual was updated to use the new files, and setup.py has been
5154 fixed for this setup.
5158 fixed for this setup.
5155
5159
5156 * IPython/PyColorize.py (Parser.usage): made non-executable and
5160 * IPython/PyColorize.py (Parser.usage): made non-executable and
5157 created a pycolor wrapper around it to be included as a script.
5161 created a pycolor wrapper around it to be included as a script.
5158
5162
5159 2003-03-12 *** Released version 0.2.15pre2
5163 2003-03-12 *** Released version 0.2.15pre2
5160
5164
5161 2003-03-12 Fernando Perez <fperez@colorado.edu>
5165 2003-03-12 Fernando Perez <fperez@colorado.edu>
5162
5166
5163 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5167 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5164 long-standing problem with garbage characters in some terminals.
5168 long-standing problem with garbage characters in some terminals.
5165 The issue was really that the \001 and \002 escapes must _only_ be
5169 The issue was really that the \001 and \002 escapes must _only_ be
5166 passed to input prompts (which call readline), but _never_ to
5170 passed to input prompts (which call readline), but _never_ to
5167 normal text to be printed on screen. I changed ColorANSI to have
5171 normal text to be printed on screen. I changed ColorANSI to have
5168 two classes: TermColors and InputTermColors, each with the
5172 two classes: TermColors and InputTermColors, each with the
5169 appropriate escapes for input prompts or normal text. The code in
5173 appropriate escapes for input prompts or normal text. The code in
5170 Prompts.py got slightly more complicated, but this very old and
5174 Prompts.py got slightly more complicated, but this very old and
5171 annoying bug is finally fixed.
5175 annoying bug is finally fixed.
5172
5176
5173 All the credit for nailing down the real origin of this problem
5177 All the credit for nailing down the real origin of this problem
5174 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5178 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5175 *Many* thanks to him for spending quite a bit of effort on this.
5179 *Many* thanks to him for spending quite a bit of effort on this.
5176
5180
5177 2003-03-05 *** Released version 0.2.15pre1
5181 2003-03-05 *** Released version 0.2.15pre1
5178
5182
5179 2003-03-03 Fernando Perez <fperez@colorado.edu>
5183 2003-03-03 Fernando Perez <fperez@colorado.edu>
5180
5184
5181 * IPython/FakeModule.py: Moved the former _FakeModule to a
5185 * IPython/FakeModule.py: Moved the former _FakeModule to a
5182 separate file, because it's also needed by Magic (to fix a similar
5186 separate file, because it's also needed by Magic (to fix a similar
5183 pickle-related issue in @run).
5187 pickle-related issue in @run).
5184
5188
5185 2003-03-02 Fernando Perez <fperez@colorado.edu>
5189 2003-03-02 Fernando Perez <fperez@colorado.edu>
5186
5190
5187 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5191 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5188 the autocall option at runtime.
5192 the autocall option at runtime.
5189 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5193 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5190 across Magic.py to start separating Magic from InteractiveShell.
5194 across Magic.py to start separating Magic from InteractiveShell.
5191 (Magic._ofind): Fixed to return proper namespace for dotted
5195 (Magic._ofind): Fixed to return proper namespace for dotted
5192 names. Before, a dotted name would always return 'not currently
5196 names. Before, a dotted name would always return 'not currently
5193 defined', because it would find the 'parent'. s.x would be found,
5197 defined', because it would find the 'parent'. s.x would be found,
5194 but since 'x' isn't defined by itself, it would get confused.
5198 but since 'x' isn't defined by itself, it would get confused.
5195 (Magic.magic_run): Fixed pickling problems reported by Ralf
5199 (Magic.magic_run): Fixed pickling problems reported by Ralf
5196 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5200 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5197 that I'd used when Mike Heeter reported similar issues at the
5201 that I'd used when Mike Heeter reported similar issues at the
5198 top-level, but now for @run. It boils down to injecting the
5202 top-level, but now for @run. It boils down to injecting the
5199 namespace where code is being executed with something that looks
5203 namespace where code is being executed with something that looks
5200 enough like a module to fool pickle.dump(). Since a pickle stores
5204 enough like a module to fool pickle.dump(). Since a pickle stores
5201 a named reference to the importing module, we need this for
5205 a named reference to the importing module, we need this for
5202 pickles to save something sensible.
5206 pickles to save something sensible.
5203
5207
5204 * IPython/ipmaker.py (make_IPython): added an autocall option.
5208 * IPython/ipmaker.py (make_IPython): added an autocall option.
5205
5209
5206 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5210 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5207 the auto-eval code. Now autocalling is an option, and the code is
5211 the auto-eval code. Now autocalling is an option, and the code is
5208 also vastly safer. There is no more eval() involved at all.
5212 also vastly safer. There is no more eval() involved at all.
5209
5213
5210 2003-03-01 Fernando Perez <fperez@colorado.edu>
5214 2003-03-01 Fernando Perez <fperez@colorado.edu>
5211
5215
5212 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5216 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5213 dict with named keys instead of a tuple.
5217 dict with named keys instead of a tuple.
5214
5218
5215 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5219 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5216
5220
5217 * setup.py (make_shortcut): Fixed message about directories
5221 * setup.py (make_shortcut): Fixed message about directories
5218 created during Windows installation (the directories were ok, just
5222 created during Windows installation (the directories were ok, just
5219 the printed message was misleading). Thanks to Chris Liechti
5223 the printed message was misleading). Thanks to Chris Liechti
5220 <cliechti-AT-gmx.net> for the heads up.
5224 <cliechti-AT-gmx.net> for the heads up.
5221
5225
5222 2003-02-21 Fernando Perez <fperez@colorado.edu>
5226 2003-02-21 Fernando Perez <fperez@colorado.edu>
5223
5227
5224 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5228 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5225 of ValueError exception when checking for auto-execution. This
5229 of ValueError exception when checking for auto-execution. This
5226 one is raised by things like Numeric arrays arr.flat when the
5230 one is raised by things like Numeric arrays arr.flat when the
5227 array is non-contiguous.
5231 array is non-contiguous.
5228
5232
5229 2003-01-31 Fernando Perez <fperez@colorado.edu>
5233 2003-01-31 Fernando Perez <fperez@colorado.edu>
5230
5234
5231 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5235 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5232 not return any value at all (even though the command would get
5236 not return any value at all (even though the command would get
5233 executed).
5237 executed).
5234 (xsys): Flush stdout right after printing the command to ensure
5238 (xsys): Flush stdout right after printing the command to ensure
5235 proper ordering of commands and command output in the total
5239 proper ordering of commands and command output in the total
5236 output.
5240 output.
5237 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5241 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5238 system/getoutput as defaults. The old ones are kept for
5242 system/getoutput as defaults. The old ones are kept for
5239 compatibility reasons, so no code which uses this library needs
5243 compatibility reasons, so no code which uses this library needs
5240 changing.
5244 changing.
5241
5245
5242 2003-01-27 *** Released version 0.2.14
5246 2003-01-27 *** Released version 0.2.14
5243
5247
5244 2003-01-25 Fernando Perez <fperez@colorado.edu>
5248 2003-01-25 Fernando Perez <fperez@colorado.edu>
5245
5249
5246 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5250 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5247 functions defined in previous edit sessions could not be re-edited
5251 functions defined in previous edit sessions could not be re-edited
5248 (because the temp files were immediately removed). Now temp files
5252 (because the temp files were immediately removed). Now temp files
5249 are removed only at IPython's exit.
5253 are removed only at IPython's exit.
5250 (Magic.magic_run): Improved @run to perform shell-like expansions
5254 (Magic.magic_run): Improved @run to perform shell-like expansions
5251 on its arguments (~users and $VARS). With this, @run becomes more
5255 on its arguments (~users and $VARS). With this, @run becomes more
5252 like a normal command-line.
5256 like a normal command-line.
5253
5257
5254 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5258 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5255 bugs related to embedding and cleaned up that code. A fairly
5259 bugs related to embedding and cleaned up that code. A fairly
5256 important one was the impossibility to access the global namespace
5260 important one was the impossibility to access the global namespace
5257 through the embedded IPython (only local variables were visible).
5261 through the embedded IPython (only local variables were visible).
5258
5262
5259 2003-01-14 Fernando Perez <fperez@colorado.edu>
5263 2003-01-14 Fernando Perez <fperez@colorado.edu>
5260
5264
5261 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5265 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5262 auto-calling to be a bit more conservative. Now it doesn't get
5266 auto-calling to be a bit more conservative. Now it doesn't get
5263 triggered if any of '!=()<>' are in the rest of the input line, to
5267 triggered if any of '!=()<>' are in the rest of the input line, to
5264 allow comparing callables. Thanks to Alex for the heads up.
5268 allow comparing callables. Thanks to Alex for the heads up.
5265
5269
5266 2003-01-07 Fernando Perez <fperez@colorado.edu>
5270 2003-01-07 Fernando Perez <fperez@colorado.edu>
5267
5271
5268 * IPython/genutils.py (page): fixed estimation of the number of
5272 * IPython/genutils.py (page): fixed estimation of the number of
5269 lines in a string to be paged to simply count newlines. This
5273 lines in a string to be paged to simply count newlines. This
5270 prevents over-guessing due to embedded escape sequences. A better
5274 prevents over-guessing due to embedded escape sequences. A better
5271 long-term solution would involve stripping out the control chars
5275 long-term solution would involve stripping out the control chars
5272 for the count, but it's potentially so expensive I just don't
5276 for the count, but it's potentially so expensive I just don't
5273 think it's worth doing.
5277 think it's worth doing.
5274
5278
5275 2002-12-19 *** Released version 0.2.14pre50
5279 2002-12-19 *** Released version 0.2.14pre50
5276
5280
5277 2002-12-19 Fernando Perez <fperez@colorado.edu>
5281 2002-12-19 Fernando Perez <fperez@colorado.edu>
5278
5282
5279 * tools/release (version): Changed release scripts to inform
5283 * tools/release (version): Changed release scripts to inform
5280 Andrea and build a NEWS file with a list of recent changes.
5284 Andrea and build a NEWS file with a list of recent changes.
5281
5285
5282 * IPython/ColorANSI.py (__all__): changed terminal detection
5286 * IPython/ColorANSI.py (__all__): changed terminal detection
5283 code. Seems to work better for xterms without breaking
5287 code. Seems to work better for xterms without breaking
5284 konsole. Will need more testing to determine if WinXP and Mac OSX
5288 konsole. Will need more testing to determine if WinXP and Mac OSX
5285 also work ok.
5289 also work ok.
5286
5290
5287 2002-12-18 *** Released version 0.2.14pre49
5291 2002-12-18 *** Released version 0.2.14pre49
5288
5292
5289 2002-12-18 Fernando Perez <fperez@colorado.edu>
5293 2002-12-18 Fernando Perez <fperez@colorado.edu>
5290
5294
5291 * Docs: added new info about Mac OSX, from Andrea.
5295 * Docs: added new info about Mac OSX, from Andrea.
5292
5296
5293 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5297 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5294 allow direct plotting of python strings whose format is the same
5298 allow direct plotting of python strings whose format is the same
5295 of gnuplot data files.
5299 of gnuplot data files.
5296
5300
5297 2002-12-16 Fernando Perez <fperez@colorado.edu>
5301 2002-12-16 Fernando Perez <fperez@colorado.edu>
5298
5302
5299 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5303 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5300 value of exit question to be acknowledged.
5304 value of exit question to be acknowledged.
5301
5305
5302 2002-12-03 Fernando Perez <fperez@colorado.edu>
5306 2002-12-03 Fernando Perez <fperez@colorado.edu>
5303
5307
5304 * IPython/ipmaker.py: removed generators, which had been added
5308 * IPython/ipmaker.py: removed generators, which had been added
5305 by mistake in an earlier debugging run. This was causing trouble
5309 by mistake in an earlier debugging run. This was causing trouble
5306 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5310 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5307 for pointing this out.
5311 for pointing this out.
5308
5312
5309 2002-11-17 Fernando Perez <fperez@colorado.edu>
5313 2002-11-17 Fernando Perez <fperez@colorado.edu>
5310
5314
5311 * Manual: updated the Gnuplot section.
5315 * Manual: updated the Gnuplot section.
5312
5316
5313 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5317 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5314 a much better split of what goes in Runtime and what goes in
5318 a much better split of what goes in Runtime and what goes in
5315 Interactive.
5319 Interactive.
5316
5320
5317 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5321 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5318 being imported from iplib.
5322 being imported from iplib.
5319
5323
5320 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5324 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5321 for command-passing. Now the global Gnuplot instance is called
5325 for command-passing. Now the global Gnuplot instance is called
5322 'gp' instead of 'g', which was really a far too fragile and
5326 'gp' instead of 'g', which was really a far too fragile and
5323 common name.
5327 common name.
5324
5328
5325 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5329 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5326 bounding boxes generated by Gnuplot for square plots.
5330 bounding boxes generated by Gnuplot for square plots.
5327
5331
5328 * IPython/genutils.py (popkey): new function added. I should
5332 * IPython/genutils.py (popkey): new function added. I should
5329 suggest this on c.l.py as a dict method, it seems useful.
5333 suggest this on c.l.py as a dict method, it seems useful.
5330
5334
5331 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5335 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5332 to transparently handle PostScript generation. MUCH better than
5336 to transparently handle PostScript generation. MUCH better than
5333 the previous plot_eps/replot_eps (which I removed now). The code
5337 the previous plot_eps/replot_eps (which I removed now). The code
5334 is also fairly clean and well documented now (including
5338 is also fairly clean and well documented now (including
5335 docstrings).
5339 docstrings).
5336
5340
5337 2002-11-13 Fernando Perez <fperez@colorado.edu>
5341 2002-11-13 Fernando Perez <fperez@colorado.edu>
5338
5342
5339 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5343 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5340 (inconsistent with options).
5344 (inconsistent with options).
5341
5345
5342 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5346 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5343 manually disabled, I don't know why. Fixed it.
5347 manually disabled, I don't know why. Fixed it.
5344 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5348 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5345 eps output.
5349 eps output.
5346
5350
5347 2002-11-12 Fernando Perez <fperez@colorado.edu>
5351 2002-11-12 Fernando Perez <fperez@colorado.edu>
5348
5352
5349 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5353 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5350 don't propagate up to caller. Fixes crash reported by François
5354 don't propagate up to caller. Fixes crash reported by François
5351 Pinard.
5355 Pinard.
5352
5356
5353 2002-11-09 Fernando Perez <fperez@colorado.edu>
5357 2002-11-09 Fernando Perez <fperez@colorado.edu>
5354
5358
5355 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5359 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5356 history file for new users.
5360 history file for new users.
5357 (make_IPython): fixed bug where initial install would leave the
5361 (make_IPython): fixed bug where initial install would leave the
5358 user running in the .ipython dir.
5362 user running in the .ipython dir.
5359 (make_IPython): fixed bug where config dir .ipython would be
5363 (make_IPython): fixed bug where config dir .ipython would be
5360 created regardless of the given -ipythondir option. Thanks to Cory
5364 created regardless of the given -ipythondir option. Thanks to Cory
5361 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5365 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5362
5366
5363 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5367 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5364 type confirmations. Will need to use it in all of IPython's code
5368 type confirmations. Will need to use it in all of IPython's code
5365 consistently.
5369 consistently.
5366
5370
5367 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5371 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5368 context to print 31 lines instead of the default 5. This will make
5372 context to print 31 lines instead of the default 5. This will make
5369 the crash reports extremely detailed in case the problem is in
5373 the crash reports extremely detailed in case the problem is in
5370 libraries I don't have access to.
5374 libraries I don't have access to.
5371
5375
5372 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5376 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5373 line of defense' code to still crash, but giving users fair
5377 line of defense' code to still crash, but giving users fair
5374 warning. I don't want internal errors to go unreported: if there's
5378 warning. I don't want internal errors to go unreported: if there's
5375 an internal problem, IPython should crash and generate a full
5379 an internal problem, IPython should crash and generate a full
5376 report.
5380 report.
5377
5381
5378 2002-11-08 Fernando Perez <fperez@colorado.edu>
5382 2002-11-08 Fernando Perez <fperez@colorado.edu>
5379
5383
5380 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5384 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5381 otherwise uncaught exceptions which can appear if people set
5385 otherwise uncaught exceptions which can appear if people set
5382 sys.stdout to something badly broken. Thanks to a crash report
5386 sys.stdout to something badly broken. Thanks to a crash report
5383 from henni-AT-mail.brainbot.com.
5387 from henni-AT-mail.brainbot.com.
5384
5388
5385 2002-11-04 Fernando Perez <fperez@colorado.edu>
5389 2002-11-04 Fernando Perez <fperez@colorado.edu>
5386
5390
5387 * IPython/iplib.py (InteractiveShell.interact): added
5391 * IPython/iplib.py (InteractiveShell.interact): added
5388 __IPYTHON__active to the builtins. It's a flag which goes on when
5392 __IPYTHON__active to the builtins. It's a flag which goes on when
5389 the interaction starts and goes off again when it stops. This
5393 the interaction starts and goes off again when it stops. This
5390 allows embedding code to detect being inside IPython. Before this
5394 allows embedding code to detect being inside IPython. Before this
5391 was done via __IPYTHON__, but that only shows that an IPython
5395 was done via __IPYTHON__, but that only shows that an IPython
5392 instance has been created.
5396 instance has been created.
5393
5397
5394 * IPython/Magic.py (Magic.magic_env): I realized that in a
5398 * IPython/Magic.py (Magic.magic_env): I realized that in a
5395 UserDict, instance.data holds the data as a normal dict. So I
5399 UserDict, instance.data holds the data as a normal dict. So I
5396 modified @env to return os.environ.data instead of rebuilding a
5400 modified @env to return os.environ.data instead of rebuilding a
5397 dict by hand.
5401 dict by hand.
5398
5402
5399 2002-11-02 Fernando Perez <fperez@colorado.edu>
5403 2002-11-02 Fernando Perez <fperez@colorado.edu>
5400
5404
5401 * IPython/genutils.py (warn): changed so that level 1 prints no
5405 * IPython/genutils.py (warn): changed so that level 1 prints no
5402 header. Level 2 is now the default (with 'WARNING' header, as
5406 header. Level 2 is now the default (with 'WARNING' header, as
5403 before). I think I tracked all places where changes were needed in
5407 before). I think I tracked all places where changes were needed in
5404 IPython, but outside code using the old level numbering may have
5408 IPython, but outside code using the old level numbering may have
5405 broken.
5409 broken.
5406
5410
5407 * IPython/iplib.py (InteractiveShell.runcode): added this to
5411 * IPython/iplib.py (InteractiveShell.runcode): added this to
5408 handle the tracebacks in SystemExit traps correctly. The previous
5412 handle the tracebacks in SystemExit traps correctly. The previous
5409 code (through interact) was printing more of the stack than
5413 code (through interact) was printing more of the stack than
5410 necessary, showing IPython internal code to the user.
5414 necessary, showing IPython internal code to the user.
5411
5415
5412 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5416 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5413 default. Now that the default at the confirmation prompt is yes,
5417 default. Now that the default at the confirmation prompt is yes,
5414 it's not so intrusive. François' argument that ipython sessions
5418 it's not so intrusive. François' argument that ipython sessions
5415 tend to be complex enough not to lose them from an accidental C-d,
5419 tend to be complex enough not to lose them from an accidental C-d,
5416 is a valid one.
5420 is a valid one.
5417
5421
5418 * IPython/iplib.py (InteractiveShell.interact): added a
5422 * IPython/iplib.py (InteractiveShell.interact): added a
5419 showtraceback() call to the SystemExit trap, and modified the exit
5423 showtraceback() call to the SystemExit trap, and modified the exit
5420 confirmation to have yes as the default.
5424 confirmation to have yes as the default.
5421
5425
5422 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5426 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5423 this file. It's been gone from the code for a long time, this was
5427 this file. It's been gone from the code for a long time, this was
5424 simply leftover junk.
5428 simply leftover junk.
5425
5429
5426 2002-11-01 Fernando Perez <fperez@colorado.edu>
5430 2002-11-01 Fernando Perez <fperez@colorado.edu>
5427
5431
5428 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5432 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5429 added. If set, IPython now traps EOF and asks for
5433 added. If set, IPython now traps EOF and asks for
5430 confirmation. After a request by François Pinard.
5434 confirmation. After a request by François Pinard.
5431
5435
5432 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5436 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5433 of @abort, and with a new (better) mechanism for handling the
5437 of @abort, and with a new (better) mechanism for handling the
5434 exceptions.
5438 exceptions.
5435
5439
5436 2002-10-27 Fernando Perez <fperez@colorado.edu>
5440 2002-10-27 Fernando Perez <fperez@colorado.edu>
5437
5441
5438 * IPython/usage.py (__doc__): updated the --help information and
5442 * IPython/usage.py (__doc__): updated the --help information and
5439 the ipythonrc file to indicate that -log generates
5443 the ipythonrc file to indicate that -log generates
5440 ./ipython.log. Also fixed the corresponding info in @logstart.
5444 ./ipython.log. Also fixed the corresponding info in @logstart.
5441 This and several other fixes in the manuals thanks to reports by
5445 This and several other fixes in the manuals thanks to reports by
5442 François Pinard <pinard-AT-iro.umontreal.ca>.
5446 François Pinard <pinard-AT-iro.umontreal.ca>.
5443
5447
5444 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5448 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5445 refer to @logstart (instead of @log, which doesn't exist).
5449 refer to @logstart (instead of @log, which doesn't exist).
5446
5450
5447 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5451 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5448 AttributeError crash. Thanks to Christopher Armstrong
5452 AttributeError crash. Thanks to Christopher Armstrong
5449 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5453 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5450 introduced recently (in 0.2.14pre37) with the fix to the eval
5454 introduced recently (in 0.2.14pre37) with the fix to the eval
5451 problem mentioned below.
5455 problem mentioned below.
5452
5456
5453 2002-10-17 Fernando Perez <fperez@colorado.edu>
5457 2002-10-17 Fernando Perez <fperez@colorado.edu>
5454
5458
5455 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5459 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5456 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5460 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5457
5461
5458 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5462 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5459 this function to fix a problem reported by Alex Schmolck. He saw
5463 this function to fix a problem reported by Alex Schmolck. He saw
5460 it with list comprehensions and generators, which were getting
5464 it with list comprehensions and generators, which were getting
5461 called twice. The real problem was an 'eval' call in testing for
5465 called twice. The real problem was an 'eval' call in testing for
5462 automagic which was evaluating the input line silently.
5466 automagic which was evaluating the input line silently.
5463
5467
5464 This is a potentially very nasty bug, if the input has side
5468 This is a potentially very nasty bug, if the input has side
5465 effects which must not be repeated. The code is much cleaner now,
5469 effects which must not be repeated. The code is much cleaner now,
5466 without any blanket 'except' left and with a regexp test for
5470 without any blanket 'except' left and with a regexp test for
5467 actual function names.
5471 actual function names.
5468
5472
5469 But an eval remains, which I'm not fully comfortable with. I just
5473 But an eval remains, which I'm not fully comfortable with. I just
5470 don't know how to find out if an expression could be a callable in
5474 don't know how to find out if an expression could be a callable in
5471 the user's namespace without doing an eval on the string. However
5475 the user's namespace without doing an eval on the string. However
5472 that string is now much more strictly checked so that no code
5476 that string is now much more strictly checked so that no code
5473 slips by, so the eval should only happen for things that can
5477 slips by, so the eval should only happen for things that can
5474 really be only function/method names.
5478 really be only function/method names.
5475
5479
5476 2002-10-15 Fernando Perez <fperez@colorado.edu>
5480 2002-10-15 Fernando Perez <fperez@colorado.edu>
5477
5481
5478 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5482 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5479 OSX information to main manual, removed README_Mac_OSX file from
5483 OSX information to main manual, removed README_Mac_OSX file from
5480 distribution. Also updated credits for recent additions.
5484 distribution. Also updated credits for recent additions.
5481
5485
5482 2002-10-10 Fernando Perez <fperez@colorado.edu>
5486 2002-10-10 Fernando Perez <fperez@colorado.edu>
5483
5487
5484 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5488 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5485 terminal-related issues. Many thanks to Andrea Riciputi
5489 terminal-related issues. Many thanks to Andrea Riciputi
5486 <andrea.riciputi-AT-libero.it> for writing it.
5490 <andrea.riciputi-AT-libero.it> for writing it.
5487
5491
5488 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5492 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5489 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5493 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5490
5494
5491 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5495 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5492 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5496 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5493 <syver-en-AT-online.no> who both submitted patches for this problem.
5497 <syver-en-AT-online.no> who both submitted patches for this problem.
5494
5498
5495 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5499 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5496 global embedding to make sure that things don't overwrite user
5500 global embedding to make sure that things don't overwrite user
5497 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5501 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5498
5502
5499 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5503 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5500 compatibility. Thanks to Hayden Callow
5504 compatibility. Thanks to Hayden Callow
5501 <h.callow-AT-elec.canterbury.ac.nz>
5505 <h.callow-AT-elec.canterbury.ac.nz>
5502
5506
5503 2002-10-04 Fernando Perez <fperez@colorado.edu>
5507 2002-10-04 Fernando Perez <fperez@colorado.edu>
5504
5508
5505 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5509 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5506 Gnuplot.File objects.
5510 Gnuplot.File objects.
5507
5511
5508 2002-07-23 Fernando Perez <fperez@colorado.edu>
5512 2002-07-23 Fernando Perez <fperez@colorado.edu>
5509
5513
5510 * IPython/genutils.py (timing): Added timings() and timing() for
5514 * IPython/genutils.py (timing): Added timings() and timing() for
5511 quick access to the most commonly needed data, the execution
5515 quick access to the most commonly needed data, the execution
5512 times. Old timing() renamed to timings_out().
5516 times. Old timing() renamed to timings_out().
5513
5517
5514 2002-07-18 Fernando Perez <fperez@colorado.edu>
5518 2002-07-18 Fernando Perez <fperez@colorado.edu>
5515
5519
5516 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5520 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5517 bug with nested instances disrupting the parent's tab completion.
5521 bug with nested instances disrupting the parent's tab completion.
5518
5522
5519 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5523 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5520 all_completions code to begin the emacs integration.
5524 all_completions code to begin the emacs integration.
5521
5525
5522 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5526 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5523 argument to allow titling individual arrays when plotting.
5527 argument to allow titling individual arrays when plotting.
5524
5528
5525 2002-07-15 Fernando Perez <fperez@colorado.edu>
5529 2002-07-15 Fernando Perez <fperez@colorado.edu>
5526
5530
5527 * setup.py (make_shortcut): changed to retrieve the value of
5531 * setup.py (make_shortcut): changed to retrieve the value of
5528 'Program Files' directory from the registry (this value changes in
5532 'Program Files' directory from the registry (this value changes in
5529 non-english versions of Windows). Thanks to Thomas Fanslau
5533 non-english versions of Windows). Thanks to Thomas Fanslau
5530 <tfanslau-AT-gmx.de> for the report.
5534 <tfanslau-AT-gmx.de> for the report.
5531
5535
5532 2002-07-10 Fernando Perez <fperez@colorado.edu>
5536 2002-07-10 Fernando Perez <fperez@colorado.edu>
5533
5537
5534 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5538 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5535 a bug in pdb, which crashes if a line with only whitespace is
5539 a bug in pdb, which crashes if a line with only whitespace is
5536 entered. Bug report submitted to sourceforge.
5540 entered. Bug report submitted to sourceforge.
5537
5541
5538 2002-07-09 Fernando Perez <fperez@colorado.edu>
5542 2002-07-09 Fernando Perez <fperez@colorado.edu>
5539
5543
5540 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5544 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5541 reporting exceptions (it's a bug in inspect.py, I just set a
5545 reporting exceptions (it's a bug in inspect.py, I just set a
5542 workaround).
5546 workaround).
5543
5547
5544 2002-07-08 Fernando Perez <fperez@colorado.edu>
5548 2002-07-08 Fernando Perez <fperez@colorado.edu>
5545
5549
5546 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5550 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5547 __IPYTHON__ in __builtins__ to show up in user_ns.
5551 __IPYTHON__ in __builtins__ to show up in user_ns.
5548
5552
5549 2002-07-03 Fernando Perez <fperez@colorado.edu>
5553 2002-07-03 Fernando Perez <fperez@colorado.edu>
5550
5554
5551 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5555 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5552 name from @gp_set_instance to @gp_set_default.
5556 name from @gp_set_instance to @gp_set_default.
5553
5557
5554 * IPython/ipmaker.py (make_IPython): default editor value set to
5558 * IPython/ipmaker.py (make_IPython): default editor value set to
5555 '0' (a string), to match the rc file. Otherwise will crash when
5559 '0' (a string), to match the rc file. Otherwise will crash when
5556 .strip() is called on it.
5560 .strip() is called on it.
5557
5561
5558
5562
5559 2002-06-28 Fernando Perez <fperez@colorado.edu>
5563 2002-06-28 Fernando Perez <fperez@colorado.edu>
5560
5564
5561 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5565 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5562 of files in current directory when a file is executed via
5566 of files in current directory when a file is executed via
5563 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5567 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5564
5568
5565 * setup.py (manfiles): fix for rpm builds, submitted by RA
5569 * setup.py (manfiles): fix for rpm builds, submitted by RA
5566 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5570 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5567
5571
5568 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5572 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5569 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5573 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5570 string!). A. Schmolck caught this one.
5574 string!). A. Schmolck caught this one.
5571
5575
5572 2002-06-27 Fernando Perez <fperez@colorado.edu>
5576 2002-06-27 Fernando Perez <fperez@colorado.edu>
5573
5577
5574 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5578 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5575 defined files at the cmd line. __name__ wasn't being set to
5579 defined files at the cmd line. __name__ wasn't being set to
5576 __main__.
5580 __main__.
5577
5581
5578 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5582 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5579 regular lists and tuples besides Numeric arrays.
5583 regular lists and tuples besides Numeric arrays.
5580
5584
5581 * IPython/Prompts.py (CachedOutput.__call__): Added output
5585 * IPython/Prompts.py (CachedOutput.__call__): Added output
5582 supression for input ending with ';'. Similar to Mathematica and
5586 supression for input ending with ';'. Similar to Mathematica and
5583 Matlab. The _* vars and Out[] list are still updated, just like
5587 Matlab. The _* vars and Out[] list are still updated, just like
5584 Mathematica behaves.
5588 Mathematica behaves.
5585
5589
5586 2002-06-25 Fernando Perez <fperez@colorado.edu>
5590 2002-06-25 Fernando Perez <fperez@colorado.edu>
5587
5591
5588 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5592 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5589 .ini extensions for profiels under Windows.
5593 .ini extensions for profiels under Windows.
5590
5594
5591 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5595 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5592 string form. Fix contributed by Alexander Schmolck
5596 string form. Fix contributed by Alexander Schmolck
5593 <a.schmolck-AT-gmx.net>
5597 <a.schmolck-AT-gmx.net>
5594
5598
5595 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5599 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5596 pre-configured Gnuplot instance.
5600 pre-configured Gnuplot instance.
5597
5601
5598 2002-06-21 Fernando Perez <fperez@colorado.edu>
5602 2002-06-21 Fernando Perez <fperez@colorado.edu>
5599
5603
5600 * IPython/numutils.py (exp_safe): new function, works around the
5604 * IPython/numutils.py (exp_safe): new function, works around the
5601 underflow problems in Numeric.
5605 underflow problems in Numeric.
5602 (log2): New fn. Safe log in base 2: returns exact integer answer
5606 (log2): New fn. Safe log in base 2: returns exact integer answer
5603 for exact integer powers of 2.
5607 for exact integer powers of 2.
5604
5608
5605 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5609 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5606 properly.
5610 properly.
5607
5611
5608 2002-06-20 Fernando Perez <fperez@colorado.edu>
5612 2002-06-20 Fernando Perez <fperez@colorado.edu>
5609
5613
5610 * IPython/genutils.py (timing): new function like
5614 * IPython/genutils.py (timing): new function like
5611 Mathematica's. Similar to time_test, but returns more info.
5615 Mathematica's. Similar to time_test, but returns more info.
5612
5616
5613 2002-06-18 Fernando Perez <fperez@colorado.edu>
5617 2002-06-18 Fernando Perez <fperez@colorado.edu>
5614
5618
5615 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5619 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5616 according to Mike Heeter's suggestions.
5620 according to Mike Heeter's suggestions.
5617
5621
5618 2002-06-16 Fernando Perez <fperez@colorado.edu>
5622 2002-06-16 Fernando Perez <fperez@colorado.edu>
5619
5623
5620 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5624 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5621 system. GnuplotMagic is gone as a user-directory option. New files
5625 system. GnuplotMagic is gone as a user-directory option. New files
5622 make it easier to use all the gnuplot stuff both from external
5626 make it easier to use all the gnuplot stuff both from external
5623 programs as well as from IPython. Had to rewrite part of
5627 programs as well as from IPython. Had to rewrite part of
5624 hardcopy() b/c of a strange bug: often the ps files simply don't
5628 hardcopy() b/c of a strange bug: often the ps files simply don't
5625 get created, and require a repeat of the command (often several
5629 get created, and require a repeat of the command (often several
5626 times).
5630 times).
5627
5631
5628 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5632 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5629 resolve output channel at call time, so that if sys.stderr has
5633 resolve output channel at call time, so that if sys.stderr has
5630 been redirected by user this gets honored.
5634 been redirected by user this gets honored.
5631
5635
5632 2002-06-13 Fernando Perez <fperez@colorado.edu>
5636 2002-06-13 Fernando Perez <fperez@colorado.edu>
5633
5637
5634 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5638 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5635 IPShell. Kept a copy with the old names to avoid breaking people's
5639 IPShell. Kept a copy with the old names to avoid breaking people's
5636 embedded code.
5640 embedded code.
5637
5641
5638 * IPython/ipython: simplified it to the bare minimum after
5642 * IPython/ipython: simplified it to the bare minimum after
5639 Holger's suggestions. Added info about how to use it in
5643 Holger's suggestions. Added info about how to use it in
5640 PYTHONSTARTUP.
5644 PYTHONSTARTUP.
5641
5645
5642 * IPython/Shell.py (IPythonShell): changed the options passing
5646 * IPython/Shell.py (IPythonShell): changed the options passing
5643 from a string with funky %s replacements to a straight list. Maybe
5647 from a string with funky %s replacements to a straight list. Maybe
5644 a bit more typing, but it follows sys.argv conventions, so there's
5648 a bit more typing, but it follows sys.argv conventions, so there's
5645 less special-casing to remember.
5649 less special-casing to remember.
5646
5650
5647 2002-06-12 Fernando Perez <fperez@colorado.edu>
5651 2002-06-12 Fernando Perez <fperez@colorado.edu>
5648
5652
5649 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5653 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5650 command. Thanks to a suggestion by Mike Heeter.
5654 command. Thanks to a suggestion by Mike Heeter.
5651 (Magic.magic_pfile): added behavior to look at filenames if given
5655 (Magic.magic_pfile): added behavior to look at filenames if given
5652 arg is not a defined object.
5656 arg is not a defined object.
5653 (Magic.magic_save): New @save function to save code snippets. Also
5657 (Magic.magic_save): New @save function to save code snippets. Also
5654 a Mike Heeter idea.
5658 a Mike Heeter idea.
5655
5659
5656 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5660 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5657 plot() and replot(). Much more convenient now, especially for
5661 plot() and replot(). Much more convenient now, especially for
5658 interactive use.
5662 interactive use.
5659
5663
5660 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5664 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5661 filenames.
5665 filenames.
5662
5666
5663 2002-06-02 Fernando Perez <fperez@colorado.edu>
5667 2002-06-02 Fernando Perez <fperez@colorado.edu>
5664
5668
5665 * IPython/Struct.py (Struct.__init__): modified to admit
5669 * IPython/Struct.py (Struct.__init__): modified to admit
5666 initialization via another struct.
5670 initialization via another struct.
5667
5671
5668 * IPython/genutils.py (SystemExec.__init__): New stateful
5672 * IPython/genutils.py (SystemExec.__init__): New stateful
5669 interface to xsys and bq. Useful for writing system scripts.
5673 interface to xsys and bq. Useful for writing system scripts.
5670
5674
5671 2002-05-30 Fernando Perez <fperez@colorado.edu>
5675 2002-05-30 Fernando Perez <fperez@colorado.edu>
5672
5676
5673 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5677 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5674 documents. This will make the user download smaller (it's getting
5678 documents. This will make the user download smaller (it's getting
5675 too big).
5679 too big).
5676
5680
5677 2002-05-29 Fernando Perez <fperez@colorado.edu>
5681 2002-05-29 Fernando Perez <fperez@colorado.edu>
5678
5682
5679 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5683 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5680 fix problems with shelve and pickle. Seems to work, but I don't
5684 fix problems with shelve and pickle. Seems to work, but I don't
5681 know if corner cases break it. Thanks to Mike Heeter
5685 know if corner cases break it. Thanks to Mike Heeter
5682 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5686 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5683
5687
5684 2002-05-24 Fernando Perez <fperez@colorado.edu>
5688 2002-05-24 Fernando Perez <fperez@colorado.edu>
5685
5689
5686 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5690 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5687 macros having broken.
5691 macros having broken.
5688
5692
5689 2002-05-21 Fernando Perez <fperez@colorado.edu>
5693 2002-05-21 Fernando Perez <fperez@colorado.edu>
5690
5694
5691 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5695 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5692 introduced logging bug: all history before logging started was
5696 introduced logging bug: all history before logging started was
5693 being written one character per line! This came from the redesign
5697 being written one character per line! This came from the redesign
5694 of the input history as a special list which slices to strings,
5698 of the input history as a special list which slices to strings,
5695 not to lists.
5699 not to lists.
5696
5700
5697 2002-05-20 Fernando Perez <fperez@colorado.edu>
5701 2002-05-20 Fernando Perez <fperez@colorado.edu>
5698
5702
5699 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5703 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5700 be an attribute of all classes in this module. The design of these
5704 be an attribute of all classes in this module. The design of these
5701 classes needs some serious overhauling.
5705 classes needs some serious overhauling.
5702
5706
5703 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5707 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5704 which was ignoring '_' in option names.
5708 which was ignoring '_' in option names.
5705
5709
5706 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5710 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5707 'Verbose_novars' to 'Context' and made it the new default. It's a
5711 'Verbose_novars' to 'Context' and made it the new default. It's a
5708 bit more readable and also safer than verbose.
5712 bit more readable and also safer than verbose.
5709
5713
5710 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5714 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5711 triple-quoted strings.
5715 triple-quoted strings.
5712
5716
5713 * IPython/OInspect.py (__all__): new module exposing the object
5717 * IPython/OInspect.py (__all__): new module exposing the object
5714 introspection facilities. Now the corresponding magics are dummy
5718 introspection facilities. Now the corresponding magics are dummy
5715 wrappers around this. Having this module will make it much easier
5719 wrappers around this. Having this module will make it much easier
5716 to put these functions into our modified pdb.
5720 to put these functions into our modified pdb.
5717 This new object inspector system uses the new colorizing module,
5721 This new object inspector system uses the new colorizing module,
5718 so source code and other things are nicely syntax highlighted.
5722 so source code and other things are nicely syntax highlighted.
5719
5723
5720 2002-05-18 Fernando Perez <fperez@colorado.edu>
5724 2002-05-18 Fernando Perez <fperez@colorado.edu>
5721
5725
5722 * IPython/ColorANSI.py: Split the coloring tools into a separate
5726 * IPython/ColorANSI.py: Split the coloring tools into a separate
5723 module so I can use them in other code easier (they were part of
5727 module so I can use them in other code easier (they were part of
5724 ultraTB).
5728 ultraTB).
5725
5729
5726 2002-05-17 Fernando Perez <fperez@colorado.edu>
5730 2002-05-17 Fernando Perez <fperez@colorado.edu>
5727
5731
5728 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5732 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5729 fixed it to set the global 'g' also to the called instance, as
5733 fixed it to set the global 'g' also to the called instance, as
5730 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5734 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5731 user's 'g' variables).
5735 user's 'g' variables).
5732
5736
5733 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5737 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5734 global variables (aliases to _ih,_oh) so that users which expect
5738 global variables (aliases to _ih,_oh) so that users which expect
5735 In[5] or Out[7] to work aren't unpleasantly surprised.
5739 In[5] or Out[7] to work aren't unpleasantly surprised.
5736 (InputList.__getslice__): new class to allow executing slices of
5740 (InputList.__getslice__): new class to allow executing slices of
5737 input history directly. Very simple class, complements the use of
5741 input history directly. Very simple class, complements the use of
5738 macros.
5742 macros.
5739
5743
5740 2002-05-16 Fernando Perez <fperez@colorado.edu>
5744 2002-05-16 Fernando Perez <fperez@colorado.edu>
5741
5745
5742 * setup.py (docdirbase): make doc directory be just doc/IPython
5746 * setup.py (docdirbase): make doc directory be just doc/IPython
5743 without version numbers, it will reduce clutter for users.
5747 without version numbers, it will reduce clutter for users.
5744
5748
5745 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5749 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5746 execfile call to prevent possible memory leak. See for details:
5750 execfile call to prevent possible memory leak. See for details:
5747 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5751 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5748
5752
5749 2002-05-15 Fernando Perez <fperez@colorado.edu>
5753 2002-05-15 Fernando Perez <fperez@colorado.edu>
5750
5754
5751 * IPython/Magic.py (Magic.magic_psource): made the object
5755 * IPython/Magic.py (Magic.magic_psource): made the object
5752 introspection names be more standard: pdoc, pdef, pfile and
5756 introspection names be more standard: pdoc, pdef, pfile and
5753 psource. They all print/page their output, and it makes
5757 psource. They all print/page their output, and it makes
5754 remembering them easier. Kept old names for compatibility as
5758 remembering them easier. Kept old names for compatibility as
5755 aliases.
5759 aliases.
5756
5760
5757 2002-05-14 Fernando Perez <fperez@colorado.edu>
5761 2002-05-14 Fernando Perez <fperez@colorado.edu>
5758
5762
5759 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5763 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5760 what the mouse problem was. The trick is to use gnuplot with temp
5764 what the mouse problem was. The trick is to use gnuplot with temp
5761 files and NOT with pipes (for data communication), because having
5765 files and NOT with pipes (for data communication), because having
5762 both pipes and the mouse on is bad news.
5766 both pipes and the mouse on is bad news.
5763
5767
5764 2002-05-13 Fernando Perez <fperez@colorado.edu>
5768 2002-05-13 Fernando Perez <fperez@colorado.edu>
5765
5769
5766 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5770 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5767 bug. Information would be reported about builtins even when
5771 bug. Information would be reported about builtins even when
5768 user-defined functions overrode them.
5772 user-defined functions overrode them.
5769
5773
5770 2002-05-11 Fernando Perez <fperez@colorado.edu>
5774 2002-05-11 Fernando Perez <fperez@colorado.edu>
5771
5775
5772 * IPython/__init__.py (__all__): removed FlexCompleter from
5776 * IPython/__init__.py (__all__): removed FlexCompleter from
5773 __all__ so that things don't fail in platforms without readline.
5777 __all__ so that things don't fail in platforms without readline.
5774
5778
5775 2002-05-10 Fernando Perez <fperez@colorado.edu>
5779 2002-05-10 Fernando Perez <fperez@colorado.edu>
5776
5780
5777 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5781 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5778 it requires Numeric, effectively making Numeric a dependency for
5782 it requires Numeric, effectively making Numeric a dependency for
5779 IPython.
5783 IPython.
5780
5784
5781 * Released 0.2.13
5785 * Released 0.2.13
5782
5786
5783 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5787 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5784 profiler interface. Now all the major options from the profiler
5788 profiler interface. Now all the major options from the profiler
5785 module are directly supported in IPython, both for single
5789 module are directly supported in IPython, both for single
5786 expressions (@prun) and for full programs (@run -p).
5790 expressions (@prun) and for full programs (@run -p).
5787
5791
5788 2002-05-09 Fernando Perez <fperez@colorado.edu>
5792 2002-05-09 Fernando Perez <fperez@colorado.edu>
5789
5793
5790 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5794 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5791 magic properly formatted for screen.
5795 magic properly formatted for screen.
5792
5796
5793 * setup.py (make_shortcut): Changed things to put pdf version in
5797 * setup.py (make_shortcut): Changed things to put pdf version in
5794 doc/ instead of doc/manual (had to change lyxport a bit).
5798 doc/ instead of doc/manual (had to change lyxport a bit).
5795
5799
5796 * IPython/Magic.py (Profile.string_stats): made profile runs go
5800 * IPython/Magic.py (Profile.string_stats): made profile runs go
5797 through pager (they are long and a pager allows searching, saving,
5801 through pager (they are long and a pager allows searching, saving,
5798 etc.)
5802 etc.)
5799
5803
5800 2002-05-08 Fernando Perez <fperez@colorado.edu>
5804 2002-05-08 Fernando Perez <fperez@colorado.edu>
5801
5805
5802 * Released 0.2.12
5806 * Released 0.2.12
5803
5807
5804 2002-05-06 Fernando Perez <fperez@colorado.edu>
5808 2002-05-06 Fernando Perez <fperez@colorado.edu>
5805
5809
5806 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5810 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5807 introduced); 'hist n1 n2' was broken.
5811 introduced); 'hist n1 n2' was broken.
5808 (Magic.magic_pdb): added optional on/off arguments to @pdb
5812 (Magic.magic_pdb): added optional on/off arguments to @pdb
5809 (Magic.magic_run): added option -i to @run, which executes code in
5813 (Magic.magic_run): added option -i to @run, which executes code in
5810 the IPython namespace instead of a clean one. Also added @irun as
5814 the IPython namespace instead of a clean one. Also added @irun as
5811 an alias to @run -i.
5815 an alias to @run -i.
5812
5816
5813 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5817 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5814 fixed (it didn't really do anything, the namespaces were wrong).
5818 fixed (it didn't really do anything, the namespaces were wrong).
5815
5819
5816 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5820 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5817
5821
5818 * IPython/__init__.py (__all__): Fixed package namespace, now
5822 * IPython/__init__.py (__all__): Fixed package namespace, now
5819 'import IPython' does give access to IPython.<all> as
5823 'import IPython' does give access to IPython.<all> as
5820 expected. Also renamed __release__ to Release.
5824 expected. Also renamed __release__ to Release.
5821
5825
5822 * IPython/Debugger.py (__license__): created new Pdb class which
5826 * IPython/Debugger.py (__license__): created new Pdb class which
5823 functions like a drop-in for the normal pdb.Pdb but does NOT
5827 functions like a drop-in for the normal pdb.Pdb but does NOT
5824 import readline by default. This way it doesn't muck up IPython's
5828 import readline by default. This way it doesn't muck up IPython's
5825 readline handling, and now tab-completion finally works in the
5829 readline handling, and now tab-completion finally works in the
5826 debugger -- sort of. It completes things globally visible, but the
5830 debugger -- sort of. It completes things globally visible, but the
5827 completer doesn't track the stack as pdb walks it. That's a bit
5831 completer doesn't track the stack as pdb walks it. That's a bit
5828 tricky, and I'll have to implement it later.
5832 tricky, and I'll have to implement it later.
5829
5833
5830 2002-05-05 Fernando Perez <fperez@colorado.edu>
5834 2002-05-05 Fernando Perez <fperez@colorado.edu>
5831
5835
5832 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5836 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5833 magic docstrings when printed via ? (explicit \'s were being
5837 magic docstrings when printed via ? (explicit \'s were being
5834 printed).
5838 printed).
5835
5839
5836 * IPython/ipmaker.py (make_IPython): fixed namespace
5840 * IPython/ipmaker.py (make_IPython): fixed namespace
5837 identification bug. Now variables loaded via logs or command-line
5841 identification bug. Now variables loaded via logs or command-line
5838 files are recognized in the interactive namespace by @who.
5842 files are recognized in the interactive namespace by @who.
5839
5843
5840 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5844 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5841 log replay system stemming from the string form of Structs.
5845 log replay system stemming from the string form of Structs.
5842
5846
5843 * IPython/Magic.py (Macro.__init__): improved macros to properly
5847 * IPython/Magic.py (Macro.__init__): improved macros to properly
5844 handle magic commands in them.
5848 handle magic commands in them.
5845 (Magic.magic_logstart): usernames are now expanded so 'logstart
5849 (Magic.magic_logstart): usernames are now expanded so 'logstart
5846 ~/mylog' now works.
5850 ~/mylog' now works.
5847
5851
5848 * IPython/iplib.py (complete): fixed bug where paths starting with
5852 * IPython/iplib.py (complete): fixed bug where paths starting with
5849 '/' would be completed as magic names.
5853 '/' would be completed as magic names.
5850
5854
5851 2002-05-04 Fernando Perez <fperez@colorado.edu>
5855 2002-05-04 Fernando Perez <fperez@colorado.edu>
5852
5856
5853 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5857 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5854 allow running full programs under the profiler's control.
5858 allow running full programs under the profiler's control.
5855
5859
5856 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5860 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5857 mode to report exceptions verbosely but without formatting
5861 mode to report exceptions verbosely but without formatting
5858 variables. This addresses the issue of ipython 'freezing' (it's
5862 variables. This addresses the issue of ipython 'freezing' (it's
5859 not frozen, but caught in an expensive formatting loop) when huge
5863 not frozen, but caught in an expensive formatting loop) when huge
5860 variables are in the context of an exception.
5864 variables are in the context of an exception.
5861 (VerboseTB.text): Added '--->' markers at line where exception was
5865 (VerboseTB.text): Added '--->' markers at line where exception was
5862 triggered. Much clearer to read, especially in NoColor modes.
5866 triggered. Much clearer to read, especially in NoColor modes.
5863
5867
5864 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5868 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5865 implemented in reverse when changing to the new parse_options().
5869 implemented in reverse when changing to the new parse_options().
5866
5870
5867 2002-05-03 Fernando Perez <fperez@colorado.edu>
5871 2002-05-03 Fernando Perez <fperez@colorado.edu>
5868
5872
5869 * IPython/Magic.py (Magic.parse_options): new function so that
5873 * IPython/Magic.py (Magic.parse_options): new function so that
5870 magics can parse options easier.
5874 magics can parse options easier.
5871 (Magic.magic_prun): new function similar to profile.run(),
5875 (Magic.magic_prun): new function similar to profile.run(),
5872 suggested by Chris Hart.
5876 suggested by Chris Hart.
5873 (Magic.magic_cd): fixed behavior so that it only changes if
5877 (Magic.magic_cd): fixed behavior so that it only changes if
5874 directory actually is in history.
5878 directory actually is in history.
5875
5879
5876 * IPython/usage.py (__doc__): added information about potential
5880 * IPython/usage.py (__doc__): added information about potential
5877 slowness of Verbose exception mode when there are huge data
5881 slowness of Verbose exception mode when there are huge data
5878 structures to be formatted (thanks to Archie Paulson).
5882 structures to be formatted (thanks to Archie Paulson).
5879
5883
5880 * IPython/ipmaker.py (make_IPython): Changed default logging
5884 * IPython/ipmaker.py (make_IPython): Changed default logging
5881 (when simply called with -log) to use curr_dir/ipython.log in
5885 (when simply called with -log) to use curr_dir/ipython.log in
5882 rotate mode. Fixed crash which was occuring with -log before
5886 rotate mode. Fixed crash which was occuring with -log before
5883 (thanks to Jim Boyle).
5887 (thanks to Jim Boyle).
5884
5888
5885 2002-05-01 Fernando Perez <fperez@colorado.edu>
5889 2002-05-01 Fernando Perez <fperez@colorado.edu>
5886
5890
5887 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5891 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5888 was nasty -- though somewhat of a corner case).
5892 was nasty -- though somewhat of a corner case).
5889
5893
5890 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5894 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5891 text (was a bug).
5895 text (was a bug).
5892
5896
5893 2002-04-30 Fernando Perez <fperez@colorado.edu>
5897 2002-04-30 Fernando Perez <fperez@colorado.edu>
5894
5898
5895 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5899 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5896 a print after ^D or ^C from the user so that the In[] prompt
5900 a print after ^D or ^C from the user so that the In[] prompt
5897 doesn't over-run the gnuplot one.
5901 doesn't over-run the gnuplot one.
5898
5902
5899 2002-04-29 Fernando Perez <fperez@colorado.edu>
5903 2002-04-29 Fernando Perez <fperez@colorado.edu>
5900
5904
5901 * Released 0.2.10
5905 * Released 0.2.10
5902
5906
5903 * IPython/__release__.py (version): get date dynamically.
5907 * IPython/__release__.py (version): get date dynamically.
5904
5908
5905 * Misc. documentation updates thanks to Arnd's comments. Also ran
5909 * Misc. documentation updates thanks to Arnd's comments. Also ran
5906 a full spellcheck on the manual (hadn't been done in a while).
5910 a full spellcheck on the manual (hadn't been done in a while).
5907
5911
5908 2002-04-27 Fernando Perez <fperez@colorado.edu>
5912 2002-04-27 Fernando Perez <fperez@colorado.edu>
5909
5913
5910 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5914 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5911 starting a log in mid-session would reset the input history list.
5915 starting a log in mid-session would reset the input history list.
5912
5916
5913 2002-04-26 Fernando Perez <fperez@colorado.edu>
5917 2002-04-26 Fernando Perez <fperez@colorado.edu>
5914
5918
5915 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5919 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5916 all files were being included in an update. Now anything in
5920 all files were being included in an update. Now anything in
5917 UserConfig that matches [A-Za-z]*.py will go (this excludes
5921 UserConfig that matches [A-Za-z]*.py will go (this excludes
5918 __init__.py)
5922 __init__.py)
5919
5923
5920 2002-04-25 Fernando Perez <fperez@colorado.edu>
5924 2002-04-25 Fernando Perez <fperez@colorado.edu>
5921
5925
5922 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5926 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5923 to __builtins__ so that any form of embedded or imported code can
5927 to __builtins__ so that any form of embedded or imported code can
5924 test for being inside IPython.
5928 test for being inside IPython.
5925
5929
5926 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5930 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5927 changed to GnuplotMagic because it's now an importable module,
5931 changed to GnuplotMagic because it's now an importable module,
5928 this makes the name follow that of the standard Gnuplot module.
5932 this makes the name follow that of the standard Gnuplot module.
5929 GnuplotMagic can now be loaded at any time in mid-session.
5933 GnuplotMagic can now be loaded at any time in mid-session.
5930
5934
5931 2002-04-24 Fernando Perez <fperez@colorado.edu>
5935 2002-04-24 Fernando Perez <fperez@colorado.edu>
5932
5936
5933 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5937 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5934 the globals (IPython has its own namespace) and the
5938 the globals (IPython has its own namespace) and the
5935 PhysicalQuantity stuff is much better anyway.
5939 PhysicalQuantity stuff is much better anyway.
5936
5940
5937 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5941 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5938 embedding example to standard user directory for
5942 embedding example to standard user directory for
5939 distribution. Also put it in the manual.
5943 distribution. Also put it in the manual.
5940
5944
5941 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5945 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5942 instance as first argument (so it doesn't rely on some obscure
5946 instance as first argument (so it doesn't rely on some obscure
5943 hidden global).
5947 hidden global).
5944
5948
5945 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5949 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5946 delimiters. While it prevents ().TAB from working, it allows
5950 delimiters. While it prevents ().TAB from working, it allows
5947 completions in open (... expressions. This is by far a more common
5951 completions in open (... expressions. This is by far a more common
5948 case.
5952 case.
5949
5953
5950 2002-04-23 Fernando Perez <fperez@colorado.edu>
5954 2002-04-23 Fernando Perez <fperez@colorado.edu>
5951
5955
5952 * IPython/Extensions/InterpreterPasteInput.py: new
5956 * IPython/Extensions/InterpreterPasteInput.py: new
5953 syntax-processing module for pasting lines with >>> or ... at the
5957 syntax-processing module for pasting lines with >>> or ... at the
5954 start.
5958 start.
5955
5959
5956 * IPython/Extensions/PhysicalQ_Interactive.py
5960 * IPython/Extensions/PhysicalQ_Interactive.py
5957 (PhysicalQuantityInteractive.__int__): fixed to work with either
5961 (PhysicalQuantityInteractive.__int__): fixed to work with either
5958 Numeric or math.
5962 Numeric or math.
5959
5963
5960 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5964 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5961 provided profiles. Now we have:
5965 provided profiles. Now we have:
5962 -math -> math module as * and cmath with its own namespace.
5966 -math -> math module as * and cmath with its own namespace.
5963 -numeric -> Numeric as *, plus gnuplot & grace
5967 -numeric -> Numeric as *, plus gnuplot & grace
5964 -physics -> same as before
5968 -physics -> same as before
5965
5969
5966 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5970 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5967 user-defined magics wouldn't be found by @magic if they were
5971 user-defined magics wouldn't be found by @magic if they were
5968 defined as class methods. Also cleaned up the namespace search
5972 defined as class methods. Also cleaned up the namespace search
5969 logic and the string building (to use %s instead of many repeated
5973 logic and the string building (to use %s instead of many repeated
5970 string adds).
5974 string adds).
5971
5975
5972 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5976 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5973 of user-defined magics to operate with class methods (cleaner, in
5977 of user-defined magics to operate with class methods (cleaner, in
5974 line with the gnuplot code).
5978 line with the gnuplot code).
5975
5979
5976 2002-04-22 Fernando Perez <fperez@colorado.edu>
5980 2002-04-22 Fernando Perez <fperez@colorado.edu>
5977
5981
5978 * setup.py: updated dependency list so that manual is updated when
5982 * setup.py: updated dependency list so that manual is updated when
5979 all included files change.
5983 all included files change.
5980
5984
5981 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5985 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5982 the delimiter removal option (the fix is ugly right now).
5986 the delimiter removal option (the fix is ugly right now).
5983
5987
5984 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5988 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5985 all of the math profile (quicker loading, no conflict between
5989 all of the math profile (quicker loading, no conflict between
5986 g-9.8 and g-gnuplot).
5990 g-9.8 and g-gnuplot).
5987
5991
5988 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5992 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5989 name of post-mortem files to IPython_crash_report.txt.
5993 name of post-mortem files to IPython_crash_report.txt.
5990
5994
5991 * Cleanup/update of the docs. Added all the new readline info and
5995 * Cleanup/update of the docs. Added all the new readline info and
5992 formatted all lists as 'real lists'.
5996 formatted all lists as 'real lists'.
5993
5997
5994 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5998 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5995 tab-completion options, since the full readline parse_and_bind is
5999 tab-completion options, since the full readline parse_and_bind is
5996 now accessible.
6000 now accessible.
5997
6001
5998 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6002 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5999 handling of readline options. Now users can specify any string to
6003 handling of readline options. Now users can specify any string to
6000 be passed to parse_and_bind(), as well as the delimiters to be
6004 be passed to parse_and_bind(), as well as the delimiters to be
6001 removed.
6005 removed.
6002 (InteractiveShell.__init__): Added __name__ to the global
6006 (InteractiveShell.__init__): Added __name__ to the global
6003 namespace so that things like Itpl which rely on its existence
6007 namespace so that things like Itpl which rely on its existence
6004 don't crash.
6008 don't crash.
6005 (InteractiveShell._prefilter): Defined the default with a _ so
6009 (InteractiveShell._prefilter): Defined the default with a _ so
6006 that prefilter() is easier to override, while the default one
6010 that prefilter() is easier to override, while the default one
6007 remains available.
6011 remains available.
6008
6012
6009 2002-04-18 Fernando Perez <fperez@colorado.edu>
6013 2002-04-18 Fernando Perez <fperez@colorado.edu>
6010
6014
6011 * Added information about pdb in the docs.
6015 * Added information about pdb in the docs.
6012
6016
6013 2002-04-17 Fernando Perez <fperez@colorado.edu>
6017 2002-04-17 Fernando Perez <fperez@colorado.edu>
6014
6018
6015 * IPython/ipmaker.py (make_IPython): added rc_override option to
6019 * IPython/ipmaker.py (make_IPython): added rc_override option to
6016 allow passing config options at creation time which may override
6020 allow passing config options at creation time which may override
6017 anything set in the config files or command line. This is
6021 anything set in the config files or command line. This is
6018 particularly useful for configuring embedded instances.
6022 particularly useful for configuring embedded instances.
6019
6023
6020 2002-04-15 Fernando Perez <fperez@colorado.edu>
6024 2002-04-15 Fernando Perez <fperez@colorado.edu>
6021
6025
6022 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6026 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6023 crash embedded instances because of the input cache falling out of
6027 crash embedded instances because of the input cache falling out of
6024 sync with the output counter.
6028 sync with the output counter.
6025
6029
6026 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6030 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6027 mode which calls pdb after an uncaught exception in IPython itself.
6031 mode which calls pdb after an uncaught exception in IPython itself.
6028
6032
6029 2002-04-14 Fernando Perez <fperez@colorado.edu>
6033 2002-04-14 Fernando Perez <fperez@colorado.edu>
6030
6034
6031 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6035 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6032 readline, fix it back after each call.
6036 readline, fix it back after each call.
6033
6037
6034 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6038 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6035 method to force all access via __call__(), which guarantees that
6039 method to force all access via __call__(), which guarantees that
6036 traceback references are properly deleted.
6040 traceback references are properly deleted.
6037
6041
6038 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6042 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6039 improve printing when pprint is in use.
6043 improve printing when pprint is in use.
6040
6044
6041 2002-04-13 Fernando Perez <fperez@colorado.edu>
6045 2002-04-13 Fernando Perez <fperez@colorado.edu>
6042
6046
6043 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6047 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6044 exceptions aren't caught anymore. If the user triggers one, he
6048 exceptions aren't caught anymore. If the user triggers one, he
6045 should know why he's doing it and it should go all the way up,
6049 should know why he's doing it and it should go all the way up,
6046 just like any other exception. So now @abort will fully kill the
6050 just like any other exception. So now @abort will fully kill the
6047 embedded interpreter and the embedding code (unless that happens
6051 embedded interpreter and the embedding code (unless that happens
6048 to catch SystemExit).
6052 to catch SystemExit).
6049
6053
6050 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6054 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6051 and a debugger() method to invoke the interactive pdb debugger
6055 and a debugger() method to invoke the interactive pdb debugger
6052 after printing exception information. Also added the corresponding
6056 after printing exception information. Also added the corresponding
6053 -pdb option and @pdb magic to control this feature, and updated
6057 -pdb option and @pdb magic to control this feature, and updated
6054 the docs. After a suggestion from Christopher Hart
6058 the docs. After a suggestion from Christopher Hart
6055 (hart-AT-caltech.edu).
6059 (hart-AT-caltech.edu).
6056
6060
6057 2002-04-12 Fernando Perez <fperez@colorado.edu>
6061 2002-04-12 Fernando Perez <fperez@colorado.edu>
6058
6062
6059 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6063 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6060 the exception handlers defined by the user (not the CrashHandler)
6064 the exception handlers defined by the user (not the CrashHandler)
6061 so that user exceptions don't trigger an ipython bug report.
6065 so that user exceptions don't trigger an ipython bug report.
6062
6066
6063 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6067 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6064 configurable (it should have always been so).
6068 configurable (it should have always been so).
6065
6069
6066 2002-03-26 Fernando Perez <fperez@colorado.edu>
6070 2002-03-26 Fernando Perez <fperez@colorado.edu>
6067
6071
6068 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6072 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6069 and there to fix embedding namespace issues. This should all be
6073 and there to fix embedding namespace issues. This should all be
6070 done in a more elegant way.
6074 done in a more elegant way.
6071
6075
6072 2002-03-25 Fernando Perez <fperez@colorado.edu>
6076 2002-03-25 Fernando Perez <fperez@colorado.edu>
6073
6077
6074 * IPython/genutils.py (get_home_dir): Try to make it work under
6078 * IPython/genutils.py (get_home_dir): Try to make it work under
6075 win9x also.
6079 win9x also.
6076
6080
6077 2002-03-20 Fernando Perez <fperez@colorado.edu>
6081 2002-03-20 Fernando Perez <fperez@colorado.edu>
6078
6082
6079 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6083 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6080 sys.displayhook untouched upon __init__.
6084 sys.displayhook untouched upon __init__.
6081
6085
6082 2002-03-19 Fernando Perez <fperez@colorado.edu>
6086 2002-03-19 Fernando Perez <fperez@colorado.edu>
6083
6087
6084 * Released 0.2.9 (for embedding bug, basically).
6088 * Released 0.2.9 (for embedding bug, basically).
6085
6089
6086 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6090 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6087 exceptions so that enclosing shell's state can be restored.
6091 exceptions so that enclosing shell's state can be restored.
6088
6092
6089 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6093 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6090 naming conventions in the .ipython/ dir.
6094 naming conventions in the .ipython/ dir.
6091
6095
6092 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6096 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6093 from delimiters list so filenames with - in them get expanded.
6097 from delimiters list so filenames with - in them get expanded.
6094
6098
6095 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6099 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6096 sys.displayhook not being properly restored after an embedded call.
6100 sys.displayhook not being properly restored after an embedded call.
6097
6101
6098 2002-03-18 Fernando Perez <fperez@colorado.edu>
6102 2002-03-18 Fernando Perez <fperez@colorado.edu>
6099
6103
6100 * Released 0.2.8
6104 * Released 0.2.8
6101
6105
6102 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6106 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6103 some files weren't being included in a -upgrade.
6107 some files weren't being included in a -upgrade.
6104 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6108 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6105 on' so that the first tab completes.
6109 on' so that the first tab completes.
6106 (InteractiveShell.handle_magic): fixed bug with spaces around
6110 (InteractiveShell.handle_magic): fixed bug with spaces around
6107 quotes breaking many magic commands.
6111 quotes breaking many magic commands.
6108
6112
6109 * setup.py: added note about ignoring the syntax error messages at
6113 * setup.py: added note about ignoring the syntax error messages at
6110 installation.
6114 installation.
6111
6115
6112 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6116 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6113 streamlining the gnuplot interface, now there's only one magic @gp.
6117 streamlining the gnuplot interface, now there's only one magic @gp.
6114
6118
6115 2002-03-17 Fernando Perez <fperez@colorado.edu>
6119 2002-03-17 Fernando Perez <fperez@colorado.edu>
6116
6120
6117 * IPython/UserConfig/magic_gnuplot.py: new name for the
6121 * IPython/UserConfig/magic_gnuplot.py: new name for the
6118 example-magic_pm.py file. Much enhanced system, now with a shell
6122 example-magic_pm.py file. Much enhanced system, now with a shell
6119 for communicating directly with gnuplot, one command at a time.
6123 for communicating directly with gnuplot, one command at a time.
6120
6124
6121 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6125 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6122 setting __name__=='__main__'.
6126 setting __name__=='__main__'.
6123
6127
6124 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6128 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6125 mini-shell for accessing gnuplot from inside ipython. Should
6129 mini-shell for accessing gnuplot from inside ipython. Should
6126 extend it later for grace access too. Inspired by Arnd's
6130 extend it later for grace access too. Inspired by Arnd's
6127 suggestion.
6131 suggestion.
6128
6132
6129 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6133 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6130 calling magic functions with () in their arguments. Thanks to Arnd
6134 calling magic functions with () in their arguments. Thanks to Arnd
6131 Baecker for pointing this to me.
6135 Baecker for pointing this to me.
6132
6136
6133 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6137 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6134 infinitely for integer or complex arrays (only worked with floats).
6138 infinitely for integer or complex arrays (only worked with floats).
6135
6139
6136 2002-03-16 Fernando Perez <fperez@colorado.edu>
6140 2002-03-16 Fernando Perez <fperez@colorado.edu>
6137
6141
6138 * setup.py: Merged setup and setup_windows into a single script
6142 * setup.py: Merged setup and setup_windows into a single script
6139 which properly handles things for windows users.
6143 which properly handles things for windows users.
6140
6144
6141 2002-03-15 Fernando Perez <fperez@colorado.edu>
6145 2002-03-15 Fernando Perez <fperez@colorado.edu>
6142
6146
6143 * Big change to the manual: now the magics are all automatically
6147 * Big change to the manual: now the magics are all automatically
6144 documented. This information is generated from their docstrings
6148 documented. This information is generated from their docstrings
6145 and put in a latex file included by the manual lyx file. This way
6149 and put in a latex file included by the manual lyx file. This way
6146 we get always up to date information for the magics. The manual
6150 we get always up to date information for the magics. The manual
6147 now also has proper version information, also auto-synced.
6151 now also has proper version information, also auto-synced.
6148
6152
6149 For this to work, an undocumented --magic_docstrings option was added.
6153 For this to work, an undocumented --magic_docstrings option was added.
6150
6154
6151 2002-03-13 Fernando Perez <fperez@colorado.edu>
6155 2002-03-13 Fernando Perez <fperez@colorado.edu>
6152
6156
6153 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6157 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6154 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6158 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6155
6159
6156 2002-03-12 Fernando Perez <fperez@colorado.edu>
6160 2002-03-12 Fernando Perez <fperez@colorado.edu>
6157
6161
6158 * IPython/ultraTB.py (TermColors): changed color escapes again to
6162 * IPython/ultraTB.py (TermColors): changed color escapes again to
6159 fix the (old, reintroduced) line-wrapping bug. Basically, if
6163 fix the (old, reintroduced) line-wrapping bug. Basically, if
6160 \001..\002 aren't given in the color escapes, lines get wrapped
6164 \001..\002 aren't given in the color escapes, lines get wrapped
6161 weirdly. But giving those screws up old xterms and emacs terms. So
6165 weirdly. But giving those screws up old xterms and emacs terms. So
6162 I added some logic for emacs terms to be ok, but I can't identify old
6166 I added some logic for emacs terms to be ok, but I can't identify old
6163 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6167 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6164
6168
6165 2002-03-10 Fernando Perez <fperez@colorado.edu>
6169 2002-03-10 Fernando Perez <fperez@colorado.edu>
6166
6170
6167 * IPython/usage.py (__doc__): Various documentation cleanups and
6171 * IPython/usage.py (__doc__): Various documentation cleanups and
6168 updates, both in usage docstrings and in the manual.
6172 updates, both in usage docstrings and in the manual.
6169
6173
6170 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6174 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6171 handling of caching. Set minimum acceptabe value for having a
6175 handling of caching. Set minimum acceptabe value for having a
6172 cache at 20 values.
6176 cache at 20 values.
6173
6177
6174 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6178 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6175 install_first_time function to a method, renamed it and added an
6179 install_first_time function to a method, renamed it and added an
6176 'upgrade' mode. Now people can update their config directory with
6180 'upgrade' mode. Now people can update their config directory with
6177 a simple command line switch (-upgrade, also new).
6181 a simple command line switch (-upgrade, also new).
6178
6182
6179 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6183 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6180 @file (convenient for automagic users under Python >= 2.2).
6184 @file (convenient for automagic users under Python >= 2.2).
6181 Removed @files (it seemed more like a plural than an abbrev. of
6185 Removed @files (it seemed more like a plural than an abbrev. of
6182 'file show').
6186 'file show').
6183
6187
6184 * IPython/iplib.py (install_first_time): Fixed crash if there were
6188 * IPython/iplib.py (install_first_time): Fixed crash if there were
6185 backup files ('~') in .ipython/ install directory.
6189 backup files ('~') in .ipython/ install directory.
6186
6190
6187 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6191 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6188 system. Things look fine, but these changes are fairly
6192 system. Things look fine, but these changes are fairly
6189 intrusive. Test them for a few days.
6193 intrusive. Test them for a few days.
6190
6194
6191 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6195 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6192 the prompts system. Now all in/out prompt strings are user
6196 the prompts system. Now all in/out prompt strings are user
6193 controllable. This is particularly useful for embedding, as one
6197 controllable. This is particularly useful for embedding, as one
6194 can tag embedded instances with particular prompts.
6198 can tag embedded instances with particular prompts.
6195
6199
6196 Also removed global use of sys.ps1/2, which now allows nested
6200 Also removed global use of sys.ps1/2, which now allows nested
6197 embeddings without any problems. Added command-line options for
6201 embeddings without any problems. Added command-line options for
6198 the prompt strings.
6202 the prompt strings.
6199
6203
6200 2002-03-08 Fernando Perez <fperez@colorado.edu>
6204 2002-03-08 Fernando Perez <fperez@colorado.edu>
6201
6205
6202 * IPython/UserConfig/example-embed-short.py (ipshell): added
6206 * IPython/UserConfig/example-embed-short.py (ipshell): added
6203 example file with the bare minimum code for embedding.
6207 example file with the bare minimum code for embedding.
6204
6208
6205 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6209 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6206 functionality for the embeddable shell to be activated/deactivated
6210 functionality for the embeddable shell to be activated/deactivated
6207 either globally or at each call.
6211 either globally or at each call.
6208
6212
6209 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6213 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6210 rewriting the prompt with '--->' for auto-inputs with proper
6214 rewriting the prompt with '--->' for auto-inputs with proper
6211 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6215 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6212 this is handled by the prompts class itself, as it should.
6216 this is handled by the prompts class itself, as it should.
6213
6217
6214 2002-03-05 Fernando Perez <fperez@colorado.edu>
6218 2002-03-05 Fernando Perez <fperez@colorado.edu>
6215
6219
6216 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6220 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6217 @logstart to avoid name clashes with the math log function.
6221 @logstart to avoid name clashes with the math log function.
6218
6222
6219 * Big updates to X/Emacs section of the manual.
6223 * Big updates to X/Emacs section of the manual.
6220
6224
6221 * Removed ipython_emacs. Milan explained to me how to pass
6225 * Removed ipython_emacs. Milan explained to me how to pass
6222 arguments to ipython through Emacs. Some day I'm going to end up
6226 arguments to ipython through Emacs. Some day I'm going to end up
6223 learning some lisp...
6227 learning some lisp...
6224
6228
6225 2002-03-04 Fernando Perez <fperez@colorado.edu>
6229 2002-03-04 Fernando Perez <fperez@colorado.edu>
6226
6230
6227 * IPython/ipython_emacs: Created script to be used as the
6231 * IPython/ipython_emacs: Created script to be used as the
6228 py-python-command Emacs variable so we can pass IPython
6232 py-python-command Emacs variable so we can pass IPython
6229 parameters. I can't figure out how to tell Emacs directly to pass
6233 parameters. I can't figure out how to tell Emacs directly to pass
6230 parameters to IPython, so a dummy shell script will do it.
6234 parameters to IPython, so a dummy shell script will do it.
6231
6235
6232 Other enhancements made for things to work better under Emacs'
6236 Other enhancements made for things to work better under Emacs'
6233 various types of terminals. Many thanks to Milan Zamazal
6237 various types of terminals. Many thanks to Milan Zamazal
6234 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6238 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6235
6239
6236 2002-03-01 Fernando Perez <fperez@colorado.edu>
6240 2002-03-01 Fernando Perez <fperez@colorado.edu>
6237
6241
6238 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6242 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6239 that loading of readline is now optional. This gives better
6243 that loading of readline is now optional. This gives better
6240 control to emacs users.
6244 control to emacs users.
6241
6245
6242 * IPython/ultraTB.py (__date__): Modified color escape sequences
6246 * IPython/ultraTB.py (__date__): Modified color escape sequences
6243 and now things work fine under xterm and in Emacs' term buffers
6247 and now things work fine under xterm and in Emacs' term buffers
6244 (though not shell ones). Well, in emacs you get colors, but all
6248 (though not shell ones). Well, in emacs you get colors, but all
6245 seem to be 'light' colors (no difference between dark and light
6249 seem to be 'light' colors (no difference between dark and light
6246 ones). But the garbage chars are gone, and also in xterms. It
6250 ones). But the garbage chars are gone, and also in xterms. It
6247 seems that now I'm using 'cleaner' ansi sequences.
6251 seems that now I'm using 'cleaner' ansi sequences.
6248
6252
6249 2002-02-21 Fernando Perez <fperez@colorado.edu>
6253 2002-02-21 Fernando Perez <fperez@colorado.edu>
6250
6254
6251 * Released 0.2.7 (mainly to publish the scoping fix).
6255 * Released 0.2.7 (mainly to publish the scoping fix).
6252
6256
6253 * IPython/Logger.py (Logger.logstate): added. A corresponding
6257 * IPython/Logger.py (Logger.logstate): added. A corresponding
6254 @logstate magic was created.
6258 @logstate magic was created.
6255
6259
6256 * IPython/Magic.py: fixed nested scoping problem under Python
6260 * IPython/Magic.py: fixed nested scoping problem under Python
6257 2.1.x (automagic wasn't working).
6261 2.1.x (automagic wasn't working).
6258
6262
6259 2002-02-20 Fernando Perez <fperez@colorado.edu>
6263 2002-02-20 Fernando Perez <fperez@colorado.edu>
6260
6264
6261 * Released 0.2.6.
6265 * Released 0.2.6.
6262
6266
6263 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6267 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6264 option so that logs can come out without any headers at all.
6268 option so that logs can come out without any headers at all.
6265
6269
6266 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6270 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6267 SciPy.
6271 SciPy.
6268
6272
6269 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6273 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6270 that embedded IPython calls don't require vars() to be explicitly
6274 that embedded IPython calls don't require vars() to be explicitly
6271 passed. Now they are extracted from the caller's frame (code
6275 passed. Now they are extracted from the caller's frame (code
6272 snatched from Eric Jones' weave). Added better documentation to
6276 snatched from Eric Jones' weave). Added better documentation to
6273 the section on embedding and the example file.
6277 the section on embedding and the example file.
6274
6278
6275 * IPython/genutils.py (page): Changed so that under emacs, it just
6279 * IPython/genutils.py (page): Changed so that under emacs, it just
6276 prints the string. You can then page up and down in the emacs
6280 prints the string. You can then page up and down in the emacs
6277 buffer itself. This is how the builtin help() works.
6281 buffer itself. This is how the builtin help() works.
6278
6282
6279 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6283 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6280 macro scoping: macros need to be executed in the user's namespace
6284 macro scoping: macros need to be executed in the user's namespace
6281 to work as if they had been typed by the user.
6285 to work as if they had been typed by the user.
6282
6286
6283 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6287 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6284 execute automatically (no need to type 'exec...'). They then
6288 execute automatically (no need to type 'exec...'). They then
6285 behave like 'true macros'. The printing system was also modified
6289 behave like 'true macros'. The printing system was also modified
6286 for this to work.
6290 for this to work.
6287
6291
6288 2002-02-19 Fernando Perez <fperez@colorado.edu>
6292 2002-02-19 Fernando Perez <fperez@colorado.edu>
6289
6293
6290 * IPython/genutils.py (page_file): new function for paging files
6294 * IPython/genutils.py (page_file): new function for paging files
6291 in an OS-independent way. Also necessary for file viewing to work
6295 in an OS-independent way. Also necessary for file viewing to work
6292 well inside Emacs buffers.
6296 well inside Emacs buffers.
6293 (page): Added checks for being in an emacs buffer.
6297 (page): Added checks for being in an emacs buffer.
6294 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6298 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6295 same bug in iplib.
6299 same bug in iplib.
6296
6300
6297 2002-02-18 Fernando Perez <fperez@colorado.edu>
6301 2002-02-18 Fernando Perez <fperez@colorado.edu>
6298
6302
6299 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6303 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6300 of readline so that IPython can work inside an Emacs buffer.
6304 of readline so that IPython can work inside an Emacs buffer.
6301
6305
6302 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6306 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6303 method signatures (they weren't really bugs, but it looks cleaner
6307 method signatures (they weren't really bugs, but it looks cleaner
6304 and keeps PyChecker happy).
6308 and keeps PyChecker happy).
6305
6309
6306 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6310 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6307 for implementing various user-defined hooks. Currently only
6311 for implementing various user-defined hooks. Currently only
6308 display is done.
6312 display is done.
6309
6313
6310 * IPython/Prompts.py (CachedOutput._display): changed display
6314 * IPython/Prompts.py (CachedOutput._display): changed display
6311 functions so that they can be dynamically changed by users easily.
6315 functions so that they can be dynamically changed by users easily.
6312
6316
6313 * IPython/Extensions/numeric_formats.py (num_display): added an
6317 * IPython/Extensions/numeric_formats.py (num_display): added an
6314 extension for printing NumPy arrays in flexible manners. It
6318 extension for printing NumPy arrays in flexible manners. It
6315 doesn't do anything yet, but all the structure is in
6319 doesn't do anything yet, but all the structure is in
6316 place. Ultimately the plan is to implement output format control
6320 place. Ultimately the plan is to implement output format control
6317 like in Octave.
6321 like in Octave.
6318
6322
6319 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6323 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6320 methods are found at run-time by all the automatic machinery.
6324 methods are found at run-time by all the automatic machinery.
6321
6325
6322 2002-02-17 Fernando Perez <fperez@colorado.edu>
6326 2002-02-17 Fernando Perez <fperez@colorado.edu>
6323
6327
6324 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6328 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6325 whole file a little.
6329 whole file a little.
6326
6330
6327 * ToDo: closed this document. Now there's a new_design.lyx
6331 * ToDo: closed this document. Now there's a new_design.lyx
6328 document for all new ideas. Added making a pdf of it for the
6332 document for all new ideas. Added making a pdf of it for the
6329 end-user distro.
6333 end-user distro.
6330
6334
6331 * IPython/Logger.py (Logger.switch_log): Created this to replace
6335 * IPython/Logger.py (Logger.switch_log): Created this to replace
6332 logon() and logoff(). It also fixes a nasty crash reported by
6336 logon() and logoff(). It also fixes a nasty crash reported by
6333 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6337 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6334
6338
6335 * IPython/iplib.py (complete): got auto-completion to work with
6339 * IPython/iplib.py (complete): got auto-completion to work with
6336 automagic (I had wanted this for a long time).
6340 automagic (I had wanted this for a long time).
6337
6341
6338 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6342 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6339 to @file, since file() is now a builtin and clashes with automagic
6343 to @file, since file() is now a builtin and clashes with automagic
6340 for @file.
6344 for @file.
6341
6345
6342 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6346 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6343 of this was previously in iplib, which had grown to more than 2000
6347 of this was previously in iplib, which had grown to more than 2000
6344 lines, way too long. No new functionality, but it makes managing
6348 lines, way too long. No new functionality, but it makes managing
6345 the code a bit easier.
6349 the code a bit easier.
6346
6350
6347 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6351 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6348 information to crash reports.
6352 information to crash reports.
6349
6353
6350 2002-02-12 Fernando Perez <fperez@colorado.edu>
6354 2002-02-12 Fernando Perez <fperez@colorado.edu>
6351
6355
6352 * Released 0.2.5.
6356 * Released 0.2.5.
6353
6357
6354 2002-02-11 Fernando Perez <fperez@colorado.edu>
6358 2002-02-11 Fernando Perez <fperez@colorado.edu>
6355
6359
6356 * Wrote a relatively complete Windows installer. It puts
6360 * Wrote a relatively complete Windows installer. It puts
6357 everything in place, creates Start Menu entries and fixes the
6361 everything in place, creates Start Menu entries and fixes the
6358 color issues. Nothing fancy, but it works.
6362 color issues. Nothing fancy, but it works.
6359
6363
6360 2002-02-10 Fernando Perez <fperez@colorado.edu>
6364 2002-02-10 Fernando Perez <fperez@colorado.edu>
6361
6365
6362 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6366 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6363 os.path.expanduser() call so that we can type @run ~/myfile.py and
6367 os.path.expanduser() call so that we can type @run ~/myfile.py and
6364 have thigs work as expected.
6368 have thigs work as expected.
6365
6369
6366 * IPython/genutils.py (page): fixed exception handling so things
6370 * IPython/genutils.py (page): fixed exception handling so things
6367 work both in Unix and Windows correctly. Quitting a pager triggers
6371 work both in Unix and Windows correctly. Quitting a pager triggers
6368 an IOError/broken pipe in Unix, and in windows not finding a pager
6372 an IOError/broken pipe in Unix, and in windows not finding a pager
6369 is also an IOError, so I had to actually look at the return value
6373 is also an IOError, so I had to actually look at the return value
6370 of the exception, not just the exception itself. Should be ok now.
6374 of the exception, not just the exception itself. Should be ok now.
6371
6375
6372 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6376 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6373 modified to allow case-insensitive color scheme changes.
6377 modified to allow case-insensitive color scheme changes.
6374
6378
6375 2002-02-09 Fernando Perez <fperez@colorado.edu>
6379 2002-02-09 Fernando Perez <fperez@colorado.edu>
6376
6380
6377 * IPython/genutils.py (native_line_ends): new function to leave
6381 * IPython/genutils.py (native_line_ends): new function to leave
6378 user config files with os-native line-endings.
6382 user config files with os-native line-endings.
6379
6383
6380 * README and manual updates.
6384 * README and manual updates.
6381
6385
6382 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6386 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6383 instead of StringType to catch Unicode strings.
6387 instead of StringType to catch Unicode strings.
6384
6388
6385 * IPython/genutils.py (filefind): fixed bug for paths with
6389 * IPython/genutils.py (filefind): fixed bug for paths with
6386 embedded spaces (very common in Windows).
6390 embedded spaces (very common in Windows).
6387
6391
6388 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6392 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6389 files under Windows, so that they get automatically associated
6393 files under Windows, so that they get automatically associated
6390 with a text editor. Windows makes it a pain to handle
6394 with a text editor. Windows makes it a pain to handle
6391 extension-less files.
6395 extension-less files.
6392
6396
6393 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6397 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6394 warning about readline only occur for Posix. In Windows there's no
6398 warning about readline only occur for Posix. In Windows there's no
6395 way to get readline, so why bother with the warning.
6399 way to get readline, so why bother with the warning.
6396
6400
6397 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6401 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6398 for __str__ instead of dir(self), since dir() changed in 2.2.
6402 for __str__ instead of dir(self), since dir() changed in 2.2.
6399
6403
6400 * Ported to Windows! Tested on XP, I suspect it should work fine
6404 * Ported to Windows! Tested on XP, I suspect it should work fine
6401 on NT/2000, but I don't think it will work on 98 et al. That
6405 on NT/2000, but I don't think it will work on 98 et al. That
6402 series of Windows is such a piece of junk anyway that I won't try
6406 series of Windows is such a piece of junk anyway that I won't try
6403 porting it there. The XP port was straightforward, showed a few
6407 porting it there. The XP port was straightforward, showed a few
6404 bugs here and there (fixed all), in particular some string
6408 bugs here and there (fixed all), in particular some string
6405 handling stuff which required considering Unicode strings (which
6409 handling stuff which required considering Unicode strings (which
6406 Windows uses). This is good, but hasn't been too tested :) No
6410 Windows uses). This is good, but hasn't been too tested :) No
6407 fancy installer yet, I'll put a note in the manual so people at
6411 fancy installer yet, I'll put a note in the manual so people at
6408 least make manually a shortcut.
6412 least make manually a shortcut.
6409
6413
6410 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6414 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6411 into a single one, "colors". This now controls both prompt and
6415 into a single one, "colors". This now controls both prompt and
6412 exception color schemes, and can be changed both at startup
6416 exception color schemes, and can be changed both at startup
6413 (either via command-line switches or via ipythonrc files) and at
6417 (either via command-line switches or via ipythonrc files) and at
6414 runtime, with @colors.
6418 runtime, with @colors.
6415 (Magic.magic_run): renamed @prun to @run and removed the old
6419 (Magic.magic_run): renamed @prun to @run and removed the old
6416 @run. The two were too similar to warrant keeping both.
6420 @run. The two were too similar to warrant keeping both.
6417
6421
6418 2002-02-03 Fernando Perez <fperez@colorado.edu>
6422 2002-02-03 Fernando Perez <fperez@colorado.edu>
6419
6423
6420 * IPython/iplib.py (install_first_time): Added comment on how to
6424 * IPython/iplib.py (install_first_time): Added comment on how to
6421 configure the color options for first-time users. Put a <return>
6425 configure the color options for first-time users. Put a <return>
6422 request at the end so that small-terminal users get a chance to
6426 request at the end so that small-terminal users get a chance to
6423 read the startup info.
6427 read the startup info.
6424
6428
6425 2002-01-23 Fernando Perez <fperez@colorado.edu>
6429 2002-01-23 Fernando Perez <fperez@colorado.edu>
6426
6430
6427 * IPython/iplib.py (CachedOutput.update): Changed output memory
6431 * IPython/iplib.py (CachedOutput.update): Changed output memory
6428 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6432 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6429 input history we still use _i. Did this b/c these variable are
6433 input history we still use _i. Did this b/c these variable are
6430 very commonly used in interactive work, so the less we need to
6434 very commonly used in interactive work, so the less we need to
6431 type the better off we are.
6435 type the better off we are.
6432 (Magic.magic_prun): updated @prun to better handle the namespaces
6436 (Magic.magic_prun): updated @prun to better handle the namespaces
6433 the file will run in, including a fix for __name__ not being set
6437 the file will run in, including a fix for __name__ not being set
6434 before.
6438 before.
6435
6439
6436 2002-01-20 Fernando Perez <fperez@colorado.edu>
6440 2002-01-20 Fernando Perez <fperez@colorado.edu>
6437
6441
6438 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6442 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6439 extra garbage for Python 2.2. Need to look more carefully into
6443 extra garbage for Python 2.2. Need to look more carefully into
6440 this later.
6444 this later.
6441
6445
6442 2002-01-19 Fernando Perez <fperez@colorado.edu>
6446 2002-01-19 Fernando Perez <fperez@colorado.edu>
6443
6447
6444 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6448 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6445 display SyntaxError exceptions properly formatted when they occur
6449 display SyntaxError exceptions properly formatted when they occur
6446 (they can be triggered by imported code).
6450 (they can be triggered by imported code).
6447
6451
6448 2002-01-18 Fernando Perez <fperez@colorado.edu>
6452 2002-01-18 Fernando Perez <fperez@colorado.edu>
6449
6453
6450 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6454 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6451 SyntaxError exceptions are reported nicely formatted, instead of
6455 SyntaxError exceptions are reported nicely formatted, instead of
6452 spitting out only offset information as before.
6456 spitting out only offset information as before.
6453 (Magic.magic_prun): Added the @prun function for executing
6457 (Magic.magic_prun): Added the @prun function for executing
6454 programs with command line args inside IPython.
6458 programs with command line args inside IPython.
6455
6459
6456 2002-01-16 Fernando Perez <fperez@colorado.edu>
6460 2002-01-16 Fernando Perez <fperez@colorado.edu>
6457
6461
6458 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6462 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6459 to *not* include the last item given in a range. This brings their
6463 to *not* include the last item given in a range. This brings their
6460 behavior in line with Python's slicing:
6464 behavior in line with Python's slicing:
6461 a[n1:n2] -> a[n1]...a[n2-1]
6465 a[n1:n2] -> a[n1]...a[n2-1]
6462 It may be a bit less convenient, but I prefer to stick to Python's
6466 It may be a bit less convenient, but I prefer to stick to Python's
6463 conventions *everywhere*, so users never have to wonder.
6467 conventions *everywhere*, so users never have to wonder.
6464 (Magic.magic_macro): Added @macro function to ease the creation of
6468 (Magic.magic_macro): Added @macro function to ease the creation of
6465 macros.
6469 macros.
6466
6470
6467 2002-01-05 Fernando Perez <fperez@colorado.edu>
6471 2002-01-05 Fernando Perez <fperez@colorado.edu>
6468
6472
6469 * Released 0.2.4.
6473 * Released 0.2.4.
6470
6474
6471 * IPython/iplib.py (Magic.magic_pdef):
6475 * IPython/iplib.py (Magic.magic_pdef):
6472 (InteractiveShell.safe_execfile): report magic lines and error
6476 (InteractiveShell.safe_execfile): report magic lines and error
6473 lines without line numbers so one can easily copy/paste them for
6477 lines without line numbers so one can easily copy/paste them for
6474 re-execution.
6478 re-execution.
6475
6479
6476 * Updated manual with recent changes.
6480 * Updated manual with recent changes.
6477
6481
6478 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6482 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6479 docstring printing when class? is called. Very handy for knowing
6483 docstring printing when class? is called. Very handy for knowing
6480 how to create class instances (as long as __init__ is well
6484 how to create class instances (as long as __init__ is well
6481 documented, of course :)
6485 documented, of course :)
6482 (Magic.magic_doc): print both class and constructor docstrings.
6486 (Magic.magic_doc): print both class and constructor docstrings.
6483 (Magic.magic_pdef): give constructor info if passed a class and
6487 (Magic.magic_pdef): give constructor info if passed a class and
6484 __call__ info for callable object instances.
6488 __call__ info for callable object instances.
6485
6489
6486 2002-01-04 Fernando Perez <fperez@colorado.edu>
6490 2002-01-04 Fernando Perez <fperez@colorado.edu>
6487
6491
6488 * Made deep_reload() off by default. It doesn't always work
6492 * Made deep_reload() off by default. It doesn't always work
6489 exactly as intended, so it's probably safer to have it off. It's
6493 exactly as intended, so it's probably safer to have it off. It's
6490 still available as dreload() anyway, so nothing is lost.
6494 still available as dreload() anyway, so nothing is lost.
6491
6495
6492 2002-01-02 Fernando Perez <fperez@colorado.edu>
6496 2002-01-02 Fernando Perez <fperez@colorado.edu>
6493
6497
6494 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6498 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6495 so I wanted an updated release).
6499 so I wanted an updated release).
6496
6500
6497 2001-12-27 Fernando Perez <fperez@colorado.edu>
6501 2001-12-27 Fernando Perez <fperez@colorado.edu>
6498
6502
6499 * IPython/iplib.py (InteractiveShell.interact): Added the original
6503 * IPython/iplib.py (InteractiveShell.interact): Added the original
6500 code from 'code.py' for this module in order to change the
6504 code from 'code.py' for this module in order to change the
6501 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6505 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6502 the history cache would break when the user hit Ctrl-C, and
6506 the history cache would break when the user hit Ctrl-C, and
6503 interact() offers no way to add any hooks to it.
6507 interact() offers no way to add any hooks to it.
6504
6508
6505 2001-12-23 Fernando Perez <fperez@colorado.edu>
6509 2001-12-23 Fernando Perez <fperez@colorado.edu>
6506
6510
6507 * setup.py: added check for 'MANIFEST' before trying to remove
6511 * setup.py: added check for 'MANIFEST' before trying to remove
6508 it. Thanks to Sean Reifschneider.
6512 it. Thanks to Sean Reifschneider.
6509
6513
6510 2001-12-22 Fernando Perez <fperez@colorado.edu>
6514 2001-12-22 Fernando Perez <fperez@colorado.edu>
6511
6515
6512 * Released 0.2.2.
6516 * Released 0.2.2.
6513
6517
6514 * Finished (reasonably) writing the manual. Later will add the
6518 * Finished (reasonably) writing the manual. Later will add the
6515 python-standard navigation stylesheets, but for the time being
6519 python-standard navigation stylesheets, but for the time being
6516 it's fairly complete. Distribution will include html and pdf
6520 it's fairly complete. Distribution will include html and pdf
6517 versions.
6521 versions.
6518
6522
6519 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6523 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6520 (MayaVi author).
6524 (MayaVi author).
6521
6525
6522 2001-12-21 Fernando Perez <fperez@colorado.edu>
6526 2001-12-21 Fernando Perez <fperez@colorado.edu>
6523
6527
6524 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6528 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6525 good public release, I think (with the manual and the distutils
6529 good public release, I think (with the manual and the distutils
6526 installer). The manual can use some work, but that can go
6530 installer). The manual can use some work, but that can go
6527 slowly. Otherwise I think it's quite nice for end users. Next
6531 slowly. Otherwise I think it's quite nice for end users. Next
6528 summer, rewrite the guts of it...
6532 summer, rewrite the guts of it...
6529
6533
6530 * Changed format of ipythonrc files to use whitespace as the
6534 * Changed format of ipythonrc files to use whitespace as the
6531 separator instead of an explicit '='. Cleaner.
6535 separator instead of an explicit '='. Cleaner.
6532
6536
6533 2001-12-20 Fernando Perez <fperez@colorado.edu>
6537 2001-12-20 Fernando Perez <fperez@colorado.edu>
6534
6538
6535 * Started a manual in LyX. For now it's just a quick merge of the
6539 * Started a manual in LyX. For now it's just a quick merge of the
6536 various internal docstrings and READMEs. Later it may grow into a
6540 various internal docstrings and READMEs. Later it may grow into a
6537 nice, full-blown manual.
6541 nice, full-blown manual.
6538
6542
6539 * Set up a distutils based installer. Installation should now be
6543 * Set up a distutils based installer. Installation should now be
6540 trivially simple for end-users.
6544 trivially simple for end-users.
6541
6545
6542 2001-12-11 Fernando Perez <fperez@colorado.edu>
6546 2001-12-11 Fernando Perez <fperez@colorado.edu>
6543
6547
6544 * Released 0.2.0. First public release, announced it at
6548 * Released 0.2.0. First public release, announced it at
6545 comp.lang.python. From now on, just bugfixes...
6549 comp.lang.python. From now on, just bugfixes...
6546
6550
6547 * Went through all the files, set copyright/license notices and
6551 * Went through all the files, set copyright/license notices and
6548 cleaned up things. Ready for release.
6552 cleaned up things. Ready for release.
6549
6553
6550 2001-12-10 Fernando Perez <fperez@colorado.edu>
6554 2001-12-10 Fernando Perez <fperez@colorado.edu>
6551
6555
6552 * Changed the first-time installer not to use tarfiles. It's more
6556 * Changed the first-time installer not to use tarfiles. It's more
6553 robust now and less unix-dependent. Also makes it easier for
6557 robust now and less unix-dependent. Also makes it easier for
6554 people to later upgrade versions.
6558 people to later upgrade versions.
6555
6559
6556 * Changed @exit to @abort to reflect the fact that it's pretty
6560 * Changed @exit to @abort to reflect the fact that it's pretty
6557 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6561 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6558 becomes significant only when IPyhton is embedded: in that case,
6562 becomes significant only when IPyhton is embedded: in that case,
6559 C-D closes IPython only, but @abort kills the enclosing program
6563 C-D closes IPython only, but @abort kills the enclosing program
6560 too (unless it had called IPython inside a try catching
6564 too (unless it had called IPython inside a try catching
6561 SystemExit).
6565 SystemExit).
6562
6566
6563 * Created Shell module which exposes the actuall IPython Shell
6567 * Created Shell module which exposes the actuall IPython Shell
6564 classes, currently the normal and the embeddable one. This at
6568 classes, currently the normal and the embeddable one. This at
6565 least offers a stable interface we won't need to change when
6569 least offers a stable interface we won't need to change when
6566 (later) the internals are rewritten. That rewrite will be confined
6570 (later) the internals are rewritten. That rewrite will be confined
6567 to iplib and ipmaker, but the Shell interface should remain as is.
6571 to iplib and ipmaker, but the Shell interface should remain as is.
6568
6572
6569 * Added embed module which offers an embeddable IPShell object,
6573 * Added embed module which offers an embeddable IPShell object,
6570 useful to fire up IPython *inside* a running program. Great for
6574 useful to fire up IPython *inside* a running program. Great for
6571 debugging or dynamical data analysis.
6575 debugging or dynamical data analysis.
6572
6576
6573 2001-12-08 Fernando Perez <fperez@colorado.edu>
6577 2001-12-08 Fernando Perez <fperez@colorado.edu>
6574
6578
6575 * Fixed small bug preventing seeing info from methods of defined
6579 * Fixed small bug preventing seeing info from methods of defined
6576 objects (incorrect namespace in _ofind()).
6580 objects (incorrect namespace in _ofind()).
6577
6581
6578 * Documentation cleanup. Moved the main usage docstrings to a
6582 * Documentation cleanup. Moved the main usage docstrings to a
6579 separate file, usage.py (cleaner to maintain, and hopefully in the
6583 separate file, usage.py (cleaner to maintain, and hopefully in the
6580 future some perlpod-like way of producing interactive, man and
6584 future some perlpod-like way of producing interactive, man and
6581 html docs out of it will be found).
6585 html docs out of it will be found).
6582
6586
6583 * Added @profile to see your profile at any time.
6587 * Added @profile to see your profile at any time.
6584
6588
6585 * Added @p as an alias for 'print'. It's especially convenient if
6589 * Added @p as an alias for 'print'. It's especially convenient if
6586 using automagic ('p x' prints x).
6590 using automagic ('p x' prints x).
6587
6591
6588 * Small cleanups and fixes after a pychecker run.
6592 * Small cleanups and fixes after a pychecker run.
6589
6593
6590 * Changed the @cd command to handle @cd - and @cd -<n> for
6594 * Changed the @cd command to handle @cd - and @cd -<n> for
6591 visiting any directory in _dh.
6595 visiting any directory in _dh.
6592
6596
6593 * Introduced _dh, a history of visited directories. @dhist prints
6597 * Introduced _dh, a history of visited directories. @dhist prints
6594 it out with numbers.
6598 it out with numbers.
6595
6599
6596 2001-12-07 Fernando Perez <fperez@colorado.edu>
6600 2001-12-07 Fernando Perez <fperez@colorado.edu>
6597
6601
6598 * Released 0.1.22
6602 * Released 0.1.22
6599
6603
6600 * Made initialization a bit more robust against invalid color
6604 * Made initialization a bit more robust against invalid color
6601 options in user input (exit, not traceback-crash).
6605 options in user input (exit, not traceback-crash).
6602
6606
6603 * Changed the bug crash reporter to write the report only in the
6607 * Changed the bug crash reporter to write the report only in the
6604 user's .ipython directory. That way IPython won't litter people's
6608 user's .ipython directory. That way IPython won't litter people's
6605 hard disks with crash files all over the place. Also print on
6609 hard disks with crash files all over the place. Also print on
6606 screen the necessary mail command.
6610 screen the necessary mail command.
6607
6611
6608 * With the new ultraTB, implemented LightBG color scheme for light
6612 * With the new ultraTB, implemented LightBG color scheme for light
6609 background terminals. A lot of people like white backgrounds, so I
6613 background terminals. A lot of people like white backgrounds, so I
6610 guess we should at least give them something readable.
6614 guess we should at least give them something readable.
6611
6615
6612 2001-12-06 Fernando Perez <fperez@colorado.edu>
6616 2001-12-06 Fernando Perez <fperez@colorado.edu>
6613
6617
6614 * Modified the structure of ultraTB. Now there's a proper class
6618 * Modified the structure of ultraTB. Now there's a proper class
6615 for tables of color schemes which allow adding schemes easily and
6619 for tables of color schemes which allow adding schemes easily and
6616 switching the active scheme without creating a new instance every
6620 switching the active scheme without creating a new instance every
6617 time (which was ridiculous). The syntax for creating new schemes
6621 time (which was ridiculous). The syntax for creating new schemes
6618 is also cleaner. I think ultraTB is finally done, with a clean
6622 is also cleaner. I think ultraTB is finally done, with a clean
6619 class structure. Names are also much cleaner (now there's proper
6623 class structure. Names are also much cleaner (now there's proper
6620 color tables, no need for every variable to also have 'color' in
6624 color tables, no need for every variable to also have 'color' in
6621 its name).
6625 its name).
6622
6626
6623 * Broke down genutils into separate files. Now genutils only
6627 * Broke down genutils into separate files. Now genutils only
6624 contains utility functions, and classes have been moved to their
6628 contains utility functions, and classes have been moved to their
6625 own files (they had enough independent functionality to warrant
6629 own files (they had enough independent functionality to warrant
6626 it): ConfigLoader, OutputTrap, Struct.
6630 it): ConfigLoader, OutputTrap, Struct.
6627
6631
6628 2001-12-05 Fernando Perez <fperez@colorado.edu>
6632 2001-12-05 Fernando Perez <fperez@colorado.edu>
6629
6633
6630 * IPython turns 21! Released version 0.1.21, as a candidate for
6634 * IPython turns 21! Released version 0.1.21, as a candidate for
6631 public consumption. If all goes well, release in a few days.
6635 public consumption. If all goes well, release in a few days.
6632
6636
6633 * Fixed path bug (files in Extensions/ directory wouldn't be found
6637 * Fixed path bug (files in Extensions/ directory wouldn't be found
6634 unless IPython/ was explicitly in sys.path).
6638 unless IPython/ was explicitly in sys.path).
6635
6639
6636 * Extended the FlexCompleter class as MagicCompleter to allow
6640 * Extended the FlexCompleter class as MagicCompleter to allow
6637 completion of @-starting lines.
6641 completion of @-starting lines.
6638
6642
6639 * Created __release__.py file as a central repository for release
6643 * Created __release__.py file as a central repository for release
6640 info that other files can read from.
6644 info that other files can read from.
6641
6645
6642 * Fixed small bug in logging: when logging was turned on in
6646 * Fixed small bug in logging: when logging was turned on in
6643 mid-session, old lines with special meanings (!@?) were being
6647 mid-session, old lines with special meanings (!@?) were being
6644 logged without the prepended comment, which is necessary since
6648 logged without the prepended comment, which is necessary since
6645 they are not truly valid python syntax. This should make session
6649 they are not truly valid python syntax. This should make session
6646 restores produce less errors.
6650 restores produce less errors.
6647
6651
6648 * The namespace cleanup forced me to make a FlexCompleter class
6652 * The namespace cleanup forced me to make a FlexCompleter class
6649 which is nothing but a ripoff of rlcompleter, but with selectable
6653 which is nothing but a ripoff of rlcompleter, but with selectable
6650 namespace (rlcompleter only works in __main__.__dict__). I'll try
6654 namespace (rlcompleter only works in __main__.__dict__). I'll try
6651 to submit a note to the authors to see if this change can be
6655 to submit a note to the authors to see if this change can be
6652 incorporated in future rlcompleter releases (Dec.6: done)
6656 incorporated in future rlcompleter releases (Dec.6: done)
6653
6657
6654 * More fixes to namespace handling. It was a mess! Now all
6658 * More fixes to namespace handling. It was a mess! Now all
6655 explicit references to __main__.__dict__ are gone (except when
6659 explicit references to __main__.__dict__ are gone (except when
6656 really needed) and everything is handled through the namespace
6660 really needed) and everything is handled through the namespace
6657 dicts in the IPython instance. We seem to be getting somewhere
6661 dicts in the IPython instance. We seem to be getting somewhere
6658 with this, finally...
6662 with this, finally...
6659
6663
6660 * Small documentation updates.
6664 * Small documentation updates.
6661
6665
6662 * Created the Extensions directory under IPython (with an
6666 * Created the Extensions directory under IPython (with an
6663 __init__.py). Put the PhysicalQ stuff there. This directory should
6667 __init__.py). Put the PhysicalQ stuff there. This directory should
6664 be used for all special-purpose extensions.
6668 be used for all special-purpose extensions.
6665
6669
6666 * File renaming:
6670 * File renaming:
6667 ipythonlib --> ipmaker
6671 ipythonlib --> ipmaker
6668 ipplib --> iplib
6672 ipplib --> iplib
6669 This makes a bit more sense in terms of what these files actually do.
6673 This makes a bit more sense in terms of what these files actually do.
6670
6674
6671 * Moved all the classes and functions in ipythonlib to ipplib, so
6675 * Moved all the classes and functions in ipythonlib to ipplib, so
6672 now ipythonlib only has make_IPython(). This will ease up its
6676 now ipythonlib only has make_IPython(). This will ease up its
6673 splitting in smaller functional chunks later.
6677 splitting in smaller functional chunks later.
6674
6678
6675 * Cleaned up (done, I think) output of @whos. Better column
6679 * Cleaned up (done, I think) output of @whos. Better column
6676 formatting, and now shows str(var) for as much as it can, which is
6680 formatting, and now shows str(var) for as much as it can, which is
6677 typically what one gets with a 'print var'.
6681 typically what one gets with a 'print var'.
6678
6682
6679 2001-12-04 Fernando Perez <fperez@colorado.edu>
6683 2001-12-04 Fernando Perez <fperez@colorado.edu>
6680
6684
6681 * Fixed namespace problems. Now builtin/IPyhton/user names get
6685 * Fixed namespace problems. Now builtin/IPyhton/user names get
6682 properly reported in their namespace. Internal namespace handling
6686 properly reported in their namespace. Internal namespace handling
6683 is finally getting decent (not perfect yet, but much better than
6687 is finally getting decent (not perfect yet, but much better than
6684 the ad-hoc mess we had).
6688 the ad-hoc mess we had).
6685
6689
6686 * Removed -exit option. If people just want to run a python
6690 * Removed -exit option. If people just want to run a python
6687 script, that's what the normal interpreter is for. Less
6691 script, that's what the normal interpreter is for. Less
6688 unnecessary options, less chances for bugs.
6692 unnecessary options, less chances for bugs.
6689
6693
6690 * Added a crash handler which generates a complete post-mortem if
6694 * Added a crash handler which generates a complete post-mortem if
6691 IPython crashes. This will help a lot in tracking bugs down the
6695 IPython crashes. This will help a lot in tracking bugs down the
6692 road.
6696 road.
6693
6697
6694 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6698 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6695 which were boud to functions being reassigned would bypass the
6699 which were boud to functions being reassigned would bypass the
6696 logger, breaking the sync of _il with the prompt counter. This
6700 logger, breaking the sync of _il with the prompt counter. This
6697 would then crash IPython later when a new line was logged.
6701 would then crash IPython later when a new line was logged.
6698
6702
6699 2001-12-02 Fernando Perez <fperez@colorado.edu>
6703 2001-12-02 Fernando Perez <fperez@colorado.edu>
6700
6704
6701 * Made IPython a package. This means people don't have to clutter
6705 * Made IPython a package. This means people don't have to clutter
6702 their sys.path with yet another directory. Changed the INSTALL
6706 their sys.path with yet another directory. Changed the INSTALL
6703 file accordingly.
6707 file accordingly.
6704
6708
6705 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6709 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6706 sorts its output (so @who shows it sorted) and @whos formats the
6710 sorts its output (so @who shows it sorted) and @whos formats the
6707 table according to the width of the first column. Nicer, easier to
6711 table according to the width of the first column. Nicer, easier to
6708 read. Todo: write a generic table_format() which takes a list of
6712 read. Todo: write a generic table_format() which takes a list of
6709 lists and prints it nicely formatted, with optional row/column
6713 lists and prints it nicely formatted, with optional row/column
6710 separators and proper padding and justification.
6714 separators and proper padding and justification.
6711
6715
6712 * Released 0.1.20
6716 * Released 0.1.20
6713
6717
6714 * Fixed bug in @log which would reverse the inputcache list (a
6718 * Fixed bug in @log which would reverse the inputcache list (a
6715 copy operation was missing).
6719 copy operation was missing).
6716
6720
6717 * Code cleanup. @config was changed to use page(). Better, since
6721 * Code cleanup. @config was changed to use page(). Better, since
6718 its output is always quite long.
6722 its output is always quite long.
6719
6723
6720 * Itpl is back as a dependency. I was having too many problems
6724 * Itpl is back as a dependency. I was having too many problems
6721 getting the parametric aliases to work reliably, and it's just
6725 getting the parametric aliases to work reliably, and it's just
6722 easier to code weird string operations with it than playing %()s
6726 easier to code weird string operations with it than playing %()s
6723 games. It's only ~6k, so I don't think it's too big a deal.
6727 games. It's only ~6k, so I don't think it's too big a deal.
6724
6728
6725 * Found (and fixed) a very nasty bug with history. !lines weren't
6729 * Found (and fixed) a very nasty bug with history. !lines weren't
6726 getting cached, and the out of sync caches would crash
6730 getting cached, and the out of sync caches would crash
6727 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6731 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6728 division of labor a bit better. Bug fixed, cleaner structure.
6732 division of labor a bit better. Bug fixed, cleaner structure.
6729
6733
6730 2001-12-01 Fernando Perez <fperez@colorado.edu>
6734 2001-12-01 Fernando Perez <fperez@colorado.edu>
6731
6735
6732 * Released 0.1.19
6736 * Released 0.1.19
6733
6737
6734 * Added option -n to @hist to prevent line number printing. Much
6738 * Added option -n to @hist to prevent line number printing. Much
6735 easier to copy/paste code this way.
6739 easier to copy/paste code this way.
6736
6740
6737 * Created global _il to hold the input list. Allows easy
6741 * Created global _il to hold the input list. Allows easy
6738 re-execution of blocks of code by slicing it (inspired by Janko's
6742 re-execution of blocks of code by slicing it (inspired by Janko's
6739 comment on 'macros').
6743 comment on 'macros').
6740
6744
6741 * Small fixes and doc updates.
6745 * Small fixes and doc updates.
6742
6746
6743 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6747 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6744 much too fragile with automagic. Handles properly multi-line
6748 much too fragile with automagic. Handles properly multi-line
6745 statements and takes parameters.
6749 statements and takes parameters.
6746
6750
6747 2001-11-30 Fernando Perez <fperez@colorado.edu>
6751 2001-11-30 Fernando Perez <fperez@colorado.edu>
6748
6752
6749 * Version 0.1.18 released.
6753 * Version 0.1.18 released.
6750
6754
6751 * Fixed nasty namespace bug in initial module imports.
6755 * Fixed nasty namespace bug in initial module imports.
6752
6756
6753 * Added copyright/license notes to all code files (except
6757 * Added copyright/license notes to all code files (except
6754 DPyGetOpt). For the time being, LGPL. That could change.
6758 DPyGetOpt). For the time being, LGPL. That could change.
6755
6759
6756 * Rewrote a much nicer README, updated INSTALL, cleaned up
6760 * Rewrote a much nicer README, updated INSTALL, cleaned up
6757 ipythonrc-* samples.
6761 ipythonrc-* samples.
6758
6762
6759 * Overall code/documentation cleanup. Basically ready for
6763 * Overall code/documentation cleanup. Basically ready for
6760 release. Only remaining thing: licence decision (LGPL?).
6764 release. Only remaining thing: licence decision (LGPL?).
6761
6765
6762 * Converted load_config to a class, ConfigLoader. Now recursion
6766 * Converted load_config to a class, ConfigLoader. Now recursion
6763 control is better organized. Doesn't include the same file twice.
6767 control is better organized. Doesn't include the same file twice.
6764
6768
6765 2001-11-29 Fernando Perez <fperez@colorado.edu>
6769 2001-11-29 Fernando Perez <fperez@colorado.edu>
6766
6770
6767 * Got input history working. Changed output history variables from
6771 * Got input history working. Changed output history variables from
6768 _p to _o so that _i is for input and _o for output. Just cleaner
6772 _p to _o so that _i is for input and _o for output. Just cleaner
6769 convention.
6773 convention.
6770
6774
6771 * Implemented parametric aliases. This pretty much allows the
6775 * Implemented parametric aliases. This pretty much allows the
6772 alias system to offer full-blown shell convenience, I think.
6776 alias system to offer full-blown shell convenience, I think.
6773
6777
6774 * Version 0.1.17 released, 0.1.18 opened.
6778 * Version 0.1.17 released, 0.1.18 opened.
6775
6779
6776 * dot_ipython/ipythonrc (alias): added documentation.
6780 * dot_ipython/ipythonrc (alias): added documentation.
6777 (xcolor): Fixed small bug (xcolors -> xcolor)
6781 (xcolor): Fixed small bug (xcolors -> xcolor)
6778
6782
6779 * Changed the alias system. Now alias is a magic command to define
6783 * Changed the alias system. Now alias is a magic command to define
6780 aliases just like the shell. Rationale: the builtin magics should
6784 aliases just like the shell. Rationale: the builtin magics should
6781 be there for things deeply connected to IPython's
6785 be there for things deeply connected to IPython's
6782 architecture. And this is a much lighter system for what I think
6786 architecture. And this is a much lighter system for what I think
6783 is the really important feature: allowing users to define quickly
6787 is the really important feature: allowing users to define quickly
6784 magics that will do shell things for them, so they can customize
6788 magics that will do shell things for them, so they can customize
6785 IPython easily to match their work habits. If someone is really
6789 IPython easily to match their work habits. If someone is really
6786 desperate to have another name for a builtin alias, they can
6790 desperate to have another name for a builtin alias, they can
6787 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6791 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6788 works.
6792 works.
6789
6793
6790 2001-11-28 Fernando Perez <fperez@colorado.edu>
6794 2001-11-28 Fernando Perez <fperez@colorado.edu>
6791
6795
6792 * Changed @file so that it opens the source file at the proper
6796 * Changed @file so that it opens the source file at the proper
6793 line. Since it uses less, if your EDITOR environment is
6797 line. Since it uses less, if your EDITOR environment is
6794 configured, typing v will immediately open your editor of choice
6798 configured, typing v will immediately open your editor of choice
6795 right at the line where the object is defined. Not as quick as
6799 right at the line where the object is defined. Not as quick as
6796 having a direct @edit command, but for all intents and purposes it
6800 having a direct @edit command, but for all intents and purposes it
6797 works. And I don't have to worry about writing @edit to deal with
6801 works. And I don't have to worry about writing @edit to deal with
6798 all the editors, less does that.
6802 all the editors, less does that.
6799
6803
6800 * Version 0.1.16 released, 0.1.17 opened.
6804 * Version 0.1.16 released, 0.1.17 opened.
6801
6805
6802 * Fixed some nasty bugs in the page/page_dumb combo that could
6806 * Fixed some nasty bugs in the page/page_dumb combo that could
6803 crash IPython.
6807 crash IPython.
6804
6808
6805 2001-11-27 Fernando Perez <fperez@colorado.edu>
6809 2001-11-27 Fernando Perez <fperez@colorado.edu>
6806
6810
6807 * Version 0.1.15 released, 0.1.16 opened.
6811 * Version 0.1.15 released, 0.1.16 opened.
6808
6812
6809 * Finally got ? and ?? to work for undefined things: now it's
6813 * Finally got ? and ?? to work for undefined things: now it's
6810 possible to type {}.get? and get information about the get method
6814 possible to type {}.get? and get information about the get method
6811 of dicts, or os.path? even if only os is defined (so technically
6815 of dicts, or os.path? even if only os is defined (so technically
6812 os.path isn't). Works at any level. For example, after import os,
6816 os.path isn't). Works at any level. For example, after import os,
6813 os?, os.path?, os.path.abspath? all work. This is great, took some
6817 os?, os.path?, os.path.abspath? all work. This is great, took some
6814 work in _ofind.
6818 work in _ofind.
6815
6819
6816 * Fixed more bugs with logging. The sanest way to do it was to add
6820 * Fixed more bugs with logging. The sanest way to do it was to add
6817 to @log a 'mode' parameter. Killed two in one shot (this mode
6821 to @log a 'mode' parameter. Killed two in one shot (this mode
6818 option was a request of Janko's). I think it's finally clean
6822 option was a request of Janko's). I think it's finally clean
6819 (famous last words).
6823 (famous last words).
6820
6824
6821 * Added a page_dumb() pager which does a decent job of paging on
6825 * Added a page_dumb() pager which does a decent job of paging on
6822 screen, if better things (like less) aren't available. One less
6826 screen, if better things (like less) aren't available. One less
6823 unix dependency (someday maybe somebody will port this to
6827 unix dependency (someday maybe somebody will port this to
6824 windows).
6828 windows).
6825
6829
6826 * Fixed problem in magic_log: would lock of logging out if log
6830 * Fixed problem in magic_log: would lock of logging out if log
6827 creation failed (because it would still think it had succeeded).
6831 creation failed (because it would still think it had succeeded).
6828
6832
6829 * Improved the page() function using curses to auto-detect screen
6833 * Improved the page() function using curses to auto-detect screen
6830 size. Now it can make a much better decision on whether to print
6834 size. Now it can make a much better decision on whether to print
6831 or page a string. Option screen_length was modified: a value 0
6835 or page a string. Option screen_length was modified: a value 0
6832 means auto-detect, and that's the default now.
6836 means auto-detect, and that's the default now.
6833
6837
6834 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6838 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6835 go out. I'll test it for a few days, then talk to Janko about
6839 go out. I'll test it for a few days, then talk to Janko about
6836 licences and announce it.
6840 licences and announce it.
6837
6841
6838 * Fixed the length of the auto-generated ---> prompt which appears
6842 * Fixed the length of the auto-generated ---> prompt which appears
6839 for auto-parens and auto-quotes. Getting this right isn't trivial,
6843 for auto-parens and auto-quotes. Getting this right isn't trivial,
6840 with all the color escapes, different prompt types and optional
6844 with all the color escapes, different prompt types and optional
6841 separators. But it seems to be working in all the combinations.
6845 separators. But it seems to be working in all the combinations.
6842
6846
6843 2001-11-26 Fernando Perez <fperez@colorado.edu>
6847 2001-11-26 Fernando Perez <fperez@colorado.edu>
6844
6848
6845 * Wrote a regexp filter to get option types from the option names
6849 * Wrote a regexp filter to get option types from the option names
6846 string. This eliminates the need to manually keep two duplicate
6850 string. This eliminates the need to manually keep two duplicate
6847 lists.
6851 lists.
6848
6852
6849 * Removed the unneeded check_option_names. Now options are handled
6853 * Removed the unneeded check_option_names. Now options are handled
6850 in a much saner manner and it's easy to visually check that things
6854 in a much saner manner and it's easy to visually check that things
6851 are ok.
6855 are ok.
6852
6856
6853 * Updated version numbers on all files I modified to carry a
6857 * Updated version numbers on all files I modified to carry a
6854 notice so Janko and Nathan have clear version markers.
6858 notice so Janko and Nathan have clear version markers.
6855
6859
6856 * Updated docstring for ultraTB with my changes. I should send
6860 * Updated docstring for ultraTB with my changes. I should send
6857 this to Nathan.
6861 this to Nathan.
6858
6862
6859 * Lots of small fixes. Ran everything through pychecker again.
6863 * Lots of small fixes. Ran everything through pychecker again.
6860
6864
6861 * Made loading of deep_reload an cmd line option. If it's not too
6865 * Made loading of deep_reload an cmd line option. If it's not too
6862 kosher, now people can just disable it. With -nodeep_reload it's
6866 kosher, now people can just disable it. With -nodeep_reload it's
6863 still available as dreload(), it just won't overwrite reload().
6867 still available as dreload(), it just won't overwrite reload().
6864
6868
6865 * Moved many options to the no| form (-opt and -noopt
6869 * Moved many options to the no| form (-opt and -noopt
6866 accepted). Cleaner.
6870 accepted). Cleaner.
6867
6871
6868 * Changed magic_log so that if called with no parameters, it uses
6872 * Changed magic_log so that if called with no parameters, it uses
6869 'rotate' mode. That way auto-generated logs aren't automatically
6873 'rotate' mode. That way auto-generated logs aren't automatically
6870 over-written. For normal logs, now a backup is made if it exists
6874 over-written. For normal logs, now a backup is made if it exists
6871 (only 1 level of backups). A new 'backup' mode was added to the
6875 (only 1 level of backups). A new 'backup' mode was added to the
6872 Logger class to support this. This was a request by Janko.
6876 Logger class to support this. This was a request by Janko.
6873
6877
6874 * Added @logoff/@logon to stop/restart an active log.
6878 * Added @logoff/@logon to stop/restart an active log.
6875
6879
6876 * Fixed a lot of bugs in log saving/replay. It was pretty
6880 * Fixed a lot of bugs in log saving/replay. It was pretty
6877 broken. Now special lines (!@,/) appear properly in the command
6881 broken. Now special lines (!@,/) appear properly in the command
6878 history after a log replay.
6882 history after a log replay.
6879
6883
6880 * Tried and failed to implement full session saving via pickle. My
6884 * Tried and failed to implement full session saving via pickle. My
6881 idea was to pickle __main__.__dict__, but modules can't be
6885 idea was to pickle __main__.__dict__, but modules can't be
6882 pickled. This would be a better alternative to replaying logs, but
6886 pickled. This would be a better alternative to replaying logs, but
6883 seems quite tricky to get to work. Changed -session to be called
6887 seems quite tricky to get to work. Changed -session to be called
6884 -logplay, which more accurately reflects what it does. And if we
6888 -logplay, which more accurately reflects what it does. And if we
6885 ever get real session saving working, -session is now available.
6889 ever get real session saving working, -session is now available.
6886
6890
6887 * Implemented color schemes for prompts also. As for tracebacks,
6891 * Implemented color schemes for prompts also. As for tracebacks,
6888 currently only NoColor and Linux are supported. But now the
6892 currently only NoColor and Linux are supported. But now the
6889 infrastructure is in place, based on a generic ColorScheme
6893 infrastructure is in place, based on a generic ColorScheme
6890 class. So writing and activating new schemes both for the prompts
6894 class. So writing and activating new schemes both for the prompts
6891 and the tracebacks should be straightforward.
6895 and the tracebacks should be straightforward.
6892
6896
6893 * Version 0.1.13 released, 0.1.14 opened.
6897 * Version 0.1.13 released, 0.1.14 opened.
6894
6898
6895 * Changed handling of options for output cache. Now counter is
6899 * Changed handling of options for output cache. Now counter is
6896 hardwired starting at 1 and one specifies the maximum number of
6900 hardwired starting at 1 and one specifies the maximum number of
6897 entries *in the outcache* (not the max prompt counter). This is
6901 entries *in the outcache* (not the max prompt counter). This is
6898 much better, since many statements won't increase the cache
6902 much better, since many statements won't increase the cache
6899 count. It also eliminated some confusing options, now there's only
6903 count. It also eliminated some confusing options, now there's only
6900 one: cache_size.
6904 one: cache_size.
6901
6905
6902 * Added 'alias' magic function and magic_alias option in the
6906 * Added 'alias' magic function and magic_alias option in the
6903 ipythonrc file. Now the user can easily define whatever names he
6907 ipythonrc file. Now the user can easily define whatever names he
6904 wants for the magic functions without having to play weird
6908 wants for the magic functions without having to play weird
6905 namespace games. This gives IPython a real shell-like feel.
6909 namespace games. This gives IPython a real shell-like feel.
6906
6910
6907 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6911 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6908 @ or not).
6912 @ or not).
6909
6913
6910 This was one of the last remaining 'visible' bugs (that I know
6914 This was one of the last remaining 'visible' bugs (that I know
6911 of). I think if I can clean up the session loading so it works
6915 of). I think if I can clean up the session loading so it works
6912 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6916 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6913 about licensing).
6917 about licensing).
6914
6918
6915 2001-11-25 Fernando Perez <fperez@colorado.edu>
6919 2001-11-25 Fernando Perez <fperez@colorado.edu>
6916
6920
6917 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6921 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6918 there's a cleaner distinction between what ? and ?? show.
6922 there's a cleaner distinction between what ? and ?? show.
6919
6923
6920 * Added screen_length option. Now the user can define his own
6924 * Added screen_length option. Now the user can define his own
6921 screen size for page() operations.
6925 screen size for page() operations.
6922
6926
6923 * Implemented magic shell-like functions with automatic code
6927 * Implemented magic shell-like functions with automatic code
6924 generation. Now adding another function is just a matter of adding
6928 generation. Now adding another function is just a matter of adding
6925 an entry to a dict, and the function is dynamically generated at
6929 an entry to a dict, and the function is dynamically generated at
6926 run-time. Python has some really cool features!
6930 run-time. Python has some really cool features!
6927
6931
6928 * Renamed many options to cleanup conventions a little. Now all
6932 * Renamed many options to cleanup conventions a little. Now all
6929 are lowercase, and only underscores where needed. Also in the code
6933 are lowercase, and only underscores where needed. Also in the code
6930 option name tables are clearer.
6934 option name tables are clearer.
6931
6935
6932 * Changed prompts a little. Now input is 'In [n]:' instead of
6936 * Changed prompts a little. Now input is 'In [n]:' instead of
6933 'In[n]:='. This allows it the numbers to be aligned with the
6937 'In[n]:='. This allows it the numbers to be aligned with the
6934 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6938 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6935 Python (it was a Mathematica thing). The '...' continuation prompt
6939 Python (it was a Mathematica thing). The '...' continuation prompt
6936 was also changed a little to align better.
6940 was also changed a little to align better.
6937
6941
6938 * Fixed bug when flushing output cache. Not all _p<n> variables
6942 * Fixed bug when flushing output cache. Not all _p<n> variables
6939 exist, so their deletion needs to be wrapped in a try:
6943 exist, so their deletion needs to be wrapped in a try:
6940
6944
6941 * Figured out how to properly use inspect.formatargspec() (it
6945 * Figured out how to properly use inspect.formatargspec() (it
6942 requires the args preceded by *). So I removed all the code from
6946 requires the args preceded by *). So I removed all the code from
6943 _get_pdef in Magic, which was just replicating that.
6947 _get_pdef in Magic, which was just replicating that.
6944
6948
6945 * Added test to prefilter to allow redefining magic function names
6949 * Added test to prefilter to allow redefining magic function names
6946 as variables. This is ok, since the @ form is always available,
6950 as variables. This is ok, since the @ form is always available,
6947 but whe should allow the user to define a variable called 'ls' if
6951 but whe should allow the user to define a variable called 'ls' if
6948 he needs it.
6952 he needs it.
6949
6953
6950 * Moved the ToDo information from README into a separate ToDo.
6954 * Moved the ToDo information from README into a separate ToDo.
6951
6955
6952 * General code cleanup and small bugfixes. I think it's close to a
6956 * General code cleanup and small bugfixes. I think it's close to a
6953 state where it can be released, obviously with a big 'beta'
6957 state where it can be released, obviously with a big 'beta'
6954 warning on it.
6958 warning on it.
6955
6959
6956 * Got the magic function split to work. Now all magics are defined
6960 * Got the magic function split to work. Now all magics are defined
6957 in a separate class. It just organizes things a bit, and now
6961 in a separate class. It just organizes things a bit, and now
6958 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6962 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6959 was too long).
6963 was too long).
6960
6964
6961 * Changed @clear to @reset to avoid potential confusions with
6965 * Changed @clear to @reset to avoid potential confusions with
6962 the shell command clear. Also renamed @cl to @clear, which does
6966 the shell command clear. Also renamed @cl to @clear, which does
6963 exactly what people expect it to from their shell experience.
6967 exactly what people expect it to from their shell experience.
6964
6968
6965 Added a check to the @reset command (since it's so
6969 Added a check to the @reset command (since it's so
6966 destructive, it's probably a good idea to ask for confirmation).
6970 destructive, it's probably a good idea to ask for confirmation).
6967 But now reset only works for full namespace resetting. Since the
6971 But now reset only works for full namespace resetting. Since the
6968 del keyword is already there for deleting a few specific
6972 del keyword is already there for deleting a few specific
6969 variables, I don't see the point of having a redundant magic
6973 variables, I don't see the point of having a redundant magic
6970 function for the same task.
6974 function for the same task.
6971
6975
6972 2001-11-24 Fernando Perez <fperez@colorado.edu>
6976 2001-11-24 Fernando Perez <fperez@colorado.edu>
6973
6977
6974 * Updated the builtin docs (esp. the ? ones).
6978 * Updated the builtin docs (esp. the ? ones).
6975
6979
6976 * Ran all the code through pychecker. Not terribly impressed with
6980 * Ran all the code through pychecker. Not terribly impressed with
6977 it: lots of spurious warnings and didn't really find anything of
6981 it: lots of spurious warnings and didn't really find anything of
6978 substance (just a few modules being imported and not used).
6982 substance (just a few modules being imported and not used).
6979
6983
6980 * Implemented the new ultraTB functionality into IPython. New
6984 * Implemented the new ultraTB functionality into IPython. New
6981 option: xcolors. This chooses color scheme. xmode now only selects
6985 option: xcolors. This chooses color scheme. xmode now only selects
6982 between Plain and Verbose. Better orthogonality.
6986 between Plain and Verbose. Better orthogonality.
6983
6987
6984 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6988 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6985 mode and color scheme for the exception handlers. Now it's
6989 mode and color scheme for the exception handlers. Now it's
6986 possible to have the verbose traceback with no coloring.
6990 possible to have the verbose traceback with no coloring.
6987
6991
6988 2001-11-23 Fernando Perez <fperez@colorado.edu>
6992 2001-11-23 Fernando Perez <fperez@colorado.edu>
6989
6993
6990 * Version 0.1.12 released, 0.1.13 opened.
6994 * Version 0.1.12 released, 0.1.13 opened.
6991
6995
6992 * Removed option to set auto-quote and auto-paren escapes by
6996 * Removed option to set auto-quote and auto-paren escapes by
6993 user. The chances of breaking valid syntax are just too high. If
6997 user. The chances of breaking valid syntax are just too high. If
6994 someone *really* wants, they can always dig into the code.
6998 someone *really* wants, they can always dig into the code.
6995
6999
6996 * Made prompt separators configurable.
7000 * Made prompt separators configurable.
6997
7001
6998 2001-11-22 Fernando Perez <fperez@colorado.edu>
7002 2001-11-22 Fernando Perez <fperez@colorado.edu>
6999
7003
7000 * Small bugfixes in many places.
7004 * Small bugfixes in many places.
7001
7005
7002 * Removed the MyCompleter class from ipplib. It seemed redundant
7006 * Removed the MyCompleter class from ipplib. It seemed redundant
7003 with the C-p,C-n history search functionality. Less code to
7007 with the C-p,C-n history search functionality. Less code to
7004 maintain.
7008 maintain.
7005
7009
7006 * Moved all the original ipython.py code into ipythonlib.py. Right
7010 * Moved all the original ipython.py code into ipythonlib.py. Right
7007 now it's just one big dump into a function called make_IPython, so
7011 now it's just one big dump into a function called make_IPython, so
7008 no real modularity has been gained. But at least it makes the
7012 no real modularity has been gained. But at least it makes the
7009 wrapper script tiny, and since ipythonlib is a module, it gets
7013 wrapper script tiny, and since ipythonlib is a module, it gets
7010 compiled and startup is much faster.
7014 compiled and startup is much faster.
7011
7015
7012 This is a reasobably 'deep' change, so we should test it for a
7016 This is a reasobably 'deep' change, so we should test it for a
7013 while without messing too much more with the code.
7017 while without messing too much more with the code.
7014
7018
7015 2001-11-21 Fernando Perez <fperez@colorado.edu>
7019 2001-11-21 Fernando Perez <fperez@colorado.edu>
7016
7020
7017 * Version 0.1.11 released, 0.1.12 opened for further work.
7021 * Version 0.1.11 released, 0.1.12 opened for further work.
7018
7022
7019 * Removed dependency on Itpl. It was only needed in one place. It
7023 * Removed dependency on Itpl. It was only needed in one place. It
7020 would be nice if this became part of python, though. It makes life
7024 would be nice if this became part of python, though. It makes life
7021 *a lot* easier in some cases.
7025 *a lot* easier in some cases.
7022
7026
7023 * Simplified the prefilter code a bit. Now all handlers are
7027 * Simplified the prefilter code a bit. Now all handlers are
7024 expected to explicitly return a value (at least a blank string).
7028 expected to explicitly return a value (at least a blank string).
7025
7029
7026 * Heavy edits in ipplib. Removed the help system altogether. Now
7030 * Heavy edits in ipplib. Removed the help system altogether. Now
7027 obj?/?? is used for inspecting objects, a magic @doc prints
7031 obj?/?? is used for inspecting objects, a magic @doc prints
7028 docstrings, and full-blown Python help is accessed via the 'help'
7032 docstrings, and full-blown Python help is accessed via the 'help'
7029 keyword. This cleans up a lot of code (less to maintain) and does
7033 keyword. This cleans up a lot of code (less to maintain) and does
7030 the job. Since 'help' is now a standard Python component, might as
7034 the job. Since 'help' is now a standard Python component, might as
7031 well use it and remove duplicate functionality.
7035 well use it and remove duplicate functionality.
7032
7036
7033 Also removed the option to use ipplib as a standalone program. By
7037 Also removed the option to use ipplib as a standalone program. By
7034 now it's too dependent on other parts of IPython to function alone.
7038 now it's too dependent on other parts of IPython to function alone.
7035
7039
7036 * Fixed bug in genutils.pager. It would crash if the pager was
7040 * Fixed bug in genutils.pager. It would crash if the pager was
7037 exited immediately after opening (broken pipe).
7041 exited immediately after opening (broken pipe).
7038
7042
7039 * Trimmed down the VerboseTB reporting a little. The header is
7043 * Trimmed down the VerboseTB reporting a little. The header is
7040 much shorter now and the repeated exception arguments at the end
7044 much shorter now and the repeated exception arguments at the end
7041 have been removed. For interactive use the old header seemed a bit
7045 have been removed. For interactive use the old header seemed a bit
7042 excessive.
7046 excessive.
7043
7047
7044 * Fixed small bug in output of @whos for variables with multi-word
7048 * Fixed small bug in output of @whos for variables with multi-word
7045 types (only first word was displayed).
7049 types (only first word was displayed).
7046
7050
7047 2001-11-17 Fernando Perez <fperez@colorado.edu>
7051 2001-11-17 Fernando Perez <fperez@colorado.edu>
7048
7052
7049 * Version 0.1.10 released, 0.1.11 opened for further work.
7053 * Version 0.1.10 released, 0.1.11 opened for further work.
7050
7054
7051 * Modified dirs and friends. dirs now *returns* the stack (not
7055 * Modified dirs and friends. dirs now *returns* the stack (not
7052 prints), so one can manipulate it as a variable. Convenient to
7056 prints), so one can manipulate it as a variable. Convenient to
7053 travel along many directories.
7057 travel along many directories.
7054
7058
7055 * Fixed bug in magic_pdef: would only work with functions with
7059 * Fixed bug in magic_pdef: would only work with functions with
7056 arguments with default values.
7060 arguments with default values.
7057
7061
7058 2001-11-14 Fernando Perez <fperez@colorado.edu>
7062 2001-11-14 Fernando Perez <fperez@colorado.edu>
7059
7063
7060 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7064 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7061 example with IPython. Various other minor fixes and cleanups.
7065 example with IPython. Various other minor fixes and cleanups.
7062
7066
7063 * Version 0.1.9 released, 0.1.10 opened for further work.
7067 * Version 0.1.9 released, 0.1.10 opened for further work.
7064
7068
7065 * Added sys.path to the list of directories searched in the
7069 * Added sys.path to the list of directories searched in the
7066 execfile= option. It used to be the current directory and the
7070 execfile= option. It used to be the current directory and the
7067 user's IPYTHONDIR only.
7071 user's IPYTHONDIR only.
7068
7072
7069 2001-11-13 Fernando Perez <fperez@colorado.edu>
7073 2001-11-13 Fernando Perez <fperez@colorado.edu>
7070
7074
7071 * Reinstated the raw_input/prefilter separation that Janko had
7075 * Reinstated the raw_input/prefilter separation that Janko had
7072 initially. This gives a more convenient setup for extending the
7076 initially. This gives a more convenient setup for extending the
7073 pre-processor from the outside: raw_input always gets a string,
7077 pre-processor from the outside: raw_input always gets a string,
7074 and prefilter has to process it. We can then redefine prefilter
7078 and prefilter has to process it. We can then redefine prefilter
7075 from the outside and implement extensions for special
7079 from the outside and implement extensions for special
7076 purposes.
7080 purposes.
7077
7081
7078 Today I got one for inputting PhysicalQuantity objects
7082 Today I got one for inputting PhysicalQuantity objects
7079 (from Scientific) without needing any function calls at
7083 (from Scientific) without needing any function calls at
7080 all. Extremely convenient, and it's all done as a user-level
7084 all. Extremely convenient, and it's all done as a user-level
7081 extension (no IPython code was touched). Now instead of:
7085 extension (no IPython code was touched). Now instead of:
7082 a = PhysicalQuantity(4.2,'m/s**2')
7086 a = PhysicalQuantity(4.2,'m/s**2')
7083 one can simply say
7087 one can simply say
7084 a = 4.2 m/s**2
7088 a = 4.2 m/s**2
7085 or even
7089 or even
7086 a = 4.2 m/s^2
7090 a = 4.2 m/s^2
7087
7091
7088 I use this, but it's also a proof of concept: IPython really is
7092 I use this, but it's also a proof of concept: IPython really is
7089 fully user-extensible, even at the level of the parsing of the
7093 fully user-extensible, even at the level of the parsing of the
7090 command line. It's not trivial, but it's perfectly doable.
7094 command line. It's not trivial, but it's perfectly doable.
7091
7095
7092 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7096 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7093 the problem of modules being loaded in the inverse order in which
7097 the problem of modules being loaded in the inverse order in which
7094 they were defined in
7098 they were defined in
7095
7099
7096 * Version 0.1.8 released, 0.1.9 opened for further work.
7100 * Version 0.1.8 released, 0.1.9 opened for further work.
7097
7101
7098 * Added magics pdef, source and file. They respectively show the
7102 * Added magics pdef, source and file. They respectively show the
7099 definition line ('prototype' in C), source code and full python
7103 definition line ('prototype' in C), source code and full python
7100 file for any callable object. The object inspector oinfo uses
7104 file for any callable object. The object inspector oinfo uses
7101 these to show the same information.
7105 these to show the same information.
7102
7106
7103 * Version 0.1.7 released, 0.1.8 opened for further work.
7107 * Version 0.1.7 released, 0.1.8 opened for further work.
7104
7108
7105 * Separated all the magic functions into a class called Magic. The
7109 * Separated all the magic functions into a class called Magic. The
7106 InteractiveShell class was becoming too big for Xemacs to handle
7110 InteractiveShell class was becoming too big for Xemacs to handle
7107 (de-indenting a line would lock it up for 10 seconds while it
7111 (de-indenting a line would lock it up for 10 seconds while it
7108 backtracked on the whole class!)
7112 backtracked on the whole class!)
7109
7113
7110 FIXME: didn't work. It can be done, but right now namespaces are
7114 FIXME: didn't work. It can be done, but right now namespaces are
7111 all messed up. Do it later (reverted it for now, so at least
7115 all messed up. Do it later (reverted it for now, so at least
7112 everything works as before).
7116 everything works as before).
7113
7117
7114 * Got the object introspection system (magic_oinfo) working! I
7118 * Got the object introspection system (magic_oinfo) working! I
7115 think this is pretty much ready for release to Janko, so he can
7119 think this is pretty much ready for release to Janko, so he can
7116 test it for a while and then announce it. Pretty much 100% of what
7120 test it for a while and then announce it. Pretty much 100% of what
7117 I wanted for the 'phase 1' release is ready. Happy, tired.
7121 I wanted for the 'phase 1' release is ready. Happy, tired.
7118
7122
7119 2001-11-12 Fernando Perez <fperez@colorado.edu>
7123 2001-11-12 Fernando Perez <fperez@colorado.edu>
7120
7124
7121 * Version 0.1.6 released, 0.1.7 opened for further work.
7125 * Version 0.1.6 released, 0.1.7 opened for further work.
7122
7126
7123 * Fixed bug in printing: it used to test for truth before
7127 * Fixed bug in printing: it used to test for truth before
7124 printing, so 0 wouldn't print. Now checks for None.
7128 printing, so 0 wouldn't print. Now checks for None.
7125
7129
7126 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7130 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7127 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7131 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7128 reaches by hand into the outputcache. Think of a better way to do
7132 reaches by hand into the outputcache. Think of a better way to do
7129 this later.
7133 this later.
7130
7134
7131 * Various small fixes thanks to Nathan's comments.
7135 * Various small fixes thanks to Nathan's comments.
7132
7136
7133 * Changed magic_pprint to magic_Pprint. This way it doesn't
7137 * Changed magic_pprint to magic_Pprint. This way it doesn't
7134 collide with pprint() and the name is consistent with the command
7138 collide with pprint() and the name is consistent with the command
7135 line option.
7139 line option.
7136
7140
7137 * Changed prompt counter behavior to be fully like
7141 * Changed prompt counter behavior to be fully like
7138 Mathematica's. That is, even input that doesn't return a result
7142 Mathematica's. That is, even input that doesn't return a result
7139 raises the prompt counter. The old behavior was kind of confusing
7143 raises the prompt counter. The old behavior was kind of confusing
7140 (getting the same prompt number several times if the operation
7144 (getting the same prompt number several times if the operation
7141 didn't return a result).
7145 didn't return a result).
7142
7146
7143 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7147 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7144
7148
7145 * Fixed -Classic mode (wasn't working anymore).
7149 * Fixed -Classic mode (wasn't working anymore).
7146
7150
7147 * Added colored prompts using Nathan's new code. Colors are
7151 * Added colored prompts using Nathan's new code. Colors are
7148 currently hardwired, they can be user-configurable. For
7152 currently hardwired, they can be user-configurable. For
7149 developers, they can be chosen in file ipythonlib.py, at the
7153 developers, they can be chosen in file ipythonlib.py, at the
7150 beginning of the CachedOutput class def.
7154 beginning of the CachedOutput class def.
7151
7155
7152 2001-11-11 Fernando Perez <fperez@colorado.edu>
7156 2001-11-11 Fernando Perez <fperez@colorado.edu>
7153
7157
7154 * Version 0.1.5 released, 0.1.6 opened for further work.
7158 * Version 0.1.5 released, 0.1.6 opened for further work.
7155
7159
7156 * Changed magic_env to *return* the environment as a dict (not to
7160 * Changed magic_env to *return* the environment as a dict (not to
7157 print it). This way it prints, but it can also be processed.
7161 print it). This way it prints, but it can also be processed.
7158
7162
7159 * Added Verbose exception reporting to interactive
7163 * Added Verbose exception reporting to interactive
7160 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7164 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7161 traceback. Had to make some changes to the ultraTB file. This is
7165 traceback. Had to make some changes to the ultraTB file. This is
7162 probably the last 'big' thing in my mental todo list. This ties
7166 probably the last 'big' thing in my mental todo list. This ties
7163 in with the next entry:
7167 in with the next entry:
7164
7168
7165 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7169 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7166 has to specify is Plain, Color or Verbose for all exception
7170 has to specify is Plain, Color or Verbose for all exception
7167 handling.
7171 handling.
7168
7172
7169 * Removed ShellServices option. All this can really be done via
7173 * Removed ShellServices option. All this can really be done via
7170 the magic system. It's easier to extend, cleaner and has automatic
7174 the magic system. It's easier to extend, cleaner and has automatic
7171 namespace protection and documentation.
7175 namespace protection and documentation.
7172
7176
7173 2001-11-09 Fernando Perez <fperez@colorado.edu>
7177 2001-11-09 Fernando Perez <fperez@colorado.edu>
7174
7178
7175 * Fixed bug in output cache flushing (missing parameter to
7179 * Fixed bug in output cache flushing (missing parameter to
7176 __init__). Other small bugs fixed (found using pychecker).
7180 __init__). Other small bugs fixed (found using pychecker).
7177
7181
7178 * Version 0.1.4 opened for bugfixing.
7182 * Version 0.1.4 opened for bugfixing.
7179
7183
7180 2001-11-07 Fernando Perez <fperez@colorado.edu>
7184 2001-11-07 Fernando Perez <fperez@colorado.edu>
7181
7185
7182 * Version 0.1.3 released, mainly because of the raw_input bug.
7186 * Version 0.1.3 released, mainly because of the raw_input bug.
7183
7187
7184 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7188 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7185 and when testing for whether things were callable, a call could
7189 and when testing for whether things were callable, a call could
7186 actually be made to certain functions. They would get called again
7190 actually be made to certain functions. They would get called again
7187 once 'really' executed, with a resulting double call. A disaster
7191 once 'really' executed, with a resulting double call. A disaster
7188 in many cases (list.reverse() would never work!).
7192 in many cases (list.reverse() would never work!).
7189
7193
7190 * Removed prefilter() function, moved its code to raw_input (which
7194 * Removed prefilter() function, moved its code to raw_input (which
7191 after all was just a near-empty caller for prefilter). This saves
7195 after all was just a near-empty caller for prefilter). This saves
7192 a function call on every prompt, and simplifies the class a tiny bit.
7196 a function call on every prompt, and simplifies the class a tiny bit.
7193
7197
7194 * Fix _ip to __ip name in magic example file.
7198 * Fix _ip to __ip name in magic example file.
7195
7199
7196 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7200 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7197 work with non-gnu versions of tar.
7201 work with non-gnu versions of tar.
7198
7202
7199 2001-11-06 Fernando Perez <fperez@colorado.edu>
7203 2001-11-06 Fernando Perez <fperez@colorado.edu>
7200
7204
7201 * Version 0.1.2. Just to keep track of the recent changes.
7205 * Version 0.1.2. Just to keep track of the recent changes.
7202
7206
7203 * Fixed nasty bug in output prompt routine. It used to check 'if
7207 * Fixed nasty bug in output prompt routine. It used to check 'if
7204 arg != None...'. Problem is, this fails if arg implements a
7208 arg != None...'. Problem is, this fails if arg implements a
7205 special comparison (__cmp__) which disallows comparing to
7209 special comparison (__cmp__) which disallows comparing to
7206 None. Found it when trying to use the PhysicalQuantity module from
7210 None. Found it when trying to use the PhysicalQuantity module from
7207 ScientificPython.
7211 ScientificPython.
7208
7212
7209 2001-11-05 Fernando Perez <fperez@colorado.edu>
7213 2001-11-05 Fernando Perez <fperez@colorado.edu>
7210
7214
7211 * Also added dirs. Now the pushd/popd/dirs family functions
7215 * Also added dirs. Now the pushd/popd/dirs family functions
7212 basically like the shell, with the added convenience of going home
7216 basically like the shell, with the added convenience of going home
7213 when called with no args.
7217 when called with no args.
7214
7218
7215 * pushd/popd slightly modified to mimic shell behavior more
7219 * pushd/popd slightly modified to mimic shell behavior more
7216 closely.
7220 closely.
7217
7221
7218 * Added env,pushd,popd from ShellServices as magic functions. I
7222 * Added env,pushd,popd from ShellServices as magic functions. I
7219 think the cleanest will be to port all desired functions from
7223 think the cleanest will be to port all desired functions from
7220 ShellServices as magics and remove ShellServices altogether. This
7224 ShellServices as magics and remove ShellServices altogether. This
7221 will provide a single, clean way of adding functionality
7225 will provide a single, clean way of adding functionality
7222 (shell-type or otherwise) to IP.
7226 (shell-type or otherwise) to IP.
7223
7227
7224 2001-11-04 Fernando Perez <fperez@colorado.edu>
7228 2001-11-04 Fernando Perez <fperez@colorado.edu>
7225
7229
7226 * Added .ipython/ directory to sys.path. This way users can keep
7230 * Added .ipython/ directory to sys.path. This way users can keep
7227 customizations there and access them via import.
7231 customizations there and access them via import.
7228
7232
7229 2001-11-03 Fernando Perez <fperez@colorado.edu>
7233 2001-11-03 Fernando Perez <fperez@colorado.edu>
7230
7234
7231 * Opened version 0.1.1 for new changes.
7235 * Opened version 0.1.1 for new changes.
7232
7236
7233 * Changed version number to 0.1.0: first 'public' release, sent to
7237 * Changed version number to 0.1.0: first 'public' release, sent to
7234 Nathan and Janko.
7238 Nathan and Janko.
7235
7239
7236 * Lots of small fixes and tweaks.
7240 * Lots of small fixes and tweaks.
7237
7241
7238 * Minor changes to whos format. Now strings are shown, snipped if
7242 * Minor changes to whos format. Now strings are shown, snipped if
7239 too long.
7243 too long.
7240
7244
7241 * Changed ShellServices to work on __main__ so they show up in @who
7245 * Changed ShellServices to work on __main__ so they show up in @who
7242
7246
7243 * Help also works with ? at the end of a line:
7247 * Help also works with ? at the end of a line:
7244 ?sin and sin?
7248 ?sin and sin?
7245 both produce the same effect. This is nice, as often I use the
7249 both produce the same effect. This is nice, as often I use the
7246 tab-complete to find the name of a method, but I used to then have
7250 tab-complete to find the name of a method, but I used to then have
7247 to go to the beginning of the line to put a ? if I wanted more
7251 to go to the beginning of the line to put a ? if I wanted more
7248 info. Now I can just add the ? and hit return. Convenient.
7252 info. Now I can just add the ? and hit return. Convenient.
7249
7253
7250 2001-11-02 Fernando Perez <fperez@colorado.edu>
7254 2001-11-02 Fernando Perez <fperez@colorado.edu>
7251
7255
7252 * Python version check (>=2.1) added.
7256 * Python version check (>=2.1) added.
7253
7257
7254 * Added LazyPython documentation. At this point the docs are quite
7258 * Added LazyPython documentation. At this point the docs are quite
7255 a mess. A cleanup is in order.
7259 a mess. A cleanup is in order.
7256
7260
7257 * Auto-installer created. For some bizarre reason, the zipfiles
7261 * Auto-installer created. For some bizarre reason, the zipfiles
7258 module isn't working on my system. So I made a tar version
7262 module isn't working on my system. So I made a tar version
7259 (hopefully the command line options in various systems won't kill
7263 (hopefully the command line options in various systems won't kill
7260 me).
7264 me).
7261
7265
7262 * Fixes to Struct in genutils. Now all dictionary-like methods are
7266 * Fixes to Struct in genutils. Now all dictionary-like methods are
7263 protected (reasonably).
7267 protected (reasonably).
7264
7268
7265 * Added pager function to genutils and changed ? to print usage
7269 * Added pager function to genutils and changed ? to print usage
7266 note through it (it was too long).
7270 note through it (it was too long).
7267
7271
7268 * Added the LazyPython functionality. Works great! I changed the
7272 * Added the LazyPython functionality. Works great! I changed the
7269 auto-quote escape to ';', it's on home row and next to '. But
7273 auto-quote escape to ';', it's on home row and next to '. But
7270 both auto-quote and auto-paren (still /) escapes are command-line
7274 both auto-quote and auto-paren (still /) escapes are command-line
7271 parameters.
7275 parameters.
7272
7276
7273
7277
7274 2001-11-01 Fernando Perez <fperez@colorado.edu>
7278 2001-11-01 Fernando Perez <fperez@colorado.edu>
7275
7279
7276 * Version changed to 0.0.7. Fairly large change: configuration now
7280 * Version changed to 0.0.7. Fairly large change: configuration now
7277 is all stored in a directory, by default .ipython. There, all
7281 is all stored in a directory, by default .ipython. There, all
7278 config files have normal looking names (not .names)
7282 config files have normal looking names (not .names)
7279
7283
7280 * Version 0.0.6 Released first to Lucas and Archie as a test
7284 * Version 0.0.6 Released first to Lucas and Archie as a test
7281 run. Since it's the first 'semi-public' release, change version to
7285 run. Since it's the first 'semi-public' release, change version to
7282 > 0.0.6 for any changes now.
7286 > 0.0.6 for any changes now.
7283
7287
7284 * Stuff I had put in the ipplib.py changelog:
7288 * Stuff I had put in the ipplib.py changelog:
7285
7289
7286 Changes to InteractiveShell:
7290 Changes to InteractiveShell:
7287
7291
7288 - Made the usage message a parameter.
7292 - Made the usage message a parameter.
7289
7293
7290 - Require the name of the shell variable to be given. It's a bit
7294 - Require the name of the shell variable to be given. It's a bit
7291 of a hack, but allows the name 'shell' not to be hardwired in the
7295 of a hack, but allows the name 'shell' not to be hardwired in the
7292 magic (@) handler, which is problematic b/c it requires
7296 magic (@) handler, which is problematic b/c it requires
7293 polluting the global namespace with 'shell'. This in turn is
7297 polluting the global namespace with 'shell'. This in turn is
7294 fragile: if a user redefines a variable called shell, things
7298 fragile: if a user redefines a variable called shell, things
7295 break.
7299 break.
7296
7300
7297 - magic @: all functions available through @ need to be defined
7301 - magic @: all functions available through @ need to be defined
7298 as magic_<name>, even though they can be called simply as
7302 as magic_<name>, even though they can be called simply as
7299 @<name>. This allows the special command @magic to gather
7303 @<name>. This allows the special command @magic to gather
7300 information automatically about all existing magic functions,
7304 information automatically about all existing magic functions,
7301 even if they are run-time user extensions, by parsing the shell
7305 even if they are run-time user extensions, by parsing the shell
7302 instance __dict__ looking for special magic_ names.
7306 instance __dict__ looking for special magic_ names.
7303
7307
7304 - mainloop: added *two* local namespace parameters. This allows
7308 - mainloop: added *two* local namespace parameters. This allows
7305 the class to differentiate between parameters which were there
7309 the class to differentiate between parameters which were there
7306 before and after command line initialization was processed. This
7310 before and after command line initialization was processed. This
7307 way, later @who can show things loaded at startup by the
7311 way, later @who can show things loaded at startup by the
7308 user. This trick was necessary to make session saving/reloading
7312 user. This trick was necessary to make session saving/reloading
7309 really work: ideally after saving/exiting/reloading a session,
7313 really work: ideally after saving/exiting/reloading a session,
7310 *everything* should look the same, including the output of @who. I
7314 *everything* should look the same, including the output of @who. I
7311 was only able to make this work with this double namespace
7315 was only able to make this work with this double namespace
7312 trick.
7316 trick.
7313
7317
7314 - added a header to the logfile which allows (almost) full
7318 - added a header to the logfile which allows (almost) full
7315 session restoring.
7319 session restoring.
7316
7320
7317 - prepend lines beginning with @ or !, with a and log
7321 - prepend lines beginning with @ or !, with a and log
7318 them. Why? !lines: may be useful to know what you did @lines:
7322 them. Why? !lines: may be useful to know what you did @lines:
7319 they may affect session state. So when restoring a session, at
7323 they may affect session state. So when restoring a session, at
7320 least inform the user of their presence. I couldn't quite get
7324 least inform the user of their presence. I couldn't quite get
7321 them to properly re-execute, but at least the user is warned.
7325 them to properly re-execute, but at least the user is warned.
7322
7326
7323 * Started ChangeLog.
7327 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now