##// END OF EJS Templates
Work around the broken filenames that are sometimes given to us by the traceback mechanism.
rkern -
Show More
@@ -1,1019 +1,1039 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 ultraTB.py -- Spice up your tracebacks!
3 ultraTB.py -- Spice up your tracebacks!
4
4
5 * ColorTB
5 * ColorTB
6 I've always found it a bit hard to visually parse tracebacks in Python. The
6 I've always found it a bit hard to visually parse tracebacks in Python. The
7 ColorTB class is a solution to that problem. It colors the different parts of a
7 ColorTB class is a solution to that problem. It colors the different parts of a
8 traceback in a manner similar to what you would expect from a syntax-highlighting
8 traceback in a manner similar to what you would expect from a syntax-highlighting
9 text editor.
9 text editor.
10
10
11 Installation instructions for ColorTB:
11 Installation instructions for ColorTB:
12 import sys,ultraTB
12 import sys,ultraTB
13 sys.excepthook = ultraTB.ColorTB()
13 sys.excepthook = ultraTB.ColorTB()
14
14
15 * VerboseTB
15 * VerboseTB
16 I've also included a port of Ka-Ping Yee's "cgitb.py" that produces all kinds
16 I've also included a port of Ka-Ping Yee's "cgitb.py" that produces all kinds
17 of useful info when a traceback occurs. Ping originally had it spit out HTML
17 of useful info when a traceback occurs. Ping originally had it spit out HTML
18 and intended it for CGI programmers, but why should they have all the fun? I
18 and intended it for CGI programmers, but why should they have all the fun? I
19 altered it to spit out colored text to the terminal. It's a bit overwhelming,
19 altered it to spit out colored text to the terminal. It's a bit overwhelming,
20 but kind of neat, and maybe useful for long-running programs that you believe
20 but kind of neat, and maybe useful for long-running programs that you believe
21 are bug-free. If a crash *does* occur in that type of program you want details.
21 are bug-free. If a crash *does* occur in that type of program you want details.
22 Give it a shot--you'll love it or you'll hate it.
22 Give it a shot--you'll love it or you'll hate it.
23
23
24 Note:
24 Note:
25
25
26 The Verbose mode prints the variables currently visible where the exception
26 The Verbose mode prints the variables currently visible where the exception
27 happened (shortening their strings if too long). This can potentially be
27 happened (shortening their strings if too long). This can potentially be
28 very slow, if you happen to have a huge data structure whose string
28 very slow, if you happen to have a huge data structure whose string
29 representation is complex to compute. Your computer may appear to freeze for
29 representation is complex to compute. Your computer may appear to freeze for
30 a while with cpu usage at 100%. If this occurs, you can cancel the traceback
30 a while with cpu usage at 100%. If this occurs, you can cancel the traceback
31 with Ctrl-C (maybe hitting it more than once).
31 with Ctrl-C (maybe hitting it more than once).
32
32
33 If you encounter this kind of situation often, you may want to use the
33 If you encounter this kind of situation often, you may want to use the
34 Verbose_novars mode instead of the regular Verbose, which avoids formatting
34 Verbose_novars mode instead of the regular Verbose, which avoids formatting
35 variables (but otherwise includes the information and context given by
35 variables (but otherwise includes the information and context given by
36 Verbose).
36 Verbose).
37
37
38
38
39 Installation instructions for ColorTB:
39 Installation instructions for ColorTB:
40 import sys,ultraTB
40 import sys,ultraTB
41 sys.excepthook = ultraTB.VerboseTB()
41 sys.excepthook = ultraTB.VerboseTB()
42
42
43 Note: Much of the code in this module was lifted verbatim from the standard
43 Note: Much of the code in this module was lifted verbatim from the standard
44 library module 'traceback.py' and Ka-Ping Yee's 'cgitb.py'.
44 library module 'traceback.py' and Ka-Ping Yee's 'cgitb.py'.
45
45
46 * Color schemes
46 * Color schemes
47 The colors are defined in the class TBTools through the use of the
47 The colors are defined in the class TBTools through the use of the
48 ColorSchemeTable class. Currently the following exist:
48 ColorSchemeTable class. Currently the following exist:
49
49
50 - NoColor: allows all of this module to be used in any terminal (the color
50 - NoColor: allows all of this module to be used in any terminal (the color
51 escapes are just dummy blank strings).
51 escapes are just dummy blank strings).
52
52
53 - Linux: is meant to look good in a terminal like the Linux console (black
53 - Linux: is meant to look good in a terminal like the Linux console (black
54 or very dark background).
54 or very dark background).
55
55
56 - LightBG: similar to Linux but swaps dark/light colors to be more readable
56 - LightBG: similar to Linux but swaps dark/light colors to be more readable
57 in light background terminals.
57 in light background terminals.
58
58
59 You can implement other color schemes easily, the syntax is fairly
59 You can implement other color schemes easily, the syntax is fairly
60 self-explanatory. Please send back new schemes you develop to the author for
60 self-explanatory. Please send back new schemes you develop to the author for
61 possible inclusion in future releases.
61 possible inclusion in future releases.
62
62
63 $Id: ultraTB.py 2883 2007-12-02 02:54:17Z rkern $"""
63 $Id: ultraTB.py 2884 2007-12-02 04:42:21Z rkern $"""
64
64
65 #*****************************************************************************
65 #*****************************************************************************
66 # Copyright (C) 2001 Nathaniel Gray <n8gray@caltech.edu>
66 # Copyright (C) 2001 Nathaniel Gray <n8gray@caltech.edu>
67 # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu>
67 # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu>
68 #
68 #
69 # Distributed under the terms of the BSD License. The full license is in
69 # Distributed under the terms of the BSD License. The full license is in
70 # the file COPYING, distributed as part of this software.
70 # the file COPYING, distributed as part of this software.
71 #*****************************************************************************
71 #*****************************************************************************
72
72
73 from IPython import Release
73 from IPython import Release
74 __author__ = '%s <%s>\n%s <%s>' % (Release.authors['Nathan']+
74 __author__ = '%s <%s>\n%s <%s>' % (Release.authors['Nathan']+
75 Release.authors['Fernando'])
75 Release.authors['Fernando'])
76 __license__ = Release.license
76 __license__ = Release.license
77
77
78 # Required modules
78 # Required modules
79 import inspect
79 import inspect
80 import keyword
80 import keyword
81 import linecache
81 import linecache
82 import os
82 import os
83 import pydoc
83 import pydoc
84 import re
84 import re
85 import string
85 import string
86 import sys
86 import sys
87 import time
87 import time
88 import tokenize
88 import tokenize
89 import traceback
89 import traceback
90 import types
90 import types
91
91
92 # For purposes of monkeypatching inspect to fix a bug in it.
92 # For purposes of monkeypatching inspect to fix a bug in it.
93 from inspect import getsourcefile, getfile, getmodule,\
93 from inspect import getsourcefile, getfile, getmodule,\
94 ismodule, isclass, ismethod, isfunction, istraceback, isframe, iscode
94 ismodule, isclass, ismethod, isfunction, istraceback, isframe, iscode
95
95
96
96
97 # IPython's own modules
97 # IPython's own modules
98 # Modified pdb which doesn't damage IPython's readline handling
98 # Modified pdb which doesn't damage IPython's readline handling
99 from IPython import Debugger, PyColorize
99 from IPython import Debugger, PyColorize
100 from IPython.ipstruct import Struct
100 from IPython.ipstruct import Struct
101 from IPython.excolors import ExceptionColors
101 from IPython.excolors import ExceptionColors
102 from IPython.genutils import Term,uniq_stable,error,info
102 from IPython.genutils import Term,uniq_stable,error,info
103
103
104 # Globals
104 # Globals
105 # amount of space to put line numbers before verbose tracebacks
105 # amount of space to put line numbers before verbose tracebacks
106 INDENT_SIZE = 8
106 INDENT_SIZE = 8
107
107
108 # Default color scheme. This is used, for example, by the traceback
108 # Default color scheme. This is used, for example, by the traceback
109 # formatter. When running in an actual IPython instance, the user's rc.colors
109 # formatter. When running in an actual IPython instance, the user's rc.colors
110 # value is used, but havinga module global makes this functionality available
110 # value is used, but havinga module global makes this functionality available
111 # to users of ultraTB who are NOT running inside ipython.
111 # to users of ultraTB who are NOT running inside ipython.
112 DEFAULT_SCHEME = 'NoColor'
112 DEFAULT_SCHEME = 'NoColor'
113
113
114 #---------------------------------------------------------------------------
114 #---------------------------------------------------------------------------
115 # Code begins
115 # Code begins
116
116
117 # Utility functions
117 # Utility functions
118 def inspect_error():
118 def inspect_error():
119 """Print a message about internal inspect errors.
119 """Print a message about internal inspect errors.
120
120
121 These are unfortunately quite common."""
121 These are unfortunately quite common."""
122
122
123 error('Internal Python error in the inspect module.\n'
123 error('Internal Python error in the inspect module.\n'
124 'Below is the traceback from this internal error.\n')
124 'Below is the traceback from this internal error.\n')
125
125
126
126
127 def findsource(object):
127 def findsource(object):
128 """Return the entire source file and starting line number for an object.
128 """Return the entire source file and starting line number for an object.
129
129
130 The argument may be a module, class, method, function, traceback, frame,
130 The argument may be a module, class, method, function, traceback, frame,
131 or code object. The source code is returned as a list of all the lines
131 or code object. The source code is returned as a list of all the lines
132 in the file and the line number indexes a line in that list. An IOError
132 in the file and the line number indexes a line in that list. An IOError
133 is raised if the source code cannot be retrieved.
133 is raised if the source code cannot be retrieved.
134
134
135 FIXED version with which we monkeypatch the stdlib to work around a bug."""
135 FIXED version with which we monkeypatch the stdlib to work around a bug."""
136
136
137 file = getsourcefile(object) or getfile(object)
137 file = getsourcefile(object) or getfile(object)
138 # If the object is a frame, then trying to get the globals dict from its
138 # If the object is a frame, then trying to get the globals dict from its
139 # module won't work. Instead, the frame object itself has the globals
139 # module won't work. Instead, the frame object itself has the globals
140 # dictionary.
140 # dictionary.
141 globals_dict = None
141 globals_dict = None
142 if inspect.isframe(object):
142 if inspect.isframe(object):
143 # XXX: can this ever be false?
143 # XXX: can this ever be false?
144 globals_dict = object.f_globals
144 globals_dict = object.f_globals
145 else:
145 else:
146 module = getmodule(object, file)
146 module = getmodule(object, file)
147 if module:
147 if module:
148 globals_dict = module.__dict__
148 globals_dict = module.__dict__
149 lines = linecache.getlines(file, globals_dict)
149 lines = linecache.getlines(file, globals_dict)
150 if not lines:
150 if not lines:
151 raise IOError('could not get source code')
151 raise IOError('could not get source code')
152
152
153 if ismodule(object):
153 if ismodule(object):
154 return lines, 0
154 return lines, 0
155
155
156 if isclass(object):
156 if isclass(object):
157 name = object.__name__
157 name = object.__name__
158 pat = re.compile(r'^(\s*)class\s*' + name + r'\b')
158 pat = re.compile(r'^(\s*)class\s*' + name + r'\b')
159 # make some effort to find the best matching class definition:
159 # make some effort to find the best matching class definition:
160 # use the one with the least indentation, which is the one
160 # use the one with the least indentation, which is the one
161 # that's most probably not inside a function definition.
161 # that's most probably not inside a function definition.
162 candidates = []
162 candidates = []
163 for i in range(len(lines)):
163 for i in range(len(lines)):
164 match = pat.match(lines[i])
164 match = pat.match(lines[i])
165 if match:
165 if match:
166 # if it's at toplevel, it's already the best one
166 # if it's at toplevel, it's already the best one
167 if lines[i][0] == 'c':
167 if lines[i][0] == 'c':
168 return lines, i
168 return lines, i
169 # else add whitespace to candidate list
169 # else add whitespace to candidate list
170 candidates.append((match.group(1), i))
170 candidates.append((match.group(1), i))
171 if candidates:
171 if candidates:
172 # this will sort by whitespace, and by line number,
172 # this will sort by whitespace, and by line number,
173 # less whitespace first
173 # less whitespace first
174 candidates.sort()
174 candidates.sort()
175 return lines, candidates[0][1]
175 return lines, candidates[0][1]
176 else:
176 else:
177 raise IOError('could not find class definition')
177 raise IOError('could not find class definition')
178
178
179 if ismethod(object):
179 if ismethod(object):
180 object = object.im_func
180 object = object.im_func
181 if isfunction(object):
181 if isfunction(object):
182 object = object.func_code
182 object = object.func_code
183 if istraceback(object):
183 if istraceback(object):
184 object = object.tb_frame
184 object = object.tb_frame
185 if isframe(object):
185 if isframe(object):
186 object = object.f_code
186 object = object.f_code
187 if iscode(object):
187 if iscode(object):
188 if not hasattr(object, 'co_firstlineno'):
188 if not hasattr(object, 'co_firstlineno'):
189 raise IOError('could not find function definition')
189 raise IOError('could not find function definition')
190 pat = re.compile(r'^(\s*def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)')
190 pat = re.compile(r'^(\s*def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)')
191 pmatch = pat.match
191 pmatch = pat.match
192 # fperez - fix: sometimes, co_firstlineno can give a number larger than
192 # fperez - fix: sometimes, co_firstlineno can give a number larger than
193 # the length of lines, which causes an error. Safeguard against that.
193 # the length of lines, which causes an error. Safeguard against that.
194 lnum = min(object.co_firstlineno,len(lines))-1
194 lnum = min(object.co_firstlineno,len(lines))-1
195 while lnum > 0:
195 while lnum > 0:
196 if pmatch(lines[lnum]): break
196 if pmatch(lines[lnum]): break
197 lnum -= 1
197 lnum -= 1
198
198
199 return lines, lnum
199 return lines, lnum
200 raise IOError('could not find code object')
200 raise IOError('could not find code object')
201
201
202 # Monkeypatch inspect to apply our bugfix. This code only works with py25
202 # Monkeypatch inspect to apply our bugfix. This code only works with py25
203 if sys.version_info[:2] >= (2,5):
203 if sys.version_info[:2] >= (2,5):
204 inspect.findsource = findsource
204 inspect.findsource = findsource
205
205
206 def fix_frame_records_filenames(records):
207 """Try to fix the filenames in each record from inspect.getinnerframes().
208
209 Particularly, modules loaded from within zip files have useless filenames
210 attached to their code object, and inspect.getinnerframes() just uses it.
211 """
212 fixed_records = []
213 for frame, filename, line_no, func_name, lines, index in records:
214 # Look inside the frame's globals dictionary for __file__, which should
215 # be better.
216 better_fn = frame.f_globals.get('__file__', None)
217 if isinstance(better_fn, str):
218 # Check the type just in case someone did something weird with
219 # __file__. It might also be None if the error occurred during
220 # import.
221 filename = better_fn
222 fixed_records.append((frame, filename, line_no, func_name, lines, index))
223 return fixed_records
224
225
206 def _fixed_getinnerframes(etb, context=1,tb_offset=0):
226 def _fixed_getinnerframes(etb, context=1,tb_offset=0):
207 import linecache
227 import linecache
208 LNUM_POS, LINES_POS, INDEX_POS = 2, 4, 5
228 LNUM_POS, LINES_POS, INDEX_POS = 2, 4, 5
209
229
210 records = inspect.getinnerframes(etb, context)
230 records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))
211
231
212 # If the error is at the console, don't build any context, since it would
232 # If the error is at the console, don't build any context, since it would
213 # otherwise produce 5 blank lines printed out (there is no file at the
233 # otherwise produce 5 blank lines printed out (there is no file at the
214 # console)
234 # console)
215 rec_check = records[tb_offset:]
235 rec_check = records[tb_offset:]
216 try:
236 try:
217 rname = rec_check[0][1]
237 rname = rec_check[0][1]
218 if rname == '<ipython console>' or rname.endswith('<string>'):
238 if rname == '<ipython console>' or rname.endswith('<string>'):
219 return rec_check
239 return rec_check
220 except IndexError:
240 except IndexError:
221 pass
241 pass
222
242
223 aux = traceback.extract_tb(etb)
243 aux = traceback.extract_tb(etb)
224 assert len(records) == len(aux)
244 assert len(records) == len(aux)
225 for i, (file, lnum, _, _) in zip(range(len(records)), aux):
245 for i, (file, lnum, _, _) in zip(range(len(records)), aux):
226 maybeStart = lnum-1 - context//2
246 maybeStart = lnum-1 - context//2
227 start = max(maybeStart, 0)
247 start = max(maybeStart, 0)
228 end = start + context
248 end = start + context
229 lines = linecache.getlines(file)[start:end]
249 lines = linecache.getlines(file)[start:end]
230 # pad with empty lines if necessary
250 # pad with empty lines if necessary
231 if maybeStart < 0:
251 if maybeStart < 0:
232 lines = (['\n'] * -maybeStart) + lines
252 lines = (['\n'] * -maybeStart) + lines
233 if len(lines) < context:
253 if len(lines) < context:
234 lines += ['\n'] * (context - len(lines))
254 lines += ['\n'] * (context - len(lines))
235 buf = list(records[i])
255 buf = list(records[i])
236 buf[LNUM_POS] = lnum
256 buf[LNUM_POS] = lnum
237 buf[INDEX_POS] = lnum - 1 - start
257 buf[INDEX_POS] = lnum - 1 - start
238 buf[LINES_POS] = lines
258 buf[LINES_POS] = lines
239 records[i] = tuple(buf)
259 records[i] = tuple(buf)
240 return records[tb_offset:]
260 return records[tb_offset:]
241
261
242 # Helper function -- largely belongs to VerboseTB, but we need the same
262 # Helper function -- largely belongs to VerboseTB, but we need the same
243 # functionality to produce a pseudo verbose TB for SyntaxErrors, so that they
263 # functionality to produce a pseudo verbose TB for SyntaxErrors, so that they
244 # can be recognized properly by ipython.el's py-traceback-line-re
264 # can be recognized properly by ipython.el's py-traceback-line-re
245 # (SyntaxErrors have to be treated specially because they have no traceback)
265 # (SyntaxErrors have to be treated specially because they have no traceback)
246
266
247 _parser = PyColorize.Parser()
267 _parser = PyColorize.Parser()
248
268
249 def _formatTracebackLines(lnum, index, lines, Colors, lvals=None,scheme=None):
269 def _formatTracebackLines(lnum, index, lines, Colors, lvals=None,scheme=None):
250 numbers_width = INDENT_SIZE - 1
270 numbers_width = INDENT_SIZE - 1
251 res = []
271 res = []
252 i = lnum - index
272 i = lnum - index
253
273
254 # This lets us get fully syntax-highlighted tracebacks.
274 # This lets us get fully syntax-highlighted tracebacks.
255 if scheme is None:
275 if scheme is None:
256 try:
276 try:
257 scheme = __IPYTHON__.rc.colors
277 scheme = __IPYTHON__.rc.colors
258 except:
278 except:
259 scheme = DEFAULT_SCHEME
279 scheme = DEFAULT_SCHEME
260 _line_format = _parser.format2
280 _line_format = _parser.format2
261
281
262 for line in lines:
282 for line in lines:
263 new_line, err = _line_format(line,'str',scheme)
283 new_line, err = _line_format(line,'str',scheme)
264 if not err: line = new_line
284 if not err: line = new_line
265
285
266 if i == lnum:
286 if i == lnum:
267 # This is the line with the error
287 # This is the line with the error
268 pad = numbers_width - len(str(i))
288 pad = numbers_width - len(str(i))
269 if pad >= 3:
289 if pad >= 3:
270 marker = '-'*(pad-3) + '-> '
290 marker = '-'*(pad-3) + '-> '
271 elif pad == 2:
291 elif pad == 2:
272 marker = '> '
292 marker = '> '
273 elif pad == 1:
293 elif pad == 1:
274 marker = '>'
294 marker = '>'
275 else:
295 else:
276 marker = ''
296 marker = ''
277 num = marker + str(i)
297 num = marker + str(i)
278 line = '%s%s%s %s%s' %(Colors.linenoEm, num,
298 line = '%s%s%s %s%s' %(Colors.linenoEm, num,
279 Colors.line, line, Colors.Normal)
299 Colors.line, line, Colors.Normal)
280 else:
300 else:
281 num = '%*s' % (numbers_width,i)
301 num = '%*s' % (numbers_width,i)
282 line = '%s%s%s %s' %(Colors.lineno, num,
302 line = '%s%s%s %s' %(Colors.lineno, num,
283 Colors.Normal, line)
303 Colors.Normal, line)
284
304
285 res.append(line)
305 res.append(line)
286 if lvals and i == lnum:
306 if lvals and i == lnum:
287 res.append(lvals + '\n')
307 res.append(lvals + '\n')
288 i = i + 1
308 i = i + 1
289 return res
309 return res
290
310
291
311
292 #---------------------------------------------------------------------------
312 #---------------------------------------------------------------------------
293 # Module classes
313 # Module classes
294 class TBTools:
314 class TBTools:
295 """Basic tools used by all traceback printer classes."""
315 """Basic tools used by all traceback printer classes."""
296
316
297 def __init__(self,color_scheme = 'NoColor',call_pdb=False):
317 def __init__(self,color_scheme = 'NoColor',call_pdb=False):
298 # Whether to call the interactive pdb debugger after printing
318 # Whether to call the interactive pdb debugger after printing
299 # tracebacks or not
319 # tracebacks or not
300 self.call_pdb = call_pdb
320 self.call_pdb = call_pdb
301
321
302 # Create color table
322 # Create color table
303 self.color_scheme_table = ExceptionColors
323 self.color_scheme_table = ExceptionColors
304
324
305 self.set_colors(color_scheme)
325 self.set_colors(color_scheme)
306 self.old_scheme = color_scheme # save initial value for toggles
326 self.old_scheme = color_scheme # save initial value for toggles
307
327
308 if call_pdb:
328 if call_pdb:
309 self.pdb = Debugger.Pdb(self.color_scheme_table.active_scheme_name)
329 self.pdb = Debugger.Pdb(self.color_scheme_table.active_scheme_name)
310 else:
330 else:
311 self.pdb = None
331 self.pdb = None
312
332
313 def set_colors(self,*args,**kw):
333 def set_colors(self,*args,**kw):
314 """Shorthand access to the color table scheme selector method."""
334 """Shorthand access to the color table scheme selector method."""
315
335
316 # Set own color table
336 # Set own color table
317 self.color_scheme_table.set_active_scheme(*args,**kw)
337 self.color_scheme_table.set_active_scheme(*args,**kw)
318 # for convenience, set Colors to the active scheme
338 # for convenience, set Colors to the active scheme
319 self.Colors = self.color_scheme_table.active_colors
339 self.Colors = self.color_scheme_table.active_colors
320 # Also set colors of debugger
340 # Also set colors of debugger
321 if hasattr(self,'pdb') and self.pdb is not None:
341 if hasattr(self,'pdb') and self.pdb is not None:
322 self.pdb.set_colors(*args,**kw)
342 self.pdb.set_colors(*args,**kw)
323
343
324 def color_toggle(self):
344 def color_toggle(self):
325 """Toggle between the currently active color scheme and NoColor."""
345 """Toggle between the currently active color scheme and NoColor."""
326
346
327 if self.color_scheme_table.active_scheme_name == 'NoColor':
347 if self.color_scheme_table.active_scheme_name == 'NoColor':
328 self.color_scheme_table.set_active_scheme(self.old_scheme)
348 self.color_scheme_table.set_active_scheme(self.old_scheme)
329 self.Colors = self.color_scheme_table.active_colors
349 self.Colors = self.color_scheme_table.active_colors
330 else:
350 else:
331 self.old_scheme = self.color_scheme_table.active_scheme_name
351 self.old_scheme = self.color_scheme_table.active_scheme_name
332 self.color_scheme_table.set_active_scheme('NoColor')
352 self.color_scheme_table.set_active_scheme('NoColor')
333 self.Colors = self.color_scheme_table.active_colors
353 self.Colors = self.color_scheme_table.active_colors
334
354
335 #---------------------------------------------------------------------------
355 #---------------------------------------------------------------------------
336 class ListTB(TBTools):
356 class ListTB(TBTools):
337 """Print traceback information from a traceback list, with optional color.
357 """Print traceback information from a traceback list, with optional color.
338
358
339 Calling: requires 3 arguments:
359 Calling: requires 3 arguments:
340 (etype, evalue, elist)
360 (etype, evalue, elist)
341 as would be obtained by:
361 as would be obtained by:
342 etype, evalue, tb = sys.exc_info()
362 etype, evalue, tb = sys.exc_info()
343 if tb:
363 if tb:
344 elist = traceback.extract_tb(tb)
364 elist = traceback.extract_tb(tb)
345 else:
365 else:
346 elist = None
366 elist = None
347
367
348 It can thus be used by programs which need to process the traceback before
368 It can thus be used by programs which need to process the traceback before
349 printing (such as console replacements based on the code module from the
369 printing (such as console replacements based on the code module from the
350 standard library).
370 standard library).
351
371
352 Because they are meant to be called without a full traceback (only a
372 Because they are meant to be called without a full traceback (only a
353 list), instances of this class can't call the interactive pdb debugger."""
373 list), instances of this class can't call the interactive pdb debugger."""
354
374
355 def __init__(self,color_scheme = 'NoColor'):
375 def __init__(self,color_scheme = 'NoColor'):
356 TBTools.__init__(self,color_scheme = color_scheme,call_pdb=0)
376 TBTools.__init__(self,color_scheme = color_scheme,call_pdb=0)
357
377
358 def __call__(self, etype, value, elist):
378 def __call__(self, etype, value, elist):
359 Term.cout.flush()
379 Term.cout.flush()
360 Term.cerr.flush()
380 Term.cerr.flush()
361 print >> Term.cerr, self.text(etype,value,elist)
381 print >> Term.cerr, self.text(etype,value,elist)
362
382
363 def text(self,etype, value, elist,context=5):
383 def text(self,etype, value, elist,context=5):
364 """Return a color formatted string with the traceback info."""
384 """Return a color formatted string with the traceback info."""
365
385
366 Colors = self.Colors
386 Colors = self.Colors
367 out_string = ['%s%s%s\n' % (Colors.topline,'-'*60,Colors.Normal)]
387 out_string = ['%s%s%s\n' % (Colors.topline,'-'*60,Colors.Normal)]
368 if elist:
388 if elist:
369 out_string.append('Traceback %s(most recent call last)%s:' % \
389 out_string.append('Traceback %s(most recent call last)%s:' % \
370 (Colors.normalEm, Colors.Normal) + '\n')
390 (Colors.normalEm, Colors.Normal) + '\n')
371 out_string.extend(self._format_list(elist))
391 out_string.extend(self._format_list(elist))
372 lines = self._format_exception_only(etype, value)
392 lines = self._format_exception_only(etype, value)
373 for line in lines[:-1]:
393 for line in lines[:-1]:
374 out_string.append(" "+line)
394 out_string.append(" "+line)
375 out_string.append(lines[-1])
395 out_string.append(lines[-1])
376 return ''.join(out_string)
396 return ''.join(out_string)
377
397
378 def _format_list(self, extracted_list):
398 def _format_list(self, extracted_list):
379 """Format a list of traceback entry tuples for printing.
399 """Format a list of traceback entry tuples for printing.
380
400
381 Given a list of tuples as returned by extract_tb() or
401 Given a list of tuples as returned by extract_tb() or
382 extract_stack(), return a list of strings ready for printing.
402 extract_stack(), return a list of strings ready for printing.
383 Each string in the resulting list corresponds to the item with the
403 Each string in the resulting list corresponds to the item with the
384 same index in the argument list. Each string ends in a newline;
404 same index in the argument list. Each string ends in a newline;
385 the strings may contain internal newlines as well, for those items
405 the strings may contain internal newlines as well, for those items
386 whose source text line is not None.
406 whose source text line is not None.
387
407
388 Lifted almost verbatim from traceback.py
408 Lifted almost verbatim from traceback.py
389 """
409 """
390
410
391 Colors = self.Colors
411 Colors = self.Colors
392 list = []
412 list = []
393 for filename, lineno, name, line in extracted_list[:-1]:
413 for filename, lineno, name, line in extracted_list[:-1]:
394 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
414 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
395 (Colors.filename, filename, Colors.Normal,
415 (Colors.filename, filename, Colors.Normal,
396 Colors.lineno, lineno, Colors.Normal,
416 Colors.lineno, lineno, Colors.Normal,
397 Colors.name, name, Colors.Normal)
417 Colors.name, name, Colors.Normal)
398 if line:
418 if line:
399 item = item + ' %s\n' % line.strip()
419 item = item + ' %s\n' % line.strip()
400 list.append(item)
420 list.append(item)
401 # Emphasize the last entry
421 # Emphasize the last entry
402 filename, lineno, name, line = extracted_list[-1]
422 filename, lineno, name, line = extracted_list[-1]
403 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
423 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
404 (Colors.normalEm,
424 (Colors.normalEm,
405 Colors.filenameEm, filename, Colors.normalEm,
425 Colors.filenameEm, filename, Colors.normalEm,
406 Colors.linenoEm, lineno, Colors.normalEm,
426 Colors.linenoEm, lineno, Colors.normalEm,
407 Colors.nameEm, name, Colors.normalEm,
427 Colors.nameEm, name, Colors.normalEm,
408 Colors.Normal)
428 Colors.Normal)
409 if line:
429 if line:
410 item = item + '%s %s%s\n' % (Colors.line, line.strip(),
430 item = item + '%s %s%s\n' % (Colors.line, line.strip(),
411 Colors.Normal)
431 Colors.Normal)
412 list.append(item)
432 list.append(item)
413 return list
433 return list
414
434
415 def _format_exception_only(self, etype, value):
435 def _format_exception_only(self, etype, value):
416 """Format the exception part of a traceback.
436 """Format the exception part of a traceback.
417
437
418 The arguments are the exception type and value such as given by
438 The arguments are the exception type and value such as given by
419 sys.exc_info()[:2]. The return value is a list of strings, each ending
439 sys.exc_info()[:2]. The return value is a list of strings, each ending
420 in a newline. Normally, the list contains a single string; however,
440 in a newline. Normally, the list contains a single string; however,
421 for SyntaxError exceptions, it contains several lines that (when
441 for SyntaxError exceptions, it contains several lines that (when
422 printed) display detailed information about where the syntax error
442 printed) display detailed information about where the syntax error
423 occurred. The message indicating which exception occurred is the
443 occurred. The message indicating which exception occurred is the
424 always last string in the list.
444 always last string in the list.
425
445
426 Also lifted nearly verbatim from traceback.py
446 Also lifted nearly verbatim from traceback.py
427 """
447 """
428
448
429 Colors = self.Colors
449 Colors = self.Colors
430 list = []
450 list = []
431 try:
451 try:
432 stype = Colors.excName + etype.__name__ + Colors.Normal
452 stype = Colors.excName + etype.__name__ + Colors.Normal
433 except AttributeError:
453 except AttributeError:
434 stype = etype # String exceptions don't get special coloring
454 stype = etype # String exceptions don't get special coloring
435 if value is None:
455 if value is None:
436 list.append( str(stype) + '\n')
456 list.append( str(stype) + '\n')
437 else:
457 else:
438 if etype is SyntaxError:
458 if etype is SyntaxError:
439 try:
459 try:
440 msg, (filename, lineno, offset, line) = value
460 msg, (filename, lineno, offset, line) = value
441 except:
461 except:
442 pass
462 pass
443 else:
463 else:
444 #print 'filename is',filename # dbg
464 #print 'filename is',filename # dbg
445 if not filename: filename = "<string>"
465 if not filename: filename = "<string>"
446 list.append('%s File %s"%s"%s, line %s%d%s\n' % \
466 list.append('%s File %s"%s"%s, line %s%d%s\n' % \
447 (Colors.normalEm,
467 (Colors.normalEm,
448 Colors.filenameEm, filename, Colors.normalEm,
468 Colors.filenameEm, filename, Colors.normalEm,
449 Colors.linenoEm, lineno, Colors.Normal ))
469 Colors.linenoEm, lineno, Colors.Normal ))
450 if line is not None:
470 if line is not None:
451 i = 0
471 i = 0
452 while i < len(line) and line[i].isspace():
472 while i < len(line) and line[i].isspace():
453 i = i+1
473 i = i+1
454 list.append('%s %s%s\n' % (Colors.line,
474 list.append('%s %s%s\n' % (Colors.line,
455 line.strip(),
475 line.strip(),
456 Colors.Normal))
476 Colors.Normal))
457 if offset is not None:
477 if offset is not None:
458 s = ' '
478 s = ' '
459 for c in line[i:offset-1]:
479 for c in line[i:offset-1]:
460 if c.isspace():
480 if c.isspace():
461 s = s + c
481 s = s + c
462 else:
482 else:
463 s = s + ' '
483 s = s + ' '
464 list.append('%s%s^%s\n' % (Colors.caret, s,
484 list.append('%s%s^%s\n' % (Colors.caret, s,
465 Colors.Normal) )
485 Colors.Normal) )
466 value = msg
486 value = msg
467 s = self._some_str(value)
487 s = self._some_str(value)
468 if s:
488 if s:
469 list.append('%s%s:%s %s\n' % (str(stype), Colors.excName,
489 list.append('%s%s:%s %s\n' % (str(stype), Colors.excName,
470 Colors.Normal, s))
490 Colors.Normal, s))
471 else:
491 else:
472 list.append('%s\n' % str(stype))
492 list.append('%s\n' % str(stype))
473 return list
493 return list
474
494
475 def _some_str(self, value):
495 def _some_str(self, value):
476 # Lifted from traceback.py
496 # Lifted from traceback.py
477 try:
497 try:
478 return str(value)
498 return str(value)
479 except:
499 except:
480 return '<unprintable %s object>' % type(value).__name__
500 return '<unprintable %s object>' % type(value).__name__
481
501
482 #----------------------------------------------------------------------------
502 #----------------------------------------------------------------------------
483 class VerboseTB(TBTools):
503 class VerboseTB(TBTools):
484 """A port of Ka-Ping Yee's cgitb.py module that outputs color text instead
504 """A port of Ka-Ping Yee's cgitb.py module that outputs color text instead
485 of HTML. Requires inspect and pydoc. Crazy, man.
505 of HTML. Requires inspect and pydoc. Crazy, man.
486
506
487 Modified version which optionally strips the topmost entries from the
507 Modified version which optionally strips the topmost entries from the
488 traceback, to be used with alternate interpreters (because their own code
508 traceback, to be used with alternate interpreters (because their own code
489 would appear in the traceback)."""
509 would appear in the traceback)."""
490
510
491 def __init__(self,color_scheme = 'Linux',tb_offset=0,long_header=0,
511 def __init__(self,color_scheme = 'Linux',tb_offset=0,long_header=0,
492 call_pdb = 0, include_vars=1):
512 call_pdb = 0, include_vars=1):
493 """Specify traceback offset, headers and color scheme.
513 """Specify traceback offset, headers and color scheme.
494
514
495 Define how many frames to drop from the tracebacks. Calling it with
515 Define how many frames to drop from the tracebacks. Calling it with
496 tb_offset=1 allows use of this handler in interpreters which will have
516 tb_offset=1 allows use of this handler in interpreters which will have
497 their own code at the top of the traceback (VerboseTB will first
517 their own code at the top of the traceback (VerboseTB will first
498 remove that frame before printing the traceback info)."""
518 remove that frame before printing the traceback info)."""
499 TBTools.__init__(self,color_scheme=color_scheme,call_pdb=call_pdb)
519 TBTools.__init__(self,color_scheme=color_scheme,call_pdb=call_pdb)
500 self.tb_offset = tb_offset
520 self.tb_offset = tb_offset
501 self.long_header = long_header
521 self.long_header = long_header
502 self.include_vars = include_vars
522 self.include_vars = include_vars
503
523
504 def text(self, etype, evalue, etb, context=5):
524 def text(self, etype, evalue, etb, context=5):
505 """Return a nice text document describing the traceback."""
525 """Return a nice text document describing the traceback."""
506
526
507 # some locals
527 # some locals
508 try:
528 try:
509 etype = etype.__name__
529 etype = etype.__name__
510 except AttributeError:
530 except AttributeError:
511 pass
531 pass
512 Colors = self.Colors # just a shorthand + quicker name lookup
532 Colors = self.Colors # just a shorthand + quicker name lookup
513 ColorsNormal = Colors.Normal # used a lot
533 ColorsNormal = Colors.Normal # used a lot
514 col_scheme = self.color_scheme_table.active_scheme_name
534 col_scheme = self.color_scheme_table.active_scheme_name
515 indent = ' '*INDENT_SIZE
535 indent = ' '*INDENT_SIZE
516 em_normal = '%s\n%s%s' % (Colors.valEm, indent,ColorsNormal)
536 em_normal = '%s\n%s%s' % (Colors.valEm, indent,ColorsNormal)
517 undefined = '%sundefined%s' % (Colors.em, ColorsNormal)
537 undefined = '%sundefined%s' % (Colors.em, ColorsNormal)
518 exc = '%s%s%s' % (Colors.excName,etype,ColorsNormal)
538 exc = '%s%s%s' % (Colors.excName,etype,ColorsNormal)
519
539
520 # some internal-use functions
540 # some internal-use functions
521 def text_repr(value):
541 def text_repr(value):
522 """Hopefully pretty robust repr equivalent."""
542 """Hopefully pretty robust repr equivalent."""
523 # this is pretty horrible but should always return *something*
543 # this is pretty horrible but should always return *something*
524 try:
544 try:
525 return pydoc.text.repr(value)
545 return pydoc.text.repr(value)
526 except KeyboardInterrupt:
546 except KeyboardInterrupt:
527 raise
547 raise
528 except:
548 except:
529 try:
549 try:
530 return repr(value)
550 return repr(value)
531 except KeyboardInterrupt:
551 except KeyboardInterrupt:
532 raise
552 raise
533 except:
553 except:
534 try:
554 try:
535 # all still in an except block so we catch
555 # all still in an except block so we catch
536 # getattr raising
556 # getattr raising
537 name = getattr(value, '__name__', None)
557 name = getattr(value, '__name__', None)
538 if name:
558 if name:
539 # ick, recursion
559 # ick, recursion
540 return text_repr(name)
560 return text_repr(name)
541 klass = getattr(value, '__class__', None)
561 klass = getattr(value, '__class__', None)
542 if klass:
562 if klass:
543 return '%s instance' % text_repr(klass)
563 return '%s instance' % text_repr(klass)
544 except KeyboardInterrupt:
564 except KeyboardInterrupt:
545 raise
565 raise
546 except:
566 except:
547 return 'UNRECOVERABLE REPR FAILURE'
567 return 'UNRECOVERABLE REPR FAILURE'
548 def eqrepr(value, repr=text_repr): return '=%s' % repr(value)
568 def eqrepr(value, repr=text_repr): return '=%s' % repr(value)
549 def nullrepr(value, repr=text_repr): return ''
569 def nullrepr(value, repr=text_repr): return ''
550
570
551 # meat of the code begins
571 # meat of the code begins
552 try:
572 try:
553 etype = etype.__name__
573 etype = etype.__name__
554 except AttributeError:
574 except AttributeError:
555 pass
575 pass
556
576
557 if self.long_header:
577 if self.long_header:
558 # Header with the exception type, python version, and date
578 # Header with the exception type, python version, and date
559 pyver = 'Python ' + string.split(sys.version)[0] + ': ' + sys.executable
579 pyver = 'Python ' + string.split(sys.version)[0] + ': ' + sys.executable
560 date = time.ctime(time.time())
580 date = time.ctime(time.time())
561
581
562 head = '%s%s%s\n%s%s%s\n%s' % (Colors.topline, '-'*75, ColorsNormal,
582 head = '%s%s%s\n%s%s%s\n%s' % (Colors.topline, '-'*75, ColorsNormal,
563 exc, ' '*(75-len(str(etype))-len(pyver)),
583 exc, ' '*(75-len(str(etype))-len(pyver)),
564 pyver, string.rjust(date, 75) )
584 pyver, string.rjust(date, 75) )
565 head += "\nA problem occured executing Python code. Here is the sequence of function"\
585 head += "\nA problem occured executing Python code. Here is the sequence of function"\
566 "\ncalls leading up to the error, with the most recent (innermost) call last."
586 "\ncalls leading up to the error, with the most recent (innermost) call last."
567 else:
587 else:
568 # Simplified header
588 # Simplified header
569 head = '%s%s%s\n%s%s' % (Colors.topline, '-'*75, ColorsNormal,exc,
589 head = '%s%s%s\n%s%s' % (Colors.topline, '-'*75, ColorsNormal,exc,
570 string.rjust('Traceback (most recent call last)',
590 string.rjust('Traceback (most recent call last)',
571 75 - len(str(etype)) ) )
591 75 - len(str(etype)) ) )
572 frames = []
592 frames = []
573 # Flush cache before calling inspect. This helps alleviate some of the
593 # Flush cache before calling inspect. This helps alleviate some of the
574 # problems with python 2.3's inspect.py.
594 # problems with python 2.3's inspect.py.
575 linecache.checkcache()
595 linecache.checkcache()
576 # Drop topmost frames if requested
596 # Drop topmost frames if requested
577 try:
597 try:
578 # Try the default getinnerframes and Alex's: Alex's fixes some
598 # Try the default getinnerframes and Alex's: Alex's fixes some
579 # problems, but it generates empty tracebacks for console errors
599 # problems, but it generates empty tracebacks for console errors
580 # (5 blanks lines) where none should be returned.
600 # (5 blanks lines) where none should be returned.
581 #records = inspect.getinnerframes(etb, context)[self.tb_offset:]
601 #records = inspect.getinnerframes(etb, context)[self.tb_offset:]
582 #print 'python records:', records # dbg
602 #print 'python records:', records # dbg
583 records = _fixed_getinnerframes(etb, context,self.tb_offset)
603 records = _fixed_getinnerframes(etb, context,self.tb_offset)
584 #print 'alex records:', records # dbg
604 #print 'alex records:', records # dbg
585 except:
605 except:
586
606
587 # FIXME: I've been getting many crash reports from python 2.3
607 # FIXME: I've been getting many crash reports from python 2.3
588 # users, traceable to inspect.py. If I can find a small test-case
608 # users, traceable to inspect.py. If I can find a small test-case
589 # to reproduce this, I should either write a better workaround or
609 # to reproduce this, I should either write a better workaround or
590 # file a bug report against inspect (if that's the real problem).
610 # file a bug report against inspect (if that's the real problem).
591 # So far, I haven't been able to find an isolated example to
611 # So far, I haven't been able to find an isolated example to
592 # reproduce the problem.
612 # reproduce the problem.
593 inspect_error()
613 inspect_error()
594 traceback.print_exc(file=Term.cerr)
614 traceback.print_exc(file=Term.cerr)
595 info('\nUnfortunately, your original traceback can not be constructed.\n')
615 info('\nUnfortunately, your original traceback can not be constructed.\n')
596 return ''
616 return ''
597
617
598 # build some color string templates outside these nested loops
618 # build some color string templates outside these nested loops
599 tpl_link = '%s%%s%s' % (Colors.filenameEm,ColorsNormal)
619 tpl_link = '%s%%s%s' % (Colors.filenameEm,ColorsNormal)
600 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
620 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
601 ColorsNormal)
621 ColorsNormal)
602 tpl_call_fail = 'in %s%%s%s(***failed resolving arguments***)%s' % \
622 tpl_call_fail = 'in %s%%s%s(***failed resolving arguments***)%s' % \
603 (Colors.vName, Colors.valEm, ColorsNormal)
623 (Colors.vName, Colors.valEm, ColorsNormal)
604 tpl_local_var = '%s%%s%s' % (Colors.vName, ColorsNormal)
624 tpl_local_var = '%s%%s%s' % (Colors.vName, ColorsNormal)
605 tpl_global_var = '%sglobal%s %s%%s%s' % (Colors.em, ColorsNormal,
625 tpl_global_var = '%sglobal%s %s%%s%s' % (Colors.em, ColorsNormal,
606 Colors.vName, ColorsNormal)
626 Colors.vName, ColorsNormal)
607 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
627 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
608 tpl_line = '%s%%s%s %%s' % (Colors.lineno, ColorsNormal)
628 tpl_line = '%s%%s%s %%s' % (Colors.lineno, ColorsNormal)
609 tpl_line_em = '%s%%s%s %%s%s' % (Colors.linenoEm,Colors.line,
629 tpl_line_em = '%s%%s%s %%s%s' % (Colors.linenoEm,Colors.line,
610 ColorsNormal)
630 ColorsNormal)
611
631
612 # now, loop over all records printing context and info
632 # now, loop over all records printing context and info
613 abspath = os.path.abspath
633 abspath = os.path.abspath
614 for frame, file, lnum, func, lines, index in records:
634 for frame, file, lnum, func, lines, index in records:
615 #print '*** record:',file,lnum,func,lines,index # dbg
635 #print '*** record:',file,lnum,func,lines,index # dbg
616 try:
636 try:
617 file = file and abspath(file) or '?'
637 file = file and abspath(file) or '?'
618 except OSError:
638 except OSError:
619 # if file is '<console>' or something not in the filesystem,
639 # if file is '<console>' or something not in the filesystem,
620 # the abspath call will throw an OSError. Just ignore it and
640 # the abspath call will throw an OSError. Just ignore it and
621 # keep the original file string.
641 # keep the original file string.
622 pass
642 pass
623 link = tpl_link % file
643 link = tpl_link % file
624 try:
644 try:
625 args, varargs, varkw, locals = inspect.getargvalues(frame)
645 args, varargs, varkw, locals = inspect.getargvalues(frame)
626 except:
646 except:
627 # This can happen due to a bug in python2.3. We should be
647 # This can happen due to a bug in python2.3. We should be
628 # able to remove this try/except when 2.4 becomes a
648 # able to remove this try/except when 2.4 becomes a
629 # requirement. Bug details at http://python.org/sf/1005466
649 # requirement. Bug details at http://python.org/sf/1005466
630 inspect_error()
650 inspect_error()
631 traceback.print_exc(file=Term.cerr)
651 traceback.print_exc(file=Term.cerr)
632 info("\nIPython's exception reporting continues...\n")
652 info("\nIPython's exception reporting continues...\n")
633
653
634 if func == '?':
654 if func == '?':
635 call = ''
655 call = ''
636 else:
656 else:
637 # Decide whether to include variable details or not
657 # Decide whether to include variable details or not
638 var_repr = self.include_vars and eqrepr or nullrepr
658 var_repr = self.include_vars and eqrepr or nullrepr
639 try:
659 try:
640 call = tpl_call % (func,inspect.formatargvalues(args,
660 call = tpl_call % (func,inspect.formatargvalues(args,
641 varargs, varkw,
661 varargs, varkw,
642 locals,formatvalue=var_repr))
662 locals,formatvalue=var_repr))
643 except KeyError:
663 except KeyError:
644 # Very odd crash from inspect.formatargvalues(). The
664 # Very odd crash from inspect.formatargvalues(). The
645 # scenario under which it appeared was a call to
665 # scenario under which it appeared was a call to
646 # view(array,scale) in NumTut.view.view(), where scale had
666 # view(array,scale) in NumTut.view.view(), where scale had
647 # been defined as a scalar (it should be a tuple). Somehow
667 # been defined as a scalar (it should be a tuple). Somehow
648 # inspect messes up resolving the argument list of view()
668 # inspect messes up resolving the argument list of view()
649 # and barfs out. At some point I should dig into this one
669 # and barfs out. At some point I should dig into this one
650 # and file a bug report about it.
670 # and file a bug report about it.
651 inspect_error()
671 inspect_error()
652 traceback.print_exc(file=Term.cerr)
672 traceback.print_exc(file=Term.cerr)
653 info("\nIPython's exception reporting continues...\n")
673 info("\nIPython's exception reporting continues...\n")
654 call = tpl_call_fail % func
674 call = tpl_call_fail % func
655
675
656 # Initialize a list of names on the current line, which the
676 # Initialize a list of names on the current line, which the
657 # tokenizer below will populate.
677 # tokenizer below will populate.
658 names = []
678 names = []
659
679
660 def tokeneater(token_type, token, start, end, line):
680 def tokeneater(token_type, token, start, end, line):
661 """Stateful tokeneater which builds dotted names.
681 """Stateful tokeneater which builds dotted names.
662
682
663 The list of names it appends to (from the enclosing scope) can
683 The list of names it appends to (from the enclosing scope) can
664 contain repeated composite names. This is unavoidable, since
684 contain repeated composite names. This is unavoidable, since
665 there is no way to disambguate partial dotted structures until
685 there is no way to disambguate partial dotted structures until
666 the full list is known. The caller is responsible for pruning
686 the full list is known. The caller is responsible for pruning
667 the final list of duplicates before using it."""
687 the final list of duplicates before using it."""
668
688
669 # build composite names
689 # build composite names
670 if token == '.':
690 if token == '.':
671 try:
691 try:
672 names[-1] += '.'
692 names[-1] += '.'
673 # store state so the next token is added for x.y.z names
693 # store state so the next token is added for x.y.z names
674 tokeneater.name_cont = True
694 tokeneater.name_cont = True
675 return
695 return
676 except IndexError:
696 except IndexError:
677 pass
697 pass
678 if token_type == tokenize.NAME and token not in keyword.kwlist:
698 if token_type == tokenize.NAME and token not in keyword.kwlist:
679 if tokeneater.name_cont:
699 if tokeneater.name_cont:
680 # Dotted names
700 # Dotted names
681 names[-1] += token
701 names[-1] += token
682 tokeneater.name_cont = False
702 tokeneater.name_cont = False
683 else:
703 else:
684 # Regular new names. We append everything, the caller
704 # Regular new names. We append everything, the caller
685 # will be responsible for pruning the list later. It's
705 # will be responsible for pruning the list later. It's
686 # very tricky to try to prune as we go, b/c composite
706 # very tricky to try to prune as we go, b/c composite
687 # names can fool us. The pruning at the end is easy
707 # names can fool us. The pruning at the end is easy
688 # to do (or the caller can print a list with repeated
708 # to do (or the caller can print a list with repeated
689 # names if so desired.
709 # names if so desired.
690 names.append(token)
710 names.append(token)
691 elif token_type == tokenize.NEWLINE:
711 elif token_type == tokenize.NEWLINE:
692 raise IndexError
712 raise IndexError
693 # we need to store a bit of state in the tokenizer to build
713 # we need to store a bit of state in the tokenizer to build
694 # dotted names
714 # dotted names
695 tokeneater.name_cont = False
715 tokeneater.name_cont = False
696
716
697 def linereader(file=file, lnum=[lnum], getline=linecache.getline):
717 def linereader(file=file, lnum=[lnum], getline=linecache.getline):
698 line = getline(file, lnum[0])
718 line = getline(file, lnum[0])
699 lnum[0] += 1
719 lnum[0] += 1
700 return line
720 return line
701
721
702 # Build the list of names on this line of code where the exception
722 # Build the list of names on this line of code where the exception
703 # occurred.
723 # occurred.
704 try:
724 try:
705 # This builds the names list in-place by capturing it from the
725 # This builds the names list in-place by capturing it from the
706 # enclosing scope.
726 # enclosing scope.
707 tokenize.tokenize(linereader, tokeneater)
727 tokenize.tokenize(linereader, tokeneater)
708 except IndexError:
728 except IndexError:
709 # signals exit of tokenizer
729 # signals exit of tokenizer
710 pass
730 pass
711 except tokenize.TokenError,msg:
731 except tokenize.TokenError,msg:
712 _m = ("An unexpected error occurred while tokenizing input\n"
732 _m = ("An unexpected error occurred while tokenizing input\n"
713 "The following traceback may be corrupted or invalid\n"
733 "The following traceback may be corrupted or invalid\n"
714 "The error message is: %s\n" % msg)
734 "The error message is: %s\n" % msg)
715 error(_m)
735 error(_m)
716
736
717 # prune names list of duplicates, but keep the right order
737 # prune names list of duplicates, but keep the right order
718 unique_names = uniq_stable(names)
738 unique_names = uniq_stable(names)
719
739
720 # Start loop over vars
740 # Start loop over vars
721 lvals = []
741 lvals = []
722 if self.include_vars:
742 if self.include_vars:
723 for name_full in unique_names:
743 for name_full in unique_names:
724 name_base = name_full.split('.',1)[0]
744 name_base = name_full.split('.',1)[0]
725 if name_base in frame.f_code.co_varnames:
745 if name_base in frame.f_code.co_varnames:
726 if locals.has_key(name_base):
746 if locals.has_key(name_base):
727 try:
747 try:
728 value = repr(eval(name_full,locals))
748 value = repr(eval(name_full,locals))
729 except:
749 except:
730 value = undefined
750 value = undefined
731 else:
751 else:
732 value = undefined
752 value = undefined
733 name = tpl_local_var % name_full
753 name = tpl_local_var % name_full
734 else:
754 else:
735 if frame.f_globals.has_key(name_base):
755 if frame.f_globals.has_key(name_base):
736 try:
756 try:
737 value = repr(eval(name_full,frame.f_globals))
757 value = repr(eval(name_full,frame.f_globals))
738 except:
758 except:
739 value = undefined
759 value = undefined
740 else:
760 else:
741 value = undefined
761 value = undefined
742 name = tpl_global_var % name_full
762 name = tpl_global_var % name_full
743 lvals.append(tpl_name_val % (name,value))
763 lvals.append(tpl_name_val % (name,value))
744 if lvals:
764 if lvals:
745 lvals = '%s%s' % (indent,em_normal.join(lvals))
765 lvals = '%s%s' % (indent,em_normal.join(lvals))
746 else:
766 else:
747 lvals = ''
767 lvals = ''
748
768
749 level = '%s %s\n' % (link,call)
769 level = '%s %s\n' % (link,call)
750
770
751 if index is None:
771 if index is None:
752 frames.append(level)
772 frames.append(level)
753 else:
773 else:
754 frames.append('%s%s' % (level,''.join(
774 frames.append('%s%s' % (level,''.join(
755 _formatTracebackLines(lnum,index,lines,Colors,lvals,
775 _formatTracebackLines(lnum,index,lines,Colors,lvals,
756 col_scheme))))
776 col_scheme))))
757
777
758 # Get (safely) a string form of the exception info
778 # Get (safely) a string form of the exception info
759 try:
779 try:
760 etype_str,evalue_str = map(str,(etype,evalue))
780 etype_str,evalue_str = map(str,(etype,evalue))
761 except:
781 except:
762 # User exception is improperly defined.
782 # User exception is improperly defined.
763 etype,evalue = str,sys.exc_info()[:2]
783 etype,evalue = str,sys.exc_info()[:2]
764 etype_str,evalue_str = map(str,(etype,evalue))
784 etype_str,evalue_str = map(str,(etype,evalue))
765 # ... and format it
785 # ... and format it
766 exception = ['%s%s%s: %s' % (Colors.excName, etype_str,
786 exception = ['%s%s%s: %s' % (Colors.excName, etype_str,
767 ColorsNormal, evalue_str)]
787 ColorsNormal, evalue_str)]
768 if type(evalue) is types.InstanceType:
788 if type(evalue) is types.InstanceType:
769 try:
789 try:
770 names = [w for w in dir(evalue) if isinstance(w, basestring)]
790 names = [w for w in dir(evalue) if isinstance(w, basestring)]
771 except:
791 except:
772 # Every now and then, an object with funny inernals blows up
792 # Every now and then, an object with funny inernals blows up
773 # when dir() is called on it. We do the best we can to report
793 # when dir() is called on it. We do the best we can to report
774 # the problem and continue
794 # the problem and continue
775 _m = '%sException reporting error (object with broken dir())%s:'
795 _m = '%sException reporting error (object with broken dir())%s:'
776 exception.append(_m % (Colors.excName,ColorsNormal))
796 exception.append(_m % (Colors.excName,ColorsNormal))
777 etype_str,evalue_str = map(str,sys.exc_info()[:2])
797 etype_str,evalue_str = map(str,sys.exc_info()[:2])
778 exception.append('%s%s%s: %s' % (Colors.excName,etype_str,
798 exception.append('%s%s%s: %s' % (Colors.excName,etype_str,
779 ColorsNormal, evalue_str))
799 ColorsNormal, evalue_str))
780 names = []
800 names = []
781 for name in names:
801 for name in names:
782 value = text_repr(getattr(evalue, name))
802 value = text_repr(getattr(evalue, name))
783 exception.append('\n%s%s = %s' % (indent, name, value))
803 exception.append('\n%s%s = %s' % (indent, name, value))
784 # return all our info assembled as a single string
804 # return all our info assembled as a single string
785 return '%s\n\n%s\n%s' % (head,'\n'.join(frames),''.join(exception[0]) )
805 return '%s\n\n%s\n%s' % (head,'\n'.join(frames),''.join(exception[0]) )
786
806
787 def debugger(self,force=False):
807 def debugger(self,force=False):
788 """Call up the pdb debugger if desired, always clean up the tb
808 """Call up the pdb debugger if desired, always clean up the tb
789 reference.
809 reference.
790
810
791 Keywords:
811 Keywords:
792
812
793 - force(False): by default, this routine checks the instance call_pdb
813 - force(False): by default, this routine checks the instance call_pdb
794 flag and does not actually invoke the debugger if the flag is false.
814 flag and does not actually invoke the debugger if the flag is false.
795 The 'force' option forces the debugger to activate even if the flag
815 The 'force' option forces the debugger to activate even if the flag
796 is false.
816 is false.
797
817
798 If the call_pdb flag is set, the pdb interactive debugger is
818 If the call_pdb flag is set, the pdb interactive debugger is
799 invoked. In all cases, the self.tb reference to the current traceback
819 invoked. In all cases, the self.tb reference to the current traceback
800 is deleted to prevent lingering references which hamper memory
820 is deleted to prevent lingering references which hamper memory
801 management.
821 management.
802
822
803 Note that each call to pdb() does an 'import readline', so if your app
823 Note that each call to pdb() does an 'import readline', so if your app
804 requires a special setup for the readline completers, you'll have to
824 requires a special setup for the readline completers, you'll have to
805 fix that by hand after invoking the exception handler."""
825 fix that by hand after invoking the exception handler."""
806
826
807 if force or self.call_pdb:
827 if force or self.call_pdb:
808 if self.pdb is None:
828 if self.pdb is None:
809 self.pdb = Debugger.Pdb(
829 self.pdb = Debugger.Pdb(
810 self.color_scheme_table.active_scheme_name)
830 self.color_scheme_table.active_scheme_name)
811 # the system displayhook may have changed, restore the original
831 # the system displayhook may have changed, restore the original
812 # for pdb
832 # for pdb
813 dhook = sys.displayhook
833 dhook = sys.displayhook
814 sys.displayhook = sys.__displayhook__
834 sys.displayhook = sys.__displayhook__
815 self.pdb.reset()
835 self.pdb.reset()
816 # Find the right frame so we don't pop up inside ipython itself
836 # Find the right frame so we don't pop up inside ipython itself
817 if hasattr(self,'tb'):
837 if hasattr(self,'tb'):
818 etb = self.tb
838 etb = self.tb
819 else:
839 else:
820 etb = self.tb = sys.last_traceback
840 etb = self.tb = sys.last_traceback
821 while self.tb.tb_next is not None:
841 while self.tb.tb_next is not None:
822 self.tb = self.tb.tb_next
842 self.tb = self.tb.tb_next
823 try:
843 try:
824 if etb and etb.tb_next:
844 if etb and etb.tb_next:
825 etb = etb.tb_next
845 etb = etb.tb_next
826 self.pdb.botframe = etb.tb_frame
846 self.pdb.botframe = etb.tb_frame
827 self.pdb.interaction(self.tb.tb_frame, self.tb)
847 self.pdb.interaction(self.tb.tb_frame, self.tb)
828 finally:
848 finally:
829 sys.displayhook = dhook
849 sys.displayhook = dhook
830
850
831 if hasattr(self,'tb'):
851 if hasattr(self,'tb'):
832 del self.tb
852 del self.tb
833
853
834 def handler(self, info=None):
854 def handler(self, info=None):
835 (etype, evalue, etb) = info or sys.exc_info()
855 (etype, evalue, etb) = info or sys.exc_info()
836 self.tb = etb
856 self.tb = etb
837 Term.cout.flush()
857 Term.cout.flush()
838 Term.cerr.flush()
858 Term.cerr.flush()
839 print >> Term.cerr, self.text(etype, evalue, etb)
859 print >> Term.cerr, self.text(etype, evalue, etb)
840
860
841 # Changed so an instance can just be called as VerboseTB_inst() and print
861 # Changed so an instance can just be called as VerboseTB_inst() and print
842 # out the right info on its own.
862 # out the right info on its own.
843 def __call__(self, etype=None, evalue=None, etb=None):
863 def __call__(self, etype=None, evalue=None, etb=None):
844 """This hook can replace sys.excepthook (for Python 2.1 or higher)."""
864 """This hook can replace sys.excepthook (for Python 2.1 or higher)."""
845 if etb is None:
865 if etb is None:
846 self.handler()
866 self.handler()
847 else:
867 else:
848 self.handler((etype, evalue, etb))
868 self.handler((etype, evalue, etb))
849 self.debugger()
869 self.debugger()
850
870
851 #----------------------------------------------------------------------------
871 #----------------------------------------------------------------------------
852 class FormattedTB(VerboseTB,ListTB):
872 class FormattedTB(VerboseTB,ListTB):
853 """Subclass ListTB but allow calling with a traceback.
873 """Subclass ListTB but allow calling with a traceback.
854
874
855 It can thus be used as a sys.excepthook for Python > 2.1.
875 It can thus be used as a sys.excepthook for Python > 2.1.
856
876
857 Also adds 'Context' and 'Verbose' modes, not available in ListTB.
877 Also adds 'Context' and 'Verbose' modes, not available in ListTB.
858
878
859 Allows a tb_offset to be specified. This is useful for situations where
879 Allows a tb_offset to be specified. This is useful for situations where
860 one needs to remove a number of topmost frames from the traceback (such as
880 one needs to remove a number of topmost frames from the traceback (such as
861 occurs with python programs that themselves execute other python code,
881 occurs with python programs that themselves execute other python code,
862 like Python shells). """
882 like Python shells). """
863
883
864 def __init__(self, mode = 'Plain', color_scheme='Linux',
884 def __init__(self, mode = 'Plain', color_scheme='Linux',
865 tb_offset = 0,long_header=0,call_pdb=0,include_vars=0):
885 tb_offset = 0,long_header=0,call_pdb=0,include_vars=0):
866
886
867 # NEVER change the order of this list. Put new modes at the end:
887 # NEVER change the order of this list. Put new modes at the end:
868 self.valid_modes = ['Plain','Context','Verbose']
888 self.valid_modes = ['Plain','Context','Verbose']
869 self.verbose_modes = self.valid_modes[1:3]
889 self.verbose_modes = self.valid_modes[1:3]
870
890
871 VerboseTB.__init__(self,color_scheme,tb_offset,long_header,
891 VerboseTB.__init__(self,color_scheme,tb_offset,long_header,
872 call_pdb=call_pdb,include_vars=include_vars)
892 call_pdb=call_pdb,include_vars=include_vars)
873 self.set_mode(mode)
893 self.set_mode(mode)
874
894
875 def _extract_tb(self,tb):
895 def _extract_tb(self,tb):
876 if tb:
896 if tb:
877 return traceback.extract_tb(tb)
897 return traceback.extract_tb(tb)
878 else:
898 else:
879 return None
899 return None
880
900
881 def text(self, etype, value, tb,context=5,mode=None):
901 def text(self, etype, value, tb,context=5,mode=None):
882 """Return formatted traceback.
902 """Return formatted traceback.
883
903
884 If the optional mode parameter is given, it overrides the current
904 If the optional mode parameter is given, it overrides the current
885 mode."""
905 mode."""
886
906
887 if mode is None:
907 if mode is None:
888 mode = self.mode
908 mode = self.mode
889 if mode in self.verbose_modes:
909 if mode in self.verbose_modes:
890 # verbose modes need a full traceback
910 # verbose modes need a full traceback
891 return VerboseTB.text(self,etype, value, tb,context=5)
911 return VerboseTB.text(self,etype, value, tb,context=5)
892 else:
912 else:
893 # We must check the source cache because otherwise we can print
913 # We must check the source cache because otherwise we can print
894 # out-of-date source code.
914 # out-of-date source code.
895 linecache.checkcache()
915 linecache.checkcache()
896 # Now we can extract and format the exception
916 # Now we can extract and format the exception
897 elist = self._extract_tb(tb)
917 elist = self._extract_tb(tb)
898 if len(elist) > self.tb_offset:
918 if len(elist) > self.tb_offset:
899 del elist[:self.tb_offset]
919 del elist[:self.tb_offset]
900 return ListTB.text(self,etype,value,elist)
920 return ListTB.text(self,etype,value,elist)
901
921
902 def set_mode(self,mode=None):
922 def set_mode(self,mode=None):
903 """Switch to the desired mode.
923 """Switch to the desired mode.
904
924
905 If mode is not specified, cycles through the available modes."""
925 If mode is not specified, cycles through the available modes."""
906
926
907 if not mode:
927 if not mode:
908 new_idx = ( self.valid_modes.index(self.mode) + 1 ) % \
928 new_idx = ( self.valid_modes.index(self.mode) + 1 ) % \
909 len(self.valid_modes)
929 len(self.valid_modes)
910 self.mode = self.valid_modes[new_idx]
930 self.mode = self.valid_modes[new_idx]
911 elif mode not in self.valid_modes:
931 elif mode not in self.valid_modes:
912 raise ValueError, 'Unrecognized mode in FormattedTB: <'+mode+'>\n'\
932 raise ValueError, 'Unrecognized mode in FormattedTB: <'+mode+'>\n'\
913 'Valid modes: '+str(self.valid_modes)
933 'Valid modes: '+str(self.valid_modes)
914 else:
934 else:
915 self.mode = mode
935 self.mode = mode
916 # include variable details only in 'Verbose' mode
936 # include variable details only in 'Verbose' mode
917 self.include_vars = (self.mode == self.valid_modes[2])
937 self.include_vars = (self.mode == self.valid_modes[2])
918
938
919 # some convenient shorcuts
939 # some convenient shorcuts
920 def plain(self):
940 def plain(self):
921 self.set_mode(self.valid_modes[0])
941 self.set_mode(self.valid_modes[0])
922
942
923 def context(self):
943 def context(self):
924 self.set_mode(self.valid_modes[1])
944 self.set_mode(self.valid_modes[1])
925
945
926 def verbose(self):
946 def verbose(self):
927 self.set_mode(self.valid_modes[2])
947 self.set_mode(self.valid_modes[2])
928
948
929 #----------------------------------------------------------------------------
949 #----------------------------------------------------------------------------
930 class AutoFormattedTB(FormattedTB):
950 class AutoFormattedTB(FormattedTB):
931 """A traceback printer which can be called on the fly.
951 """A traceback printer which can be called on the fly.
932
952
933 It will find out about exceptions by itself.
953 It will find out about exceptions by itself.
934
954
935 A brief example:
955 A brief example:
936
956
937 AutoTB = AutoFormattedTB(mode = 'Verbose',color_scheme='Linux')
957 AutoTB = AutoFormattedTB(mode = 'Verbose',color_scheme='Linux')
938 try:
958 try:
939 ...
959 ...
940 except:
960 except:
941 AutoTB() # or AutoTB(out=logfile) where logfile is an open file object
961 AutoTB() # or AutoTB(out=logfile) where logfile is an open file object
942 """
962 """
943 def __call__(self,etype=None,evalue=None,etb=None,
963 def __call__(self,etype=None,evalue=None,etb=None,
944 out=None,tb_offset=None):
964 out=None,tb_offset=None):
945 """Print out a formatted exception traceback.
965 """Print out a formatted exception traceback.
946
966
947 Optional arguments:
967 Optional arguments:
948 - out: an open file-like object to direct output to.
968 - out: an open file-like object to direct output to.
949
969
950 - tb_offset: the number of frames to skip over in the stack, on a
970 - tb_offset: the number of frames to skip over in the stack, on a
951 per-call basis (this overrides temporarily the instance's tb_offset
971 per-call basis (this overrides temporarily the instance's tb_offset
952 given at initialization time. """
972 given at initialization time. """
953
973
954 if out is None:
974 if out is None:
955 out = Term.cerr
975 out = Term.cerr
956 Term.cout.flush()
976 Term.cout.flush()
957 out.flush()
977 out.flush()
958 if tb_offset is not None:
978 if tb_offset is not None:
959 tb_offset, self.tb_offset = self.tb_offset, tb_offset
979 tb_offset, self.tb_offset = self.tb_offset, tb_offset
960 print >> out, self.text(etype, evalue, etb)
980 print >> out, self.text(etype, evalue, etb)
961 self.tb_offset = tb_offset
981 self.tb_offset = tb_offset
962 else:
982 else:
963 print >> out, self.text(etype, evalue, etb)
983 print >> out, self.text(etype, evalue, etb)
964 self.debugger()
984 self.debugger()
965
985
966 def text(self,etype=None,value=None,tb=None,context=5,mode=None):
986 def text(self,etype=None,value=None,tb=None,context=5,mode=None):
967 if etype is None:
987 if etype is None:
968 etype,value,tb = sys.exc_info()
988 etype,value,tb = sys.exc_info()
969 self.tb = tb
989 self.tb = tb
970 return FormattedTB.text(self,etype,value,tb,context=5,mode=mode)
990 return FormattedTB.text(self,etype,value,tb,context=5,mode=mode)
971
991
972 #---------------------------------------------------------------------------
992 #---------------------------------------------------------------------------
973 # A simple class to preserve Nathan's original functionality.
993 # A simple class to preserve Nathan's original functionality.
974 class ColorTB(FormattedTB):
994 class ColorTB(FormattedTB):
975 """Shorthand to initialize a FormattedTB in Linux colors mode."""
995 """Shorthand to initialize a FormattedTB in Linux colors mode."""
976 def __init__(self,color_scheme='Linux',call_pdb=0):
996 def __init__(self,color_scheme='Linux',call_pdb=0):
977 FormattedTB.__init__(self,color_scheme=color_scheme,
997 FormattedTB.__init__(self,color_scheme=color_scheme,
978 call_pdb=call_pdb)
998 call_pdb=call_pdb)
979
999
980 #----------------------------------------------------------------------------
1000 #----------------------------------------------------------------------------
981 # module testing (minimal)
1001 # module testing (minimal)
982 if __name__ == "__main__":
1002 if __name__ == "__main__":
983 def spam(c, (d, e)):
1003 def spam(c, (d, e)):
984 x = c + d
1004 x = c + d
985 y = c * d
1005 y = c * d
986 foo(x, y)
1006 foo(x, y)
987
1007
988 def foo(a, b, bar=1):
1008 def foo(a, b, bar=1):
989 eggs(a, b + bar)
1009 eggs(a, b + bar)
990
1010
991 def eggs(f, g, z=globals()):
1011 def eggs(f, g, z=globals()):
992 h = f + g
1012 h = f + g
993 i = f - g
1013 i = f - g
994 return h / i
1014 return h / i
995
1015
996 print ''
1016 print ''
997 print '*** Before ***'
1017 print '*** Before ***'
998 try:
1018 try:
999 print spam(1, (2, 3))
1019 print spam(1, (2, 3))
1000 except:
1020 except:
1001 traceback.print_exc()
1021 traceback.print_exc()
1002 print ''
1022 print ''
1003
1023
1004 handler = ColorTB()
1024 handler = ColorTB()
1005 print '*** ColorTB ***'
1025 print '*** ColorTB ***'
1006 try:
1026 try:
1007 print spam(1, (2, 3))
1027 print spam(1, (2, 3))
1008 except:
1028 except:
1009 apply(handler, sys.exc_info() )
1029 apply(handler, sys.exc_info() )
1010 print ''
1030 print ''
1011
1031
1012 handler = VerboseTB()
1032 handler = VerboseTB()
1013 print '*** VerboseTB ***'
1033 print '*** VerboseTB ***'
1014 try:
1034 try:
1015 print spam(1, (2, 3))
1035 print spam(1, (2, 3))
1016 except:
1036 except:
1017 apply(handler, sys.exc_info() )
1037 apply(handler, sys.exc_info() )
1018 print ''
1038 print ''
1019
1039
@@ -1,7259 +1,7263 b''
1 2007-12-01 Robert Kern <robert.kern@gmail.com>
1 2007-12-01 Robert Kern <robert.kern@gmail.com>
2
2
3 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
3 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
4 inspect.findsource(). It can now find source lines inside zipped
4 inspect.findsource(). It can now find source lines inside zipped
5 packages.
5 packages.
6
7 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
8 in the frame's namespace before trusting the filename in the code object
9 which created the frame.
6
10
7 2007-11-29 *** Released version 0.8.2
11 2007-11-29 *** Released version 0.8.2
8
12
9 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
13 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
10
14
11 * IPython/Logger.py (Logger.logstop): add a proper logstop()
15 * IPython/Logger.py (Logger.logstop): add a proper logstop()
12 method to fully stop the logger, along with a corresponding
16 method to fully stop the logger, along with a corresponding
13 %logstop magic for interactive use.
17 %logstop magic for interactive use.
14
18
15 * IPython/Extensions/ipy_host_completers.py: added new host
19 * IPython/Extensions/ipy_host_completers.py: added new host
16 completers functionality, contributed by Gael Pasgrimaud
20 completers functionality, contributed by Gael Pasgrimaud
17 <gawel-AT-afpy.org>.
21 <gawel-AT-afpy.org>.
18
22
19 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
23 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
20
24
21 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
25 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
22 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
26 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
23 options handling. Unicode fix in %whos (committed a while ago)
27 options handling. Unicode fix in %whos (committed a while ago)
24 was also contributed by Paul.
28 was also contributed by Paul.
25
29
26 2007-11-23 Darren Dale <darren.dale@cornell.edu>
30 2007-11-23 Darren Dale <darren.dale@cornell.edu>
27 * ipy_traits_completer.py: let traits_completer respect the user's
31 * ipy_traits_completer.py: let traits_completer respect the user's
28 readline_omit__names setting.
32 readline_omit__names setting.
29
33
30 2007-11-08 Ville Vainio <vivainio@gmail.com>
34 2007-11-08 Ville Vainio <vivainio@gmail.com>
31 * ipy_completers.py (import completer): assume 'xml' module exists.
35 * ipy_completers.py (import completer): assume 'xml' module exists.
32 Do not add every module twice anymore. Closes #196.
36 Do not add every module twice anymore. Closes #196.
33
37
34 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
38 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
35 completer that uses apt-cache to search for existing packages.
39 completer that uses apt-cache to search for existing packages.
36
40
37 2007-11-06 Ville Vainio <vivainio@gmail.com>
41 2007-11-06 Ville Vainio <vivainio@gmail.com>
38
42
39 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
43 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
40 true. Closes #194.
44 true. Closes #194.
41
45
42 2007-11-01 Brian Granger <ellisonbg@gmail.com>
46 2007-11-01 Brian Granger <ellisonbg@gmail.com>
43
47
44 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
48 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
45 working with OS X 10.5 libedit implementation of readline.
49 working with OS X 10.5 libedit implementation of readline.
46
50
47 2007-10-24 Ville Vainio <vivainio@gmail.com>
51 2007-10-24 Ville Vainio <vivainio@gmail.com>
48
52
49 * iplib.py(user_setup): To route around buggy installations where
53 * iplib.py(user_setup): To route around buggy installations where
50 UserConfig is not available, create a minimal _ipython.
54 UserConfig is not available, create a minimal _ipython.
51
55
52 * iplib.py: Unicode fixes from Jorgen.
56 * iplib.py: Unicode fixes from Jorgen.
53
57
54 * genutils.py: Slist now has new method 'fields()' for extraction of
58 * genutils.py: Slist now has new method 'fields()' for extraction of
55 whitespace-separated fields from line-oriented data.
59 whitespace-separated fields from line-oriented data.
56
60
57 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
61 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
58
62
59 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
63 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
60 when querying objects with no __class__ attribute (such as
64 when querying objects with no __class__ attribute (such as
61 f2py-generated modules).
65 f2py-generated modules).
62
66
63 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
67 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
64
68
65 * IPython/Magic.py (magic_time): track compilation time and report
69 * IPython/Magic.py (magic_time): track compilation time and report
66 it if longer than 0.1s (fix done to %time and %timeit). After a
70 it if longer than 0.1s (fix done to %time and %timeit). After a
67 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
71 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
68
72
69 2007-09-18 Ville Vainio <vivainio@gmail.com>
73 2007-09-18 Ville Vainio <vivainio@gmail.com>
70
74
71 * genutils.py(make_quoted_expr): Do not use Itpl, it does
75 * genutils.py(make_quoted_expr): Do not use Itpl, it does
72 not support unicode at the moment. Fixes (many) magic calls with
76 not support unicode at the moment. Fixes (many) magic calls with
73 special characters.
77 special characters.
74
78
75 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
79 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
76
80
77 * IPython/genutils.py (doctest_reload): expose the doctest
81 * IPython/genutils.py (doctest_reload): expose the doctest
78 reloader to the user so that people can easily reset doctest while
82 reloader to the user so that people can easily reset doctest while
79 using it interactively. Fixes a problem reported by Jorgen.
83 using it interactively. Fixes a problem reported by Jorgen.
80
84
81 * IPython/iplib.py (InteractiveShell.__init__): protect the
85 * IPython/iplib.py (InteractiveShell.__init__): protect the
82 FakeModule instances used for __main__ in %run calls from
86 FakeModule instances used for __main__ in %run calls from
83 deletion, so that user code defined in them isn't left with
87 deletion, so that user code defined in them isn't left with
84 dangling references due to the Python module deletion machinery.
88 dangling references due to the Python module deletion machinery.
85 This should fix the problems reported by Darren.
89 This should fix the problems reported by Darren.
86
90
87 2007-09-10 Darren Dale <dd55@cornell.edu>
91 2007-09-10 Darren Dale <dd55@cornell.edu>
88
92
89 * Cleanup of IPShellQt and IPShellQt4
93 * Cleanup of IPShellQt and IPShellQt4
90
94
91 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
95 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
92
96
93 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
97 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
94 doctest support.
98 doctest support.
95
99
96 * IPython/iplib.py (safe_execfile): minor docstring improvements.
100 * IPython/iplib.py (safe_execfile): minor docstring improvements.
97
101
98 2007-09-08 Ville Vainio <vivainio@gmail.com>
102 2007-09-08 Ville Vainio <vivainio@gmail.com>
99
103
100 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
104 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
101 directory, not the target directory.
105 directory, not the target directory.
102
106
103 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
107 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
104 exception that won't print the tracebacks. Switched many magics to
108 exception that won't print the tracebacks. Switched many magics to
105 raise them on error situations, also GetoptError is not printed
109 raise them on error situations, also GetoptError is not printed
106 anymore.
110 anymore.
107
111
108 2007-09-07 Ville Vainio <vivainio@gmail.com>
112 2007-09-07 Ville Vainio <vivainio@gmail.com>
109
113
110 * iplib.py: do not auto-alias "dir", it screws up other dir auto
114 * iplib.py: do not auto-alias "dir", it screws up other dir auto
111 aliases.
115 aliases.
112
116
113 * genutils.py: SList.grep() implemented.
117 * genutils.py: SList.grep() implemented.
114
118
115 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
119 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
116 for easy "out of the box" setup of several common editors, so that
120 for easy "out of the box" setup of several common editors, so that
117 e.g. '%edit os.path.isfile' will jump to the correct line
121 e.g. '%edit os.path.isfile' will jump to the correct line
118 automatically. Contributions for command lines of your favourite
122 automatically. Contributions for command lines of your favourite
119 editors welcome.
123 editors welcome.
120
124
121 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
125 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
122
126
123 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
127 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
124 preventing source display in certain cases. In reality I think
128 preventing source display in certain cases. In reality I think
125 the problem is with Ubuntu's Python build, but this change works
129 the problem is with Ubuntu's Python build, but this change works
126 around the issue in some cases (not in all, unfortunately). I'd
130 around the issue in some cases (not in all, unfortunately). I'd
127 filed a Python bug on this with more details, but in the change of
131 filed a Python bug on this with more details, but in the change of
128 bug trackers it seems to have been lost.
132 bug trackers it seems to have been lost.
129
133
130 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
134 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
131 not the same, it's not self-documenting, doesn't allow range
135 not the same, it's not self-documenting, doesn't allow range
132 selection, and sorts alphabetically instead of numerically.
136 selection, and sorts alphabetically instead of numerically.
133 (magic_r): restore %r. No, "up + enter. One char magic" is not
137 (magic_r): restore %r. No, "up + enter. One char magic" is not
134 the same thing, since %r takes parameters to allow fast retrieval
138 the same thing, since %r takes parameters to allow fast retrieval
135 of old commands. I've received emails from users who use this a
139 of old commands. I've received emails from users who use this a
136 LOT, so it stays.
140 LOT, so it stays.
137 (magic_automagic): restore %automagic. "use _ip.option.automagic"
141 (magic_automagic): restore %automagic. "use _ip.option.automagic"
138 is not a valid replacement b/c it doesn't provide an complete
142 is not a valid replacement b/c it doesn't provide an complete
139 explanation (which the automagic docstring does).
143 explanation (which the automagic docstring does).
140 (magic_autocall): restore %autocall, with improved docstring.
144 (magic_autocall): restore %autocall, with improved docstring.
141 Same argument as for others, "use _ip.options.autocall" is not a
145 Same argument as for others, "use _ip.options.autocall" is not a
142 valid replacement.
146 valid replacement.
143 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
147 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
144 tutorials and online docs.
148 tutorials and online docs.
145
149
146 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
150 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
147
151
148 * IPython/usage.py (quick_reference): mention magics in quickref,
152 * IPython/usage.py (quick_reference): mention magics in quickref,
149 modified main banner to mention %quickref.
153 modified main banner to mention %quickref.
150
154
151 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
155 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
152
156
153 2007-09-06 Ville Vainio <vivainio@gmail.com>
157 2007-09-06 Ville Vainio <vivainio@gmail.com>
154
158
155 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
159 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
156 Callable aliases now pass the _ip as first arg. This breaks
160 Callable aliases now pass the _ip as first arg. This breaks
157 compatibility with earlier 0.8.2.svn series! (though they should
161 compatibility with earlier 0.8.2.svn series! (though they should
158 not have been in use yet outside these few extensions)
162 not have been in use yet outside these few extensions)
159
163
160 2007-09-05 Ville Vainio <vivainio@gmail.com>
164 2007-09-05 Ville Vainio <vivainio@gmail.com>
161
165
162 * external/mglob.py: expand('dirname') => ['dirname'], instead
166 * external/mglob.py: expand('dirname') => ['dirname'], instead
163 of ['dirname/foo','dirname/bar', ...].
167 of ['dirname/foo','dirname/bar', ...].
164
168
165 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
169 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
166 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
170 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
167 is useful for others as well).
171 is useful for others as well).
168
172
169 * iplib.py: on callable aliases (as opposed to old style aliases),
173 * iplib.py: on callable aliases (as opposed to old style aliases),
170 do var_expand() immediately, and use make_quoted_expr instead
174 do var_expand() immediately, and use make_quoted_expr instead
171 of hardcoded r"""
175 of hardcoded r"""
172
176
173 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
177 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
174 if not available load ipy_fsops.py for cp, mv, etc. replacements
178 if not available load ipy_fsops.py for cp, mv, etc. replacements
175
179
176 * OInspect.py, ipy_which.py: improve %which and obj? for callable
180 * OInspect.py, ipy_which.py: improve %which and obj? for callable
177 aliases
181 aliases
178
182
179 2007-09-04 Ville Vainio <vivainio@gmail.com>
183 2007-09-04 Ville Vainio <vivainio@gmail.com>
180
184
181 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
185 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
182 Relicensed under BSD with the authors approval.
186 Relicensed under BSD with the authors approval.
183
187
184 * ipmaker.py, usage.py: Remove %magic from default banner, improve
188 * ipmaker.py, usage.py: Remove %magic from default banner, improve
185 %quickref
189 %quickref
186
190
187 2007-09-03 Ville Vainio <vivainio@gmail.com>
191 2007-09-03 Ville Vainio <vivainio@gmail.com>
188
192
189 * Magic.py: %time now passes expression through prefilter,
193 * Magic.py: %time now passes expression through prefilter,
190 allowing IPython syntax.
194 allowing IPython syntax.
191
195
192 2007-09-01 Ville Vainio <vivainio@gmail.com>
196 2007-09-01 Ville Vainio <vivainio@gmail.com>
193
197
194 * ipmaker.py: Always show full traceback when newstyle config fails
198 * ipmaker.py: Always show full traceback when newstyle config fails
195
199
196 2007-08-27 Ville Vainio <vivainio@gmail.com>
200 2007-08-27 Ville Vainio <vivainio@gmail.com>
197
201
198 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
202 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
199
203
200 2007-08-26 Ville Vainio <vivainio@gmail.com>
204 2007-08-26 Ville Vainio <vivainio@gmail.com>
201
205
202 * ipmaker.py: Command line args have the highest priority again
206 * ipmaker.py: Command line args have the highest priority again
203
207
204 * iplib.py, ipmaker.py: -i command line argument now behaves as in
208 * iplib.py, ipmaker.py: -i command line argument now behaves as in
205 normal python, i.e. leaves the IPython session running after -c
209 normal python, i.e. leaves the IPython session running after -c
206 command or running a batch file from command line.
210 command or running a batch file from command line.
207
211
208 2007-08-22 Ville Vainio <vivainio@gmail.com>
212 2007-08-22 Ville Vainio <vivainio@gmail.com>
209
213
210 * iplib.py: no extra empty (last) line in raw hist w/ multiline
214 * iplib.py: no extra empty (last) line in raw hist w/ multiline
211 statements
215 statements
212
216
213 * logger.py: Fix bug where blank lines in history were not
217 * logger.py: Fix bug where blank lines in history were not
214 added until AFTER adding the current line; translated and raw
218 added until AFTER adding the current line; translated and raw
215 history should finally be in sync with prompt now.
219 history should finally be in sync with prompt now.
216
220
217 * ipy_completers.py: quick_completer now makes it easy to create
221 * ipy_completers.py: quick_completer now makes it easy to create
218 trivial custom completers
222 trivial custom completers
219
223
220 * clearcmd.py: shadow history compression & erasing, fixed input hist
224 * clearcmd.py: shadow history compression & erasing, fixed input hist
221 clearing.
225 clearing.
222
226
223 * envpersist.py, history.py: %env (sh profile only), %hist completers
227 * envpersist.py, history.py: %env (sh profile only), %hist completers
224
228
225 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
229 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
226 term title now include the drive letter, and always use / instead of
230 term title now include the drive letter, and always use / instead of
227 os.sep (as per recommended approach for win32 ipython in general).
231 os.sep (as per recommended approach for win32 ipython in general).
228
232
229 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
233 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
230 plain python scripts from ipykit command line by running
234 plain python scripts from ipykit command line by running
231 "py myscript.py", even w/o installed python.
235 "py myscript.py", even w/o installed python.
232
236
233 2007-08-21 Ville Vainio <vivainio@gmail.com>
237 2007-08-21 Ville Vainio <vivainio@gmail.com>
234
238
235 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
239 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
236 (for backwards compatibility)
240 (for backwards compatibility)
237
241
238 * history.py: switch back to %hist -t from %hist -r as default.
242 * history.py: switch back to %hist -t from %hist -r as default.
239 At least until raw history is fixed for good.
243 At least until raw history is fixed for good.
240
244
241 2007-08-20 Ville Vainio <vivainio@gmail.com>
245 2007-08-20 Ville Vainio <vivainio@gmail.com>
242
246
243 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
247 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
244 locate alias redeclarations etc. Also, avoid handling
248 locate alias redeclarations etc. Also, avoid handling
245 _ip.IP.alias_table directly, prefer using _ip.defalias.
249 _ip.IP.alias_table directly, prefer using _ip.defalias.
246
250
247
251
248 2007-08-15 Ville Vainio <vivainio@gmail.com>
252 2007-08-15 Ville Vainio <vivainio@gmail.com>
249
253
250 * prefilter.py: ! is now always served first
254 * prefilter.py: ! is now always served first
251
255
252 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
256 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
253
257
254 * IPython/iplib.py (safe_execfile): fix the SystemExit
258 * IPython/iplib.py (safe_execfile): fix the SystemExit
255 auto-suppression code to work in Python2.4 (the internal structure
259 auto-suppression code to work in Python2.4 (the internal structure
256 of that exception changed and I'd only tested the code with 2.5).
260 of that exception changed and I'd only tested the code with 2.5).
257 Bug reported by a SciPy attendee.
261 Bug reported by a SciPy attendee.
258
262
259 2007-08-13 Ville Vainio <vivainio@gmail.com>
263 2007-08-13 Ville Vainio <vivainio@gmail.com>
260
264
261 * prefilter.py: reverted !c:/bin/foo fix, made % in
265 * prefilter.py: reverted !c:/bin/foo fix, made % in
262 multiline specials work again
266 multiline specials work again
263
267
264 2007-08-13 Ville Vainio <vivainio@gmail.com>
268 2007-08-13 Ville Vainio <vivainio@gmail.com>
265
269
266 * prefilter.py: Take more care to special-case !, so that
270 * prefilter.py: Take more care to special-case !, so that
267 !c:/bin/foo.exe works.
271 !c:/bin/foo.exe works.
268
272
269 * setup.py: if we are building eggs, strip all docs and
273 * setup.py: if we are building eggs, strip all docs and
270 examples (it doesn't make sense to bytecompile examples,
274 examples (it doesn't make sense to bytecompile examples,
271 and docs would be in an awkward place anyway).
275 and docs would be in an awkward place anyway).
272
276
273 * Ryan Krauss' patch fixes start menu shortcuts when IPython
277 * Ryan Krauss' patch fixes start menu shortcuts when IPython
274 is installed into a directory that has spaces in the name.
278 is installed into a directory that has spaces in the name.
275
279
276 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
280 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
277
281
278 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
282 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
279 doctest profile and %doctest_mode, so they actually generate the
283 doctest profile and %doctest_mode, so they actually generate the
280 blank lines needed by doctest to separate individual tests.
284 blank lines needed by doctest to separate individual tests.
281
285
282 * IPython/iplib.py (safe_execfile): modify so that running code
286 * IPython/iplib.py (safe_execfile): modify so that running code
283 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
287 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
284 doesn't get a printed traceback. Any other value in sys.exit(),
288 doesn't get a printed traceback. Any other value in sys.exit(),
285 including the empty call, still generates a traceback. This
289 including the empty call, still generates a traceback. This
286 enables use of %run without having to pass '-e' for codes that
290 enables use of %run without having to pass '-e' for codes that
287 correctly set the exit status flag.
291 correctly set the exit status flag.
288
292
289 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
293 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
290
294
291 * IPython/iplib.py (InteractiveShell.post_config_initialization):
295 * IPython/iplib.py (InteractiveShell.post_config_initialization):
292 fix problems with doctests failing when run inside IPython due to
296 fix problems with doctests failing when run inside IPython due to
293 IPython's modifications of sys.displayhook.
297 IPython's modifications of sys.displayhook.
294
298
295 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
299 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
296
300
297 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
301 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
298 a string with names.
302 a string with names.
299
303
300 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
304 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
301
305
302 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
306 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
303 magic to toggle on/off the doctest pasting support without having
307 magic to toggle on/off the doctest pasting support without having
304 to leave a session to switch to a separate profile.
308 to leave a session to switch to a separate profile.
305
309
306 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
310 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
307
311
308 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
312 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
309 introduce a blank line between inputs, to conform to doctest
313 introduce a blank line between inputs, to conform to doctest
310 requirements.
314 requirements.
311
315
312 * IPython/OInspect.py (Inspector.pinfo): fix another part where
316 * IPython/OInspect.py (Inspector.pinfo): fix another part where
313 auto-generated docstrings for new-style classes were showing up.
317 auto-generated docstrings for new-style classes were showing up.
314
318
315 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
319 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
316
320
317 * api_changes: Add new file to track backward-incompatible
321 * api_changes: Add new file to track backward-incompatible
318 user-visible changes.
322 user-visible changes.
319
323
320 2007-08-06 Ville Vainio <vivainio@gmail.com>
324 2007-08-06 Ville Vainio <vivainio@gmail.com>
321
325
322 * ipmaker.py: fix bug where user_config_ns didn't exist at all
326 * ipmaker.py: fix bug where user_config_ns didn't exist at all
323 before all the config files were handled.
327 before all the config files were handled.
324
328
325 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
329 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
326
330
327 * IPython/irunner.py (RunnerFactory): Add new factory class for
331 * IPython/irunner.py (RunnerFactory): Add new factory class for
328 creating reusable runners based on filenames.
332 creating reusable runners based on filenames.
329
333
330 * IPython/Extensions/ipy_profile_doctest.py: New profile for
334 * IPython/Extensions/ipy_profile_doctest.py: New profile for
331 doctest support. It sets prompts/exceptions as similar to
335 doctest support. It sets prompts/exceptions as similar to
332 standard Python as possible, so that ipython sessions in this
336 standard Python as possible, so that ipython sessions in this
333 profile can be easily pasted as doctests with minimal
337 profile can be easily pasted as doctests with minimal
334 modifications. It also enables pasting of doctests from external
338 modifications. It also enables pasting of doctests from external
335 sources (even if they have leading whitespace), so that you can
339 sources (even if they have leading whitespace), so that you can
336 rerun doctests from existing sources.
340 rerun doctests from existing sources.
337
341
338 * IPython/iplib.py (_prefilter): fix a buglet where after entering
342 * IPython/iplib.py (_prefilter): fix a buglet where after entering
339 some whitespace, the prompt would become a continuation prompt
343 some whitespace, the prompt would become a continuation prompt
340 with no way of exiting it other than Ctrl-C. This fix brings us
344 with no way of exiting it other than Ctrl-C. This fix brings us
341 into conformity with how the default python prompt works.
345 into conformity with how the default python prompt works.
342
346
343 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
347 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
344 Add support for pasting not only lines that start with '>>>', but
348 Add support for pasting not only lines that start with '>>>', but
345 also with ' >>>'. That is, arbitrary whitespace can now precede
349 also with ' >>>'. That is, arbitrary whitespace can now precede
346 the prompts. This makes the system useful for pasting doctests
350 the prompts. This makes the system useful for pasting doctests
347 from docstrings back into a normal session.
351 from docstrings back into a normal session.
348
352
349 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
353 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
350
354
351 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
355 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
352 r1357, which had killed multiple invocations of an embedded
356 r1357, which had killed multiple invocations of an embedded
353 ipython (this means that example-embed has been broken for over 1
357 ipython (this means that example-embed has been broken for over 1
354 year!!!). Rather than possibly breaking the batch stuff for which
358 year!!!). Rather than possibly breaking the batch stuff for which
355 the code in iplib.py/interact was introduced, I worked around the
359 the code in iplib.py/interact was introduced, I worked around the
356 problem in the embedding class in Shell.py. We really need a
360 problem in the embedding class in Shell.py. We really need a
357 bloody test suite for this code, I'm sick of finding stuff that
361 bloody test suite for this code, I'm sick of finding stuff that
358 used to work breaking left and right every time I use an old
362 used to work breaking left and right every time I use an old
359 feature I hadn't touched in a few months.
363 feature I hadn't touched in a few months.
360 (kill_embedded): Add a new magic that only shows up in embedded
364 (kill_embedded): Add a new magic that only shows up in embedded
361 mode, to allow users to permanently deactivate an embedded instance.
365 mode, to allow users to permanently deactivate an embedded instance.
362
366
363 2007-08-01 Ville Vainio <vivainio@gmail.com>
367 2007-08-01 Ville Vainio <vivainio@gmail.com>
364
368
365 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
369 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
366 history gets out of sync on runlines (e.g. when running macros).
370 history gets out of sync on runlines (e.g. when running macros).
367
371
368 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
372 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
369
373
370 * IPython/Magic.py (magic_colors): fix win32-related error message
374 * IPython/Magic.py (magic_colors): fix win32-related error message
371 that could appear under *nix when readline was missing. Patch by
375 that could appear under *nix when readline was missing. Patch by
372 Scott Jackson, closes #175.
376 Scott Jackson, closes #175.
373
377
374 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
378 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
375
379
376 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
380 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
377 completer that it traits-aware, so that traits objects don't show
381 completer that it traits-aware, so that traits objects don't show
378 all of their internal attributes all the time.
382 all of their internal attributes all the time.
379
383
380 * IPython/genutils.py (dir2): moved this code from inside
384 * IPython/genutils.py (dir2): moved this code from inside
381 completer.py to expose it publicly, so I could use it in the
385 completer.py to expose it publicly, so I could use it in the
382 wildcards bugfix.
386 wildcards bugfix.
383
387
384 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
388 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
385 Stefan with Traits.
389 Stefan with Traits.
386
390
387 * IPython/completer.py (Completer.attr_matches): change internal
391 * IPython/completer.py (Completer.attr_matches): change internal
388 var name from 'object' to 'obj', since 'object' is now a builtin
392 var name from 'object' to 'obj', since 'object' is now a builtin
389 and this can lead to weird bugs if reusing this code elsewhere.
393 and this can lead to weird bugs if reusing this code elsewhere.
390
394
391 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
395 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
392
396
393 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
397 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
394 'foo?' and update the code to prevent printing of default
398 'foo?' and update the code to prevent printing of default
395 docstrings that started appearing after I added support for
399 docstrings that started appearing after I added support for
396 new-style classes. The approach I'm using isn't ideal (I just
400 new-style classes. The approach I'm using isn't ideal (I just
397 special-case those strings) but I'm not sure how to more robustly
401 special-case those strings) but I'm not sure how to more robustly
398 differentiate between truly user-written strings and Python's
402 differentiate between truly user-written strings and Python's
399 automatic ones.
403 automatic ones.
400
404
401 2007-07-09 Ville Vainio <vivainio@gmail.com>
405 2007-07-09 Ville Vainio <vivainio@gmail.com>
402
406
403 * completer.py: Applied Matthew Neeley's patch:
407 * completer.py: Applied Matthew Neeley's patch:
404 Dynamic attributes from trait_names and _getAttributeNames are added
408 Dynamic attributes from trait_names and _getAttributeNames are added
405 to the list of tab completions, but when this happens, the attribute
409 to the list of tab completions, but when this happens, the attribute
406 list is turned into a set, so the attributes are unordered when
410 list is turned into a set, so the attributes are unordered when
407 printed, which makes it hard to find the right completion. This patch
411 printed, which makes it hard to find the right completion. This patch
408 turns this set back into a list and sort it.
412 turns this set back into a list and sort it.
409
413
410 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
414 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
411
415
412 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
416 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
413 classes in various inspector functions.
417 classes in various inspector functions.
414
418
415 2007-06-28 Ville Vainio <vivainio@gmail.com>
419 2007-06-28 Ville Vainio <vivainio@gmail.com>
416
420
417 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
421 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
418 Implement "shadow" namespace, and callable aliases that reside there.
422 Implement "shadow" namespace, and callable aliases that reside there.
419 Use them by:
423 Use them by:
420
424
421 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
425 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
422
426
423 foo hello world
427 foo hello world
424 (gets translated to:)
428 (gets translated to:)
425 _sh.foo(r"""hello world""")
429 _sh.foo(r"""hello world""")
426
430
427 In practice, this kind of alias can take the role of a magic function
431 In practice, this kind of alias can take the role of a magic function
428
432
429 * New generic inspect_object, called on obj? and obj??
433 * New generic inspect_object, called on obj? and obj??
430
434
431 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
435 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
432
436
433 * IPython/ultraTB.py (findsource): fix a problem with
437 * IPython/ultraTB.py (findsource): fix a problem with
434 inspect.getfile that can cause crashes during traceback construction.
438 inspect.getfile that can cause crashes during traceback construction.
435
439
436 2007-06-14 Ville Vainio <vivainio@gmail.com>
440 2007-06-14 Ville Vainio <vivainio@gmail.com>
437
441
438 * iplib.py (handle_auto): Try to use ascii for printing "--->"
442 * iplib.py (handle_auto): Try to use ascii for printing "--->"
439 autocall rewrite indication, becausesometimes unicode fails to print
443 autocall rewrite indication, becausesometimes unicode fails to print
440 properly (and you get ' - - - '). Use plain uncoloured ---> for
444 properly (and you get ' - - - '). Use plain uncoloured ---> for
441 unicode.
445 unicode.
442
446
443 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
447 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
444
448
445 . pickleshare 'hash' commands (hget, hset, hcompress,
449 . pickleshare 'hash' commands (hget, hset, hcompress,
446 hdict) for efficient shadow history storage.
450 hdict) for efficient shadow history storage.
447
451
448 2007-06-13 Ville Vainio <vivainio@gmail.com>
452 2007-06-13 Ville Vainio <vivainio@gmail.com>
449
453
450 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
454 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
451 Added kw arg 'interactive', tell whether vars should be visible
455 Added kw arg 'interactive', tell whether vars should be visible
452 with %whos.
456 with %whos.
453
457
454 2007-06-11 Ville Vainio <vivainio@gmail.com>
458 2007-06-11 Ville Vainio <vivainio@gmail.com>
455
459
456 * pspersistence.py, Magic.py, iplib.py: directory history now saved
460 * pspersistence.py, Magic.py, iplib.py: directory history now saved
457 to db
461 to db
458
462
459 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
463 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
460 Also, it exits IPython immediately after evaluating the command (just like
464 Also, it exits IPython immediately after evaluating the command (just like
461 std python)
465 std python)
462
466
463 2007-06-05 Walter Doerwald <walter@livinglogic.de>
467 2007-06-05 Walter Doerwald <walter@livinglogic.de>
464
468
465 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
469 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
466 Python string and captures the output. (Idea and original patch by
470 Python string and captures the output. (Idea and original patch by
467 Stefan van der Walt)
471 Stefan van der Walt)
468
472
469 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
473 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
470
474
471 * IPython/ultraTB.py (VerboseTB.text): update printing of
475 * IPython/ultraTB.py (VerboseTB.text): update printing of
472 exception types for Python 2.5 (now all exceptions in the stdlib
476 exception types for Python 2.5 (now all exceptions in the stdlib
473 are new-style classes).
477 are new-style classes).
474
478
475 2007-05-31 Walter Doerwald <walter@livinglogic.de>
479 2007-05-31 Walter Doerwald <walter@livinglogic.de>
476
480
477 * IPython/Extensions/igrid.py: Add new commands refresh and
481 * IPython/Extensions/igrid.py: Add new commands refresh and
478 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
482 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
479 the iterator once (refresh) or after every x seconds (refresh_timer).
483 the iterator once (refresh) or after every x seconds (refresh_timer).
480 Add a working implementation of "searchexpression", where the text
484 Add a working implementation of "searchexpression", where the text
481 entered is not the text to search for, but an expression that must
485 entered is not the text to search for, but an expression that must
482 be true. Added display of shortcuts to the menu. Added commands "pickinput"
486 be true. Added display of shortcuts to the menu. Added commands "pickinput"
483 and "pickinputattr" that put the object or attribute under the cursor
487 and "pickinputattr" that put the object or attribute under the cursor
484 in the input line. Split the statusbar to be able to display the currently
488 in the input line. Split the statusbar to be able to display the currently
485 active refresh interval. (Patch by Nik Tautenhahn)
489 active refresh interval. (Patch by Nik Tautenhahn)
486
490
487 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
491 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
488
492
489 * fixing set_term_title to use ctypes as default
493 * fixing set_term_title to use ctypes as default
490
494
491 * fixing set_term_title fallback to work when curent dir
495 * fixing set_term_title fallback to work when curent dir
492 is on a windows network share
496 is on a windows network share
493
497
494 2007-05-28 Ville Vainio <vivainio@gmail.com>
498 2007-05-28 Ville Vainio <vivainio@gmail.com>
495
499
496 * %cpaste: strip + with > from left (diffs).
500 * %cpaste: strip + with > from left (diffs).
497
501
498 * iplib.py: Fix crash when readline not installed
502 * iplib.py: Fix crash when readline not installed
499
503
500 2007-05-26 Ville Vainio <vivainio@gmail.com>
504 2007-05-26 Ville Vainio <vivainio@gmail.com>
501
505
502 * generics.py: intruduce easy to extend result_display generic
506 * generics.py: intruduce easy to extend result_display generic
503 function (using simplegeneric.py).
507 function (using simplegeneric.py).
504
508
505 * Fixed the append functionality of %set.
509 * Fixed the append functionality of %set.
506
510
507 2007-05-25 Ville Vainio <vivainio@gmail.com>
511 2007-05-25 Ville Vainio <vivainio@gmail.com>
508
512
509 * New magic: %rep (fetch / run old commands from history)
513 * New magic: %rep (fetch / run old commands from history)
510
514
511 * New extension: mglob (%mglob magic), for powerful glob / find /filter
515 * New extension: mglob (%mglob magic), for powerful glob / find /filter
512 like functionality
516 like functionality
513
517
514 % maghistory.py: %hist -g PATTERM greps the history for pattern
518 % maghistory.py: %hist -g PATTERM greps the history for pattern
515
519
516 2007-05-24 Walter Doerwald <walter@livinglogic.de>
520 2007-05-24 Walter Doerwald <walter@livinglogic.de>
517
521
518 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
522 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
519 browse the IPython input history
523 browse the IPython input history
520
524
521 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
525 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
522 (mapped to "i") can be used to put the object under the curser in the input
526 (mapped to "i") can be used to put the object under the curser in the input
523 line. pickinputattr (mapped to "I") does the same for the attribute under
527 line. pickinputattr (mapped to "I") does the same for the attribute under
524 the cursor.
528 the cursor.
525
529
526 2007-05-24 Ville Vainio <vivainio@gmail.com>
530 2007-05-24 Ville Vainio <vivainio@gmail.com>
527
531
528 * Grand magic cleansing (changeset [2380]):
532 * Grand magic cleansing (changeset [2380]):
529
533
530 * Introduce ipy_legacy.py where the following magics were
534 * Introduce ipy_legacy.py where the following magics were
531 moved:
535 moved:
532
536
533 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
537 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
534
538
535 If you need them, either use default profile or "import ipy_legacy"
539 If you need them, either use default profile or "import ipy_legacy"
536 in your ipy_user_conf.py
540 in your ipy_user_conf.py
537
541
538 * Move sh and scipy profile to Extensions from UserConfig. this implies
542 * Move sh and scipy profile to Extensions from UserConfig. this implies
539 you should not edit them, but you don't need to run %upgrade when
543 you should not edit them, but you don't need to run %upgrade when
540 upgrading IPython anymore.
544 upgrading IPython anymore.
541
545
542 * %hist/%history now operates in "raw" mode by default. To get the old
546 * %hist/%history now operates in "raw" mode by default. To get the old
543 behaviour, run '%hist -n' (native mode).
547 behaviour, run '%hist -n' (native mode).
544
548
545 * split ipy_stock_completers.py to ipy_stock_completers.py and
549 * split ipy_stock_completers.py to ipy_stock_completers.py and
546 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
550 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
547 installed as default.
551 installed as default.
548
552
549 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
553 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
550 handling.
554 handling.
551
555
552 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
556 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
553 input if readline is available.
557 input if readline is available.
554
558
555 2007-05-23 Ville Vainio <vivainio@gmail.com>
559 2007-05-23 Ville Vainio <vivainio@gmail.com>
556
560
557 * macro.py: %store uses __getstate__ properly
561 * macro.py: %store uses __getstate__ properly
558
562
559 * exesetup.py: added new setup script for creating
563 * exesetup.py: added new setup script for creating
560 standalone IPython executables with py2exe (i.e.
564 standalone IPython executables with py2exe (i.e.
561 no python installation required).
565 no python installation required).
562
566
563 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
567 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
564 its place.
568 its place.
565
569
566 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
570 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
567
571
568 2007-05-21 Ville Vainio <vivainio@gmail.com>
572 2007-05-21 Ville Vainio <vivainio@gmail.com>
569
573
570 * platutil_win32.py (set_term_title): handle
574 * platutil_win32.py (set_term_title): handle
571 failure of 'title' system call properly.
575 failure of 'title' system call properly.
572
576
573 2007-05-17 Walter Doerwald <walter@livinglogic.de>
577 2007-05-17 Walter Doerwald <walter@livinglogic.de>
574
578
575 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
579 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
576 (Bug detected by Paul Mueller).
580 (Bug detected by Paul Mueller).
577
581
578 2007-05-16 Ville Vainio <vivainio@gmail.com>
582 2007-05-16 Ville Vainio <vivainio@gmail.com>
579
583
580 * ipy_profile_sci.py, ipython_win_post_install.py: Create
584 * ipy_profile_sci.py, ipython_win_post_install.py: Create
581 new "sci" profile, effectively a modern version of the old
585 new "sci" profile, effectively a modern version of the old
582 "scipy" profile (which is now slated for deprecation).
586 "scipy" profile (which is now slated for deprecation).
583
587
584 2007-05-15 Ville Vainio <vivainio@gmail.com>
588 2007-05-15 Ville Vainio <vivainio@gmail.com>
585
589
586 * pycolorize.py, pycolor.1: Paul Mueller's patches that
590 * pycolorize.py, pycolor.1: Paul Mueller's patches that
587 make pycolorize read input from stdin when run without arguments.
591 make pycolorize read input from stdin when run without arguments.
588
592
589 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
593 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
590
594
591 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
595 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
592 it in sh profile (instead of ipy_system_conf.py).
596 it in sh profile (instead of ipy_system_conf.py).
593
597
594 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
598 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
595 aliases are now lower case on windows (MyCommand.exe => mycommand).
599 aliases are now lower case on windows (MyCommand.exe => mycommand).
596
600
597 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
601 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
598 Macros are now callable objects that inherit from ipapi.IPyAutocall,
602 Macros are now callable objects that inherit from ipapi.IPyAutocall,
599 i.e. get autocalled regardless of system autocall setting.
603 i.e. get autocalled regardless of system autocall setting.
600
604
601 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
605 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
602
606
603 * IPython/rlineimpl.py: check for clear_history in readline and
607 * IPython/rlineimpl.py: check for clear_history in readline and
604 make it a dummy no-op if not available. This function isn't
608 make it a dummy no-op if not available. This function isn't
605 guaranteed to be in the API and appeared in Python 2.4, so we need
609 guaranteed to be in the API and appeared in Python 2.4, so we need
606 to check it ourselves. Also, clean up this file quite a bit.
610 to check it ourselves. Also, clean up this file quite a bit.
607
611
608 * ipython.1: update man page and full manual with information
612 * ipython.1: update man page and full manual with information
609 about threads (remove outdated warning). Closes #151.
613 about threads (remove outdated warning). Closes #151.
610
614
611 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
615 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
612
616
613 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
617 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
614 in trunk (note that this made it into the 0.8.1 release already,
618 in trunk (note that this made it into the 0.8.1 release already,
615 but the changelogs didn't get coordinated). Many thanks to Gael
619 but the changelogs didn't get coordinated). Many thanks to Gael
616 Varoquaux <gael.varoquaux-AT-normalesup.org>
620 Varoquaux <gael.varoquaux-AT-normalesup.org>
617
621
618 2007-05-09 *** Released version 0.8.1
622 2007-05-09 *** Released version 0.8.1
619
623
620 2007-05-10 Walter Doerwald <walter@livinglogic.de>
624 2007-05-10 Walter Doerwald <walter@livinglogic.de>
621
625
622 * IPython/Extensions/igrid.py: Incorporate html help into
626 * IPython/Extensions/igrid.py: Incorporate html help into
623 the module, so we don't have to search for the file.
627 the module, so we don't have to search for the file.
624
628
625 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
629 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
626
630
627 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
631 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
628
632
629 2007-04-30 Ville Vainio <vivainio@gmail.com>
633 2007-04-30 Ville Vainio <vivainio@gmail.com>
630
634
631 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
635 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
632 user has illegal (non-ascii) home directory name
636 user has illegal (non-ascii) home directory name
633
637
634 2007-04-27 Ville Vainio <vivainio@gmail.com>
638 2007-04-27 Ville Vainio <vivainio@gmail.com>
635
639
636 * platutils_win32.py: implement set_term_title for windows
640 * platutils_win32.py: implement set_term_title for windows
637
641
638 * Update version number
642 * Update version number
639
643
640 * ipy_profile_sh.py: more informative prompt (2 dir levels)
644 * ipy_profile_sh.py: more informative prompt (2 dir levels)
641
645
642 2007-04-26 Walter Doerwald <walter@livinglogic.de>
646 2007-04-26 Walter Doerwald <walter@livinglogic.de>
643
647
644 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
648 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
645 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
649 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
646 bug discovered by Ville).
650 bug discovered by Ville).
647
651
648 2007-04-26 Ville Vainio <vivainio@gmail.com>
652 2007-04-26 Ville Vainio <vivainio@gmail.com>
649
653
650 * Extensions/ipy_completers.py: Olivier's module completer now
654 * Extensions/ipy_completers.py: Olivier's module completer now
651 saves the list of root modules if it takes > 4 secs on the first run.
655 saves the list of root modules if it takes > 4 secs on the first run.
652
656
653 * Magic.py (%rehashx): %rehashx now clears the completer cache
657 * Magic.py (%rehashx): %rehashx now clears the completer cache
654
658
655
659
656 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
660 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
657
661
658 * ipython.el: fix incorrect color scheme, reported by Stefan.
662 * ipython.el: fix incorrect color scheme, reported by Stefan.
659 Closes #149.
663 Closes #149.
660
664
661 * IPython/PyColorize.py (Parser.format2): fix state-handling
665 * IPython/PyColorize.py (Parser.format2): fix state-handling
662 logic. I still don't like how that code handles state, but at
666 logic. I still don't like how that code handles state, but at
663 least now it should be correct, if inelegant. Closes #146.
667 least now it should be correct, if inelegant. Closes #146.
664
668
665 2007-04-25 Ville Vainio <vivainio@gmail.com>
669 2007-04-25 Ville Vainio <vivainio@gmail.com>
666
670
667 * Extensions/ipy_which.py: added extension for %which magic, works
671 * Extensions/ipy_which.py: added extension for %which magic, works
668 a lot like unix 'which' but also finds and expands aliases, and
672 a lot like unix 'which' but also finds and expands aliases, and
669 allows wildcards.
673 allows wildcards.
670
674
671 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
675 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
672 as opposed to returning nothing.
676 as opposed to returning nothing.
673
677
674 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
678 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
675 ipy_stock_completers on default profile, do import on sh profile.
679 ipy_stock_completers on default profile, do import on sh profile.
676
680
677 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
681 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
678
682
679 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
683 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
680 like ipython.py foo.py which raised a IndexError.
684 like ipython.py foo.py which raised a IndexError.
681
685
682 2007-04-21 Ville Vainio <vivainio@gmail.com>
686 2007-04-21 Ville Vainio <vivainio@gmail.com>
683
687
684 * Extensions/ipy_extutil.py: added extension to manage other ipython
688 * Extensions/ipy_extutil.py: added extension to manage other ipython
685 extensions. Now only supports 'ls' == list extensions.
689 extensions. Now only supports 'ls' == list extensions.
686
690
687 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
691 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
688
692
689 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
693 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
690 would prevent use of the exception system outside of a running
694 would prevent use of the exception system outside of a running
691 IPython instance.
695 IPython instance.
692
696
693 2007-04-20 Ville Vainio <vivainio@gmail.com>
697 2007-04-20 Ville Vainio <vivainio@gmail.com>
694
698
695 * Extensions/ipy_render.py: added extension for easy
699 * Extensions/ipy_render.py: added extension for easy
696 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
700 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
697 'Iptl' template notation,
701 'Iptl' template notation,
698
702
699 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
703 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
700 safer & faster 'import' completer.
704 safer & faster 'import' completer.
701
705
702 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
706 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
703 and _ip.defalias(name, command).
707 and _ip.defalias(name, command).
704
708
705 * Extensions/ipy_exportdb.py: New extension for exporting all the
709 * Extensions/ipy_exportdb.py: New extension for exporting all the
706 %store'd data in a portable format (normal ipapi calls like
710 %store'd data in a portable format (normal ipapi calls like
707 defmacro() etc.)
711 defmacro() etc.)
708
712
709 2007-04-19 Ville Vainio <vivainio@gmail.com>
713 2007-04-19 Ville Vainio <vivainio@gmail.com>
710
714
711 * upgrade_dir.py: skip junk files like *.pyc
715 * upgrade_dir.py: skip junk files like *.pyc
712
716
713 * Release.py: version number to 0.8.1
717 * Release.py: version number to 0.8.1
714
718
715 2007-04-18 Ville Vainio <vivainio@gmail.com>
719 2007-04-18 Ville Vainio <vivainio@gmail.com>
716
720
717 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
721 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
718 and later on win32.
722 and later on win32.
719
723
720 2007-04-16 Ville Vainio <vivainio@gmail.com>
724 2007-04-16 Ville Vainio <vivainio@gmail.com>
721
725
722 * iplib.py (showtraceback): Do not crash when running w/o readline.
726 * iplib.py (showtraceback): Do not crash when running w/o readline.
723
727
724 2007-04-12 Walter Doerwald <walter@livinglogic.de>
728 2007-04-12 Walter Doerwald <walter@livinglogic.de>
725
729
726 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
730 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
727 sorted (case sensitive with files and dirs mixed).
731 sorted (case sensitive with files and dirs mixed).
728
732
729 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
733 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
730
734
731 * IPython/Release.py (version): Open trunk for 0.8.1 development.
735 * IPython/Release.py (version): Open trunk for 0.8.1 development.
732
736
733 2007-04-10 *** Released version 0.8.0
737 2007-04-10 *** Released version 0.8.0
734
738
735 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
739 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
736
740
737 * Tag 0.8.0 for release.
741 * Tag 0.8.0 for release.
738
742
739 * IPython/iplib.py (reloadhist): add API function to cleanly
743 * IPython/iplib.py (reloadhist): add API function to cleanly
740 reload the readline history, which was growing inappropriately on
744 reload the readline history, which was growing inappropriately on
741 every %run call.
745 every %run call.
742
746
743 * win32_manual_post_install.py (run): apply last part of Nicolas
747 * win32_manual_post_install.py (run): apply last part of Nicolas
744 Pernetty's patch (I'd accidentally applied it in a different
748 Pernetty's patch (I'd accidentally applied it in a different
745 directory and this particular file didn't get patched).
749 directory and this particular file didn't get patched).
746
750
747 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
751 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
748
752
749 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
753 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
750 find the main thread id and use the proper API call. Thanks to
754 find the main thread id and use the proper API call. Thanks to
751 Stefan for the fix.
755 Stefan for the fix.
752
756
753 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
757 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
754 unit tests to reflect fixed ticket #52, and add more tests sent by
758 unit tests to reflect fixed ticket #52, and add more tests sent by
755 him.
759 him.
756
760
757 * IPython/iplib.py (raw_input): restore the readline completer
761 * IPython/iplib.py (raw_input): restore the readline completer
758 state on every input, in case third-party code messed it up.
762 state on every input, in case third-party code messed it up.
759 (_prefilter): revert recent addition of early-escape checks which
763 (_prefilter): revert recent addition of early-escape checks which
760 prevent many valid alias calls from working.
764 prevent many valid alias calls from working.
761
765
762 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
766 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
763 flag for sigint handler so we don't run a full signal() call on
767 flag for sigint handler so we don't run a full signal() call on
764 each runcode access.
768 each runcode access.
765
769
766 * IPython/Magic.py (magic_whos): small improvement to diagnostic
770 * IPython/Magic.py (magic_whos): small improvement to diagnostic
767 message.
771 message.
768
772
769 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
773 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
770
774
771 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
775 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
772 asynchronous exceptions working, i.e., Ctrl-C can actually
776 asynchronous exceptions working, i.e., Ctrl-C can actually
773 interrupt long-running code in the multithreaded shells.
777 interrupt long-running code in the multithreaded shells.
774
778
775 This is using Tomer Filiba's great ctypes-based trick:
779 This is using Tomer Filiba's great ctypes-based trick:
776 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
780 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
777 this in the past, but hadn't been able to make it work before. So
781 this in the past, but hadn't been able to make it work before. So
778 far it looks like it's actually running, but this needs more
782 far it looks like it's actually running, but this needs more
779 testing. If it really works, I'll be *very* happy, and we'll owe
783 testing. If it really works, I'll be *very* happy, and we'll owe
780 a huge thank you to Tomer. My current implementation is ugly,
784 a huge thank you to Tomer. My current implementation is ugly,
781 hackish and uses nasty globals, but I don't want to try and clean
785 hackish and uses nasty globals, but I don't want to try and clean
782 anything up until we know if it actually works.
786 anything up until we know if it actually works.
783
787
784 NOTE: this feature needs ctypes to work. ctypes is included in
788 NOTE: this feature needs ctypes to work. ctypes is included in
785 Python2.5, but 2.4 users will need to manually install it. This
789 Python2.5, but 2.4 users will need to manually install it. This
786 feature makes multi-threaded shells so much more usable that it's
790 feature makes multi-threaded shells so much more usable that it's
787 a minor price to pay (ctypes is very easy to install, already a
791 a minor price to pay (ctypes is very easy to install, already a
788 requirement for win32 and available in major linux distros).
792 requirement for win32 and available in major linux distros).
789
793
790 2007-04-04 Ville Vainio <vivainio@gmail.com>
794 2007-04-04 Ville Vainio <vivainio@gmail.com>
791
795
792 * Extensions/ipy_completers.py, ipy_stock_completers.py:
796 * Extensions/ipy_completers.py, ipy_stock_completers.py:
793 Moved implementations of 'bundled' completers to ipy_completers.py,
797 Moved implementations of 'bundled' completers to ipy_completers.py,
794 they are only enabled in ipy_stock_completers.py.
798 they are only enabled in ipy_stock_completers.py.
795
799
796 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
800 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
797
801
798 * IPython/PyColorize.py (Parser.format2): Fix identation of
802 * IPython/PyColorize.py (Parser.format2): Fix identation of
799 colorzied output and return early if color scheme is NoColor, to
803 colorzied output and return early if color scheme is NoColor, to
800 avoid unnecessary and expensive tokenization. Closes #131.
804 avoid unnecessary and expensive tokenization. Closes #131.
801
805
802 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
806 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
803
807
804 * IPython/Debugger.py: disable the use of pydb version 1.17. It
808 * IPython/Debugger.py: disable the use of pydb version 1.17. It
805 has a critical bug (a missing import that makes post-mortem not
809 has a critical bug (a missing import that makes post-mortem not
806 work at all). Unfortunately as of this time, this is the version
810 work at all). Unfortunately as of this time, this is the version
807 shipped with Ubuntu Edgy, so quite a few people have this one. I
811 shipped with Ubuntu Edgy, so quite a few people have this one. I
808 hope Edgy will update to a more recent package.
812 hope Edgy will update to a more recent package.
809
813
810 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
814 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
811
815
812 * IPython/iplib.py (_prefilter): close #52, second part of a patch
816 * IPython/iplib.py (_prefilter): close #52, second part of a patch
813 set by Stefan (only the first part had been applied before).
817 set by Stefan (only the first part had been applied before).
814
818
815 * IPython/Extensions/ipy_stock_completers.py (module_completer):
819 * IPython/Extensions/ipy_stock_completers.py (module_completer):
816 remove usage of the dangerous pkgutil.walk_packages(). See
820 remove usage of the dangerous pkgutil.walk_packages(). See
817 details in comments left in the code.
821 details in comments left in the code.
818
822
819 * IPython/Magic.py (magic_whos): add support for numpy arrays
823 * IPython/Magic.py (magic_whos): add support for numpy arrays
820 similar to what we had for Numeric.
824 similar to what we had for Numeric.
821
825
822 * IPython/completer.py (IPCompleter.complete): extend the
826 * IPython/completer.py (IPCompleter.complete): extend the
823 complete() call API to support completions by other mechanisms
827 complete() call API to support completions by other mechanisms
824 than readline. Closes #109.
828 than readline. Closes #109.
825
829
826 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
830 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
827 protect against a bug in Python's execfile(). Closes #123.
831 protect against a bug in Python's execfile(). Closes #123.
828
832
829 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
833 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
830
834
831 * IPython/iplib.py (split_user_input): ensure that when splitting
835 * IPython/iplib.py (split_user_input): ensure that when splitting
832 user input, the part that can be treated as a python name is pure
836 user input, the part that can be treated as a python name is pure
833 ascii (Python identifiers MUST be pure ascii). Part of the
837 ascii (Python identifiers MUST be pure ascii). Part of the
834 ongoing Unicode support work.
838 ongoing Unicode support work.
835
839
836 * IPython/Prompts.py (prompt_specials_color): Add \N for the
840 * IPython/Prompts.py (prompt_specials_color): Add \N for the
837 actual prompt number, without any coloring. This allows users to
841 actual prompt number, without any coloring. This allows users to
838 produce numbered prompts with their own colors. Added after a
842 produce numbered prompts with their own colors. Added after a
839 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
843 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
840
844
841 2007-03-31 Walter Doerwald <walter@livinglogic.de>
845 2007-03-31 Walter Doerwald <walter@livinglogic.de>
842
846
843 * IPython/Extensions/igrid.py: Map the return key
847 * IPython/Extensions/igrid.py: Map the return key
844 to enter() and shift-return to enterattr().
848 to enter() and shift-return to enterattr().
845
849
846 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
850 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
847
851
848 * IPython/Magic.py (magic_psearch): add unicode support by
852 * IPython/Magic.py (magic_psearch): add unicode support by
849 encoding to ascii the input, since this routine also only deals
853 encoding to ascii the input, since this routine also only deals
850 with valid Python names. Fixes a bug reported by Stefan.
854 with valid Python names. Fixes a bug reported by Stefan.
851
855
852 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
856 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
853
857
854 * IPython/Magic.py (_inspect): convert unicode input into ascii
858 * IPython/Magic.py (_inspect): convert unicode input into ascii
855 before trying to evaluate it as a Python identifier. This fixes a
859 before trying to evaluate it as a Python identifier. This fixes a
856 problem that the new unicode support had introduced when analyzing
860 problem that the new unicode support had introduced when analyzing
857 long definition lines for functions.
861 long definition lines for functions.
858
862
859 2007-03-24 Walter Doerwald <walter@livinglogic.de>
863 2007-03-24 Walter Doerwald <walter@livinglogic.de>
860
864
861 * IPython/Extensions/igrid.py: Fix picking. Using
865 * IPython/Extensions/igrid.py: Fix picking. Using
862 igrid with wxPython 2.6 and -wthread should work now.
866 igrid with wxPython 2.6 and -wthread should work now.
863 igrid.display() simply tries to create a frame without
867 igrid.display() simply tries to create a frame without
864 an application. Only if this fails an application is created.
868 an application. Only if this fails an application is created.
865
869
866 2007-03-23 Walter Doerwald <walter@livinglogic.de>
870 2007-03-23 Walter Doerwald <walter@livinglogic.de>
867
871
868 * IPython/Extensions/path.py: Updated to version 2.2.
872 * IPython/Extensions/path.py: Updated to version 2.2.
869
873
870 2007-03-23 Ville Vainio <vivainio@gmail.com>
874 2007-03-23 Ville Vainio <vivainio@gmail.com>
871
875
872 * iplib.py: recursive alias expansion now works better, so that
876 * iplib.py: recursive alias expansion now works better, so that
873 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
877 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
874 doesn't trip up the process, if 'd' has been aliased to 'ls'.
878 doesn't trip up the process, if 'd' has been aliased to 'ls'.
875
879
876 * Extensions/ipy_gnuglobal.py added, provides %global magic
880 * Extensions/ipy_gnuglobal.py added, provides %global magic
877 for users of http://www.gnu.org/software/global
881 for users of http://www.gnu.org/software/global
878
882
879 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
883 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
880 Closes #52. Patch by Stefan van der Walt.
884 Closes #52. Patch by Stefan van der Walt.
881
885
882 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
886 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
883
887
884 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
888 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
885 respect the __file__ attribute when using %run. Thanks to a bug
889 respect the __file__ attribute when using %run. Thanks to a bug
886 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
890 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
887
891
888 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
892 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
889
893
890 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
894 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
891 input. Patch sent by Stefan.
895 input. Patch sent by Stefan.
892
896
893 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
897 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
894 * IPython/Extensions/ipy_stock_completer.py
898 * IPython/Extensions/ipy_stock_completer.py
895 shlex_split, fix bug in shlex_split. len function
899 shlex_split, fix bug in shlex_split. len function
896 call was missing an if statement. Caused shlex_split to
900 call was missing an if statement. Caused shlex_split to
897 sometimes return "" as last element.
901 sometimes return "" as last element.
898
902
899 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
903 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
900
904
901 * IPython/completer.py
905 * IPython/completer.py
902 (IPCompleter.file_matches.single_dir_expand): fix a problem
906 (IPCompleter.file_matches.single_dir_expand): fix a problem
903 reported by Stefan, where directories containign a single subdir
907 reported by Stefan, where directories containign a single subdir
904 would be completed too early.
908 would be completed too early.
905
909
906 * IPython/Shell.py (_load_pylab): Make the execution of 'from
910 * IPython/Shell.py (_load_pylab): Make the execution of 'from
907 pylab import *' when -pylab is given be optional. A new flag,
911 pylab import *' when -pylab is given be optional. A new flag,
908 pylab_import_all controls this behavior, the default is True for
912 pylab_import_all controls this behavior, the default is True for
909 backwards compatibility.
913 backwards compatibility.
910
914
911 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
915 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
912 modified) R. Bernstein's patch for fully syntax highlighted
916 modified) R. Bernstein's patch for fully syntax highlighted
913 tracebacks. The functionality is also available under ultraTB for
917 tracebacks. The functionality is also available under ultraTB for
914 non-ipython users (someone using ultraTB but outside an ipython
918 non-ipython users (someone using ultraTB but outside an ipython
915 session). They can select the color scheme by setting the
919 session). They can select the color scheme by setting the
916 module-level global DEFAULT_SCHEME. The highlight functionality
920 module-level global DEFAULT_SCHEME. The highlight functionality
917 also works when debugging.
921 also works when debugging.
918
922
919 * IPython/genutils.py (IOStream.close): small patch by
923 * IPython/genutils.py (IOStream.close): small patch by
920 R. Bernstein for improved pydb support.
924 R. Bernstein for improved pydb support.
921
925
922 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
926 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
923 DaveS <davls@telus.net> to improve support of debugging under
927 DaveS <davls@telus.net> to improve support of debugging under
924 NTEmacs, including improved pydb behavior.
928 NTEmacs, including improved pydb behavior.
925
929
926 * IPython/Magic.py (magic_prun): Fix saving of profile info for
930 * IPython/Magic.py (magic_prun): Fix saving of profile info for
927 Python 2.5, where the stats object API changed a little. Thanks
931 Python 2.5, where the stats object API changed a little. Thanks
928 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
932 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
929
933
930 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
934 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
931 Pernetty's patch to improve support for (X)Emacs under Win32.
935 Pernetty's patch to improve support for (X)Emacs under Win32.
932
936
933 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
937 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
934
938
935 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
939 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
936 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
940 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
937 a report by Nik Tautenhahn.
941 a report by Nik Tautenhahn.
938
942
939 2007-03-16 Walter Doerwald <walter@livinglogic.de>
943 2007-03-16 Walter Doerwald <walter@livinglogic.de>
940
944
941 * setup.py: Add the igrid help files to the list of data files
945 * setup.py: Add the igrid help files to the list of data files
942 to be installed alongside igrid.
946 to be installed alongside igrid.
943 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
947 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
944 Show the input object of the igrid browser as the window tile.
948 Show the input object of the igrid browser as the window tile.
945 Show the object the cursor is on in the statusbar.
949 Show the object the cursor is on in the statusbar.
946
950
947 2007-03-15 Ville Vainio <vivainio@gmail.com>
951 2007-03-15 Ville Vainio <vivainio@gmail.com>
948
952
949 * Extensions/ipy_stock_completers.py: Fixed exception
953 * Extensions/ipy_stock_completers.py: Fixed exception
950 on mismatching quotes in %run completer. Patch by
954 on mismatching quotes in %run completer. Patch by
951 Jorgen Stenarson. Closes #127.
955 Jorgen Stenarson. Closes #127.
952
956
953 2007-03-14 Ville Vainio <vivainio@gmail.com>
957 2007-03-14 Ville Vainio <vivainio@gmail.com>
954
958
955 * Extensions/ext_rehashdir.py: Do not do auto_alias
959 * Extensions/ext_rehashdir.py: Do not do auto_alias
956 in %rehashdir, it clobbers %store'd aliases.
960 in %rehashdir, it clobbers %store'd aliases.
957
961
958 * UserConfig/ipy_profile_sh.py: envpersist.py extension
962 * UserConfig/ipy_profile_sh.py: envpersist.py extension
959 (beefed up %env) imported for sh profile.
963 (beefed up %env) imported for sh profile.
960
964
961 2007-03-10 Walter Doerwald <walter@livinglogic.de>
965 2007-03-10 Walter Doerwald <walter@livinglogic.de>
962
966
963 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
967 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
964 as the default browser.
968 as the default browser.
965 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
969 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
966 As igrid displays all attributes it ever encounters, fetch() (which has
970 As igrid displays all attributes it ever encounters, fetch() (which has
967 been renamed to _fetch()) doesn't have to recalculate the display attributes
971 been renamed to _fetch()) doesn't have to recalculate the display attributes
968 every time a new item is fetched. This should speed up scrolling.
972 every time a new item is fetched. This should speed up scrolling.
969
973
970 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
974 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
971
975
972 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
976 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
973 Schmolck's recently reported tab-completion bug (my previous one
977 Schmolck's recently reported tab-completion bug (my previous one
974 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
978 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
975
979
976 2007-03-09 Walter Doerwald <walter@livinglogic.de>
980 2007-03-09 Walter Doerwald <walter@livinglogic.de>
977
981
978 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
982 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
979 Close help window if exiting igrid.
983 Close help window if exiting igrid.
980
984
981 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
985 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
982
986
983 * IPython/Extensions/ipy_defaults.py: Check if readline is available
987 * IPython/Extensions/ipy_defaults.py: Check if readline is available
984 before calling functions from readline.
988 before calling functions from readline.
985
989
986 2007-03-02 Walter Doerwald <walter@livinglogic.de>
990 2007-03-02 Walter Doerwald <walter@livinglogic.de>
987
991
988 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
992 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
989 igrid is a wxPython-based display object for ipipe. If your system has
993 igrid is a wxPython-based display object for ipipe. If your system has
990 wx installed igrid will be the default display. Without wx ipipe falls
994 wx installed igrid will be the default display. Without wx ipipe falls
991 back to ibrowse (which needs curses). If no curses is installed ipipe
995 back to ibrowse (which needs curses). If no curses is installed ipipe
992 falls back to idump.
996 falls back to idump.
993
997
994 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
998 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
995
999
996 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1000 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
997 my changes from yesterday, they introduced bugs. Will reactivate
1001 my changes from yesterday, they introduced bugs. Will reactivate
998 once I get a correct solution, which will be much easier thanks to
1002 once I get a correct solution, which will be much easier thanks to
999 Dan Milstein's new prefilter test suite.
1003 Dan Milstein's new prefilter test suite.
1000
1004
1001 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1005 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1002
1006
1003 * IPython/iplib.py (split_user_input): fix input splitting so we
1007 * IPython/iplib.py (split_user_input): fix input splitting so we
1004 don't attempt attribute accesses on things that can't possibly be
1008 don't attempt attribute accesses on things that can't possibly be
1005 valid Python attributes. After a bug report by Alex Schmolck.
1009 valid Python attributes. After a bug report by Alex Schmolck.
1006 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1010 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1007 %magic with explicit % prefix.
1011 %magic with explicit % prefix.
1008
1012
1009 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1013 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1010
1014
1011 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1015 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1012 avoid a DeprecationWarning from GTK.
1016 avoid a DeprecationWarning from GTK.
1013
1017
1014 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1018 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1015
1019
1016 * IPython/genutils.py (clock): I modified clock() to return total
1020 * IPython/genutils.py (clock): I modified clock() to return total
1017 time, user+system. This is a more commonly needed metric. I also
1021 time, user+system. This is a more commonly needed metric. I also
1018 introduced the new clocku/clocks to get only user/system time if
1022 introduced the new clocku/clocks to get only user/system time if
1019 one wants those instead.
1023 one wants those instead.
1020
1024
1021 ***WARNING: API CHANGE*** clock() used to return only user time,
1025 ***WARNING: API CHANGE*** clock() used to return only user time,
1022 so if you want exactly the same results as before, use clocku
1026 so if you want exactly the same results as before, use clocku
1023 instead.
1027 instead.
1024
1028
1025 2007-02-22 Ville Vainio <vivainio@gmail.com>
1029 2007-02-22 Ville Vainio <vivainio@gmail.com>
1026
1030
1027 * IPython/Extensions/ipy_p4.py: Extension for improved
1031 * IPython/Extensions/ipy_p4.py: Extension for improved
1028 p4 (perforce version control system) experience.
1032 p4 (perforce version control system) experience.
1029 Adds %p4 magic with p4 command completion and
1033 Adds %p4 magic with p4 command completion and
1030 automatic -G argument (marshall output as python dict)
1034 automatic -G argument (marshall output as python dict)
1031
1035
1032 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1036 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1033
1037
1034 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1038 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1035 stop marks.
1039 stop marks.
1036 (ClearingMixin): a simple mixin to easily make a Demo class clear
1040 (ClearingMixin): a simple mixin to easily make a Demo class clear
1037 the screen in between blocks and have empty marquees. The
1041 the screen in between blocks and have empty marquees. The
1038 ClearDemo and ClearIPDemo classes that use it are included.
1042 ClearDemo and ClearIPDemo classes that use it are included.
1039
1043
1040 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1044 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1041
1045
1042 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1046 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1043 protect against exceptions at Python shutdown time. Patch
1047 protect against exceptions at Python shutdown time. Patch
1044 sumbmitted to upstream.
1048 sumbmitted to upstream.
1045
1049
1046 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1050 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1047
1051
1048 * IPython/Extensions/ibrowse.py: If entering the first object level
1052 * IPython/Extensions/ibrowse.py: If entering the first object level
1049 (i.e. the object for which the browser has been started) fails,
1053 (i.e. the object for which the browser has been started) fails,
1050 now the error is raised directly (aborting the browser) instead of
1054 now the error is raised directly (aborting the browser) instead of
1051 running into an empty levels list later.
1055 running into an empty levels list later.
1052
1056
1053 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1057 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1054
1058
1055 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1059 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1056 for the noitem object.
1060 for the noitem object.
1057
1061
1058 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1062 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1059
1063
1060 * IPython/completer.py (Completer.attr_matches): Fix small
1064 * IPython/completer.py (Completer.attr_matches): Fix small
1061 tab-completion bug with Enthought Traits objects with units.
1065 tab-completion bug with Enthought Traits objects with units.
1062 Thanks to a bug report by Tom Denniston
1066 Thanks to a bug report by Tom Denniston
1063 <tom.denniston-AT-alum.dartmouth.org>.
1067 <tom.denniston-AT-alum.dartmouth.org>.
1064
1068
1065 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1069 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1066
1070
1067 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1071 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1068 bug where only .ipy or .py would be completed. Once the first
1072 bug where only .ipy or .py would be completed. Once the first
1069 argument to %run has been given, all completions are valid because
1073 argument to %run has been given, all completions are valid because
1070 they are the arguments to the script, which may well be non-python
1074 they are the arguments to the script, which may well be non-python
1071 filenames.
1075 filenames.
1072
1076
1073 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1077 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1074 to irunner to allow it to correctly support real doctesting of
1078 to irunner to allow it to correctly support real doctesting of
1075 out-of-process ipython code.
1079 out-of-process ipython code.
1076
1080
1077 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1081 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1078 title an option (-noterm_title) because it completely breaks
1082 title an option (-noterm_title) because it completely breaks
1079 doctesting.
1083 doctesting.
1080
1084
1081 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1085 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1082
1086
1083 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1087 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1084
1088
1085 * IPython/irunner.py (main): fix small bug where extensions were
1089 * IPython/irunner.py (main): fix small bug where extensions were
1086 not being correctly recognized.
1090 not being correctly recognized.
1087
1091
1088 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1092 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1089
1093
1090 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1094 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1091 a string containing a single line yields the string itself as the
1095 a string containing a single line yields the string itself as the
1092 only item.
1096 only item.
1093
1097
1094 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1098 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1095 object if it's the same as the one on the last level (This avoids
1099 object if it's the same as the one on the last level (This avoids
1096 infinite recursion for one line strings).
1100 infinite recursion for one line strings).
1097
1101
1098 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1102 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1099
1103
1100 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1104 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1101 all output streams before printing tracebacks. This ensures that
1105 all output streams before printing tracebacks. This ensures that
1102 user output doesn't end up interleaved with traceback output.
1106 user output doesn't end up interleaved with traceback output.
1103
1107
1104 2007-01-10 Ville Vainio <vivainio@gmail.com>
1108 2007-01-10 Ville Vainio <vivainio@gmail.com>
1105
1109
1106 * Extensions/envpersist.py: Turbocharged %env that remembers
1110 * Extensions/envpersist.py: Turbocharged %env that remembers
1107 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1111 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1108 "%env VISUAL=jed".
1112 "%env VISUAL=jed".
1109
1113
1110 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1114 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1111
1115
1112 * IPython/iplib.py (showtraceback): ensure that we correctly call
1116 * IPython/iplib.py (showtraceback): ensure that we correctly call
1113 custom handlers in all cases (some with pdb were slipping through,
1117 custom handlers in all cases (some with pdb were slipping through,
1114 but I'm not exactly sure why).
1118 but I'm not exactly sure why).
1115
1119
1116 * IPython/Debugger.py (Tracer.__init__): added new class to
1120 * IPython/Debugger.py (Tracer.__init__): added new class to
1117 support set_trace-like usage of IPython's enhanced debugger.
1121 support set_trace-like usage of IPython's enhanced debugger.
1118
1122
1119 2006-12-24 Ville Vainio <vivainio@gmail.com>
1123 2006-12-24 Ville Vainio <vivainio@gmail.com>
1120
1124
1121 * ipmaker.py: more informative message when ipy_user_conf
1125 * ipmaker.py: more informative message when ipy_user_conf
1122 import fails (suggest running %upgrade).
1126 import fails (suggest running %upgrade).
1123
1127
1124 * tools/run_ipy_in_profiler.py: Utility to see where
1128 * tools/run_ipy_in_profiler.py: Utility to see where
1125 the time during IPython startup is spent.
1129 the time during IPython startup is spent.
1126
1130
1127 2006-12-20 Ville Vainio <vivainio@gmail.com>
1131 2006-12-20 Ville Vainio <vivainio@gmail.com>
1128
1132
1129 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1133 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1130
1134
1131 * ipapi.py: Add new ipapi method, expand_alias.
1135 * ipapi.py: Add new ipapi method, expand_alias.
1132
1136
1133 * Release.py: Bump up version to 0.7.4.svn
1137 * Release.py: Bump up version to 0.7.4.svn
1134
1138
1135 2006-12-17 Ville Vainio <vivainio@gmail.com>
1139 2006-12-17 Ville Vainio <vivainio@gmail.com>
1136
1140
1137 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1141 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1138 to work properly on posix too
1142 to work properly on posix too
1139
1143
1140 * Release.py: Update revnum (version is still just 0.7.3).
1144 * Release.py: Update revnum (version is still just 0.7.3).
1141
1145
1142 2006-12-15 Ville Vainio <vivainio@gmail.com>
1146 2006-12-15 Ville Vainio <vivainio@gmail.com>
1143
1147
1144 * scripts/ipython_win_post_install: create ipython.py in
1148 * scripts/ipython_win_post_install: create ipython.py in
1145 prefix + "/scripts".
1149 prefix + "/scripts".
1146
1150
1147 * Release.py: Update version to 0.7.3.
1151 * Release.py: Update version to 0.7.3.
1148
1152
1149 2006-12-14 Ville Vainio <vivainio@gmail.com>
1153 2006-12-14 Ville Vainio <vivainio@gmail.com>
1150
1154
1151 * scripts/ipython_win_post_install: Overwrite old shortcuts
1155 * scripts/ipython_win_post_install: Overwrite old shortcuts
1152 if they already exist
1156 if they already exist
1153
1157
1154 * Release.py: release 0.7.3rc2
1158 * Release.py: release 0.7.3rc2
1155
1159
1156 2006-12-13 Ville Vainio <vivainio@gmail.com>
1160 2006-12-13 Ville Vainio <vivainio@gmail.com>
1157
1161
1158 * Branch and update Release.py for 0.7.3rc1
1162 * Branch and update Release.py for 0.7.3rc1
1159
1163
1160 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1164 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1161
1165
1162 * IPython/Shell.py (IPShellWX): update for current WX naming
1166 * IPython/Shell.py (IPShellWX): update for current WX naming
1163 conventions, to avoid a deprecation warning with current WX
1167 conventions, to avoid a deprecation warning with current WX
1164 versions. Thanks to a report by Danny Shevitz.
1168 versions. Thanks to a report by Danny Shevitz.
1165
1169
1166 2006-12-12 Ville Vainio <vivainio@gmail.com>
1170 2006-12-12 Ville Vainio <vivainio@gmail.com>
1167
1171
1168 * ipmaker.py: apply david cournapeau's patch to make
1172 * ipmaker.py: apply david cournapeau's patch to make
1169 import_some work properly even when ipythonrc does
1173 import_some work properly even when ipythonrc does
1170 import_some on empty list (it was an old bug!).
1174 import_some on empty list (it was an old bug!).
1171
1175
1172 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1176 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1173 Add deprecation note to ipythonrc and a url to wiki
1177 Add deprecation note to ipythonrc and a url to wiki
1174 in ipy_user_conf.py
1178 in ipy_user_conf.py
1175
1179
1176
1180
1177 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1181 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1178 as if it was typed on IPython command prompt, i.e.
1182 as if it was typed on IPython command prompt, i.e.
1179 as IPython script.
1183 as IPython script.
1180
1184
1181 * example-magic.py, magic_grepl.py: remove outdated examples
1185 * example-magic.py, magic_grepl.py: remove outdated examples
1182
1186
1183 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1187 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1184
1188
1185 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1189 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1186 is called before any exception has occurred.
1190 is called before any exception has occurred.
1187
1191
1188 2006-12-08 Ville Vainio <vivainio@gmail.com>
1192 2006-12-08 Ville Vainio <vivainio@gmail.com>
1189
1193
1190 * Extensions/ipy_stock_completers.py: fix cd completer
1194 * Extensions/ipy_stock_completers.py: fix cd completer
1191 to translate /'s to \'s again.
1195 to translate /'s to \'s again.
1192
1196
1193 * completer.py: prevent traceback on file completions w/
1197 * completer.py: prevent traceback on file completions w/
1194 backslash.
1198 backslash.
1195
1199
1196 * Release.py: Update release number to 0.7.3b3 for release
1200 * Release.py: Update release number to 0.7.3b3 for release
1197
1201
1198 2006-12-07 Ville Vainio <vivainio@gmail.com>
1202 2006-12-07 Ville Vainio <vivainio@gmail.com>
1199
1203
1200 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1204 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1201 while executing external code. Provides more shell-like behaviour
1205 while executing external code. Provides more shell-like behaviour
1202 and overall better response to ctrl + C / ctrl + break.
1206 and overall better response to ctrl + C / ctrl + break.
1203
1207
1204 * tools/make_tarball.py: new script to create tarball straight from svn
1208 * tools/make_tarball.py: new script to create tarball straight from svn
1205 (setup.py sdist doesn't work on win32).
1209 (setup.py sdist doesn't work on win32).
1206
1210
1207 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1211 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1208 on dirnames with spaces and use the default completer instead.
1212 on dirnames with spaces and use the default completer instead.
1209
1213
1210 * Revision.py: Change version to 0.7.3b2 for release.
1214 * Revision.py: Change version to 0.7.3b2 for release.
1211
1215
1212 2006-12-05 Ville Vainio <vivainio@gmail.com>
1216 2006-12-05 Ville Vainio <vivainio@gmail.com>
1213
1217
1214 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1218 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1215 pydb patch 4 (rm debug printing, py 2.5 checking)
1219 pydb patch 4 (rm debug printing, py 2.5 checking)
1216
1220
1217 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1221 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1218 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1222 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1219 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1223 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1220 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1224 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1221 object the cursor was on before the refresh. The command "markrange" is
1225 object the cursor was on before the refresh. The command "markrange" is
1222 mapped to "%" now.
1226 mapped to "%" now.
1223 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1227 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1224
1228
1225 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1229 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1226
1230
1227 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1231 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1228 interactive debugger on the last traceback, without having to call
1232 interactive debugger on the last traceback, without having to call
1229 %pdb and rerun your code. Made minor changes in various modules,
1233 %pdb and rerun your code. Made minor changes in various modules,
1230 should automatically recognize pydb if available.
1234 should automatically recognize pydb if available.
1231
1235
1232 2006-11-28 Ville Vainio <vivainio@gmail.com>
1236 2006-11-28 Ville Vainio <vivainio@gmail.com>
1233
1237
1234 * completer.py: If the text start with !, show file completions
1238 * completer.py: If the text start with !, show file completions
1235 properly. This helps when trying to complete command name
1239 properly. This helps when trying to complete command name
1236 for shell escapes.
1240 for shell escapes.
1237
1241
1238 2006-11-27 Ville Vainio <vivainio@gmail.com>
1242 2006-11-27 Ville Vainio <vivainio@gmail.com>
1239
1243
1240 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1244 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1241 der Walt. Clean up svn and hg completers by using a common
1245 der Walt. Clean up svn and hg completers by using a common
1242 vcs_completer.
1246 vcs_completer.
1243
1247
1244 2006-11-26 Ville Vainio <vivainio@gmail.com>
1248 2006-11-26 Ville Vainio <vivainio@gmail.com>
1245
1249
1246 * Remove ipconfig and %config; you should use _ip.options structure
1250 * Remove ipconfig and %config; you should use _ip.options structure
1247 directly instead!
1251 directly instead!
1248
1252
1249 * genutils.py: add wrap_deprecated function for deprecating callables
1253 * genutils.py: add wrap_deprecated function for deprecating callables
1250
1254
1251 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1255 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1252 _ip.system instead. ipalias is redundant.
1256 _ip.system instead. ipalias is redundant.
1253
1257
1254 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1258 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1255 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1259 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1256 explicit.
1260 explicit.
1257
1261
1258 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1262 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1259 completer. Try it by entering 'hg ' and pressing tab.
1263 completer. Try it by entering 'hg ' and pressing tab.
1260
1264
1261 * macro.py: Give Macro a useful __repr__ method
1265 * macro.py: Give Macro a useful __repr__ method
1262
1266
1263 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1267 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1264
1268
1265 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1269 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1266 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1270 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1267 we don't get a duplicate ipipe module, where registration of the xrepr
1271 we don't get a duplicate ipipe module, where registration of the xrepr
1268 implementation for Text is useless.
1272 implementation for Text is useless.
1269
1273
1270 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1274 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1271
1275
1272 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1276 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1273
1277
1274 2006-11-24 Ville Vainio <vivainio@gmail.com>
1278 2006-11-24 Ville Vainio <vivainio@gmail.com>
1275
1279
1276 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1280 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1277 try to use "cProfile" instead of the slower pure python
1281 try to use "cProfile" instead of the slower pure python
1278 "profile"
1282 "profile"
1279
1283
1280 2006-11-23 Ville Vainio <vivainio@gmail.com>
1284 2006-11-23 Ville Vainio <vivainio@gmail.com>
1281
1285
1282 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1286 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1283 Qt+IPython+Designer link in documentation.
1287 Qt+IPython+Designer link in documentation.
1284
1288
1285 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1289 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1286 correct Pdb object to %pydb.
1290 correct Pdb object to %pydb.
1287
1291
1288
1292
1289 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1293 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1290 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1294 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1291 generic xrepr(), otherwise the list implementation would kick in.
1295 generic xrepr(), otherwise the list implementation would kick in.
1292
1296
1293 2006-11-21 Ville Vainio <vivainio@gmail.com>
1297 2006-11-21 Ville Vainio <vivainio@gmail.com>
1294
1298
1295 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1299 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1296 with one from UserConfig.
1300 with one from UserConfig.
1297
1301
1298 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1302 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1299 it was missing which broke the sh profile.
1303 it was missing which broke the sh profile.
1300
1304
1301 * completer.py: file completer now uses explicit '/' instead
1305 * completer.py: file completer now uses explicit '/' instead
1302 of os.path.join, expansion of 'foo' was broken on win32
1306 of os.path.join, expansion of 'foo' was broken on win32
1303 if there was one directory with name 'foobar'.
1307 if there was one directory with name 'foobar'.
1304
1308
1305 * A bunch of patches from Kirill Smelkov:
1309 * A bunch of patches from Kirill Smelkov:
1306
1310
1307 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1311 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1308
1312
1309 * [patch 7/9] Implement %page -r (page in raw mode) -
1313 * [patch 7/9] Implement %page -r (page in raw mode) -
1310
1314
1311 * [patch 5/9] ScientificPython webpage has moved
1315 * [patch 5/9] ScientificPython webpage has moved
1312
1316
1313 * [patch 4/9] The manual mentions %ds, should be %dhist
1317 * [patch 4/9] The manual mentions %ds, should be %dhist
1314
1318
1315 * [patch 3/9] Kill old bits from %prun doc.
1319 * [patch 3/9] Kill old bits from %prun doc.
1316
1320
1317 * [patch 1/9] Fix typos here and there.
1321 * [patch 1/9] Fix typos here and there.
1318
1322
1319 2006-11-08 Ville Vainio <vivainio@gmail.com>
1323 2006-11-08 Ville Vainio <vivainio@gmail.com>
1320
1324
1321 * completer.py (attr_matches): catch all exceptions raised
1325 * completer.py (attr_matches): catch all exceptions raised
1322 by eval of expr with dots.
1326 by eval of expr with dots.
1323
1327
1324 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1328 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1325
1329
1326 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1330 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1327 input if it starts with whitespace. This allows you to paste
1331 input if it starts with whitespace. This allows you to paste
1328 indented input from any editor without manually having to type in
1332 indented input from any editor without manually having to type in
1329 the 'if 1:', which is convenient when working interactively.
1333 the 'if 1:', which is convenient when working interactively.
1330 Slightly modifed version of a patch by Bo Peng
1334 Slightly modifed version of a patch by Bo Peng
1331 <bpeng-AT-rice.edu>.
1335 <bpeng-AT-rice.edu>.
1332
1336
1333 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1337 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1334
1338
1335 * IPython/irunner.py (main): modified irunner so it automatically
1339 * IPython/irunner.py (main): modified irunner so it automatically
1336 recognizes the right runner to use based on the extension (.py for
1340 recognizes the right runner to use based on the extension (.py for
1337 python, .ipy for ipython and .sage for sage).
1341 python, .ipy for ipython and .sage for sage).
1338
1342
1339 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1343 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1340 visible in ipapi as ip.config(), to programatically control the
1344 visible in ipapi as ip.config(), to programatically control the
1341 internal rc object. There's an accompanying %config magic for
1345 internal rc object. There's an accompanying %config magic for
1342 interactive use, which has been enhanced to match the
1346 interactive use, which has been enhanced to match the
1343 funtionality in ipconfig.
1347 funtionality in ipconfig.
1344
1348
1345 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1349 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1346 so it's not just a toggle, it now takes an argument. Add support
1350 so it's not just a toggle, it now takes an argument. Add support
1347 for a customizable header when making system calls, as the new
1351 for a customizable header when making system calls, as the new
1348 system_header variable in the ipythonrc file.
1352 system_header variable in the ipythonrc file.
1349
1353
1350 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1354 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1351
1355
1352 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1356 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1353 generic functions (using Philip J. Eby's simplegeneric package).
1357 generic functions (using Philip J. Eby's simplegeneric package).
1354 This makes it possible to customize the display of third-party classes
1358 This makes it possible to customize the display of third-party classes
1355 without having to monkeypatch them. xiter() no longer supports a mode
1359 without having to monkeypatch them. xiter() no longer supports a mode
1356 argument and the XMode class has been removed. The same functionality can
1360 argument and the XMode class has been removed. The same functionality can
1357 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1361 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1358 One consequence of the switch to generic functions is that xrepr() and
1362 One consequence of the switch to generic functions is that xrepr() and
1359 xattrs() implementation must define the default value for the mode
1363 xattrs() implementation must define the default value for the mode
1360 argument themselves and xattrs() implementations must return real
1364 argument themselves and xattrs() implementations must return real
1361 descriptors.
1365 descriptors.
1362
1366
1363 * IPython/external: This new subpackage will contain all third-party
1367 * IPython/external: This new subpackage will contain all third-party
1364 packages that are bundled with IPython. (The first one is simplegeneric).
1368 packages that are bundled with IPython. (The first one is simplegeneric).
1365
1369
1366 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1370 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1367 directory which as been dropped in r1703.
1371 directory which as been dropped in r1703.
1368
1372
1369 * IPython/Extensions/ipipe.py (iless): Fixed.
1373 * IPython/Extensions/ipipe.py (iless): Fixed.
1370
1374
1371 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1375 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1372
1376
1373 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1377 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1374
1378
1375 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1379 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1376 handling in variable expansion so that shells and magics recognize
1380 handling in variable expansion so that shells and magics recognize
1377 function local scopes correctly. Bug reported by Brian.
1381 function local scopes correctly. Bug reported by Brian.
1378
1382
1379 * scripts/ipython: remove the very first entry in sys.path which
1383 * scripts/ipython: remove the very first entry in sys.path which
1380 Python auto-inserts for scripts, so that sys.path under IPython is
1384 Python auto-inserts for scripts, so that sys.path under IPython is
1381 as similar as possible to that under plain Python.
1385 as similar as possible to that under plain Python.
1382
1386
1383 * IPython/completer.py (IPCompleter.file_matches): Fix
1387 * IPython/completer.py (IPCompleter.file_matches): Fix
1384 tab-completion so that quotes are not closed unless the completion
1388 tab-completion so that quotes are not closed unless the completion
1385 is unambiguous. After a request by Stefan. Minor cleanups in
1389 is unambiguous. After a request by Stefan. Minor cleanups in
1386 ipy_stock_completers.
1390 ipy_stock_completers.
1387
1391
1388 2006-11-02 Ville Vainio <vivainio@gmail.com>
1392 2006-11-02 Ville Vainio <vivainio@gmail.com>
1389
1393
1390 * ipy_stock_completers.py: Add %run and %cd completers.
1394 * ipy_stock_completers.py: Add %run and %cd completers.
1391
1395
1392 * completer.py: Try running custom completer for both
1396 * completer.py: Try running custom completer for both
1393 "foo" and "%foo" if the command is just "foo". Ignore case
1397 "foo" and "%foo" if the command is just "foo". Ignore case
1394 when filtering possible completions.
1398 when filtering possible completions.
1395
1399
1396 * UserConfig/ipy_user_conf.py: install stock completers as default
1400 * UserConfig/ipy_user_conf.py: install stock completers as default
1397
1401
1398 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1402 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1399 simplified readline history save / restore through a wrapper
1403 simplified readline history save / restore through a wrapper
1400 function
1404 function
1401
1405
1402
1406
1403 2006-10-31 Ville Vainio <vivainio@gmail.com>
1407 2006-10-31 Ville Vainio <vivainio@gmail.com>
1404
1408
1405 * strdispatch.py, completer.py, ipy_stock_completers.py:
1409 * strdispatch.py, completer.py, ipy_stock_completers.py:
1406 Allow str_key ("command") in completer hooks. Implement
1410 Allow str_key ("command") in completer hooks. Implement
1407 trivial completer for 'import' (stdlib modules only). Rename
1411 trivial completer for 'import' (stdlib modules only). Rename
1408 ipy_linux_package_managers.py to ipy_stock_completers.py.
1412 ipy_linux_package_managers.py to ipy_stock_completers.py.
1409 SVN completer.
1413 SVN completer.
1410
1414
1411 * Extensions/ledit.py: %magic line editor for easily and
1415 * Extensions/ledit.py: %magic line editor for easily and
1412 incrementally manipulating lists of strings. The magic command
1416 incrementally manipulating lists of strings. The magic command
1413 name is %led.
1417 name is %led.
1414
1418
1415 2006-10-30 Ville Vainio <vivainio@gmail.com>
1419 2006-10-30 Ville Vainio <vivainio@gmail.com>
1416
1420
1417 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1421 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1418 Bernsteins's patches for pydb integration.
1422 Bernsteins's patches for pydb integration.
1419 http://bashdb.sourceforge.net/pydb/
1423 http://bashdb.sourceforge.net/pydb/
1420
1424
1421 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1425 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1422 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1426 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1423 custom completer hook to allow the users to implement their own
1427 custom completer hook to allow the users to implement their own
1424 completers. See ipy_linux_package_managers.py for example. The
1428 completers. See ipy_linux_package_managers.py for example. The
1425 hook name is 'complete_command'.
1429 hook name is 'complete_command'.
1426
1430
1427 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1431 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1428
1432
1429 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1433 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1430 Numeric leftovers.
1434 Numeric leftovers.
1431
1435
1432 * ipython.el (py-execute-region): apply Stefan's patch to fix
1436 * ipython.el (py-execute-region): apply Stefan's patch to fix
1433 garbled results if the python shell hasn't been previously started.
1437 garbled results if the python shell hasn't been previously started.
1434
1438
1435 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1439 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1436 pretty generic function and useful for other things.
1440 pretty generic function and useful for other things.
1437
1441
1438 * IPython/OInspect.py (getsource): Add customizable source
1442 * IPython/OInspect.py (getsource): Add customizable source
1439 extractor. After a request/patch form W. Stein (SAGE).
1443 extractor. After a request/patch form W. Stein (SAGE).
1440
1444
1441 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1445 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1442 window size to a more reasonable value from what pexpect does,
1446 window size to a more reasonable value from what pexpect does,
1443 since their choice causes wrapping bugs with long input lines.
1447 since their choice causes wrapping bugs with long input lines.
1444
1448
1445 2006-10-28 Ville Vainio <vivainio@gmail.com>
1449 2006-10-28 Ville Vainio <vivainio@gmail.com>
1446
1450
1447 * Magic.py (%run): Save and restore the readline history from
1451 * Magic.py (%run): Save and restore the readline history from
1448 file around %run commands to prevent side effects from
1452 file around %run commands to prevent side effects from
1449 %runned programs that might use readline (e.g. pydb).
1453 %runned programs that might use readline (e.g. pydb).
1450
1454
1451 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1455 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1452 invoking the pydb enhanced debugger.
1456 invoking the pydb enhanced debugger.
1453
1457
1454 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1458 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1455
1459
1456 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1460 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1457 call the base class method and propagate the return value to
1461 call the base class method and propagate the return value to
1458 ifile. This is now done by path itself.
1462 ifile. This is now done by path itself.
1459
1463
1460 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1464 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1461
1465
1462 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1466 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1463 api: set_crash_handler(), to expose the ability to change the
1467 api: set_crash_handler(), to expose the ability to change the
1464 internal crash handler.
1468 internal crash handler.
1465
1469
1466 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1470 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1467 the various parameters of the crash handler so that apps using
1471 the various parameters of the crash handler so that apps using
1468 IPython as their engine can customize crash handling. Ipmlemented
1472 IPython as their engine can customize crash handling. Ipmlemented
1469 at the request of SAGE.
1473 at the request of SAGE.
1470
1474
1471 2006-10-14 Ville Vainio <vivainio@gmail.com>
1475 2006-10-14 Ville Vainio <vivainio@gmail.com>
1472
1476
1473 * Magic.py, ipython.el: applied first "safe" part of Rocky
1477 * Magic.py, ipython.el: applied first "safe" part of Rocky
1474 Bernstein's patch set for pydb integration.
1478 Bernstein's patch set for pydb integration.
1475
1479
1476 * Magic.py (%unalias, %alias): %store'd aliases can now be
1480 * Magic.py (%unalias, %alias): %store'd aliases can now be
1477 removed with '%unalias'. %alias w/o args now shows most
1481 removed with '%unalias'. %alias w/o args now shows most
1478 interesting (stored / manually defined) aliases last
1482 interesting (stored / manually defined) aliases last
1479 where they catch the eye w/o scrolling.
1483 where they catch the eye w/o scrolling.
1480
1484
1481 * Magic.py (%rehashx), ext_rehashdir.py: files with
1485 * Magic.py (%rehashx), ext_rehashdir.py: files with
1482 'py' extension are always considered executable, even
1486 'py' extension are always considered executable, even
1483 when not in PATHEXT environment variable.
1487 when not in PATHEXT environment variable.
1484
1488
1485 2006-10-12 Ville Vainio <vivainio@gmail.com>
1489 2006-10-12 Ville Vainio <vivainio@gmail.com>
1486
1490
1487 * jobctrl.py: Add new "jobctrl" extension for spawning background
1491 * jobctrl.py: Add new "jobctrl" extension for spawning background
1488 processes with "&find /". 'import jobctrl' to try it out. Requires
1492 processes with "&find /". 'import jobctrl' to try it out. Requires
1489 'subprocess' module, standard in python 2.4+.
1493 'subprocess' module, standard in python 2.4+.
1490
1494
1491 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1495 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1492 so if foo -> bar and bar -> baz, then foo -> baz.
1496 so if foo -> bar and bar -> baz, then foo -> baz.
1493
1497
1494 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1498 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1495
1499
1496 * IPython/Magic.py (Magic.parse_options): add a new posix option
1500 * IPython/Magic.py (Magic.parse_options): add a new posix option
1497 to allow parsing of input args in magics that doesn't strip quotes
1501 to allow parsing of input args in magics that doesn't strip quotes
1498 (if posix=False). This also closes %timeit bug reported by
1502 (if posix=False). This also closes %timeit bug reported by
1499 Stefan.
1503 Stefan.
1500
1504
1501 2006-10-03 Ville Vainio <vivainio@gmail.com>
1505 2006-10-03 Ville Vainio <vivainio@gmail.com>
1502
1506
1503 * iplib.py (raw_input, interact): Return ValueError catching for
1507 * iplib.py (raw_input, interact): Return ValueError catching for
1504 raw_input. Fixes infinite loop for sys.stdin.close() or
1508 raw_input. Fixes infinite loop for sys.stdin.close() or
1505 sys.stdout.close().
1509 sys.stdout.close().
1506
1510
1507 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1511 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1508
1512
1509 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1513 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1510 to help in handling doctests. irunner is now pretty useful for
1514 to help in handling doctests. irunner is now pretty useful for
1511 running standalone scripts and simulate a full interactive session
1515 running standalone scripts and simulate a full interactive session
1512 in a format that can be then pasted as a doctest.
1516 in a format that can be then pasted as a doctest.
1513
1517
1514 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1518 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1515 on top of the default (useless) ones. This also fixes the nasty
1519 on top of the default (useless) ones. This also fixes the nasty
1516 way in which 2.5's Quitter() exits (reverted [1785]).
1520 way in which 2.5's Quitter() exits (reverted [1785]).
1517
1521
1518 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1522 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1519 2.5.
1523 2.5.
1520
1524
1521 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1525 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1522 color scheme is updated as well when color scheme is changed
1526 color scheme is updated as well when color scheme is changed
1523 interactively.
1527 interactively.
1524
1528
1525 2006-09-27 Ville Vainio <vivainio@gmail.com>
1529 2006-09-27 Ville Vainio <vivainio@gmail.com>
1526
1530
1527 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1531 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1528 infinite loop and just exit. It's a hack, but will do for a while.
1532 infinite loop and just exit. It's a hack, but will do for a while.
1529
1533
1530 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1534 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1531
1535
1532 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1536 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1533 the constructor, this makes it possible to get a list of only directories
1537 the constructor, this makes it possible to get a list of only directories
1534 or only files.
1538 or only files.
1535
1539
1536 2006-08-12 Ville Vainio <vivainio@gmail.com>
1540 2006-08-12 Ville Vainio <vivainio@gmail.com>
1537
1541
1538 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1542 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1539 they broke unittest
1543 they broke unittest
1540
1544
1541 2006-08-11 Ville Vainio <vivainio@gmail.com>
1545 2006-08-11 Ville Vainio <vivainio@gmail.com>
1542
1546
1543 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1547 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1544 by resolving issue properly, i.e. by inheriting FakeModule
1548 by resolving issue properly, i.e. by inheriting FakeModule
1545 from types.ModuleType. Pickling ipython interactive data
1549 from types.ModuleType. Pickling ipython interactive data
1546 should still work as usual (testing appreciated).
1550 should still work as usual (testing appreciated).
1547
1551
1548 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1552 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1549
1553
1550 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1554 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1551 running under python 2.3 with code from 2.4 to fix a bug with
1555 running under python 2.3 with code from 2.4 to fix a bug with
1552 help(). Reported by the Debian maintainers, Norbert Tretkowski
1556 help(). Reported by the Debian maintainers, Norbert Tretkowski
1553 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1557 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1554 <afayolle-AT-debian.org>.
1558 <afayolle-AT-debian.org>.
1555
1559
1556 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1560 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1557
1561
1558 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1562 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1559 (which was displaying "quit" twice).
1563 (which was displaying "quit" twice).
1560
1564
1561 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1565 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1562
1566
1563 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1567 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1564 the mode argument).
1568 the mode argument).
1565
1569
1566 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1570 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1567
1571
1568 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1572 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1569 not running under IPython.
1573 not running under IPython.
1570
1574
1571 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1575 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1572 and make it iterable (iterating over the attribute itself). Add two new
1576 and make it iterable (iterating over the attribute itself). Add two new
1573 magic strings for __xattrs__(): If the string starts with "-", the attribute
1577 magic strings for __xattrs__(): If the string starts with "-", the attribute
1574 will not be displayed in ibrowse's detail view (but it can still be
1578 will not be displayed in ibrowse's detail view (but it can still be
1575 iterated over). This makes it possible to add attributes that are large
1579 iterated over). This makes it possible to add attributes that are large
1576 lists or generator methods to the detail view. Replace magic attribute names
1580 lists or generator methods to the detail view. Replace magic attribute names
1577 and _attrname() and _getattr() with "descriptors": For each type of magic
1581 and _attrname() and _getattr() with "descriptors": For each type of magic
1578 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1582 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1579 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1583 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1580 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1584 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1581 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1585 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1582 are still supported.
1586 are still supported.
1583
1587
1584 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1588 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1585 fails in ibrowse.fetch(), the exception object is added as the last item
1589 fails in ibrowse.fetch(), the exception object is added as the last item
1586 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1590 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1587 a generator throws an exception midway through execution.
1591 a generator throws an exception midway through execution.
1588
1592
1589 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1593 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1590 encoding into methods.
1594 encoding into methods.
1591
1595
1592 2006-07-26 Ville Vainio <vivainio@gmail.com>
1596 2006-07-26 Ville Vainio <vivainio@gmail.com>
1593
1597
1594 * iplib.py: history now stores multiline input as single
1598 * iplib.py: history now stores multiline input as single
1595 history entries. Patch by Jorgen Cederlof.
1599 history entries. Patch by Jorgen Cederlof.
1596
1600
1597 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1601 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1598
1602
1599 * IPython/Extensions/ibrowse.py: Make cursor visible over
1603 * IPython/Extensions/ibrowse.py: Make cursor visible over
1600 non existing attributes.
1604 non existing attributes.
1601
1605
1602 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1606 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1603
1607
1604 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1608 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1605 error output of the running command doesn't mess up the screen.
1609 error output of the running command doesn't mess up the screen.
1606
1610
1607 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1611 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1608
1612
1609 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1613 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1610 argument. This sorts the items themselves.
1614 argument. This sorts the items themselves.
1611
1615
1612 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1616 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1613
1617
1614 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1618 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1615 Compile expression strings into code objects. This should speed
1619 Compile expression strings into code objects. This should speed
1616 up ifilter and friends somewhat.
1620 up ifilter and friends somewhat.
1617
1621
1618 2006-07-08 Ville Vainio <vivainio@gmail.com>
1622 2006-07-08 Ville Vainio <vivainio@gmail.com>
1619
1623
1620 * Magic.py: %cpaste now strips > from the beginning of lines
1624 * Magic.py: %cpaste now strips > from the beginning of lines
1621 to ease pasting quoted code from emails. Contributed by
1625 to ease pasting quoted code from emails. Contributed by
1622 Stefan van der Walt.
1626 Stefan van der Walt.
1623
1627
1624 2006-06-29 Ville Vainio <vivainio@gmail.com>
1628 2006-06-29 Ville Vainio <vivainio@gmail.com>
1625
1629
1626 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1630 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1627 mode, patch contributed by Darren Dale. NEEDS TESTING!
1631 mode, patch contributed by Darren Dale. NEEDS TESTING!
1628
1632
1629 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1633 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1630
1634
1631 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1635 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1632 a blue background. Fix fetching new display rows when the browser
1636 a blue background. Fix fetching new display rows when the browser
1633 scrolls more than a screenful (e.g. by using the goto command).
1637 scrolls more than a screenful (e.g. by using the goto command).
1634
1638
1635 2006-06-27 Ville Vainio <vivainio@gmail.com>
1639 2006-06-27 Ville Vainio <vivainio@gmail.com>
1636
1640
1637 * Magic.py (_inspect, _ofind) Apply David Huard's
1641 * Magic.py (_inspect, _ofind) Apply David Huard's
1638 patch for displaying the correct docstring for 'property'
1642 patch for displaying the correct docstring for 'property'
1639 attributes.
1643 attributes.
1640
1644
1641 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1645 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1642
1646
1643 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1647 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1644 commands into the methods implementing them.
1648 commands into the methods implementing them.
1645
1649
1646 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1650 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1647
1651
1648 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1652 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1649 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1653 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1650 autoindent support was authored by Jin Liu.
1654 autoindent support was authored by Jin Liu.
1651
1655
1652 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1656 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1653
1657
1654 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1658 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1655 for keymaps with a custom class that simplifies handling.
1659 for keymaps with a custom class that simplifies handling.
1656
1660
1657 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1661 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1658
1662
1659 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1663 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1660 resizing. This requires Python 2.5 to work.
1664 resizing. This requires Python 2.5 to work.
1661
1665
1662 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1666 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1663
1667
1664 * IPython/Extensions/ibrowse.py: Add two new commands to
1668 * IPython/Extensions/ibrowse.py: Add two new commands to
1665 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1669 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1666 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1670 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1667 attributes again. Remapped the help command to "?". Display
1671 attributes again. Remapped the help command to "?". Display
1668 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1672 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1669 as keys for the "home" and "end" commands. Add three new commands
1673 as keys for the "home" and "end" commands. Add three new commands
1670 to the input mode for "find" and friends: "delend" (CTRL-K)
1674 to the input mode for "find" and friends: "delend" (CTRL-K)
1671 deletes to the end of line. "incsearchup" searches upwards in the
1675 deletes to the end of line. "incsearchup" searches upwards in the
1672 command history for an input that starts with the text before the cursor.
1676 command history for an input that starts with the text before the cursor.
1673 "incsearchdown" does the same downwards. Removed a bogus mapping of
1677 "incsearchdown" does the same downwards. Removed a bogus mapping of
1674 the x key to "delete".
1678 the x key to "delete".
1675
1679
1676 2006-06-15 Ville Vainio <vivainio@gmail.com>
1680 2006-06-15 Ville Vainio <vivainio@gmail.com>
1677
1681
1678 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1682 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1679 used to create prompts dynamically, instead of the "old" way of
1683 used to create prompts dynamically, instead of the "old" way of
1680 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1684 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1681 way still works (it's invoked by the default hook), of course.
1685 way still works (it's invoked by the default hook), of course.
1682
1686
1683 * Prompts.py: added generate_output_prompt hook for altering output
1687 * Prompts.py: added generate_output_prompt hook for altering output
1684 prompt
1688 prompt
1685
1689
1686 * Release.py: Changed version string to 0.7.3.svn.
1690 * Release.py: Changed version string to 0.7.3.svn.
1687
1691
1688 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1692 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1689
1693
1690 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1694 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1691 the call to fetch() always tries to fetch enough data for at least one
1695 the call to fetch() always tries to fetch enough data for at least one
1692 full screen. This makes it possible to simply call moveto(0,0,True) in
1696 full screen. This makes it possible to simply call moveto(0,0,True) in
1693 the constructor. Fix typos and removed the obsolete goto attribute.
1697 the constructor. Fix typos and removed the obsolete goto attribute.
1694
1698
1695 2006-06-12 Ville Vainio <vivainio@gmail.com>
1699 2006-06-12 Ville Vainio <vivainio@gmail.com>
1696
1700
1697 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1701 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1698 allowing $variable interpolation within multiline statements,
1702 allowing $variable interpolation within multiline statements,
1699 though so far only with "sh" profile for a testing period.
1703 though so far only with "sh" profile for a testing period.
1700 The patch also enables splitting long commands with \ but it
1704 The patch also enables splitting long commands with \ but it
1701 doesn't work properly yet.
1705 doesn't work properly yet.
1702
1706
1703 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1707 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1704
1708
1705 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1709 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1706 input history and the position of the cursor in the input history for
1710 input history and the position of the cursor in the input history for
1707 the find, findbackwards and goto command.
1711 the find, findbackwards and goto command.
1708
1712
1709 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1713 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1710
1714
1711 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1715 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1712 implements the basic functionality of browser commands that require
1716 implements the basic functionality of browser commands that require
1713 input. Reimplement the goto, find and findbackwards commands as
1717 input. Reimplement the goto, find and findbackwards commands as
1714 subclasses of _CommandInput. Add an input history and keymaps to those
1718 subclasses of _CommandInput. Add an input history and keymaps to those
1715 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1719 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1716 execute commands.
1720 execute commands.
1717
1721
1718 2006-06-07 Ville Vainio <vivainio@gmail.com>
1722 2006-06-07 Ville Vainio <vivainio@gmail.com>
1719
1723
1720 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1724 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1721 running the batch files instead of leaving the session open.
1725 running the batch files instead of leaving the session open.
1722
1726
1723 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1727 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1724
1728
1725 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1729 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1726 the original fix was incomplete. Patch submitted by W. Maier.
1730 the original fix was incomplete. Patch submitted by W. Maier.
1727
1731
1728 2006-06-07 Ville Vainio <vivainio@gmail.com>
1732 2006-06-07 Ville Vainio <vivainio@gmail.com>
1729
1733
1730 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1734 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1731 Confirmation prompts can be supressed by 'quiet' option.
1735 Confirmation prompts can be supressed by 'quiet' option.
1732 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1736 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1733
1737
1734 2006-06-06 *** Released version 0.7.2
1738 2006-06-06 *** Released version 0.7.2
1735
1739
1736 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1740 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1737
1741
1738 * IPython/Release.py (version): Made 0.7.2 final for release.
1742 * IPython/Release.py (version): Made 0.7.2 final for release.
1739 Repo tagged and release cut.
1743 Repo tagged and release cut.
1740
1744
1741 2006-06-05 Ville Vainio <vivainio@gmail.com>
1745 2006-06-05 Ville Vainio <vivainio@gmail.com>
1742
1746
1743 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1747 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1744 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1748 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1745
1749
1746 * upgrade_dir.py: try import 'path' module a bit harder
1750 * upgrade_dir.py: try import 'path' module a bit harder
1747 (for %upgrade)
1751 (for %upgrade)
1748
1752
1749 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1753 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1750
1754
1751 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1755 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1752 instead of looping 20 times.
1756 instead of looping 20 times.
1753
1757
1754 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1758 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1755 correctly at initialization time. Bug reported by Krishna Mohan
1759 correctly at initialization time. Bug reported by Krishna Mohan
1756 Gundu <gkmohan-AT-gmail.com> on the user list.
1760 Gundu <gkmohan-AT-gmail.com> on the user list.
1757
1761
1758 * IPython/Release.py (version): Mark 0.7.2 version to start
1762 * IPython/Release.py (version): Mark 0.7.2 version to start
1759 testing for release on 06/06.
1763 testing for release on 06/06.
1760
1764
1761 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1765 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1762
1766
1763 * scripts/irunner: thin script interface so users don't have to
1767 * scripts/irunner: thin script interface so users don't have to
1764 find the module and call it as an executable, since modules rarely
1768 find the module and call it as an executable, since modules rarely
1765 live in people's PATH.
1769 live in people's PATH.
1766
1770
1767 * IPython/irunner.py (InteractiveRunner.__init__): added
1771 * IPython/irunner.py (InteractiveRunner.__init__): added
1768 delaybeforesend attribute to control delays with newer versions of
1772 delaybeforesend attribute to control delays with newer versions of
1769 pexpect. Thanks to detailed help from pexpect's author, Noah
1773 pexpect. Thanks to detailed help from pexpect's author, Noah
1770 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1774 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1771 correctly (it works in NoColor mode).
1775 correctly (it works in NoColor mode).
1772
1776
1773 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1777 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1774 SAGE list, from improper log() calls.
1778 SAGE list, from improper log() calls.
1775
1779
1776 2006-05-31 Ville Vainio <vivainio@gmail.com>
1780 2006-05-31 Ville Vainio <vivainio@gmail.com>
1777
1781
1778 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1782 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1779 with args in parens to work correctly with dirs that have spaces.
1783 with args in parens to work correctly with dirs that have spaces.
1780
1784
1781 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1785 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1782
1786
1783 * IPython/Logger.py (Logger.logstart): add option to log raw input
1787 * IPython/Logger.py (Logger.logstart): add option to log raw input
1784 instead of the processed one. A -r flag was added to the
1788 instead of the processed one. A -r flag was added to the
1785 %logstart magic used for controlling logging.
1789 %logstart magic used for controlling logging.
1786
1790
1787 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1791 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1788
1792
1789 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1793 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1790 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1794 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1791 recognize the option. After a bug report by Will Maier. This
1795 recognize the option. After a bug report by Will Maier. This
1792 closes #64 (will do it after confirmation from W. Maier).
1796 closes #64 (will do it after confirmation from W. Maier).
1793
1797
1794 * IPython/irunner.py: New module to run scripts as if manually
1798 * IPython/irunner.py: New module to run scripts as if manually
1795 typed into an interactive environment, based on pexpect. After a
1799 typed into an interactive environment, based on pexpect. After a
1796 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1800 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1797 ipython-user list. Simple unittests in the tests/ directory.
1801 ipython-user list. Simple unittests in the tests/ directory.
1798
1802
1799 * tools/release: add Will Maier, OpenBSD port maintainer, to
1803 * tools/release: add Will Maier, OpenBSD port maintainer, to
1800 recepients list. We are now officially part of the OpenBSD ports:
1804 recepients list. We are now officially part of the OpenBSD ports:
1801 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1805 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1802 work.
1806 work.
1803
1807
1804 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1808 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1805
1809
1806 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1810 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1807 so that it doesn't break tkinter apps.
1811 so that it doesn't break tkinter apps.
1808
1812
1809 * IPython/iplib.py (_prefilter): fix bug where aliases would
1813 * IPython/iplib.py (_prefilter): fix bug where aliases would
1810 shadow variables when autocall was fully off. Reported by SAGE
1814 shadow variables when autocall was fully off. Reported by SAGE
1811 author William Stein.
1815 author William Stein.
1812
1816
1813 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1817 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1814 at what detail level strings are computed when foo? is requested.
1818 at what detail level strings are computed when foo? is requested.
1815 This allows users to ask for example that the string form of an
1819 This allows users to ask for example that the string form of an
1816 object is only computed when foo?? is called, or even never, by
1820 object is only computed when foo?? is called, or even never, by
1817 setting the object_info_string_level >= 2 in the configuration
1821 setting the object_info_string_level >= 2 in the configuration
1818 file. This new option has been added and documented. After a
1822 file. This new option has been added and documented. After a
1819 request by SAGE to be able to control the printing of very large
1823 request by SAGE to be able to control the printing of very large
1820 objects more easily.
1824 objects more easily.
1821
1825
1822 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1826 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1823
1827
1824 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1828 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1825 from sys.argv, to be 100% consistent with how Python itself works
1829 from sys.argv, to be 100% consistent with how Python itself works
1826 (as seen for example with python -i file.py). After a bug report
1830 (as seen for example with python -i file.py). After a bug report
1827 by Jeffrey Collins.
1831 by Jeffrey Collins.
1828
1832
1829 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1833 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1830 nasty bug which was preventing custom namespaces with -pylab,
1834 nasty bug which was preventing custom namespaces with -pylab,
1831 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1835 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1832 compatibility (long gone from mpl).
1836 compatibility (long gone from mpl).
1833
1837
1834 * IPython/ipapi.py (make_session): name change: create->make. We
1838 * IPython/ipapi.py (make_session): name change: create->make. We
1835 use make in other places (ipmaker,...), it's shorter and easier to
1839 use make in other places (ipmaker,...), it's shorter and easier to
1836 type and say, etc. I'm trying to clean things before 0.7.2 so
1840 type and say, etc. I'm trying to clean things before 0.7.2 so
1837 that I can keep things stable wrt to ipapi in the chainsaw branch.
1841 that I can keep things stable wrt to ipapi in the chainsaw branch.
1838
1842
1839 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1843 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1840 python-mode recognizes our debugger mode. Add support for
1844 python-mode recognizes our debugger mode. Add support for
1841 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1845 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1842 <m.liu.jin-AT-gmail.com> originally written by
1846 <m.liu.jin-AT-gmail.com> originally written by
1843 doxgen-AT-newsmth.net (with minor modifications for xemacs
1847 doxgen-AT-newsmth.net (with minor modifications for xemacs
1844 compatibility)
1848 compatibility)
1845
1849
1846 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1850 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1847 tracebacks when walking the stack so that the stack tracking system
1851 tracebacks when walking the stack so that the stack tracking system
1848 in emacs' python-mode can identify the frames correctly.
1852 in emacs' python-mode can identify the frames correctly.
1849
1853
1850 * IPython/ipmaker.py (make_IPython): make the internal (and
1854 * IPython/ipmaker.py (make_IPython): make the internal (and
1851 default config) autoedit_syntax value false by default. Too many
1855 default config) autoedit_syntax value false by default. Too many
1852 users have complained to me (both on and off-list) about problems
1856 users have complained to me (both on and off-list) about problems
1853 with this option being on by default, so I'm making it default to
1857 with this option being on by default, so I'm making it default to
1854 off. It can still be enabled by anyone via the usual mechanisms.
1858 off. It can still be enabled by anyone via the usual mechanisms.
1855
1859
1856 * IPython/completer.py (Completer.attr_matches): add support for
1860 * IPython/completer.py (Completer.attr_matches): add support for
1857 PyCrust-style _getAttributeNames magic method. Patch contributed
1861 PyCrust-style _getAttributeNames magic method. Patch contributed
1858 by <mscott-AT-goldenspud.com>. Closes #50.
1862 by <mscott-AT-goldenspud.com>. Closes #50.
1859
1863
1860 * IPython/iplib.py (InteractiveShell.__init__): remove the
1864 * IPython/iplib.py (InteractiveShell.__init__): remove the
1861 deletion of exit/quit from __builtin__, which can break
1865 deletion of exit/quit from __builtin__, which can break
1862 third-party tools like the Zope debugging console. The
1866 third-party tools like the Zope debugging console. The
1863 %exit/%quit magics remain. In general, it's probably a good idea
1867 %exit/%quit magics remain. In general, it's probably a good idea
1864 not to delete anything from __builtin__, since we never know what
1868 not to delete anything from __builtin__, since we never know what
1865 that will break. In any case, python now (for 2.5) will support
1869 that will break. In any case, python now (for 2.5) will support
1866 'real' exit/quit, so this issue is moot. Closes #55.
1870 'real' exit/quit, so this issue is moot. Closes #55.
1867
1871
1868 * IPython/genutils.py (with_obj): rename the 'with' function to
1872 * IPython/genutils.py (with_obj): rename the 'with' function to
1869 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1873 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1870 becomes a language keyword. Closes #53.
1874 becomes a language keyword. Closes #53.
1871
1875
1872 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1876 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1873 __file__ attribute to this so it fools more things into thinking
1877 __file__ attribute to this so it fools more things into thinking
1874 it is a real module. Closes #59.
1878 it is a real module. Closes #59.
1875
1879
1876 * IPython/Magic.py (magic_edit): add -n option to open the editor
1880 * IPython/Magic.py (magic_edit): add -n option to open the editor
1877 at a specific line number. After a patch by Stefan van der Walt.
1881 at a specific line number. After a patch by Stefan van der Walt.
1878
1882
1879 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1883 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1880
1884
1881 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1885 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1882 reason the file could not be opened. After automatic crash
1886 reason the file could not be opened. After automatic crash
1883 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1887 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1884 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1888 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1885 (_should_recompile): Don't fire editor if using %bg, since there
1889 (_should_recompile): Don't fire editor if using %bg, since there
1886 is no file in the first place. From the same report as above.
1890 is no file in the first place. From the same report as above.
1887 (raw_input): protect against faulty third-party prefilters. After
1891 (raw_input): protect against faulty third-party prefilters. After
1888 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1892 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1889 while running under SAGE.
1893 while running under SAGE.
1890
1894
1891 2006-05-23 Ville Vainio <vivainio@gmail.com>
1895 2006-05-23 Ville Vainio <vivainio@gmail.com>
1892
1896
1893 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1897 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1894 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1898 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1895 now returns None (again), unless dummy is specifically allowed by
1899 now returns None (again), unless dummy is specifically allowed by
1896 ipapi.get(allow_dummy=True).
1900 ipapi.get(allow_dummy=True).
1897
1901
1898 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1902 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1899
1903
1900 * IPython: remove all 2.2-compatibility objects and hacks from
1904 * IPython: remove all 2.2-compatibility objects and hacks from
1901 everywhere, since we only support 2.3 at this point. Docs
1905 everywhere, since we only support 2.3 at this point. Docs
1902 updated.
1906 updated.
1903
1907
1904 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1908 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1905 Anything requiring extra validation can be turned into a Python
1909 Anything requiring extra validation can be turned into a Python
1906 property in the future. I used a property for the db one b/c
1910 property in the future. I used a property for the db one b/c
1907 there was a nasty circularity problem with the initialization
1911 there was a nasty circularity problem with the initialization
1908 order, which right now I don't have time to clean up.
1912 order, which right now I don't have time to clean up.
1909
1913
1910 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1914 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1911 another locking bug reported by Jorgen. I'm not 100% sure though,
1915 another locking bug reported by Jorgen. I'm not 100% sure though,
1912 so more testing is needed...
1916 so more testing is needed...
1913
1917
1914 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1918 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1915
1919
1916 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1920 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1917 local variables from any routine in user code (typically executed
1921 local variables from any routine in user code (typically executed
1918 with %run) directly into the interactive namespace. Very useful
1922 with %run) directly into the interactive namespace. Very useful
1919 when doing complex debugging.
1923 when doing complex debugging.
1920 (IPythonNotRunning): Changed the default None object to a dummy
1924 (IPythonNotRunning): Changed the default None object to a dummy
1921 whose attributes can be queried as well as called without
1925 whose attributes can be queried as well as called without
1922 exploding, to ease writing code which works transparently both in
1926 exploding, to ease writing code which works transparently both in
1923 and out of ipython and uses some of this API.
1927 and out of ipython and uses some of this API.
1924
1928
1925 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1929 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1926
1930
1927 * IPython/hooks.py (result_display): Fix the fact that our display
1931 * IPython/hooks.py (result_display): Fix the fact that our display
1928 hook was using str() instead of repr(), as the default python
1932 hook was using str() instead of repr(), as the default python
1929 console does. This had gone unnoticed b/c it only happened if
1933 console does. This had gone unnoticed b/c it only happened if
1930 %Pprint was off, but the inconsistency was there.
1934 %Pprint was off, but the inconsistency was there.
1931
1935
1932 2006-05-15 Ville Vainio <vivainio@gmail.com>
1936 2006-05-15 Ville Vainio <vivainio@gmail.com>
1933
1937
1934 * Oinspect.py: Only show docstring for nonexisting/binary files
1938 * Oinspect.py: Only show docstring for nonexisting/binary files
1935 when doing object??, closing ticket #62
1939 when doing object??, closing ticket #62
1936
1940
1937 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1941 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1938
1942
1939 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1943 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1940 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1944 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1941 was being released in a routine which hadn't checked if it had
1945 was being released in a routine which hadn't checked if it had
1942 been the one to acquire it.
1946 been the one to acquire it.
1943
1947
1944 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1948 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1945
1949
1946 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1950 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1947
1951
1948 2006-04-11 Ville Vainio <vivainio@gmail.com>
1952 2006-04-11 Ville Vainio <vivainio@gmail.com>
1949
1953
1950 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1954 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1951 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1955 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1952 prefilters, allowing stuff like magics and aliases in the file.
1956 prefilters, allowing stuff like magics and aliases in the file.
1953
1957
1954 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1958 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1955 added. Supported now are "%clear in" and "%clear out" (clear input and
1959 added. Supported now are "%clear in" and "%clear out" (clear input and
1956 output history, respectively). Also fixed CachedOutput.flush to
1960 output history, respectively). Also fixed CachedOutput.flush to
1957 properly flush the output cache.
1961 properly flush the output cache.
1958
1962
1959 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1963 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1960 half-success (and fail explicitly).
1964 half-success (and fail explicitly).
1961
1965
1962 2006-03-28 Ville Vainio <vivainio@gmail.com>
1966 2006-03-28 Ville Vainio <vivainio@gmail.com>
1963
1967
1964 * iplib.py: Fix quoting of aliases so that only argless ones
1968 * iplib.py: Fix quoting of aliases so that only argless ones
1965 are quoted
1969 are quoted
1966
1970
1967 2006-03-28 Ville Vainio <vivainio@gmail.com>
1971 2006-03-28 Ville Vainio <vivainio@gmail.com>
1968
1972
1969 * iplib.py: Quote aliases with spaces in the name.
1973 * iplib.py: Quote aliases with spaces in the name.
1970 "c:\program files\blah\bin" is now legal alias target.
1974 "c:\program files\blah\bin" is now legal alias target.
1971
1975
1972 * ext_rehashdir.py: Space no longer allowed as arg
1976 * ext_rehashdir.py: Space no longer allowed as arg
1973 separator, since space is legal in path names.
1977 separator, since space is legal in path names.
1974
1978
1975 2006-03-16 Ville Vainio <vivainio@gmail.com>
1979 2006-03-16 Ville Vainio <vivainio@gmail.com>
1976
1980
1977 * upgrade_dir.py: Take path.py from Extensions, correcting
1981 * upgrade_dir.py: Take path.py from Extensions, correcting
1978 %upgrade magic
1982 %upgrade magic
1979
1983
1980 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1984 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1981
1985
1982 * hooks.py: Only enclose editor binary in quotes if legal and
1986 * hooks.py: Only enclose editor binary in quotes if legal and
1983 necessary (space in the name, and is an existing file). Fixes a bug
1987 necessary (space in the name, and is an existing file). Fixes a bug
1984 reported by Zachary Pincus.
1988 reported by Zachary Pincus.
1985
1989
1986 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1990 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1987
1991
1988 * Manual: thanks to a tip on proper color handling for Emacs, by
1992 * Manual: thanks to a tip on proper color handling for Emacs, by
1989 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1993 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1990
1994
1991 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1995 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1992 by applying the provided patch. Thanks to Liu Jin
1996 by applying the provided patch. Thanks to Liu Jin
1993 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1997 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1994 XEmacs/Linux, I'm trusting the submitter that it actually helps
1998 XEmacs/Linux, I'm trusting the submitter that it actually helps
1995 under win32/GNU Emacs. Will revisit if any problems are reported.
1999 under win32/GNU Emacs. Will revisit if any problems are reported.
1996
2000
1997 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2001 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1998
2002
1999 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2003 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2000 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2004 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2001
2005
2002 2006-03-12 Ville Vainio <vivainio@gmail.com>
2006 2006-03-12 Ville Vainio <vivainio@gmail.com>
2003
2007
2004 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2008 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2005 Torsten Marek.
2009 Torsten Marek.
2006
2010
2007 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2011 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2008
2012
2009 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2013 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2010 line ranges works again.
2014 line ranges works again.
2011
2015
2012 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2016 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2013
2017
2014 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2018 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2015 and friends, after a discussion with Zach Pincus on ipython-user.
2019 and friends, after a discussion with Zach Pincus on ipython-user.
2016 I'm not 100% sure, but after thinking about it quite a bit, it may
2020 I'm not 100% sure, but after thinking about it quite a bit, it may
2017 be OK. Testing with the multithreaded shells didn't reveal any
2021 be OK. Testing with the multithreaded shells didn't reveal any
2018 problems, but let's keep an eye out.
2022 problems, but let's keep an eye out.
2019
2023
2020 In the process, I fixed a few things which were calling
2024 In the process, I fixed a few things which were calling
2021 self.InteractiveTB() directly (like safe_execfile), which is a
2025 self.InteractiveTB() directly (like safe_execfile), which is a
2022 mistake: ALL exception reporting should be done by calling
2026 mistake: ALL exception reporting should be done by calling
2023 self.showtraceback(), which handles state and tab-completion and
2027 self.showtraceback(), which handles state and tab-completion and
2024 more.
2028 more.
2025
2029
2026 2006-03-01 Ville Vainio <vivainio@gmail.com>
2030 2006-03-01 Ville Vainio <vivainio@gmail.com>
2027
2031
2028 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2032 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2029 To use, do "from ipipe import *".
2033 To use, do "from ipipe import *".
2030
2034
2031 2006-02-24 Ville Vainio <vivainio@gmail.com>
2035 2006-02-24 Ville Vainio <vivainio@gmail.com>
2032
2036
2033 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2037 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2034 "cleanly" and safely than the older upgrade mechanism.
2038 "cleanly" and safely than the older upgrade mechanism.
2035
2039
2036 2006-02-21 Ville Vainio <vivainio@gmail.com>
2040 2006-02-21 Ville Vainio <vivainio@gmail.com>
2037
2041
2038 * Magic.py: %save works again.
2042 * Magic.py: %save works again.
2039
2043
2040 2006-02-15 Ville Vainio <vivainio@gmail.com>
2044 2006-02-15 Ville Vainio <vivainio@gmail.com>
2041
2045
2042 * Magic.py: %Pprint works again
2046 * Magic.py: %Pprint works again
2043
2047
2044 * Extensions/ipy_sane_defaults.py: Provide everything provided
2048 * Extensions/ipy_sane_defaults.py: Provide everything provided
2045 in default ipythonrc, to make it possible to have a completely empty
2049 in default ipythonrc, to make it possible to have a completely empty
2046 ipythonrc (and thus completely rc-file free configuration)
2050 ipythonrc (and thus completely rc-file free configuration)
2047
2051
2048 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2052 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2049
2053
2050 * IPython/hooks.py (editor): quote the call to the editor command,
2054 * IPython/hooks.py (editor): quote the call to the editor command,
2051 to allow commands with spaces in them. Problem noted by watching
2055 to allow commands with spaces in them. Problem noted by watching
2052 Ian Oswald's video about textpad under win32 at
2056 Ian Oswald's video about textpad under win32 at
2053 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2057 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2054
2058
2055 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2059 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2056 describing magics (we haven't used @ for a loong time).
2060 describing magics (we haven't used @ for a loong time).
2057
2061
2058 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2062 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2059 contributed by marienz to close
2063 contributed by marienz to close
2060 http://www.scipy.net/roundup/ipython/issue53.
2064 http://www.scipy.net/roundup/ipython/issue53.
2061
2065
2062 2006-02-10 Ville Vainio <vivainio@gmail.com>
2066 2006-02-10 Ville Vainio <vivainio@gmail.com>
2063
2067
2064 * genutils.py: getoutput now works in win32 too
2068 * genutils.py: getoutput now works in win32 too
2065
2069
2066 * completer.py: alias and magic completion only invoked
2070 * completer.py: alias and magic completion only invoked
2067 at the first "item" in the line, to avoid "cd %store"
2071 at the first "item" in the line, to avoid "cd %store"
2068 nonsense.
2072 nonsense.
2069
2073
2070 2006-02-09 Ville Vainio <vivainio@gmail.com>
2074 2006-02-09 Ville Vainio <vivainio@gmail.com>
2071
2075
2072 * test/*: Added a unit testing framework (finally).
2076 * test/*: Added a unit testing framework (finally).
2073 '%run runtests.py' to run test_*.
2077 '%run runtests.py' to run test_*.
2074
2078
2075 * ipapi.py: Exposed runlines and set_custom_exc
2079 * ipapi.py: Exposed runlines and set_custom_exc
2076
2080
2077 2006-02-07 Ville Vainio <vivainio@gmail.com>
2081 2006-02-07 Ville Vainio <vivainio@gmail.com>
2078
2082
2079 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2083 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2080 instead use "f(1 2)" as before.
2084 instead use "f(1 2)" as before.
2081
2085
2082 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2086 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2083
2087
2084 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2088 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2085 facilities, for demos processed by the IPython input filter
2089 facilities, for demos processed by the IPython input filter
2086 (IPythonDemo), and for running a script one-line-at-a-time as a
2090 (IPythonDemo), and for running a script one-line-at-a-time as a
2087 demo, both for pure Python (LineDemo) and for IPython-processed
2091 demo, both for pure Python (LineDemo) and for IPython-processed
2088 input (IPythonLineDemo). After a request by Dave Kohel, from the
2092 input (IPythonLineDemo). After a request by Dave Kohel, from the
2089 SAGE team.
2093 SAGE team.
2090 (Demo.edit): added an edit() method to the demo objects, to edit
2094 (Demo.edit): added an edit() method to the demo objects, to edit
2091 the in-memory copy of the last executed block.
2095 the in-memory copy of the last executed block.
2092
2096
2093 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2097 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2094 processing to %edit, %macro and %save. These commands can now be
2098 processing to %edit, %macro and %save. These commands can now be
2095 invoked on the unprocessed input as it was typed by the user
2099 invoked on the unprocessed input as it was typed by the user
2096 (without any prefilters applied). After requests by the SAGE team
2100 (without any prefilters applied). After requests by the SAGE team
2097 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2101 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2098
2102
2099 2006-02-01 Ville Vainio <vivainio@gmail.com>
2103 2006-02-01 Ville Vainio <vivainio@gmail.com>
2100
2104
2101 * setup.py, eggsetup.py: easy_install ipython==dev works
2105 * setup.py, eggsetup.py: easy_install ipython==dev works
2102 correctly now (on Linux)
2106 correctly now (on Linux)
2103
2107
2104 * ipy_user_conf,ipmaker: user config changes, removed spurious
2108 * ipy_user_conf,ipmaker: user config changes, removed spurious
2105 warnings
2109 warnings
2106
2110
2107 * iplib: if rc.banner is string, use it as is.
2111 * iplib: if rc.banner is string, use it as is.
2108
2112
2109 * Magic: %pycat accepts a string argument and pages it's contents.
2113 * Magic: %pycat accepts a string argument and pages it's contents.
2110
2114
2111
2115
2112 2006-01-30 Ville Vainio <vivainio@gmail.com>
2116 2006-01-30 Ville Vainio <vivainio@gmail.com>
2113
2117
2114 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2118 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2115 Now %store and bookmarks work through PickleShare, meaning that
2119 Now %store and bookmarks work through PickleShare, meaning that
2116 concurrent access is possible and all ipython sessions see the
2120 concurrent access is possible and all ipython sessions see the
2117 same database situation all the time, instead of snapshot of
2121 same database situation all the time, instead of snapshot of
2118 the situation when the session was started. Hence, %bookmark
2122 the situation when the session was started. Hence, %bookmark
2119 results are immediately accessible from othes sessions. The database
2123 results are immediately accessible from othes sessions. The database
2120 is also available for use by user extensions. See:
2124 is also available for use by user extensions. See:
2121 http://www.python.org/pypi/pickleshare
2125 http://www.python.org/pypi/pickleshare
2122
2126
2123 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2127 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2124
2128
2125 * aliases can now be %store'd
2129 * aliases can now be %store'd
2126
2130
2127 * path.py moved to Extensions so that pickleshare does not need
2131 * path.py moved to Extensions so that pickleshare does not need
2128 IPython-specific import. Extensions added to pythonpath right
2132 IPython-specific import. Extensions added to pythonpath right
2129 at __init__.
2133 at __init__.
2130
2134
2131 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2135 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2132 called with _ip.system and the pre-transformed command string.
2136 called with _ip.system and the pre-transformed command string.
2133
2137
2134 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2138 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2135
2139
2136 * IPython/iplib.py (interact): Fix that we were not catching
2140 * IPython/iplib.py (interact): Fix that we were not catching
2137 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2141 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2138 logic here had to change, but it's fixed now.
2142 logic here had to change, but it's fixed now.
2139
2143
2140 2006-01-29 Ville Vainio <vivainio@gmail.com>
2144 2006-01-29 Ville Vainio <vivainio@gmail.com>
2141
2145
2142 * iplib.py: Try to import pyreadline on Windows.
2146 * iplib.py: Try to import pyreadline on Windows.
2143
2147
2144 2006-01-27 Ville Vainio <vivainio@gmail.com>
2148 2006-01-27 Ville Vainio <vivainio@gmail.com>
2145
2149
2146 * iplib.py: Expose ipapi as _ip in builtin namespace.
2150 * iplib.py: Expose ipapi as _ip in builtin namespace.
2147 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2151 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2148 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2152 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2149 syntax now produce _ip.* variant of the commands.
2153 syntax now produce _ip.* variant of the commands.
2150
2154
2151 * "_ip.options().autoedit_syntax = 2" automatically throws
2155 * "_ip.options().autoedit_syntax = 2" automatically throws
2152 user to editor for syntax error correction without prompting.
2156 user to editor for syntax error correction without prompting.
2153
2157
2154 2006-01-27 Ville Vainio <vivainio@gmail.com>
2158 2006-01-27 Ville Vainio <vivainio@gmail.com>
2155
2159
2156 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2160 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2157 'ipython' at argv[0]) executed through command line.
2161 'ipython' at argv[0]) executed through command line.
2158 NOTE: this DEPRECATES calling ipython with multiple scripts
2162 NOTE: this DEPRECATES calling ipython with multiple scripts
2159 ("ipython a.py b.py c.py")
2163 ("ipython a.py b.py c.py")
2160
2164
2161 * iplib.py, hooks.py: Added configurable input prefilter,
2165 * iplib.py, hooks.py: Added configurable input prefilter,
2162 named 'input_prefilter'. See ext_rescapture.py for example
2166 named 'input_prefilter'. See ext_rescapture.py for example
2163 usage.
2167 usage.
2164
2168
2165 * ext_rescapture.py, Magic.py: Better system command output capture
2169 * ext_rescapture.py, Magic.py: Better system command output capture
2166 through 'var = !ls' (deprecates user-visible %sc). Same notation
2170 through 'var = !ls' (deprecates user-visible %sc). Same notation
2167 applies for magics, 'var = %alias' assigns alias list to var.
2171 applies for magics, 'var = %alias' assigns alias list to var.
2168
2172
2169 * ipapi.py: added meta() for accessing extension-usable data store.
2173 * ipapi.py: added meta() for accessing extension-usable data store.
2170
2174
2171 * iplib.py: added InteractiveShell.getapi(). New magics should be
2175 * iplib.py: added InteractiveShell.getapi(). New magics should be
2172 written doing self.getapi() instead of using the shell directly.
2176 written doing self.getapi() instead of using the shell directly.
2173
2177
2174 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2178 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2175 %store foo >> ~/myfoo.txt to store variables to files (in clean
2179 %store foo >> ~/myfoo.txt to store variables to files (in clean
2176 textual form, not a restorable pickle).
2180 textual form, not a restorable pickle).
2177
2181
2178 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2182 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2179
2183
2180 * usage.py, Magic.py: added %quickref
2184 * usage.py, Magic.py: added %quickref
2181
2185
2182 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2186 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2183
2187
2184 * GetoptErrors when invoking magics etc. with wrong args
2188 * GetoptErrors when invoking magics etc. with wrong args
2185 are now more helpful:
2189 are now more helpful:
2186 GetoptError: option -l not recognized (allowed: "qb" )
2190 GetoptError: option -l not recognized (allowed: "qb" )
2187
2191
2188 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2192 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2189
2193
2190 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2194 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2191 computationally intensive blocks don't appear to stall the demo.
2195 computationally intensive blocks don't appear to stall the demo.
2192
2196
2193 2006-01-24 Ville Vainio <vivainio@gmail.com>
2197 2006-01-24 Ville Vainio <vivainio@gmail.com>
2194
2198
2195 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2199 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2196 value to manipulate resulting history entry.
2200 value to manipulate resulting history entry.
2197
2201
2198 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2202 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2199 to instance methods of IPApi class, to make extending an embedded
2203 to instance methods of IPApi class, to make extending an embedded
2200 IPython feasible. See ext_rehashdir.py for example usage.
2204 IPython feasible. See ext_rehashdir.py for example usage.
2201
2205
2202 * Merged 1071-1076 from branches/0.7.1
2206 * Merged 1071-1076 from branches/0.7.1
2203
2207
2204
2208
2205 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2209 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2206
2210
2207 * tools/release (daystamp): Fix build tools to use the new
2211 * tools/release (daystamp): Fix build tools to use the new
2208 eggsetup.py script to build lightweight eggs.
2212 eggsetup.py script to build lightweight eggs.
2209
2213
2210 * Applied changesets 1062 and 1064 before 0.7.1 release.
2214 * Applied changesets 1062 and 1064 before 0.7.1 release.
2211
2215
2212 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2216 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2213 see the raw input history (without conversions like %ls ->
2217 see the raw input history (without conversions like %ls ->
2214 ipmagic("ls")). After a request from W. Stein, SAGE
2218 ipmagic("ls")). After a request from W. Stein, SAGE
2215 (http://modular.ucsd.edu/sage) developer. This information is
2219 (http://modular.ucsd.edu/sage) developer. This information is
2216 stored in the input_hist_raw attribute of the IPython instance, so
2220 stored in the input_hist_raw attribute of the IPython instance, so
2217 developers can access it if needed (it's an InputList instance).
2221 developers can access it if needed (it's an InputList instance).
2218
2222
2219 * Versionstring = 0.7.2.svn
2223 * Versionstring = 0.7.2.svn
2220
2224
2221 * eggsetup.py: A separate script for constructing eggs, creates
2225 * eggsetup.py: A separate script for constructing eggs, creates
2222 proper launch scripts even on Windows (an .exe file in
2226 proper launch scripts even on Windows (an .exe file in
2223 \python24\scripts).
2227 \python24\scripts).
2224
2228
2225 * ipapi.py: launch_new_instance, launch entry point needed for the
2229 * ipapi.py: launch_new_instance, launch entry point needed for the
2226 egg.
2230 egg.
2227
2231
2228 2006-01-23 Ville Vainio <vivainio@gmail.com>
2232 2006-01-23 Ville Vainio <vivainio@gmail.com>
2229
2233
2230 * Added %cpaste magic for pasting python code
2234 * Added %cpaste magic for pasting python code
2231
2235
2232 2006-01-22 Ville Vainio <vivainio@gmail.com>
2236 2006-01-22 Ville Vainio <vivainio@gmail.com>
2233
2237
2234 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2238 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2235
2239
2236 * Versionstring = 0.7.2.svn
2240 * Versionstring = 0.7.2.svn
2237
2241
2238 * eggsetup.py: A separate script for constructing eggs, creates
2242 * eggsetup.py: A separate script for constructing eggs, creates
2239 proper launch scripts even on Windows (an .exe file in
2243 proper launch scripts even on Windows (an .exe file in
2240 \python24\scripts).
2244 \python24\scripts).
2241
2245
2242 * ipapi.py: launch_new_instance, launch entry point needed for the
2246 * ipapi.py: launch_new_instance, launch entry point needed for the
2243 egg.
2247 egg.
2244
2248
2245 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2249 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2246
2250
2247 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2251 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2248 %pfile foo would print the file for foo even if it was a binary.
2252 %pfile foo would print the file for foo even if it was a binary.
2249 Now, extensions '.so' and '.dll' are skipped.
2253 Now, extensions '.so' and '.dll' are skipped.
2250
2254
2251 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2255 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2252 bug, where macros would fail in all threaded modes. I'm not 100%
2256 bug, where macros would fail in all threaded modes. I'm not 100%
2253 sure, so I'm going to put out an rc instead of making a release
2257 sure, so I'm going to put out an rc instead of making a release
2254 today, and wait for feedback for at least a few days.
2258 today, and wait for feedback for at least a few days.
2255
2259
2256 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2260 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2257 it...) the handling of pasting external code with autoindent on.
2261 it...) the handling of pasting external code with autoindent on.
2258 To get out of a multiline input, the rule will appear for most
2262 To get out of a multiline input, the rule will appear for most
2259 users unchanged: two blank lines or change the indent level
2263 users unchanged: two blank lines or change the indent level
2260 proposed by IPython. But there is a twist now: you can
2264 proposed by IPython. But there is a twist now: you can
2261 add/subtract only *one or two spaces*. If you add/subtract three
2265 add/subtract only *one or two spaces*. If you add/subtract three
2262 or more (unless you completely delete the line), IPython will
2266 or more (unless you completely delete the line), IPython will
2263 accept that line, and you'll need to enter a second one of pure
2267 accept that line, and you'll need to enter a second one of pure
2264 whitespace. I know it sounds complicated, but I can't find a
2268 whitespace. I know it sounds complicated, but I can't find a
2265 different solution that covers all the cases, with the right
2269 different solution that covers all the cases, with the right
2266 heuristics. Hopefully in actual use, nobody will really notice
2270 heuristics. Hopefully in actual use, nobody will really notice
2267 all these strange rules and things will 'just work'.
2271 all these strange rules and things will 'just work'.
2268
2272
2269 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2273 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2270
2274
2271 * IPython/iplib.py (interact): catch exceptions which can be
2275 * IPython/iplib.py (interact): catch exceptions which can be
2272 triggered asynchronously by signal handlers. Thanks to an
2276 triggered asynchronously by signal handlers. Thanks to an
2273 automatic crash report, submitted by Colin Kingsley
2277 automatic crash report, submitted by Colin Kingsley
2274 <tercel-AT-gentoo.org>.
2278 <tercel-AT-gentoo.org>.
2275
2279
2276 2006-01-20 Ville Vainio <vivainio@gmail.com>
2280 2006-01-20 Ville Vainio <vivainio@gmail.com>
2277
2281
2278 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2282 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2279 (%rehashdir, very useful, try it out) of how to extend ipython
2283 (%rehashdir, very useful, try it out) of how to extend ipython
2280 with new magics. Also added Extensions dir to pythonpath to make
2284 with new magics. Also added Extensions dir to pythonpath to make
2281 importing extensions easy.
2285 importing extensions easy.
2282
2286
2283 * %store now complains when trying to store interactively declared
2287 * %store now complains when trying to store interactively declared
2284 classes / instances of those classes.
2288 classes / instances of those classes.
2285
2289
2286 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2290 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2287 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2291 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2288 if they exist, and ipy_user_conf.py with some defaults is created for
2292 if they exist, and ipy_user_conf.py with some defaults is created for
2289 the user.
2293 the user.
2290
2294
2291 * Startup rehashing done by the config file, not InterpreterExec.
2295 * Startup rehashing done by the config file, not InterpreterExec.
2292 This means system commands are available even without selecting the
2296 This means system commands are available even without selecting the
2293 pysh profile. It's the sensible default after all.
2297 pysh profile. It's the sensible default after all.
2294
2298
2295 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2299 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2296
2300
2297 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2301 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2298 multiline code with autoindent on working. But I am really not
2302 multiline code with autoindent on working. But I am really not
2299 sure, so this needs more testing. Will commit a debug-enabled
2303 sure, so this needs more testing. Will commit a debug-enabled
2300 version for now, while I test it some more, so that Ville and
2304 version for now, while I test it some more, so that Ville and
2301 others may also catch any problems. Also made
2305 others may also catch any problems. Also made
2302 self.indent_current_str() a method, to ensure that there's no
2306 self.indent_current_str() a method, to ensure that there's no
2303 chance of the indent space count and the corresponding string
2307 chance of the indent space count and the corresponding string
2304 falling out of sync. All code needing the string should just call
2308 falling out of sync. All code needing the string should just call
2305 the method.
2309 the method.
2306
2310
2307 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2311 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2308
2312
2309 * IPython/Magic.py (magic_edit): fix check for when users don't
2313 * IPython/Magic.py (magic_edit): fix check for when users don't
2310 save their output files, the try/except was in the wrong section.
2314 save their output files, the try/except was in the wrong section.
2311
2315
2312 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2316 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2313
2317
2314 * IPython/Magic.py (magic_run): fix __file__ global missing from
2318 * IPython/Magic.py (magic_run): fix __file__ global missing from
2315 script's namespace when executed via %run. After a report by
2319 script's namespace when executed via %run. After a report by
2316 Vivian.
2320 Vivian.
2317
2321
2318 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2322 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2319 when using python 2.4. The parent constructor changed in 2.4, and
2323 when using python 2.4. The parent constructor changed in 2.4, and
2320 we need to track it directly (we can't call it, as it messes up
2324 we need to track it directly (we can't call it, as it messes up
2321 readline and tab-completion inside our pdb would stop working).
2325 readline and tab-completion inside our pdb would stop working).
2322 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2326 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2323
2327
2324 2006-01-16 Ville Vainio <vivainio@gmail.com>
2328 2006-01-16 Ville Vainio <vivainio@gmail.com>
2325
2329
2326 * Ipython/magic.py: Reverted back to old %edit functionality
2330 * Ipython/magic.py: Reverted back to old %edit functionality
2327 that returns file contents on exit.
2331 that returns file contents on exit.
2328
2332
2329 * IPython/path.py: Added Jason Orendorff's "path" module to
2333 * IPython/path.py: Added Jason Orendorff's "path" module to
2330 IPython tree, http://www.jorendorff.com/articles/python/path/.
2334 IPython tree, http://www.jorendorff.com/articles/python/path/.
2331 You can get path objects conveniently through %sc, and !!, e.g.:
2335 You can get path objects conveniently through %sc, and !!, e.g.:
2332 sc files=ls
2336 sc files=ls
2333 for p in files.paths: # or files.p
2337 for p in files.paths: # or files.p
2334 print p,p.mtime
2338 print p,p.mtime
2335
2339
2336 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2340 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2337 now work again without considering the exclusion regexp -
2341 now work again without considering the exclusion regexp -
2338 hence, things like ',foo my/path' turn to 'foo("my/path")'
2342 hence, things like ',foo my/path' turn to 'foo("my/path")'
2339 instead of syntax error.
2343 instead of syntax error.
2340
2344
2341
2345
2342 2006-01-14 Ville Vainio <vivainio@gmail.com>
2346 2006-01-14 Ville Vainio <vivainio@gmail.com>
2343
2347
2344 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2348 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2345 ipapi decorators for python 2.4 users, options() provides access to rc
2349 ipapi decorators for python 2.4 users, options() provides access to rc
2346 data.
2350 data.
2347
2351
2348 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2352 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2349 as path separators (even on Linux ;-). Space character after
2353 as path separators (even on Linux ;-). Space character after
2350 backslash (as yielded by tab completer) is still space;
2354 backslash (as yielded by tab completer) is still space;
2351 "%cd long\ name" works as expected.
2355 "%cd long\ name" works as expected.
2352
2356
2353 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2357 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2354 as "chain of command", with priority. API stays the same,
2358 as "chain of command", with priority. API stays the same,
2355 TryNext exception raised by a hook function signals that
2359 TryNext exception raised by a hook function signals that
2356 current hook failed and next hook should try handling it, as
2360 current hook failed and next hook should try handling it, as
2357 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2361 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2358 requested configurable display hook, which is now implemented.
2362 requested configurable display hook, which is now implemented.
2359
2363
2360 2006-01-13 Ville Vainio <vivainio@gmail.com>
2364 2006-01-13 Ville Vainio <vivainio@gmail.com>
2361
2365
2362 * IPython/platutils*.py: platform specific utility functions,
2366 * IPython/platutils*.py: platform specific utility functions,
2363 so far only set_term_title is implemented (change terminal
2367 so far only set_term_title is implemented (change terminal
2364 label in windowing systems). %cd now changes the title to
2368 label in windowing systems). %cd now changes the title to
2365 current dir.
2369 current dir.
2366
2370
2367 * IPython/Release.py: Added myself to "authors" list,
2371 * IPython/Release.py: Added myself to "authors" list,
2368 had to create new files.
2372 had to create new files.
2369
2373
2370 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2374 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2371 shell escape; not a known bug but had potential to be one in the
2375 shell escape; not a known bug but had potential to be one in the
2372 future.
2376 future.
2373
2377
2374 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2378 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2375 extension API for IPython! See the module for usage example. Fix
2379 extension API for IPython! See the module for usage example. Fix
2376 OInspect for docstring-less magic functions.
2380 OInspect for docstring-less magic functions.
2377
2381
2378
2382
2379 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2383 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2380
2384
2381 * IPython/iplib.py (raw_input): temporarily deactivate all
2385 * IPython/iplib.py (raw_input): temporarily deactivate all
2382 attempts at allowing pasting of code with autoindent on. It
2386 attempts at allowing pasting of code with autoindent on. It
2383 introduced bugs (reported by Prabhu) and I can't seem to find a
2387 introduced bugs (reported by Prabhu) and I can't seem to find a
2384 robust combination which works in all cases. Will have to revisit
2388 robust combination which works in all cases. Will have to revisit
2385 later.
2389 later.
2386
2390
2387 * IPython/genutils.py: remove isspace() function. We've dropped
2391 * IPython/genutils.py: remove isspace() function. We've dropped
2388 2.2 compatibility, so it's OK to use the string method.
2392 2.2 compatibility, so it's OK to use the string method.
2389
2393
2390 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2394 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2391
2395
2392 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2396 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2393 matching what NOT to autocall on, to include all python binary
2397 matching what NOT to autocall on, to include all python binary
2394 operators (including things like 'and', 'or', 'is' and 'in').
2398 operators (including things like 'and', 'or', 'is' and 'in').
2395 Prompted by a bug report on 'foo & bar', but I realized we had
2399 Prompted by a bug report on 'foo & bar', but I realized we had
2396 many more potential bug cases with other operators. The regexp is
2400 many more potential bug cases with other operators. The regexp is
2397 self.re_exclude_auto, it's fairly commented.
2401 self.re_exclude_auto, it's fairly commented.
2398
2402
2399 2006-01-12 Ville Vainio <vivainio@gmail.com>
2403 2006-01-12 Ville Vainio <vivainio@gmail.com>
2400
2404
2401 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2405 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2402 Prettified and hardened string/backslash quoting with ipsystem(),
2406 Prettified and hardened string/backslash quoting with ipsystem(),
2403 ipalias() and ipmagic(). Now even \ characters are passed to
2407 ipalias() and ipmagic(). Now even \ characters are passed to
2404 %magics, !shell escapes and aliases exactly as they are in the
2408 %magics, !shell escapes and aliases exactly as they are in the
2405 ipython command line. Should improve backslash experience,
2409 ipython command line. Should improve backslash experience,
2406 particularly in Windows (path delimiter for some commands that
2410 particularly in Windows (path delimiter for some commands that
2407 won't understand '/'), but Unix benefits as well (regexps). %cd
2411 won't understand '/'), but Unix benefits as well (regexps). %cd
2408 magic still doesn't support backslash path delimiters, though. Also
2412 magic still doesn't support backslash path delimiters, though. Also
2409 deleted all pretense of supporting multiline command strings in
2413 deleted all pretense of supporting multiline command strings in
2410 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2414 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2411
2415
2412 * doc/build_doc_instructions.txt added. Documentation on how to
2416 * doc/build_doc_instructions.txt added. Documentation on how to
2413 use doc/update_manual.py, added yesterday. Both files contributed
2417 use doc/update_manual.py, added yesterday. Both files contributed
2414 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2418 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2415 doc/*.sh for deprecation at a later date.
2419 doc/*.sh for deprecation at a later date.
2416
2420
2417 * /ipython.py Added ipython.py to root directory for
2421 * /ipython.py Added ipython.py to root directory for
2418 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2422 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2419 ipython.py) and development convenience (no need to keep doing
2423 ipython.py) and development convenience (no need to keep doing
2420 "setup.py install" between changes).
2424 "setup.py install" between changes).
2421
2425
2422 * Made ! and !! shell escapes work (again) in multiline expressions:
2426 * Made ! and !! shell escapes work (again) in multiline expressions:
2423 if 1:
2427 if 1:
2424 !ls
2428 !ls
2425 !!ls
2429 !!ls
2426
2430
2427 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2431 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2428
2432
2429 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2433 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2430 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2434 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2431 module in case-insensitive installation. Was causing crashes
2435 module in case-insensitive installation. Was causing crashes
2432 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2436 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2433
2437
2434 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2438 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2435 <marienz-AT-gentoo.org>, closes
2439 <marienz-AT-gentoo.org>, closes
2436 http://www.scipy.net/roundup/ipython/issue51.
2440 http://www.scipy.net/roundup/ipython/issue51.
2437
2441
2438 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2442 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2439
2443
2440 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2444 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2441 problem of excessive CPU usage under *nix and keyboard lag under
2445 problem of excessive CPU usage under *nix and keyboard lag under
2442 win32.
2446 win32.
2443
2447
2444 2006-01-10 *** Released version 0.7.0
2448 2006-01-10 *** Released version 0.7.0
2445
2449
2446 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2450 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2447
2451
2448 * IPython/Release.py (revision): tag version number to 0.7.0,
2452 * IPython/Release.py (revision): tag version number to 0.7.0,
2449 ready for release.
2453 ready for release.
2450
2454
2451 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2455 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2452 it informs the user of the name of the temp. file used. This can
2456 it informs the user of the name of the temp. file used. This can
2453 help if you decide later to reuse that same file, so you know
2457 help if you decide later to reuse that same file, so you know
2454 where to copy the info from.
2458 where to copy the info from.
2455
2459
2456 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2460 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2457
2461
2458 * setup_bdist_egg.py: little script to build an egg. Added
2462 * setup_bdist_egg.py: little script to build an egg. Added
2459 support in the release tools as well.
2463 support in the release tools as well.
2460
2464
2461 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2465 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2462
2466
2463 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2467 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2464 version selection (new -wxversion command line and ipythonrc
2468 version selection (new -wxversion command line and ipythonrc
2465 parameter). Patch contributed by Arnd Baecker
2469 parameter). Patch contributed by Arnd Baecker
2466 <arnd.baecker-AT-web.de>.
2470 <arnd.baecker-AT-web.de>.
2467
2471
2468 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2472 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2469 embedded instances, for variables defined at the interactive
2473 embedded instances, for variables defined at the interactive
2470 prompt of the embedded ipython. Reported by Arnd.
2474 prompt of the embedded ipython. Reported by Arnd.
2471
2475
2472 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2476 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2473 it can be used as a (stateful) toggle, or with a direct parameter.
2477 it can be used as a (stateful) toggle, or with a direct parameter.
2474
2478
2475 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2479 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2476 could be triggered in certain cases and cause the traceback
2480 could be triggered in certain cases and cause the traceback
2477 printer not to work.
2481 printer not to work.
2478
2482
2479 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2483 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2480
2484
2481 * IPython/iplib.py (_should_recompile): Small fix, closes
2485 * IPython/iplib.py (_should_recompile): Small fix, closes
2482 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2486 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2483
2487
2484 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2488 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2485
2489
2486 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2490 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2487 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2491 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2488 Moad for help with tracking it down.
2492 Moad for help with tracking it down.
2489
2493
2490 * IPython/iplib.py (handle_auto): fix autocall handling for
2494 * IPython/iplib.py (handle_auto): fix autocall handling for
2491 objects which support BOTH __getitem__ and __call__ (so that f [x]
2495 objects which support BOTH __getitem__ and __call__ (so that f [x]
2492 is left alone, instead of becoming f([x]) automatically).
2496 is left alone, instead of becoming f([x]) automatically).
2493
2497
2494 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2498 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2495 Ville's patch.
2499 Ville's patch.
2496
2500
2497 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2501 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2498
2502
2499 * IPython/iplib.py (handle_auto): changed autocall semantics to
2503 * IPython/iplib.py (handle_auto): changed autocall semantics to
2500 include 'smart' mode, where the autocall transformation is NOT
2504 include 'smart' mode, where the autocall transformation is NOT
2501 applied if there are no arguments on the line. This allows you to
2505 applied if there are no arguments on the line. This allows you to
2502 just type 'foo' if foo is a callable to see its internal form,
2506 just type 'foo' if foo is a callable to see its internal form,
2503 instead of having it called with no arguments (typically a
2507 instead of having it called with no arguments (typically a
2504 mistake). The old 'full' autocall still exists: for that, you
2508 mistake). The old 'full' autocall still exists: for that, you
2505 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2509 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2506
2510
2507 * IPython/completer.py (Completer.attr_matches): add
2511 * IPython/completer.py (Completer.attr_matches): add
2508 tab-completion support for Enthoughts' traits. After a report by
2512 tab-completion support for Enthoughts' traits. After a report by
2509 Arnd and a patch by Prabhu.
2513 Arnd and a patch by Prabhu.
2510
2514
2511 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2515 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2512
2516
2513 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2517 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2514 Schmolck's patch to fix inspect.getinnerframes().
2518 Schmolck's patch to fix inspect.getinnerframes().
2515
2519
2516 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2520 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2517 for embedded instances, regarding handling of namespaces and items
2521 for embedded instances, regarding handling of namespaces and items
2518 added to the __builtin__ one. Multiple embedded instances and
2522 added to the __builtin__ one. Multiple embedded instances and
2519 recursive embeddings should work better now (though I'm not sure
2523 recursive embeddings should work better now (though I'm not sure
2520 I've got all the corner cases fixed, that code is a bit of a brain
2524 I've got all the corner cases fixed, that code is a bit of a brain
2521 twister).
2525 twister).
2522
2526
2523 * IPython/Magic.py (magic_edit): added support to edit in-memory
2527 * IPython/Magic.py (magic_edit): added support to edit in-memory
2524 macros (automatically creates the necessary temp files). %edit
2528 macros (automatically creates the necessary temp files). %edit
2525 also doesn't return the file contents anymore, it's just noise.
2529 also doesn't return the file contents anymore, it's just noise.
2526
2530
2527 * IPython/completer.py (Completer.attr_matches): revert change to
2531 * IPython/completer.py (Completer.attr_matches): revert change to
2528 complete only on attributes listed in __all__. I realized it
2532 complete only on attributes listed in __all__. I realized it
2529 cripples the tab-completion system as a tool for exploring the
2533 cripples the tab-completion system as a tool for exploring the
2530 internals of unknown libraries (it renders any non-__all__
2534 internals of unknown libraries (it renders any non-__all__
2531 attribute off-limits). I got bit by this when trying to see
2535 attribute off-limits). I got bit by this when trying to see
2532 something inside the dis module.
2536 something inside the dis module.
2533
2537
2534 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2538 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2535
2539
2536 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2540 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2537 namespace for users and extension writers to hold data in. This
2541 namespace for users and extension writers to hold data in. This
2538 follows the discussion in
2542 follows the discussion in
2539 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2543 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2540
2544
2541 * IPython/completer.py (IPCompleter.complete): small patch to help
2545 * IPython/completer.py (IPCompleter.complete): small patch to help
2542 tab-completion under Emacs, after a suggestion by John Barnard
2546 tab-completion under Emacs, after a suggestion by John Barnard
2543 <barnarj-AT-ccf.org>.
2547 <barnarj-AT-ccf.org>.
2544
2548
2545 * IPython/Magic.py (Magic.extract_input_slices): added support for
2549 * IPython/Magic.py (Magic.extract_input_slices): added support for
2546 the slice notation in magics to use N-M to represent numbers N...M
2550 the slice notation in magics to use N-M to represent numbers N...M
2547 (closed endpoints). This is used by %macro and %save.
2551 (closed endpoints). This is used by %macro and %save.
2548
2552
2549 * IPython/completer.py (Completer.attr_matches): for modules which
2553 * IPython/completer.py (Completer.attr_matches): for modules which
2550 define __all__, complete only on those. After a patch by Jeffrey
2554 define __all__, complete only on those. After a patch by Jeffrey
2551 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2555 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2552 speed up this routine.
2556 speed up this routine.
2553
2557
2554 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2558 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2555 don't know if this is the end of it, but the behavior now is
2559 don't know if this is the end of it, but the behavior now is
2556 certainly much more correct. Note that coupled with macros,
2560 certainly much more correct. Note that coupled with macros,
2557 slightly surprising (at first) behavior may occur: a macro will in
2561 slightly surprising (at first) behavior may occur: a macro will in
2558 general expand to multiple lines of input, so upon exiting, the
2562 general expand to multiple lines of input, so upon exiting, the
2559 in/out counters will both be bumped by the corresponding amount
2563 in/out counters will both be bumped by the corresponding amount
2560 (as if the macro's contents had been typed interactively). Typing
2564 (as if the macro's contents had been typed interactively). Typing
2561 %hist will reveal the intermediate (silently processed) lines.
2565 %hist will reveal the intermediate (silently processed) lines.
2562
2566
2563 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2567 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2564 pickle to fail (%run was overwriting __main__ and not restoring
2568 pickle to fail (%run was overwriting __main__ and not restoring
2565 it, but pickle relies on __main__ to operate).
2569 it, but pickle relies on __main__ to operate).
2566
2570
2567 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2571 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2568 using properties, but forgot to make the main InteractiveShell
2572 using properties, but forgot to make the main InteractiveShell
2569 class a new-style class. Properties fail silently, and
2573 class a new-style class. Properties fail silently, and
2570 mysteriously, with old-style class (getters work, but
2574 mysteriously, with old-style class (getters work, but
2571 setters don't do anything).
2575 setters don't do anything).
2572
2576
2573 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2577 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2574
2578
2575 * IPython/Magic.py (magic_history): fix history reporting bug (I
2579 * IPython/Magic.py (magic_history): fix history reporting bug (I
2576 know some nasties are still there, I just can't seem to find a
2580 know some nasties are still there, I just can't seem to find a
2577 reproducible test case to track them down; the input history is
2581 reproducible test case to track them down; the input history is
2578 falling out of sync...)
2582 falling out of sync...)
2579
2583
2580 * IPython/iplib.py (handle_shell_escape): fix bug where both
2584 * IPython/iplib.py (handle_shell_escape): fix bug where both
2581 aliases and system accesses where broken for indented code (such
2585 aliases and system accesses where broken for indented code (such
2582 as loops).
2586 as loops).
2583
2587
2584 * IPython/genutils.py (shell): fix small but critical bug for
2588 * IPython/genutils.py (shell): fix small but critical bug for
2585 win32 system access.
2589 win32 system access.
2586
2590
2587 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2591 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2588
2592
2589 * IPython/iplib.py (showtraceback): remove use of the
2593 * IPython/iplib.py (showtraceback): remove use of the
2590 sys.last_{type/value/traceback} structures, which are non
2594 sys.last_{type/value/traceback} structures, which are non
2591 thread-safe.
2595 thread-safe.
2592 (_prefilter): change control flow to ensure that we NEVER
2596 (_prefilter): change control flow to ensure that we NEVER
2593 introspect objects when autocall is off. This will guarantee that
2597 introspect objects when autocall is off. This will guarantee that
2594 having an input line of the form 'x.y', where access to attribute
2598 having an input line of the form 'x.y', where access to attribute
2595 'y' has side effects, doesn't trigger the side effect TWICE. It
2599 'y' has side effects, doesn't trigger the side effect TWICE. It
2596 is important to note that, with autocall on, these side effects
2600 is important to note that, with autocall on, these side effects
2597 can still happen.
2601 can still happen.
2598 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2602 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2599 trio. IPython offers these three kinds of special calls which are
2603 trio. IPython offers these three kinds of special calls which are
2600 not python code, and it's a good thing to have their call method
2604 not python code, and it's a good thing to have their call method
2601 be accessible as pure python functions (not just special syntax at
2605 be accessible as pure python functions (not just special syntax at
2602 the command line). It gives us a better internal implementation
2606 the command line). It gives us a better internal implementation
2603 structure, as well as exposing these for user scripting more
2607 structure, as well as exposing these for user scripting more
2604 cleanly.
2608 cleanly.
2605
2609
2606 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2610 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2607 file. Now that they'll be more likely to be used with the
2611 file. Now that they'll be more likely to be used with the
2608 persistance system (%store), I want to make sure their module path
2612 persistance system (%store), I want to make sure their module path
2609 doesn't change in the future, so that we don't break things for
2613 doesn't change in the future, so that we don't break things for
2610 users' persisted data.
2614 users' persisted data.
2611
2615
2612 * IPython/iplib.py (autoindent_update): move indentation
2616 * IPython/iplib.py (autoindent_update): move indentation
2613 management into the _text_ processing loop, not the keyboard
2617 management into the _text_ processing loop, not the keyboard
2614 interactive one. This is necessary to correctly process non-typed
2618 interactive one. This is necessary to correctly process non-typed
2615 multiline input (such as macros).
2619 multiline input (such as macros).
2616
2620
2617 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2621 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2618 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2622 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2619 which was producing problems in the resulting manual.
2623 which was producing problems in the resulting manual.
2620 (magic_whos): improve reporting of instances (show their class,
2624 (magic_whos): improve reporting of instances (show their class,
2621 instead of simply printing 'instance' which isn't terribly
2625 instead of simply printing 'instance' which isn't terribly
2622 informative).
2626 informative).
2623
2627
2624 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2628 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2625 (minor mods) to support network shares under win32.
2629 (minor mods) to support network shares under win32.
2626
2630
2627 * IPython/winconsole.py (get_console_size): add new winconsole
2631 * IPython/winconsole.py (get_console_size): add new winconsole
2628 module and fixes to page_dumb() to improve its behavior under
2632 module and fixes to page_dumb() to improve its behavior under
2629 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2633 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2630
2634
2631 * IPython/Magic.py (Macro): simplified Macro class to just
2635 * IPython/Magic.py (Macro): simplified Macro class to just
2632 subclass list. We've had only 2.2 compatibility for a very long
2636 subclass list. We've had only 2.2 compatibility for a very long
2633 time, yet I was still avoiding subclassing the builtin types. No
2637 time, yet I was still avoiding subclassing the builtin types. No
2634 more (I'm also starting to use properties, though I won't shift to
2638 more (I'm also starting to use properties, though I won't shift to
2635 2.3-specific features quite yet).
2639 2.3-specific features quite yet).
2636 (magic_store): added Ville's patch for lightweight variable
2640 (magic_store): added Ville's patch for lightweight variable
2637 persistence, after a request on the user list by Matt Wilkie
2641 persistence, after a request on the user list by Matt Wilkie
2638 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2642 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2639 details.
2643 details.
2640
2644
2641 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2645 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2642 changed the default logfile name from 'ipython.log' to
2646 changed the default logfile name from 'ipython.log' to
2643 'ipython_log.py'. These logs are real python files, and now that
2647 'ipython_log.py'. These logs are real python files, and now that
2644 we have much better multiline support, people are more likely to
2648 we have much better multiline support, people are more likely to
2645 want to use them as such. Might as well name them correctly.
2649 want to use them as such. Might as well name them correctly.
2646
2650
2647 * IPython/Magic.py: substantial cleanup. While we can't stop
2651 * IPython/Magic.py: substantial cleanup. While we can't stop
2648 using magics as mixins, due to the existing customizations 'out
2652 using magics as mixins, due to the existing customizations 'out
2649 there' which rely on the mixin naming conventions, at least I
2653 there' which rely on the mixin naming conventions, at least I
2650 cleaned out all cross-class name usage. So once we are OK with
2654 cleaned out all cross-class name usage. So once we are OK with
2651 breaking compatibility, the two systems can be separated.
2655 breaking compatibility, the two systems can be separated.
2652
2656
2653 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2657 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2654 anymore, and the class is a fair bit less hideous as well. New
2658 anymore, and the class is a fair bit less hideous as well. New
2655 features were also introduced: timestamping of input, and logging
2659 features were also introduced: timestamping of input, and logging
2656 of output results. These are user-visible with the -t and -o
2660 of output results. These are user-visible with the -t and -o
2657 options to %logstart. Closes
2661 options to %logstart. Closes
2658 http://www.scipy.net/roundup/ipython/issue11 and a request by
2662 http://www.scipy.net/roundup/ipython/issue11 and a request by
2659 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2663 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2660
2664
2661 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2665 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2662
2666
2663 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2667 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2664 better handle backslashes in paths. See the thread 'More Windows
2668 better handle backslashes in paths. See the thread 'More Windows
2665 questions part 2 - \/ characters revisited' on the iypthon user
2669 questions part 2 - \/ characters revisited' on the iypthon user
2666 list:
2670 list:
2667 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2671 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2668
2672
2669 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2673 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2670
2674
2671 (InteractiveShell.__init__): change threaded shells to not use the
2675 (InteractiveShell.__init__): change threaded shells to not use the
2672 ipython crash handler. This was causing more problems than not,
2676 ipython crash handler. This was causing more problems than not,
2673 as exceptions in the main thread (GUI code, typically) would
2677 as exceptions in the main thread (GUI code, typically) would
2674 always show up as a 'crash', when they really weren't.
2678 always show up as a 'crash', when they really weren't.
2675
2679
2676 The colors and exception mode commands (%colors/%xmode) have been
2680 The colors and exception mode commands (%colors/%xmode) have been
2677 synchronized to also take this into account, so users can get
2681 synchronized to also take this into account, so users can get
2678 verbose exceptions for their threaded code as well. I also added
2682 verbose exceptions for their threaded code as well. I also added
2679 support for activating pdb inside this exception handler as well,
2683 support for activating pdb inside this exception handler as well,
2680 so now GUI authors can use IPython's enhanced pdb at runtime.
2684 so now GUI authors can use IPython's enhanced pdb at runtime.
2681
2685
2682 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2686 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2683 true by default, and add it to the shipped ipythonrc file. Since
2687 true by default, and add it to the shipped ipythonrc file. Since
2684 this asks the user before proceeding, I think it's OK to make it
2688 this asks the user before proceeding, I think it's OK to make it
2685 true by default.
2689 true by default.
2686
2690
2687 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2691 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2688 of the previous special-casing of input in the eval loop. I think
2692 of the previous special-casing of input in the eval loop. I think
2689 this is cleaner, as they really are commands and shouldn't have
2693 this is cleaner, as they really are commands and shouldn't have
2690 a special role in the middle of the core code.
2694 a special role in the middle of the core code.
2691
2695
2692 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2696 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2693
2697
2694 * IPython/iplib.py (edit_syntax_error): added support for
2698 * IPython/iplib.py (edit_syntax_error): added support for
2695 automatically reopening the editor if the file had a syntax error
2699 automatically reopening the editor if the file had a syntax error
2696 in it. Thanks to scottt who provided the patch at:
2700 in it. Thanks to scottt who provided the patch at:
2697 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2701 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2698 version committed).
2702 version committed).
2699
2703
2700 * IPython/iplib.py (handle_normal): add suport for multi-line
2704 * IPython/iplib.py (handle_normal): add suport for multi-line
2701 input with emtpy lines. This fixes
2705 input with emtpy lines. This fixes
2702 http://www.scipy.net/roundup/ipython/issue43 and a similar
2706 http://www.scipy.net/roundup/ipython/issue43 and a similar
2703 discussion on the user list.
2707 discussion on the user list.
2704
2708
2705 WARNING: a behavior change is necessarily introduced to support
2709 WARNING: a behavior change is necessarily introduced to support
2706 blank lines: now a single blank line with whitespace does NOT
2710 blank lines: now a single blank line with whitespace does NOT
2707 break the input loop, which means that when autoindent is on, by
2711 break the input loop, which means that when autoindent is on, by
2708 default hitting return on the next (indented) line does NOT exit.
2712 default hitting return on the next (indented) line does NOT exit.
2709
2713
2710 Instead, to exit a multiline input you can either have:
2714 Instead, to exit a multiline input you can either have:
2711
2715
2712 - TWO whitespace lines (just hit return again), or
2716 - TWO whitespace lines (just hit return again), or
2713 - a single whitespace line of a different length than provided
2717 - a single whitespace line of a different length than provided
2714 by the autoindent (add or remove a space).
2718 by the autoindent (add or remove a space).
2715
2719
2716 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2720 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2717 module to better organize all readline-related functionality.
2721 module to better organize all readline-related functionality.
2718 I've deleted FlexCompleter and put all completion clases here.
2722 I've deleted FlexCompleter and put all completion clases here.
2719
2723
2720 * IPython/iplib.py (raw_input): improve indentation management.
2724 * IPython/iplib.py (raw_input): improve indentation management.
2721 It is now possible to paste indented code with autoindent on, and
2725 It is now possible to paste indented code with autoindent on, and
2722 the code is interpreted correctly (though it still looks bad on
2726 the code is interpreted correctly (though it still looks bad on
2723 screen, due to the line-oriented nature of ipython).
2727 screen, due to the line-oriented nature of ipython).
2724 (MagicCompleter.complete): change behavior so that a TAB key on an
2728 (MagicCompleter.complete): change behavior so that a TAB key on an
2725 otherwise empty line actually inserts a tab, instead of completing
2729 otherwise empty line actually inserts a tab, instead of completing
2726 on the entire global namespace. This makes it easier to use the
2730 on the entire global namespace. This makes it easier to use the
2727 TAB key for indentation. After a request by Hans Meine
2731 TAB key for indentation. After a request by Hans Meine
2728 <hans_meine-AT-gmx.net>
2732 <hans_meine-AT-gmx.net>
2729 (_prefilter): add support so that typing plain 'exit' or 'quit'
2733 (_prefilter): add support so that typing plain 'exit' or 'quit'
2730 does a sensible thing. Originally I tried to deviate as little as
2734 does a sensible thing. Originally I tried to deviate as little as
2731 possible from the default python behavior, but even that one may
2735 possible from the default python behavior, but even that one may
2732 change in this direction (thread on python-dev to that effect).
2736 change in this direction (thread on python-dev to that effect).
2733 Regardless, ipython should do the right thing even if CPython's
2737 Regardless, ipython should do the right thing even if CPython's
2734 '>>>' prompt doesn't.
2738 '>>>' prompt doesn't.
2735 (InteractiveShell): removed subclassing code.InteractiveConsole
2739 (InteractiveShell): removed subclassing code.InteractiveConsole
2736 class. By now we'd overridden just about all of its methods: I've
2740 class. By now we'd overridden just about all of its methods: I've
2737 copied the remaining two over, and now ipython is a standalone
2741 copied the remaining two over, and now ipython is a standalone
2738 class. This will provide a clearer picture for the chainsaw
2742 class. This will provide a clearer picture for the chainsaw
2739 branch refactoring.
2743 branch refactoring.
2740
2744
2741 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2745 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2742
2746
2743 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2747 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2744 failures for objects which break when dir() is called on them.
2748 failures for objects which break when dir() is called on them.
2745
2749
2746 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2750 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2747 distinct local and global namespaces in the completer API. This
2751 distinct local and global namespaces in the completer API. This
2748 change allows us to properly handle completion with distinct
2752 change allows us to properly handle completion with distinct
2749 scopes, including in embedded instances (this had never really
2753 scopes, including in embedded instances (this had never really
2750 worked correctly).
2754 worked correctly).
2751
2755
2752 Note: this introduces a change in the constructor for
2756 Note: this introduces a change in the constructor for
2753 MagicCompleter, as a new global_namespace parameter is now the
2757 MagicCompleter, as a new global_namespace parameter is now the
2754 second argument (the others were bumped one position).
2758 second argument (the others were bumped one position).
2755
2759
2756 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2760 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2757
2761
2758 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2762 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2759 embedded instances (which can be done now thanks to Vivian's
2763 embedded instances (which can be done now thanks to Vivian's
2760 frame-handling fixes for pdb).
2764 frame-handling fixes for pdb).
2761 (InteractiveShell.__init__): Fix namespace handling problem in
2765 (InteractiveShell.__init__): Fix namespace handling problem in
2762 embedded instances. We were overwriting __main__ unconditionally,
2766 embedded instances. We were overwriting __main__ unconditionally,
2763 and this should only be done for 'full' (non-embedded) IPython;
2767 and this should only be done for 'full' (non-embedded) IPython;
2764 embedded instances must respect the caller's __main__. Thanks to
2768 embedded instances must respect the caller's __main__. Thanks to
2765 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2769 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2766
2770
2767 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2771 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2768
2772
2769 * setup.py: added download_url to setup(). This registers the
2773 * setup.py: added download_url to setup(). This registers the
2770 download address at PyPI, which is not only useful to humans
2774 download address at PyPI, which is not only useful to humans
2771 browsing the site, but is also picked up by setuptools (the Eggs
2775 browsing the site, but is also picked up by setuptools (the Eggs
2772 machinery). Thanks to Ville and R. Kern for the info/discussion
2776 machinery). Thanks to Ville and R. Kern for the info/discussion
2773 on this.
2777 on this.
2774
2778
2775 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2779 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2776
2780
2777 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2781 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2778 This brings a lot of nice functionality to the pdb mode, which now
2782 This brings a lot of nice functionality to the pdb mode, which now
2779 has tab-completion, syntax highlighting, and better stack handling
2783 has tab-completion, syntax highlighting, and better stack handling
2780 than before. Many thanks to Vivian De Smedt
2784 than before. Many thanks to Vivian De Smedt
2781 <vivian-AT-vdesmedt.com> for the original patches.
2785 <vivian-AT-vdesmedt.com> for the original patches.
2782
2786
2783 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2787 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2784
2788
2785 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2789 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2786 sequence to consistently accept the banner argument. The
2790 sequence to consistently accept the banner argument. The
2787 inconsistency was tripping SAGE, thanks to Gary Zablackis
2791 inconsistency was tripping SAGE, thanks to Gary Zablackis
2788 <gzabl-AT-yahoo.com> for the report.
2792 <gzabl-AT-yahoo.com> for the report.
2789
2793
2790 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2794 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2791
2795
2792 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2796 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2793 Fix bug where a naked 'alias' call in the ipythonrc file would
2797 Fix bug where a naked 'alias' call in the ipythonrc file would
2794 cause a crash. Bug reported by Jorgen Stenarson.
2798 cause a crash. Bug reported by Jorgen Stenarson.
2795
2799
2796 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2800 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2797
2801
2798 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2802 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2799 startup time.
2803 startup time.
2800
2804
2801 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2805 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2802 instances had introduced a bug with globals in normal code. Now
2806 instances had introduced a bug with globals in normal code. Now
2803 it's working in all cases.
2807 it's working in all cases.
2804
2808
2805 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2809 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2806 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2810 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2807 has been introduced to set the default case sensitivity of the
2811 has been introduced to set the default case sensitivity of the
2808 searches. Users can still select either mode at runtime on a
2812 searches. Users can still select either mode at runtime on a
2809 per-search basis.
2813 per-search basis.
2810
2814
2811 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2815 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2812
2816
2813 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2817 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2814 attributes in wildcard searches for subclasses. Modified version
2818 attributes in wildcard searches for subclasses. Modified version
2815 of a patch by Jorgen.
2819 of a patch by Jorgen.
2816
2820
2817 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2821 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2818
2822
2819 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2823 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2820 embedded instances. I added a user_global_ns attribute to the
2824 embedded instances. I added a user_global_ns attribute to the
2821 InteractiveShell class to handle this.
2825 InteractiveShell class to handle this.
2822
2826
2823 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2827 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2824
2828
2825 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2829 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2826 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2830 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2827 (reported under win32, but may happen also in other platforms).
2831 (reported under win32, but may happen also in other platforms).
2828 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2832 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2829
2833
2830 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2834 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2831
2835
2832 * IPython/Magic.py (magic_psearch): new support for wildcard
2836 * IPython/Magic.py (magic_psearch): new support for wildcard
2833 patterns. Now, typing ?a*b will list all names which begin with a
2837 patterns. Now, typing ?a*b will list all names which begin with a
2834 and end in b, for example. The %psearch magic has full
2838 and end in b, for example. The %psearch magic has full
2835 docstrings. Many thanks to JΓΆrgen Stenarson
2839 docstrings. Many thanks to JΓΆrgen Stenarson
2836 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2840 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2837 implementing this functionality.
2841 implementing this functionality.
2838
2842
2839 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2843 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2840
2844
2841 * Manual: fixed long-standing annoyance of double-dashes (as in
2845 * Manual: fixed long-standing annoyance of double-dashes (as in
2842 --prefix=~, for example) being stripped in the HTML version. This
2846 --prefix=~, for example) being stripped in the HTML version. This
2843 is a latex2html bug, but a workaround was provided. Many thanks
2847 is a latex2html bug, but a workaround was provided. Many thanks
2844 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2848 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2845 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2849 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2846 rolling. This seemingly small issue had tripped a number of users
2850 rolling. This seemingly small issue had tripped a number of users
2847 when first installing, so I'm glad to see it gone.
2851 when first installing, so I'm glad to see it gone.
2848
2852
2849 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2853 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2850
2854
2851 * IPython/Extensions/numeric_formats.py: fix missing import,
2855 * IPython/Extensions/numeric_formats.py: fix missing import,
2852 reported by Stephen Walton.
2856 reported by Stephen Walton.
2853
2857
2854 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2858 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2855
2859
2856 * IPython/demo.py: finish demo module, fully documented now.
2860 * IPython/demo.py: finish demo module, fully documented now.
2857
2861
2858 * IPython/genutils.py (file_read): simple little utility to read a
2862 * IPython/genutils.py (file_read): simple little utility to read a
2859 file and ensure it's closed afterwards.
2863 file and ensure it's closed afterwards.
2860
2864
2861 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2865 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2862
2866
2863 * IPython/demo.py (Demo.__init__): added support for individually
2867 * IPython/demo.py (Demo.__init__): added support for individually
2864 tagging blocks for automatic execution.
2868 tagging blocks for automatic execution.
2865
2869
2866 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2870 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2867 syntax-highlighted python sources, requested by John.
2871 syntax-highlighted python sources, requested by John.
2868
2872
2869 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2873 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2870
2874
2871 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2875 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2872 finishing.
2876 finishing.
2873
2877
2874 * IPython/genutils.py (shlex_split): moved from Magic to here,
2878 * IPython/genutils.py (shlex_split): moved from Magic to here,
2875 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2879 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2876
2880
2877 * IPython/demo.py (Demo.__init__): added support for silent
2881 * IPython/demo.py (Demo.__init__): added support for silent
2878 blocks, improved marks as regexps, docstrings written.
2882 blocks, improved marks as regexps, docstrings written.
2879 (Demo.__init__): better docstring, added support for sys.argv.
2883 (Demo.__init__): better docstring, added support for sys.argv.
2880
2884
2881 * IPython/genutils.py (marquee): little utility used by the demo
2885 * IPython/genutils.py (marquee): little utility used by the demo
2882 code, handy in general.
2886 code, handy in general.
2883
2887
2884 * IPython/demo.py (Demo.__init__): new class for interactive
2888 * IPython/demo.py (Demo.__init__): new class for interactive
2885 demos. Not documented yet, I just wrote it in a hurry for
2889 demos. Not documented yet, I just wrote it in a hurry for
2886 scipy'05. Will docstring later.
2890 scipy'05. Will docstring later.
2887
2891
2888 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2892 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2889
2893
2890 * IPython/Shell.py (sigint_handler): Drastic simplification which
2894 * IPython/Shell.py (sigint_handler): Drastic simplification which
2891 also seems to make Ctrl-C work correctly across threads! This is
2895 also seems to make Ctrl-C work correctly across threads! This is
2892 so simple, that I can't beleive I'd missed it before. Needs more
2896 so simple, that I can't beleive I'd missed it before. Needs more
2893 testing, though.
2897 testing, though.
2894 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2898 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2895 like this before...
2899 like this before...
2896
2900
2897 * IPython/genutils.py (get_home_dir): add protection against
2901 * IPython/genutils.py (get_home_dir): add protection against
2898 non-dirs in win32 registry.
2902 non-dirs in win32 registry.
2899
2903
2900 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2904 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2901 bug where dict was mutated while iterating (pysh crash).
2905 bug where dict was mutated while iterating (pysh crash).
2902
2906
2903 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2907 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2904
2908
2905 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2909 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2906 spurious newlines added by this routine. After a report by
2910 spurious newlines added by this routine. After a report by
2907 F. Mantegazza.
2911 F. Mantegazza.
2908
2912
2909 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2913 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2910
2914
2911 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2915 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2912 calls. These were a leftover from the GTK 1.x days, and can cause
2916 calls. These were a leftover from the GTK 1.x days, and can cause
2913 problems in certain cases (after a report by John Hunter).
2917 problems in certain cases (after a report by John Hunter).
2914
2918
2915 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2919 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2916 os.getcwd() fails at init time. Thanks to patch from David Remahl
2920 os.getcwd() fails at init time. Thanks to patch from David Remahl
2917 <chmod007-AT-mac.com>.
2921 <chmod007-AT-mac.com>.
2918 (InteractiveShell.__init__): prevent certain special magics from
2922 (InteractiveShell.__init__): prevent certain special magics from
2919 being shadowed by aliases. Closes
2923 being shadowed by aliases. Closes
2920 http://www.scipy.net/roundup/ipython/issue41.
2924 http://www.scipy.net/roundup/ipython/issue41.
2921
2925
2922 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2926 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2923
2927
2924 * IPython/iplib.py (InteractiveShell.complete): Added new
2928 * IPython/iplib.py (InteractiveShell.complete): Added new
2925 top-level completion method to expose the completion mechanism
2929 top-level completion method to expose the completion mechanism
2926 beyond readline-based environments.
2930 beyond readline-based environments.
2927
2931
2928 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2932 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2929
2933
2930 * tools/ipsvnc (svnversion): fix svnversion capture.
2934 * tools/ipsvnc (svnversion): fix svnversion capture.
2931
2935
2932 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2936 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2933 attribute to self, which was missing. Before, it was set by a
2937 attribute to self, which was missing. Before, it was set by a
2934 routine which in certain cases wasn't being called, so the
2938 routine which in certain cases wasn't being called, so the
2935 instance could end up missing the attribute. This caused a crash.
2939 instance could end up missing the attribute. This caused a crash.
2936 Closes http://www.scipy.net/roundup/ipython/issue40.
2940 Closes http://www.scipy.net/roundup/ipython/issue40.
2937
2941
2938 2005-08-16 Fernando Perez <fperez@colorado.edu>
2942 2005-08-16 Fernando Perez <fperez@colorado.edu>
2939
2943
2940 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2944 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2941 contains non-string attribute. Closes
2945 contains non-string attribute. Closes
2942 http://www.scipy.net/roundup/ipython/issue38.
2946 http://www.scipy.net/roundup/ipython/issue38.
2943
2947
2944 2005-08-14 Fernando Perez <fperez@colorado.edu>
2948 2005-08-14 Fernando Perez <fperez@colorado.edu>
2945
2949
2946 * tools/ipsvnc: Minor improvements, to add changeset info.
2950 * tools/ipsvnc: Minor improvements, to add changeset info.
2947
2951
2948 2005-08-12 Fernando Perez <fperez@colorado.edu>
2952 2005-08-12 Fernando Perez <fperez@colorado.edu>
2949
2953
2950 * IPython/iplib.py (runsource): remove self.code_to_run_src
2954 * IPython/iplib.py (runsource): remove self.code_to_run_src
2951 attribute. I realized this is nothing more than
2955 attribute. I realized this is nothing more than
2952 '\n'.join(self.buffer), and having the same data in two different
2956 '\n'.join(self.buffer), and having the same data in two different
2953 places is just asking for synchronization bugs. This may impact
2957 places is just asking for synchronization bugs. This may impact
2954 people who have custom exception handlers, so I need to warn
2958 people who have custom exception handlers, so I need to warn
2955 ipython-dev about it (F. Mantegazza may use them).
2959 ipython-dev about it (F. Mantegazza may use them).
2956
2960
2957 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2961 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2958
2962
2959 * IPython/genutils.py: fix 2.2 compatibility (generators)
2963 * IPython/genutils.py: fix 2.2 compatibility (generators)
2960
2964
2961 2005-07-18 Fernando Perez <fperez@colorado.edu>
2965 2005-07-18 Fernando Perez <fperez@colorado.edu>
2962
2966
2963 * IPython/genutils.py (get_home_dir): fix to help users with
2967 * IPython/genutils.py (get_home_dir): fix to help users with
2964 invalid $HOME under win32.
2968 invalid $HOME under win32.
2965
2969
2966 2005-07-17 Fernando Perez <fperez@colorado.edu>
2970 2005-07-17 Fernando Perez <fperez@colorado.edu>
2967
2971
2968 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2972 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2969 some old hacks and clean up a bit other routines; code should be
2973 some old hacks and clean up a bit other routines; code should be
2970 simpler and a bit faster.
2974 simpler and a bit faster.
2971
2975
2972 * IPython/iplib.py (interact): removed some last-resort attempts
2976 * IPython/iplib.py (interact): removed some last-resort attempts
2973 to survive broken stdout/stderr. That code was only making it
2977 to survive broken stdout/stderr. That code was only making it
2974 harder to abstract out the i/o (necessary for gui integration),
2978 harder to abstract out the i/o (necessary for gui integration),
2975 and the crashes it could prevent were extremely rare in practice
2979 and the crashes it could prevent were extremely rare in practice
2976 (besides being fully user-induced in a pretty violent manner).
2980 (besides being fully user-induced in a pretty violent manner).
2977
2981
2978 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2982 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2979 Nothing major yet, but the code is simpler to read; this should
2983 Nothing major yet, but the code is simpler to read; this should
2980 make it easier to do more serious modifications in the future.
2984 make it easier to do more serious modifications in the future.
2981
2985
2982 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2986 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2983 which broke in .15 (thanks to a report by Ville).
2987 which broke in .15 (thanks to a report by Ville).
2984
2988
2985 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2989 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2986 be quite correct, I know next to nothing about unicode). This
2990 be quite correct, I know next to nothing about unicode). This
2987 will allow unicode strings to be used in prompts, amongst other
2991 will allow unicode strings to be used in prompts, amongst other
2988 cases. It also will prevent ipython from crashing when unicode
2992 cases. It also will prevent ipython from crashing when unicode
2989 shows up unexpectedly in many places. If ascii encoding fails, we
2993 shows up unexpectedly in many places. If ascii encoding fails, we
2990 assume utf_8. Currently the encoding is not a user-visible
2994 assume utf_8. Currently the encoding is not a user-visible
2991 setting, though it could be made so if there is demand for it.
2995 setting, though it could be made so if there is demand for it.
2992
2996
2993 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2997 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2994
2998
2995 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2999 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2996
3000
2997 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3001 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2998
3002
2999 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3003 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3000 code can work transparently for 2.2/2.3.
3004 code can work transparently for 2.2/2.3.
3001
3005
3002 2005-07-16 Fernando Perez <fperez@colorado.edu>
3006 2005-07-16 Fernando Perez <fperez@colorado.edu>
3003
3007
3004 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3008 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3005 out of the color scheme table used for coloring exception
3009 out of the color scheme table used for coloring exception
3006 tracebacks. This allows user code to add new schemes at runtime.
3010 tracebacks. This allows user code to add new schemes at runtime.
3007 This is a minimally modified version of the patch at
3011 This is a minimally modified version of the patch at
3008 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3012 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3009 for the contribution.
3013 for the contribution.
3010
3014
3011 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3015 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3012 slightly modified version of the patch in
3016 slightly modified version of the patch in
3013 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3017 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3014 to remove the previous try/except solution (which was costlier).
3018 to remove the previous try/except solution (which was costlier).
3015 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3019 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3016
3020
3017 2005-06-08 Fernando Perez <fperez@colorado.edu>
3021 2005-06-08 Fernando Perez <fperez@colorado.edu>
3018
3022
3019 * IPython/iplib.py (write/write_err): Add methods to abstract all
3023 * IPython/iplib.py (write/write_err): Add methods to abstract all
3020 I/O a bit more.
3024 I/O a bit more.
3021
3025
3022 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3026 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3023 warning, reported by Aric Hagberg, fix by JD Hunter.
3027 warning, reported by Aric Hagberg, fix by JD Hunter.
3024
3028
3025 2005-06-02 *** Released version 0.6.15
3029 2005-06-02 *** Released version 0.6.15
3026
3030
3027 2005-06-01 Fernando Perez <fperez@colorado.edu>
3031 2005-06-01 Fernando Perez <fperez@colorado.edu>
3028
3032
3029 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3033 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3030 tab-completion of filenames within open-quoted strings. Note that
3034 tab-completion of filenames within open-quoted strings. Note that
3031 this requires that in ~/.ipython/ipythonrc, users change the
3035 this requires that in ~/.ipython/ipythonrc, users change the
3032 readline delimiters configuration to read:
3036 readline delimiters configuration to read:
3033
3037
3034 readline_remove_delims -/~
3038 readline_remove_delims -/~
3035
3039
3036
3040
3037 2005-05-31 *** Released version 0.6.14
3041 2005-05-31 *** Released version 0.6.14
3038
3042
3039 2005-05-29 Fernando Perez <fperez@colorado.edu>
3043 2005-05-29 Fernando Perez <fperez@colorado.edu>
3040
3044
3041 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3045 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3042 with files not on the filesystem. Reported by Eliyahu Sandler
3046 with files not on the filesystem. Reported by Eliyahu Sandler
3043 <eli@gondolin.net>
3047 <eli@gondolin.net>
3044
3048
3045 2005-05-22 Fernando Perez <fperez@colorado.edu>
3049 2005-05-22 Fernando Perez <fperez@colorado.edu>
3046
3050
3047 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3051 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3048 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3052 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3049
3053
3050 2005-05-19 Fernando Perez <fperez@colorado.edu>
3054 2005-05-19 Fernando Perez <fperez@colorado.edu>
3051
3055
3052 * IPython/iplib.py (safe_execfile): close a file which could be
3056 * IPython/iplib.py (safe_execfile): close a file which could be
3053 left open (causing problems in win32, which locks open files).
3057 left open (causing problems in win32, which locks open files).
3054 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3058 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3055
3059
3056 2005-05-18 Fernando Perez <fperez@colorado.edu>
3060 2005-05-18 Fernando Perez <fperez@colorado.edu>
3057
3061
3058 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3062 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3059 keyword arguments correctly to safe_execfile().
3063 keyword arguments correctly to safe_execfile().
3060
3064
3061 2005-05-13 Fernando Perez <fperez@colorado.edu>
3065 2005-05-13 Fernando Perez <fperez@colorado.edu>
3062
3066
3063 * ipython.1: Added info about Qt to manpage, and threads warning
3067 * ipython.1: Added info about Qt to manpage, and threads warning
3064 to usage page (invoked with --help).
3068 to usage page (invoked with --help).
3065
3069
3066 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3070 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3067 new matcher (it goes at the end of the priority list) to do
3071 new matcher (it goes at the end of the priority list) to do
3068 tab-completion on named function arguments. Submitted by George
3072 tab-completion on named function arguments. Submitted by George
3069 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3073 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3070 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3074 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3071 for more details.
3075 for more details.
3072
3076
3073 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3077 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3074 SystemExit exceptions in the script being run. Thanks to a report
3078 SystemExit exceptions in the script being run. Thanks to a report
3075 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3079 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3076 producing very annoying behavior when running unit tests.
3080 producing very annoying behavior when running unit tests.
3077
3081
3078 2005-05-12 Fernando Perez <fperez@colorado.edu>
3082 2005-05-12 Fernando Perez <fperez@colorado.edu>
3079
3083
3080 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3084 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3081 which I'd broken (again) due to a changed regexp. In the process,
3085 which I'd broken (again) due to a changed regexp. In the process,
3082 added ';' as an escape to auto-quote the whole line without
3086 added ';' as an escape to auto-quote the whole line without
3083 splitting its arguments. Thanks to a report by Jerry McRae
3087 splitting its arguments. Thanks to a report by Jerry McRae
3084 <qrs0xyc02-AT-sneakemail.com>.
3088 <qrs0xyc02-AT-sneakemail.com>.
3085
3089
3086 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3090 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3087 possible crashes caused by a TokenError. Reported by Ed Schofield
3091 possible crashes caused by a TokenError. Reported by Ed Schofield
3088 <schofield-AT-ftw.at>.
3092 <schofield-AT-ftw.at>.
3089
3093
3090 2005-05-06 Fernando Perez <fperez@colorado.edu>
3094 2005-05-06 Fernando Perez <fperez@colorado.edu>
3091
3095
3092 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3096 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3093
3097
3094 2005-04-29 Fernando Perez <fperez@colorado.edu>
3098 2005-04-29 Fernando Perez <fperez@colorado.edu>
3095
3099
3096 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3100 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3097 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3101 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3098 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3102 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3099 which provides support for Qt interactive usage (similar to the
3103 which provides support for Qt interactive usage (similar to the
3100 existing one for WX and GTK). This had been often requested.
3104 existing one for WX and GTK). This had been often requested.
3101
3105
3102 2005-04-14 *** Released version 0.6.13
3106 2005-04-14 *** Released version 0.6.13
3103
3107
3104 2005-04-08 Fernando Perez <fperez@colorado.edu>
3108 2005-04-08 Fernando Perez <fperez@colorado.edu>
3105
3109
3106 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3110 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3107 from _ofind, which gets called on almost every input line. Now,
3111 from _ofind, which gets called on almost every input line. Now,
3108 we only try to get docstrings if they are actually going to be
3112 we only try to get docstrings if they are actually going to be
3109 used (the overhead of fetching unnecessary docstrings can be
3113 used (the overhead of fetching unnecessary docstrings can be
3110 noticeable for certain objects, such as Pyro proxies).
3114 noticeable for certain objects, such as Pyro proxies).
3111
3115
3112 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3116 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3113 for completers. For some reason I had been passing them the state
3117 for completers. For some reason I had been passing them the state
3114 variable, which completers never actually need, and was in
3118 variable, which completers never actually need, and was in
3115 conflict with the rlcompleter API. Custom completers ONLY need to
3119 conflict with the rlcompleter API. Custom completers ONLY need to
3116 take the text parameter.
3120 take the text parameter.
3117
3121
3118 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3122 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3119 work correctly in pysh. I've also moved all the logic which used
3123 work correctly in pysh. I've also moved all the logic which used
3120 to be in pysh.py here, which will prevent problems with future
3124 to be in pysh.py here, which will prevent problems with future
3121 upgrades. However, this time I must warn users to update their
3125 upgrades. However, this time I must warn users to update their
3122 pysh profile to include the line
3126 pysh profile to include the line
3123
3127
3124 import_all IPython.Extensions.InterpreterExec
3128 import_all IPython.Extensions.InterpreterExec
3125
3129
3126 because otherwise things won't work for them. They MUST also
3130 because otherwise things won't work for them. They MUST also
3127 delete pysh.py and the line
3131 delete pysh.py and the line
3128
3132
3129 execfile pysh.py
3133 execfile pysh.py
3130
3134
3131 from their ipythonrc-pysh.
3135 from their ipythonrc-pysh.
3132
3136
3133 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3137 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3134 robust in the face of objects whose dir() returns non-strings
3138 robust in the face of objects whose dir() returns non-strings
3135 (which it shouldn't, but some broken libs like ITK do). Thanks to
3139 (which it shouldn't, but some broken libs like ITK do). Thanks to
3136 a patch by John Hunter (implemented differently, though). Also
3140 a patch by John Hunter (implemented differently, though). Also
3137 minor improvements by using .extend instead of + on lists.
3141 minor improvements by using .extend instead of + on lists.
3138
3142
3139 * pysh.py:
3143 * pysh.py:
3140
3144
3141 2005-04-06 Fernando Perez <fperez@colorado.edu>
3145 2005-04-06 Fernando Perez <fperez@colorado.edu>
3142
3146
3143 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3147 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3144 by default, so that all users benefit from it. Those who don't
3148 by default, so that all users benefit from it. Those who don't
3145 want it can still turn it off.
3149 want it can still turn it off.
3146
3150
3147 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3151 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3148 config file, I'd forgotten about this, so users were getting it
3152 config file, I'd forgotten about this, so users were getting it
3149 off by default.
3153 off by default.
3150
3154
3151 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3155 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3152 consistency. Now magics can be called in multiline statements,
3156 consistency. Now magics can be called in multiline statements,
3153 and python variables can be expanded in magic calls via $var.
3157 and python variables can be expanded in magic calls via $var.
3154 This makes the magic system behave just like aliases or !system
3158 This makes the magic system behave just like aliases or !system
3155 calls.
3159 calls.
3156
3160
3157 2005-03-28 Fernando Perez <fperez@colorado.edu>
3161 2005-03-28 Fernando Perez <fperez@colorado.edu>
3158
3162
3159 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3163 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3160 expensive string additions for building command. Add support for
3164 expensive string additions for building command. Add support for
3161 trailing ';' when autocall is used.
3165 trailing ';' when autocall is used.
3162
3166
3163 2005-03-26 Fernando Perez <fperez@colorado.edu>
3167 2005-03-26 Fernando Perez <fperez@colorado.edu>
3164
3168
3165 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3169 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3166 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3170 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3167 ipython.el robust against prompts with any number of spaces
3171 ipython.el robust against prompts with any number of spaces
3168 (including 0) after the ':' character.
3172 (including 0) after the ':' character.
3169
3173
3170 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3174 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3171 continuation prompt, which misled users to think the line was
3175 continuation prompt, which misled users to think the line was
3172 already indented. Closes debian Bug#300847, reported to me by
3176 already indented. Closes debian Bug#300847, reported to me by
3173 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3177 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3174
3178
3175 2005-03-23 Fernando Perez <fperez@colorado.edu>
3179 2005-03-23 Fernando Perez <fperez@colorado.edu>
3176
3180
3177 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3181 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3178 properly aligned if they have embedded newlines.
3182 properly aligned if they have embedded newlines.
3179
3183
3180 * IPython/iplib.py (runlines): Add a public method to expose
3184 * IPython/iplib.py (runlines): Add a public method to expose
3181 IPython's code execution machinery, so that users can run strings
3185 IPython's code execution machinery, so that users can run strings
3182 as if they had been typed at the prompt interactively.
3186 as if they had been typed at the prompt interactively.
3183 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3187 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3184 methods which can call the system shell, but with python variable
3188 methods which can call the system shell, but with python variable
3185 expansion. The three such methods are: __IPYTHON__.system,
3189 expansion. The three such methods are: __IPYTHON__.system,
3186 .getoutput and .getoutputerror. These need to be documented in a
3190 .getoutput and .getoutputerror. These need to be documented in a
3187 'public API' section (to be written) of the manual.
3191 'public API' section (to be written) of the manual.
3188
3192
3189 2005-03-20 Fernando Perez <fperez@colorado.edu>
3193 2005-03-20 Fernando Perez <fperez@colorado.edu>
3190
3194
3191 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3195 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3192 for custom exception handling. This is quite powerful, and it
3196 for custom exception handling. This is quite powerful, and it
3193 allows for user-installable exception handlers which can trap
3197 allows for user-installable exception handlers which can trap
3194 custom exceptions at runtime and treat them separately from
3198 custom exceptions at runtime and treat them separately from
3195 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3199 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3196 Mantegazza <mantegazza-AT-ill.fr>.
3200 Mantegazza <mantegazza-AT-ill.fr>.
3197 (InteractiveShell.set_custom_completer): public API function to
3201 (InteractiveShell.set_custom_completer): public API function to
3198 add new completers at runtime.
3202 add new completers at runtime.
3199
3203
3200 2005-03-19 Fernando Perez <fperez@colorado.edu>
3204 2005-03-19 Fernando Perez <fperez@colorado.edu>
3201
3205
3202 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3206 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3203 allow objects which provide their docstrings via non-standard
3207 allow objects which provide their docstrings via non-standard
3204 mechanisms (like Pyro proxies) to still be inspected by ipython's
3208 mechanisms (like Pyro proxies) to still be inspected by ipython's
3205 ? system.
3209 ? system.
3206
3210
3207 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3211 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3208 automatic capture system. I tried quite hard to make it work
3212 automatic capture system. I tried quite hard to make it work
3209 reliably, and simply failed. I tried many combinations with the
3213 reliably, and simply failed. I tried many combinations with the
3210 subprocess module, but eventually nothing worked in all needed
3214 subprocess module, but eventually nothing worked in all needed
3211 cases (not blocking stdin for the child, duplicating stdout
3215 cases (not blocking stdin for the child, duplicating stdout
3212 without blocking, etc). The new %sc/%sx still do capture to these
3216 without blocking, etc). The new %sc/%sx still do capture to these
3213 magical list/string objects which make shell use much more
3217 magical list/string objects which make shell use much more
3214 conveninent, so not all is lost.
3218 conveninent, so not all is lost.
3215
3219
3216 XXX - FIX MANUAL for the change above!
3220 XXX - FIX MANUAL for the change above!
3217
3221
3218 (runsource): I copied code.py's runsource() into ipython to modify
3222 (runsource): I copied code.py's runsource() into ipython to modify
3219 it a bit. Now the code object and source to be executed are
3223 it a bit. Now the code object and source to be executed are
3220 stored in ipython. This makes this info accessible to third-party
3224 stored in ipython. This makes this info accessible to third-party
3221 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3225 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3222 Mantegazza <mantegazza-AT-ill.fr>.
3226 Mantegazza <mantegazza-AT-ill.fr>.
3223
3227
3224 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3228 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3225 history-search via readline (like C-p/C-n). I'd wanted this for a
3229 history-search via readline (like C-p/C-n). I'd wanted this for a
3226 long time, but only recently found out how to do it. For users
3230 long time, but only recently found out how to do it. For users
3227 who already have their ipythonrc files made and want this, just
3231 who already have their ipythonrc files made and want this, just
3228 add:
3232 add:
3229
3233
3230 readline_parse_and_bind "\e[A": history-search-backward
3234 readline_parse_and_bind "\e[A": history-search-backward
3231 readline_parse_and_bind "\e[B": history-search-forward
3235 readline_parse_and_bind "\e[B": history-search-forward
3232
3236
3233 2005-03-18 Fernando Perez <fperez@colorado.edu>
3237 2005-03-18 Fernando Perez <fperez@colorado.edu>
3234
3238
3235 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3239 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3236 LSString and SList classes which allow transparent conversions
3240 LSString and SList classes which allow transparent conversions
3237 between list mode and whitespace-separated string.
3241 between list mode and whitespace-separated string.
3238 (magic_r): Fix recursion problem in %r.
3242 (magic_r): Fix recursion problem in %r.
3239
3243
3240 * IPython/genutils.py (LSString): New class to be used for
3244 * IPython/genutils.py (LSString): New class to be used for
3241 automatic storage of the results of all alias/system calls in _o
3245 automatic storage of the results of all alias/system calls in _o
3242 and _e (stdout/err). These provide a .l/.list attribute which
3246 and _e (stdout/err). These provide a .l/.list attribute which
3243 does automatic splitting on newlines. This means that for most
3247 does automatic splitting on newlines. This means that for most
3244 uses, you'll never need to do capturing of output with %sc/%sx
3248 uses, you'll never need to do capturing of output with %sc/%sx
3245 anymore, since ipython keeps this always done for you. Note that
3249 anymore, since ipython keeps this always done for you. Note that
3246 only the LAST results are stored, the _o/e variables are
3250 only the LAST results are stored, the _o/e variables are
3247 overwritten on each call. If you need to save their contents
3251 overwritten on each call. If you need to save their contents
3248 further, simply bind them to any other name.
3252 further, simply bind them to any other name.
3249
3253
3250 2005-03-17 Fernando Perez <fperez@colorado.edu>
3254 2005-03-17 Fernando Perez <fperez@colorado.edu>
3251
3255
3252 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3256 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3253 prompt namespace handling.
3257 prompt namespace handling.
3254
3258
3255 2005-03-16 Fernando Perez <fperez@colorado.edu>
3259 2005-03-16 Fernando Perez <fperez@colorado.edu>
3256
3260
3257 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3261 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3258 classic prompts to be '>>> ' (final space was missing, and it
3262 classic prompts to be '>>> ' (final space was missing, and it
3259 trips the emacs python mode).
3263 trips the emacs python mode).
3260 (BasePrompt.__str__): Added safe support for dynamic prompt
3264 (BasePrompt.__str__): Added safe support for dynamic prompt
3261 strings. Now you can set your prompt string to be '$x', and the
3265 strings. Now you can set your prompt string to be '$x', and the
3262 value of x will be printed from your interactive namespace. The
3266 value of x will be printed from your interactive namespace. The
3263 interpolation syntax includes the full Itpl support, so
3267 interpolation syntax includes the full Itpl support, so
3264 ${foo()+x+bar()} is a valid prompt string now, and the function
3268 ${foo()+x+bar()} is a valid prompt string now, and the function
3265 calls will be made at runtime.
3269 calls will be made at runtime.
3266
3270
3267 2005-03-15 Fernando Perez <fperez@colorado.edu>
3271 2005-03-15 Fernando Perez <fperez@colorado.edu>
3268
3272
3269 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3273 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3270 avoid name clashes in pylab. %hist still works, it just forwards
3274 avoid name clashes in pylab. %hist still works, it just forwards
3271 the call to %history.
3275 the call to %history.
3272
3276
3273 2005-03-02 *** Released version 0.6.12
3277 2005-03-02 *** Released version 0.6.12
3274
3278
3275 2005-03-02 Fernando Perez <fperez@colorado.edu>
3279 2005-03-02 Fernando Perez <fperez@colorado.edu>
3276
3280
3277 * IPython/iplib.py (handle_magic): log magic calls properly as
3281 * IPython/iplib.py (handle_magic): log magic calls properly as
3278 ipmagic() function calls.
3282 ipmagic() function calls.
3279
3283
3280 * IPython/Magic.py (magic_time): Improved %time to support
3284 * IPython/Magic.py (magic_time): Improved %time to support
3281 statements and provide wall-clock as well as CPU time.
3285 statements and provide wall-clock as well as CPU time.
3282
3286
3283 2005-02-27 Fernando Perez <fperez@colorado.edu>
3287 2005-02-27 Fernando Perez <fperez@colorado.edu>
3284
3288
3285 * IPython/hooks.py: New hooks module, to expose user-modifiable
3289 * IPython/hooks.py: New hooks module, to expose user-modifiable
3286 IPython functionality in a clean manner. For now only the editor
3290 IPython functionality in a clean manner. For now only the editor
3287 hook is actually written, and other thigns which I intend to turn
3291 hook is actually written, and other thigns which I intend to turn
3288 into proper hooks aren't yet there. The display and prefilter
3292 into proper hooks aren't yet there. The display and prefilter
3289 stuff, for example, should be hooks. But at least now the
3293 stuff, for example, should be hooks. But at least now the
3290 framework is in place, and the rest can be moved here with more
3294 framework is in place, and the rest can be moved here with more
3291 time later. IPython had had a .hooks variable for a long time for
3295 time later. IPython had had a .hooks variable for a long time for
3292 this purpose, but I'd never actually used it for anything.
3296 this purpose, but I'd never actually used it for anything.
3293
3297
3294 2005-02-26 Fernando Perez <fperez@colorado.edu>
3298 2005-02-26 Fernando Perez <fperez@colorado.edu>
3295
3299
3296 * IPython/ipmaker.py (make_IPython): make the default ipython
3300 * IPython/ipmaker.py (make_IPython): make the default ipython
3297 directory be called _ipython under win32, to follow more the
3301 directory be called _ipython under win32, to follow more the
3298 naming peculiarities of that platform (where buggy software like
3302 naming peculiarities of that platform (where buggy software like
3299 Visual Sourcesafe breaks with .named directories). Reported by
3303 Visual Sourcesafe breaks with .named directories). Reported by
3300 Ville Vainio.
3304 Ville Vainio.
3301
3305
3302 2005-02-23 Fernando Perez <fperez@colorado.edu>
3306 2005-02-23 Fernando Perez <fperez@colorado.edu>
3303
3307
3304 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3308 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3305 auto_aliases for win32 which were causing problems. Users can
3309 auto_aliases for win32 which were causing problems. Users can
3306 define the ones they personally like.
3310 define the ones they personally like.
3307
3311
3308 2005-02-21 Fernando Perez <fperez@colorado.edu>
3312 2005-02-21 Fernando Perez <fperez@colorado.edu>
3309
3313
3310 * IPython/Magic.py (magic_time): new magic to time execution of
3314 * IPython/Magic.py (magic_time): new magic to time execution of
3311 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3315 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3312
3316
3313 2005-02-19 Fernando Perez <fperez@colorado.edu>
3317 2005-02-19 Fernando Perez <fperez@colorado.edu>
3314
3318
3315 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3319 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3316 into keys (for prompts, for example).
3320 into keys (for prompts, for example).
3317
3321
3318 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3322 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3319 prompts in case users want them. This introduces a small behavior
3323 prompts in case users want them. This introduces a small behavior
3320 change: ipython does not automatically add a space to all prompts
3324 change: ipython does not automatically add a space to all prompts
3321 anymore. To get the old prompts with a space, users should add it
3325 anymore. To get the old prompts with a space, users should add it
3322 manually to their ipythonrc file, so for example prompt_in1 should
3326 manually to their ipythonrc file, so for example prompt_in1 should
3323 now read 'In [\#]: ' instead of 'In [\#]:'.
3327 now read 'In [\#]: ' instead of 'In [\#]:'.
3324 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3328 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3325 file) to control left-padding of secondary prompts.
3329 file) to control left-padding of secondary prompts.
3326
3330
3327 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3331 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3328 the profiler can't be imported. Fix for Debian, which removed
3332 the profiler can't be imported. Fix for Debian, which removed
3329 profile.py because of License issues. I applied a slightly
3333 profile.py because of License issues. I applied a slightly
3330 modified version of the original Debian patch at
3334 modified version of the original Debian patch at
3331 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3335 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3332
3336
3333 2005-02-17 Fernando Perez <fperez@colorado.edu>
3337 2005-02-17 Fernando Perez <fperez@colorado.edu>
3334
3338
3335 * IPython/genutils.py (native_line_ends): Fix bug which would
3339 * IPython/genutils.py (native_line_ends): Fix bug which would
3336 cause improper line-ends under win32 b/c I was not opening files
3340 cause improper line-ends under win32 b/c I was not opening files
3337 in binary mode. Bug report and fix thanks to Ville.
3341 in binary mode. Bug report and fix thanks to Ville.
3338
3342
3339 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3343 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3340 trying to catch spurious foo[1] autocalls. My fix actually broke
3344 trying to catch spurious foo[1] autocalls. My fix actually broke
3341 ',/' autoquote/call with explicit escape (bad regexp).
3345 ',/' autoquote/call with explicit escape (bad regexp).
3342
3346
3343 2005-02-15 *** Released version 0.6.11
3347 2005-02-15 *** Released version 0.6.11
3344
3348
3345 2005-02-14 Fernando Perez <fperez@colorado.edu>
3349 2005-02-14 Fernando Perez <fperez@colorado.edu>
3346
3350
3347 * IPython/background_jobs.py: New background job management
3351 * IPython/background_jobs.py: New background job management
3348 subsystem. This is implemented via a new set of classes, and
3352 subsystem. This is implemented via a new set of classes, and
3349 IPython now provides a builtin 'jobs' object for background job
3353 IPython now provides a builtin 'jobs' object for background job
3350 execution. A convenience %bg magic serves as a lightweight
3354 execution. A convenience %bg magic serves as a lightweight
3351 frontend for starting the more common type of calls. This was
3355 frontend for starting the more common type of calls. This was
3352 inspired by discussions with B. Granger and the BackgroundCommand
3356 inspired by discussions with B. Granger and the BackgroundCommand
3353 class described in the book Python Scripting for Computational
3357 class described in the book Python Scripting for Computational
3354 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3358 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3355 (although ultimately no code from this text was used, as IPython's
3359 (although ultimately no code from this text was used, as IPython's
3356 system is a separate implementation).
3360 system is a separate implementation).
3357
3361
3358 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3362 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3359 to control the completion of single/double underscore names
3363 to control the completion of single/double underscore names
3360 separately. As documented in the example ipytonrc file, the
3364 separately. As documented in the example ipytonrc file, the
3361 readline_omit__names variable can now be set to 2, to omit even
3365 readline_omit__names variable can now be set to 2, to omit even
3362 single underscore names. Thanks to a patch by Brian Wong
3366 single underscore names. Thanks to a patch by Brian Wong
3363 <BrianWong-AT-AirgoNetworks.Com>.
3367 <BrianWong-AT-AirgoNetworks.Com>.
3364 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3368 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3365 be autocalled as foo([1]) if foo were callable. A problem for
3369 be autocalled as foo([1]) if foo were callable. A problem for
3366 things which are both callable and implement __getitem__.
3370 things which are both callable and implement __getitem__.
3367 (init_readline): Fix autoindentation for win32. Thanks to a patch
3371 (init_readline): Fix autoindentation for win32. Thanks to a patch
3368 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3372 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3369
3373
3370 2005-02-12 Fernando Perez <fperez@colorado.edu>
3374 2005-02-12 Fernando Perez <fperez@colorado.edu>
3371
3375
3372 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3376 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3373 which I had written long ago to sort out user error messages which
3377 which I had written long ago to sort out user error messages which
3374 may occur during startup. This seemed like a good idea initially,
3378 may occur during startup. This seemed like a good idea initially,
3375 but it has proven a disaster in retrospect. I don't want to
3379 but it has proven a disaster in retrospect. I don't want to
3376 change much code for now, so my fix is to set the internal 'debug'
3380 change much code for now, so my fix is to set the internal 'debug'
3377 flag to true everywhere, whose only job was precisely to control
3381 flag to true everywhere, whose only job was precisely to control
3378 this subsystem. This closes issue 28 (as well as avoiding all
3382 this subsystem. This closes issue 28 (as well as avoiding all
3379 sorts of strange hangups which occur from time to time).
3383 sorts of strange hangups which occur from time to time).
3380
3384
3381 2005-02-07 Fernando Perez <fperez@colorado.edu>
3385 2005-02-07 Fernando Perez <fperez@colorado.edu>
3382
3386
3383 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3387 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3384 previous call produced a syntax error.
3388 previous call produced a syntax error.
3385
3389
3386 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3390 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3387 classes without constructor.
3391 classes without constructor.
3388
3392
3389 2005-02-06 Fernando Perez <fperez@colorado.edu>
3393 2005-02-06 Fernando Perez <fperez@colorado.edu>
3390
3394
3391 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3395 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3392 completions with the results of each matcher, so we return results
3396 completions with the results of each matcher, so we return results
3393 to the user from all namespaces. This breaks with ipython
3397 to the user from all namespaces. This breaks with ipython
3394 tradition, but I think it's a nicer behavior. Now you get all
3398 tradition, but I think it's a nicer behavior. Now you get all
3395 possible completions listed, from all possible namespaces (python,
3399 possible completions listed, from all possible namespaces (python,
3396 filesystem, magics...) After a request by John Hunter
3400 filesystem, magics...) After a request by John Hunter
3397 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3401 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3398
3402
3399 2005-02-05 Fernando Perez <fperez@colorado.edu>
3403 2005-02-05 Fernando Perez <fperez@colorado.edu>
3400
3404
3401 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3405 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3402 the call had quote characters in it (the quotes were stripped).
3406 the call had quote characters in it (the quotes were stripped).
3403
3407
3404 2005-01-31 Fernando Perez <fperez@colorado.edu>
3408 2005-01-31 Fernando Perez <fperez@colorado.edu>
3405
3409
3406 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3410 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3407 Itpl.itpl() to make the code more robust against psyco
3411 Itpl.itpl() to make the code more robust against psyco
3408 optimizations.
3412 optimizations.
3409
3413
3410 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3414 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3411 of causing an exception. Quicker, cleaner.
3415 of causing an exception. Quicker, cleaner.
3412
3416
3413 2005-01-28 Fernando Perez <fperez@colorado.edu>
3417 2005-01-28 Fernando Perez <fperez@colorado.edu>
3414
3418
3415 * scripts/ipython_win_post_install.py (install): hardcode
3419 * scripts/ipython_win_post_install.py (install): hardcode
3416 sys.prefix+'python.exe' as the executable path. It turns out that
3420 sys.prefix+'python.exe' as the executable path. It turns out that
3417 during the post-installation run, sys.executable resolves to the
3421 during the post-installation run, sys.executable resolves to the
3418 name of the binary installer! I should report this as a distutils
3422 name of the binary installer! I should report this as a distutils
3419 bug, I think. I updated the .10 release with this tiny fix, to
3423 bug, I think. I updated the .10 release with this tiny fix, to
3420 avoid annoying the lists further.
3424 avoid annoying the lists further.
3421
3425
3422 2005-01-27 *** Released version 0.6.10
3426 2005-01-27 *** Released version 0.6.10
3423
3427
3424 2005-01-27 Fernando Perez <fperez@colorado.edu>
3428 2005-01-27 Fernando Perez <fperez@colorado.edu>
3425
3429
3426 * IPython/numutils.py (norm): Added 'inf' as optional name for
3430 * IPython/numutils.py (norm): Added 'inf' as optional name for
3427 L-infinity norm, included references to mathworld.com for vector
3431 L-infinity norm, included references to mathworld.com for vector
3428 norm definitions.
3432 norm definitions.
3429 (amin/amax): added amin/amax for array min/max. Similar to what
3433 (amin/amax): added amin/amax for array min/max. Similar to what
3430 pylab ships with after the recent reorganization of names.
3434 pylab ships with after the recent reorganization of names.
3431 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3435 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3432
3436
3433 * ipython.el: committed Alex's recent fixes and improvements.
3437 * ipython.el: committed Alex's recent fixes and improvements.
3434 Tested with python-mode from CVS, and it looks excellent. Since
3438 Tested with python-mode from CVS, and it looks excellent. Since
3435 python-mode hasn't released anything in a while, I'm temporarily
3439 python-mode hasn't released anything in a while, I'm temporarily
3436 putting a copy of today's CVS (v 4.70) of python-mode in:
3440 putting a copy of today's CVS (v 4.70) of python-mode in:
3437 http://ipython.scipy.org/tmp/python-mode.el
3441 http://ipython.scipy.org/tmp/python-mode.el
3438
3442
3439 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3443 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3440 sys.executable for the executable name, instead of assuming it's
3444 sys.executable for the executable name, instead of assuming it's
3441 called 'python.exe' (the post-installer would have produced broken
3445 called 'python.exe' (the post-installer would have produced broken
3442 setups on systems with a differently named python binary).
3446 setups on systems with a differently named python binary).
3443
3447
3444 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3448 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3445 references to os.linesep, to make the code more
3449 references to os.linesep, to make the code more
3446 platform-independent. This is also part of the win32 coloring
3450 platform-independent. This is also part of the win32 coloring
3447 fixes.
3451 fixes.
3448
3452
3449 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3453 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3450 lines, which actually cause coloring bugs because the length of
3454 lines, which actually cause coloring bugs because the length of
3451 the line is very difficult to correctly compute with embedded
3455 the line is very difficult to correctly compute with embedded
3452 escapes. This was the source of all the coloring problems under
3456 escapes. This was the source of all the coloring problems under
3453 Win32. I think that _finally_, Win32 users have a properly
3457 Win32. I think that _finally_, Win32 users have a properly
3454 working ipython in all respects. This would never have happened
3458 working ipython in all respects. This would never have happened
3455 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3459 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3456
3460
3457 2005-01-26 *** Released version 0.6.9
3461 2005-01-26 *** Released version 0.6.9
3458
3462
3459 2005-01-25 Fernando Perez <fperez@colorado.edu>
3463 2005-01-25 Fernando Perez <fperez@colorado.edu>
3460
3464
3461 * setup.py: finally, we have a true Windows installer, thanks to
3465 * setup.py: finally, we have a true Windows installer, thanks to
3462 the excellent work of Viktor Ransmayr
3466 the excellent work of Viktor Ransmayr
3463 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3467 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3464 Windows users. The setup routine is quite a bit cleaner thanks to
3468 Windows users. The setup routine is quite a bit cleaner thanks to
3465 this, and the post-install script uses the proper functions to
3469 this, and the post-install script uses the proper functions to
3466 allow a clean de-installation using the standard Windows Control
3470 allow a clean de-installation using the standard Windows Control
3467 Panel.
3471 Panel.
3468
3472
3469 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3473 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3470 environment variable under all OSes (including win32) if
3474 environment variable under all OSes (including win32) if
3471 available. This will give consistency to win32 users who have set
3475 available. This will give consistency to win32 users who have set
3472 this variable for any reason. If os.environ['HOME'] fails, the
3476 this variable for any reason. If os.environ['HOME'] fails, the
3473 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3477 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3474
3478
3475 2005-01-24 Fernando Perez <fperez@colorado.edu>
3479 2005-01-24 Fernando Perez <fperez@colorado.edu>
3476
3480
3477 * IPython/numutils.py (empty_like): add empty_like(), similar to
3481 * IPython/numutils.py (empty_like): add empty_like(), similar to
3478 zeros_like() but taking advantage of the new empty() Numeric routine.
3482 zeros_like() but taking advantage of the new empty() Numeric routine.
3479
3483
3480 2005-01-23 *** Released version 0.6.8
3484 2005-01-23 *** Released version 0.6.8
3481
3485
3482 2005-01-22 Fernando Perez <fperez@colorado.edu>
3486 2005-01-22 Fernando Perez <fperez@colorado.edu>
3483
3487
3484 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3488 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3485 automatic show() calls. After discussing things with JDH, it
3489 automatic show() calls. After discussing things with JDH, it
3486 turns out there are too many corner cases where this can go wrong.
3490 turns out there are too many corner cases where this can go wrong.
3487 It's best not to try to be 'too smart', and simply have ipython
3491 It's best not to try to be 'too smart', and simply have ipython
3488 reproduce as much as possible the default behavior of a normal
3492 reproduce as much as possible the default behavior of a normal
3489 python shell.
3493 python shell.
3490
3494
3491 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3495 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3492 line-splitting regexp and _prefilter() to avoid calling getattr()
3496 line-splitting regexp and _prefilter() to avoid calling getattr()
3493 on assignments. This closes
3497 on assignments. This closes
3494 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3498 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3495 readline uses getattr(), so a simple <TAB> keypress is still
3499 readline uses getattr(), so a simple <TAB> keypress is still
3496 enough to trigger getattr() calls on an object.
3500 enough to trigger getattr() calls on an object.
3497
3501
3498 2005-01-21 Fernando Perez <fperez@colorado.edu>
3502 2005-01-21 Fernando Perez <fperez@colorado.edu>
3499
3503
3500 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3504 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3501 docstring under pylab so it doesn't mask the original.
3505 docstring under pylab so it doesn't mask the original.
3502
3506
3503 2005-01-21 *** Released version 0.6.7
3507 2005-01-21 *** Released version 0.6.7
3504
3508
3505 2005-01-21 Fernando Perez <fperez@colorado.edu>
3509 2005-01-21 Fernando Perez <fperez@colorado.edu>
3506
3510
3507 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3511 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3508 signal handling for win32 users in multithreaded mode.
3512 signal handling for win32 users in multithreaded mode.
3509
3513
3510 2005-01-17 Fernando Perez <fperez@colorado.edu>
3514 2005-01-17 Fernando Perez <fperez@colorado.edu>
3511
3515
3512 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3516 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3513 instances with no __init__. After a crash report by Norbert Nemec
3517 instances with no __init__. After a crash report by Norbert Nemec
3514 <Norbert-AT-nemec-online.de>.
3518 <Norbert-AT-nemec-online.de>.
3515
3519
3516 2005-01-14 Fernando Perez <fperez@colorado.edu>
3520 2005-01-14 Fernando Perez <fperez@colorado.edu>
3517
3521
3518 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3522 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3519 names for verbose exceptions, when multiple dotted names and the
3523 names for verbose exceptions, when multiple dotted names and the
3520 'parent' object were present on the same line.
3524 'parent' object were present on the same line.
3521
3525
3522 2005-01-11 Fernando Perez <fperez@colorado.edu>
3526 2005-01-11 Fernando Perez <fperez@colorado.edu>
3523
3527
3524 * IPython/genutils.py (flag_calls): new utility to trap and flag
3528 * IPython/genutils.py (flag_calls): new utility to trap and flag
3525 calls in functions. I need it to clean up matplotlib support.
3529 calls in functions. I need it to clean up matplotlib support.
3526 Also removed some deprecated code in genutils.
3530 Also removed some deprecated code in genutils.
3527
3531
3528 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3532 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3529 that matplotlib scripts called with %run, which don't call show()
3533 that matplotlib scripts called with %run, which don't call show()
3530 themselves, still have their plotting windows open.
3534 themselves, still have their plotting windows open.
3531
3535
3532 2005-01-05 Fernando Perez <fperez@colorado.edu>
3536 2005-01-05 Fernando Perez <fperez@colorado.edu>
3533
3537
3534 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3538 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3535 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3539 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3536
3540
3537 2004-12-19 Fernando Perez <fperez@colorado.edu>
3541 2004-12-19 Fernando Perez <fperez@colorado.edu>
3538
3542
3539 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3543 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3540 parent_runcode, which was an eyesore. The same result can be
3544 parent_runcode, which was an eyesore. The same result can be
3541 obtained with Python's regular superclass mechanisms.
3545 obtained with Python's regular superclass mechanisms.
3542
3546
3543 2004-12-17 Fernando Perez <fperez@colorado.edu>
3547 2004-12-17 Fernando Perez <fperez@colorado.edu>
3544
3548
3545 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3549 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3546 reported by Prabhu.
3550 reported by Prabhu.
3547 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3551 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3548 sys.stderr) instead of explicitly calling sys.stderr. This helps
3552 sys.stderr) instead of explicitly calling sys.stderr. This helps
3549 maintain our I/O abstractions clean, for future GUI embeddings.
3553 maintain our I/O abstractions clean, for future GUI embeddings.
3550
3554
3551 * IPython/genutils.py (info): added new utility for sys.stderr
3555 * IPython/genutils.py (info): added new utility for sys.stderr
3552 unified info message handling (thin wrapper around warn()).
3556 unified info message handling (thin wrapper around warn()).
3553
3557
3554 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3558 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3555 composite (dotted) names on verbose exceptions.
3559 composite (dotted) names on verbose exceptions.
3556 (VerboseTB.nullrepr): harden against another kind of errors which
3560 (VerboseTB.nullrepr): harden against another kind of errors which
3557 Python's inspect module can trigger, and which were crashing
3561 Python's inspect module can trigger, and which were crashing
3558 IPython. Thanks to a report by Marco Lombardi
3562 IPython. Thanks to a report by Marco Lombardi
3559 <mlombard-AT-ma010192.hq.eso.org>.
3563 <mlombard-AT-ma010192.hq.eso.org>.
3560
3564
3561 2004-12-13 *** Released version 0.6.6
3565 2004-12-13 *** Released version 0.6.6
3562
3566
3563 2004-12-12 Fernando Perez <fperez@colorado.edu>
3567 2004-12-12 Fernando Perez <fperez@colorado.edu>
3564
3568
3565 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3569 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3566 generated by pygtk upon initialization if it was built without
3570 generated by pygtk upon initialization if it was built without
3567 threads (for matplotlib users). After a crash reported by
3571 threads (for matplotlib users). After a crash reported by
3568 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3572 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3569
3573
3570 * IPython/ipmaker.py (make_IPython): fix small bug in the
3574 * IPython/ipmaker.py (make_IPython): fix small bug in the
3571 import_some parameter for multiple imports.
3575 import_some parameter for multiple imports.
3572
3576
3573 * IPython/iplib.py (ipmagic): simplified the interface of
3577 * IPython/iplib.py (ipmagic): simplified the interface of
3574 ipmagic() to take a single string argument, just as it would be
3578 ipmagic() to take a single string argument, just as it would be
3575 typed at the IPython cmd line.
3579 typed at the IPython cmd line.
3576 (ipalias): Added new ipalias() with an interface identical to
3580 (ipalias): Added new ipalias() with an interface identical to
3577 ipmagic(). This completes exposing a pure python interface to the
3581 ipmagic(). This completes exposing a pure python interface to the
3578 alias and magic system, which can be used in loops or more complex
3582 alias and magic system, which can be used in loops or more complex
3579 code where IPython's automatic line mangling is not active.
3583 code where IPython's automatic line mangling is not active.
3580
3584
3581 * IPython/genutils.py (timing): changed interface of timing to
3585 * IPython/genutils.py (timing): changed interface of timing to
3582 simply run code once, which is the most common case. timings()
3586 simply run code once, which is the most common case. timings()
3583 remains unchanged, for the cases where you want multiple runs.
3587 remains unchanged, for the cases where you want multiple runs.
3584
3588
3585 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3589 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3586 bug where Python2.2 crashes with exec'ing code which does not end
3590 bug where Python2.2 crashes with exec'ing code which does not end
3587 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3591 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3588 before.
3592 before.
3589
3593
3590 2004-12-10 Fernando Perez <fperez@colorado.edu>
3594 2004-12-10 Fernando Perez <fperez@colorado.edu>
3591
3595
3592 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3596 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3593 -t to -T, to accomodate the new -t flag in %run (the %run and
3597 -t to -T, to accomodate the new -t flag in %run (the %run and
3594 %prun options are kind of intermixed, and it's not easy to change
3598 %prun options are kind of intermixed, and it's not easy to change
3595 this with the limitations of python's getopt).
3599 this with the limitations of python's getopt).
3596
3600
3597 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3601 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3598 the execution of scripts. It's not as fine-tuned as timeit.py,
3602 the execution of scripts. It's not as fine-tuned as timeit.py,
3599 but it works from inside ipython (and under 2.2, which lacks
3603 but it works from inside ipython (and under 2.2, which lacks
3600 timeit.py). Optionally a number of runs > 1 can be given for
3604 timeit.py). Optionally a number of runs > 1 can be given for
3601 timing very short-running code.
3605 timing very short-running code.
3602
3606
3603 * IPython/genutils.py (uniq_stable): new routine which returns a
3607 * IPython/genutils.py (uniq_stable): new routine which returns a
3604 list of unique elements in any iterable, but in stable order of
3608 list of unique elements in any iterable, but in stable order of
3605 appearance. I needed this for the ultraTB fixes, and it's a handy
3609 appearance. I needed this for the ultraTB fixes, and it's a handy
3606 utility.
3610 utility.
3607
3611
3608 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3612 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3609 dotted names in Verbose exceptions. This had been broken since
3613 dotted names in Verbose exceptions. This had been broken since
3610 the very start, now x.y will properly be printed in a Verbose
3614 the very start, now x.y will properly be printed in a Verbose
3611 traceback, instead of x being shown and y appearing always as an
3615 traceback, instead of x being shown and y appearing always as an
3612 'undefined global'. Getting this to work was a bit tricky,
3616 'undefined global'. Getting this to work was a bit tricky,
3613 because by default python tokenizers are stateless. Saved by
3617 because by default python tokenizers are stateless. Saved by
3614 python's ability to easily add a bit of state to an arbitrary
3618 python's ability to easily add a bit of state to an arbitrary
3615 function (without needing to build a full-blown callable object).
3619 function (without needing to build a full-blown callable object).
3616
3620
3617 Also big cleanup of this code, which had horrendous runtime
3621 Also big cleanup of this code, which had horrendous runtime
3618 lookups of zillions of attributes for colorization. Moved all
3622 lookups of zillions of attributes for colorization. Moved all
3619 this code into a few templates, which make it cleaner and quicker.
3623 this code into a few templates, which make it cleaner and quicker.
3620
3624
3621 Printout quality was also improved for Verbose exceptions: one
3625 Printout quality was also improved for Verbose exceptions: one
3622 variable per line, and memory addresses are printed (this can be
3626 variable per line, and memory addresses are printed (this can be
3623 quite handy in nasty debugging situations, which is what Verbose
3627 quite handy in nasty debugging situations, which is what Verbose
3624 is for).
3628 is for).
3625
3629
3626 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3630 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3627 the command line as scripts to be loaded by embedded instances.
3631 the command line as scripts to be loaded by embedded instances.
3628 Doing so has the potential for an infinite recursion if there are
3632 Doing so has the potential for an infinite recursion if there are
3629 exceptions thrown in the process. This fixes a strange crash
3633 exceptions thrown in the process. This fixes a strange crash
3630 reported by Philippe MULLER <muller-AT-irit.fr>.
3634 reported by Philippe MULLER <muller-AT-irit.fr>.
3631
3635
3632 2004-12-09 Fernando Perez <fperez@colorado.edu>
3636 2004-12-09 Fernando Perez <fperez@colorado.edu>
3633
3637
3634 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3638 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3635 to reflect new names in matplotlib, which now expose the
3639 to reflect new names in matplotlib, which now expose the
3636 matlab-compatible interface via a pylab module instead of the
3640 matlab-compatible interface via a pylab module instead of the
3637 'matlab' name. The new code is backwards compatible, so users of
3641 'matlab' name. The new code is backwards compatible, so users of
3638 all matplotlib versions are OK. Patch by J. Hunter.
3642 all matplotlib versions are OK. Patch by J. Hunter.
3639
3643
3640 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3644 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3641 of __init__ docstrings for instances (class docstrings are already
3645 of __init__ docstrings for instances (class docstrings are already
3642 automatically printed). Instances with customized docstrings
3646 automatically printed). Instances with customized docstrings
3643 (indep. of the class) are also recognized and all 3 separate
3647 (indep. of the class) are also recognized and all 3 separate
3644 docstrings are printed (instance, class, constructor). After some
3648 docstrings are printed (instance, class, constructor). After some
3645 comments/suggestions by J. Hunter.
3649 comments/suggestions by J. Hunter.
3646
3650
3647 2004-12-05 Fernando Perez <fperez@colorado.edu>
3651 2004-12-05 Fernando Perez <fperez@colorado.edu>
3648
3652
3649 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3653 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3650 warnings when tab-completion fails and triggers an exception.
3654 warnings when tab-completion fails and triggers an exception.
3651
3655
3652 2004-12-03 Fernando Perez <fperez@colorado.edu>
3656 2004-12-03 Fernando Perez <fperez@colorado.edu>
3653
3657
3654 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3658 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3655 be triggered when using 'run -p'. An incorrect option flag was
3659 be triggered when using 'run -p'. An incorrect option flag was
3656 being set ('d' instead of 'D').
3660 being set ('d' instead of 'D').
3657 (manpage): fix missing escaped \- sign.
3661 (manpage): fix missing escaped \- sign.
3658
3662
3659 2004-11-30 *** Released version 0.6.5
3663 2004-11-30 *** Released version 0.6.5
3660
3664
3661 2004-11-30 Fernando Perez <fperez@colorado.edu>
3665 2004-11-30 Fernando Perez <fperez@colorado.edu>
3662
3666
3663 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3667 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3664 setting with -d option.
3668 setting with -d option.
3665
3669
3666 * setup.py (docfiles): Fix problem where the doc glob I was using
3670 * setup.py (docfiles): Fix problem where the doc glob I was using
3667 was COMPLETELY BROKEN. It was giving the right files by pure
3671 was COMPLETELY BROKEN. It was giving the right files by pure
3668 accident, but failed once I tried to include ipython.el. Note:
3672 accident, but failed once I tried to include ipython.el. Note:
3669 glob() does NOT allow you to do exclusion on multiple endings!
3673 glob() does NOT allow you to do exclusion on multiple endings!
3670
3674
3671 2004-11-29 Fernando Perez <fperez@colorado.edu>
3675 2004-11-29 Fernando Perez <fperez@colorado.edu>
3672
3676
3673 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3677 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3674 the manpage as the source. Better formatting & consistency.
3678 the manpage as the source. Better formatting & consistency.
3675
3679
3676 * IPython/Magic.py (magic_run): Added new -d option, to run
3680 * IPython/Magic.py (magic_run): Added new -d option, to run
3677 scripts under the control of the python pdb debugger. Note that
3681 scripts under the control of the python pdb debugger. Note that
3678 this required changing the %prun option -d to -D, to avoid a clash
3682 this required changing the %prun option -d to -D, to avoid a clash
3679 (since %run must pass options to %prun, and getopt is too dumb to
3683 (since %run must pass options to %prun, and getopt is too dumb to
3680 handle options with string values with embedded spaces). Thanks
3684 handle options with string values with embedded spaces). Thanks
3681 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3685 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3682 (magic_who_ls): added type matching to %who and %whos, so that one
3686 (magic_who_ls): added type matching to %who and %whos, so that one
3683 can filter their output to only include variables of certain
3687 can filter their output to only include variables of certain
3684 types. Another suggestion by Matthew.
3688 types. Another suggestion by Matthew.
3685 (magic_whos): Added memory summaries in kb and Mb for arrays.
3689 (magic_whos): Added memory summaries in kb and Mb for arrays.
3686 (magic_who): Improve formatting (break lines every 9 vars).
3690 (magic_who): Improve formatting (break lines every 9 vars).
3687
3691
3688 2004-11-28 Fernando Perez <fperez@colorado.edu>
3692 2004-11-28 Fernando Perez <fperez@colorado.edu>
3689
3693
3690 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3694 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3691 cache when empty lines were present.
3695 cache when empty lines were present.
3692
3696
3693 2004-11-24 Fernando Perez <fperez@colorado.edu>
3697 2004-11-24 Fernando Perez <fperez@colorado.edu>
3694
3698
3695 * IPython/usage.py (__doc__): document the re-activated threading
3699 * IPython/usage.py (__doc__): document the re-activated threading
3696 options for WX and GTK.
3700 options for WX and GTK.
3697
3701
3698 2004-11-23 Fernando Perez <fperez@colorado.edu>
3702 2004-11-23 Fernando Perez <fperez@colorado.edu>
3699
3703
3700 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3704 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3701 the -wthread and -gthread options, along with a new -tk one to try
3705 the -wthread and -gthread options, along with a new -tk one to try
3702 and coordinate Tk threading with wx/gtk. The tk support is very
3706 and coordinate Tk threading with wx/gtk. The tk support is very
3703 platform dependent, since it seems to require Tcl and Tk to be
3707 platform dependent, since it seems to require Tcl and Tk to be
3704 built with threads (Fedora1/2 appears NOT to have it, but in
3708 built with threads (Fedora1/2 appears NOT to have it, but in
3705 Prabhu's Debian boxes it works OK). But even with some Tk
3709 Prabhu's Debian boxes it works OK). But even with some Tk
3706 limitations, this is a great improvement.
3710 limitations, this is a great improvement.
3707
3711
3708 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3712 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3709 info in user prompts. Patch by Prabhu.
3713 info in user prompts. Patch by Prabhu.
3710
3714
3711 2004-11-18 Fernando Perez <fperez@colorado.edu>
3715 2004-11-18 Fernando Perez <fperez@colorado.edu>
3712
3716
3713 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3717 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3714 EOFErrors and bail, to avoid infinite loops if a non-terminating
3718 EOFErrors and bail, to avoid infinite loops if a non-terminating
3715 file is fed into ipython. Patch submitted in issue 19 by user,
3719 file is fed into ipython. Patch submitted in issue 19 by user,
3716 many thanks.
3720 many thanks.
3717
3721
3718 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3722 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3719 autoquote/parens in continuation prompts, which can cause lots of
3723 autoquote/parens in continuation prompts, which can cause lots of
3720 problems. Closes roundup issue 20.
3724 problems. Closes roundup issue 20.
3721
3725
3722 2004-11-17 Fernando Perez <fperez@colorado.edu>
3726 2004-11-17 Fernando Perez <fperez@colorado.edu>
3723
3727
3724 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3728 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3725 reported as debian bug #280505. I'm not sure my local changelog
3729 reported as debian bug #280505. I'm not sure my local changelog
3726 entry has the proper debian format (Jack?).
3730 entry has the proper debian format (Jack?).
3727
3731
3728 2004-11-08 *** Released version 0.6.4
3732 2004-11-08 *** Released version 0.6.4
3729
3733
3730 2004-11-08 Fernando Perez <fperez@colorado.edu>
3734 2004-11-08 Fernando Perez <fperez@colorado.edu>
3731
3735
3732 * IPython/iplib.py (init_readline): Fix exit message for Windows
3736 * IPython/iplib.py (init_readline): Fix exit message for Windows
3733 when readline is active. Thanks to a report by Eric Jones
3737 when readline is active. Thanks to a report by Eric Jones
3734 <eric-AT-enthought.com>.
3738 <eric-AT-enthought.com>.
3735
3739
3736 2004-11-07 Fernando Perez <fperez@colorado.edu>
3740 2004-11-07 Fernando Perez <fperez@colorado.edu>
3737
3741
3738 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3742 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3739 sometimes seen by win2k/cygwin users.
3743 sometimes seen by win2k/cygwin users.
3740
3744
3741 2004-11-06 Fernando Perez <fperez@colorado.edu>
3745 2004-11-06 Fernando Perez <fperez@colorado.edu>
3742
3746
3743 * IPython/iplib.py (interact): Change the handling of %Exit from
3747 * IPython/iplib.py (interact): Change the handling of %Exit from
3744 trying to propagate a SystemExit to an internal ipython flag.
3748 trying to propagate a SystemExit to an internal ipython flag.
3745 This is less elegant than using Python's exception mechanism, but
3749 This is less elegant than using Python's exception mechanism, but
3746 I can't get that to work reliably with threads, so under -pylab
3750 I can't get that to work reliably with threads, so under -pylab
3747 %Exit was hanging IPython. Cross-thread exception handling is
3751 %Exit was hanging IPython. Cross-thread exception handling is
3748 really a bitch. Thaks to a bug report by Stephen Walton
3752 really a bitch. Thaks to a bug report by Stephen Walton
3749 <stephen.walton-AT-csun.edu>.
3753 <stephen.walton-AT-csun.edu>.
3750
3754
3751 2004-11-04 Fernando Perez <fperez@colorado.edu>
3755 2004-11-04 Fernando Perez <fperez@colorado.edu>
3752
3756
3753 * IPython/iplib.py (raw_input_original): store a pointer to the
3757 * IPython/iplib.py (raw_input_original): store a pointer to the
3754 true raw_input to harden against code which can modify it
3758 true raw_input to harden against code which can modify it
3755 (wx.py.PyShell does this and would otherwise crash ipython).
3759 (wx.py.PyShell does this and would otherwise crash ipython).
3756 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3760 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3757
3761
3758 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3762 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3759 Ctrl-C problem, which does not mess up the input line.
3763 Ctrl-C problem, which does not mess up the input line.
3760
3764
3761 2004-11-03 Fernando Perez <fperez@colorado.edu>
3765 2004-11-03 Fernando Perez <fperez@colorado.edu>
3762
3766
3763 * IPython/Release.py: Changed licensing to BSD, in all files.
3767 * IPython/Release.py: Changed licensing to BSD, in all files.
3764 (name): lowercase name for tarball/RPM release.
3768 (name): lowercase name for tarball/RPM release.
3765
3769
3766 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3770 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3767 use throughout ipython.
3771 use throughout ipython.
3768
3772
3769 * IPython/Magic.py (Magic._ofind): Switch to using the new
3773 * IPython/Magic.py (Magic._ofind): Switch to using the new
3770 OInspect.getdoc() function.
3774 OInspect.getdoc() function.
3771
3775
3772 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3776 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3773 of the line currently being canceled via Ctrl-C. It's extremely
3777 of the line currently being canceled via Ctrl-C. It's extremely
3774 ugly, but I don't know how to do it better (the problem is one of
3778 ugly, but I don't know how to do it better (the problem is one of
3775 handling cross-thread exceptions).
3779 handling cross-thread exceptions).
3776
3780
3777 2004-10-28 Fernando Perez <fperez@colorado.edu>
3781 2004-10-28 Fernando Perez <fperez@colorado.edu>
3778
3782
3779 * IPython/Shell.py (signal_handler): add signal handlers to trap
3783 * IPython/Shell.py (signal_handler): add signal handlers to trap
3780 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3784 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3781 report by Francesc Alted.
3785 report by Francesc Alted.
3782
3786
3783 2004-10-21 Fernando Perez <fperez@colorado.edu>
3787 2004-10-21 Fernando Perez <fperez@colorado.edu>
3784
3788
3785 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3789 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3786 to % for pysh syntax extensions.
3790 to % for pysh syntax extensions.
3787
3791
3788 2004-10-09 Fernando Perez <fperez@colorado.edu>
3792 2004-10-09 Fernando Perez <fperez@colorado.edu>
3789
3793
3790 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3794 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3791 arrays to print a more useful summary, without calling str(arr).
3795 arrays to print a more useful summary, without calling str(arr).
3792 This avoids the problem of extremely lengthy computations which
3796 This avoids the problem of extremely lengthy computations which
3793 occur if arr is large, and appear to the user as a system lockup
3797 occur if arr is large, and appear to the user as a system lockup
3794 with 100% cpu activity. After a suggestion by Kristian Sandberg
3798 with 100% cpu activity. After a suggestion by Kristian Sandberg
3795 <Kristian.Sandberg@colorado.edu>.
3799 <Kristian.Sandberg@colorado.edu>.
3796 (Magic.__init__): fix bug in global magic escapes not being
3800 (Magic.__init__): fix bug in global magic escapes not being
3797 correctly set.
3801 correctly set.
3798
3802
3799 2004-10-08 Fernando Perez <fperez@colorado.edu>
3803 2004-10-08 Fernando Perez <fperez@colorado.edu>
3800
3804
3801 * IPython/Magic.py (__license__): change to absolute imports of
3805 * IPython/Magic.py (__license__): change to absolute imports of
3802 ipython's own internal packages, to start adapting to the absolute
3806 ipython's own internal packages, to start adapting to the absolute
3803 import requirement of PEP-328.
3807 import requirement of PEP-328.
3804
3808
3805 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3809 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3806 files, and standardize author/license marks through the Release
3810 files, and standardize author/license marks through the Release
3807 module instead of having per/file stuff (except for files with
3811 module instead of having per/file stuff (except for files with
3808 particular licenses, like the MIT/PSF-licensed codes).
3812 particular licenses, like the MIT/PSF-licensed codes).
3809
3813
3810 * IPython/Debugger.py: remove dead code for python 2.1
3814 * IPython/Debugger.py: remove dead code for python 2.1
3811
3815
3812 2004-10-04 Fernando Perez <fperez@colorado.edu>
3816 2004-10-04 Fernando Perez <fperez@colorado.edu>
3813
3817
3814 * IPython/iplib.py (ipmagic): New function for accessing magics
3818 * IPython/iplib.py (ipmagic): New function for accessing magics
3815 via a normal python function call.
3819 via a normal python function call.
3816
3820
3817 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3821 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3818 from '@' to '%', to accomodate the new @decorator syntax of python
3822 from '@' to '%', to accomodate the new @decorator syntax of python
3819 2.4.
3823 2.4.
3820
3824
3821 2004-09-29 Fernando Perez <fperez@colorado.edu>
3825 2004-09-29 Fernando Perez <fperez@colorado.edu>
3822
3826
3823 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3827 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3824 matplotlib.use to prevent running scripts which try to switch
3828 matplotlib.use to prevent running scripts which try to switch
3825 interactive backends from within ipython. This will just crash
3829 interactive backends from within ipython. This will just crash
3826 the python interpreter, so we can't allow it (but a detailed error
3830 the python interpreter, so we can't allow it (but a detailed error
3827 is given to the user).
3831 is given to the user).
3828
3832
3829 2004-09-28 Fernando Perez <fperez@colorado.edu>
3833 2004-09-28 Fernando Perez <fperez@colorado.edu>
3830
3834
3831 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3835 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3832 matplotlib-related fixes so that using @run with non-matplotlib
3836 matplotlib-related fixes so that using @run with non-matplotlib
3833 scripts doesn't pop up spurious plot windows. This requires
3837 scripts doesn't pop up spurious plot windows. This requires
3834 matplotlib >= 0.63, where I had to make some changes as well.
3838 matplotlib >= 0.63, where I had to make some changes as well.
3835
3839
3836 * IPython/ipmaker.py (make_IPython): update version requirement to
3840 * IPython/ipmaker.py (make_IPython): update version requirement to
3837 python 2.2.
3841 python 2.2.
3838
3842
3839 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3843 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3840 banner arg for embedded customization.
3844 banner arg for embedded customization.
3841
3845
3842 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3846 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3843 explicit uses of __IP as the IPython's instance name. Now things
3847 explicit uses of __IP as the IPython's instance name. Now things
3844 are properly handled via the shell.name value. The actual code
3848 are properly handled via the shell.name value. The actual code
3845 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3849 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3846 is much better than before. I'll clean things completely when the
3850 is much better than before. I'll clean things completely when the
3847 magic stuff gets a real overhaul.
3851 magic stuff gets a real overhaul.
3848
3852
3849 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3853 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3850 minor changes to debian dir.
3854 minor changes to debian dir.
3851
3855
3852 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3856 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3853 pointer to the shell itself in the interactive namespace even when
3857 pointer to the shell itself in the interactive namespace even when
3854 a user-supplied dict is provided. This is needed for embedding
3858 a user-supplied dict is provided. This is needed for embedding
3855 purposes (found by tests with Michel Sanner).
3859 purposes (found by tests with Michel Sanner).
3856
3860
3857 2004-09-27 Fernando Perez <fperez@colorado.edu>
3861 2004-09-27 Fernando Perez <fperez@colorado.edu>
3858
3862
3859 * IPython/UserConfig/ipythonrc: remove []{} from
3863 * IPython/UserConfig/ipythonrc: remove []{} from
3860 readline_remove_delims, so that things like [modname.<TAB> do
3864 readline_remove_delims, so that things like [modname.<TAB> do
3861 proper completion. This disables [].TAB, but that's a less common
3865 proper completion. This disables [].TAB, but that's a less common
3862 case than module names in list comprehensions, for example.
3866 case than module names in list comprehensions, for example.
3863 Thanks to a report by Andrea Riciputi.
3867 Thanks to a report by Andrea Riciputi.
3864
3868
3865 2004-09-09 Fernando Perez <fperez@colorado.edu>
3869 2004-09-09 Fernando Perez <fperez@colorado.edu>
3866
3870
3867 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3871 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3868 blocking problems in win32 and osx. Fix by John.
3872 blocking problems in win32 and osx. Fix by John.
3869
3873
3870 2004-09-08 Fernando Perez <fperez@colorado.edu>
3874 2004-09-08 Fernando Perez <fperez@colorado.edu>
3871
3875
3872 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3876 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3873 for Win32 and OSX. Fix by John Hunter.
3877 for Win32 and OSX. Fix by John Hunter.
3874
3878
3875 2004-08-30 *** Released version 0.6.3
3879 2004-08-30 *** Released version 0.6.3
3876
3880
3877 2004-08-30 Fernando Perez <fperez@colorado.edu>
3881 2004-08-30 Fernando Perez <fperez@colorado.edu>
3878
3882
3879 * setup.py (isfile): Add manpages to list of dependent files to be
3883 * setup.py (isfile): Add manpages to list of dependent files to be
3880 updated.
3884 updated.
3881
3885
3882 2004-08-27 Fernando Perez <fperez@colorado.edu>
3886 2004-08-27 Fernando Perez <fperez@colorado.edu>
3883
3887
3884 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3888 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3885 for now. They don't really work with standalone WX/GTK code
3889 for now. They don't really work with standalone WX/GTK code
3886 (though matplotlib IS working fine with both of those backends).
3890 (though matplotlib IS working fine with both of those backends).
3887 This will neeed much more testing. I disabled most things with
3891 This will neeed much more testing. I disabled most things with
3888 comments, so turning it back on later should be pretty easy.
3892 comments, so turning it back on later should be pretty easy.
3889
3893
3890 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3894 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3891 autocalling of expressions like r'foo', by modifying the line
3895 autocalling of expressions like r'foo', by modifying the line
3892 split regexp. Closes
3896 split regexp. Closes
3893 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3897 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3894 Riley <ipythonbugs-AT-sabi.net>.
3898 Riley <ipythonbugs-AT-sabi.net>.
3895 (InteractiveShell.mainloop): honor --nobanner with banner
3899 (InteractiveShell.mainloop): honor --nobanner with banner
3896 extensions.
3900 extensions.
3897
3901
3898 * IPython/Shell.py: Significant refactoring of all classes, so
3902 * IPython/Shell.py: Significant refactoring of all classes, so
3899 that we can really support ALL matplotlib backends and threading
3903 that we can really support ALL matplotlib backends and threading
3900 models (John spotted a bug with Tk which required this). Now we
3904 models (John spotted a bug with Tk which required this). Now we
3901 should support single-threaded, WX-threads and GTK-threads, both
3905 should support single-threaded, WX-threads and GTK-threads, both
3902 for generic code and for matplotlib.
3906 for generic code and for matplotlib.
3903
3907
3904 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3908 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3905 -pylab, to simplify things for users. Will also remove the pylab
3909 -pylab, to simplify things for users. Will also remove the pylab
3906 profile, since now all of matplotlib configuration is directly
3910 profile, since now all of matplotlib configuration is directly
3907 handled here. This also reduces startup time.
3911 handled here. This also reduces startup time.
3908
3912
3909 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3913 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3910 shell wasn't being correctly called. Also in IPShellWX.
3914 shell wasn't being correctly called. Also in IPShellWX.
3911
3915
3912 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3916 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3913 fine-tune banner.
3917 fine-tune banner.
3914
3918
3915 * IPython/numutils.py (spike): Deprecate these spike functions,
3919 * IPython/numutils.py (spike): Deprecate these spike functions,
3916 delete (long deprecated) gnuplot_exec handler.
3920 delete (long deprecated) gnuplot_exec handler.
3917
3921
3918 2004-08-26 Fernando Perez <fperez@colorado.edu>
3922 2004-08-26 Fernando Perez <fperez@colorado.edu>
3919
3923
3920 * ipython.1: Update for threading options, plus some others which
3924 * ipython.1: Update for threading options, plus some others which
3921 were missing.
3925 were missing.
3922
3926
3923 * IPython/ipmaker.py (__call__): Added -wthread option for
3927 * IPython/ipmaker.py (__call__): Added -wthread option for
3924 wxpython thread handling. Make sure threading options are only
3928 wxpython thread handling. Make sure threading options are only
3925 valid at the command line.
3929 valid at the command line.
3926
3930
3927 * scripts/ipython: moved shell selection into a factory function
3931 * scripts/ipython: moved shell selection into a factory function
3928 in Shell.py, to keep the starter script to a minimum.
3932 in Shell.py, to keep the starter script to a minimum.
3929
3933
3930 2004-08-25 Fernando Perez <fperez@colorado.edu>
3934 2004-08-25 Fernando Perez <fperez@colorado.edu>
3931
3935
3932 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3936 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3933 John. Along with some recent changes he made to matplotlib, the
3937 John. Along with some recent changes he made to matplotlib, the
3934 next versions of both systems should work very well together.
3938 next versions of both systems should work very well together.
3935
3939
3936 2004-08-24 Fernando Perez <fperez@colorado.edu>
3940 2004-08-24 Fernando Perez <fperez@colorado.edu>
3937
3941
3938 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3942 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3939 tried to switch the profiling to using hotshot, but I'm getting
3943 tried to switch the profiling to using hotshot, but I'm getting
3940 strange errors from prof.runctx() there. I may be misreading the
3944 strange errors from prof.runctx() there. I may be misreading the
3941 docs, but it looks weird. For now the profiling code will
3945 docs, but it looks weird. For now the profiling code will
3942 continue to use the standard profiler.
3946 continue to use the standard profiler.
3943
3947
3944 2004-08-23 Fernando Perez <fperez@colorado.edu>
3948 2004-08-23 Fernando Perez <fperez@colorado.edu>
3945
3949
3946 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3950 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3947 threaded shell, by John Hunter. It's not quite ready yet, but
3951 threaded shell, by John Hunter. It's not quite ready yet, but
3948 close.
3952 close.
3949
3953
3950 2004-08-22 Fernando Perez <fperez@colorado.edu>
3954 2004-08-22 Fernando Perez <fperez@colorado.edu>
3951
3955
3952 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3956 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3953 in Magic and ultraTB.
3957 in Magic and ultraTB.
3954
3958
3955 * ipython.1: document threading options in manpage.
3959 * ipython.1: document threading options in manpage.
3956
3960
3957 * scripts/ipython: Changed name of -thread option to -gthread,
3961 * scripts/ipython: Changed name of -thread option to -gthread,
3958 since this is GTK specific. I want to leave the door open for a
3962 since this is GTK specific. I want to leave the door open for a
3959 -wthread option for WX, which will most likely be necessary. This
3963 -wthread option for WX, which will most likely be necessary. This
3960 change affects usage and ipmaker as well.
3964 change affects usage and ipmaker as well.
3961
3965
3962 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3966 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3963 handle the matplotlib shell issues. Code by John Hunter
3967 handle the matplotlib shell issues. Code by John Hunter
3964 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3968 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3965 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3969 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3966 broken (and disabled for end users) for now, but it puts the
3970 broken (and disabled for end users) for now, but it puts the
3967 infrastructure in place.
3971 infrastructure in place.
3968
3972
3969 2004-08-21 Fernando Perez <fperez@colorado.edu>
3973 2004-08-21 Fernando Perez <fperez@colorado.edu>
3970
3974
3971 * ipythonrc-pylab: Add matplotlib support.
3975 * ipythonrc-pylab: Add matplotlib support.
3972
3976
3973 * matplotlib_config.py: new files for matplotlib support, part of
3977 * matplotlib_config.py: new files for matplotlib support, part of
3974 the pylab profile.
3978 the pylab profile.
3975
3979
3976 * IPython/usage.py (__doc__): documented the threading options.
3980 * IPython/usage.py (__doc__): documented the threading options.
3977
3981
3978 2004-08-20 Fernando Perez <fperez@colorado.edu>
3982 2004-08-20 Fernando Perez <fperez@colorado.edu>
3979
3983
3980 * ipython: Modified the main calling routine to handle the -thread
3984 * ipython: Modified the main calling routine to handle the -thread
3981 and -mpthread options. This needs to be done as a top-level hack,
3985 and -mpthread options. This needs to be done as a top-level hack,
3982 because it determines which class to instantiate for IPython
3986 because it determines which class to instantiate for IPython
3983 itself.
3987 itself.
3984
3988
3985 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3989 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3986 classes to support multithreaded GTK operation without blocking,
3990 classes to support multithreaded GTK operation without blocking,
3987 and matplotlib with all backends. This is a lot of still very
3991 and matplotlib with all backends. This is a lot of still very
3988 experimental code, and threads are tricky. So it may still have a
3992 experimental code, and threads are tricky. So it may still have a
3989 few rough edges... This code owes a lot to
3993 few rough edges... This code owes a lot to
3990 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3994 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3991 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3995 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3992 to John Hunter for all the matplotlib work.
3996 to John Hunter for all the matplotlib work.
3993
3997
3994 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3998 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3995 options for gtk thread and matplotlib support.
3999 options for gtk thread and matplotlib support.
3996
4000
3997 2004-08-16 Fernando Perez <fperez@colorado.edu>
4001 2004-08-16 Fernando Perez <fperez@colorado.edu>
3998
4002
3999 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4003 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4000 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4004 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4001 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4005 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4002
4006
4003 2004-08-11 Fernando Perez <fperez@colorado.edu>
4007 2004-08-11 Fernando Perez <fperez@colorado.edu>
4004
4008
4005 * setup.py (isfile): Fix build so documentation gets updated for
4009 * setup.py (isfile): Fix build so documentation gets updated for
4006 rpms (it was only done for .tgz builds).
4010 rpms (it was only done for .tgz builds).
4007
4011
4008 2004-08-10 Fernando Perez <fperez@colorado.edu>
4012 2004-08-10 Fernando Perez <fperez@colorado.edu>
4009
4013
4010 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4014 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4011
4015
4012 * iplib.py : Silence syntax error exceptions in tab-completion.
4016 * iplib.py : Silence syntax error exceptions in tab-completion.
4013
4017
4014 2004-08-05 Fernando Perez <fperez@colorado.edu>
4018 2004-08-05 Fernando Perez <fperez@colorado.edu>
4015
4019
4016 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4020 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4017 'color off' mark for continuation prompts. This was causing long
4021 'color off' mark for continuation prompts. This was causing long
4018 continuation lines to mis-wrap.
4022 continuation lines to mis-wrap.
4019
4023
4020 2004-08-01 Fernando Perez <fperez@colorado.edu>
4024 2004-08-01 Fernando Perez <fperez@colorado.edu>
4021
4025
4022 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4026 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4023 for building ipython to be a parameter. All this is necessary
4027 for building ipython to be a parameter. All this is necessary
4024 right now to have a multithreaded version, but this insane
4028 right now to have a multithreaded version, but this insane
4025 non-design will be cleaned up soon. For now, it's a hack that
4029 non-design will be cleaned up soon. For now, it's a hack that
4026 works.
4030 works.
4027
4031
4028 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4032 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4029 args in various places. No bugs so far, but it's a dangerous
4033 args in various places. No bugs so far, but it's a dangerous
4030 practice.
4034 practice.
4031
4035
4032 2004-07-31 Fernando Perez <fperez@colorado.edu>
4036 2004-07-31 Fernando Perez <fperez@colorado.edu>
4033
4037
4034 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4038 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4035 fix completion of files with dots in their names under most
4039 fix completion of files with dots in their names under most
4036 profiles (pysh was OK because the completion order is different).
4040 profiles (pysh was OK because the completion order is different).
4037
4041
4038 2004-07-27 Fernando Perez <fperez@colorado.edu>
4042 2004-07-27 Fernando Perez <fperez@colorado.edu>
4039
4043
4040 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4044 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4041 keywords manually, b/c the one in keyword.py was removed in python
4045 keywords manually, b/c the one in keyword.py was removed in python
4042 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4046 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4043 This is NOT a bug under python 2.3 and earlier.
4047 This is NOT a bug under python 2.3 and earlier.
4044
4048
4045 2004-07-26 Fernando Perez <fperez@colorado.edu>
4049 2004-07-26 Fernando Perez <fperez@colorado.edu>
4046
4050
4047 * IPython/ultraTB.py (VerboseTB.text): Add another
4051 * IPython/ultraTB.py (VerboseTB.text): Add another
4048 linecache.checkcache() call to try to prevent inspect.py from
4052 linecache.checkcache() call to try to prevent inspect.py from
4049 crashing under python 2.3. I think this fixes
4053 crashing under python 2.3. I think this fixes
4050 http://www.scipy.net/roundup/ipython/issue17.
4054 http://www.scipy.net/roundup/ipython/issue17.
4051
4055
4052 2004-07-26 *** Released version 0.6.2
4056 2004-07-26 *** Released version 0.6.2
4053
4057
4054 2004-07-26 Fernando Perez <fperez@colorado.edu>
4058 2004-07-26 Fernando Perez <fperez@colorado.edu>
4055
4059
4056 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4060 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4057 fail for any number.
4061 fail for any number.
4058 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4062 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4059 empty bookmarks.
4063 empty bookmarks.
4060
4064
4061 2004-07-26 *** Released version 0.6.1
4065 2004-07-26 *** Released version 0.6.1
4062
4066
4063 2004-07-26 Fernando Perez <fperez@colorado.edu>
4067 2004-07-26 Fernando Perez <fperez@colorado.edu>
4064
4068
4065 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4069 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4066
4070
4067 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4071 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4068 escaping '()[]{}' in filenames.
4072 escaping '()[]{}' in filenames.
4069
4073
4070 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4074 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4071 Python 2.2 users who lack a proper shlex.split.
4075 Python 2.2 users who lack a proper shlex.split.
4072
4076
4073 2004-07-19 Fernando Perez <fperez@colorado.edu>
4077 2004-07-19 Fernando Perez <fperez@colorado.edu>
4074
4078
4075 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4079 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4076 for reading readline's init file. I follow the normal chain:
4080 for reading readline's init file. I follow the normal chain:
4077 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4081 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4078 report by Mike Heeter. This closes
4082 report by Mike Heeter. This closes
4079 http://www.scipy.net/roundup/ipython/issue16.
4083 http://www.scipy.net/roundup/ipython/issue16.
4080
4084
4081 2004-07-18 Fernando Perez <fperez@colorado.edu>
4085 2004-07-18 Fernando Perez <fperez@colorado.edu>
4082
4086
4083 * IPython/iplib.py (__init__): Add better handling of '\' under
4087 * IPython/iplib.py (__init__): Add better handling of '\' under
4084 Win32 for filenames. After a patch by Ville.
4088 Win32 for filenames. After a patch by Ville.
4085
4089
4086 2004-07-17 Fernando Perez <fperez@colorado.edu>
4090 2004-07-17 Fernando Perez <fperez@colorado.edu>
4087
4091
4088 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4092 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4089 autocalling would be triggered for 'foo is bar' if foo is
4093 autocalling would be triggered for 'foo is bar' if foo is
4090 callable. I also cleaned up the autocall detection code to use a
4094 callable. I also cleaned up the autocall detection code to use a
4091 regexp, which is faster. Bug reported by Alexander Schmolck.
4095 regexp, which is faster. Bug reported by Alexander Schmolck.
4092
4096
4093 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4097 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4094 '?' in them would confuse the help system. Reported by Alex
4098 '?' in them would confuse the help system. Reported by Alex
4095 Schmolck.
4099 Schmolck.
4096
4100
4097 2004-07-16 Fernando Perez <fperez@colorado.edu>
4101 2004-07-16 Fernando Perez <fperez@colorado.edu>
4098
4102
4099 * IPython/GnuplotInteractive.py (__all__): added plot2.
4103 * IPython/GnuplotInteractive.py (__all__): added plot2.
4100
4104
4101 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4105 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4102 plotting dictionaries, lists or tuples of 1d arrays.
4106 plotting dictionaries, lists or tuples of 1d arrays.
4103
4107
4104 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4108 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4105 optimizations.
4109 optimizations.
4106
4110
4107 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4111 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4108 the information which was there from Janko's original IPP code:
4112 the information which was there from Janko's original IPP code:
4109
4113
4110 03.05.99 20:53 porto.ifm.uni-kiel.de
4114 03.05.99 20:53 porto.ifm.uni-kiel.de
4111 --Started changelog.
4115 --Started changelog.
4112 --make clear do what it say it does
4116 --make clear do what it say it does
4113 --added pretty output of lines from inputcache
4117 --added pretty output of lines from inputcache
4114 --Made Logger a mixin class, simplifies handling of switches
4118 --Made Logger a mixin class, simplifies handling of switches
4115 --Added own completer class. .string<TAB> expands to last history
4119 --Added own completer class. .string<TAB> expands to last history
4116 line which starts with string. The new expansion is also present
4120 line which starts with string. The new expansion is also present
4117 with Ctrl-r from the readline library. But this shows, who this
4121 with Ctrl-r from the readline library. But this shows, who this
4118 can be done for other cases.
4122 can be done for other cases.
4119 --Added convention that all shell functions should accept a
4123 --Added convention that all shell functions should accept a
4120 parameter_string This opens the door for different behaviour for
4124 parameter_string This opens the door for different behaviour for
4121 each function. @cd is a good example of this.
4125 each function. @cd is a good example of this.
4122
4126
4123 04.05.99 12:12 porto.ifm.uni-kiel.de
4127 04.05.99 12:12 porto.ifm.uni-kiel.de
4124 --added logfile rotation
4128 --added logfile rotation
4125 --added new mainloop method which freezes first the namespace
4129 --added new mainloop method which freezes first the namespace
4126
4130
4127 07.05.99 21:24 porto.ifm.uni-kiel.de
4131 07.05.99 21:24 porto.ifm.uni-kiel.de
4128 --added the docreader classes. Now there is a help system.
4132 --added the docreader classes. Now there is a help system.
4129 -This is only a first try. Currently it's not easy to put new
4133 -This is only a first try. Currently it's not easy to put new
4130 stuff in the indices. But this is the way to go. Info would be
4134 stuff in the indices. But this is the way to go. Info would be
4131 better, but HTML is every where and not everybody has an info
4135 better, but HTML is every where and not everybody has an info
4132 system installed and it's not so easy to change html-docs to info.
4136 system installed and it's not so easy to change html-docs to info.
4133 --added global logfile option
4137 --added global logfile option
4134 --there is now a hook for object inspection method pinfo needs to
4138 --there is now a hook for object inspection method pinfo needs to
4135 be provided for this. Can be reached by two '??'.
4139 be provided for this. Can be reached by two '??'.
4136
4140
4137 08.05.99 20:51 porto.ifm.uni-kiel.de
4141 08.05.99 20:51 porto.ifm.uni-kiel.de
4138 --added a README
4142 --added a README
4139 --bug in rc file. Something has changed so functions in the rc
4143 --bug in rc file. Something has changed so functions in the rc
4140 file need to reference the shell and not self. Not clear if it's a
4144 file need to reference the shell and not self. Not clear if it's a
4141 bug or feature.
4145 bug or feature.
4142 --changed rc file for new behavior
4146 --changed rc file for new behavior
4143
4147
4144 2004-07-15 Fernando Perez <fperez@colorado.edu>
4148 2004-07-15 Fernando Perez <fperez@colorado.edu>
4145
4149
4146 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4150 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4147 cache was falling out of sync in bizarre manners when multi-line
4151 cache was falling out of sync in bizarre manners when multi-line
4148 input was present. Minor optimizations and cleanup.
4152 input was present. Minor optimizations and cleanup.
4149
4153
4150 (Logger): Remove old Changelog info for cleanup. This is the
4154 (Logger): Remove old Changelog info for cleanup. This is the
4151 information which was there from Janko's original code:
4155 information which was there from Janko's original code:
4152
4156
4153 Changes to Logger: - made the default log filename a parameter
4157 Changes to Logger: - made the default log filename a parameter
4154
4158
4155 - put a check for lines beginning with !@? in log(). Needed
4159 - put a check for lines beginning with !@? in log(). Needed
4156 (even if the handlers properly log their lines) for mid-session
4160 (even if the handlers properly log their lines) for mid-session
4157 logging activation to work properly. Without this, lines logged
4161 logging activation to work properly. Without this, lines logged
4158 in mid session, which get read from the cache, would end up
4162 in mid session, which get read from the cache, would end up
4159 'bare' (with !@? in the open) in the log. Now they are caught
4163 'bare' (with !@? in the open) in the log. Now they are caught
4160 and prepended with a #.
4164 and prepended with a #.
4161
4165
4162 * IPython/iplib.py (InteractiveShell.init_readline): added check
4166 * IPython/iplib.py (InteractiveShell.init_readline): added check
4163 in case MagicCompleter fails to be defined, so we don't crash.
4167 in case MagicCompleter fails to be defined, so we don't crash.
4164
4168
4165 2004-07-13 Fernando Perez <fperez@colorado.edu>
4169 2004-07-13 Fernando Perez <fperez@colorado.edu>
4166
4170
4167 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4171 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4168 of EPS if the requested filename ends in '.eps'.
4172 of EPS if the requested filename ends in '.eps'.
4169
4173
4170 2004-07-04 Fernando Perez <fperez@colorado.edu>
4174 2004-07-04 Fernando Perez <fperez@colorado.edu>
4171
4175
4172 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4176 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4173 escaping of quotes when calling the shell.
4177 escaping of quotes when calling the shell.
4174
4178
4175 2004-07-02 Fernando Perez <fperez@colorado.edu>
4179 2004-07-02 Fernando Perez <fperez@colorado.edu>
4176
4180
4177 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4181 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4178 gettext not working because we were clobbering '_'. Fixes
4182 gettext not working because we were clobbering '_'. Fixes
4179 http://www.scipy.net/roundup/ipython/issue6.
4183 http://www.scipy.net/roundup/ipython/issue6.
4180
4184
4181 2004-07-01 Fernando Perez <fperez@colorado.edu>
4185 2004-07-01 Fernando Perez <fperez@colorado.edu>
4182
4186
4183 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4187 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4184 into @cd. Patch by Ville.
4188 into @cd. Patch by Ville.
4185
4189
4186 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4190 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4187 new function to store things after ipmaker runs. Patch by Ville.
4191 new function to store things after ipmaker runs. Patch by Ville.
4188 Eventually this will go away once ipmaker is removed and the class
4192 Eventually this will go away once ipmaker is removed and the class
4189 gets cleaned up, but for now it's ok. Key functionality here is
4193 gets cleaned up, but for now it's ok. Key functionality here is
4190 the addition of the persistent storage mechanism, a dict for
4194 the addition of the persistent storage mechanism, a dict for
4191 keeping data across sessions (for now just bookmarks, but more can
4195 keeping data across sessions (for now just bookmarks, but more can
4192 be implemented later).
4196 be implemented later).
4193
4197
4194 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4198 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4195 persistent across sections. Patch by Ville, I modified it
4199 persistent across sections. Patch by Ville, I modified it
4196 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4200 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4197 added a '-l' option to list all bookmarks.
4201 added a '-l' option to list all bookmarks.
4198
4202
4199 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4203 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4200 center for cleanup. Registered with atexit.register(). I moved
4204 center for cleanup. Registered with atexit.register(). I moved
4201 here the old exit_cleanup(). After a patch by Ville.
4205 here the old exit_cleanup(). After a patch by Ville.
4202
4206
4203 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4207 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4204 characters in the hacked shlex_split for python 2.2.
4208 characters in the hacked shlex_split for python 2.2.
4205
4209
4206 * IPython/iplib.py (file_matches): more fixes to filenames with
4210 * IPython/iplib.py (file_matches): more fixes to filenames with
4207 whitespace in them. It's not perfect, but limitations in python's
4211 whitespace in them. It's not perfect, but limitations in python's
4208 readline make it impossible to go further.
4212 readline make it impossible to go further.
4209
4213
4210 2004-06-29 Fernando Perez <fperez@colorado.edu>
4214 2004-06-29 Fernando Perez <fperez@colorado.edu>
4211
4215
4212 * IPython/iplib.py (file_matches): escape whitespace correctly in
4216 * IPython/iplib.py (file_matches): escape whitespace correctly in
4213 filename completions. Bug reported by Ville.
4217 filename completions. Bug reported by Ville.
4214
4218
4215 2004-06-28 Fernando Perez <fperez@colorado.edu>
4219 2004-06-28 Fernando Perez <fperez@colorado.edu>
4216
4220
4217 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4221 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4218 the history file will be called 'history-PROFNAME' (or just
4222 the history file will be called 'history-PROFNAME' (or just
4219 'history' if no profile is loaded). I was getting annoyed at
4223 'history' if no profile is loaded). I was getting annoyed at
4220 getting my Numerical work history clobbered by pysh sessions.
4224 getting my Numerical work history clobbered by pysh sessions.
4221
4225
4222 * IPython/iplib.py (InteractiveShell.__init__): Internal
4226 * IPython/iplib.py (InteractiveShell.__init__): Internal
4223 getoutputerror() function so that we can honor the system_verbose
4227 getoutputerror() function so that we can honor the system_verbose
4224 flag for _all_ system calls. I also added escaping of #
4228 flag for _all_ system calls. I also added escaping of #
4225 characters here to avoid confusing Itpl.
4229 characters here to avoid confusing Itpl.
4226
4230
4227 * IPython/Magic.py (shlex_split): removed call to shell in
4231 * IPython/Magic.py (shlex_split): removed call to shell in
4228 parse_options and replaced it with shlex.split(). The annoying
4232 parse_options and replaced it with shlex.split(). The annoying
4229 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4233 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4230 to backport it from 2.3, with several frail hacks (the shlex
4234 to backport it from 2.3, with several frail hacks (the shlex
4231 module is rather limited in 2.2). Thanks to a suggestion by Ville
4235 module is rather limited in 2.2). Thanks to a suggestion by Ville
4232 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4236 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4233 problem.
4237 problem.
4234
4238
4235 (Magic.magic_system_verbose): new toggle to print the actual
4239 (Magic.magic_system_verbose): new toggle to print the actual
4236 system calls made by ipython. Mainly for debugging purposes.
4240 system calls made by ipython. Mainly for debugging purposes.
4237
4241
4238 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4242 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4239 doesn't support persistence. Reported (and fix suggested) by
4243 doesn't support persistence. Reported (and fix suggested) by
4240 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4244 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4241
4245
4242 2004-06-26 Fernando Perez <fperez@colorado.edu>
4246 2004-06-26 Fernando Perez <fperez@colorado.edu>
4243
4247
4244 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4248 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4245 continue prompts.
4249 continue prompts.
4246
4250
4247 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4251 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4248 function (basically a big docstring) and a few more things here to
4252 function (basically a big docstring) and a few more things here to
4249 speedup startup. pysh.py is now very lightweight. We want because
4253 speedup startup. pysh.py is now very lightweight. We want because
4250 it gets execfile'd, while InterpreterExec gets imported, so
4254 it gets execfile'd, while InterpreterExec gets imported, so
4251 byte-compilation saves time.
4255 byte-compilation saves time.
4252
4256
4253 2004-06-25 Fernando Perez <fperez@colorado.edu>
4257 2004-06-25 Fernando Perez <fperez@colorado.edu>
4254
4258
4255 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4259 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4256 -NUM', which was recently broken.
4260 -NUM', which was recently broken.
4257
4261
4258 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4262 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4259 in multi-line input (but not !!, which doesn't make sense there).
4263 in multi-line input (but not !!, which doesn't make sense there).
4260
4264
4261 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4265 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4262 It's just too useful, and people can turn it off in the less
4266 It's just too useful, and people can turn it off in the less
4263 common cases where it's a problem.
4267 common cases where it's a problem.
4264
4268
4265 2004-06-24 Fernando Perez <fperez@colorado.edu>
4269 2004-06-24 Fernando Perez <fperez@colorado.edu>
4266
4270
4267 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4271 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4268 special syntaxes (like alias calling) is now allied in multi-line
4272 special syntaxes (like alias calling) is now allied in multi-line
4269 input. This is still _very_ experimental, but it's necessary for
4273 input. This is still _very_ experimental, but it's necessary for
4270 efficient shell usage combining python looping syntax with system
4274 efficient shell usage combining python looping syntax with system
4271 calls. For now it's restricted to aliases, I don't think it
4275 calls. For now it's restricted to aliases, I don't think it
4272 really even makes sense to have this for magics.
4276 really even makes sense to have this for magics.
4273
4277
4274 2004-06-23 Fernando Perez <fperez@colorado.edu>
4278 2004-06-23 Fernando Perez <fperez@colorado.edu>
4275
4279
4276 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4280 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4277 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4281 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4278
4282
4279 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4283 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4280 extensions under Windows (after code sent by Gary Bishop). The
4284 extensions under Windows (after code sent by Gary Bishop). The
4281 extensions considered 'executable' are stored in IPython's rc
4285 extensions considered 'executable' are stored in IPython's rc
4282 structure as win_exec_ext.
4286 structure as win_exec_ext.
4283
4287
4284 * IPython/genutils.py (shell): new function, like system() but
4288 * IPython/genutils.py (shell): new function, like system() but
4285 without return value. Very useful for interactive shell work.
4289 without return value. Very useful for interactive shell work.
4286
4290
4287 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4291 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4288 delete aliases.
4292 delete aliases.
4289
4293
4290 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4294 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4291 sure that the alias table doesn't contain python keywords.
4295 sure that the alias table doesn't contain python keywords.
4292
4296
4293 2004-06-21 Fernando Perez <fperez@colorado.edu>
4297 2004-06-21 Fernando Perez <fperez@colorado.edu>
4294
4298
4295 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4299 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4296 non-existent items are found in $PATH. Reported by Thorsten.
4300 non-existent items are found in $PATH. Reported by Thorsten.
4297
4301
4298 2004-06-20 Fernando Perez <fperez@colorado.edu>
4302 2004-06-20 Fernando Perez <fperez@colorado.edu>
4299
4303
4300 * IPython/iplib.py (complete): modified the completer so that the
4304 * IPython/iplib.py (complete): modified the completer so that the
4301 order of priorities can be easily changed at runtime.
4305 order of priorities can be easily changed at runtime.
4302
4306
4303 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4307 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4304 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4308 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4305
4309
4306 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4310 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4307 expand Python variables prepended with $ in all system calls. The
4311 expand Python variables prepended with $ in all system calls. The
4308 same was done to InteractiveShell.handle_shell_escape. Now all
4312 same was done to InteractiveShell.handle_shell_escape. Now all
4309 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4313 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4310 expansion of python variables and expressions according to the
4314 expansion of python variables and expressions according to the
4311 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4315 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4312
4316
4313 Though PEP-215 has been rejected, a similar (but simpler) one
4317 Though PEP-215 has been rejected, a similar (but simpler) one
4314 seems like it will go into Python 2.4, PEP-292 -
4318 seems like it will go into Python 2.4, PEP-292 -
4315 http://www.python.org/peps/pep-0292.html.
4319 http://www.python.org/peps/pep-0292.html.
4316
4320
4317 I'll keep the full syntax of PEP-215, since IPython has since the
4321 I'll keep the full syntax of PEP-215, since IPython has since the
4318 start used Ka-Ping Yee's reference implementation discussed there
4322 start used Ka-Ping Yee's reference implementation discussed there
4319 (Itpl), and I actually like the powerful semantics it offers.
4323 (Itpl), and I actually like the powerful semantics it offers.
4320
4324
4321 In order to access normal shell variables, the $ has to be escaped
4325 In order to access normal shell variables, the $ has to be escaped
4322 via an extra $. For example:
4326 via an extra $. For example:
4323
4327
4324 In [7]: PATH='a python variable'
4328 In [7]: PATH='a python variable'
4325
4329
4326 In [8]: !echo $PATH
4330 In [8]: !echo $PATH
4327 a python variable
4331 a python variable
4328
4332
4329 In [9]: !echo $$PATH
4333 In [9]: !echo $$PATH
4330 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4334 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4331
4335
4332 (Magic.parse_options): escape $ so the shell doesn't evaluate
4336 (Magic.parse_options): escape $ so the shell doesn't evaluate
4333 things prematurely.
4337 things prematurely.
4334
4338
4335 * IPython/iplib.py (InteractiveShell.call_alias): added the
4339 * IPython/iplib.py (InteractiveShell.call_alias): added the
4336 ability for aliases to expand python variables via $.
4340 ability for aliases to expand python variables via $.
4337
4341
4338 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4342 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4339 system, now there's a @rehash/@rehashx pair of magics. These work
4343 system, now there's a @rehash/@rehashx pair of magics. These work
4340 like the csh rehash command, and can be invoked at any time. They
4344 like the csh rehash command, and can be invoked at any time. They
4341 build a table of aliases to everything in the user's $PATH
4345 build a table of aliases to everything in the user's $PATH
4342 (@rehash uses everything, @rehashx is slower but only adds
4346 (@rehash uses everything, @rehashx is slower but only adds
4343 executable files). With this, the pysh.py-based shell profile can
4347 executable files). With this, the pysh.py-based shell profile can
4344 now simply call rehash upon startup, and full access to all
4348 now simply call rehash upon startup, and full access to all
4345 programs in the user's path is obtained.
4349 programs in the user's path is obtained.
4346
4350
4347 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4351 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4348 functionality is now fully in place. I removed the old dynamic
4352 functionality is now fully in place. I removed the old dynamic
4349 code generation based approach, in favor of a much lighter one
4353 code generation based approach, in favor of a much lighter one
4350 based on a simple dict. The advantage is that this allows me to
4354 based on a simple dict. The advantage is that this allows me to
4351 now have thousands of aliases with negligible cost (unthinkable
4355 now have thousands of aliases with negligible cost (unthinkable
4352 with the old system).
4356 with the old system).
4353
4357
4354 2004-06-19 Fernando Perez <fperez@colorado.edu>
4358 2004-06-19 Fernando Perez <fperez@colorado.edu>
4355
4359
4356 * IPython/iplib.py (__init__): extended MagicCompleter class to
4360 * IPython/iplib.py (__init__): extended MagicCompleter class to
4357 also complete (last in priority) on user aliases.
4361 also complete (last in priority) on user aliases.
4358
4362
4359 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4363 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4360 call to eval.
4364 call to eval.
4361 (ItplNS.__init__): Added a new class which functions like Itpl,
4365 (ItplNS.__init__): Added a new class which functions like Itpl,
4362 but allows configuring the namespace for the evaluation to occur
4366 but allows configuring the namespace for the evaluation to occur
4363 in.
4367 in.
4364
4368
4365 2004-06-18 Fernando Perez <fperez@colorado.edu>
4369 2004-06-18 Fernando Perez <fperez@colorado.edu>
4366
4370
4367 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4371 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4368 better message when 'exit' or 'quit' are typed (a common newbie
4372 better message when 'exit' or 'quit' are typed (a common newbie
4369 confusion).
4373 confusion).
4370
4374
4371 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4375 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4372 check for Windows users.
4376 check for Windows users.
4373
4377
4374 * IPython/iplib.py (InteractiveShell.user_setup): removed
4378 * IPython/iplib.py (InteractiveShell.user_setup): removed
4375 disabling of colors for Windows. I'll test at runtime and issue a
4379 disabling of colors for Windows. I'll test at runtime and issue a
4376 warning if Gary's readline isn't found, as to nudge users to
4380 warning if Gary's readline isn't found, as to nudge users to
4377 download it.
4381 download it.
4378
4382
4379 2004-06-16 Fernando Perez <fperez@colorado.edu>
4383 2004-06-16 Fernando Perez <fperez@colorado.edu>
4380
4384
4381 * IPython/genutils.py (Stream.__init__): changed to print errors
4385 * IPython/genutils.py (Stream.__init__): changed to print errors
4382 to sys.stderr. I had a circular dependency here. Now it's
4386 to sys.stderr. I had a circular dependency here. Now it's
4383 possible to run ipython as IDLE's shell (consider this pre-alpha,
4387 possible to run ipython as IDLE's shell (consider this pre-alpha,
4384 since true stdout things end up in the starting terminal instead
4388 since true stdout things end up in the starting terminal instead
4385 of IDLE's out).
4389 of IDLE's out).
4386
4390
4387 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4391 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4388 users who haven't # updated their prompt_in2 definitions. Remove
4392 users who haven't # updated their prompt_in2 definitions. Remove
4389 eventually.
4393 eventually.
4390 (multiple_replace): added credit to original ASPN recipe.
4394 (multiple_replace): added credit to original ASPN recipe.
4391
4395
4392 2004-06-15 Fernando Perez <fperez@colorado.edu>
4396 2004-06-15 Fernando Perez <fperez@colorado.edu>
4393
4397
4394 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4398 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4395 list of auto-defined aliases.
4399 list of auto-defined aliases.
4396
4400
4397 2004-06-13 Fernando Perez <fperez@colorado.edu>
4401 2004-06-13 Fernando Perez <fperez@colorado.edu>
4398
4402
4399 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4403 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4400 install was really requested (so setup.py can be used for other
4404 install was really requested (so setup.py can be used for other
4401 things under Windows).
4405 things under Windows).
4402
4406
4403 2004-06-10 Fernando Perez <fperez@colorado.edu>
4407 2004-06-10 Fernando Perez <fperez@colorado.edu>
4404
4408
4405 * IPython/Logger.py (Logger.create_log): Manually remove any old
4409 * IPython/Logger.py (Logger.create_log): Manually remove any old
4406 backup, since os.remove may fail under Windows. Fixes bug
4410 backup, since os.remove may fail under Windows. Fixes bug
4407 reported by Thorsten.
4411 reported by Thorsten.
4408
4412
4409 2004-06-09 Fernando Perez <fperez@colorado.edu>
4413 2004-06-09 Fernando Perez <fperez@colorado.edu>
4410
4414
4411 * examples/example-embed.py: fixed all references to %n (replaced
4415 * examples/example-embed.py: fixed all references to %n (replaced
4412 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4416 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4413 for all examples and the manual as well.
4417 for all examples and the manual as well.
4414
4418
4415 2004-06-08 Fernando Perez <fperez@colorado.edu>
4419 2004-06-08 Fernando Perez <fperez@colorado.edu>
4416
4420
4417 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4421 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4418 alignment and color management. All 3 prompt subsystems now
4422 alignment and color management. All 3 prompt subsystems now
4419 inherit from BasePrompt.
4423 inherit from BasePrompt.
4420
4424
4421 * tools/release: updates for windows installer build and tag rpms
4425 * tools/release: updates for windows installer build and tag rpms
4422 with python version (since paths are fixed).
4426 with python version (since paths are fixed).
4423
4427
4424 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4428 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4425 which will become eventually obsolete. Also fixed the default
4429 which will become eventually obsolete. Also fixed the default
4426 prompt_in2 to use \D, so at least new users start with the correct
4430 prompt_in2 to use \D, so at least new users start with the correct
4427 defaults.
4431 defaults.
4428 WARNING: Users with existing ipythonrc files will need to apply
4432 WARNING: Users with existing ipythonrc files will need to apply
4429 this fix manually!
4433 this fix manually!
4430
4434
4431 * setup.py: make windows installer (.exe). This is finally the
4435 * setup.py: make windows installer (.exe). This is finally the
4432 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4436 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4433 which I hadn't included because it required Python 2.3 (or recent
4437 which I hadn't included because it required Python 2.3 (or recent
4434 distutils).
4438 distutils).
4435
4439
4436 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4440 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4437 usage of new '\D' escape.
4441 usage of new '\D' escape.
4438
4442
4439 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4443 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4440 lacks os.getuid())
4444 lacks os.getuid())
4441 (CachedOutput.set_colors): Added the ability to turn coloring
4445 (CachedOutput.set_colors): Added the ability to turn coloring
4442 on/off with @colors even for manually defined prompt colors. It
4446 on/off with @colors even for manually defined prompt colors. It
4443 uses a nasty global, but it works safely and via the generic color
4447 uses a nasty global, but it works safely and via the generic color
4444 handling mechanism.
4448 handling mechanism.
4445 (Prompt2.__init__): Introduced new escape '\D' for continuation
4449 (Prompt2.__init__): Introduced new escape '\D' for continuation
4446 prompts. It represents the counter ('\#') as dots.
4450 prompts. It represents the counter ('\#') as dots.
4447 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4451 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4448 need to update their ipythonrc files and replace '%n' with '\D' in
4452 need to update their ipythonrc files and replace '%n' with '\D' in
4449 their prompt_in2 settings everywhere. Sorry, but there's
4453 their prompt_in2 settings everywhere. Sorry, but there's
4450 otherwise no clean way to get all prompts to properly align. The
4454 otherwise no clean way to get all prompts to properly align. The
4451 ipythonrc shipped with IPython has been updated.
4455 ipythonrc shipped with IPython has been updated.
4452
4456
4453 2004-06-07 Fernando Perez <fperez@colorado.edu>
4457 2004-06-07 Fernando Perez <fperez@colorado.edu>
4454
4458
4455 * setup.py (isfile): Pass local_icons option to latex2html, so the
4459 * setup.py (isfile): Pass local_icons option to latex2html, so the
4456 resulting HTML file is self-contained. Thanks to
4460 resulting HTML file is self-contained. Thanks to
4457 dryice-AT-liu.com.cn for the tip.
4461 dryice-AT-liu.com.cn for the tip.
4458
4462
4459 * pysh.py: I created a new profile 'shell', which implements a
4463 * pysh.py: I created a new profile 'shell', which implements a
4460 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4464 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4461 system shell, nor will it become one anytime soon. It's mainly
4465 system shell, nor will it become one anytime soon. It's mainly
4462 meant to illustrate the use of the new flexible bash-like prompts.
4466 meant to illustrate the use of the new flexible bash-like prompts.
4463 I guess it could be used by hardy souls for true shell management,
4467 I guess it could be used by hardy souls for true shell management,
4464 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4468 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4465 profile. This uses the InterpreterExec extension provided by
4469 profile. This uses the InterpreterExec extension provided by
4466 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4470 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4467
4471
4468 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4472 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4469 auto-align itself with the length of the previous input prompt
4473 auto-align itself with the length of the previous input prompt
4470 (taking into account the invisible color escapes).
4474 (taking into account the invisible color escapes).
4471 (CachedOutput.__init__): Large restructuring of this class. Now
4475 (CachedOutput.__init__): Large restructuring of this class. Now
4472 all three prompts (primary1, primary2, output) are proper objects,
4476 all three prompts (primary1, primary2, output) are proper objects,
4473 managed by the 'parent' CachedOutput class. The code is still a
4477 managed by the 'parent' CachedOutput class. The code is still a
4474 bit hackish (all prompts share state via a pointer to the cache),
4478 bit hackish (all prompts share state via a pointer to the cache),
4475 but it's overall far cleaner than before.
4479 but it's overall far cleaner than before.
4476
4480
4477 * IPython/genutils.py (getoutputerror): modified to add verbose,
4481 * IPython/genutils.py (getoutputerror): modified to add verbose,
4478 debug and header options. This makes the interface of all getout*
4482 debug and header options. This makes the interface of all getout*
4479 functions uniform.
4483 functions uniform.
4480 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4484 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4481
4485
4482 * IPython/Magic.py (Magic.default_option): added a function to
4486 * IPython/Magic.py (Magic.default_option): added a function to
4483 allow registering default options for any magic command. This
4487 allow registering default options for any magic command. This
4484 makes it easy to have profiles which customize the magics globally
4488 makes it easy to have profiles which customize the magics globally
4485 for a certain use. The values set through this function are
4489 for a certain use. The values set through this function are
4486 picked up by the parse_options() method, which all magics should
4490 picked up by the parse_options() method, which all magics should
4487 use to parse their options.
4491 use to parse their options.
4488
4492
4489 * IPython/genutils.py (warn): modified the warnings framework to
4493 * IPython/genutils.py (warn): modified the warnings framework to
4490 use the Term I/O class. I'm trying to slowly unify all of
4494 use the Term I/O class. I'm trying to slowly unify all of
4491 IPython's I/O operations to pass through Term.
4495 IPython's I/O operations to pass through Term.
4492
4496
4493 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4497 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4494 the secondary prompt to correctly match the length of the primary
4498 the secondary prompt to correctly match the length of the primary
4495 one for any prompt. Now multi-line code will properly line up
4499 one for any prompt. Now multi-line code will properly line up
4496 even for path dependent prompts, such as the new ones available
4500 even for path dependent prompts, such as the new ones available
4497 via the prompt_specials.
4501 via the prompt_specials.
4498
4502
4499 2004-06-06 Fernando Perez <fperez@colorado.edu>
4503 2004-06-06 Fernando Perez <fperez@colorado.edu>
4500
4504
4501 * IPython/Prompts.py (prompt_specials): Added the ability to have
4505 * IPython/Prompts.py (prompt_specials): Added the ability to have
4502 bash-like special sequences in the prompts, which get
4506 bash-like special sequences in the prompts, which get
4503 automatically expanded. Things like hostname, current working
4507 automatically expanded. Things like hostname, current working
4504 directory and username are implemented already, but it's easy to
4508 directory and username are implemented already, but it's easy to
4505 add more in the future. Thanks to a patch by W.J. van der Laan
4509 add more in the future. Thanks to a patch by W.J. van der Laan
4506 <gnufnork-AT-hetdigitalegat.nl>
4510 <gnufnork-AT-hetdigitalegat.nl>
4507 (prompt_specials): Added color support for prompt strings, so
4511 (prompt_specials): Added color support for prompt strings, so
4508 users can define arbitrary color setups for their prompts.
4512 users can define arbitrary color setups for their prompts.
4509
4513
4510 2004-06-05 Fernando Perez <fperez@colorado.edu>
4514 2004-06-05 Fernando Perez <fperez@colorado.edu>
4511
4515
4512 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4516 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4513 code to load Gary Bishop's readline and configure it
4517 code to load Gary Bishop's readline and configure it
4514 automatically. Thanks to Gary for help on this.
4518 automatically. Thanks to Gary for help on this.
4515
4519
4516 2004-06-01 Fernando Perez <fperez@colorado.edu>
4520 2004-06-01 Fernando Perez <fperez@colorado.edu>
4517
4521
4518 * IPython/Logger.py (Logger.create_log): fix bug for logging
4522 * IPython/Logger.py (Logger.create_log): fix bug for logging
4519 with no filename (previous fix was incomplete).
4523 with no filename (previous fix was incomplete).
4520
4524
4521 2004-05-25 Fernando Perez <fperez@colorado.edu>
4525 2004-05-25 Fernando Perez <fperez@colorado.edu>
4522
4526
4523 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4527 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4524 parens would get passed to the shell.
4528 parens would get passed to the shell.
4525
4529
4526 2004-05-20 Fernando Perez <fperez@colorado.edu>
4530 2004-05-20 Fernando Perez <fperez@colorado.edu>
4527
4531
4528 * IPython/Magic.py (Magic.magic_prun): changed default profile
4532 * IPython/Magic.py (Magic.magic_prun): changed default profile
4529 sort order to 'time' (the more common profiling need).
4533 sort order to 'time' (the more common profiling need).
4530
4534
4531 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4535 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4532 so that source code shown is guaranteed in sync with the file on
4536 so that source code shown is guaranteed in sync with the file on
4533 disk (also changed in psource). Similar fix to the one for
4537 disk (also changed in psource). Similar fix to the one for
4534 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4538 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4535 <yann.ledu-AT-noos.fr>.
4539 <yann.ledu-AT-noos.fr>.
4536
4540
4537 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4541 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4538 with a single option would not be correctly parsed. Closes
4542 with a single option would not be correctly parsed. Closes
4539 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4543 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4540 introduced in 0.6.0 (on 2004-05-06).
4544 introduced in 0.6.0 (on 2004-05-06).
4541
4545
4542 2004-05-13 *** Released version 0.6.0
4546 2004-05-13 *** Released version 0.6.0
4543
4547
4544 2004-05-13 Fernando Perez <fperez@colorado.edu>
4548 2004-05-13 Fernando Perez <fperez@colorado.edu>
4545
4549
4546 * debian/: Added debian/ directory to CVS, so that debian support
4550 * debian/: Added debian/ directory to CVS, so that debian support
4547 is publicly accessible. The debian package is maintained by Jack
4551 is publicly accessible. The debian package is maintained by Jack
4548 Moffit <jack-AT-xiph.org>.
4552 Moffit <jack-AT-xiph.org>.
4549
4553
4550 * Documentation: included the notes about an ipython-based system
4554 * Documentation: included the notes about an ipython-based system
4551 shell (the hypothetical 'pysh') into the new_design.pdf document,
4555 shell (the hypothetical 'pysh') into the new_design.pdf document,
4552 so that these ideas get distributed to users along with the
4556 so that these ideas get distributed to users along with the
4553 official documentation.
4557 official documentation.
4554
4558
4555 2004-05-10 Fernando Perez <fperez@colorado.edu>
4559 2004-05-10 Fernando Perez <fperez@colorado.edu>
4556
4560
4557 * IPython/Logger.py (Logger.create_log): fix recently introduced
4561 * IPython/Logger.py (Logger.create_log): fix recently introduced
4558 bug (misindented line) where logstart would fail when not given an
4562 bug (misindented line) where logstart would fail when not given an
4559 explicit filename.
4563 explicit filename.
4560
4564
4561 2004-05-09 Fernando Perez <fperez@colorado.edu>
4565 2004-05-09 Fernando Perez <fperez@colorado.edu>
4562
4566
4563 * IPython/Magic.py (Magic.parse_options): skip system call when
4567 * IPython/Magic.py (Magic.parse_options): skip system call when
4564 there are no options to look for. Faster, cleaner for the common
4568 there are no options to look for. Faster, cleaner for the common
4565 case.
4569 case.
4566
4570
4567 * Documentation: many updates to the manual: describing Windows
4571 * Documentation: many updates to the manual: describing Windows
4568 support better, Gnuplot updates, credits, misc small stuff. Also
4572 support better, Gnuplot updates, credits, misc small stuff. Also
4569 updated the new_design doc a bit.
4573 updated the new_design doc a bit.
4570
4574
4571 2004-05-06 *** Released version 0.6.0.rc1
4575 2004-05-06 *** Released version 0.6.0.rc1
4572
4576
4573 2004-05-06 Fernando Perez <fperez@colorado.edu>
4577 2004-05-06 Fernando Perez <fperez@colorado.edu>
4574
4578
4575 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4579 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4576 operations to use the vastly more efficient list/''.join() method.
4580 operations to use the vastly more efficient list/''.join() method.
4577 (FormattedTB.text): Fix
4581 (FormattedTB.text): Fix
4578 http://www.scipy.net/roundup/ipython/issue12 - exception source
4582 http://www.scipy.net/roundup/ipython/issue12 - exception source
4579 extract not updated after reload. Thanks to Mike Salib
4583 extract not updated after reload. Thanks to Mike Salib
4580 <msalib-AT-mit.edu> for pinning the source of the problem.
4584 <msalib-AT-mit.edu> for pinning the source of the problem.
4581 Fortunately, the solution works inside ipython and doesn't require
4585 Fortunately, the solution works inside ipython and doesn't require
4582 any changes to python proper.
4586 any changes to python proper.
4583
4587
4584 * IPython/Magic.py (Magic.parse_options): Improved to process the
4588 * IPython/Magic.py (Magic.parse_options): Improved to process the
4585 argument list as a true shell would (by actually using the
4589 argument list as a true shell would (by actually using the
4586 underlying system shell). This way, all @magics automatically get
4590 underlying system shell). This way, all @magics automatically get
4587 shell expansion for variables. Thanks to a comment by Alex
4591 shell expansion for variables. Thanks to a comment by Alex
4588 Schmolck.
4592 Schmolck.
4589
4593
4590 2004-04-04 Fernando Perez <fperez@colorado.edu>
4594 2004-04-04 Fernando Perez <fperez@colorado.edu>
4591
4595
4592 * IPython/iplib.py (InteractiveShell.interact): Added a special
4596 * IPython/iplib.py (InteractiveShell.interact): Added a special
4593 trap for a debugger quit exception, which is basically impossible
4597 trap for a debugger quit exception, which is basically impossible
4594 to handle by normal mechanisms, given what pdb does to the stack.
4598 to handle by normal mechanisms, given what pdb does to the stack.
4595 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4599 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4596
4600
4597 2004-04-03 Fernando Perez <fperez@colorado.edu>
4601 2004-04-03 Fernando Perez <fperez@colorado.edu>
4598
4602
4599 * IPython/genutils.py (Term): Standardized the names of the Term
4603 * IPython/genutils.py (Term): Standardized the names of the Term
4600 class streams to cin/cout/cerr, following C++ naming conventions
4604 class streams to cin/cout/cerr, following C++ naming conventions
4601 (I can't use in/out/err because 'in' is not a valid attribute
4605 (I can't use in/out/err because 'in' is not a valid attribute
4602 name).
4606 name).
4603
4607
4604 * IPython/iplib.py (InteractiveShell.interact): don't increment
4608 * IPython/iplib.py (InteractiveShell.interact): don't increment
4605 the prompt if there's no user input. By Daniel 'Dang' Griffith
4609 the prompt if there's no user input. By Daniel 'Dang' Griffith
4606 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4610 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4607 Francois Pinard.
4611 Francois Pinard.
4608
4612
4609 2004-04-02 Fernando Perez <fperez@colorado.edu>
4613 2004-04-02 Fernando Perez <fperez@colorado.edu>
4610
4614
4611 * IPython/genutils.py (Stream.__init__): Modified to survive at
4615 * IPython/genutils.py (Stream.__init__): Modified to survive at
4612 least importing in contexts where stdin/out/err aren't true file
4616 least importing in contexts where stdin/out/err aren't true file
4613 objects, such as PyCrust (they lack fileno() and mode). However,
4617 objects, such as PyCrust (they lack fileno() and mode). However,
4614 the recovery facilities which rely on these things existing will
4618 the recovery facilities which rely on these things existing will
4615 not work.
4619 not work.
4616
4620
4617 2004-04-01 Fernando Perez <fperez@colorado.edu>
4621 2004-04-01 Fernando Perez <fperez@colorado.edu>
4618
4622
4619 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4623 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4620 use the new getoutputerror() function, so it properly
4624 use the new getoutputerror() function, so it properly
4621 distinguishes stdout/err.
4625 distinguishes stdout/err.
4622
4626
4623 * IPython/genutils.py (getoutputerror): added a function to
4627 * IPython/genutils.py (getoutputerror): added a function to
4624 capture separately the standard output and error of a command.
4628 capture separately the standard output and error of a command.
4625 After a comment from dang on the mailing lists. This code is
4629 After a comment from dang on the mailing lists. This code is
4626 basically a modified version of commands.getstatusoutput(), from
4630 basically a modified version of commands.getstatusoutput(), from
4627 the standard library.
4631 the standard library.
4628
4632
4629 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4633 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4630 '!!' as a special syntax (shorthand) to access @sx.
4634 '!!' as a special syntax (shorthand) to access @sx.
4631
4635
4632 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4636 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4633 command and return its output as a list split on '\n'.
4637 command and return its output as a list split on '\n'.
4634
4638
4635 2004-03-31 Fernando Perez <fperez@colorado.edu>
4639 2004-03-31 Fernando Perez <fperez@colorado.edu>
4636
4640
4637 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4641 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4638 method to dictionaries used as FakeModule instances if they lack
4642 method to dictionaries used as FakeModule instances if they lack
4639 it. At least pydoc in python2.3 breaks for runtime-defined
4643 it. At least pydoc in python2.3 breaks for runtime-defined
4640 functions without this hack. At some point I need to _really_
4644 functions without this hack. At some point I need to _really_
4641 understand what FakeModule is doing, because it's a gross hack.
4645 understand what FakeModule is doing, because it's a gross hack.
4642 But it solves Arnd's problem for now...
4646 But it solves Arnd's problem for now...
4643
4647
4644 2004-02-27 Fernando Perez <fperez@colorado.edu>
4648 2004-02-27 Fernando Perez <fperez@colorado.edu>
4645
4649
4646 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4650 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4647 mode would behave erratically. Also increased the number of
4651 mode would behave erratically. Also increased the number of
4648 possible logs in rotate mod to 999. Thanks to Rod Holland
4652 possible logs in rotate mod to 999. Thanks to Rod Holland
4649 <rhh@StructureLABS.com> for the report and fixes.
4653 <rhh@StructureLABS.com> for the report and fixes.
4650
4654
4651 2004-02-26 Fernando Perez <fperez@colorado.edu>
4655 2004-02-26 Fernando Perez <fperez@colorado.edu>
4652
4656
4653 * IPython/genutils.py (page): Check that the curses module really
4657 * IPython/genutils.py (page): Check that the curses module really
4654 has the initscr attribute before trying to use it. For some
4658 has the initscr attribute before trying to use it. For some
4655 reason, the Solaris curses module is missing this. I think this
4659 reason, the Solaris curses module is missing this. I think this
4656 should be considered a Solaris python bug, but I'm not sure.
4660 should be considered a Solaris python bug, but I'm not sure.
4657
4661
4658 2004-01-17 Fernando Perez <fperez@colorado.edu>
4662 2004-01-17 Fernando Perez <fperez@colorado.edu>
4659
4663
4660 * IPython/genutils.py (Stream.__init__): Changes to try to make
4664 * IPython/genutils.py (Stream.__init__): Changes to try to make
4661 ipython robust against stdin/out/err being closed by the user.
4665 ipython robust against stdin/out/err being closed by the user.
4662 This is 'user error' (and blocks a normal python session, at least
4666 This is 'user error' (and blocks a normal python session, at least
4663 the stdout case). However, Ipython should be able to survive such
4667 the stdout case). However, Ipython should be able to survive such
4664 instances of abuse as gracefully as possible. To simplify the
4668 instances of abuse as gracefully as possible. To simplify the
4665 coding and maintain compatibility with Gary Bishop's Term
4669 coding and maintain compatibility with Gary Bishop's Term
4666 contributions, I've made use of classmethods for this. I think
4670 contributions, I've made use of classmethods for this. I think
4667 this introduces a dependency on python 2.2.
4671 this introduces a dependency on python 2.2.
4668
4672
4669 2004-01-13 Fernando Perez <fperez@colorado.edu>
4673 2004-01-13 Fernando Perez <fperez@colorado.edu>
4670
4674
4671 * IPython/numutils.py (exp_safe): simplified the code a bit and
4675 * IPython/numutils.py (exp_safe): simplified the code a bit and
4672 removed the need for importing the kinds module altogether.
4676 removed the need for importing the kinds module altogether.
4673
4677
4674 2004-01-06 Fernando Perez <fperez@colorado.edu>
4678 2004-01-06 Fernando Perez <fperez@colorado.edu>
4675
4679
4676 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4680 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4677 a magic function instead, after some community feedback. No
4681 a magic function instead, after some community feedback. No
4678 special syntax will exist for it, but its name is deliberately
4682 special syntax will exist for it, but its name is deliberately
4679 very short.
4683 very short.
4680
4684
4681 2003-12-20 Fernando Perez <fperez@colorado.edu>
4685 2003-12-20 Fernando Perez <fperez@colorado.edu>
4682
4686
4683 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4687 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4684 new functionality, to automagically assign the result of a shell
4688 new functionality, to automagically assign the result of a shell
4685 command to a variable. I'll solicit some community feedback on
4689 command to a variable. I'll solicit some community feedback on
4686 this before making it permanent.
4690 this before making it permanent.
4687
4691
4688 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4692 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4689 requested about callables for which inspect couldn't obtain a
4693 requested about callables for which inspect couldn't obtain a
4690 proper argspec. Thanks to a crash report sent by Etienne
4694 proper argspec. Thanks to a crash report sent by Etienne
4691 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4695 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4692
4696
4693 2003-12-09 Fernando Perez <fperez@colorado.edu>
4697 2003-12-09 Fernando Perez <fperez@colorado.edu>
4694
4698
4695 * IPython/genutils.py (page): patch for the pager to work across
4699 * IPython/genutils.py (page): patch for the pager to work across
4696 various versions of Windows. By Gary Bishop.
4700 various versions of Windows. By Gary Bishop.
4697
4701
4698 2003-12-04 Fernando Perez <fperez@colorado.edu>
4702 2003-12-04 Fernando Perez <fperez@colorado.edu>
4699
4703
4700 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4704 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4701 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4705 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4702 While I tested this and it looks ok, there may still be corner
4706 While I tested this and it looks ok, there may still be corner
4703 cases I've missed.
4707 cases I've missed.
4704
4708
4705 2003-12-01 Fernando Perez <fperez@colorado.edu>
4709 2003-12-01 Fernando Perez <fperez@colorado.edu>
4706
4710
4707 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4711 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4708 where a line like 'p,q=1,2' would fail because the automagic
4712 where a line like 'p,q=1,2' would fail because the automagic
4709 system would be triggered for @p.
4713 system would be triggered for @p.
4710
4714
4711 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4715 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4712 cleanups, code unmodified.
4716 cleanups, code unmodified.
4713
4717
4714 * IPython/genutils.py (Term): added a class for IPython to handle
4718 * IPython/genutils.py (Term): added a class for IPython to handle
4715 output. In most cases it will just be a proxy for stdout/err, but
4719 output. In most cases it will just be a proxy for stdout/err, but
4716 having this allows modifications to be made for some platforms,
4720 having this allows modifications to be made for some platforms,
4717 such as handling color escapes under Windows. All of this code
4721 such as handling color escapes under Windows. All of this code
4718 was contributed by Gary Bishop, with minor modifications by me.
4722 was contributed by Gary Bishop, with minor modifications by me.
4719 The actual changes affect many files.
4723 The actual changes affect many files.
4720
4724
4721 2003-11-30 Fernando Perez <fperez@colorado.edu>
4725 2003-11-30 Fernando Perez <fperez@colorado.edu>
4722
4726
4723 * IPython/iplib.py (file_matches): new completion code, courtesy
4727 * IPython/iplib.py (file_matches): new completion code, courtesy
4724 of Jeff Collins. This enables filename completion again under
4728 of Jeff Collins. This enables filename completion again under
4725 python 2.3, which disabled it at the C level.
4729 python 2.3, which disabled it at the C level.
4726
4730
4727 2003-11-11 Fernando Perez <fperez@colorado.edu>
4731 2003-11-11 Fernando Perez <fperez@colorado.edu>
4728
4732
4729 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4733 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4730 for Numeric.array(map(...)), but often convenient.
4734 for Numeric.array(map(...)), but often convenient.
4731
4735
4732 2003-11-05 Fernando Perez <fperez@colorado.edu>
4736 2003-11-05 Fernando Perez <fperez@colorado.edu>
4733
4737
4734 * IPython/numutils.py (frange): Changed a call from int() to
4738 * IPython/numutils.py (frange): Changed a call from int() to
4735 int(round()) to prevent a problem reported with arange() in the
4739 int(round()) to prevent a problem reported with arange() in the
4736 numpy list.
4740 numpy list.
4737
4741
4738 2003-10-06 Fernando Perez <fperez@colorado.edu>
4742 2003-10-06 Fernando Perez <fperez@colorado.edu>
4739
4743
4740 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4744 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4741 prevent crashes if sys lacks an argv attribute (it happens with
4745 prevent crashes if sys lacks an argv attribute (it happens with
4742 embedded interpreters which build a bare-bones sys module).
4746 embedded interpreters which build a bare-bones sys module).
4743 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4747 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4744
4748
4745 2003-09-24 Fernando Perez <fperez@colorado.edu>
4749 2003-09-24 Fernando Perez <fperez@colorado.edu>
4746
4750
4747 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4751 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4748 to protect against poorly written user objects where __getattr__
4752 to protect against poorly written user objects where __getattr__
4749 raises exceptions other than AttributeError. Thanks to a bug
4753 raises exceptions other than AttributeError. Thanks to a bug
4750 report by Oliver Sander <osander-AT-gmx.de>.
4754 report by Oliver Sander <osander-AT-gmx.de>.
4751
4755
4752 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4756 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4753 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4757 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4754
4758
4755 2003-09-09 Fernando Perez <fperez@colorado.edu>
4759 2003-09-09 Fernando Perez <fperez@colorado.edu>
4756
4760
4757 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4761 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4758 unpacking a list whith a callable as first element would
4762 unpacking a list whith a callable as first element would
4759 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4763 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4760 Collins.
4764 Collins.
4761
4765
4762 2003-08-25 *** Released version 0.5.0
4766 2003-08-25 *** Released version 0.5.0
4763
4767
4764 2003-08-22 Fernando Perez <fperez@colorado.edu>
4768 2003-08-22 Fernando Perez <fperez@colorado.edu>
4765
4769
4766 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4770 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4767 improperly defined user exceptions. Thanks to feedback from Mark
4771 improperly defined user exceptions. Thanks to feedback from Mark
4768 Russell <mrussell-AT-verio.net>.
4772 Russell <mrussell-AT-verio.net>.
4769
4773
4770 2003-08-20 Fernando Perez <fperez@colorado.edu>
4774 2003-08-20 Fernando Perez <fperez@colorado.edu>
4771
4775
4772 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4776 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4773 printing so that it would print multi-line string forms starting
4777 printing so that it would print multi-line string forms starting
4774 with a new line. This way the formatting is better respected for
4778 with a new line. This way the formatting is better respected for
4775 objects which work hard to make nice string forms.
4779 objects which work hard to make nice string forms.
4776
4780
4777 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4781 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4778 autocall would overtake data access for objects with both
4782 autocall would overtake data access for objects with both
4779 __getitem__ and __call__.
4783 __getitem__ and __call__.
4780
4784
4781 2003-08-19 *** Released version 0.5.0-rc1
4785 2003-08-19 *** Released version 0.5.0-rc1
4782
4786
4783 2003-08-19 Fernando Perez <fperez@colorado.edu>
4787 2003-08-19 Fernando Perez <fperez@colorado.edu>
4784
4788
4785 * IPython/deep_reload.py (load_tail): single tiny change here
4789 * IPython/deep_reload.py (load_tail): single tiny change here
4786 seems to fix the long-standing bug of dreload() failing to work
4790 seems to fix the long-standing bug of dreload() failing to work
4787 for dotted names. But this module is pretty tricky, so I may have
4791 for dotted names. But this module is pretty tricky, so I may have
4788 missed some subtlety. Needs more testing!.
4792 missed some subtlety. Needs more testing!.
4789
4793
4790 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4794 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4791 exceptions which have badly implemented __str__ methods.
4795 exceptions which have badly implemented __str__ methods.
4792 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4796 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4793 which I've been getting reports about from Python 2.3 users. I
4797 which I've been getting reports about from Python 2.3 users. I
4794 wish I had a simple test case to reproduce the problem, so I could
4798 wish I had a simple test case to reproduce the problem, so I could
4795 either write a cleaner workaround or file a bug report if
4799 either write a cleaner workaround or file a bug report if
4796 necessary.
4800 necessary.
4797
4801
4798 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4802 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4799 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4803 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4800 a bug report by Tjabo Kloppenburg.
4804 a bug report by Tjabo Kloppenburg.
4801
4805
4802 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4806 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4803 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4807 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4804 seems rather unstable. Thanks to a bug report by Tjabo
4808 seems rather unstable. Thanks to a bug report by Tjabo
4805 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4809 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4806
4810
4807 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4811 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4808 this out soon because of the critical fixes in the inner loop for
4812 this out soon because of the critical fixes in the inner loop for
4809 generators.
4813 generators.
4810
4814
4811 * IPython/Magic.py (Magic.getargspec): removed. This (and
4815 * IPython/Magic.py (Magic.getargspec): removed. This (and
4812 _get_def) have been obsoleted by OInspect for a long time, I
4816 _get_def) have been obsoleted by OInspect for a long time, I
4813 hadn't noticed that they were dead code.
4817 hadn't noticed that they were dead code.
4814 (Magic._ofind): restored _ofind functionality for a few literals
4818 (Magic._ofind): restored _ofind functionality for a few literals
4815 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4819 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4816 for things like "hello".capitalize?, since that would require a
4820 for things like "hello".capitalize?, since that would require a
4817 potentially dangerous eval() again.
4821 potentially dangerous eval() again.
4818
4822
4819 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4823 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4820 logic a bit more to clean up the escapes handling and minimize the
4824 logic a bit more to clean up the escapes handling and minimize the
4821 use of _ofind to only necessary cases. The interactive 'feel' of
4825 use of _ofind to only necessary cases. The interactive 'feel' of
4822 IPython should have improved quite a bit with the changes in
4826 IPython should have improved quite a bit with the changes in
4823 _prefilter and _ofind (besides being far safer than before).
4827 _prefilter and _ofind (besides being far safer than before).
4824
4828
4825 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4829 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4826 obscure, never reported). Edit would fail to find the object to
4830 obscure, never reported). Edit would fail to find the object to
4827 edit under some circumstances.
4831 edit under some circumstances.
4828 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4832 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4829 which were causing double-calling of generators. Those eval calls
4833 which were causing double-calling of generators. Those eval calls
4830 were _very_ dangerous, since code with side effects could be
4834 were _very_ dangerous, since code with side effects could be
4831 triggered. As they say, 'eval is evil'... These were the
4835 triggered. As they say, 'eval is evil'... These were the
4832 nastiest evals in IPython. Besides, _ofind is now far simpler,
4836 nastiest evals in IPython. Besides, _ofind is now far simpler,
4833 and it should also be quite a bit faster. Its use of inspect is
4837 and it should also be quite a bit faster. Its use of inspect is
4834 also safer, so perhaps some of the inspect-related crashes I've
4838 also safer, so perhaps some of the inspect-related crashes I've
4835 seen lately with Python 2.3 might be taken care of. That will
4839 seen lately with Python 2.3 might be taken care of. That will
4836 need more testing.
4840 need more testing.
4837
4841
4838 2003-08-17 Fernando Perez <fperez@colorado.edu>
4842 2003-08-17 Fernando Perez <fperez@colorado.edu>
4839
4843
4840 * IPython/iplib.py (InteractiveShell._prefilter): significant
4844 * IPython/iplib.py (InteractiveShell._prefilter): significant
4841 simplifications to the logic for handling user escapes. Faster
4845 simplifications to the logic for handling user escapes. Faster
4842 and simpler code.
4846 and simpler code.
4843
4847
4844 2003-08-14 Fernando Perez <fperez@colorado.edu>
4848 2003-08-14 Fernando Perez <fperez@colorado.edu>
4845
4849
4846 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4850 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4847 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4851 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4848 but it should be quite a bit faster. And the recursive version
4852 but it should be quite a bit faster. And the recursive version
4849 generated O(log N) intermediate storage for all rank>1 arrays,
4853 generated O(log N) intermediate storage for all rank>1 arrays,
4850 even if they were contiguous.
4854 even if they were contiguous.
4851 (l1norm): Added this function.
4855 (l1norm): Added this function.
4852 (norm): Added this function for arbitrary norms (including
4856 (norm): Added this function for arbitrary norms (including
4853 l-infinity). l1 and l2 are still special cases for convenience
4857 l-infinity). l1 and l2 are still special cases for convenience
4854 and speed.
4858 and speed.
4855
4859
4856 2003-08-03 Fernando Perez <fperez@colorado.edu>
4860 2003-08-03 Fernando Perez <fperez@colorado.edu>
4857
4861
4858 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4862 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4859 exceptions, which now raise PendingDeprecationWarnings in Python
4863 exceptions, which now raise PendingDeprecationWarnings in Python
4860 2.3. There were some in Magic and some in Gnuplot2.
4864 2.3. There were some in Magic and some in Gnuplot2.
4861
4865
4862 2003-06-30 Fernando Perez <fperez@colorado.edu>
4866 2003-06-30 Fernando Perez <fperez@colorado.edu>
4863
4867
4864 * IPython/genutils.py (page): modified to call curses only for
4868 * IPython/genutils.py (page): modified to call curses only for
4865 terminals where TERM=='xterm'. After problems under many other
4869 terminals where TERM=='xterm'. After problems under many other
4866 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4870 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4867
4871
4868 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4872 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4869 would be triggered when readline was absent. This was just an old
4873 would be triggered when readline was absent. This was just an old
4870 debugging statement I'd forgotten to take out.
4874 debugging statement I'd forgotten to take out.
4871
4875
4872 2003-06-20 Fernando Perez <fperez@colorado.edu>
4876 2003-06-20 Fernando Perez <fperez@colorado.edu>
4873
4877
4874 * IPython/genutils.py (clock): modified to return only user time
4878 * IPython/genutils.py (clock): modified to return only user time
4875 (not counting system time), after a discussion on scipy. While
4879 (not counting system time), after a discussion on scipy. While
4876 system time may be a useful quantity occasionally, it may much
4880 system time may be a useful quantity occasionally, it may much
4877 more easily be skewed by occasional swapping or other similar
4881 more easily be skewed by occasional swapping or other similar
4878 activity.
4882 activity.
4879
4883
4880 2003-06-05 Fernando Perez <fperez@colorado.edu>
4884 2003-06-05 Fernando Perez <fperez@colorado.edu>
4881
4885
4882 * IPython/numutils.py (identity): new function, for building
4886 * IPython/numutils.py (identity): new function, for building
4883 arbitrary rank Kronecker deltas (mostly backwards compatible with
4887 arbitrary rank Kronecker deltas (mostly backwards compatible with
4884 Numeric.identity)
4888 Numeric.identity)
4885
4889
4886 2003-06-03 Fernando Perez <fperez@colorado.edu>
4890 2003-06-03 Fernando Perez <fperez@colorado.edu>
4887
4891
4888 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4892 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4889 arguments passed to magics with spaces, to allow trailing '\' to
4893 arguments passed to magics with spaces, to allow trailing '\' to
4890 work normally (mainly for Windows users).
4894 work normally (mainly for Windows users).
4891
4895
4892 2003-05-29 Fernando Perez <fperez@colorado.edu>
4896 2003-05-29 Fernando Perez <fperez@colorado.edu>
4893
4897
4894 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4898 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4895 instead of pydoc.help. This fixes a bizarre behavior where
4899 instead of pydoc.help. This fixes a bizarre behavior where
4896 printing '%s' % locals() would trigger the help system. Now
4900 printing '%s' % locals() would trigger the help system. Now
4897 ipython behaves like normal python does.
4901 ipython behaves like normal python does.
4898
4902
4899 Note that if one does 'from pydoc import help', the bizarre
4903 Note that if one does 'from pydoc import help', the bizarre
4900 behavior returns, but this will also happen in normal python, so
4904 behavior returns, but this will also happen in normal python, so
4901 it's not an ipython bug anymore (it has to do with how pydoc.help
4905 it's not an ipython bug anymore (it has to do with how pydoc.help
4902 is implemented).
4906 is implemented).
4903
4907
4904 2003-05-22 Fernando Perez <fperez@colorado.edu>
4908 2003-05-22 Fernando Perez <fperez@colorado.edu>
4905
4909
4906 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4910 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4907 return [] instead of None when nothing matches, also match to end
4911 return [] instead of None when nothing matches, also match to end
4908 of line. Patch by Gary Bishop.
4912 of line. Patch by Gary Bishop.
4909
4913
4910 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4914 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4911 protection as before, for files passed on the command line. This
4915 protection as before, for files passed on the command line. This
4912 prevents the CrashHandler from kicking in if user files call into
4916 prevents the CrashHandler from kicking in if user files call into
4913 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4917 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4914 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4918 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4915
4919
4916 2003-05-20 *** Released version 0.4.0
4920 2003-05-20 *** Released version 0.4.0
4917
4921
4918 2003-05-20 Fernando Perez <fperez@colorado.edu>
4922 2003-05-20 Fernando Perez <fperez@colorado.edu>
4919
4923
4920 * setup.py: added support for manpages. It's a bit hackish b/c of
4924 * setup.py: added support for manpages. It's a bit hackish b/c of
4921 a bug in the way the bdist_rpm distutils target handles gzipped
4925 a bug in the way the bdist_rpm distutils target handles gzipped
4922 manpages, but it works. After a patch by Jack.
4926 manpages, but it works. After a patch by Jack.
4923
4927
4924 2003-05-19 Fernando Perez <fperez@colorado.edu>
4928 2003-05-19 Fernando Perez <fperez@colorado.edu>
4925
4929
4926 * IPython/numutils.py: added a mockup of the kinds module, since
4930 * IPython/numutils.py: added a mockup of the kinds module, since
4927 it was recently removed from Numeric. This way, numutils will
4931 it was recently removed from Numeric. This way, numutils will
4928 work for all users even if they are missing kinds.
4932 work for all users even if they are missing kinds.
4929
4933
4930 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4934 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4931 failure, which can occur with SWIG-wrapped extensions. After a
4935 failure, which can occur with SWIG-wrapped extensions. After a
4932 crash report from Prabhu.
4936 crash report from Prabhu.
4933
4937
4934 2003-05-16 Fernando Perez <fperez@colorado.edu>
4938 2003-05-16 Fernando Perez <fperez@colorado.edu>
4935
4939
4936 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4940 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4937 protect ipython from user code which may call directly
4941 protect ipython from user code which may call directly
4938 sys.excepthook (this looks like an ipython crash to the user, even
4942 sys.excepthook (this looks like an ipython crash to the user, even
4939 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4943 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4940 This is especially important to help users of WxWindows, but may
4944 This is especially important to help users of WxWindows, but may
4941 also be useful in other cases.
4945 also be useful in other cases.
4942
4946
4943 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4947 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4944 an optional tb_offset to be specified, and to preserve exception
4948 an optional tb_offset to be specified, and to preserve exception
4945 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4949 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4946
4950
4947 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4951 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4948
4952
4949 2003-05-15 Fernando Perez <fperez@colorado.edu>
4953 2003-05-15 Fernando Perez <fperez@colorado.edu>
4950
4954
4951 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4955 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4952 installing for a new user under Windows.
4956 installing for a new user under Windows.
4953
4957
4954 2003-05-12 Fernando Perez <fperez@colorado.edu>
4958 2003-05-12 Fernando Perez <fperez@colorado.edu>
4955
4959
4956 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4960 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4957 handler for Emacs comint-based lines. Currently it doesn't do
4961 handler for Emacs comint-based lines. Currently it doesn't do
4958 much (but importantly, it doesn't update the history cache). In
4962 much (but importantly, it doesn't update the history cache). In
4959 the future it may be expanded if Alex needs more functionality
4963 the future it may be expanded if Alex needs more functionality
4960 there.
4964 there.
4961
4965
4962 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4966 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4963 info to crash reports.
4967 info to crash reports.
4964
4968
4965 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4969 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4966 just like Python's -c. Also fixed crash with invalid -color
4970 just like Python's -c. Also fixed crash with invalid -color
4967 option value at startup. Thanks to Will French
4971 option value at startup. Thanks to Will French
4968 <wfrench-AT-bestweb.net> for the bug report.
4972 <wfrench-AT-bestweb.net> for the bug report.
4969
4973
4970 2003-05-09 Fernando Perez <fperez@colorado.edu>
4974 2003-05-09 Fernando Perez <fperez@colorado.edu>
4971
4975
4972 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4976 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4973 to EvalDict (it's a mapping, after all) and simplified its code
4977 to EvalDict (it's a mapping, after all) and simplified its code
4974 quite a bit, after a nice discussion on c.l.py where Gustavo
4978 quite a bit, after a nice discussion on c.l.py where Gustavo
4975 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4979 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4976
4980
4977 2003-04-30 Fernando Perez <fperez@colorado.edu>
4981 2003-04-30 Fernando Perez <fperez@colorado.edu>
4978
4982
4979 * IPython/genutils.py (timings_out): modified it to reduce its
4983 * IPython/genutils.py (timings_out): modified it to reduce its
4980 overhead in the common reps==1 case.
4984 overhead in the common reps==1 case.
4981
4985
4982 2003-04-29 Fernando Perez <fperez@colorado.edu>
4986 2003-04-29 Fernando Perez <fperez@colorado.edu>
4983
4987
4984 * IPython/genutils.py (timings_out): Modified to use the resource
4988 * IPython/genutils.py (timings_out): Modified to use the resource
4985 module, which avoids the wraparound problems of time.clock().
4989 module, which avoids the wraparound problems of time.clock().
4986
4990
4987 2003-04-17 *** Released version 0.2.15pre4
4991 2003-04-17 *** Released version 0.2.15pre4
4988
4992
4989 2003-04-17 Fernando Perez <fperez@colorado.edu>
4993 2003-04-17 Fernando Perez <fperez@colorado.edu>
4990
4994
4991 * setup.py (scriptfiles): Split windows-specific stuff over to a
4995 * setup.py (scriptfiles): Split windows-specific stuff over to a
4992 separate file, in an attempt to have a Windows GUI installer.
4996 separate file, in an attempt to have a Windows GUI installer.
4993 That didn't work, but part of the groundwork is done.
4997 That didn't work, but part of the groundwork is done.
4994
4998
4995 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4999 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4996 indent/unindent with 4 spaces. Particularly useful in combination
5000 indent/unindent with 4 spaces. Particularly useful in combination
4997 with the new auto-indent option.
5001 with the new auto-indent option.
4998
5002
4999 2003-04-16 Fernando Perez <fperez@colorado.edu>
5003 2003-04-16 Fernando Perez <fperez@colorado.edu>
5000
5004
5001 * IPython/Magic.py: various replacements of self.rc for
5005 * IPython/Magic.py: various replacements of self.rc for
5002 self.shell.rc. A lot more remains to be done to fully disentangle
5006 self.shell.rc. A lot more remains to be done to fully disentangle
5003 this class from the main Shell class.
5007 this class from the main Shell class.
5004
5008
5005 * IPython/GnuplotRuntime.py: added checks for mouse support so
5009 * IPython/GnuplotRuntime.py: added checks for mouse support so
5006 that we don't try to enable it if the current gnuplot doesn't
5010 that we don't try to enable it if the current gnuplot doesn't
5007 really support it. Also added checks so that we don't try to
5011 really support it. Also added checks so that we don't try to
5008 enable persist under Windows (where Gnuplot doesn't recognize the
5012 enable persist under Windows (where Gnuplot doesn't recognize the
5009 option).
5013 option).
5010
5014
5011 * IPython/iplib.py (InteractiveShell.interact): Added optional
5015 * IPython/iplib.py (InteractiveShell.interact): Added optional
5012 auto-indenting code, after a patch by King C. Shu
5016 auto-indenting code, after a patch by King C. Shu
5013 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5017 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5014 get along well with pasting indented code. If I ever figure out
5018 get along well with pasting indented code. If I ever figure out
5015 how to make that part go well, it will become on by default.
5019 how to make that part go well, it will become on by default.
5016
5020
5017 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5021 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5018 crash ipython if there was an unmatched '%' in the user's prompt
5022 crash ipython if there was an unmatched '%' in the user's prompt
5019 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5023 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5020
5024
5021 * IPython/iplib.py (InteractiveShell.interact): removed the
5025 * IPython/iplib.py (InteractiveShell.interact): removed the
5022 ability to ask the user whether he wants to crash or not at the
5026 ability to ask the user whether he wants to crash or not at the
5023 'last line' exception handler. Calling functions at that point
5027 'last line' exception handler. Calling functions at that point
5024 changes the stack, and the error reports would have incorrect
5028 changes the stack, and the error reports would have incorrect
5025 tracebacks.
5029 tracebacks.
5026
5030
5027 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5031 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5028 pass through a peger a pretty-printed form of any object. After a
5032 pass through a peger a pretty-printed form of any object. After a
5029 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5033 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5030
5034
5031 2003-04-14 Fernando Perez <fperez@colorado.edu>
5035 2003-04-14 Fernando Perez <fperez@colorado.edu>
5032
5036
5033 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5037 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5034 all files in ~ would be modified at first install (instead of
5038 all files in ~ would be modified at first install (instead of
5035 ~/.ipython). This could be potentially disastrous, as the
5039 ~/.ipython). This could be potentially disastrous, as the
5036 modification (make line-endings native) could damage binary files.
5040 modification (make line-endings native) could damage binary files.
5037
5041
5038 2003-04-10 Fernando Perez <fperez@colorado.edu>
5042 2003-04-10 Fernando Perez <fperez@colorado.edu>
5039
5043
5040 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5044 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5041 handle only lines which are invalid python. This now means that
5045 handle only lines which are invalid python. This now means that
5042 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5046 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5043 for the bug report.
5047 for the bug report.
5044
5048
5045 2003-04-01 Fernando Perez <fperez@colorado.edu>
5049 2003-04-01 Fernando Perez <fperez@colorado.edu>
5046
5050
5047 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5051 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5048 where failing to set sys.last_traceback would crash pdb.pm().
5052 where failing to set sys.last_traceback would crash pdb.pm().
5049 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5053 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5050 report.
5054 report.
5051
5055
5052 2003-03-25 Fernando Perez <fperez@colorado.edu>
5056 2003-03-25 Fernando Perez <fperez@colorado.edu>
5053
5057
5054 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5058 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5055 before printing it (it had a lot of spurious blank lines at the
5059 before printing it (it had a lot of spurious blank lines at the
5056 end).
5060 end).
5057
5061
5058 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5062 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5059 output would be sent 21 times! Obviously people don't use this
5063 output would be sent 21 times! Obviously people don't use this
5060 too often, or I would have heard about it.
5064 too often, or I would have heard about it.
5061
5065
5062 2003-03-24 Fernando Perez <fperez@colorado.edu>
5066 2003-03-24 Fernando Perez <fperez@colorado.edu>
5063
5067
5064 * setup.py (scriptfiles): renamed the data_files parameter from
5068 * setup.py (scriptfiles): renamed the data_files parameter from
5065 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5069 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5066 for the patch.
5070 for the patch.
5067
5071
5068 2003-03-20 Fernando Perez <fperez@colorado.edu>
5072 2003-03-20 Fernando Perez <fperez@colorado.edu>
5069
5073
5070 * IPython/genutils.py (error): added error() and fatal()
5074 * IPython/genutils.py (error): added error() and fatal()
5071 functions.
5075 functions.
5072
5076
5073 2003-03-18 *** Released version 0.2.15pre3
5077 2003-03-18 *** Released version 0.2.15pre3
5074
5078
5075 2003-03-18 Fernando Perez <fperez@colorado.edu>
5079 2003-03-18 Fernando Perez <fperez@colorado.edu>
5076
5080
5077 * setupext/install_data_ext.py
5081 * setupext/install_data_ext.py
5078 (install_data_ext.initialize_options): Class contributed by Jack
5082 (install_data_ext.initialize_options): Class contributed by Jack
5079 Moffit for fixing the old distutils hack. He is sending this to
5083 Moffit for fixing the old distutils hack. He is sending this to
5080 the distutils folks so in the future we may not need it as a
5084 the distutils folks so in the future we may not need it as a
5081 private fix.
5085 private fix.
5082
5086
5083 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5087 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5084 changes for Debian packaging. See his patch for full details.
5088 changes for Debian packaging. See his patch for full details.
5085 The old distutils hack of making the ipythonrc* files carry a
5089 The old distutils hack of making the ipythonrc* files carry a
5086 bogus .py extension is gone, at last. Examples were moved to a
5090 bogus .py extension is gone, at last. Examples were moved to a
5087 separate subdir under doc/, and the separate executable scripts
5091 separate subdir under doc/, and the separate executable scripts
5088 now live in their own directory. Overall a great cleanup. The
5092 now live in their own directory. Overall a great cleanup. The
5089 manual was updated to use the new files, and setup.py has been
5093 manual was updated to use the new files, and setup.py has been
5090 fixed for this setup.
5094 fixed for this setup.
5091
5095
5092 * IPython/PyColorize.py (Parser.usage): made non-executable and
5096 * IPython/PyColorize.py (Parser.usage): made non-executable and
5093 created a pycolor wrapper around it to be included as a script.
5097 created a pycolor wrapper around it to be included as a script.
5094
5098
5095 2003-03-12 *** Released version 0.2.15pre2
5099 2003-03-12 *** Released version 0.2.15pre2
5096
5100
5097 2003-03-12 Fernando Perez <fperez@colorado.edu>
5101 2003-03-12 Fernando Perez <fperez@colorado.edu>
5098
5102
5099 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5103 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5100 long-standing problem with garbage characters in some terminals.
5104 long-standing problem with garbage characters in some terminals.
5101 The issue was really that the \001 and \002 escapes must _only_ be
5105 The issue was really that the \001 and \002 escapes must _only_ be
5102 passed to input prompts (which call readline), but _never_ to
5106 passed to input prompts (which call readline), but _never_ to
5103 normal text to be printed on screen. I changed ColorANSI to have
5107 normal text to be printed on screen. I changed ColorANSI to have
5104 two classes: TermColors and InputTermColors, each with the
5108 two classes: TermColors and InputTermColors, each with the
5105 appropriate escapes for input prompts or normal text. The code in
5109 appropriate escapes for input prompts or normal text. The code in
5106 Prompts.py got slightly more complicated, but this very old and
5110 Prompts.py got slightly more complicated, but this very old and
5107 annoying bug is finally fixed.
5111 annoying bug is finally fixed.
5108
5112
5109 All the credit for nailing down the real origin of this problem
5113 All the credit for nailing down the real origin of this problem
5110 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5114 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5111 *Many* thanks to him for spending quite a bit of effort on this.
5115 *Many* thanks to him for spending quite a bit of effort on this.
5112
5116
5113 2003-03-05 *** Released version 0.2.15pre1
5117 2003-03-05 *** Released version 0.2.15pre1
5114
5118
5115 2003-03-03 Fernando Perez <fperez@colorado.edu>
5119 2003-03-03 Fernando Perez <fperez@colorado.edu>
5116
5120
5117 * IPython/FakeModule.py: Moved the former _FakeModule to a
5121 * IPython/FakeModule.py: Moved the former _FakeModule to a
5118 separate file, because it's also needed by Magic (to fix a similar
5122 separate file, because it's also needed by Magic (to fix a similar
5119 pickle-related issue in @run).
5123 pickle-related issue in @run).
5120
5124
5121 2003-03-02 Fernando Perez <fperez@colorado.edu>
5125 2003-03-02 Fernando Perez <fperez@colorado.edu>
5122
5126
5123 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5127 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5124 the autocall option at runtime.
5128 the autocall option at runtime.
5125 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5129 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5126 across Magic.py to start separating Magic from InteractiveShell.
5130 across Magic.py to start separating Magic from InteractiveShell.
5127 (Magic._ofind): Fixed to return proper namespace for dotted
5131 (Magic._ofind): Fixed to return proper namespace for dotted
5128 names. Before, a dotted name would always return 'not currently
5132 names. Before, a dotted name would always return 'not currently
5129 defined', because it would find the 'parent'. s.x would be found,
5133 defined', because it would find the 'parent'. s.x would be found,
5130 but since 'x' isn't defined by itself, it would get confused.
5134 but since 'x' isn't defined by itself, it would get confused.
5131 (Magic.magic_run): Fixed pickling problems reported by Ralf
5135 (Magic.magic_run): Fixed pickling problems reported by Ralf
5132 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5136 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5133 that I'd used when Mike Heeter reported similar issues at the
5137 that I'd used when Mike Heeter reported similar issues at the
5134 top-level, but now for @run. It boils down to injecting the
5138 top-level, but now for @run. It boils down to injecting the
5135 namespace where code is being executed with something that looks
5139 namespace where code is being executed with something that looks
5136 enough like a module to fool pickle.dump(). Since a pickle stores
5140 enough like a module to fool pickle.dump(). Since a pickle stores
5137 a named reference to the importing module, we need this for
5141 a named reference to the importing module, we need this for
5138 pickles to save something sensible.
5142 pickles to save something sensible.
5139
5143
5140 * IPython/ipmaker.py (make_IPython): added an autocall option.
5144 * IPython/ipmaker.py (make_IPython): added an autocall option.
5141
5145
5142 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5146 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5143 the auto-eval code. Now autocalling is an option, and the code is
5147 the auto-eval code. Now autocalling is an option, and the code is
5144 also vastly safer. There is no more eval() involved at all.
5148 also vastly safer. There is no more eval() involved at all.
5145
5149
5146 2003-03-01 Fernando Perez <fperez@colorado.edu>
5150 2003-03-01 Fernando Perez <fperez@colorado.edu>
5147
5151
5148 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5152 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5149 dict with named keys instead of a tuple.
5153 dict with named keys instead of a tuple.
5150
5154
5151 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5155 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5152
5156
5153 * setup.py (make_shortcut): Fixed message about directories
5157 * setup.py (make_shortcut): Fixed message about directories
5154 created during Windows installation (the directories were ok, just
5158 created during Windows installation (the directories were ok, just
5155 the printed message was misleading). Thanks to Chris Liechti
5159 the printed message was misleading). Thanks to Chris Liechti
5156 <cliechti-AT-gmx.net> for the heads up.
5160 <cliechti-AT-gmx.net> for the heads up.
5157
5161
5158 2003-02-21 Fernando Perez <fperez@colorado.edu>
5162 2003-02-21 Fernando Perez <fperez@colorado.edu>
5159
5163
5160 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5164 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5161 of ValueError exception when checking for auto-execution. This
5165 of ValueError exception when checking for auto-execution. This
5162 one is raised by things like Numeric arrays arr.flat when the
5166 one is raised by things like Numeric arrays arr.flat when the
5163 array is non-contiguous.
5167 array is non-contiguous.
5164
5168
5165 2003-01-31 Fernando Perez <fperez@colorado.edu>
5169 2003-01-31 Fernando Perez <fperez@colorado.edu>
5166
5170
5167 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5171 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5168 not return any value at all (even though the command would get
5172 not return any value at all (even though the command would get
5169 executed).
5173 executed).
5170 (xsys): Flush stdout right after printing the command to ensure
5174 (xsys): Flush stdout right after printing the command to ensure
5171 proper ordering of commands and command output in the total
5175 proper ordering of commands and command output in the total
5172 output.
5176 output.
5173 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5177 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5174 system/getoutput as defaults. The old ones are kept for
5178 system/getoutput as defaults. The old ones are kept for
5175 compatibility reasons, so no code which uses this library needs
5179 compatibility reasons, so no code which uses this library needs
5176 changing.
5180 changing.
5177
5181
5178 2003-01-27 *** Released version 0.2.14
5182 2003-01-27 *** Released version 0.2.14
5179
5183
5180 2003-01-25 Fernando Perez <fperez@colorado.edu>
5184 2003-01-25 Fernando Perez <fperez@colorado.edu>
5181
5185
5182 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5186 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5183 functions defined in previous edit sessions could not be re-edited
5187 functions defined in previous edit sessions could not be re-edited
5184 (because the temp files were immediately removed). Now temp files
5188 (because the temp files were immediately removed). Now temp files
5185 are removed only at IPython's exit.
5189 are removed only at IPython's exit.
5186 (Magic.magic_run): Improved @run to perform shell-like expansions
5190 (Magic.magic_run): Improved @run to perform shell-like expansions
5187 on its arguments (~users and $VARS). With this, @run becomes more
5191 on its arguments (~users and $VARS). With this, @run becomes more
5188 like a normal command-line.
5192 like a normal command-line.
5189
5193
5190 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5194 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5191 bugs related to embedding and cleaned up that code. A fairly
5195 bugs related to embedding and cleaned up that code. A fairly
5192 important one was the impossibility to access the global namespace
5196 important one was the impossibility to access the global namespace
5193 through the embedded IPython (only local variables were visible).
5197 through the embedded IPython (only local variables were visible).
5194
5198
5195 2003-01-14 Fernando Perez <fperez@colorado.edu>
5199 2003-01-14 Fernando Perez <fperez@colorado.edu>
5196
5200
5197 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5201 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5198 auto-calling to be a bit more conservative. Now it doesn't get
5202 auto-calling to be a bit more conservative. Now it doesn't get
5199 triggered if any of '!=()<>' are in the rest of the input line, to
5203 triggered if any of '!=()<>' are in the rest of the input line, to
5200 allow comparing callables. Thanks to Alex for the heads up.
5204 allow comparing callables. Thanks to Alex for the heads up.
5201
5205
5202 2003-01-07 Fernando Perez <fperez@colorado.edu>
5206 2003-01-07 Fernando Perez <fperez@colorado.edu>
5203
5207
5204 * IPython/genutils.py (page): fixed estimation of the number of
5208 * IPython/genutils.py (page): fixed estimation of the number of
5205 lines in a string to be paged to simply count newlines. This
5209 lines in a string to be paged to simply count newlines. This
5206 prevents over-guessing due to embedded escape sequences. A better
5210 prevents over-guessing due to embedded escape sequences. A better
5207 long-term solution would involve stripping out the control chars
5211 long-term solution would involve stripping out the control chars
5208 for the count, but it's potentially so expensive I just don't
5212 for the count, but it's potentially so expensive I just don't
5209 think it's worth doing.
5213 think it's worth doing.
5210
5214
5211 2002-12-19 *** Released version 0.2.14pre50
5215 2002-12-19 *** Released version 0.2.14pre50
5212
5216
5213 2002-12-19 Fernando Perez <fperez@colorado.edu>
5217 2002-12-19 Fernando Perez <fperez@colorado.edu>
5214
5218
5215 * tools/release (version): Changed release scripts to inform
5219 * tools/release (version): Changed release scripts to inform
5216 Andrea and build a NEWS file with a list of recent changes.
5220 Andrea and build a NEWS file with a list of recent changes.
5217
5221
5218 * IPython/ColorANSI.py (__all__): changed terminal detection
5222 * IPython/ColorANSI.py (__all__): changed terminal detection
5219 code. Seems to work better for xterms without breaking
5223 code. Seems to work better for xterms without breaking
5220 konsole. Will need more testing to determine if WinXP and Mac OSX
5224 konsole. Will need more testing to determine if WinXP and Mac OSX
5221 also work ok.
5225 also work ok.
5222
5226
5223 2002-12-18 *** Released version 0.2.14pre49
5227 2002-12-18 *** Released version 0.2.14pre49
5224
5228
5225 2002-12-18 Fernando Perez <fperez@colorado.edu>
5229 2002-12-18 Fernando Perez <fperez@colorado.edu>
5226
5230
5227 * Docs: added new info about Mac OSX, from Andrea.
5231 * Docs: added new info about Mac OSX, from Andrea.
5228
5232
5229 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5233 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5230 allow direct plotting of python strings whose format is the same
5234 allow direct plotting of python strings whose format is the same
5231 of gnuplot data files.
5235 of gnuplot data files.
5232
5236
5233 2002-12-16 Fernando Perez <fperez@colorado.edu>
5237 2002-12-16 Fernando Perez <fperez@colorado.edu>
5234
5238
5235 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5239 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5236 value of exit question to be acknowledged.
5240 value of exit question to be acknowledged.
5237
5241
5238 2002-12-03 Fernando Perez <fperez@colorado.edu>
5242 2002-12-03 Fernando Perez <fperez@colorado.edu>
5239
5243
5240 * IPython/ipmaker.py: removed generators, which had been added
5244 * IPython/ipmaker.py: removed generators, which had been added
5241 by mistake in an earlier debugging run. This was causing trouble
5245 by mistake in an earlier debugging run. This was causing trouble
5242 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5246 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5243 for pointing this out.
5247 for pointing this out.
5244
5248
5245 2002-11-17 Fernando Perez <fperez@colorado.edu>
5249 2002-11-17 Fernando Perez <fperez@colorado.edu>
5246
5250
5247 * Manual: updated the Gnuplot section.
5251 * Manual: updated the Gnuplot section.
5248
5252
5249 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5253 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5250 a much better split of what goes in Runtime and what goes in
5254 a much better split of what goes in Runtime and what goes in
5251 Interactive.
5255 Interactive.
5252
5256
5253 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5257 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5254 being imported from iplib.
5258 being imported from iplib.
5255
5259
5256 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5260 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5257 for command-passing. Now the global Gnuplot instance is called
5261 for command-passing. Now the global Gnuplot instance is called
5258 'gp' instead of 'g', which was really a far too fragile and
5262 'gp' instead of 'g', which was really a far too fragile and
5259 common name.
5263 common name.
5260
5264
5261 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5265 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5262 bounding boxes generated by Gnuplot for square plots.
5266 bounding boxes generated by Gnuplot for square plots.
5263
5267
5264 * IPython/genutils.py (popkey): new function added. I should
5268 * IPython/genutils.py (popkey): new function added. I should
5265 suggest this on c.l.py as a dict method, it seems useful.
5269 suggest this on c.l.py as a dict method, it seems useful.
5266
5270
5267 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5271 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5268 to transparently handle PostScript generation. MUCH better than
5272 to transparently handle PostScript generation. MUCH better than
5269 the previous plot_eps/replot_eps (which I removed now). The code
5273 the previous plot_eps/replot_eps (which I removed now). The code
5270 is also fairly clean and well documented now (including
5274 is also fairly clean and well documented now (including
5271 docstrings).
5275 docstrings).
5272
5276
5273 2002-11-13 Fernando Perez <fperez@colorado.edu>
5277 2002-11-13 Fernando Perez <fperez@colorado.edu>
5274
5278
5275 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5279 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5276 (inconsistent with options).
5280 (inconsistent with options).
5277
5281
5278 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5282 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5279 manually disabled, I don't know why. Fixed it.
5283 manually disabled, I don't know why. Fixed it.
5280 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5284 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5281 eps output.
5285 eps output.
5282
5286
5283 2002-11-12 Fernando Perez <fperez@colorado.edu>
5287 2002-11-12 Fernando Perez <fperez@colorado.edu>
5284
5288
5285 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5289 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5286 don't propagate up to caller. Fixes crash reported by François
5290 don't propagate up to caller. Fixes crash reported by François
5287 Pinard.
5291 Pinard.
5288
5292
5289 2002-11-09 Fernando Perez <fperez@colorado.edu>
5293 2002-11-09 Fernando Perez <fperez@colorado.edu>
5290
5294
5291 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5295 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5292 history file for new users.
5296 history file for new users.
5293 (make_IPython): fixed bug where initial install would leave the
5297 (make_IPython): fixed bug where initial install would leave the
5294 user running in the .ipython dir.
5298 user running in the .ipython dir.
5295 (make_IPython): fixed bug where config dir .ipython would be
5299 (make_IPython): fixed bug where config dir .ipython would be
5296 created regardless of the given -ipythondir option. Thanks to Cory
5300 created regardless of the given -ipythondir option. Thanks to Cory
5297 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5301 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5298
5302
5299 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5303 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5300 type confirmations. Will need to use it in all of IPython's code
5304 type confirmations. Will need to use it in all of IPython's code
5301 consistently.
5305 consistently.
5302
5306
5303 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5307 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5304 context to print 31 lines instead of the default 5. This will make
5308 context to print 31 lines instead of the default 5. This will make
5305 the crash reports extremely detailed in case the problem is in
5309 the crash reports extremely detailed in case the problem is in
5306 libraries I don't have access to.
5310 libraries I don't have access to.
5307
5311
5308 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5312 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5309 line of defense' code to still crash, but giving users fair
5313 line of defense' code to still crash, but giving users fair
5310 warning. I don't want internal errors to go unreported: if there's
5314 warning. I don't want internal errors to go unreported: if there's
5311 an internal problem, IPython should crash and generate a full
5315 an internal problem, IPython should crash and generate a full
5312 report.
5316 report.
5313
5317
5314 2002-11-08 Fernando Perez <fperez@colorado.edu>
5318 2002-11-08 Fernando Perez <fperez@colorado.edu>
5315
5319
5316 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5320 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5317 otherwise uncaught exceptions which can appear if people set
5321 otherwise uncaught exceptions which can appear if people set
5318 sys.stdout to something badly broken. Thanks to a crash report
5322 sys.stdout to something badly broken. Thanks to a crash report
5319 from henni-AT-mail.brainbot.com.
5323 from henni-AT-mail.brainbot.com.
5320
5324
5321 2002-11-04 Fernando Perez <fperez@colorado.edu>
5325 2002-11-04 Fernando Perez <fperez@colorado.edu>
5322
5326
5323 * IPython/iplib.py (InteractiveShell.interact): added
5327 * IPython/iplib.py (InteractiveShell.interact): added
5324 __IPYTHON__active to the builtins. It's a flag which goes on when
5328 __IPYTHON__active to the builtins. It's a flag which goes on when
5325 the interaction starts and goes off again when it stops. This
5329 the interaction starts and goes off again when it stops. This
5326 allows embedding code to detect being inside IPython. Before this
5330 allows embedding code to detect being inside IPython. Before this
5327 was done via __IPYTHON__, but that only shows that an IPython
5331 was done via __IPYTHON__, but that only shows that an IPython
5328 instance has been created.
5332 instance has been created.
5329
5333
5330 * IPython/Magic.py (Magic.magic_env): I realized that in a
5334 * IPython/Magic.py (Magic.magic_env): I realized that in a
5331 UserDict, instance.data holds the data as a normal dict. So I
5335 UserDict, instance.data holds the data as a normal dict. So I
5332 modified @env to return os.environ.data instead of rebuilding a
5336 modified @env to return os.environ.data instead of rebuilding a
5333 dict by hand.
5337 dict by hand.
5334
5338
5335 2002-11-02 Fernando Perez <fperez@colorado.edu>
5339 2002-11-02 Fernando Perez <fperez@colorado.edu>
5336
5340
5337 * IPython/genutils.py (warn): changed so that level 1 prints no
5341 * IPython/genutils.py (warn): changed so that level 1 prints no
5338 header. Level 2 is now the default (with 'WARNING' header, as
5342 header. Level 2 is now the default (with 'WARNING' header, as
5339 before). I think I tracked all places where changes were needed in
5343 before). I think I tracked all places where changes were needed in
5340 IPython, but outside code using the old level numbering may have
5344 IPython, but outside code using the old level numbering may have
5341 broken.
5345 broken.
5342
5346
5343 * IPython/iplib.py (InteractiveShell.runcode): added this to
5347 * IPython/iplib.py (InteractiveShell.runcode): added this to
5344 handle the tracebacks in SystemExit traps correctly. The previous
5348 handle the tracebacks in SystemExit traps correctly. The previous
5345 code (through interact) was printing more of the stack than
5349 code (through interact) was printing more of the stack than
5346 necessary, showing IPython internal code to the user.
5350 necessary, showing IPython internal code to the user.
5347
5351
5348 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5352 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5349 default. Now that the default at the confirmation prompt is yes,
5353 default. Now that the default at the confirmation prompt is yes,
5350 it's not so intrusive. François' argument that ipython sessions
5354 it's not so intrusive. François' argument that ipython sessions
5351 tend to be complex enough not to lose them from an accidental C-d,
5355 tend to be complex enough not to lose them from an accidental C-d,
5352 is a valid one.
5356 is a valid one.
5353
5357
5354 * IPython/iplib.py (InteractiveShell.interact): added a
5358 * IPython/iplib.py (InteractiveShell.interact): added a
5355 showtraceback() call to the SystemExit trap, and modified the exit
5359 showtraceback() call to the SystemExit trap, and modified the exit
5356 confirmation to have yes as the default.
5360 confirmation to have yes as the default.
5357
5361
5358 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5362 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5359 this file. It's been gone from the code for a long time, this was
5363 this file. It's been gone from the code for a long time, this was
5360 simply leftover junk.
5364 simply leftover junk.
5361
5365
5362 2002-11-01 Fernando Perez <fperez@colorado.edu>
5366 2002-11-01 Fernando Perez <fperez@colorado.edu>
5363
5367
5364 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5368 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5365 added. If set, IPython now traps EOF and asks for
5369 added. If set, IPython now traps EOF and asks for
5366 confirmation. After a request by François Pinard.
5370 confirmation. After a request by François Pinard.
5367
5371
5368 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5372 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5369 of @abort, and with a new (better) mechanism for handling the
5373 of @abort, and with a new (better) mechanism for handling the
5370 exceptions.
5374 exceptions.
5371
5375
5372 2002-10-27 Fernando Perez <fperez@colorado.edu>
5376 2002-10-27 Fernando Perez <fperez@colorado.edu>
5373
5377
5374 * IPython/usage.py (__doc__): updated the --help information and
5378 * IPython/usage.py (__doc__): updated the --help information and
5375 the ipythonrc file to indicate that -log generates
5379 the ipythonrc file to indicate that -log generates
5376 ./ipython.log. Also fixed the corresponding info in @logstart.
5380 ./ipython.log. Also fixed the corresponding info in @logstart.
5377 This and several other fixes in the manuals thanks to reports by
5381 This and several other fixes in the manuals thanks to reports by
5378 François Pinard <pinard-AT-iro.umontreal.ca>.
5382 François Pinard <pinard-AT-iro.umontreal.ca>.
5379
5383
5380 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5384 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5381 refer to @logstart (instead of @log, which doesn't exist).
5385 refer to @logstart (instead of @log, which doesn't exist).
5382
5386
5383 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5387 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5384 AttributeError crash. Thanks to Christopher Armstrong
5388 AttributeError crash. Thanks to Christopher Armstrong
5385 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5389 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5386 introduced recently (in 0.2.14pre37) with the fix to the eval
5390 introduced recently (in 0.2.14pre37) with the fix to the eval
5387 problem mentioned below.
5391 problem mentioned below.
5388
5392
5389 2002-10-17 Fernando Perez <fperez@colorado.edu>
5393 2002-10-17 Fernando Perez <fperez@colorado.edu>
5390
5394
5391 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5395 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5392 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5396 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5393
5397
5394 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5398 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5395 this function to fix a problem reported by Alex Schmolck. He saw
5399 this function to fix a problem reported by Alex Schmolck. He saw
5396 it with list comprehensions and generators, which were getting
5400 it with list comprehensions and generators, which were getting
5397 called twice. The real problem was an 'eval' call in testing for
5401 called twice. The real problem was an 'eval' call in testing for
5398 automagic which was evaluating the input line silently.
5402 automagic which was evaluating the input line silently.
5399
5403
5400 This is a potentially very nasty bug, if the input has side
5404 This is a potentially very nasty bug, if the input has side
5401 effects which must not be repeated. The code is much cleaner now,
5405 effects which must not be repeated. The code is much cleaner now,
5402 without any blanket 'except' left and with a regexp test for
5406 without any blanket 'except' left and with a regexp test for
5403 actual function names.
5407 actual function names.
5404
5408
5405 But an eval remains, which I'm not fully comfortable with. I just
5409 But an eval remains, which I'm not fully comfortable with. I just
5406 don't know how to find out if an expression could be a callable in
5410 don't know how to find out if an expression could be a callable in
5407 the user's namespace without doing an eval on the string. However
5411 the user's namespace without doing an eval on the string. However
5408 that string is now much more strictly checked so that no code
5412 that string is now much more strictly checked so that no code
5409 slips by, so the eval should only happen for things that can
5413 slips by, so the eval should only happen for things that can
5410 really be only function/method names.
5414 really be only function/method names.
5411
5415
5412 2002-10-15 Fernando Perez <fperez@colorado.edu>
5416 2002-10-15 Fernando Perez <fperez@colorado.edu>
5413
5417
5414 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5418 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5415 OSX information to main manual, removed README_Mac_OSX file from
5419 OSX information to main manual, removed README_Mac_OSX file from
5416 distribution. Also updated credits for recent additions.
5420 distribution. Also updated credits for recent additions.
5417
5421
5418 2002-10-10 Fernando Perez <fperez@colorado.edu>
5422 2002-10-10 Fernando Perez <fperez@colorado.edu>
5419
5423
5420 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5424 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5421 terminal-related issues. Many thanks to Andrea Riciputi
5425 terminal-related issues. Many thanks to Andrea Riciputi
5422 <andrea.riciputi-AT-libero.it> for writing it.
5426 <andrea.riciputi-AT-libero.it> for writing it.
5423
5427
5424 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5428 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5425 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5429 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5426
5430
5427 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5431 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5428 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5432 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5429 <syver-en-AT-online.no> who both submitted patches for this problem.
5433 <syver-en-AT-online.no> who both submitted patches for this problem.
5430
5434
5431 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5435 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5432 global embedding to make sure that things don't overwrite user
5436 global embedding to make sure that things don't overwrite user
5433 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5437 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5434
5438
5435 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5439 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5436 compatibility. Thanks to Hayden Callow
5440 compatibility. Thanks to Hayden Callow
5437 <h.callow-AT-elec.canterbury.ac.nz>
5441 <h.callow-AT-elec.canterbury.ac.nz>
5438
5442
5439 2002-10-04 Fernando Perez <fperez@colorado.edu>
5443 2002-10-04 Fernando Perez <fperez@colorado.edu>
5440
5444
5441 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5445 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5442 Gnuplot.File objects.
5446 Gnuplot.File objects.
5443
5447
5444 2002-07-23 Fernando Perez <fperez@colorado.edu>
5448 2002-07-23 Fernando Perez <fperez@colorado.edu>
5445
5449
5446 * IPython/genutils.py (timing): Added timings() and timing() for
5450 * IPython/genutils.py (timing): Added timings() and timing() for
5447 quick access to the most commonly needed data, the execution
5451 quick access to the most commonly needed data, the execution
5448 times. Old timing() renamed to timings_out().
5452 times. Old timing() renamed to timings_out().
5449
5453
5450 2002-07-18 Fernando Perez <fperez@colorado.edu>
5454 2002-07-18 Fernando Perez <fperez@colorado.edu>
5451
5455
5452 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5456 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5453 bug with nested instances disrupting the parent's tab completion.
5457 bug with nested instances disrupting the parent's tab completion.
5454
5458
5455 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5459 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5456 all_completions code to begin the emacs integration.
5460 all_completions code to begin the emacs integration.
5457
5461
5458 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5462 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5459 argument to allow titling individual arrays when plotting.
5463 argument to allow titling individual arrays when plotting.
5460
5464
5461 2002-07-15 Fernando Perez <fperez@colorado.edu>
5465 2002-07-15 Fernando Perez <fperez@colorado.edu>
5462
5466
5463 * setup.py (make_shortcut): changed to retrieve the value of
5467 * setup.py (make_shortcut): changed to retrieve the value of
5464 'Program Files' directory from the registry (this value changes in
5468 'Program Files' directory from the registry (this value changes in
5465 non-english versions of Windows). Thanks to Thomas Fanslau
5469 non-english versions of Windows). Thanks to Thomas Fanslau
5466 <tfanslau-AT-gmx.de> for the report.
5470 <tfanslau-AT-gmx.de> for the report.
5467
5471
5468 2002-07-10 Fernando Perez <fperez@colorado.edu>
5472 2002-07-10 Fernando Perez <fperez@colorado.edu>
5469
5473
5470 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5474 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5471 a bug in pdb, which crashes if a line with only whitespace is
5475 a bug in pdb, which crashes if a line with only whitespace is
5472 entered. Bug report submitted to sourceforge.
5476 entered. Bug report submitted to sourceforge.
5473
5477
5474 2002-07-09 Fernando Perez <fperez@colorado.edu>
5478 2002-07-09 Fernando Perez <fperez@colorado.edu>
5475
5479
5476 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5480 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5477 reporting exceptions (it's a bug in inspect.py, I just set a
5481 reporting exceptions (it's a bug in inspect.py, I just set a
5478 workaround).
5482 workaround).
5479
5483
5480 2002-07-08 Fernando Perez <fperez@colorado.edu>
5484 2002-07-08 Fernando Perez <fperez@colorado.edu>
5481
5485
5482 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5486 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5483 __IPYTHON__ in __builtins__ to show up in user_ns.
5487 __IPYTHON__ in __builtins__ to show up in user_ns.
5484
5488
5485 2002-07-03 Fernando Perez <fperez@colorado.edu>
5489 2002-07-03 Fernando Perez <fperez@colorado.edu>
5486
5490
5487 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5491 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5488 name from @gp_set_instance to @gp_set_default.
5492 name from @gp_set_instance to @gp_set_default.
5489
5493
5490 * IPython/ipmaker.py (make_IPython): default editor value set to
5494 * IPython/ipmaker.py (make_IPython): default editor value set to
5491 '0' (a string), to match the rc file. Otherwise will crash when
5495 '0' (a string), to match the rc file. Otherwise will crash when
5492 .strip() is called on it.
5496 .strip() is called on it.
5493
5497
5494
5498
5495 2002-06-28 Fernando Perez <fperez@colorado.edu>
5499 2002-06-28 Fernando Perez <fperez@colorado.edu>
5496
5500
5497 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5501 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5498 of files in current directory when a file is executed via
5502 of files in current directory when a file is executed via
5499 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5503 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5500
5504
5501 * setup.py (manfiles): fix for rpm builds, submitted by RA
5505 * setup.py (manfiles): fix for rpm builds, submitted by RA
5502 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5506 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5503
5507
5504 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5508 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5505 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5509 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5506 string!). A. Schmolck caught this one.
5510 string!). A. Schmolck caught this one.
5507
5511
5508 2002-06-27 Fernando Perez <fperez@colorado.edu>
5512 2002-06-27 Fernando Perez <fperez@colorado.edu>
5509
5513
5510 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5514 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5511 defined files at the cmd line. __name__ wasn't being set to
5515 defined files at the cmd line. __name__ wasn't being set to
5512 __main__.
5516 __main__.
5513
5517
5514 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5518 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5515 regular lists and tuples besides Numeric arrays.
5519 regular lists and tuples besides Numeric arrays.
5516
5520
5517 * IPython/Prompts.py (CachedOutput.__call__): Added output
5521 * IPython/Prompts.py (CachedOutput.__call__): Added output
5518 supression for input ending with ';'. Similar to Mathematica and
5522 supression for input ending with ';'. Similar to Mathematica and
5519 Matlab. The _* vars and Out[] list are still updated, just like
5523 Matlab. The _* vars and Out[] list are still updated, just like
5520 Mathematica behaves.
5524 Mathematica behaves.
5521
5525
5522 2002-06-25 Fernando Perez <fperez@colorado.edu>
5526 2002-06-25 Fernando Perez <fperez@colorado.edu>
5523
5527
5524 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5528 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5525 .ini extensions for profiels under Windows.
5529 .ini extensions for profiels under Windows.
5526
5530
5527 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5531 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5528 string form. Fix contributed by Alexander Schmolck
5532 string form. Fix contributed by Alexander Schmolck
5529 <a.schmolck-AT-gmx.net>
5533 <a.schmolck-AT-gmx.net>
5530
5534
5531 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5535 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5532 pre-configured Gnuplot instance.
5536 pre-configured Gnuplot instance.
5533
5537
5534 2002-06-21 Fernando Perez <fperez@colorado.edu>
5538 2002-06-21 Fernando Perez <fperez@colorado.edu>
5535
5539
5536 * IPython/numutils.py (exp_safe): new function, works around the
5540 * IPython/numutils.py (exp_safe): new function, works around the
5537 underflow problems in Numeric.
5541 underflow problems in Numeric.
5538 (log2): New fn. Safe log in base 2: returns exact integer answer
5542 (log2): New fn. Safe log in base 2: returns exact integer answer
5539 for exact integer powers of 2.
5543 for exact integer powers of 2.
5540
5544
5541 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5545 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5542 properly.
5546 properly.
5543
5547
5544 2002-06-20 Fernando Perez <fperez@colorado.edu>
5548 2002-06-20 Fernando Perez <fperez@colorado.edu>
5545
5549
5546 * IPython/genutils.py (timing): new function like
5550 * IPython/genutils.py (timing): new function like
5547 Mathematica's. Similar to time_test, but returns more info.
5551 Mathematica's. Similar to time_test, but returns more info.
5548
5552
5549 2002-06-18 Fernando Perez <fperez@colorado.edu>
5553 2002-06-18 Fernando Perez <fperez@colorado.edu>
5550
5554
5551 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5555 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5552 according to Mike Heeter's suggestions.
5556 according to Mike Heeter's suggestions.
5553
5557
5554 2002-06-16 Fernando Perez <fperez@colorado.edu>
5558 2002-06-16 Fernando Perez <fperez@colorado.edu>
5555
5559
5556 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5560 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5557 system. GnuplotMagic is gone as a user-directory option. New files
5561 system. GnuplotMagic is gone as a user-directory option. New files
5558 make it easier to use all the gnuplot stuff both from external
5562 make it easier to use all the gnuplot stuff both from external
5559 programs as well as from IPython. Had to rewrite part of
5563 programs as well as from IPython. Had to rewrite part of
5560 hardcopy() b/c of a strange bug: often the ps files simply don't
5564 hardcopy() b/c of a strange bug: often the ps files simply don't
5561 get created, and require a repeat of the command (often several
5565 get created, and require a repeat of the command (often several
5562 times).
5566 times).
5563
5567
5564 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5568 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5565 resolve output channel at call time, so that if sys.stderr has
5569 resolve output channel at call time, so that if sys.stderr has
5566 been redirected by user this gets honored.
5570 been redirected by user this gets honored.
5567
5571
5568 2002-06-13 Fernando Perez <fperez@colorado.edu>
5572 2002-06-13 Fernando Perez <fperez@colorado.edu>
5569
5573
5570 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5574 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5571 IPShell. Kept a copy with the old names to avoid breaking people's
5575 IPShell. Kept a copy with the old names to avoid breaking people's
5572 embedded code.
5576 embedded code.
5573
5577
5574 * IPython/ipython: simplified it to the bare minimum after
5578 * IPython/ipython: simplified it to the bare minimum after
5575 Holger's suggestions. Added info about how to use it in
5579 Holger's suggestions. Added info about how to use it in
5576 PYTHONSTARTUP.
5580 PYTHONSTARTUP.
5577
5581
5578 * IPython/Shell.py (IPythonShell): changed the options passing
5582 * IPython/Shell.py (IPythonShell): changed the options passing
5579 from a string with funky %s replacements to a straight list. Maybe
5583 from a string with funky %s replacements to a straight list. Maybe
5580 a bit more typing, but it follows sys.argv conventions, so there's
5584 a bit more typing, but it follows sys.argv conventions, so there's
5581 less special-casing to remember.
5585 less special-casing to remember.
5582
5586
5583 2002-06-12 Fernando Perez <fperez@colorado.edu>
5587 2002-06-12 Fernando Perez <fperez@colorado.edu>
5584
5588
5585 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5589 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5586 command. Thanks to a suggestion by Mike Heeter.
5590 command. Thanks to a suggestion by Mike Heeter.
5587 (Magic.magic_pfile): added behavior to look at filenames if given
5591 (Magic.magic_pfile): added behavior to look at filenames if given
5588 arg is not a defined object.
5592 arg is not a defined object.
5589 (Magic.magic_save): New @save function to save code snippets. Also
5593 (Magic.magic_save): New @save function to save code snippets. Also
5590 a Mike Heeter idea.
5594 a Mike Heeter idea.
5591
5595
5592 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5596 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5593 plot() and replot(). Much more convenient now, especially for
5597 plot() and replot(). Much more convenient now, especially for
5594 interactive use.
5598 interactive use.
5595
5599
5596 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5600 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5597 filenames.
5601 filenames.
5598
5602
5599 2002-06-02 Fernando Perez <fperez@colorado.edu>
5603 2002-06-02 Fernando Perez <fperez@colorado.edu>
5600
5604
5601 * IPython/Struct.py (Struct.__init__): modified to admit
5605 * IPython/Struct.py (Struct.__init__): modified to admit
5602 initialization via another struct.
5606 initialization via another struct.
5603
5607
5604 * IPython/genutils.py (SystemExec.__init__): New stateful
5608 * IPython/genutils.py (SystemExec.__init__): New stateful
5605 interface to xsys and bq. Useful for writing system scripts.
5609 interface to xsys and bq. Useful for writing system scripts.
5606
5610
5607 2002-05-30 Fernando Perez <fperez@colorado.edu>
5611 2002-05-30 Fernando Perez <fperez@colorado.edu>
5608
5612
5609 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5613 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5610 documents. This will make the user download smaller (it's getting
5614 documents. This will make the user download smaller (it's getting
5611 too big).
5615 too big).
5612
5616
5613 2002-05-29 Fernando Perez <fperez@colorado.edu>
5617 2002-05-29 Fernando Perez <fperez@colorado.edu>
5614
5618
5615 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5619 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5616 fix problems with shelve and pickle. Seems to work, but I don't
5620 fix problems with shelve and pickle. Seems to work, but I don't
5617 know if corner cases break it. Thanks to Mike Heeter
5621 know if corner cases break it. Thanks to Mike Heeter
5618 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5622 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5619
5623
5620 2002-05-24 Fernando Perez <fperez@colorado.edu>
5624 2002-05-24 Fernando Perez <fperez@colorado.edu>
5621
5625
5622 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5626 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5623 macros having broken.
5627 macros having broken.
5624
5628
5625 2002-05-21 Fernando Perez <fperez@colorado.edu>
5629 2002-05-21 Fernando Perez <fperez@colorado.edu>
5626
5630
5627 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5631 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5628 introduced logging bug: all history before logging started was
5632 introduced logging bug: all history before logging started was
5629 being written one character per line! This came from the redesign
5633 being written one character per line! This came from the redesign
5630 of the input history as a special list which slices to strings,
5634 of the input history as a special list which slices to strings,
5631 not to lists.
5635 not to lists.
5632
5636
5633 2002-05-20 Fernando Perez <fperez@colorado.edu>
5637 2002-05-20 Fernando Perez <fperez@colorado.edu>
5634
5638
5635 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5639 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5636 be an attribute of all classes in this module. The design of these
5640 be an attribute of all classes in this module. The design of these
5637 classes needs some serious overhauling.
5641 classes needs some serious overhauling.
5638
5642
5639 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5643 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5640 which was ignoring '_' in option names.
5644 which was ignoring '_' in option names.
5641
5645
5642 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5646 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5643 'Verbose_novars' to 'Context' and made it the new default. It's a
5647 'Verbose_novars' to 'Context' and made it the new default. It's a
5644 bit more readable and also safer than verbose.
5648 bit more readable and also safer than verbose.
5645
5649
5646 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5650 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5647 triple-quoted strings.
5651 triple-quoted strings.
5648
5652
5649 * IPython/OInspect.py (__all__): new module exposing the object
5653 * IPython/OInspect.py (__all__): new module exposing the object
5650 introspection facilities. Now the corresponding magics are dummy
5654 introspection facilities. Now the corresponding magics are dummy
5651 wrappers around this. Having this module will make it much easier
5655 wrappers around this. Having this module will make it much easier
5652 to put these functions into our modified pdb.
5656 to put these functions into our modified pdb.
5653 This new object inspector system uses the new colorizing module,
5657 This new object inspector system uses the new colorizing module,
5654 so source code and other things are nicely syntax highlighted.
5658 so source code and other things are nicely syntax highlighted.
5655
5659
5656 2002-05-18 Fernando Perez <fperez@colorado.edu>
5660 2002-05-18 Fernando Perez <fperez@colorado.edu>
5657
5661
5658 * IPython/ColorANSI.py: Split the coloring tools into a separate
5662 * IPython/ColorANSI.py: Split the coloring tools into a separate
5659 module so I can use them in other code easier (they were part of
5663 module so I can use them in other code easier (they were part of
5660 ultraTB).
5664 ultraTB).
5661
5665
5662 2002-05-17 Fernando Perez <fperez@colorado.edu>
5666 2002-05-17 Fernando Perez <fperez@colorado.edu>
5663
5667
5664 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5668 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5665 fixed it to set the global 'g' also to the called instance, as
5669 fixed it to set the global 'g' also to the called instance, as
5666 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5670 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5667 user's 'g' variables).
5671 user's 'g' variables).
5668
5672
5669 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5673 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5670 global variables (aliases to _ih,_oh) so that users which expect
5674 global variables (aliases to _ih,_oh) so that users which expect
5671 In[5] or Out[7] to work aren't unpleasantly surprised.
5675 In[5] or Out[7] to work aren't unpleasantly surprised.
5672 (InputList.__getslice__): new class to allow executing slices of
5676 (InputList.__getslice__): new class to allow executing slices of
5673 input history directly. Very simple class, complements the use of
5677 input history directly. Very simple class, complements the use of
5674 macros.
5678 macros.
5675
5679
5676 2002-05-16 Fernando Perez <fperez@colorado.edu>
5680 2002-05-16 Fernando Perez <fperez@colorado.edu>
5677
5681
5678 * setup.py (docdirbase): make doc directory be just doc/IPython
5682 * setup.py (docdirbase): make doc directory be just doc/IPython
5679 without version numbers, it will reduce clutter for users.
5683 without version numbers, it will reduce clutter for users.
5680
5684
5681 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5685 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5682 execfile call to prevent possible memory leak. See for details:
5686 execfile call to prevent possible memory leak. See for details:
5683 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5687 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5684
5688
5685 2002-05-15 Fernando Perez <fperez@colorado.edu>
5689 2002-05-15 Fernando Perez <fperez@colorado.edu>
5686
5690
5687 * IPython/Magic.py (Magic.magic_psource): made the object
5691 * IPython/Magic.py (Magic.magic_psource): made the object
5688 introspection names be more standard: pdoc, pdef, pfile and
5692 introspection names be more standard: pdoc, pdef, pfile and
5689 psource. They all print/page their output, and it makes
5693 psource. They all print/page their output, and it makes
5690 remembering them easier. Kept old names for compatibility as
5694 remembering them easier. Kept old names for compatibility as
5691 aliases.
5695 aliases.
5692
5696
5693 2002-05-14 Fernando Perez <fperez@colorado.edu>
5697 2002-05-14 Fernando Perez <fperez@colorado.edu>
5694
5698
5695 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5699 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5696 what the mouse problem was. The trick is to use gnuplot with temp
5700 what the mouse problem was. The trick is to use gnuplot with temp
5697 files and NOT with pipes (for data communication), because having
5701 files and NOT with pipes (for data communication), because having
5698 both pipes and the mouse on is bad news.
5702 both pipes and the mouse on is bad news.
5699
5703
5700 2002-05-13 Fernando Perez <fperez@colorado.edu>
5704 2002-05-13 Fernando Perez <fperez@colorado.edu>
5701
5705
5702 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5706 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5703 bug. Information would be reported about builtins even when
5707 bug. Information would be reported about builtins even when
5704 user-defined functions overrode them.
5708 user-defined functions overrode them.
5705
5709
5706 2002-05-11 Fernando Perez <fperez@colorado.edu>
5710 2002-05-11 Fernando Perez <fperez@colorado.edu>
5707
5711
5708 * IPython/__init__.py (__all__): removed FlexCompleter from
5712 * IPython/__init__.py (__all__): removed FlexCompleter from
5709 __all__ so that things don't fail in platforms without readline.
5713 __all__ so that things don't fail in platforms without readline.
5710
5714
5711 2002-05-10 Fernando Perez <fperez@colorado.edu>
5715 2002-05-10 Fernando Perez <fperez@colorado.edu>
5712
5716
5713 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5717 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5714 it requires Numeric, effectively making Numeric a dependency for
5718 it requires Numeric, effectively making Numeric a dependency for
5715 IPython.
5719 IPython.
5716
5720
5717 * Released 0.2.13
5721 * Released 0.2.13
5718
5722
5719 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5723 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5720 profiler interface. Now all the major options from the profiler
5724 profiler interface. Now all the major options from the profiler
5721 module are directly supported in IPython, both for single
5725 module are directly supported in IPython, both for single
5722 expressions (@prun) and for full programs (@run -p).
5726 expressions (@prun) and for full programs (@run -p).
5723
5727
5724 2002-05-09 Fernando Perez <fperez@colorado.edu>
5728 2002-05-09 Fernando Perez <fperez@colorado.edu>
5725
5729
5726 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5730 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5727 magic properly formatted for screen.
5731 magic properly formatted for screen.
5728
5732
5729 * setup.py (make_shortcut): Changed things to put pdf version in
5733 * setup.py (make_shortcut): Changed things to put pdf version in
5730 doc/ instead of doc/manual (had to change lyxport a bit).
5734 doc/ instead of doc/manual (had to change lyxport a bit).
5731
5735
5732 * IPython/Magic.py (Profile.string_stats): made profile runs go
5736 * IPython/Magic.py (Profile.string_stats): made profile runs go
5733 through pager (they are long and a pager allows searching, saving,
5737 through pager (they are long and a pager allows searching, saving,
5734 etc.)
5738 etc.)
5735
5739
5736 2002-05-08 Fernando Perez <fperez@colorado.edu>
5740 2002-05-08 Fernando Perez <fperez@colorado.edu>
5737
5741
5738 * Released 0.2.12
5742 * Released 0.2.12
5739
5743
5740 2002-05-06 Fernando Perez <fperez@colorado.edu>
5744 2002-05-06 Fernando Perez <fperez@colorado.edu>
5741
5745
5742 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5746 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5743 introduced); 'hist n1 n2' was broken.
5747 introduced); 'hist n1 n2' was broken.
5744 (Magic.magic_pdb): added optional on/off arguments to @pdb
5748 (Magic.magic_pdb): added optional on/off arguments to @pdb
5745 (Magic.magic_run): added option -i to @run, which executes code in
5749 (Magic.magic_run): added option -i to @run, which executes code in
5746 the IPython namespace instead of a clean one. Also added @irun as
5750 the IPython namespace instead of a clean one. Also added @irun as
5747 an alias to @run -i.
5751 an alias to @run -i.
5748
5752
5749 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5753 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5750 fixed (it didn't really do anything, the namespaces were wrong).
5754 fixed (it didn't really do anything, the namespaces were wrong).
5751
5755
5752 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5756 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5753
5757
5754 * IPython/__init__.py (__all__): Fixed package namespace, now
5758 * IPython/__init__.py (__all__): Fixed package namespace, now
5755 'import IPython' does give access to IPython.<all> as
5759 'import IPython' does give access to IPython.<all> as
5756 expected. Also renamed __release__ to Release.
5760 expected. Also renamed __release__ to Release.
5757
5761
5758 * IPython/Debugger.py (__license__): created new Pdb class which
5762 * IPython/Debugger.py (__license__): created new Pdb class which
5759 functions like a drop-in for the normal pdb.Pdb but does NOT
5763 functions like a drop-in for the normal pdb.Pdb but does NOT
5760 import readline by default. This way it doesn't muck up IPython's
5764 import readline by default. This way it doesn't muck up IPython's
5761 readline handling, and now tab-completion finally works in the
5765 readline handling, and now tab-completion finally works in the
5762 debugger -- sort of. It completes things globally visible, but the
5766 debugger -- sort of. It completes things globally visible, but the
5763 completer doesn't track the stack as pdb walks it. That's a bit
5767 completer doesn't track the stack as pdb walks it. That's a bit
5764 tricky, and I'll have to implement it later.
5768 tricky, and I'll have to implement it later.
5765
5769
5766 2002-05-05 Fernando Perez <fperez@colorado.edu>
5770 2002-05-05 Fernando Perez <fperez@colorado.edu>
5767
5771
5768 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5772 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5769 magic docstrings when printed via ? (explicit \'s were being
5773 magic docstrings when printed via ? (explicit \'s were being
5770 printed).
5774 printed).
5771
5775
5772 * IPython/ipmaker.py (make_IPython): fixed namespace
5776 * IPython/ipmaker.py (make_IPython): fixed namespace
5773 identification bug. Now variables loaded via logs or command-line
5777 identification bug. Now variables loaded via logs or command-line
5774 files are recognized in the interactive namespace by @who.
5778 files are recognized in the interactive namespace by @who.
5775
5779
5776 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5780 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5777 log replay system stemming from the string form of Structs.
5781 log replay system stemming from the string form of Structs.
5778
5782
5779 * IPython/Magic.py (Macro.__init__): improved macros to properly
5783 * IPython/Magic.py (Macro.__init__): improved macros to properly
5780 handle magic commands in them.
5784 handle magic commands in them.
5781 (Magic.magic_logstart): usernames are now expanded so 'logstart
5785 (Magic.magic_logstart): usernames are now expanded so 'logstart
5782 ~/mylog' now works.
5786 ~/mylog' now works.
5783
5787
5784 * IPython/iplib.py (complete): fixed bug where paths starting with
5788 * IPython/iplib.py (complete): fixed bug where paths starting with
5785 '/' would be completed as magic names.
5789 '/' would be completed as magic names.
5786
5790
5787 2002-05-04 Fernando Perez <fperez@colorado.edu>
5791 2002-05-04 Fernando Perez <fperez@colorado.edu>
5788
5792
5789 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5793 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5790 allow running full programs under the profiler's control.
5794 allow running full programs under the profiler's control.
5791
5795
5792 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5796 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5793 mode to report exceptions verbosely but without formatting
5797 mode to report exceptions verbosely but without formatting
5794 variables. This addresses the issue of ipython 'freezing' (it's
5798 variables. This addresses the issue of ipython 'freezing' (it's
5795 not frozen, but caught in an expensive formatting loop) when huge
5799 not frozen, but caught in an expensive formatting loop) when huge
5796 variables are in the context of an exception.
5800 variables are in the context of an exception.
5797 (VerboseTB.text): Added '--->' markers at line where exception was
5801 (VerboseTB.text): Added '--->' markers at line where exception was
5798 triggered. Much clearer to read, especially in NoColor modes.
5802 triggered. Much clearer to read, especially in NoColor modes.
5799
5803
5800 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5804 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5801 implemented in reverse when changing to the new parse_options().
5805 implemented in reverse when changing to the new parse_options().
5802
5806
5803 2002-05-03 Fernando Perez <fperez@colorado.edu>
5807 2002-05-03 Fernando Perez <fperez@colorado.edu>
5804
5808
5805 * IPython/Magic.py (Magic.parse_options): new function so that
5809 * IPython/Magic.py (Magic.parse_options): new function so that
5806 magics can parse options easier.
5810 magics can parse options easier.
5807 (Magic.magic_prun): new function similar to profile.run(),
5811 (Magic.magic_prun): new function similar to profile.run(),
5808 suggested by Chris Hart.
5812 suggested by Chris Hart.
5809 (Magic.magic_cd): fixed behavior so that it only changes if
5813 (Magic.magic_cd): fixed behavior so that it only changes if
5810 directory actually is in history.
5814 directory actually is in history.
5811
5815
5812 * IPython/usage.py (__doc__): added information about potential
5816 * IPython/usage.py (__doc__): added information about potential
5813 slowness of Verbose exception mode when there are huge data
5817 slowness of Verbose exception mode when there are huge data
5814 structures to be formatted (thanks to Archie Paulson).
5818 structures to be formatted (thanks to Archie Paulson).
5815
5819
5816 * IPython/ipmaker.py (make_IPython): Changed default logging
5820 * IPython/ipmaker.py (make_IPython): Changed default logging
5817 (when simply called with -log) to use curr_dir/ipython.log in
5821 (when simply called with -log) to use curr_dir/ipython.log in
5818 rotate mode. Fixed crash which was occuring with -log before
5822 rotate mode. Fixed crash which was occuring with -log before
5819 (thanks to Jim Boyle).
5823 (thanks to Jim Boyle).
5820
5824
5821 2002-05-01 Fernando Perez <fperez@colorado.edu>
5825 2002-05-01 Fernando Perez <fperez@colorado.edu>
5822
5826
5823 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5827 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5824 was nasty -- though somewhat of a corner case).
5828 was nasty -- though somewhat of a corner case).
5825
5829
5826 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5830 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5827 text (was a bug).
5831 text (was a bug).
5828
5832
5829 2002-04-30 Fernando Perez <fperez@colorado.edu>
5833 2002-04-30 Fernando Perez <fperez@colorado.edu>
5830
5834
5831 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5835 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5832 a print after ^D or ^C from the user so that the In[] prompt
5836 a print after ^D or ^C from the user so that the In[] prompt
5833 doesn't over-run the gnuplot one.
5837 doesn't over-run the gnuplot one.
5834
5838
5835 2002-04-29 Fernando Perez <fperez@colorado.edu>
5839 2002-04-29 Fernando Perez <fperez@colorado.edu>
5836
5840
5837 * Released 0.2.10
5841 * Released 0.2.10
5838
5842
5839 * IPython/__release__.py (version): get date dynamically.
5843 * IPython/__release__.py (version): get date dynamically.
5840
5844
5841 * Misc. documentation updates thanks to Arnd's comments. Also ran
5845 * Misc. documentation updates thanks to Arnd's comments. Also ran
5842 a full spellcheck on the manual (hadn't been done in a while).
5846 a full spellcheck on the manual (hadn't been done in a while).
5843
5847
5844 2002-04-27 Fernando Perez <fperez@colorado.edu>
5848 2002-04-27 Fernando Perez <fperez@colorado.edu>
5845
5849
5846 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5850 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5847 starting a log in mid-session would reset the input history list.
5851 starting a log in mid-session would reset the input history list.
5848
5852
5849 2002-04-26 Fernando Perez <fperez@colorado.edu>
5853 2002-04-26 Fernando Perez <fperez@colorado.edu>
5850
5854
5851 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5855 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5852 all files were being included in an update. Now anything in
5856 all files were being included in an update. Now anything in
5853 UserConfig that matches [A-Za-z]*.py will go (this excludes
5857 UserConfig that matches [A-Za-z]*.py will go (this excludes
5854 __init__.py)
5858 __init__.py)
5855
5859
5856 2002-04-25 Fernando Perez <fperez@colorado.edu>
5860 2002-04-25 Fernando Perez <fperez@colorado.edu>
5857
5861
5858 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5862 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5859 to __builtins__ so that any form of embedded or imported code can
5863 to __builtins__ so that any form of embedded or imported code can
5860 test for being inside IPython.
5864 test for being inside IPython.
5861
5865
5862 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5866 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5863 changed to GnuplotMagic because it's now an importable module,
5867 changed to GnuplotMagic because it's now an importable module,
5864 this makes the name follow that of the standard Gnuplot module.
5868 this makes the name follow that of the standard Gnuplot module.
5865 GnuplotMagic can now be loaded at any time in mid-session.
5869 GnuplotMagic can now be loaded at any time in mid-session.
5866
5870
5867 2002-04-24 Fernando Perez <fperez@colorado.edu>
5871 2002-04-24 Fernando Perez <fperez@colorado.edu>
5868
5872
5869 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5873 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5870 the globals (IPython has its own namespace) and the
5874 the globals (IPython has its own namespace) and the
5871 PhysicalQuantity stuff is much better anyway.
5875 PhysicalQuantity stuff is much better anyway.
5872
5876
5873 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5877 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5874 embedding example to standard user directory for
5878 embedding example to standard user directory for
5875 distribution. Also put it in the manual.
5879 distribution. Also put it in the manual.
5876
5880
5877 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5881 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5878 instance as first argument (so it doesn't rely on some obscure
5882 instance as first argument (so it doesn't rely on some obscure
5879 hidden global).
5883 hidden global).
5880
5884
5881 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5885 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5882 delimiters. While it prevents ().TAB from working, it allows
5886 delimiters. While it prevents ().TAB from working, it allows
5883 completions in open (... expressions. This is by far a more common
5887 completions in open (... expressions. This is by far a more common
5884 case.
5888 case.
5885
5889
5886 2002-04-23 Fernando Perez <fperez@colorado.edu>
5890 2002-04-23 Fernando Perez <fperez@colorado.edu>
5887
5891
5888 * IPython/Extensions/InterpreterPasteInput.py: new
5892 * IPython/Extensions/InterpreterPasteInput.py: new
5889 syntax-processing module for pasting lines with >>> or ... at the
5893 syntax-processing module for pasting lines with >>> or ... at the
5890 start.
5894 start.
5891
5895
5892 * IPython/Extensions/PhysicalQ_Interactive.py
5896 * IPython/Extensions/PhysicalQ_Interactive.py
5893 (PhysicalQuantityInteractive.__int__): fixed to work with either
5897 (PhysicalQuantityInteractive.__int__): fixed to work with either
5894 Numeric or math.
5898 Numeric or math.
5895
5899
5896 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5900 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5897 provided profiles. Now we have:
5901 provided profiles. Now we have:
5898 -math -> math module as * and cmath with its own namespace.
5902 -math -> math module as * and cmath with its own namespace.
5899 -numeric -> Numeric as *, plus gnuplot & grace
5903 -numeric -> Numeric as *, plus gnuplot & grace
5900 -physics -> same as before
5904 -physics -> same as before
5901
5905
5902 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5906 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5903 user-defined magics wouldn't be found by @magic if they were
5907 user-defined magics wouldn't be found by @magic if they were
5904 defined as class methods. Also cleaned up the namespace search
5908 defined as class methods. Also cleaned up the namespace search
5905 logic and the string building (to use %s instead of many repeated
5909 logic and the string building (to use %s instead of many repeated
5906 string adds).
5910 string adds).
5907
5911
5908 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5912 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5909 of user-defined magics to operate with class methods (cleaner, in
5913 of user-defined magics to operate with class methods (cleaner, in
5910 line with the gnuplot code).
5914 line with the gnuplot code).
5911
5915
5912 2002-04-22 Fernando Perez <fperez@colorado.edu>
5916 2002-04-22 Fernando Perez <fperez@colorado.edu>
5913
5917
5914 * setup.py: updated dependency list so that manual is updated when
5918 * setup.py: updated dependency list so that manual is updated when
5915 all included files change.
5919 all included files change.
5916
5920
5917 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5921 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5918 the delimiter removal option (the fix is ugly right now).
5922 the delimiter removal option (the fix is ugly right now).
5919
5923
5920 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5924 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5921 all of the math profile (quicker loading, no conflict between
5925 all of the math profile (quicker loading, no conflict between
5922 g-9.8 and g-gnuplot).
5926 g-9.8 and g-gnuplot).
5923
5927
5924 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5928 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5925 name of post-mortem files to IPython_crash_report.txt.
5929 name of post-mortem files to IPython_crash_report.txt.
5926
5930
5927 * Cleanup/update of the docs. Added all the new readline info and
5931 * Cleanup/update of the docs. Added all the new readline info and
5928 formatted all lists as 'real lists'.
5932 formatted all lists as 'real lists'.
5929
5933
5930 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5934 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5931 tab-completion options, since the full readline parse_and_bind is
5935 tab-completion options, since the full readline parse_and_bind is
5932 now accessible.
5936 now accessible.
5933
5937
5934 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5938 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5935 handling of readline options. Now users can specify any string to
5939 handling of readline options. Now users can specify any string to
5936 be passed to parse_and_bind(), as well as the delimiters to be
5940 be passed to parse_and_bind(), as well as the delimiters to be
5937 removed.
5941 removed.
5938 (InteractiveShell.__init__): Added __name__ to the global
5942 (InteractiveShell.__init__): Added __name__ to the global
5939 namespace so that things like Itpl which rely on its existence
5943 namespace so that things like Itpl which rely on its existence
5940 don't crash.
5944 don't crash.
5941 (InteractiveShell._prefilter): Defined the default with a _ so
5945 (InteractiveShell._prefilter): Defined the default with a _ so
5942 that prefilter() is easier to override, while the default one
5946 that prefilter() is easier to override, while the default one
5943 remains available.
5947 remains available.
5944
5948
5945 2002-04-18 Fernando Perez <fperez@colorado.edu>
5949 2002-04-18 Fernando Perez <fperez@colorado.edu>
5946
5950
5947 * Added information about pdb in the docs.
5951 * Added information about pdb in the docs.
5948
5952
5949 2002-04-17 Fernando Perez <fperez@colorado.edu>
5953 2002-04-17 Fernando Perez <fperez@colorado.edu>
5950
5954
5951 * IPython/ipmaker.py (make_IPython): added rc_override option to
5955 * IPython/ipmaker.py (make_IPython): added rc_override option to
5952 allow passing config options at creation time which may override
5956 allow passing config options at creation time which may override
5953 anything set in the config files or command line. This is
5957 anything set in the config files or command line. This is
5954 particularly useful for configuring embedded instances.
5958 particularly useful for configuring embedded instances.
5955
5959
5956 2002-04-15 Fernando Perez <fperez@colorado.edu>
5960 2002-04-15 Fernando Perez <fperez@colorado.edu>
5957
5961
5958 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5962 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5959 crash embedded instances because of the input cache falling out of
5963 crash embedded instances because of the input cache falling out of
5960 sync with the output counter.
5964 sync with the output counter.
5961
5965
5962 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5966 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5963 mode which calls pdb after an uncaught exception in IPython itself.
5967 mode which calls pdb after an uncaught exception in IPython itself.
5964
5968
5965 2002-04-14 Fernando Perez <fperez@colorado.edu>
5969 2002-04-14 Fernando Perez <fperez@colorado.edu>
5966
5970
5967 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5971 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5968 readline, fix it back after each call.
5972 readline, fix it back after each call.
5969
5973
5970 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5974 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5971 method to force all access via __call__(), which guarantees that
5975 method to force all access via __call__(), which guarantees that
5972 traceback references are properly deleted.
5976 traceback references are properly deleted.
5973
5977
5974 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5978 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5975 improve printing when pprint is in use.
5979 improve printing when pprint is in use.
5976
5980
5977 2002-04-13 Fernando Perez <fperez@colorado.edu>
5981 2002-04-13 Fernando Perez <fperez@colorado.edu>
5978
5982
5979 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5983 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5980 exceptions aren't caught anymore. If the user triggers one, he
5984 exceptions aren't caught anymore. If the user triggers one, he
5981 should know why he's doing it and it should go all the way up,
5985 should know why he's doing it and it should go all the way up,
5982 just like any other exception. So now @abort will fully kill the
5986 just like any other exception. So now @abort will fully kill the
5983 embedded interpreter and the embedding code (unless that happens
5987 embedded interpreter and the embedding code (unless that happens
5984 to catch SystemExit).
5988 to catch SystemExit).
5985
5989
5986 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5990 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5987 and a debugger() method to invoke the interactive pdb debugger
5991 and a debugger() method to invoke the interactive pdb debugger
5988 after printing exception information. Also added the corresponding
5992 after printing exception information. Also added the corresponding
5989 -pdb option and @pdb magic to control this feature, and updated
5993 -pdb option and @pdb magic to control this feature, and updated
5990 the docs. After a suggestion from Christopher Hart
5994 the docs. After a suggestion from Christopher Hart
5991 (hart-AT-caltech.edu).
5995 (hart-AT-caltech.edu).
5992
5996
5993 2002-04-12 Fernando Perez <fperez@colorado.edu>
5997 2002-04-12 Fernando Perez <fperez@colorado.edu>
5994
5998
5995 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5999 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5996 the exception handlers defined by the user (not the CrashHandler)
6000 the exception handlers defined by the user (not the CrashHandler)
5997 so that user exceptions don't trigger an ipython bug report.
6001 so that user exceptions don't trigger an ipython bug report.
5998
6002
5999 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6003 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6000 configurable (it should have always been so).
6004 configurable (it should have always been so).
6001
6005
6002 2002-03-26 Fernando Perez <fperez@colorado.edu>
6006 2002-03-26 Fernando Perez <fperez@colorado.edu>
6003
6007
6004 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6008 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6005 and there to fix embedding namespace issues. This should all be
6009 and there to fix embedding namespace issues. This should all be
6006 done in a more elegant way.
6010 done in a more elegant way.
6007
6011
6008 2002-03-25 Fernando Perez <fperez@colorado.edu>
6012 2002-03-25 Fernando Perez <fperez@colorado.edu>
6009
6013
6010 * IPython/genutils.py (get_home_dir): Try to make it work under
6014 * IPython/genutils.py (get_home_dir): Try to make it work under
6011 win9x also.
6015 win9x also.
6012
6016
6013 2002-03-20 Fernando Perez <fperez@colorado.edu>
6017 2002-03-20 Fernando Perez <fperez@colorado.edu>
6014
6018
6015 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6019 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6016 sys.displayhook untouched upon __init__.
6020 sys.displayhook untouched upon __init__.
6017
6021
6018 2002-03-19 Fernando Perez <fperez@colorado.edu>
6022 2002-03-19 Fernando Perez <fperez@colorado.edu>
6019
6023
6020 * Released 0.2.9 (for embedding bug, basically).
6024 * Released 0.2.9 (for embedding bug, basically).
6021
6025
6022 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6026 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6023 exceptions so that enclosing shell's state can be restored.
6027 exceptions so that enclosing shell's state can be restored.
6024
6028
6025 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6029 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6026 naming conventions in the .ipython/ dir.
6030 naming conventions in the .ipython/ dir.
6027
6031
6028 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6032 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6029 from delimiters list so filenames with - in them get expanded.
6033 from delimiters list so filenames with - in them get expanded.
6030
6034
6031 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6035 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6032 sys.displayhook not being properly restored after an embedded call.
6036 sys.displayhook not being properly restored after an embedded call.
6033
6037
6034 2002-03-18 Fernando Perez <fperez@colorado.edu>
6038 2002-03-18 Fernando Perez <fperez@colorado.edu>
6035
6039
6036 * Released 0.2.8
6040 * Released 0.2.8
6037
6041
6038 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6042 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6039 some files weren't being included in a -upgrade.
6043 some files weren't being included in a -upgrade.
6040 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6044 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6041 on' so that the first tab completes.
6045 on' so that the first tab completes.
6042 (InteractiveShell.handle_magic): fixed bug with spaces around
6046 (InteractiveShell.handle_magic): fixed bug with spaces around
6043 quotes breaking many magic commands.
6047 quotes breaking many magic commands.
6044
6048
6045 * setup.py: added note about ignoring the syntax error messages at
6049 * setup.py: added note about ignoring the syntax error messages at
6046 installation.
6050 installation.
6047
6051
6048 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6052 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6049 streamlining the gnuplot interface, now there's only one magic @gp.
6053 streamlining the gnuplot interface, now there's only one magic @gp.
6050
6054
6051 2002-03-17 Fernando Perez <fperez@colorado.edu>
6055 2002-03-17 Fernando Perez <fperez@colorado.edu>
6052
6056
6053 * IPython/UserConfig/magic_gnuplot.py: new name for the
6057 * IPython/UserConfig/magic_gnuplot.py: new name for the
6054 example-magic_pm.py file. Much enhanced system, now with a shell
6058 example-magic_pm.py file. Much enhanced system, now with a shell
6055 for communicating directly with gnuplot, one command at a time.
6059 for communicating directly with gnuplot, one command at a time.
6056
6060
6057 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6061 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6058 setting __name__=='__main__'.
6062 setting __name__=='__main__'.
6059
6063
6060 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6064 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6061 mini-shell for accessing gnuplot from inside ipython. Should
6065 mini-shell for accessing gnuplot from inside ipython. Should
6062 extend it later for grace access too. Inspired by Arnd's
6066 extend it later for grace access too. Inspired by Arnd's
6063 suggestion.
6067 suggestion.
6064
6068
6065 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6069 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6066 calling magic functions with () in their arguments. Thanks to Arnd
6070 calling magic functions with () in their arguments. Thanks to Arnd
6067 Baecker for pointing this to me.
6071 Baecker for pointing this to me.
6068
6072
6069 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6073 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6070 infinitely for integer or complex arrays (only worked with floats).
6074 infinitely for integer or complex arrays (only worked with floats).
6071
6075
6072 2002-03-16 Fernando Perez <fperez@colorado.edu>
6076 2002-03-16 Fernando Perez <fperez@colorado.edu>
6073
6077
6074 * setup.py: Merged setup and setup_windows into a single script
6078 * setup.py: Merged setup and setup_windows into a single script
6075 which properly handles things for windows users.
6079 which properly handles things for windows users.
6076
6080
6077 2002-03-15 Fernando Perez <fperez@colorado.edu>
6081 2002-03-15 Fernando Perez <fperez@colorado.edu>
6078
6082
6079 * Big change to the manual: now the magics are all automatically
6083 * Big change to the manual: now the magics are all automatically
6080 documented. This information is generated from their docstrings
6084 documented. This information is generated from their docstrings
6081 and put in a latex file included by the manual lyx file. This way
6085 and put in a latex file included by the manual lyx file. This way
6082 we get always up to date information for the magics. The manual
6086 we get always up to date information for the magics. The manual
6083 now also has proper version information, also auto-synced.
6087 now also has proper version information, also auto-synced.
6084
6088
6085 For this to work, an undocumented --magic_docstrings option was added.
6089 For this to work, an undocumented --magic_docstrings option was added.
6086
6090
6087 2002-03-13 Fernando Perez <fperez@colorado.edu>
6091 2002-03-13 Fernando Perez <fperez@colorado.edu>
6088
6092
6089 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6093 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6090 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6094 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6091
6095
6092 2002-03-12 Fernando Perez <fperez@colorado.edu>
6096 2002-03-12 Fernando Perez <fperez@colorado.edu>
6093
6097
6094 * IPython/ultraTB.py (TermColors): changed color escapes again to
6098 * IPython/ultraTB.py (TermColors): changed color escapes again to
6095 fix the (old, reintroduced) line-wrapping bug. Basically, if
6099 fix the (old, reintroduced) line-wrapping bug. Basically, if
6096 \001..\002 aren't given in the color escapes, lines get wrapped
6100 \001..\002 aren't given in the color escapes, lines get wrapped
6097 weirdly. But giving those screws up old xterms and emacs terms. So
6101 weirdly. But giving those screws up old xterms and emacs terms. So
6098 I added some logic for emacs terms to be ok, but I can't identify old
6102 I added some logic for emacs terms to be ok, but I can't identify old
6099 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6103 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6100
6104
6101 2002-03-10 Fernando Perez <fperez@colorado.edu>
6105 2002-03-10 Fernando Perez <fperez@colorado.edu>
6102
6106
6103 * IPython/usage.py (__doc__): Various documentation cleanups and
6107 * IPython/usage.py (__doc__): Various documentation cleanups and
6104 updates, both in usage docstrings and in the manual.
6108 updates, both in usage docstrings and in the manual.
6105
6109
6106 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6110 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6107 handling of caching. Set minimum acceptabe value for having a
6111 handling of caching. Set minimum acceptabe value for having a
6108 cache at 20 values.
6112 cache at 20 values.
6109
6113
6110 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6114 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6111 install_first_time function to a method, renamed it and added an
6115 install_first_time function to a method, renamed it and added an
6112 'upgrade' mode. Now people can update their config directory with
6116 'upgrade' mode. Now people can update their config directory with
6113 a simple command line switch (-upgrade, also new).
6117 a simple command line switch (-upgrade, also new).
6114
6118
6115 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6119 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6116 @file (convenient for automagic users under Python >= 2.2).
6120 @file (convenient for automagic users under Python >= 2.2).
6117 Removed @files (it seemed more like a plural than an abbrev. of
6121 Removed @files (it seemed more like a plural than an abbrev. of
6118 'file show').
6122 'file show').
6119
6123
6120 * IPython/iplib.py (install_first_time): Fixed crash if there were
6124 * IPython/iplib.py (install_first_time): Fixed crash if there were
6121 backup files ('~') in .ipython/ install directory.
6125 backup files ('~') in .ipython/ install directory.
6122
6126
6123 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6127 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6124 system. Things look fine, but these changes are fairly
6128 system. Things look fine, but these changes are fairly
6125 intrusive. Test them for a few days.
6129 intrusive. Test them for a few days.
6126
6130
6127 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6131 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6128 the prompts system. Now all in/out prompt strings are user
6132 the prompts system. Now all in/out prompt strings are user
6129 controllable. This is particularly useful for embedding, as one
6133 controllable. This is particularly useful for embedding, as one
6130 can tag embedded instances with particular prompts.
6134 can tag embedded instances with particular prompts.
6131
6135
6132 Also removed global use of sys.ps1/2, which now allows nested
6136 Also removed global use of sys.ps1/2, which now allows nested
6133 embeddings without any problems. Added command-line options for
6137 embeddings without any problems. Added command-line options for
6134 the prompt strings.
6138 the prompt strings.
6135
6139
6136 2002-03-08 Fernando Perez <fperez@colorado.edu>
6140 2002-03-08 Fernando Perez <fperez@colorado.edu>
6137
6141
6138 * IPython/UserConfig/example-embed-short.py (ipshell): added
6142 * IPython/UserConfig/example-embed-short.py (ipshell): added
6139 example file with the bare minimum code for embedding.
6143 example file with the bare minimum code for embedding.
6140
6144
6141 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6145 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6142 functionality for the embeddable shell to be activated/deactivated
6146 functionality for the embeddable shell to be activated/deactivated
6143 either globally or at each call.
6147 either globally or at each call.
6144
6148
6145 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6149 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6146 rewriting the prompt with '--->' for auto-inputs with proper
6150 rewriting the prompt with '--->' for auto-inputs with proper
6147 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6151 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6148 this is handled by the prompts class itself, as it should.
6152 this is handled by the prompts class itself, as it should.
6149
6153
6150 2002-03-05 Fernando Perez <fperez@colorado.edu>
6154 2002-03-05 Fernando Perez <fperez@colorado.edu>
6151
6155
6152 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6156 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6153 @logstart to avoid name clashes with the math log function.
6157 @logstart to avoid name clashes with the math log function.
6154
6158
6155 * Big updates to X/Emacs section of the manual.
6159 * Big updates to X/Emacs section of the manual.
6156
6160
6157 * Removed ipython_emacs. Milan explained to me how to pass
6161 * Removed ipython_emacs. Milan explained to me how to pass
6158 arguments to ipython through Emacs. Some day I'm going to end up
6162 arguments to ipython through Emacs. Some day I'm going to end up
6159 learning some lisp...
6163 learning some lisp...
6160
6164
6161 2002-03-04 Fernando Perez <fperez@colorado.edu>
6165 2002-03-04 Fernando Perez <fperez@colorado.edu>
6162
6166
6163 * IPython/ipython_emacs: Created script to be used as the
6167 * IPython/ipython_emacs: Created script to be used as the
6164 py-python-command Emacs variable so we can pass IPython
6168 py-python-command Emacs variable so we can pass IPython
6165 parameters. I can't figure out how to tell Emacs directly to pass
6169 parameters. I can't figure out how to tell Emacs directly to pass
6166 parameters to IPython, so a dummy shell script will do it.
6170 parameters to IPython, so a dummy shell script will do it.
6167
6171
6168 Other enhancements made for things to work better under Emacs'
6172 Other enhancements made for things to work better under Emacs'
6169 various types of terminals. Many thanks to Milan Zamazal
6173 various types of terminals. Many thanks to Milan Zamazal
6170 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6174 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6171
6175
6172 2002-03-01 Fernando Perez <fperez@colorado.edu>
6176 2002-03-01 Fernando Perez <fperez@colorado.edu>
6173
6177
6174 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6178 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6175 that loading of readline is now optional. This gives better
6179 that loading of readline is now optional. This gives better
6176 control to emacs users.
6180 control to emacs users.
6177
6181
6178 * IPython/ultraTB.py (__date__): Modified color escape sequences
6182 * IPython/ultraTB.py (__date__): Modified color escape sequences
6179 and now things work fine under xterm and in Emacs' term buffers
6183 and now things work fine under xterm and in Emacs' term buffers
6180 (though not shell ones). Well, in emacs you get colors, but all
6184 (though not shell ones). Well, in emacs you get colors, but all
6181 seem to be 'light' colors (no difference between dark and light
6185 seem to be 'light' colors (no difference between dark and light
6182 ones). But the garbage chars are gone, and also in xterms. It
6186 ones). But the garbage chars are gone, and also in xterms. It
6183 seems that now I'm using 'cleaner' ansi sequences.
6187 seems that now I'm using 'cleaner' ansi sequences.
6184
6188
6185 2002-02-21 Fernando Perez <fperez@colorado.edu>
6189 2002-02-21 Fernando Perez <fperez@colorado.edu>
6186
6190
6187 * Released 0.2.7 (mainly to publish the scoping fix).
6191 * Released 0.2.7 (mainly to publish the scoping fix).
6188
6192
6189 * IPython/Logger.py (Logger.logstate): added. A corresponding
6193 * IPython/Logger.py (Logger.logstate): added. A corresponding
6190 @logstate magic was created.
6194 @logstate magic was created.
6191
6195
6192 * IPython/Magic.py: fixed nested scoping problem under Python
6196 * IPython/Magic.py: fixed nested scoping problem under Python
6193 2.1.x (automagic wasn't working).
6197 2.1.x (automagic wasn't working).
6194
6198
6195 2002-02-20 Fernando Perez <fperez@colorado.edu>
6199 2002-02-20 Fernando Perez <fperez@colorado.edu>
6196
6200
6197 * Released 0.2.6.
6201 * Released 0.2.6.
6198
6202
6199 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6203 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6200 option so that logs can come out without any headers at all.
6204 option so that logs can come out without any headers at all.
6201
6205
6202 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6206 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6203 SciPy.
6207 SciPy.
6204
6208
6205 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6209 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6206 that embedded IPython calls don't require vars() to be explicitly
6210 that embedded IPython calls don't require vars() to be explicitly
6207 passed. Now they are extracted from the caller's frame (code
6211 passed. Now they are extracted from the caller's frame (code
6208 snatched from Eric Jones' weave). Added better documentation to
6212 snatched from Eric Jones' weave). Added better documentation to
6209 the section on embedding and the example file.
6213 the section on embedding and the example file.
6210
6214
6211 * IPython/genutils.py (page): Changed so that under emacs, it just
6215 * IPython/genutils.py (page): Changed so that under emacs, it just
6212 prints the string. You can then page up and down in the emacs
6216 prints the string. You can then page up and down in the emacs
6213 buffer itself. This is how the builtin help() works.
6217 buffer itself. This is how the builtin help() works.
6214
6218
6215 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6219 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6216 macro scoping: macros need to be executed in the user's namespace
6220 macro scoping: macros need to be executed in the user's namespace
6217 to work as if they had been typed by the user.
6221 to work as if they had been typed by the user.
6218
6222
6219 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6223 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6220 execute automatically (no need to type 'exec...'). They then
6224 execute automatically (no need to type 'exec...'). They then
6221 behave like 'true macros'. The printing system was also modified
6225 behave like 'true macros'. The printing system was also modified
6222 for this to work.
6226 for this to work.
6223
6227
6224 2002-02-19 Fernando Perez <fperez@colorado.edu>
6228 2002-02-19 Fernando Perez <fperez@colorado.edu>
6225
6229
6226 * IPython/genutils.py (page_file): new function for paging files
6230 * IPython/genutils.py (page_file): new function for paging files
6227 in an OS-independent way. Also necessary for file viewing to work
6231 in an OS-independent way. Also necessary for file viewing to work
6228 well inside Emacs buffers.
6232 well inside Emacs buffers.
6229 (page): Added checks for being in an emacs buffer.
6233 (page): Added checks for being in an emacs buffer.
6230 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6234 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6231 same bug in iplib.
6235 same bug in iplib.
6232
6236
6233 2002-02-18 Fernando Perez <fperez@colorado.edu>
6237 2002-02-18 Fernando Perez <fperez@colorado.edu>
6234
6238
6235 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6239 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6236 of readline so that IPython can work inside an Emacs buffer.
6240 of readline so that IPython can work inside an Emacs buffer.
6237
6241
6238 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6242 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6239 method signatures (they weren't really bugs, but it looks cleaner
6243 method signatures (they weren't really bugs, but it looks cleaner
6240 and keeps PyChecker happy).
6244 and keeps PyChecker happy).
6241
6245
6242 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6246 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6243 for implementing various user-defined hooks. Currently only
6247 for implementing various user-defined hooks. Currently only
6244 display is done.
6248 display is done.
6245
6249
6246 * IPython/Prompts.py (CachedOutput._display): changed display
6250 * IPython/Prompts.py (CachedOutput._display): changed display
6247 functions so that they can be dynamically changed by users easily.
6251 functions so that they can be dynamically changed by users easily.
6248
6252
6249 * IPython/Extensions/numeric_formats.py (num_display): added an
6253 * IPython/Extensions/numeric_formats.py (num_display): added an
6250 extension for printing NumPy arrays in flexible manners. It
6254 extension for printing NumPy arrays in flexible manners. It
6251 doesn't do anything yet, but all the structure is in
6255 doesn't do anything yet, but all the structure is in
6252 place. Ultimately the plan is to implement output format control
6256 place. Ultimately the plan is to implement output format control
6253 like in Octave.
6257 like in Octave.
6254
6258
6255 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6259 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6256 methods are found at run-time by all the automatic machinery.
6260 methods are found at run-time by all the automatic machinery.
6257
6261
6258 2002-02-17 Fernando Perez <fperez@colorado.edu>
6262 2002-02-17 Fernando Perez <fperez@colorado.edu>
6259
6263
6260 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6264 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6261 whole file a little.
6265 whole file a little.
6262
6266
6263 * ToDo: closed this document. Now there's a new_design.lyx
6267 * ToDo: closed this document. Now there's a new_design.lyx
6264 document for all new ideas. Added making a pdf of it for the
6268 document for all new ideas. Added making a pdf of it for the
6265 end-user distro.
6269 end-user distro.
6266
6270
6267 * IPython/Logger.py (Logger.switch_log): Created this to replace
6271 * IPython/Logger.py (Logger.switch_log): Created this to replace
6268 logon() and logoff(). It also fixes a nasty crash reported by
6272 logon() and logoff(). It also fixes a nasty crash reported by
6269 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6273 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6270
6274
6271 * IPython/iplib.py (complete): got auto-completion to work with
6275 * IPython/iplib.py (complete): got auto-completion to work with
6272 automagic (I had wanted this for a long time).
6276 automagic (I had wanted this for a long time).
6273
6277
6274 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6278 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6275 to @file, since file() is now a builtin and clashes with automagic
6279 to @file, since file() is now a builtin and clashes with automagic
6276 for @file.
6280 for @file.
6277
6281
6278 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6282 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6279 of this was previously in iplib, which had grown to more than 2000
6283 of this was previously in iplib, which had grown to more than 2000
6280 lines, way too long. No new functionality, but it makes managing
6284 lines, way too long. No new functionality, but it makes managing
6281 the code a bit easier.
6285 the code a bit easier.
6282
6286
6283 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6287 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6284 information to crash reports.
6288 information to crash reports.
6285
6289
6286 2002-02-12 Fernando Perez <fperez@colorado.edu>
6290 2002-02-12 Fernando Perez <fperez@colorado.edu>
6287
6291
6288 * Released 0.2.5.
6292 * Released 0.2.5.
6289
6293
6290 2002-02-11 Fernando Perez <fperez@colorado.edu>
6294 2002-02-11 Fernando Perez <fperez@colorado.edu>
6291
6295
6292 * Wrote a relatively complete Windows installer. It puts
6296 * Wrote a relatively complete Windows installer. It puts
6293 everything in place, creates Start Menu entries and fixes the
6297 everything in place, creates Start Menu entries and fixes the
6294 color issues. Nothing fancy, but it works.
6298 color issues. Nothing fancy, but it works.
6295
6299
6296 2002-02-10 Fernando Perez <fperez@colorado.edu>
6300 2002-02-10 Fernando Perez <fperez@colorado.edu>
6297
6301
6298 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6302 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6299 os.path.expanduser() call so that we can type @run ~/myfile.py and
6303 os.path.expanduser() call so that we can type @run ~/myfile.py and
6300 have thigs work as expected.
6304 have thigs work as expected.
6301
6305
6302 * IPython/genutils.py (page): fixed exception handling so things
6306 * IPython/genutils.py (page): fixed exception handling so things
6303 work both in Unix and Windows correctly. Quitting a pager triggers
6307 work both in Unix and Windows correctly. Quitting a pager triggers
6304 an IOError/broken pipe in Unix, and in windows not finding a pager
6308 an IOError/broken pipe in Unix, and in windows not finding a pager
6305 is also an IOError, so I had to actually look at the return value
6309 is also an IOError, so I had to actually look at the return value
6306 of the exception, not just the exception itself. Should be ok now.
6310 of the exception, not just the exception itself. Should be ok now.
6307
6311
6308 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6312 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6309 modified to allow case-insensitive color scheme changes.
6313 modified to allow case-insensitive color scheme changes.
6310
6314
6311 2002-02-09 Fernando Perez <fperez@colorado.edu>
6315 2002-02-09 Fernando Perez <fperez@colorado.edu>
6312
6316
6313 * IPython/genutils.py (native_line_ends): new function to leave
6317 * IPython/genutils.py (native_line_ends): new function to leave
6314 user config files with os-native line-endings.
6318 user config files with os-native line-endings.
6315
6319
6316 * README and manual updates.
6320 * README and manual updates.
6317
6321
6318 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6322 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6319 instead of StringType to catch Unicode strings.
6323 instead of StringType to catch Unicode strings.
6320
6324
6321 * IPython/genutils.py (filefind): fixed bug for paths with
6325 * IPython/genutils.py (filefind): fixed bug for paths with
6322 embedded spaces (very common in Windows).
6326 embedded spaces (very common in Windows).
6323
6327
6324 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6328 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6325 files under Windows, so that they get automatically associated
6329 files under Windows, so that they get automatically associated
6326 with a text editor. Windows makes it a pain to handle
6330 with a text editor. Windows makes it a pain to handle
6327 extension-less files.
6331 extension-less files.
6328
6332
6329 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6333 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6330 warning about readline only occur for Posix. In Windows there's no
6334 warning about readline only occur for Posix. In Windows there's no
6331 way to get readline, so why bother with the warning.
6335 way to get readline, so why bother with the warning.
6332
6336
6333 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6337 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6334 for __str__ instead of dir(self), since dir() changed in 2.2.
6338 for __str__ instead of dir(self), since dir() changed in 2.2.
6335
6339
6336 * Ported to Windows! Tested on XP, I suspect it should work fine
6340 * Ported to Windows! Tested on XP, I suspect it should work fine
6337 on NT/2000, but I don't think it will work on 98 et al. That
6341 on NT/2000, but I don't think it will work on 98 et al. That
6338 series of Windows is such a piece of junk anyway that I won't try
6342 series of Windows is such a piece of junk anyway that I won't try
6339 porting it there. The XP port was straightforward, showed a few
6343 porting it there. The XP port was straightforward, showed a few
6340 bugs here and there (fixed all), in particular some string
6344 bugs here and there (fixed all), in particular some string
6341 handling stuff which required considering Unicode strings (which
6345 handling stuff which required considering Unicode strings (which
6342 Windows uses). This is good, but hasn't been too tested :) No
6346 Windows uses). This is good, but hasn't been too tested :) No
6343 fancy installer yet, I'll put a note in the manual so people at
6347 fancy installer yet, I'll put a note in the manual so people at
6344 least make manually a shortcut.
6348 least make manually a shortcut.
6345
6349
6346 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6350 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6347 into a single one, "colors". This now controls both prompt and
6351 into a single one, "colors". This now controls both prompt and
6348 exception color schemes, and can be changed both at startup
6352 exception color schemes, and can be changed both at startup
6349 (either via command-line switches or via ipythonrc files) and at
6353 (either via command-line switches or via ipythonrc files) and at
6350 runtime, with @colors.
6354 runtime, with @colors.
6351 (Magic.magic_run): renamed @prun to @run and removed the old
6355 (Magic.magic_run): renamed @prun to @run and removed the old
6352 @run. The two were too similar to warrant keeping both.
6356 @run. The two were too similar to warrant keeping both.
6353
6357
6354 2002-02-03 Fernando Perez <fperez@colorado.edu>
6358 2002-02-03 Fernando Perez <fperez@colorado.edu>
6355
6359
6356 * IPython/iplib.py (install_first_time): Added comment on how to
6360 * IPython/iplib.py (install_first_time): Added comment on how to
6357 configure the color options for first-time users. Put a <return>
6361 configure the color options for first-time users. Put a <return>
6358 request at the end so that small-terminal users get a chance to
6362 request at the end so that small-terminal users get a chance to
6359 read the startup info.
6363 read the startup info.
6360
6364
6361 2002-01-23 Fernando Perez <fperez@colorado.edu>
6365 2002-01-23 Fernando Perez <fperez@colorado.edu>
6362
6366
6363 * IPython/iplib.py (CachedOutput.update): Changed output memory
6367 * IPython/iplib.py (CachedOutput.update): Changed output memory
6364 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6368 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6365 input history we still use _i. Did this b/c these variable are
6369 input history we still use _i. Did this b/c these variable are
6366 very commonly used in interactive work, so the less we need to
6370 very commonly used in interactive work, so the less we need to
6367 type the better off we are.
6371 type the better off we are.
6368 (Magic.magic_prun): updated @prun to better handle the namespaces
6372 (Magic.magic_prun): updated @prun to better handle the namespaces
6369 the file will run in, including a fix for __name__ not being set
6373 the file will run in, including a fix for __name__ not being set
6370 before.
6374 before.
6371
6375
6372 2002-01-20 Fernando Perez <fperez@colorado.edu>
6376 2002-01-20 Fernando Perez <fperez@colorado.edu>
6373
6377
6374 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6378 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6375 extra garbage for Python 2.2. Need to look more carefully into
6379 extra garbage for Python 2.2. Need to look more carefully into
6376 this later.
6380 this later.
6377
6381
6378 2002-01-19 Fernando Perez <fperez@colorado.edu>
6382 2002-01-19 Fernando Perez <fperez@colorado.edu>
6379
6383
6380 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6384 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6381 display SyntaxError exceptions properly formatted when they occur
6385 display SyntaxError exceptions properly formatted when they occur
6382 (they can be triggered by imported code).
6386 (they can be triggered by imported code).
6383
6387
6384 2002-01-18 Fernando Perez <fperez@colorado.edu>
6388 2002-01-18 Fernando Perez <fperez@colorado.edu>
6385
6389
6386 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6390 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6387 SyntaxError exceptions are reported nicely formatted, instead of
6391 SyntaxError exceptions are reported nicely formatted, instead of
6388 spitting out only offset information as before.
6392 spitting out only offset information as before.
6389 (Magic.magic_prun): Added the @prun function for executing
6393 (Magic.magic_prun): Added the @prun function for executing
6390 programs with command line args inside IPython.
6394 programs with command line args inside IPython.
6391
6395
6392 2002-01-16 Fernando Perez <fperez@colorado.edu>
6396 2002-01-16 Fernando Perez <fperez@colorado.edu>
6393
6397
6394 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6398 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6395 to *not* include the last item given in a range. This brings their
6399 to *not* include the last item given in a range. This brings their
6396 behavior in line with Python's slicing:
6400 behavior in line with Python's slicing:
6397 a[n1:n2] -> a[n1]...a[n2-1]
6401 a[n1:n2] -> a[n1]...a[n2-1]
6398 It may be a bit less convenient, but I prefer to stick to Python's
6402 It may be a bit less convenient, but I prefer to stick to Python's
6399 conventions *everywhere*, so users never have to wonder.
6403 conventions *everywhere*, so users never have to wonder.
6400 (Magic.magic_macro): Added @macro function to ease the creation of
6404 (Magic.magic_macro): Added @macro function to ease the creation of
6401 macros.
6405 macros.
6402
6406
6403 2002-01-05 Fernando Perez <fperez@colorado.edu>
6407 2002-01-05 Fernando Perez <fperez@colorado.edu>
6404
6408
6405 * Released 0.2.4.
6409 * Released 0.2.4.
6406
6410
6407 * IPython/iplib.py (Magic.magic_pdef):
6411 * IPython/iplib.py (Magic.magic_pdef):
6408 (InteractiveShell.safe_execfile): report magic lines and error
6412 (InteractiveShell.safe_execfile): report magic lines and error
6409 lines without line numbers so one can easily copy/paste them for
6413 lines without line numbers so one can easily copy/paste them for
6410 re-execution.
6414 re-execution.
6411
6415
6412 * Updated manual with recent changes.
6416 * Updated manual with recent changes.
6413
6417
6414 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6418 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6415 docstring printing when class? is called. Very handy for knowing
6419 docstring printing when class? is called. Very handy for knowing
6416 how to create class instances (as long as __init__ is well
6420 how to create class instances (as long as __init__ is well
6417 documented, of course :)
6421 documented, of course :)
6418 (Magic.magic_doc): print both class and constructor docstrings.
6422 (Magic.magic_doc): print both class and constructor docstrings.
6419 (Magic.magic_pdef): give constructor info if passed a class and
6423 (Magic.magic_pdef): give constructor info if passed a class and
6420 __call__ info for callable object instances.
6424 __call__ info for callable object instances.
6421
6425
6422 2002-01-04 Fernando Perez <fperez@colorado.edu>
6426 2002-01-04 Fernando Perez <fperez@colorado.edu>
6423
6427
6424 * Made deep_reload() off by default. It doesn't always work
6428 * Made deep_reload() off by default. It doesn't always work
6425 exactly as intended, so it's probably safer to have it off. It's
6429 exactly as intended, so it's probably safer to have it off. It's
6426 still available as dreload() anyway, so nothing is lost.
6430 still available as dreload() anyway, so nothing is lost.
6427
6431
6428 2002-01-02 Fernando Perez <fperez@colorado.edu>
6432 2002-01-02 Fernando Perez <fperez@colorado.edu>
6429
6433
6430 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6434 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6431 so I wanted an updated release).
6435 so I wanted an updated release).
6432
6436
6433 2001-12-27 Fernando Perez <fperez@colorado.edu>
6437 2001-12-27 Fernando Perez <fperez@colorado.edu>
6434
6438
6435 * IPython/iplib.py (InteractiveShell.interact): Added the original
6439 * IPython/iplib.py (InteractiveShell.interact): Added the original
6436 code from 'code.py' for this module in order to change the
6440 code from 'code.py' for this module in order to change the
6437 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6441 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6438 the history cache would break when the user hit Ctrl-C, and
6442 the history cache would break when the user hit Ctrl-C, and
6439 interact() offers no way to add any hooks to it.
6443 interact() offers no way to add any hooks to it.
6440
6444
6441 2001-12-23 Fernando Perez <fperez@colorado.edu>
6445 2001-12-23 Fernando Perez <fperez@colorado.edu>
6442
6446
6443 * setup.py: added check for 'MANIFEST' before trying to remove
6447 * setup.py: added check for 'MANIFEST' before trying to remove
6444 it. Thanks to Sean Reifschneider.
6448 it. Thanks to Sean Reifschneider.
6445
6449
6446 2001-12-22 Fernando Perez <fperez@colorado.edu>
6450 2001-12-22 Fernando Perez <fperez@colorado.edu>
6447
6451
6448 * Released 0.2.2.
6452 * Released 0.2.2.
6449
6453
6450 * Finished (reasonably) writing the manual. Later will add the
6454 * Finished (reasonably) writing the manual. Later will add the
6451 python-standard navigation stylesheets, but for the time being
6455 python-standard navigation stylesheets, but for the time being
6452 it's fairly complete. Distribution will include html and pdf
6456 it's fairly complete. Distribution will include html and pdf
6453 versions.
6457 versions.
6454
6458
6455 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6459 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6456 (MayaVi author).
6460 (MayaVi author).
6457
6461
6458 2001-12-21 Fernando Perez <fperez@colorado.edu>
6462 2001-12-21 Fernando Perez <fperez@colorado.edu>
6459
6463
6460 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6464 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6461 good public release, I think (with the manual and the distutils
6465 good public release, I think (with the manual and the distutils
6462 installer). The manual can use some work, but that can go
6466 installer). The manual can use some work, but that can go
6463 slowly. Otherwise I think it's quite nice for end users. Next
6467 slowly. Otherwise I think it's quite nice for end users. Next
6464 summer, rewrite the guts of it...
6468 summer, rewrite the guts of it...
6465
6469
6466 * Changed format of ipythonrc files to use whitespace as the
6470 * Changed format of ipythonrc files to use whitespace as the
6467 separator instead of an explicit '='. Cleaner.
6471 separator instead of an explicit '='. Cleaner.
6468
6472
6469 2001-12-20 Fernando Perez <fperez@colorado.edu>
6473 2001-12-20 Fernando Perez <fperez@colorado.edu>
6470
6474
6471 * Started a manual in LyX. For now it's just a quick merge of the
6475 * Started a manual in LyX. For now it's just a quick merge of the
6472 various internal docstrings and READMEs. Later it may grow into a
6476 various internal docstrings and READMEs. Later it may grow into a
6473 nice, full-blown manual.
6477 nice, full-blown manual.
6474
6478
6475 * Set up a distutils based installer. Installation should now be
6479 * Set up a distutils based installer. Installation should now be
6476 trivially simple for end-users.
6480 trivially simple for end-users.
6477
6481
6478 2001-12-11 Fernando Perez <fperez@colorado.edu>
6482 2001-12-11 Fernando Perez <fperez@colorado.edu>
6479
6483
6480 * Released 0.2.0. First public release, announced it at
6484 * Released 0.2.0. First public release, announced it at
6481 comp.lang.python. From now on, just bugfixes...
6485 comp.lang.python. From now on, just bugfixes...
6482
6486
6483 * Went through all the files, set copyright/license notices and
6487 * Went through all the files, set copyright/license notices and
6484 cleaned up things. Ready for release.
6488 cleaned up things. Ready for release.
6485
6489
6486 2001-12-10 Fernando Perez <fperez@colorado.edu>
6490 2001-12-10 Fernando Perez <fperez@colorado.edu>
6487
6491
6488 * Changed the first-time installer not to use tarfiles. It's more
6492 * Changed the first-time installer not to use tarfiles. It's more
6489 robust now and less unix-dependent. Also makes it easier for
6493 robust now and less unix-dependent. Also makes it easier for
6490 people to later upgrade versions.
6494 people to later upgrade versions.
6491
6495
6492 * Changed @exit to @abort to reflect the fact that it's pretty
6496 * Changed @exit to @abort to reflect the fact that it's pretty
6493 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6497 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6494 becomes significant only when IPyhton is embedded: in that case,
6498 becomes significant only when IPyhton is embedded: in that case,
6495 C-D closes IPython only, but @abort kills the enclosing program
6499 C-D closes IPython only, but @abort kills the enclosing program
6496 too (unless it had called IPython inside a try catching
6500 too (unless it had called IPython inside a try catching
6497 SystemExit).
6501 SystemExit).
6498
6502
6499 * Created Shell module which exposes the actuall IPython Shell
6503 * Created Shell module which exposes the actuall IPython Shell
6500 classes, currently the normal and the embeddable one. This at
6504 classes, currently the normal and the embeddable one. This at
6501 least offers a stable interface we won't need to change when
6505 least offers a stable interface we won't need to change when
6502 (later) the internals are rewritten. That rewrite will be confined
6506 (later) the internals are rewritten. That rewrite will be confined
6503 to iplib and ipmaker, but the Shell interface should remain as is.
6507 to iplib and ipmaker, but the Shell interface should remain as is.
6504
6508
6505 * Added embed module which offers an embeddable IPShell object,
6509 * Added embed module which offers an embeddable IPShell object,
6506 useful to fire up IPython *inside* a running program. Great for
6510 useful to fire up IPython *inside* a running program. Great for
6507 debugging or dynamical data analysis.
6511 debugging or dynamical data analysis.
6508
6512
6509 2001-12-08 Fernando Perez <fperez@colorado.edu>
6513 2001-12-08 Fernando Perez <fperez@colorado.edu>
6510
6514
6511 * Fixed small bug preventing seeing info from methods of defined
6515 * Fixed small bug preventing seeing info from methods of defined
6512 objects (incorrect namespace in _ofind()).
6516 objects (incorrect namespace in _ofind()).
6513
6517
6514 * Documentation cleanup. Moved the main usage docstrings to a
6518 * Documentation cleanup. Moved the main usage docstrings to a
6515 separate file, usage.py (cleaner to maintain, and hopefully in the
6519 separate file, usage.py (cleaner to maintain, and hopefully in the
6516 future some perlpod-like way of producing interactive, man and
6520 future some perlpod-like way of producing interactive, man and
6517 html docs out of it will be found).
6521 html docs out of it will be found).
6518
6522
6519 * Added @profile to see your profile at any time.
6523 * Added @profile to see your profile at any time.
6520
6524
6521 * Added @p as an alias for 'print'. It's especially convenient if
6525 * Added @p as an alias for 'print'. It's especially convenient if
6522 using automagic ('p x' prints x).
6526 using automagic ('p x' prints x).
6523
6527
6524 * Small cleanups and fixes after a pychecker run.
6528 * Small cleanups and fixes after a pychecker run.
6525
6529
6526 * Changed the @cd command to handle @cd - and @cd -<n> for
6530 * Changed the @cd command to handle @cd - and @cd -<n> for
6527 visiting any directory in _dh.
6531 visiting any directory in _dh.
6528
6532
6529 * Introduced _dh, a history of visited directories. @dhist prints
6533 * Introduced _dh, a history of visited directories. @dhist prints
6530 it out with numbers.
6534 it out with numbers.
6531
6535
6532 2001-12-07 Fernando Perez <fperez@colorado.edu>
6536 2001-12-07 Fernando Perez <fperez@colorado.edu>
6533
6537
6534 * Released 0.1.22
6538 * Released 0.1.22
6535
6539
6536 * Made initialization a bit more robust against invalid color
6540 * Made initialization a bit more robust against invalid color
6537 options in user input (exit, not traceback-crash).
6541 options in user input (exit, not traceback-crash).
6538
6542
6539 * Changed the bug crash reporter to write the report only in the
6543 * Changed the bug crash reporter to write the report only in the
6540 user's .ipython directory. That way IPython won't litter people's
6544 user's .ipython directory. That way IPython won't litter people's
6541 hard disks with crash files all over the place. Also print on
6545 hard disks with crash files all over the place. Also print on
6542 screen the necessary mail command.
6546 screen the necessary mail command.
6543
6547
6544 * With the new ultraTB, implemented LightBG color scheme for light
6548 * With the new ultraTB, implemented LightBG color scheme for light
6545 background terminals. A lot of people like white backgrounds, so I
6549 background terminals. A lot of people like white backgrounds, so I
6546 guess we should at least give them something readable.
6550 guess we should at least give them something readable.
6547
6551
6548 2001-12-06 Fernando Perez <fperez@colorado.edu>
6552 2001-12-06 Fernando Perez <fperez@colorado.edu>
6549
6553
6550 * Modified the structure of ultraTB. Now there's a proper class
6554 * Modified the structure of ultraTB. Now there's a proper class
6551 for tables of color schemes which allow adding schemes easily and
6555 for tables of color schemes which allow adding schemes easily and
6552 switching the active scheme without creating a new instance every
6556 switching the active scheme without creating a new instance every
6553 time (which was ridiculous). The syntax for creating new schemes
6557 time (which was ridiculous). The syntax for creating new schemes
6554 is also cleaner. I think ultraTB is finally done, with a clean
6558 is also cleaner. I think ultraTB is finally done, with a clean
6555 class structure. Names are also much cleaner (now there's proper
6559 class structure. Names are also much cleaner (now there's proper
6556 color tables, no need for every variable to also have 'color' in
6560 color tables, no need for every variable to also have 'color' in
6557 its name).
6561 its name).
6558
6562
6559 * Broke down genutils into separate files. Now genutils only
6563 * Broke down genutils into separate files. Now genutils only
6560 contains utility functions, and classes have been moved to their
6564 contains utility functions, and classes have been moved to their
6561 own files (they had enough independent functionality to warrant
6565 own files (they had enough independent functionality to warrant
6562 it): ConfigLoader, OutputTrap, Struct.
6566 it): ConfigLoader, OutputTrap, Struct.
6563
6567
6564 2001-12-05 Fernando Perez <fperez@colorado.edu>
6568 2001-12-05 Fernando Perez <fperez@colorado.edu>
6565
6569
6566 * IPython turns 21! Released version 0.1.21, as a candidate for
6570 * IPython turns 21! Released version 0.1.21, as a candidate for
6567 public consumption. If all goes well, release in a few days.
6571 public consumption. If all goes well, release in a few days.
6568
6572
6569 * Fixed path bug (files in Extensions/ directory wouldn't be found
6573 * Fixed path bug (files in Extensions/ directory wouldn't be found
6570 unless IPython/ was explicitly in sys.path).
6574 unless IPython/ was explicitly in sys.path).
6571
6575
6572 * Extended the FlexCompleter class as MagicCompleter to allow
6576 * Extended the FlexCompleter class as MagicCompleter to allow
6573 completion of @-starting lines.
6577 completion of @-starting lines.
6574
6578
6575 * Created __release__.py file as a central repository for release
6579 * Created __release__.py file as a central repository for release
6576 info that other files can read from.
6580 info that other files can read from.
6577
6581
6578 * Fixed small bug in logging: when logging was turned on in
6582 * Fixed small bug in logging: when logging was turned on in
6579 mid-session, old lines with special meanings (!@?) were being
6583 mid-session, old lines with special meanings (!@?) were being
6580 logged without the prepended comment, which is necessary since
6584 logged without the prepended comment, which is necessary since
6581 they are not truly valid python syntax. This should make session
6585 they are not truly valid python syntax. This should make session
6582 restores produce less errors.
6586 restores produce less errors.
6583
6587
6584 * The namespace cleanup forced me to make a FlexCompleter class
6588 * The namespace cleanup forced me to make a FlexCompleter class
6585 which is nothing but a ripoff of rlcompleter, but with selectable
6589 which is nothing but a ripoff of rlcompleter, but with selectable
6586 namespace (rlcompleter only works in __main__.__dict__). I'll try
6590 namespace (rlcompleter only works in __main__.__dict__). I'll try
6587 to submit a note to the authors to see if this change can be
6591 to submit a note to the authors to see if this change can be
6588 incorporated in future rlcompleter releases (Dec.6: done)
6592 incorporated in future rlcompleter releases (Dec.6: done)
6589
6593
6590 * More fixes to namespace handling. It was a mess! Now all
6594 * More fixes to namespace handling. It was a mess! Now all
6591 explicit references to __main__.__dict__ are gone (except when
6595 explicit references to __main__.__dict__ are gone (except when
6592 really needed) and everything is handled through the namespace
6596 really needed) and everything is handled through the namespace
6593 dicts in the IPython instance. We seem to be getting somewhere
6597 dicts in the IPython instance. We seem to be getting somewhere
6594 with this, finally...
6598 with this, finally...
6595
6599
6596 * Small documentation updates.
6600 * Small documentation updates.
6597
6601
6598 * Created the Extensions directory under IPython (with an
6602 * Created the Extensions directory under IPython (with an
6599 __init__.py). Put the PhysicalQ stuff there. This directory should
6603 __init__.py). Put the PhysicalQ stuff there. This directory should
6600 be used for all special-purpose extensions.
6604 be used for all special-purpose extensions.
6601
6605
6602 * File renaming:
6606 * File renaming:
6603 ipythonlib --> ipmaker
6607 ipythonlib --> ipmaker
6604 ipplib --> iplib
6608 ipplib --> iplib
6605 This makes a bit more sense in terms of what these files actually do.
6609 This makes a bit more sense in terms of what these files actually do.
6606
6610
6607 * Moved all the classes and functions in ipythonlib to ipplib, so
6611 * Moved all the classes and functions in ipythonlib to ipplib, so
6608 now ipythonlib only has make_IPython(). This will ease up its
6612 now ipythonlib only has make_IPython(). This will ease up its
6609 splitting in smaller functional chunks later.
6613 splitting in smaller functional chunks later.
6610
6614
6611 * Cleaned up (done, I think) output of @whos. Better column
6615 * Cleaned up (done, I think) output of @whos. Better column
6612 formatting, and now shows str(var) for as much as it can, which is
6616 formatting, and now shows str(var) for as much as it can, which is
6613 typically what one gets with a 'print var'.
6617 typically what one gets with a 'print var'.
6614
6618
6615 2001-12-04 Fernando Perez <fperez@colorado.edu>
6619 2001-12-04 Fernando Perez <fperez@colorado.edu>
6616
6620
6617 * Fixed namespace problems. Now builtin/IPyhton/user names get
6621 * Fixed namespace problems. Now builtin/IPyhton/user names get
6618 properly reported in their namespace. Internal namespace handling
6622 properly reported in their namespace. Internal namespace handling
6619 is finally getting decent (not perfect yet, but much better than
6623 is finally getting decent (not perfect yet, but much better than
6620 the ad-hoc mess we had).
6624 the ad-hoc mess we had).
6621
6625
6622 * Removed -exit option. If people just want to run a python
6626 * Removed -exit option. If people just want to run a python
6623 script, that's what the normal interpreter is for. Less
6627 script, that's what the normal interpreter is for. Less
6624 unnecessary options, less chances for bugs.
6628 unnecessary options, less chances for bugs.
6625
6629
6626 * Added a crash handler which generates a complete post-mortem if
6630 * Added a crash handler which generates a complete post-mortem if
6627 IPython crashes. This will help a lot in tracking bugs down the
6631 IPython crashes. This will help a lot in tracking bugs down the
6628 road.
6632 road.
6629
6633
6630 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6634 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6631 which were boud to functions being reassigned would bypass the
6635 which were boud to functions being reassigned would bypass the
6632 logger, breaking the sync of _il with the prompt counter. This
6636 logger, breaking the sync of _il with the prompt counter. This
6633 would then crash IPython later when a new line was logged.
6637 would then crash IPython later when a new line was logged.
6634
6638
6635 2001-12-02 Fernando Perez <fperez@colorado.edu>
6639 2001-12-02 Fernando Perez <fperez@colorado.edu>
6636
6640
6637 * Made IPython a package. This means people don't have to clutter
6641 * Made IPython a package. This means people don't have to clutter
6638 their sys.path with yet another directory. Changed the INSTALL
6642 their sys.path with yet another directory. Changed the INSTALL
6639 file accordingly.
6643 file accordingly.
6640
6644
6641 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6645 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6642 sorts its output (so @who shows it sorted) and @whos formats the
6646 sorts its output (so @who shows it sorted) and @whos formats the
6643 table according to the width of the first column. Nicer, easier to
6647 table according to the width of the first column. Nicer, easier to
6644 read. Todo: write a generic table_format() which takes a list of
6648 read. Todo: write a generic table_format() which takes a list of
6645 lists and prints it nicely formatted, with optional row/column
6649 lists and prints it nicely formatted, with optional row/column
6646 separators and proper padding and justification.
6650 separators and proper padding and justification.
6647
6651
6648 * Released 0.1.20
6652 * Released 0.1.20
6649
6653
6650 * Fixed bug in @log which would reverse the inputcache list (a
6654 * Fixed bug in @log which would reverse the inputcache list (a
6651 copy operation was missing).
6655 copy operation was missing).
6652
6656
6653 * Code cleanup. @config was changed to use page(). Better, since
6657 * Code cleanup. @config was changed to use page(). Better, since
6654 its output is always quite long.
6658 its output is always quite long.
6655
6659
6656 * Itpl is back as a dependency. I was having too many problems
6660 * Itpl is back as a dependency. I was having too many problems
6657 getting the parametric aliases to work reliably, and it's just
6661 getting the parametric aliases to work reliably, and it's just
6658 easier to code weird string operations with it than playing %()s
6662 easier to code weird string operations with it than playing %()s
6659 games. It's only ~6k, so I don't think it's too big a deal.
6663 games. It's only ~6k, so I don't think it's too big a deal.
6660
6664
6661 * Found (and fixed) a very nasty bug with history. !lines weren't
6665 * Found (and fixed) a very nasty bug with history. !lines weren't
6662 getting cached, and the out of sync caches would crash
6666 getting cached, and the out of sync caches would crash
6663 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6667 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6664 division of labor a bit better. Bug fixed, cleaner structure.
6668 division of labor a bit better. Bug fixed, cleaner structure.
6665
6669
6666 2001-12-01 Fernando Perez <fperez@colorado.edu>
6670 2001-12-01 Fernando Perez <fperez@colorado.edu>
6667
6671
6668 * Released 0.1.19
6672 * Released 0.1.19
6669
6673
6670 * Added option -n to @hist to prevent line number printing. Much
6674 * Added option -n to @hist to prevent line number printing. Much
6671 easier to copy/paste code this way.
6675 easier to copy/paste code this way.
6672
6676
6673 * Created global _il to hold the input list. Allows easy
6677 * Created global _il to hold the input list. Allows easy
6674 re-execution of blocks of code by slicing it (inspired by Janko's
6678 re-execution of blocks of code by slicing it (inspired by Janko's
6675 comment on 'macros').
6679 comment on 'macros').
6676
6680
6677 * Small fixes and doc updates.
6681 * Small fixes and doc updates.
6678
6682
6679 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6683 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6680 much too fragile with automagic. Handles properly multi-line
6684 much too fragile with automagic. Handles properly multi-line
6681 statements and takes parameters.
6685 statements and takes parameters.
6682
6686
6683 2001-11-30 Fernando Perez <fperez@colorado.edu>
6687 2001-11-30 Fernando Perez <fperez@colorado.edu>
6684
6688
6685 * Version 0.1.18 released.
6689 * Version 0.1.18 released.
6686
6690
6687 * Fixed nasty namespace bug in initial module imports.
6691 * Fixed nasty namespace bug in initial module imports.
6688
6692
6689 * Added copyright/license notes to all code files (except
6693 * Added copyright/license notes to all code files (except
6690 DPyGetOpt). For the time being, LGPL. That could change.
6694 DPyGetOpt). For the time being, LGPL. That could change.
6691
6695
6692 * Rewrote a much nicer README, updated INSTALL, cleaned up
6696 * Rewrote a much nicer README, updated INSTALL, cleaned up
6693 ipythonrc-* samples.
6697 ipythonrc-* samples.
6694
6698
6695 * Overall code/documentation cleanup. Basically ready for
6699 * Overall code/documentation cleanup. Basically ready for
6696 release. Only remaining thing: licence decision (LGPL?).
6700 release. Only remaining thing: licence decision (LGPL?).
6697
6701
6698 * Converted load_config to a class, ConfigLoader. Now recursion
6702 * Converted load_config to a class, ConfigLoader. Now recursion
6699 control is better organized. Doesn't include the same file twice.
6703 control is better organized. Doesn't include the same file twice.
6700
6704
6701 2001-11-29 Fernando Perez <fperez@colorado.edu>
6705 2001-11-29 Fernando Perez <fperez@colorado.edu>
6702
6706
6703 * Got input history working. Changed output history variables from
6707 * Got input history working. Changed output history variables from
6704 _p to _o so that _i is for input and _o for output. Just cleaner
6708 _p to _o so that _i is for input and _o for output. Just cleaner
6705 convention.
6709 convention.
6706
6710
6707 * Implemented parametric aliases. This pretty much allows the
6711 * Implemented parametric aliases. This pretty much allows the
6708 alias system to offer full-blown shell convenience, I think.
6712 alias system to offer full-blown shell convenience, I think.
6709
6713
6710 * Version 0.1.17 released, 0.1.18 opened.
6714 * Version 0.1.17 released, 0.1.18 opened.
6711
6715
6712 * dot_ipython/ipythonrc (alias): added documentation.
6716 * dot_ipython/ipythonrc (alias): added documentation.
6713 (xcolor): Fixed small bug (xcolors -> xcolor)
6717 (xcolor): Fixed small bug (xcolors -> xcolor)
6714
6718
6715 * Changed the alias system. Now alias is a magic command to define
6719 * Changed the alias system. Now alias is a magic command to define
6716 aliases just like the shell. Rationale: the builtin magics should
6720 aliases just like the shell. Rationale: the builtin magics should
6717 be there for things deeply connected to IPython's
6721 be there for things deeply connected to IPython's
6718 architecture. And this is a much lighter system for what I think
6722 architecture. And this is a much lighter system for what I think
6719 is the really important feature: allowing users to define quickly
6723 is the really important feature: allowing users to define quickly
6720 magics that will do shell things for them, so they can customize
6724 magics that will do shell things for them, so they can customize
6721 IPython easily to match their work habits. If someone is really
6725 IPython easily to match their work habits. If someone is really
6722 desperate to have another name for a builtin alias, they can
6726 desperate to have another name for a builtin alias, they can
6723 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6727 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6724 works.
6728 works.
6725
6729
6726 2001-11-28 Fernando Perez <fperez@colorado.edu>
6730 2001-11-28 Fernando Perez <fperez@colorado.edu>
6727
6731
6728 * Changed @file so that it opens the source file at the proper
6732 * Changed @file so that it opens the source file at the proper
6729 line. Since it uses less, if your EDITOR environment is
6733 line. Since it uses less, if your EDITOR environment is
6730 configured, typing v will immediately open your editor of choice
6734 configured, typing v will immediately open your editor of choice
6731 right at the line where the object is defined. Not as quick as
6735 right at the line where the object is defined. Not as quick as
6732 having a direct @edit command, but for all intents and purposes it
6736 having a direct @edit command, but for all intents and purposes it
6733 works. And I don't have to worry about writing @edit to deal with
6737 works. And I don't have to worry about writing @edit to deal with
6734 all the editors, less does that.
6738 all the editors, less does that.
6735
6739
6736 * Version 0.1.16 released, 0.1.17 opened.
6740 * Version 0.1.16 released, 0.1.17 opened.
6737
6741
6738 * Fixed some nasty bugs in the page/page_dumb combo that could
6742 * Fixed some nasty bugs in the page/page_dumb combo that could
6739 crash IPython.
6743 crash IPython.
6740
6744
6741 2001-11-27 Fernando Perez <fperez@colorado.edu>
6745 2001-11-27 Fernando Perez <fperez@colorado.edu>
6742
6746
6743 * Version 0.1.15 released, 0.1.16 opened.
6747 * Version 0.1.15 released, 0.1.16 opened.
6744
6748
6745 * Finally got ? and ?? to work for undefined things: now it's
6749 * Finally got ? and ?? to work for undefined things: now it's
6746 possible to type {}.get? and get information about the get method
6750 possible to type {}.get? and get information about the get method
6747 of dicts, or os.path? even if only os is defined (so technically
6751 of dicts, or os.path? even if only os is defined (so technically
6748 os.path isn't). Works at any level. For example, after import os,
6752 os.path isn't). Works at any level. For example, after import os,
6749 os?, os.path?, os.path.abspath? all work. This is great, took some
6753 os?, os.path?, os.path.abspath? all work. This is great, took some
6750 work in _ofind.
6754 work in _ofind.
6751
6755
6752 * Fixed more bugs with logging. The sanest way to do it was to add
6756 * Fixed more bugs with logging. The sanest way to do it was to add
6753 to @log a 'mode' parameter. Killed two in one shot (this mode
6757 to @log a 'mode' parameter. Killed two in one shot (this mode
6754 option was a request of Janko's). I think it's finally clean
6758 option was a request of Janko's). I think it's finally clean
6755 (famous last words).
6759 (famous last words).
6756
6760
6757 * Added a page_dumb() pager which does a decent job of paging on
6761 * Added a page_dumb() pager which does a decent job of paging on
6758 screen, if better things (like less) aren't available. One less
6762 screen, if better things (like less) aren't available. One less
6759 unix dependency (someday maybe somebody will port this to
6763 unix dependency (someday maybe somebody will port this to
6760 windows).
6764 windows).
6761
6765
6762 * Fixed problem in magic_log: would lock of logging out if log
6766 * Fixed problem in magic_log: would lock of logging out if log
6763 creation failed (because it would still think it had succeeded).
6767 creation failed (because it would still think it had succeeded).
6764
6768
6765 * Improved the page() function using curses to auto-detect screen
6769 * Improved the page() function using curses to auto-detect screen
6766 size. Now it can make a much better decision on whether to print
6770 size. Now it can make a much better decision on whether to print
6767 or page a string. Option screen_length was modified: a value 0
6771 or page a string. Option screen_length was modified: a value 0
6768 means auto-detect, and that's the default now.
6772 means auto-detect, and that's the default now.
6769
6773
6770 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6774 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6771 go out. I'll test it for a few days, then talk to Janko about
6775 go out. I'll test it for a few days, then talk to Janko about
6772 licences and announce it.
6776 licences and announce it.
6773
6777
6774 * Fixed the length of the auto-generated ---> prompt which appears
6778 * Fixed the length of the auto-generated ---> prompt which appears
6775 for auto-parens and auto-quotes. Getting this right isn't trivial,
6779 for auto-parens and auto-quotes. Getting this right isn't trivial,
6776 with all the color escapes, different prompt types and optional
6780 with all the color escapes, different prompt types and optional
6777 separators. But it seems to be working in all the combinations.
6781 separators. But it seems to be working in all the combinations.
6778
6782
6779 2001-11-26 Fernando Perez <fperez@colorado.edu>
6783 2001-11-26 Fernando Perez <fperez@colorado.edu>
6780
6784
6781 * Wrote a regexp filter to get option types from the option names
6785 * Wrote a regexp filter to get option types from the option names
6782 string. This eliminates the need to manually keep two duplicate
6786 string. This eliminates the need to manually keep two duplicate
6783 lists.
6787 lists.
6784
6788
6785 * Removed the unneeded check_option_names. Now options are handled
6789 * Removed the unneeded check_option_names. Now options are handled
6786 in a much saner manner and it's easy to visually check that things
6790 in a much saner manner and it's easy to visually check that things
6787 are ok.
6791 are ok.
6788
6792
6789 * Updated version numbers on all files I modified to carry a
6793 * Updated version numbers on all files I modified to carry a
6790 notice so Janko and Nathan have clear version markers.
6794 notice so Janko and Nathan have clear version markers.
6791
6795
6792 * Updated docstring for ultraTB with my changes. I should send
6796 * Updated docstring for ultraTB with my changes. I should send
6793 this to Nathan.
6797 this to Nathan.
6794
6798
6795 * Lots of small fixes. Ran everything through pychecker again.
6799 * Lots of small fixes. Ran everything through pychecker again.
6796
6800
6797 * Made loading of deep_reload an cmd line option. If it's not too
6801 * Made loading of deep_reload an cmd line option. If it's not too
6798 kosher, now people can just disable it. With -nodeep_reload it's
6802 kosher, now people can just disable it. With -nodeep_reload it's
6799 still available as dreload(), it just won't overwrite reload().
6803 still available as dreload(), it just won't overwrite reload().
6800
6804
6801 * Moved many options to the no| form (-opt and -noopt
6805 * Moved many options to the no| form (-opt and -noopt
6802 accepted). Cleaner.
6806 accepted). Cleaner.
6803
6807
6804 * Changed magic_log so that if called with no parameters, it uses
6808 * Changed magic_log so that if called with no parameters, it uses
6805 'rotate' mode. That way auto-generated logs aren't automatically
6809 'rotate' mode. That way auto-generated logs aren't automatically
6806 over-written. For normal logs, now a backup is made if it exists
6810 over-written. For normal logs, now a backup is made if it exists
6807 (only 1 level of backups). A new 'backup' mode was added to the
6811 (only 1 level of backups). A new 'backup' mode was added to the
6808 Logger class to support this. This was a request by Janko.
6812 Logger class to support this. This was a request by Janko.
6809
6813
6810 * Added @logoff/@logon to stop/restart an active log.
6814 * Added @logoff/@logon to stop/restart an active log.
6811
6815
6812 * Fixed a lot of bugs in log saving/replay. It was pretty
6816 * Fixed a lot of bugs in log saving/replay. It was pretty
6813 broken. Now special lines (!@,/) appear properly in the command
6817 broken. Now special lines (!@,/) appear properly in the command
6814 history after a log replay.
6818 history after a log replay.
6815
6819
6816 * Tried and failed to implement full session saving via pickle. My
6820 * Tried and failed to implement full session saving via pickle. My
6817 idea was to pickle __main__.__dict__, but modules can't be
6821 idea was to pickle __main__.__dict__, but modules can't be
6818 pickled. This would be a better alternative to replaying logs, but
6822 pickled. This would be a better alternative to replaying logs, but
6819 seems quite tricky to get to work. Changed -session to be called
6823 seems quite tricky to get to work. Changed -session to be called
6820 -logplay, which more accurately reflects what it does. And if we
6824 -logplay, which more accurately reflects what it does. And if we
6821 ever get real session saving working, -session is now available.
6825 ever get real session saving working, -session is now available.
6822
6826
6823 * Implemented color schemes for prompts also. As for tracebacks,
6827 * Implemented color schemes for prompts also. As for tracebacks,
6824 currently only NoColor and Linux are supported. But now the
6828 currently only NoColor and Linux are supported. But now the
6825 infrastructure is in place, based on a generic ColorScheme
6829 infrastructure is in place, based on a generic ColorScheme
6826 class. So writing and activating new schemes both for the prompts
6830 class. So writing and activating new schemes both for the prompts
6827 and the tracebacks should be straightforward.
6831 and the tracebacks should be straightforward.
6828
6832
6829 * Version 0.1.13 released, 0.1.14 opened.
6833 * Version 0.1.13 released, 0.1.14 opened.
6830
6834
6831 * Changed handling of options for output cache. Now counter is
6835 * Changed handling of options for output cache. Now counter is
6832 hardwired starting at 1 and one specifies the maximum number of
6836 hardwired starting at 1 and one specifies the maximum number of
6833 entries *in the outcache* (not the max prompt counter). This is
6837 entries *in the outcache* (not the max prompt counter). This is
6834 much better, since many statements won't increase the cache
6838 much better, since many statements won't increase the cache
6835 count. It also eliminated some confusing options, now there's only
6839 count. It also eliminated some confusing options, now there's only
6836 one: cache_size.
6840 one: cache_size.
6837
6841
6838 * Added 'alias' magic function and magic_alias option in the
6842 * Added 'alias' magic function and magic_alias option in the
6839 ipythonrc file. Now the user can easily define whatever names he
6843 ipythonrc file. Now the user can easily define whatever names he
6840 wants for the magic functions without having to play weird
6844 wants for the magic functions without having to play weird
6841 namespace games. This gives IPython a real shell-like feel.
6845 namespace games. This gives IPython a real shell-like feel.
6842
6846
6843 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6847 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6844 @ or not).
6848 @ or not).
6845
6849
6846 This was one of the last remaining 'visible' bugs (that I know
6850 This was one of the last remaining 'visible' bugs (that I know
6847 of). I think if I can clean up the session loading so it works
6851 of). I think if I can clean up the session loading so it works
6848 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6852 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6849 about licensing).
6853 about licensing).
6850
6854
6851 2001-11-25 Fernando Perez <fperez@colorado.edu>
6855 2001-11-25 Fernando Perez <fperez@colorado.edu>
6852
6856
6853 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6857 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6854 there's a cleaner distinction between what ? and ?? show.
6858 there's a cleaner distinction between what ? and ?? show.
6855
6859
6856 * Added screen_length option. Now the user can define his own
6860 * Added screen_length option. Now the user can define his own
6857 screen size for page() operations.
6861 screen size for page() operations.
6858
6862
6859 * Implemented magic shell-like functions with automatic code
6863 * Implemented magic shell-like functions with automatic code
6860 generation. Now adding another function is just a matter of adding
6864 generation. Now adding another function is just a matter of adding
6861 an entry to a dict, and the function is dynamically generated at
6865 an entry to a dict, and the function is dynamically generated at
6862 run-time. Python has some really cool features!
6866 run-time. Python has some really cool features!
6863
6867
6864 * Renamed many options to cleanup conventions a little. Now all
6868 * Renamed many options to cleanup conventions a little. Now all
6865 are lowercase, and only underscores where needed. Also in the code
6869 are lowercase, and only underscores where needed. Also in the code
6866 option name tables are clearer.
6870 option name tables are clearer.
6867
6871
6868 * Changed prompts a little. Now input is 'In [n]:' instead of
6872 * Changed prompts a little. Now input is 'In [n]:' instead of
6869 'In[n]:='. This allows it the numbers to be aligned with the
6873 'In[n]:='. This allows it the numbers to be aligned with the
6870 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6874 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6871 Python (it was a Mathematica thing). The '...' continuation prompt
6875 Python (it was a Mathematica thing). The '...' continuation prompt
6872 was also changed a little to align better.
6876 was also changed a little to align better.
6873
6877
6874 * Fixed bug when flushing output cache. Not all _p<n> variables
6878 * Fixed bug when flushing output cache. Not all _p<n> variables
6875 exist, so their deletion needs to be wrapped in a try:
6879 exist, so their deletion needs to be wrapped in a try:
6876
6880
6877 * Figured out how to properly use inspect.formatargspec() (it
6881 * Figured out how to properly use inspect.formatargspec() (it
6878 requires the args preceded by *). So I removed all the code from
6882 requires the args preceded by *). So I removed all the code from
6879 _get_pdef in Magic, which was just replicating that.
6883 _get_pdef in Magic, which was just replicating that.
6880
6884
6881 * Added test to prefilter to allow redefining magic function names
6885 * Added test to prefilter to allow redefining magic function names
6882 as variables. This is ok, since the @ form is always available,
6886 as variables. This is ok, since the @ form is always available,
6883 but whe should allow the user to define a variable called 'ls' if
6887 but whe should allow the user to define a variable called 'ls' if
6884 he needs it.
6888 he needs it.
6885
6889
6886 * Moved the ToDo information from README into a separate ToDo.
6890 * Moved the ToDo information from README into a separate ToDo.
6887
6891
6888 * General code cleanup and small bugfixes. I think it's close to a
6892 * General code cleanup and small bugfixes. I think it's close to a
6889 state where it can be released, obviously with a big 'beta'
6893 state where it can be released, obviously with a big 'beta'
6890 warning on it.
6894 warning on it.
6891
6895
6892 * Got the magic function split to work. Now all magics are defined
6896 * Got the magic function split to work. Now all magics are defined
6893 in a separate class. It just organizes things a bit, and now
6897 in a separate class. It just organizes things a bit, and now
6894 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6898 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6895 was too long).
6899 was too long).
6896
6900
6897 * Changed @clear to @reset to avoid potential confusions with
6901 * Changed @clear to @reset to avoid potential confusions with
6898 the shell command clear. Also renamed @cl to @clear, which does
6902 the shell command clear. Also renamed @cl to @clear, which does
6899 exactly what people expect it to from their shell experience.
6903 exactly what people expect it to from their shell experience.
6900
6904
6901 Added a check to the @reset command (since it's so
6905 Added a check to the @reset command (since it's so
6902 destructive, it's probably a good idea to ask for confirmation).
6906 destructive, it's probably a good idea to ask for confirmation).
6903 But now reset only works for full namespace resetting. Since the
6907 But now reset only works for full namespace resetting. Since the
6904 del keyword is already there for deleting a few specific
6908 del keyword is already there for deleting a few specific
6905 variables, I don't see the point of having a redundant magic
6909 variables, I don't see the point of having a redundant magic
6906 function for the same task.
6910 function for the same task.
6907
6911
6908 2001-11-24 Fernando Perez <fperez@colorado.edu>
6912 2001-11-24 Fernando Perez <fperez@colorado.edu>
6909
6913
6910 * Updated the builtin docs (esp. the ? ones).
6914 * Updated the builtin docs (esp. the ? ones).
6911
6915
6912 * Ran all the code through pychecker. Not terribly impressed with
6916 * Ran all the code through pychecker. Not terribly impressed with
6913 it: lots of spurious warnings and didn't really find anything of
6917 it: lots of spurious warnings and didn't really find anything of
6914 substance (just a few modules being imported and not used).
6918 substance (just a few modules being imported and not used).
6915
6919
6916 * Implemented the new ultraTB functionality into IPython. New
6920 * Implemented the new ultraTB functionality into IPython. New
6917 option: xcolors. This chooses color scheme. xmode now only selects
6921 option: xcolors. This chooses color scheme. xmode now only selects
6918 between Plain and Verbose. Better orthogonality.
6922 between Plain and Verbose. Better orthogonality.
6919
6923
6920 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6924 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6921 mode and color scheme for the exception handlers. Now it's
6925 mode and color scheme for the exception handlers. Now it's
6922 possible to have the verbose traceback with no coloring.
6926 possible to have the verbose traceback with no coloring.
6923
6927
6924 2001-11-23 Fernando Perez <fperez@colorado.edu>
6928 2001-11-23 Fernando Perez <fperez@colorado.edu>
6925
6929
6926 * Version 0.1.12 released, 0.1.13 opened.
6930 * Version 0.1.12 released, 0.1.13 opened.
6927
6931
6928 * Removed option to set auto-quote and auto-paren escapes by
6932 * Removed option to set auto-quote and auto-paren escapes by
6929 user. The chances of breaking valid syntax are just too high. If
6933 user. The chances of breaking valid syntax are just too high. If
6930 someone *really* wants, they can always dig into the code.
6934 someone *really* wants, they can always dig into the code.
6931
6935
6932 * Made prompt separators configurable.
6936 * Made prompt separators configurable.
6933
6937
6934 2001-11-22 Fernando Perez <fperez@colorado.edu>
6938 2001-11-22 Fernando Perez <fperez@colorado.edu>
6935
6939
6936 * Small bugfixes in many places.
6940 * Small bugfixes in many places.
6937
6941
6938 * Removed the MyCompleter class from ipplib. It seemed redundant
6942 * Removed the MyCompleter class from ipplib. It seemed redundant
6939 with the C-p,C-n history search functionality. Less code to
6943 with the C-p,C-n history search functionality. Less code to
6940 maintain.
6944 maintain.
6941
6945
6942 * Moved all the original ipython.py code into ipythonlib.py. Right
6946 * Moved all the original ipython.py code into ipythonlib.py. Right
6943 now it's just one big dump into a function called make_IPython, so
6947 now it's just one big dump into a function called make_IPython, so
6944 no real modularity has been gained. But at least it makes the
6948 no real modularity has been gained. But at least it makes the
6945 wrapper script tiny, and since ipythonlib is a module, it gets
6949 wrapper script tiny, and since ipythonlib is a module, it gets
6946 compiled and startup is much faster.
6950 compiled and startup is much faster.
6947
6951
6948 This is a reasobably 'deep' change, so we should test it for a
6952 This is a reasobably 'deep' change, so we should test it for a
6949 while without messing too much more with the code.
6953 while without messing too much more with the code.
6950
6954
6951 2001-11-21 Fernando Perez <fperez@colorado.edu>
6955 2001-11-21 Fernando Perez <fperez@colorado.edu>
6952
6956
6953 * Version 0.1.11 released, 0.1.12 opened for further work.
6957 * Version 0.1.11 released, 0.1.12 opened for further work.
6954
6958
6955 * Removed dependency on Itpl. It was only needed in one place. It
6959 * Removed dependency on Itpl. It was only needed in one place. It
6956 would be nice if this became part of python, though. It makes life
6960 would be nice if this became part of python, though. It makes life
6957 *a lot* easier in some cases.
6961 *a lot* easier in some cases.
6958
6962
6959 * Simplified the prefilter code a bit. Now all handlers are
6963 * Simplified the prefilter code a bit. Now all handlers are
6960 expected to explicitly return a value (at least a blank string).
6964 expected to explicitly return a value (at least a blank string).
6961
6965
6962 * Heavy edits in ipplib. Removed the help system altogether. Now
6966 * Heavy edits in ipplib. Removed the help system altogether. Now
6963 obj?/?? is used for inspecting objects, a magic @doc prints
6967 obj?/?? is used for inspecting objects, a magic @doc prints
6964 docstrings, and full-blown Python help is accessed via the 'help'
6968 docstrings, and full-blown Python help is accessed via the 'help'
6965 keyword. This cleans up a lot of code (less to maintain) and does
6969 keyword. This cleans up a lot of code (less to maintain) and does
6966 the job. Since 'help' is now a standard Python component, might as
6970 the job. Since 'help' is now a standard Python component, might as
6967 well use it and remove duplicate functionality.
6971 well use it and remove duplicate functionality.
6968
6972
6969 Also removed the option to use ipplib as a standalone program. By
6973 Also removed the option to use ipplib as a standalone program. By
6970 now it's too dependent on other parts of IPython to function alone.
6974 now it's too dependent on other parts of IPython to function alone.
6971
6975
6972 * Fixed bug in genutils.pager. It would crash if the pager was
6976 * Fixed bug in genutils.pager. It would crash if the pager was
6973 exited immediately after opening (broken pipe).
6977 exited immediately after opening (broken pipe).
6974
6978
6975 * Trimmed down the VerboseTB reporting a little. The header is
6979 * Trimmed down the VerboseTB reporting a little. The header is
6976 much shorter now and the repeated exception arguments at the end
6980 much shorter now and the repeated exception arguments at the end
6977 have been removed. For interactive use the old header seemed a bit
6981 have been removed. For interactive use the old header seemed a bit
6978 excessive.
6982 excessive.
6979
6983
6980 * Fixed small bug in output of @whos for variables with multi-word
6984 * Fixed small bug in output of @whos for variables with multi-word
6981 types (only first word was displayed).
6985 types (only first word was displayed).
6982
6986
6983 2001-11-17 Fernando Perez <fperez@colorado.edu>
6987 2001-11-17 Fernando Perez <fperez@colorado.edu>
6984
6988
6985 * Version 0.1.10 released, 0.1.11 opened for further work.
6989 * Version 0.1.10 released, 0.1.11 opened for further work.
6986
6990
6987 * Modified dirs and friends. dirs now *returns* the stack (not
6991 * Modified dirs and friends. dirs now *returns* the stack (not
6988 prints), so one can manipulate it as a variable. Convenient to
6992 prints), so one can manipulate it as a variable. Convenient to
6989 travel along many directories.
6993 travel along many directories.
6990
6994
6991 * Fixed bug in magic_pdef: would only work with functions with
6995 * Fixed bug in magic_pdef: would only work with functions with
6992 arguments with default values.
6996 arguments with default values.
6993
6997
6994 2001-11-14 Fernando Perez <fperez@colorado.edu>
6998 2001-11-14 Fernando Perez <fperez@colorado.edu>
6995
6999
6996 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7000 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6997 example with IPython. Various other minor fixes and cleanups.
7001 example with IPython. Various other minor fixes and cleanups.
6998
7002
6999 * Version 0.1.9 released, 0.1.10 opened for further work.
7003 * Version 0.1.9 released, 0.1.10 opened for further work.
7000
7004
7001 * Added sys.path to the list of directories searched in the
7005 * Added sys.path to the list of directories searched in the
7002 execfile= option. It used to be the current directory and the
7006 execfile= option. It used to be the current directory and the
7003 user's IPYTHONDIR only.
7007 user's IPYTHONDIR only.
7004
7008
7005 2001-11-13 Fernando Perez <fperez@colorado.edu>
7009 2001-11-13 Fernando Perez <fperez@colorado.edu>
7006
7010
7007 * Reinstated the raw_input/prefilter separation that Janko had
7011 * Reinstated the raw_input/prefilter separation that Janko had
7008 initially. This gives a more convenient setup for extending the
7012 initially. This gives a more convenient setup for extending the
7009 pre-processor from the outside: raw_input always gets a string,
7013 pre-processor from the outside: raw_input always gets a string,
7010 and prefilter has to process it. We can then redefine prefilter
7014 and prefilter has to process it. We can then redefine prefilter
7011 from the outside and implement extensions for special
7015 from the outside and implement extensions for special
7012 purposes.
7016 purposes.
7013
7017
7014 Today I got one for inputting PhysicalQuantity objects
7018 Today I got one for inputting PhysicalQuantity objects
7015 (from Scientific) without needing any function calls at
7019 (from Scientific) without needing any function calls at
7016 all. Extremely convenient, and it's all done as a user-level
7020 all. Extremely convenient, and it's all done as a user-level
7017 extension (no IPython code was touched). Now instead of:
7021 extension (no IPython code was touched). Now instead of:
7018 a = PhysicalQuantity(4.2,'m/s**2')
7022 a = PhysicalQuantity(4.2,'m/s**2')
7019 one can simply say
7023 one can simply say
7020 a = 4.2 m/s**2
7024 a = 4.2 m/s**2
7021 or even
7025 or even
7022 a = 4.2 m/s^2
7026 a = 4.2 m/s^2
7023
7027
7024 I use this, but it's also a proof of concept: IPython really is
7028 I use this, but it's also a proof of concept: IPython really is
7025 fully user-extensible, even at the level of the parsing of the
7029 fully user-extensible, even at the level of the parsing of the
7026 command line. It's not trivial, but it's perfectly doable.
7030 command line. It's not trivial, but it's perfectly doable.
7027
7031
7028 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7032 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7029 the problem of modules being loaded in the inverse order in which
7033 the problem of modules being loaded in the inverse order in which
7030 they were defined in
7034 they were defined in
7031
7035
7032 * Version 0.1.8 released, 0.1.9 opened for further work.
7036 * Version 0.1.8 released, 0.1.9 opened for further work.
7033
7037
7034 * Added magics pdef, source and file. They respectively show the
7038 * Added magics pdef, source and file. They respectively show the
7035 definition line ('prototype' in C), source code and full python
7039 definition line ('prototype' in C), source code and full python
7036 file for any callable object. The object inspector oinfo uses
7040 file for any callable object. The object inspector oinfo uses
7037 these to show the same information.
7041 these to show the same information.
7038
7042
7039 * Version 0.1.7 released, 0.1.8 opened for further work.
7043 * Version 0.1.7 released, 0.1.8 opened for further work.
7040
7044
7041 * Separated all the magic functions into a class called Magic. The
7045 * Separated all the magic functions into a class called Magic. The
7042 InteractiveShell class was becoming too big for Xemacs to handle
7046 InteractiveShell class was becoming too big for Xemacs to handle
7043 (de-indenting a line would lock it up for 10 seconds while it
7047 (de-indenting a line would lock it up for 10 seconds while it
7044 backtracked on the whole class!)
7048 backtracked on the whole class!)
7045
7049
7046 FIXME: didn't work. It can be done, but right now namespaces are
7050 FIXME: didn't work. It can be done, but right now namespaces are
7047 all messed up. Do it later (reverted it for now, so at least
7051 all messed up. Do it later (reverted it for now, so at least
7048 everything works as before).
7052 everything works as before).
7049
7053
7050 * Got the object introspection system (magic_oinfo) working! I
7054 * Got the object introspection system (magic_oinfo) working! I
7051 think this is pretty much ready for release to Janko, so he can
7055 think this is pretty much ready for release to Janko, so he can
7052 test it for a while and then announce it. Pretty much 100% of what
7056 test it for a while and then announce it. Pretty much 100% of what
7053 I wanted for the 'phase 1' release is ready. Happy, tired.
7057 I wanted for the 'phase 1' release is ready. Happy, tired.
7054
7058
7055 2001-11-12 Fernando Perez <fperez@colorado.edu>
7059 2001-11-12 Fernando Perez <fperez@colorado.edu>
7056
7060
7057 * Version 0.1.6 released, 0.1.7 opened for further work.
7061 * Version 0.1.6 released, 0.1.7 opened for further work.
7058
7062
7059 * Fixed bug in printing: it used to test for truth before
7063 * Fixed bug in printing: it used to test for truth before
7060 printing, so 0 wouldn't print. Now checks for None.
7064 printing, so 0 wouldn't print. Now checks for None.
7061
7065
7062 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7066 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7063 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7067 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7064 reaches by hand into the outputcache. Think of a better way to do
7068 reaches by hand into the outputcache. Think of a better way to do
7065 this later.
7069 this later.
7066
7070
7067 * Various small fixes thanks to Nathan's comments.
7071 * Various small fixes thanks to Nathan's comments.
7068
7072
7069 * Changed magic_pprint to magic_Pprint. This way it doesn't
7073 * Changed magic_pprint to magic_Pprint. This way it doesn't
7070 collide with pprint() and the name is consistent with the command
7074 collide with pprint() and the name is consistent with the command
7071 line option.
7075 line option.
7072
7076
7073 * Changed prompt counter behavior to be fully like
7077 * Changed prompt counter behavior to be fully like
7074 Mathematica's. That is, even input that doesn't return a result
7078 Mathematica's. That is, even input that doesn't return a result
7075 raises the prompt counter. The old behavior was kind of confusing
7079 raises the prompt counter. The old behavior was kind of confusing
7076 (getting the same prompt number several times if the operation
7080 (getting the same prompt number several times if the operation
7077 didn't return a result).
7081 didn't return a result).
7078
7082
7079 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7083 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7080
7084
7081 * Fixed -Classic mode (wasn't working anymore).
7085 * Fixed -Classic mode (wasn't working anymore).
7082
7086
7083 * Added colored prompts using Nathan's new code. Colors are
7087 * Added colored prompts using Nathan's new code. Colors are
7084 currently hardwired, they can be user-configurable. For
7088 currently hardwired, they can be user-configurable. For
7085 developers, they can be chosen in file ipythonlib.py, at the
7089 developers, they can be chosen in file ipythonlib.py, at the
7086 beginning of the CachedOutput class def.
7090 beginning of the CachedOutput class def.
7087
7091
7088 2001-11-11 Fernando Perez <fperez@colorado.edu>
7092 2001-11-11 Fernando Perez <fperez@colorado.edu>
7089
7093
7090 * Version 0.1.5 released, 0.1.6 opened for further work.
7094 * Version 0.1.5 released, 0.1.6 opened for further work.
7091
7095
7092 * Changed magic_env to *return* the environment as a dict (not to
7096 * Changed magic_env to *return* the environment as a dict (not to
7093 print it). This way it prints, but it can also be processed.
7097 print it). This way it prints, but it can also be processed.
7094
7098
7095 * Added Verbose exception reporting to interactive
7099 * Added Verbose exception reporting to interactive
7096 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7100 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7097 traceback. Had to make some changes to the ultraTB file. This is
7101 traceback. Had to make some changes to the ultraTB file. This is
7098 probably the last 'big' thing in my mental todo list. This ties
7102 probably the last 'big' thing in my mental todo list. This ties
7099 in with the next entry:
7103 in with the next entry:
7100
7104
7101 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7105 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7102 has to specify is Plain, Color or Verbose for all exception
7106 has to specify is Plain, Color or Verbose for all exception
7103 handling.
7107 handling.
7104
7108
7105 * Removed ShellServices option. All this can really be done via
7109 * Removed ShellServices option. All this can really be done via
7106 the magic system. It's easier to extend, cleaner and has automatic
7110 the magic system. It's easier to extend, cleaner and has automatic
7107 namespace protection and documentation.
7111 namespace protection and documentation.
7108
7112
7109 2001-11-09 Fernando Perez <fperez@colorado.edu>
7113 2001-11-09 Fernando Perez <fperez@colorado.edu>
7110
7114
7111 * Fixed bug in output cache flushing (missing parameter to
7115 * Fixed bug in output cache flushing (missing parameter to
7112 __init__). Other small bugs fixed (found using pychecker).
7116 __init__). Other small bugs fixed (found using pychecker).
7113
7117
7114 * Version 0.1.4 opened for bugfixing.
7118 * Version 0.1.4 opened for bugfixing.
7115
7119
7116 2001-11-07 Fernando Perez <fperez@colorado.edu>
7120 2001-11-07 Fernando Perez <fperez@colorado.edu>
7117
7121
7118 * Version 0.1.3 released, mainly because of the raw_input bug.
7122 * Version 0.1.3 released, mainly because of the raw_input bug.
7119
7123
7120 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7124 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7121 and when testing for whether things were callable, a call could
7125 and when testing for whether things were callable, a call could
7122 actually be made to certain functions. They would get called again
7126 actually be made to certain functions. They would get called again
7123 once 'really' executed, with a resulting double call. A disaster
7127 once 'really' executed, with a resulting double call. A disaster
7124 in many cases (list.reverse() would never work!).
7128 in many cases (list.reverse() would never work!).
7125
7129
7126 * Removed prefilter() function, moved its code to raw_input (which
7130 * Removed prefilter() function, moved its code to raw_input (which
7127 after all was just a near-empty caller for prefilter). This saves
7131 after all was just a near-empty caller for prefilter). This saves
7128 a function call on every prompt, and simplifies the class a tiny bit.
7132 a function call on every prompt, and simplifies the class a tiny bit.
7129
7133
7130 * Fix _ip to __ip name in magic example file.
7134 * Fix _ip to __ip name in magic example file.
7131
7135
7132 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7136 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7133 work with non-gnu versions of tar.
7137 work with non-gnu versions of tar.
7134
7138
7135 2001-11-06 Fernando Perez <fperez@colorado.edu>
7139 2001-11-06 Fernando Perez <fperez@colorado.edu>
7136
7140
7137 * Version 0.1.2. Just to keep track of the recent changes.
7141 * Version 0.1.2. Just to keep track of the recent changes.
7138
7142
7139 * Fixed nasty bug in output prompt routine. It used to check 'if
7143 * Fixed nasty bug in output prompt routine. It used to check 'if
7140 arg != None...'. Problem is, this fails if arg implements a
7144 arg != None...'. Problem is, this fails if arg implements a
7141 special comparison (__cmp__) which disallows comparing to
7145 special comparison (__cmp__) which disallows comparing to
7142 None. Found it when trying to use the PhysicalQuantity module from
7146 None. Found it when trying to use the PhysicalQuantity module from
7143 ScientificPython.
7147 ScientificPython.
7144
7148
7145 2001-11-05 Fernando Perez <fperez@colorado.edu>
7149 2001-11-05 Fernando Perez <fperez@colorado.edu>
7146
7150
7147 * Also added dirs. Now the pushd/popd/dirs family functions
7151 * Also added dirs. Now the pushd/popd/dirs family functions
7148 basically like the shell, with the added convenience of going home
7152 basically like the shell, with the added convenience of going home
7149 when called with no args.
7153 when called with no args.
7150
7154
7151 * pushd/popd slightly modified to mimic shell behavior more
7155 * pushd/popd slightly modified to mimic shell behavior more
7152 closely.
7156 closely.
7153
7157
7154 * Added env,pushd,popd from ShellServices as magic functions. I
7158 * Added env,pushd,popd from ShellServices as magic functions. I
7155 think the cleanest will be to port all desired functions from
7159 think the cleanest will be to port all desired functions from
7156 ShellServices as magics and remove ShellServices altogether. This
7160 ShellServices as magics and remove ShellServices altogether. This
7157 will provide a single, clean way of adding functionality
7161 will provide a single, clean way of adding functionality
7158 (shell-type or otherwise) to IP.
7162 (shell-type or otherwise) to IP.
7159
7163
7160 2001-11-04 Fernando Perez <fperez@colorado.edu>
7164 2001-11-04 Fernando Perez <fperez@colorado.edu>
7161
7165
7162 * Added .ipython/ directory to sys.path. This way users can keep
7166 * Added .ipython/ directory to sys.path. This way users can keep
7163 customizations there and access them via import.
7167 customizations there and access them via import.
7164
7168
7165 2001-11-03 Fernando Perez <fperez@colorado.edu>
7169 2001-11-03 Fernando Perez <fperez@colorado.edu>
7166
7170
7167 * Opened version 0.1.1 for new changes.
7171 * Opened version 0.1.1 for new changes.
7168
7172
7169 * Changed version number to 0.1.0: first 'public' release, sent to
7173 * Changed version number to 0.1.0: first 'public' release, sent to
7170 Nathan and Janko.
7174 Nathan and Janko.
7171
7175
7172 * Lots of small fixes and tweaks.
7176 * Lots of small fixes and tweaks.
7173
7177
7174 * Minor changes to whos format. Now strings are shown, snipped if
7178 * Minor changes to whos format. Now strings are shown, snipped if
7175 too long.
7179 too long.
7176
7180
7177 * Changed ShellServices to work on __main__ so they show up in @who
7181 * Changed ShellServices to work on __main__ so they show up in @who
7178
7182
7179 * Help also works with ? at the end of a line:
7183 * Help also works with ? at the end of a line:
7180 ?sin and sin?
7184 ?sin and sin?
7181 both produce the same effect. This is nice, as often I use the
7185 both produce the same effect. This is nice, as often I use the
7182 tab-complete to find the name of a method, but I used to then have
7186 tab-complete to find the name of a method, but I used to then have
7183 to go to the beginning of the line to put a ? if I wanted more
7187 to go to the beginning of the line to put a ? if I wanted more
7184 info. Now I can just add the ? and hit return. Convenient.
7188 info. Now I can just add the ? and hit return. Convenient.
7185
7189
7186 2001-11-02 Fernando Perez <fperez@colorado.edu>
7190 2001-11-02 Fernando Perez <fperez@colorado.edu>
7187
7191
7188 * Python version check (>=2.1) added.
7192 * Python version check (>=2.1) added.
7189
7193
7190 * Added LazyPython documentation. At this point the docs are quite
7194 * Added LazyPython documentation. At this point the docs are quite
7191 a mess. A cleanup is in order.
7195 a mess. A cleanup is in order.
7192
7196
7193 * Auto-installer created. For some bizarre reason, the zipfiles
7197 * Auto-installer created. For some bizarre reason, the zipfiles
7194 module isn't working on my system. So I made a tar version
7198 module isn't working on my system. So I made a tar version
7195 (hopefully the command line options in various systems won't kill
7199 (hopefully the command line options in various systems won't kill
7196 me).
7200 me).
7197
7201
7198 * Fixes to Struct in genutils. Now all dictionary-like methods are
7202 * Fixes to Struct in genutils. Now all dictionary-like methods are
7199 protected (reasonably).
7203 protected (reasonably).
7200
7204
7201 * Added pager function to genutils and changed ? to print usage
7205 * Added pager function to genutils and changed ? to print usage
7202 note through it (it was too long).
7206 note through it (it was too long).
7203
7207
7204 * Added the LazyPython functionality. Works great! I changed the
7208 * Added the LazyPython functionality. Works great! I changed the
7205 auto-quote escape to ';', it's on home row and next to '. But
7209 auto-quote escape to ';', it's on home row and next to '. But
7206 both auto-quote and auto-paren (still /) escapes are command-line
7210 both auto-quote and auto-paren (still /) escapes are command-line
7207 parameters.
7211 parameters.
7208
7212
7209
7213
7210 2001-11-01 Fernando Perez <fperez@colorado.edu>
7214 2001-11-01 Fernando Perez <fperez@colorado.edu>
7211
7215
7212 * Version changed to 0.0.7. Fairly large change: configuration now
7216 * Version changed to 0.0.7. Fairly large change: configuration now
7213 is all stored in a directory, by default .ipython. There, all
7217 is all stored in a directory, by default .ipython. There, all
7214 config files have normal looking names (not .names)
7218 config files have normal looking names (not .names)
7215
7219
7216 * Version 0.0.6 Released first to Lucas and Archie as a test
7220 * Version 0.0.6 Released first to Lucas and Archie as a test
7217 run. Since it's the first 'semi-public' release, change version to
7221 run. Since it's the first 'semi-public' release, change version to
7218 > 0.0.6 for any changes now.
7222 > 0.0.6 for any changes now.
7219
7223
7220 * Stuff I had put in the ipplib.py changelog:
7224 * Stuff I had put in the ipplib.py changelog:
7221
7225
7222 Changes to InteractiveShell:
7226 Changes to InteractiveShell:
7223
7227
7224 - Made the usage message a parameter.
7228 - Made the usage message a parameter.
7225
7229
7226 - Require the name of the shell variable to be given. It's a bit
7230 - Require the name of the shell variable to be given. It's a bit
7227 of a hack, but allows the name 'shell' not to be hardwired in the
7231 of a hack, but allows the name 'shell' not to be hardwired in the
7228 magic (@) handler, which is problematic b/c it requires
7232 magic (@) handler, which is problematic b/c it requires
7229 polluting the global namespace with 'shell'. This in turn is
7233 polluting the global namespace with 'shell'. This in turn is
7230 fragile: if a user redefines a variable called shell, things
7234 fragile: if a user redefines a variable called shell, things
7231 break.
7235 break.
7232
7236
7233 - magic @: all functions available through @ need to be defined
7237 - magic @: all functions available through @ need to be defined
7234 as magic_<name>, even though they can be called simply as
7238 as magic_<name>, even though they can be called simply as
7235 @<name>. This allows the special command @magic to gather
7239 @<name>. This allows the special command @magic to gather
7236 information automatically about all existing magic functions,
7240 information automatically about all existing magic functions,
7237 even if they are run-time user extensions, by parsing the shell
7241 even if they are run-time user extensions, by parsing the shell
7238 instance __dict__ looking for special magic_ names.
7242 instance __dict__ looking for special magic_ names.
7239
7243
7240 - mainloop: added *two* local namespace parameters. This allows
7244 - mainloop: added *two* local namespace parameters. This allows
7241 the class to differentiate between parameters which were there
7245 the class to differentiate between parameters which were there
7242 before and after command line initialization was processed. This
7246 before and after command line initialization was processed. This
7243 way, later @who can show things loaded at startup by the
7247 way, later @who can show things loaded at startup by the
7244 user. This trick was necessary to make session saving/reloading
7248 user. This trick was necessary to make session saving/reloading
7245 really work: ideally after saving/exiting/reloading a session,
7249 really work: ideally after saving/exiting/reloading a session,
7246 *everything* should look the same, including the output of @who. I
7250 *everything* should look the same, including the output of @who. I
7247 was only able to make this work with this double namespace
7251 was only able to make this work with this double namespace
7248 trick.
7252 trick.
7249
7253
7250 - added a header to the logfile which allows (almost) full
7254 - added a header to the logfile which allows (almost) full
7251 session restoring.
7255 session restoring.
7252
7256
7253 - prepend lines beginning with @ or !, with a and log
7257 - prepend lines beginning with @ or !, with a and log
7254 them. Why? !lines: may be useful to know what you did @lines:
7258 them. Why? !lines: may be useful to know what you did @lines:
7255 they may affect session state. So when restoring a session, at
7259 they may affect session state. So when restoring a session, at
7256 least inform the user of their presence. I couldn't quite get
7260 least inform the user of their presence. I couldn't quite get
7257 them to properly re-execute, but at least the user is warned.
7261 them to properly re-execute, but at least the user is warned.
7258
7262
7259 * Started ChangeLog.
7263 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now