##// END OF EJS Templates
Improve the monkeypatch to inspect.findsource() to find source lines inside of zipped packages.
rkern -
Show More
@@ -1,1012 +1,1019 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 2480 2007-07-06 19:33:43Z fperez $"""
63 $Id: ultraTB.py 2883 2007-12-02 02:54:17Z 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
139 # module won't work. Instead, the frame object itself has the globals
140 # dictionary.
141 globals_dict = None
142 if inspect.isframe(object):
143 # XXX: can this ever be false?
144 globals_dict = object.f_globals
145 else:
138 module = getmodule(object, file)
146 module = getmodule(object, file)
139 if module:
147 if module:
140 lines = linecache.getlines(file, module.__dict__)
148 globals_dict = module.__dict__
141 else:
149 lines = linecache.getlines(file, globals_dict)
142 lines = linecache.getlines(file)
143 if not lines:
150 if not lines:
144 raise IOError('could not get source code')
151 raise IOError('could not get source code')
145
152
146 if ismodule(object):
153 if ismodule(object):
147 return lines, 0
154 return lines, 0
148
155
149 if isclass(object):
156 if isclass(object):
150 name = object.__name__
157 name = object.__name__
151 pat = re.compile(r'^(\s*)class\s*' + name + r'\b')
158 pat = re.compile(r'^(\s*)class\s*' + name + r'\b')
152 # make some effort to find the best matching class definition:
159 # make some effort to find the best matching class definition:
153 # use the one with the least indentation, which is the one
160 # use the one with the least indentation, which is the one
154 # that's most probably not inside a function definition.
161 # that's most probably not inside a function definition.
155 candidates = []
162 candidates = []
156 for i in range(len(lines)):
163 for i in range(len(lines)):
157 match = pat.match(lines[i])
164 match = pat.match(lines[i])
158 if match:
165 if match:
159 # if it's at toplevel, it's already the best one
166 # if it's at toplevel, it's already the best one
160 if lines[i][0] == 'c':
167 if lines[i][0] == 'c':
161 return lines, i
168 return lines, i
162 # else add whitespace to candidate list
169 # else add whitespace to candidate list
163 candidates.append((match.group(1), i))
170 candidates.append((match.group(1), i))
164 if candidates:
171 if candidates:
165 # this will sort by whitespace, and by line number,
172 # this will sort by whitespace, and by line number,
166 # less whitespace first
173 # less whitespace first
167 candidates.sort()
174 candidates.sort()
168 return lines, candidates[0][1]
175 return lines, candidates[0][1]
169 else:
176 else:
170 raise IOError('could not find class definition')
177 raise IOError('could not find class definition')
171
178
172 if ismethod(object):
179 if ismethod(object):
173 object = object.im_func
180 object = object.im_func
174 if isfunction(object):
181 if isfunction(object):
175 object = object.func_code
182 object = object.func_code
176 if istraceback(object):
183 if istraceback(object):
177 object = object.tb_frame
184 object = object.tb_frame
178 if isframe(object):
185 if isframe(object):
179 object = object.f_code
186 object = object.f_code
180 if iscode(object):
187 if iscode(object):
181 if not hasattr(object, 'co_firstlineno'):
188 if not hasattr(object, 'co_firstlineno'):
182 raise IOError('could not find function definition')
189 raise IOError('could not find function definition')
183 pat = re.compile(r'^(\s*def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)')
190 pat = re.compile(r'^(\s*def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)')
184 pmatch = pat.match
191 pmatch = pat.match
185 # fperez - fix: sometimes, co_firstlineno can give a number larger than
192 # fperez - fix: sometimes, co_firstlineno can give a number larger than
186 # the length of lines, which causes an error. Safeguard against that.
193 # the length of lines, which causes an error. Safeguard against that.
187 lnum = min(object.co_firstlineno,len(lines))-1
194 lnum = min(object.co_firstlineno,len(lines))-1
188 while lnum > 0:
195 while lnum > 0:
189 if pmatch(lines[lnum]): break
196 if pmatch(lines[lnum]): break
190 lnum -= 1
197 lnum -= 1
191
198
192 return lines, lnum
199 return lines, lnum
193 raise IOError('could not find code object')
200 raise IOError('could not find code object')
194
201
195 # 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
196 if sys.version_info[:2] >= (2,5):
203 if sys.version_info[:2] >= (2,5):
197 inspect.findsource = findsource
204 inspect.findsource = findsource
198
205
199 def _fixed_getinnerframes(etb, context=1,tb_offset=0):
206 def _fixed_getinnerframes(etb, context=1,tb_offset=0):
200 import linecache
207 import linecache
201 LNUM_POS, LINES_POS, INDEX_POS = 2, 4, 5
208 LNUM_POS, LINES_POS, INDEX_POS = 2, 4, 5
202
209
203 records = inspect.getinnerframes(etb, context)
210 records = inspect.getinnerframes(etb, context)
204
211
205 # If the error is at the console, don't build any context, since it would
212 # If the error is at the console, don't build any context, since it would
206 # otherwise produce 5 blank lines printed out (there is no file at the
213 # otherwise produce 5 blank lines printed out (there is no file at the
207 # console)
214 # console)
208 rec_check = records[tb_offset:]
215 rec_check = records[tb_offset:]
209 try:
216 try:
210 rname = rec_check[0][1]
217 rname = rec_check[0][1]
211 if rname == '<ipython console>' or rname.endswith('<string>'):
218 if rname == '<ipython console>' or rname.endswith('<string>'):
212 return rec_check
219 return rec_check
213 except IndexError:
220 except IndexError:
214 pass
221 pass
215
222
216 aux = traceback.extract_tb(etb)
223 aux = traceback.extract_tb(etb)
217 assert len(records) == len(aux)
224 assert len(records) == len(aux)
218 for i, (file, lnum, _, _) in zip(range(len(records)), aux):
225 for i, (file, lnum, _, _) in zip(range(len(records)), aux):
219 maybeStart = lnum-1 - context//2
226 maybeStart = lnum-1 - context//2
220 start = max(maybeStart, 0)
227 start = max(maybeStart, 0)
221 end = start + context
228 end = start + context
222 lines = linecache.getlines(file)[start:end]
229 lines = linecache.getlines(file)[start:end]
223 # pad with empty lines if necessary
230 # pad with empty lines if necessary
224 if maybeStart < 0:
231 if maybeStart < 0:
225 lines = (['\n'] * -maybeStart) + lines
232 lines = (['\n'] * -maybeStart) + lines
226 if len(lines) < context:
233 if len(lines) < context:
227 lines += ['\n'] * (context - len(lines))
234 lines += ['\n'] * (context - len(lines))
228 buf = list(records[i])
235 buf = list(records[i])
229 buf[LNUM_POS] = lnum
236 buf[LNUM_POS] = lnum
230 buf[INDEX_POS] = lnum - 1 - start
237 buf[INDEX_POS] = lnum - 1 - start
231 buf[LINES_POS] = lines
238 buf[LINES_POS] = lines
232 records[i] = tuple(buf)
239 records[i] = tuple(buf)
233 return records[tb_offset:]
240 return records[tb_offset:]
234
241
235 # Helper function -- largely belongs to VerboseTB, but we need the same
242 # Helper function -- largely belongs to VerboseTB, but we need the same
236 # functionality to produce a pseudo verbose TB for SyntaxErrors, so that they
243 # functionality to produce a pseudo verbose TB for SyntaxErrors, so that they
237 # can be recognized properly by ipython.el's py-traceback-line-re
244 # can be recognized properly by ipython.el's py-traceback-line-re
238 # (SyntaxErrors have to be treated specially because they have no traceback)
245 # (SyntaxErrors have to be treated specially because they have no traceback)
239
246
240 _parser = PyColorize.Parser()
247 _parser = PyColorize.Parser()
241
248
242 def _formatTracebackLines(lnum, index, lines, Colors, lvals=None,scheme=None):
249 def _formatTracebackLines(lnum, index, lines, Colors, lvals=None,scheme=None):
243 numbers_width = INDENT_SIZE - 1
250 numbers_width = INDENT_SIZE - 1
244 res = []
251 res = []
245 i = lnum - index
252 i = lnum - index
246
253
247 # This lets us get fully syntax-highlighted tracebacks.
254 # This lets us get fully syntax-highlighted tracebacks.
248 if scheme is None:
255 if scheme is None:
249 try:
256 try:
250 scheme = __IPYTHON__.rc.colors
257 scheme = __IPYTHON__.rc.colors
251 except:
258 except:
252 scheme = DEFAULT_SCHEME
259 scheme = DEFAULT_SCHEME
253 _line_format = _parser.format2
260 _line_format = _parser.format2
254
261
255 for line in lines:
262 for line in lines:
256 new_line, err = _line_format(line,'str',scheme)
263 new_line, err = _line_format(line,'str',scheme)
257 if not err: line = new_line
264 if not err: line = new_line
258
265
259 if i == lnum:
266 if i == lnum:
260 # This is the line with the error
267 # This is the line with the error
261 pad = numbers_width - len(str(i))
268 pad = numbers_width - len(str(i))
262 if pad >= 3:
269 if pad >= 3:
263 marker = '-'*(pad-3) + '-> '
270 marker = '-'*(pad-3) + '-> '
264 elif pad == 2:
271 elif pad == 2:
265 marker = '> '
272 marker = '> '
266 elif pad == 1:
273 elif pad == 1:
267 marker = '>'
274 marker = '>'
268 else:
275 else:
269 marker = ''
276 marker = ''
270 num = marker + str(i)
277 num = marker + str(i)
271 line = '%s%s%s %s%s' %(Colors.linenoEm, num,
278 line = '%s%s%s %s%s' %(Colors.linenoEm, num,
272 Colors.line, line, Colors.Normal)
279 Colors.line, line, Colors.Normal)
273 else:
280 else:
274 num = '%*s' % (numbers_width,i)
281 num = '%*s' % (numbers_width,i)
275 line = '%s%s%s %s' %(Colors.lineno, num,
282 line = '%s%s%s %s' %(Colors.lineno, num,
276 Colors.Normal, line)
283 Colors.Normal, line)
277
284
278 res.append(line)
285 res.append(line)
279 if lvals and i == lnum:
286 if lvals and i == lnum:
280 res.append(lvals + '\n')
287 res.append(lvals + '\n')
281 i = i + 1
288 i = i + 1
282 return res
289 return res
283
290
284
291
285 #---------------------------------------------------------------------------
292 #---------------------------------------------------------------------------
286 # Module classes
293 # Module classes
287 class TBTools:
294 class TBTools:
288 """Basic tools used by all traceback printer classes."""
295 """Basic tools used by all traceback printer classes."""
289
296
290 def __init__(self,color_scheme = 'NoColor',call_pdb=False):
297 def __init__(self,color_scheme = 'NoColor',call_pdb=False):
291 # Whether to call the interactive pdb debugger after printing
298 # Whether to call the interactive pdb debugger after printing
292 # tracebacks or not
299 # tracebacks or not
293 self.call_pdb = call_pdb
300 self.call_pdb = call_pdb
294
301
295 # Create color table
302 # Create color table
296 self.color_scheme_table = ExceptionColors
303 self.color_scheme_table = ExceptionColors
297
304
298 self.set_colors(color_scheme)
305 self.set_colors(color_scheme)
299 self.old_scheme = color_scheme # save initial value for toggles
306 self.old_scheme = color_scheme # save initial value for toggles
300
307
301 if call_pdb:
308 if call_pdb:
302 self.pdb = Debugger.Pdb(self.color_scheme_table.active_scheme_name)
309 self.pdb = Debugger.Pdb(self.color_scheme_table.active_scheme_name)
303 else:
310 else:
304 self.pdb = None
311 self.pdb = None
305
312
306 def set_colors(self,*args,**kw):
313 def set_colors(self,*args,**kw):
307 """Shorthand access to the color table scheme selector method."""
314 """Shorthand access to the color table scheme selector method."""
308
315
309 # Set own color table
316 # Set own color table
310 self.color_scheme_table.set_active_scheme(*args,**kw)
317 self.color_scheme_table.set_active_scheme(*args,**kw)
311 # for convenience, set Colors to the active scheme
318 # for convenience, set Colors to the active scheme
312 self.Colors = self.color_scheme_table.active_colors
319 self.Colors = self.color_scheme_table.active_colors
313 # Also set colors of debugger
320 # Also set colors of debugger
314 if hasattr(self,'pdb') and self.pdb is not None:
321 if hasattr(self,'pdb') and self.pdb is not None:
315 self.pdb.set_colors(*args,**kw)
322 self.pdb.set_colors(*args,**kw)
316
323
317 def color_toggle(self):
324 def color_toggle(self):
318 """Toggle between the currently active color scheme and NoColor."""
325 """Toggle between the currently active color scheme and NoColor."""
319
326
320 if self.color_scheme_table.active_scheme_name == 'NoColor':
327 if self.color_scheme_table.active_scheme_name == 'NoColor':
321 self.color_scheme_table.set_active_scheme(self.old_scheme)
328 self.color_scheme_table.set_active_scheme(self.old_scheme)
322 self.Colors = self.color_scheme_table.active_colors
329 self.Colors = self.color_scheme_table.active_colors
323 else:
330 else:
324 self.old_scheme = self.color_scheme_table.active_scheme_name
331 self.old_scheme = self.color_scheme_table.active_scheme_name
325 self.color_scheme_table.set_active_scheme('NoColor')
332 self.color_scheme_table.set_active_scheme('NoColor')
326 self.Colors = self.color_scheme_table.active_colors
333 self.Colors = self.color_scheme_table.active_colors
327
334
328 #---------------------------------------------------------------------------
335 #---------------------------------------------------------------------------
329 class ListTB(TBTools):
336 class ListTB(TBTools):
330 """Print traceback information from a traceback list, with optional color.
337 """Print traceback information from a traceback list, with optional color.
331
338
332 Calling: requires 3 arguments:
339 Calling: requires 3 arguments:
333 (etype, evalue, elist)
340 (etype, evalue, elist)
334 as would be obtained by:
341 as would be obtained by:
335 etype, evalue, tb = sys.exc_info()
342 etype, evalue, tb = sys.exc_info()
336 if tb:
343 if tb:
337 elist = traceback.extract_tb(tb)
344 elist = traceback.extract_tb(tb)
338 else:
345 else:
339 elist = None
346 elist = None
340
347
341 It can thus be used by programs which need to process the traceback before
348 It can thus be used by programs which need to process the traceback before
342 printing (such as console replacements based on the code module from the
349 printing (such as console replacements based on the code module from the
343 standard library).
350 standard library).
344
351
345 Because they are meant to be called without a full traceback (only a
352 Because they are meant to be called without a full traceback (only a
346 list), instances of this class can't call the interactive pdb debugger."""
353 list), instances of this class can't call the interactive pdb debugger."""
347
354
348 def __init__(self,color_scheme = 'NoColor'):
355 def __init__(self,color_scheme = 'NoColor'):
349 TBTools.__init__(self,color_scheme = color_scheme,call_pdb=0)
356 TBTools.__init__(self,color_scheme = color_scheme,call_pdb=0)
350
357
351 def __call__(self, etype, value, elist):
358 def __call__(self, etype, value, elist):
352 Term.cout.flush()
359 Term.cout.flush()
353 Term.cerr.flush()
360 Term.cerr.flush()
354 print >> Term.cerr, self.text(etype,value,elist)
361 print >> Term.cerr, self.text(etype,value,elist)
355
362
356 def text(self,etype, value, elist,context=5):
363 def text(self,etype, value, elist,context=5):
357 """Return a color formatted string with the traceback info."""
364 """Return a color formatted string with the traceback info."""
358
365
359 Colors = self.Colors
366 Colors = self.Colors
360 out_string = ['%s%s%s\n' % (Colors.topline,'-'*60,Colors.Normal)]
367 out_string = ['%s%s%s\n' % (Colors.topline,'-'*60,Colors.Normal)]
361 if elist:
368 if elist:
362 out_string.append('Traceback %s(most recent call last)%s:' % \
369 out_string.append('Traceback %s(most recent call last)%s:' % \
363 (Colors.normalEm, Colors.Normal) + '\n')
370 (Colors.normalEm, Colors.Normal) + '\n')
364 out_string.extend(self._format_list(elist))
371 out_string.extend(self._format_list(elist))
365 lines = self._format_exception_only(etype, value)
372 lines = self._format_exception_only(etype, value)
366 for line in lines[:-1]:
373 for line in lines[:-1]:
367 out_string.append(" "+line)
374 out_string.append(" "+line)
368 out_string.append(lines[-1])
375 out_string.append(lines[-1])
369 return ''.join(out_string)
376 return ''.join(out_string)
370
377
371 def _format_list(self, extracted_list):
378 def _format_list(self, extracted_list):
372 """Format a list of traceback entry tuples for printing.
379 """Format a list of traceback entry tuples for printing.
373
380
374 Given a list of tuples as returned by extract_tb() or
381 Given a list of tuples as returned by extract_tb() or
375 extract_stack(), return a list of strings ready for printing.
382 extract_stack(), return a list of strings ready for printing.
376 Each string in the resulting list corresponds to the item with the
383 Each string in the resulting list corresponds to the item with the
377 same index in the argument list. Each string ends in a newline;
384 same index in the argument list. Each string ends in a newline;
378 the strings may contain internal newlines as well, for those items
385 the strings may contain internal newlines as well, for those items
379 whose source text line is not None.
386 whose source text line is not None.
380
387
381 Lifted almost verbatim from traceback.py
388 Lifted almost verbatim from traceback.py
382 """
389 """
383
390
384 Colors = self.Colors
391 Colors = self.Colors
385 list = []
392 list = []
386 for filename, lineno, name, line in extracted_list[:-1]:
393 for filename, lineno, name, line in extracted_list[:-1]:
387 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
394 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
388 (Colors.filename, filename, Colors.Normal,
395 (Colors.filename, filename, Colors.Normal,
389 Colors.lineno, lineno, Colors.Normal,
396 Colors.lineno, lineno, Colors.Normal,
390 Colors.name, name, Colors.Normal)
397 Colors.name, name, Colors.Normal)
391 if line:
398 if line:
392 item = item + ' %s\n' % line.strip()
399 item = item + ' %s\n' % line.strip()
393 list.append(item)
400 list.append(item)
394 # Emphasize the last entry
401 # Emphasize the last entry
395 filename, lineno, name, line = extracted_list[-1]
402 filename, lineno, name, line = extracted_list[-1]
396 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
403 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
397 (Colors.normalEm,
404 (Colors.normalEm,
398 Colors.filenameEm, filename, Colors.normalEm,
405 Colors.filenameEm, filename, Colors.normalEm,
399 Colors.linenoEm, lineno, Colors.normalEm,
406 Colors.linenoEm, lineno, Colors.normalEm,
400 Colors.nameEm, name, Colors.normalEm,
407 Colors.nameEm, name, Colors.normalEm,
401 Colors.Normal)
408 Colors.Normal)
402 if line:
409 if line:
403 item = item + '%s %s%s\n' % (Colors.line, line.strip(),
410 item = item + '%s %s%s\n' % (Colors.line, line.strip(),
404 Colors.Normal)
411 Colors.Normal)
405 list.append(item)
412 list.append(item)
406 return list
413 return list
407
414
408 def _format_exception_only(self, etype, value):
415 def _format_exception_only(self, etype, value):
409 """Format the exception part of a traceback.
416 """Format the exception part of a traceback.
410
417
411 The arguments are the exception type and value such as given by
418 The arguments are the exception type and value such as given by
412 sys.exc_info()[:2]. The return value is a list of strings, each ending
419 sys.exc_info()[:2]. The return value is a list of strings, each ending
413 in a newline. Normally, the list contains a single string; however,
420 in a newline. Normally, the list contains a single string; however,
414 for SyntaxError exceptions, it contains several lines that (when
421 for SyntaxError exceptions, it contains several lines that (when
415 printed) display detailed information about where the syntax error
422 printed) display detailed information about where the syntax error
416 occurred. The message indicating which exception occurred is the
423 occurred. The message indicating which exception occurred is the
417 always last string in the list.
424 always last string in the list.
418
425
419 Also lifted nearly verbatim from traceback.py
426 Also lifted nearly verbatim from traceback.py
420 """
427 """
421
428
422 Colors = self.Colors
429 Colors = self.Colors
423 list = []
430 list = []
424 try:
431 try:
425 stype = Colors.excName + etype.__name__ + Colors.Normal
432 stype = Colors.excName + etype.__name__ + Colors.Normal
426 except AttributeError:
433 except AttributeError:
427 stype = etype # String exceptions don't get special coloring
434 stype = etype # String exceptions don't get special coloring
428 if value is None:
435 if value is None:
429 list.append( str(stype) + '\n')
436 list.append( str(stype) + '\n')
430 else:
437 else:
431 if etype is SyntaxError:
438 if etype is SyntaxError:
432 try:
439 try:
433 msg, (filename, lineno, offset, line) = value
440 msg, (filename, lineno, offset, line) = value
434 except:
441 except:
435 pass
442 pass
436 else:
443 else:
437 #print 'filename is',filename # dbg
444 #print 'filename is',filename # dbg
438 if not filename: filename = "<string>"
445 if not filename: filename = "<string>"
439 list.append('%s File %s"%s"%s, line %s%d%s\n' % \
446 list.append('%s File %s"%s"%s, line %s%d%s\n' % \
440 (Colors.normalEm,
447 (Colors.normalEm,
441 Colors.filenameEm, filename, Colors.normalEm,
448 Colors.filenameEm, filename, Colors.normalEm,
442 Colors.linenoEm, lineno, Colors.Normal ))
449 Colors.linenoEm, lineno, Colors.Normal ))
443 if line is not None:
450 if line is not None:
444 i = 0
451 i = 0
445 while i < len(line) and line[i].isspace():
452 while i < len(line) and line[i].isspace():
446 i = i+1
453 i = i+1
447 list.append('%s %s%s\n' % (Colors.line,
454 list.append('%s %s%s\n' % (Colors.line,
448 line.strip(),
455 line.strip(),
449 Colors.Normal))
456 Colors.Normal))
450 if offset is not None:
457 if offset is not None:
451 s = ' '
458 s = ' '
452 for c in line[i:offset-1]:
459 for c in line[i:offset-1]:
453 if c.isspace():
460 if c.isspace():
454 s = s + c
461 s = s + c
455 else:
462 else:
456 s = s + ' '
463 s = s + ' '
457 list.append('%s%s^%s\n' % (Colors.caret, s,
464 list.append('%s%s^%s\n' % (Colors.caret, s,
458 Colors.Normal) )
465 Colors.Normal) )
459 value = msg
466 value = msg
460 s = self._some_str(value)
467 s = self._some_str(value)
461 if s:
468 if s:
462 list.append('%s%s:%s %s\n' % (str(stype), Colors.excName,
469 list.append('%s%s:%s %s\n' % (str(stype), Colors.excName,
463 Colors.Normal, s))
470 Colors.Normal, s))
464 else:
471 else:
465 list.append('%s\n' % str(stype))
472 list.append('%s\n' % str(stype))
466 return list
473 return list
467
474
468 def _some_str(self, value):
475 def _some_str(self, value):
469 # Lifted from traceback.py
476 # Lifted from traceback.py
470 try:
477 try:
471 return str(value)
478 return str(value)
472 except:
479 except:
473 return '<unprintable %s object>' % type(value).__name__
480 return '<unprintable %s object>' % type(value).__name__
474
481
475 #----------------------------------------------------------------------------
482 #----------------------------------------------------------------------------
476 class VerboseTB(TBTools):
483 class VerboseTB(TBTools):
477 """A port of Ka-Ping Yee's cgitb.py module that outputs color text instead
484 """A port of Ka-Ping Yee's cgitb.py module that outputs color text instead
478 of HTML. Requires inspect and pydoc. Crazy, man.
485 of HTML. Requires inspect and pydoc. Crazy, man.
479
486
480 Modified version which optionally strips the topmost entries from the
487 Modified version which optionally strips the topmost entries from the
481 traceback, to be used with alternate interpreters (because their own code
488 traceback, to be used with alternate interpreters (because their own code
482 would appear in the traceback)."""
489 would appear in the traceback)."""
483
490
484 def __init__(self,color_scheme = 'Linux',tb_offset=0,long_header=0,
491 def __init__(self,color_scheme = 'Linux',tb_offset=0,long_header=0,
485 call_pdb = 0, include_vars=1):
492 call_pdb = 0, include_vars=1):
486 """Specify traceback offset, headers and color scheme.
493 """Specify traceback offset, headers and color scheme.
487
494
488 Define how many frames to drop from the tracebacks. Calling it with
495 Define how many frames to drop from the tracebacks. Calling it with
489 tb_offset=1 allows use of this handler in interpreters which will have
496 tb_offset=1 allows use of this handler in interpreters which will have
490 their own code at the top of the traceback (VerboseTB will first
497 their own code at the top of the traceback (VerboseTB will first
491 remove that frame before printing the traceback info)."""
498 remove that frame before printing the traceback info)."""
492 TBTools.__init__(self,color_scheme=color_scheme,call_pdb=call_pdb)
499 TBTools.__init__(self,color_scheme=color_scheme,call_pdb=call_pdb)
493 self.tb_offset = tb_offset
500 self.tb_offset = tb_offset
494 self.long_header = long_header
501 self.long_header = long_header
495 self.include_vars = include_vars
502 self.include_vars = include_vars
496
503
497 def text(self, etype, evalue, etb, context=5):
504 def text(self, etype, evalue, etb, context=5):
498 """Return a nice text document describing the traceback."""
505 """Return a nice text document describing the traceback."""
499
506
500 # some locals
507 # some locals
501 try:
508 try:
502 etype = etype.__name__
509 etype = etype.__name__
503 except AttributeError:
510 except AttributeError:
504 pass
511 pass
505 Colors = self.Colors # just a shorthand + quicker name lookup
512 Colors = self.Colors # just a shorthand + quicker name lookup
506 ColorsNormal = Colors.Normal # used a lot
513 ColorsNormal = Colors.Normal # used a lot
507 col_scheme = self.color_scheme_table.active_scheme_name
514 col_scheme = self.color_scheme_table.active_scheme_name
508 indent = ' '*INDENT_SIZE
515 indent = ' '*INDENT_SIZE
509 em_normal = '%s\n%s%s' % (Colors.valEm, indent,ColorsNormal)
516 em_normal = '%s\n%s%s' % (Colors.valEm, indent,ColorsNormal)
510 undefined = '%sundefined%s' % (Colors.em, ColorsNormal)
517 undefined = '%sundefined%s' % (Colors.em, ColorsNormal)
511 exc = '%s%s%s' % (Colors.excName,etype,ColorsNormal)
518 exc = '%s%s%s' % (Colors.excName,etype,ColorsNormal)
512
519
513 # some internal-use functions
520 # some internal-use functions
514 def text_repr(value):
521 def text_repr(value):
515 """Hopefully pretty robust repr equivalent."""
522 """Hopefully pretty robust repr equivalent."""
516 # this is pretty horrible but should always return *something*
523 # this is pretty horrible but should always return *something*
517 try:
524 try:
518 return pydoc.text.repr(value)
525 return pydoc.text.repr(value)
519 except KeyboardInterrupt:
526 except KeyboardInterrupt:
520 raise
527 raise
521 except:
528 except:
522 try:
529 try:
523 return repr(value)
530 return repr(value)
524 except KeyboardInterrupt:
531 except KeyboardInterrupt:
525 raise
532 raise
526 except:
533 except:
527 try:
534 try:
528 # all still in an except block so we catch
535 # all still in an except block so we catch
529 # getattr raising
536 # getattr raising
530 name = getattr(value, '__name__', None)
537 name = getattr(value, '__name__', None)
531 if name:
538 if name:
532 # ick, recursion
539 # ick, recursion
533 return text_repr(name)
540 return text_repr(name)
534 klass = getattr(value, '__class__', None)
541 klass = getattr(value, '__class__', None)
535 if klass:
542 if klass:
536 return '%s instance' % text_repr(klass)
543 return '%s instance' % text_repr(klass)
537 except KeyboardInterrupt:
544 except KeyboardInterrupt:
538 raise
545 raise
539 except:
546 except:
540 return 'UNRECOVERABLE REPR FAILURE'
547 return 'UNRECOVERABLE REPR FAILURE'
541 def eqrepr(value, repr=text_repr): return '=%s' % repr(value)
548 def eqrepr(value, repr=text_repr): return '=%s' % repr(value)
542 def nullrepr(value, repr=text_repr): return ''
549 def nullrepr(value, repr=text_repr): return ''
543
550
544 # meat of the code begins
551 # meat of the code begins
545 try:
552 try:
546 etype = etype.__name__
553 etype = etype.__name__
547 except AttributeError:
554 except AttributeError:
548 pass
555 pass
549
556
550 if self.long_header:
557 if self.long_header:
551 # Header with the exception type, python version, and date
558 # Header with the exception type, python version, and date
552 pyver = 'Python ' + string.split(sys.version)[0] + ': ' + sys.executable
559 pyver = 'Python ' + string.split(sys.version)[0] + ': ' + sys.executable
553 date = time.ctime(time.time())
560 date = time.ctime(time.time())
554
561
555 head = '%s%s%s\n%s%s%s\n%s' % (Colors.topline, '-'*75, ColorsNormal,
562 head = '%s%s%s\n%s%s%s\n%s' % (Colors.topline, '-'*75, ColorsNormal,
556 exc, ' '*(75-len(str(etype))-len(pyver)),
563 exc, ' '*(75-len(str(etype))-len(pyver)),
557 pyver, string.rjust(date, 75) )
564 pyver, string.rjust(date, 75) )
558 head += "\nA problem occured executing Python code. Here is the sequence of function"\
565 head += "\nA problem occured executing Python code. Here is the sequence of function"\
559 "\ncalls leading up to the error, with the most recent (innermost) call last."
566 "\ncalls leading up to the error, with the most recent (innermost) call last."
560 else:
567 else:
561 # Simplified header
568 # Simplified header
562 head = '%s%s%s\n%s%s' % (Colors.topline, '-'*75, ColorsNormal,exc,
569 head = '%s%s%s\n%s%s' % (Colors.topline, '-'*75, ColorsNormal,exc,
563 string.rjust('Traceback (most recent call last)',
570 string.rjust('Traceback (most recent call last)',
564 75 - len(str(etype)) ) )
571 75 - len(str(etype)) ) )
565 frames = []
572 frames = []
566 # Flush cache before calling inspect. This helps alleviate some of the
573 # Flush cache before calling inspect. This helps alleviate some of the
567 # problems with python 2.3's inspect.py.
574 # problems with python 2.3's inspect.py.
568 linecache.checkcache()
575 linecache.checkcache()
569 # Drop topmost frames if requested
576 # Drop topmost frames if requested
570 try:
577 try:
571 # Try the default getinnerframes and Alex's: Alex's fixes some
578 # Try the default getinnerframes and Alex's: Alex's fixes some
572 # problems, but it generates empty tracebacks for console errors
579 # problems, but it generates empty tracebacks for console errors
573 # (5 blanks lines) where none should be returned.
580 # (5 blanks lines) where none should be returned.
574 #records = inspect.getinnerframes(etb, context)[self.tb_offset:]
581 #records = inspect.getinnerframes(etb, context)[self.tb_offset:]
575 #print 'python records:', records # dbg
582 #print 'python records:', records # dbg
576 records = _fixed_getinnerframes(etb, context,self.tb_offset)
583 records = _fixed_getinnerframes(etb, context,self.tb_offset)
577 #print 'alex records:', records # dbg
584 #print 'alex records:', records # dbg
578 except:
585 except:
579
586
580 # FIXME: I've been getting many crash reports from python 2.3
587 # FIXME: I've been getting many crash reports from python 2.3
581 # users, traceable to inspect.py. If I can find a small test-case
588 # users, traceable to inspect.py. If I can find a small test-case
582 # to reproduce this, I should either write a better workaround or
589 # to reproduce this, I should either write a better workaround or
583 # file a bug report against inspect (if that's the real problem).
590 # file a bug report against inspect (if that's the real problem).
584 # So far, I haven't been able to find an isolated example to
591 # So far, I haven't been able to find an isolated example to
585 # reproduce the problem.
592 # reproduce the problem.
586 inspect_error()
593 inspect_error()
587 traceback.print_exc(file=Term.cerr)
594 traceback.print_exc(file=Term.cerr)
588 info('\nUnfortunately, your original traceback can not be constructed.\n')
595 info('\nUnfortunately, your original traceback can not be constructed.\n')
589 return ''
596 return ''
590
597
591 # build some color string templates outside these nested loops
598 # build some color string templates outside these nested loops
592 tpl_link = '%s%%s%s' % (Colors.filenameEm,ColorsNormal)
599 tpl_link = '%s%%s%s' % (Colors.filenameEm,ColorsNormal)
593 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
600 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
594 ColorsNormal)
601 ColorsNormal)
595 tpl_call_fail = 'in %s%%s%s(***failed resolving arguments***)%s' % \
602 tpl_call_fail = 'in %s%%s%s(***failed resolving arguments***)%s' % \
596 (Colors.vName, Colors.valEm, ColorsNormal)
603 (Colors.vName, Colors.valEm, ColorsNormal)
597 tpl_local_var = '%s%%s%s' % (Colors.vName, ColorsNormal)
604 tpl_local_var = '%s%%s%s' % (Colors.vName, ColorsNormal)
598 tpl_global_var = '%sglobal%s %s%%s%s' % (Colors.em, ColorsNormal,
605 tpl_global_var = '%sglobal%s %s%%s%s' % (Colors.em, ColorsNormal,
599 Colors.vName, ColorsNormal)
606 Colors.vName, ColorsNormal)
600 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
607 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
601 tpl_line = '%s%%s%s %%s' % (Colors.lineno, ColorsNormal)
608 tpl_line = '%s%%s%s %%s' % (Colors.lineno, ColorsNormal)
602 tpl_line_em = '%s%%s%s %%s%s' % (Colors.linenoEm,Colors.line,
609 tpl_line_em = '%s%%s%s %%s%s' % (Colors.linenoEm,Colors.line,
603 ColorsNormal)
610 ColorsNormal)
604
611
605 # now, loop over all records printing context and info
612 # now, loop over all records printing context and info
606 abspath = os.path.abspath
613 abspath = os.path.abspath
607 for frame, file, lnum, func, lines, index in records:
614 for frame, file, lnum, func, lines, index in records:
608 #print '*** record:',file,lnum,func,lines,index # dbg
615 #print '*** record:',file,lnum,func,lines,index # dbg
609 try:
616 try:
610 file = file and abspath(file) or '?'
617 file = file and abspath(file) or '?'
611 except OSError:
618 except OSError:
612 # if file is '<console>' or something not in the filesystem,
619 # if file is '<console>' or something not in the filesystem,
613 # the abspath call will throw an OSError. Just ignore it and
620 # the abspath call will throw an OSError. Just ignore it and
614 # keep the original file string.
621 # keep the original file string.
615 pass
622 pass
616 link = tpl_link % file
623 link = tpl_link % file
617 try:
624 try:
618 args, varargs, varkw, locals = inspect.getargvalues(frame)
625 args, varargs, varkw, locals = inspect.getargvalues(frame)
619 except:
626 except:
620 # This can happen due to a bug in python2.3. We should be
627 # This can happen due to a bug in python2.3. We should be
621 # able to remove this try/except when 2.4 becomes a
628 # able to remove this try/except when 2.4 becomes a
622 # requirement. Bug details at http://python.org/sf/1005466
629 # requirement. Bug details at http://python.org/sf/1005466
623 inspect_error()
630 inspect_error()
624 traceback.print_exc(file=Term.cerr)
631 traceback.print_exc(file=Term.cerr)
625 info("\nIPython's exception reporting continues...\n")
632 info("\nIPython's exception reporting continues...\n")
626
633
627 if func == '?':
634 if func == '?':
628 call = ''
635 call = ''
629 else:
636 else:
630 # Decide whether to include variable details or not
637 # Decide whether to include variable details or not
631 var_repr = self.include_vars and eqrepr or nullrepr
638 var_repr = self.include_vars and eqrepr or nullrepr
632 try:
639 try:
633 call = tpl_call % (func,inspect.formatargvalues(args,
640 call = tpl_call % (func,inspect.formatargvalues(args,
634 varargs, varkw,
641 varargs, varkw,
635 locals,formatvalue=var_repr))
642 locals,formatvalue=var_repr))
636 except KeyError:
643 except KeyError:
637 # Very odd crash from inspect.formatargvalues(). The
644 # Very odd crash from inspect.formatargvalues(). The
638 # scenario under which it appeared was a call to
645 # scenario under which it appeared was a call to
639 # view(array,scale) in NumTut.view.view(), where scale had
646 # view(array,scale) in NumTut.view.view(), where scale had
640 # been defined as a scalar (it should be a tuple). Somehow
647 # been defined as a scalar (it should be a tuple). Somehow
641 # inspect messes up resolving the argument list of view()
648 # inspect messes up resolving the argument list of view()
642 # and barfs out. At some point I should dig into this one
649 # and barfs out. At some point I should dig into this one
643 # and file a bug report about it.
650 # and file a bug report about it.
644 inspect_error()
651 inspect_error()
645 traceback.print_exc(file=Term.cerr)
652 traceback.print_exc(file=Term.cerr)
646 info("\nIPython's exception reporting continues...\n")
653 info("\nIPython's exception reporting continues...\n")
647 call = tpl_call_fail % func
654 call = tpl_call_fail % func
648
655
649 # Initialize a list of names on the current line, which the
656 # Initialize a list of names on the current line, which the
650 # tokenizer below will populate.
657 # tokenizer below will populate.
651 names = []
658 names = []
652
659
653 def tokeneater(token_type, token, start, end, line):
660 def tokeneater(token_type, token, start, end, line):
654 """Stateful tokeneater which builds dotted names.
661 """Stateful tokeneater which builds dotted names.
655
662
656 The list of names it appends to (from the enclosing scope) can
663 The list of names it appends to (from the enclosing scope) can
657 contain repeated composite names. This is unavoidable, since
664 contain repeated composite names. This is unavoidable, since
658 there is no way to disambguate partial dotted structures until
665 there is no way to disambguate partial dotted structures until
659 the full list is known. The caller is responsible for pruning
666 the full list is known. The caller is responsible for pruning
660 the final list of duplicates before using it."""
667 the final list of duplicates before using it."""
661
668
662 # build composite names
669 # build composite names
663 if token == '.':
670 if token == '.':
664 try:
671 try:
665 names[-1] += '.'
672 names[-1] += '.'
666 # store state so the next token is added for x.y.z names
673 # store state so the next token is added for x.y.z names
667 tokeneater.name_cont = True
674 tokeneater.name_cont = True
668 return
675 return
669 except IndexError:
676 except IndexError:
670 pass
677 pass
671 if token_type == tokenize.NAME and token not in keyword.kwlist:
678 if token_type == tokenize.NAME and token not in keyword.kwlist:
672 if tokeneater.name_cont:
679 if tokeneater.name_cont:
673 # Dotted names
680 # Dotted names
674 names[-1] += token
681 names[-1] += token
675 tokeneater.name_cont = False
682 tokeneater.name_cont = False
676 else:
683 else:
677 # Regular new names. We append everything, the caller
684 # Regular new names. We append everything, the caller
678 # will be responsible for pruning the list later. It's
685 # will be responsible for pruning the list later. It's
679 # very tricky to try to prune as we go, b/c composite
686 # very tricky to try to prune as we go, b/c composite
680 # names can fool us. The pruning at the end is easy
687 # names can fool us. The pruning at the end is easy
681 # to do (or the caller can print a list with repeated
688 # to do (or the caller can print a list with repeated
682 # names if so desired.
689 # names if so desired.
683 names.append(token)
690 names.append(token)
684 elif token_type == tokenize.NEWLINE:
691 elif token_type == tokenize.NEWLINE:
685 raise IndexError
692 raise IndexError
686 # we need to store a bit of state in the tokenizer to build
693 # we need to store a bit of state in the tokenizer to build
687 # dotted names
694 # dotted names
688 tokeneater.name_cont = False
695 tokeneater.name_cont = False
689
696
690 def linereader(file=file, lnum=[lnum], getline=linecache.getline):
697 def linereader(file=file, lnum=[lnum], getline=linecache.getline):
691 line = getline(file, lnum[0])
698 line = getline(file, lnum[0])
692 lnum[0] += 1
699 lnum[0] += 1
693 return line
700 return line
694
701
695 # Build the list of names on this line of code where the exception
702 # Build the list of names on this line of code where the exception
696 # occurred.
703 # occurred.
697 try:
704 try:
698 # This builds the names list in-place by capturing it from the
705 # This builds the names list in-place by capturing it from the
699 # enclosing scope.
706 # enclosing scope.
700 tokenize.tokenize(linereader, tokeneater)
707 tokenize.tokenize(linereader, tokeneater)
701 except IndexError:
708 except IndexError:
702 # signals exit of tokenizer
709 # signals exit of tokenizer
703 pass
710 pass
704 except tokenize.TokenError,msg:
711 except tokenize.TokenError,msg:
705 _m = ("An unexpected error occurred while tokenizing input\n"
712 _m = ("An unexpected error occurred while tokenizing input\n"
706 "The following traceback may be corrupted or invalid\n"
713 "The following traceback may be corrupted or invalid\n"
707 "The error message is: %s\n" % msg)
714 "The error message is: %s\n" % msg)
708 error(_m)
715 error(_m)
709
716
710 # prune names list of duplicates, but keep the right order
717 # prune names list of duplicates, but keep the right order
711 unique_names = uniq_stable(names)
718 unique_names = uniq_stable(names)
712
719
713 # Start loop over vars
720 # Start loop over vars
714 lvals = []
721 lvals = []
715 if self.include_vars:
722 if self.include_vars:
716 for name_full in unique_names:
723 for name_full in unique_names:
717 name_base = name_full.split('.',1)[0]
724 name_base = name_full.split('.',1)[0]
718 if name_base in frame.f_code.co_varnames:
725 if name_base in frame.f_code.co_varnames:
719 if locals.has_key(name_base):
726 if locals.has_key(name_base):
720 try:
727 try:
721 value = repr(eval(name_full,locals))
728 value = repr(eval(name_full,locals))
722 except:
729 except:
723 value = undefined
730 value = undefined
724 else:
731 else:
725 value = undefined
732 value = undefined
726 name = tpl_local_var % name_full
733 name = tpl_local_var % name_full
727 else:
734 else:
728 if frame.f_globals.has_key(name_base):
735 if frame.f_globals.has_key(name_base):
729 try:
736 try:
730 value = repr(eval(name_full,frame.f_globals))
737 value = repr(eval(name_full,frame.f_globals))
731 except:
738 except:
732 value = undefined
739 value = undefined
733 else:
740 else:
734 value = undefined
741 value = undefined
735 name = tpl_global_var % name_full
742 name = tpl_global_var % name_full
736 lvals.append(tpl_name_val % (name,value))
743 lvals.append(tpl_name_val % (name,value))
737 if lvals:
744 if lvals:
738 lvals = '%s%s' % (indent,em_normal.join(lvals))
745 lvals = '%s%s' % (indent,em_normal.join(lvals))
739 else:
746 else:
740 lvals = ''
747 lvals = ''
741
748
742 level = '%s %s\n' % (link,call)
749 level = '%s %s\n' % (link,call)
743
750
744 if index is None:
751 if index is None:
745 frames.append(level)
752 frames.append(level)
746 else:
753 else:
747 frames.append('%s%s' % (level,''.join(
754 frames.append('%s%s' % (level,''.join(
748 _formatTracebackLines(lnum,index,lines,Colors,lvals,
755 _formatTracebackLines(lnum,index,lines,Colors,lvals,
749 col_scheme))))
756 col_scheme))))
750
757
751 # Get (safely) a string form of the exception info
758 # Get (safely) a string form of the exception info
752 try:
759 try:
753 etype_str,evalue_str = map(str,(etype,evalue))
760 etype_str,evalue_str = map(str,(etype,evalue))
754 except:
761 except:
755 # User exception is improperly defined.
762 # User exception is improperly defined.
756 etype,evalue = str,sys.exc_info()[:2]
763 etype,evalue = str,sys.exc_info()[:2]
757 etype_str,evalue_str = map(str,(etype,evalue))
764 etype_str,evalue_str = map(str,(etype,evalue))
758 # ... and format it
765 # ... and format it
759 exception = ['%s%s%s: %s' % (Colors.excName, etype_str,
766 exception = ['%s%s%s: %s' % (Colors.excName, etype_str,
760 ColorsNormal, evalue_str)]
767 ColorsNormal, evalue_str)]
761 if type(evalue) is types.InstanceType:
768 if type(evalue) is types.InstanceType:
762 try:
769 try:
763 names = [w for w in dir(evalue) if isinstance(w, basestring)]
770 names = [w for w in dir(evalue) if isinstance(w, basestring)]
764 except:
771 except:
765 # Every now and then, an object with funny inernals blows up
772 # Every now and then, an object with funny inernals blows up
766 # when dir() is called on it. We do the best we can to report
773 # when dir() is called on it. We do the best we can to report
767 # the problem and continue
774 # the problem and continue
768 _m = '%sException reporting error (object with broken dir())%s:'
775 _m = '%sException reporting error (object with broken dir())%s:'
769 exception.append(_m % (Colors.excName,ColorsNormal))
776 exception.append(_m % (Colors.excName,ColorsNormal))
770 etype_str,evalue_str = map(str,sys.exc_info()[:2])
777 etype_str,evalue_str = map(str,sys.exc_info()[:2])
771 exception.append('%s%s%s: %s' % (Colors.excName,etype_str,
778 exception.append('%s%s%s: %s' % (Colors.excName,etype_str,
772 ColorsNormal, evalue_str))
779 ColorsNormal, evalue_str))
773 names = []
780 names = []
774 for name in names:
781 for name in names:
775 value = text_repr(getattr(evalue, name))
782 value = text_repr(getattr(evalue, name))
776 exception.append('\n%s%s = %s' % (indent, name, value))
783 exception.append('\n%s%s = %s' % (indent, name, value))
777 # return all our info assembled as a single string
784 # return all our info assembled as a single string
778 return '%s\n\n%s\n%s' % (head,'\n'.join(frames),''.join(exception[0]) )
785 return '%s\n\n%s\n%s' % (head,'\n'.join(frames),''.join(exception[0]) )
779
786
780 def debugger(self,force=False):
787 def debugger(self,force=False):
781 """Call up the pdb debugger if desired, always clean up the tb
788 """Call up the pdb debugger if desired, always clean up the tb
782 reference.
789 reference.
783
790
784 Keywords:
791 Keywords:
785
792
786 - force(False): by default, this routine checks the instance call_pdb
793 - force(False): by default, this routine checks the instance call_pdb
787 flag and does not actually invoke the debugger if the flag is false.
794 flag and does not actually invoke the debugger if the flag is false.
788 The 'force' option forces the debugger to activate even if the flag
795 The 'force' option forces the debugger to activate even if the flag
789 is false.
796 is false.
790
797
791 If the call_pdb flag is set, the pdb interactive debugger is
798 If the call_pdb flag is set, the pdb interactive debugger is
792 invoked. In all cases, the self.tb reference to the current traceback
799 invoked. In all cases, the self.tb reference to the current traceback
793 is deleted to prevent lingering references which hamper memory
800 is deleted to prevent lingering references which hamper memory
794 management.
801 management.
795
802
796 Note that each call to pdb() does an 'import readline', so if your app
803 Note that each call to pdb() does an 'import readline', so if your app
797 requires a special setup for the readline completers, you'll have to
804 requires a special setup for the readline completers, you'll have to
798 fix that by hand after invoking the exception handler."""
805 fix that by hand after invoking the exception handler."""
799
806
800 if force or self.call_pdb:
807 if force or self.call_pdb:
801 if self.pdb is None:
808 if self.pdb is None:
802 self.pdb = Debugger.Pdb(
809 self.pdb = Debugger.Pdb(
803 self.color_scheme_table.active_scheme_name)
810 self.color_scheme_table.active_scheme_name)
804 # the system displayhook may have changed, restore the original
811 # the system displayhook may have changed, restore the original
805 # for pdb
812 # for pdb
806 dhook = sys.displayhook
813 dhook = sys.displayhook
807 sys.displayhook = sys.__displayhook__
814 sys.displayhook = sys.__displayhook__
808 self.pdb.reset()
815 self.pdb.reset()
809 # Find the right frame so we don't pop up inside ipython itself
816 # Find the right frame so we don't pop up inside ipython itself
810 if hasattr(self,'tb'):
817 if hasattr(self,'tb'):
811 etb = self.tb
818 etb = self.tb
812 else:
819 else:
813 etb = self.tb = sys.last_traceback
820 etb = self.tb = sys.last_traceback
814 while self.tb.tb_next is not None:
821 while self.tb.tb_next is not None:
815 self.tb = self.tb.tb_next
822 self.tb = self.tb.tb_next
816 try:
823 try:
817 if etb and etb.tb_next:
824 if etb and etb.tb_next:
818 etb = etb.tb_next
825 etb = etb.tb_next
819 self.pdb.botframe = etb.tb_frame
826 self.pdb.botframe = etb.tb_frame
820 self.pdb.interaction(self.tb.tb_frame, self.tb)
827 self.pdb.interaction(self.tb.tb_frame, self.tb)
821 finally:
828 finally:
822 sys.displayhook = dhook
829 sys.displayhook = dhook
823
830
824 if hasattr(self,'tb'):
831 if hasattr(self,'tb'):
825 del self.tb
832 del self.tb
826
833
827 def handler(self, info=None):
834 def handler(self, info=None):
828 (etype, evalue, etb) = info or sys.exc_info()
835 (etype, evalue, etb) = info or sys.exc_info()
829 self.tb = etb
836 self.tb = etb
830 Term.cout.flush()
837 Term.cout.flush()
831 Term.cerr.flush()
838 Term.cerr.flush()
832 print >> Term.cerr, self.text(etype, evalue, etb)
839 print >> Term.cerr, self.text(etype, evalue, etb)
833
840
834 # Changed so an instance can just be called as VerboseTB_inst() and print
841 # Changed so an instance can just be called as VerboseTB_inst() and print
835 # out the right info on its own.
842 # out the right info on its own.
836 def __call__(self, etype=None, evalue=None, etb=None):
843 def __call__(self, etype=None, evalue=None, etb=None):
837 """This hook can replace sys.excepthook (for Python 2.1 or higher)."""
844 """This hook can replace sys.excepthook (for Python 2.1 or higher)."""
838 if etb is None:
845 if etb is None:
839 self.handler()
846 self.handler()
840 else:
847 else:
841 self.handler((etype, evalue, etb))
848 self.handler((etype, evalue, etb))
842 self.debugger()
849 self.debugger()
843
850
844 #----------------------------------------------------------------------------
851 #----------------------------------------------------------------------------
845 class FormattedTB(VerboseTB,ListTB):
852 class FormattedTB(VerboseTB,ListTB):
846 """Subclass ListTB but allow calling with a traceback.
853 """Subclass ListTB but allow calling with a traceback.
847
854
848 It can thus be used as a sys.excepthook for Python > 2.1.
855 It can thus be used as a sys.excepthook for Python > 2.1.
849
856
850 Also adds 'Context' and 'Verbose' modes, not available in ListTB.
857 Also adds 'Context' and 'Verbose' modes, not available in ListTB.
851
858
852 Allows a tb_offset to be specified. This is useful for situations where
859 Allows a tb_offset to be specified. This is useful for situations where
853 one needs to remove a number of topmost frames from the traceback (such as
860 one needs to remove a number of topmost frames from the traceback (such as
854 occurs with python programs that themselves execute other python code,
861 occurs with python programs that themselves execute other python code,
855 like Python shells). """
862 like Python shells). """
856
863
857 def __init__(self, mode = 'Plain', color_scheme='Linux',
864 def __init__(self, mode = 'Plain', color_scheme='Linux',
858 tb_offset = 0,long_header=0,call_pdb=0,include_vars=0):
865 tb_offset = 0,long_header=0,call_pdb=0,include_vars=0):
859
866
860 # NEVER change the order of this list. Put new modes at the end:
867 # NEVER change the order of this list. Put new modes at the end:
861 self.valid_modes = ['Plain','Context','Verbose']
868 self.valid_modes = ['Plain','Context','Verbose']
862 self.verbose_modes = self.valid_modes[1:3]
869 self.verbose_modes = self.valid_modes[1:3]
863
870
864 VerboseTB.__init__(self,color_scheme,tb_offset,long_header,
871 VerboseTB.__init__(self,color_scheme,tb_offset,long_header,
865 call_pdb=call_pdb,include_vars=include_vars)
872 call_pdb=call_pdb,include_vars=include_vars)
866 self.set_mode(mode)
873 self.set_mode(mode)
867
874
868 def _extract_tb(self,tb):
875 def _extract_tb(self,tb):
869 if tb:
876 if tb:
870 return traceback.extract_tb(tb)
877 return traceback.extract_tb(tb)
871 else:
878 else:
872 return None
879 return None
873
880
874 def text(self, etype, value, tb,context=5,mode=None):
881 def text(self, etype, value, tb,context=5,mode=None):
875 """Return formatted traceback.
882 """Return formatted traceback.
876
883
877 If the optional mode parameter is given, it overrides the current
884 If the optional mode parameter is given, it overrides the current
878 mode."""
885 mode."""
879
886
880 if mode is None:
887 if mode is None:
881 mode = self.mode
888 mode = self.mode
882 if mode in self.verbose_modes:
889 if mode in self.verbose_modes:
883 # verbose modes need a full traceback
890 # verbose modes need a full traceback
884 return VerboseTB.text(self,etype, value, tb,context=5)
891 return VerboseTB.text(self,etype, value, tb,context=5)
885 else:
892 else:
886 # We must check the source cache because otherwise we can print
893 # We must check the source cache because otherwise we can print
887 # out-of-date source code.
894 # out-of-date source code.
888 linecache.checkcache()
895 linecache.checkcache()
889 # Now we can extract and format the exception
896 # Now we can extract and format the exception
890 elist = self._extract_tb(tb)
897 elist = self._extract_tb(tb)
891 if len(elist) > self.tb_offset:
898 if len(elist) > self.tb_offset:
892 del elist[:self.tb_offset]
899 del elist[:self.tb_offset]
893 return ListTB.text(self,etype,value,elist)
900 return ListTB.text(self,etype,value,elist)
894
901
895 def set_mode(self,mode=None):
902 def set_mode(self,mode=None):
896 """Switch to the desired mode.
903 """Switch to the desired mode.
897
904
898 If mode is not specified, cycles through the available modes."""
905 If mode is not specified, cycles through the available modes."""
899
906
900 if not mode:
907 if not mode:
901 new_idx = ( self.valid_modes.index(self.mode) + 1 ) % \
908 new_idx = ( self.valid_modes.index(self.mode) + 1 ) % \
902 len(self.valid_modes)
909 len(self.valid_modes)
903 self.mode = self.valid_modes[new_idx]
910 self.mode = self.valid_modes[new_idx]
904 elif mode not in self.valid_modes:
911 elif mode not in self.valid_modes:
905 raise ValueError, 'Unrecognized mode in FormattedTB: <'+mode+'>\n'\
912 raise ValueError, 'Unrecognized mode in FormattedTB: <'+mode+'>\n'\
906 'Valid modes: '+str(self.valid_modes)
913 'Valid modes: '+str(self.valid_modes)
907 else:
914 else:
908 self.mode = mode
915 self.mode = mode
909 # include variable details only in 'Verbose' mode
916 # include variable details only in 'Verbose' mode
910 self.include_vars = (self.mode == self.valid_modes[2])
917 self.include_vars = (self.mode == self.valid_modes[2])
911
918
912 # some convenient shorcuts
919 # some convenient shorcuts
913 def plain(self):
920 def plain(self):
914 self.set_mode(self.valid_modes[0])
921 self.set_mode(self.valid_modes[0])
915
922
916 def context(self):
923 def context(self):
917 self.set_mode(self.valid_modes[1])
924 self.set_mode(self.valid_modes[1])
918
925
919 def verbose(self):
926 def verbose(self):
920 self.set_mode(self.valid_modes[2])
927 self.set_mode(self.valid_modes[2])
921
928
922 #----------------------------------------------------------------------------
929 #----------------------------------------------------------------------------
923 class AutoFormattedTB(FormattedTB):
930 class AutoFormattedTB(FormattedTB):
924 """A traceback printer which can be called on the fly.
931 """A traceback printer which can be called on the fly.
925
932
926 It will find out about exceptions by itself.
933 It will find out about exceptions by itself.
927
934
928 A brief example:
935 A brief example:
929
936
930 AutoTB = AutoFormattedTB(mode = 'Verbose',color_scheme='Linux')
937 AutoTB = AutoFormattedTB(mode = 'Verbose',color_scheme='Linux')
931 try:
938 try:
932 ...
939 ...
933 except:
940 except:
934 AutoTB() # or AutoTB(out=logfile) where logfile is an open file object
941 AutoTB() # or AutoTB(out=logfile) where logfile is an open file object
935 """
942 """
936 def __call__(self,etype=None,evalue=None,etb=None,
943 def __call__(self,etype=None,evalue=None,etb=None,
937 out=None,tb_offset=None):
944 out=None,tb_offset=None):
938 """Print out a formatted exception traceback.
945 """Print out a formatted exception traceback.
939
946
940 Optional arguments:
947 Optional arguments:
941 - out: an open file-like object to direct output to.
948 - out: an open file-like object to direct output to.
942
949
943 - tb_offset: the number of frames to skip over in the stack, on a
950 - tb_offset: the number of frames to skip over in the stack, on a
944 per-call basis (this overrides temporarily the instance's tb_offset
951 per-call basis (this overrides temporarily the instance's tb_offset
945 given at initialization time. """
952 given at initialization time. """
946
953
947 if out is None:
954 if out is None:
948 out = Term.cerr
955 out = Term.cerr
949 Term.cout.flush()
956 Term.cout.flush()
950 out.flush()
957 out.flush()
951 if tb_offset is not None:
958 if tb_offset is not None:
952 tb_offset, self.tb_offset = self.tb_offset, tb_offset
959 tb_offset, self.tb_offset = self.tb_offset, tb_offset
953 print >> out, self.text(etype, evalue, etb)
960 print >> out, self.text(etype, evalue, etb)
954 self.tb_offset = tb_offset
961 self.tb_offset = tb_offset
955 else:
962 else:
956 print >> out, self.text(etype, evalue, etb)
963 print >> out, self.text(etype, evalue, etb)
957 self.debugger()
964 self.debugger()
958
965
959 def text(self,etype=None,value=None,tb=None,context=5,mode=None):
966 def text(self,etype=None,value=None,tb=None,context=5,mode=None):
960 if etype is None:
967 if etype is None:
961 etype,value,tb = sys.exc_info()
968 etype,value,tb = sys.exc_info()
962 self.tb = tb
969 self.tb = tb
963 return FormattedTB.text(self,etype,value,tb,context=5,mode=mode)
970 return FormattedTB.text(self,etype,value,tb,context=5,mode=mode)
964
971
965 #---------------------------------------------------------------------------
972 #---------------------------------------------------------------------------
966 # A simple class to preserve Nathan's original functionality.
973 # A simple class to preserve Nathan's original functionality.
967 class ColorTB(FormattedTB):
974 class ColorTB(FormattedTB):
968 """Shorthand to initialize a FormattedTB in Linux colors mode."""
975 """Shorthand to initialize a FormattedTB in Linux colors mode."""
969 def __init__(self,color_scheme='Linux',call_pdb=0):
976 def __init__(self,color_scheme='Linux',call_pdb=0):
970 FormattedTB.__init__(self,color_scheme=color_scheme,
977 FormattedTB.__init__(self,color_scheme=color_scheme,
971 call_pdb=call_pdb)
978 call_pdb=call_pdb)
972
979
973 #----------------------------------------------------------------------------
980 #----------------------------------------------------------------------------
974 # module testing (minimal)
981 # module testing (minimal)
975 if __name__ == "__main__":
982 if __name__ == "__main__":
976 def spam(c, (d, e)):
983 def spam(c, (d, e)):
977 x = c + d
984 x = c + d
978 y = c * d
985 y = c * d
979 foo(x, y)
986 foo(x, y)
980
987
981 def foo(a, b, bar=1):
988 def foo(a, b, bar=1):
982 eggs(a, b + bar)
989 eggs(a, b + bar)
983
990
984 def eggs(f, g, z=globals()):
991 def eggs(f, g, z=globals()):
985 h = f + g
992 h = f + g
986 i = f - g
993 i = f - g
987 return h / i
994 return h / i
988
995
989 print ''
996 print ''
990 print '*** Before ***'
997 print '*** Before ***'
991 try:
998 try:
992 print spam(1, (2, 3))
999 print spam(1, (2, 3))
993 except:
1000 except:
994 traceback.print_exc()
1001 traceback.print_exc()
995 print ''
1002 print ''
996
1003
997 handler = ColorTB()
1004 handler = ColorTB()
998 print '*** ColorTB ***'
1005 print '*** ColorTB ***'
999 try:
1006 try:
1000 print spam(1, (2, 3))
1007 print spam(1, (2, 3))
1001 except:
1008 except:
1002 apply(handler, sys.exc_info() )
1009 apply(handler, sys.exc_info() )
1003 print ''
1010 print ''
1004
1011
1005 handler = VerboseTB()
1012 handler = VerboseTB()
1006 print '*** VerboseTB ***'
1013 print '*** VerboseTB ***'
1007 try:
1014 try:
1008 print spam(1, (2, 3))
1015 print spam(1, (2, 3))
1009 except:
1016 except:
1010 apply(handler, sys.exc_info() )
1017 apply(handler, sys.exc_info() )
1011 print ''
1018 print ''
1012
1019
@@ -1,7253 +1,7259 b''
1 2007-12-01 Robert Kern <robert.kern@gmail.com>
2
3 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
4 inspect.findsource(). It can now find source lines inside zipped
5 packages.
6
1 2007-11-29 *** Released version 0.8.2
7 2007-11-29 *** Released version 0.8.2
2
8
3 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
9 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
4
10
5 * IPython/Logger.py (Logger.logstop): add a proper logstop()
11 * IPython/Logger.py (Logger.logstop): add a proper logstop()
6 method to fully stop the logger, along with a corresponding
12 method to fully stop the logger, along with a corresponding
7 %logstop magic for interactive use.
13 %logstop magic for interactive use.
8
14
9 * IPython/Extensions/ipy_host_completers.py: added new host
15 * IPython/Extensions/ipy_host_completers.py: added new host
10 completers functionality, contributed by Gael Pasgrimaud
16 completers functionality, contributed by Gael Pasgrimaud
11 <gawel-AT-afpy.org>.
17 <gawel-AT-afpy.org>.
12
18
13 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
19 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
14
20
15 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
21 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
16 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
22 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
17 options handling. Unicode fix in %whos (committed a while ago)
23 options handling. Unicode fix in %whos (committed a while ago)
18 was also contributed by Paul.
24 was also contributed by Paul.
19
25
20 2007-11-23 Darren Dale <darren.dale@cornell.edu>
26 2007-11-23 Darren Dale <darren.dale@cornell.edu>
21 * ipy_traits_completer.py: let traits_completer respect the user's
27 * ipy_traits_completer.py: let traits_completer respect the user's
22 readline_omit__names setting.
28 readline_omit__names setting.
23
29
24 2007-11-08 Ville Vainio <vivainio@gmail.com>
30 2007-11-08 Ville Vainio <vivainio@gmail.com>
25 * ipy_completers.py (import completer): assume 'xml' module exists.
31 * ipy_completers.py (import completer): assume 'xml' module exists.
26 Do not add every module twice anymore. Closes #196.
32 Do not add every module twice anymore. Closes #196.
27
33
28 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
34 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
29 completer that uses apt-cache to search for existing packages.
35 completer that uses apt-cache to search for existing packages.
30
36
31 2007-11-06 Ville Vainio <vivainio@gmail.com>
37 2007-11-06 Ville Vainio <vivainio@gmail.com>
32
38
33 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
39 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
34 true. Closes #194.
40 true. Closes #194.
35
41
36 2007-11-01 Brian Granger <ellisonbg@gmail.com>
42 2007-11-01 Brian Granger <ellisonbg@gmail.com>
37
43
38 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
44 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
39 working with OS X 10.5 libedit implementation of readline.
45 working with OS X 10.5 libedit implementation of readline.
40
46
41 2007-10-24 Ville Vainio <vivainio@gmail.com>
47 2007-10-24 Ville Vainio <vivainio@gmail.com>
42
48
43 * iplib.py(user_setup): To route around buggy installations where
49 * iplib.py(user_setup): To route around buggy installations where
44 UserConfig is not available, create a minimal _ipython.
50 UserConfig is not available, create a minimal _ipython.
45
51
46 * iplib.py: Unicode fixes from Jorgen.
52 * iplib.py: Unicode fixes from Jorgen.
47
53
48 * genutils.py: Slist now has new method 'fields()' for extraction of
54 * genutils.py: Slist now has new method 'fields()' for extraction of
49 whitespace-separated fields from line-oriented data.
55 whitespace-separated fields from line-oriented data.
50
56
51 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
57 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
52
58
53 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
59 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
54 when querying objects with no __class__ attribute (such as
60 when querying objects with no __class__ attribute (such as
55 f2py-generated modules).
61 f2py-generated modules).
56
62
57 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
63 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
58
64
59 * IPython/Magic.py (magic_time): track compilation time and report
65 * IPython/Magic.py (magic_time): track compilation time and report
60 it if longer than 0.1s (fix done to %time and %timeit). After a
66 it if longer than 0.1s (fix done to %time and %timeit). After a
61 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
67 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
62
68
63 2007-09-18 Ville Vainio <vivainio@gmail.com>
69 2007-09-18 Ville Vainio <vivainio@gmail.com>
64
70
65 * genutils.py(make_quoted_expr): Do not use Itpl, it does
71 * genutils.py(make_quoted_expr): Do not use Itpl, it does
66 not support unicode at the moment. Fixes (many) magic calls with
72 not support unicode at the moment. Fixes (many) magic calls with
67 special characters.
73 special characters.
68
74
69 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
75 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
70
76
71 * IPython/genutils.py (doctest_reload): expose the doctest
77 * IPython/genutils.py (doctest_reload): expose the doctest
72 reloader to the user so that people can easily reset doctest while
78 reloader to the user so that people can easily reset doctest while
73 using it interactively. Fixes a problem reported by Jorgen.
79 using it interactively. Fixes a problem reported by Jorgen.
74
80
75 * IPython/iplib.py (InteractiveShell.__init__): protect the
81 * IPython/iplib.py (InteractiveShell.__init__): protect the
76 FakeModule instances used for __main__ in %run calls from
82 FakeModule instances used for __main__ in %run calls from
77 deletion, so that user code defined in them isn't left with
83 deletion, so that user code defined in them isn't left with
78 dangling references due to the Python module deletion machinery.
84 dangling references due to the Python module deletion machinery.
79 This should fix the problems reported by Darren.
85 This should fix the problems reported by Darren.
80
86
81 2007-09-10 Darren Dale <dd55@cornell.edu>
87 2007-09-10 Darren Dale <dd55@cornell.edu>
82
88
83 * Cleanup of IPShellQt and IPShellQt4
89 * Cleanup of IPShellQt and IPShellQt4
84
90
85 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
91 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
86
92
87 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
93 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
88 doctest support.
94 doctest support.
89
95
90 * IPython/iplib.py (safe_execfile): minor docstring improvements.
96 * IPython/iplib.py (safe_execfile): minor docstring improvements.
91
97
92 2007-09-08 Ville Vainio <vivainio@gmail.com>
98 2007-09-08 Ville Vainio <vivainio@gmail.com>
93
99
94 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
100 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
95 directory, not the target directory.
101 directory, not the target directory.
96
102
97 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
103 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
98 exception that won't print the tracebacks. Switched many magics to
104 exception that won't print the tracebacks. Switched many magics to
99 raise them on error situations, also GetoptError is not printed
105 raise them on error situations, also GetoptError is not printed
100 anymore.
106 anymore.
101
107
102 2007-09-07 Ville Vainio <vivainio@gmail.com>
108 2007-09-07 Ville Vainio <vivainio@gmail.com>
103
109
104 * iplib.py: do not auto-alias "dir", it screws up other dir auto
110 * iplib.py: do not auto-alias "dir", it screws up other dir auto
105 aliases.
111 aliases.
106
112
107 * genutils.py: SList.grep() implemented.
113 * genutils.py: SList.grep() implemented.
108
114
109 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
115 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
110 for easy "out of the box" setup of several common editors, so that
116 for easy "out of the box" setup of several common editors, so that
111 e.g. '%edit os.path.isfile' will jump to the correct line
117 e.g. '%edit os.path.isfile' will jump to the correct line
112 automatically. Contributions for command lines of your favourite
118 automatically. Contributions for command lines of your favourite
113 editors welcome.
119 editors welcome.
114
120
115 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
121 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
116
122
117 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
123 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
118 preventing source display in certain cases. In reality I think
124 preventing source display in certain cases. In reality I think
119 the problem is with Ubuntu's Python build, but this change works
125 the problem is with Ubuntu's Python build, but this change works
120 around the issue in some cases (not in all, unfortunately). I'd
126 around the issue in some cases (not in all, unfortunately). I'd
121 filed a Python bug on this with more details, but in the change of
127 filed a Python bug on this with more details, but in the change of
122 bug trackers it seems to have been lost.
128 bug trackers it seems to have been lost.
123
129
124 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
130 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
125 not the same, it's not self-documenting, doesn't allow range
131 not the same, it's not self-documenting, doesn't allow range
126 selection, and sorts alphabetically instead of numerically.
132 selection, and sorts alphabetically instead of numerically.
127 (magic_r): restore %r. No, "up + enter. One char magic" is not
133 (magic_r): restore %r. No, "up + enter. One char magic" is not
128 the same thing, since %r takes parameters to allow fast retrieval
134 the same thing, since %r takes parameters to allow fast retrieval
129 of old commands. I've received emails from users who use this a
135 of old commands. I've received emails from users who use this a
130 LOT, so it stays.
136 LOT, so it stays.
131 (magic_automagic): restore %automagic. "use _ip.option.automagic"
137 (magic_automagic): restore %automagic. "use _ip.option.automagic"
132 is not a valid replacement b/c it doesn't provide an complete
138 is not a valid replacement b/c it doesn't provide an complete
133 explanation (which the automagic docstring does).
139 explanation (which the automagic docstring does).
134 (magic_autocall): restore %autocall, with improved docstring.
140 (magic_autocall): restore %autocall, with improved docstring.
135 Same argument as for others, "use _ip.options.autocall" is not a
141 Same argument as for others, "use _ip.options.autocall" is not a
136 valid replacement.
142 valid replacement.
137 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
143 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
138 tutorials and online docs.
144 tutorials and online docs.
139
145
140 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
146 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
141
147
142 * IPython/usage.py (quick_reference): mention magics in quickref,
148 * IPython/usage.py (quick_reference): mention magics in quickref,
143 modified main banner to mention %quickref.
149 modified main banner to mention %quickref.
144
150
145 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
151 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
146
152
147 2007-09-06 Ville Vainio <vivainio@gmail.com>
153 2007-09-06 Ville Vainio <vivainio@gmail.com>
148
154
149 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
155 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
150 Callable aliases now pass the _ip as first arg. This breaks
156 Callable aliases now pass the _ip as first arg. This breaks
151 compatibility with earlier 0.8.2.svn series! (though they should
157 compatibility with earlier 0.8.2.svn series! (though they should
152 not have been in use yet outside these few extensions)
158 not have been in use yet outside these few extensions)
153
159
154 2007-09-05 Ville Vainio <vivainio@gmail.com>
160 2007-09-05 Ville Vainio <vivainio@gmail.com>
155
161
156 * external/mglob.py: expand('dirname') => ['dirname'], instead
162 * external/mglob.py: expand('dirname') => ['dirname'], instead
157 of ['dirname/foo','dirname/bar', ...].
163 of ['dirname/foo','dirname/bar', ...].
158
164
159 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
165 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
160 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
166 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
161 is useful for others as well).
167 is useful for others as well).
162
168
163 * iplib.py: on callable aliases (as opposed to old style aliases),
169 * iplib.py: on callable aliases (as opposed to old style aliases),
164 do var_expand() immediately, and use make_quoted_expr instead
170 do var_expand() immediately, and use make_quoted_expr instead
165 of hardcoded r"""
171 of hardcoded r"""
166
172
167 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
173 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
168 if not available load ipy_fsops.py for cp, mv, etc. replacements
174 if not available load ipy_fsops.py for cp, mv, etc. replacements
169
175
170 * OInspect.py, ipy_which.py: improve %which and obj? for callable
176 * OInspect.py, ipy_which.py: improve %which and obj? for callable
171 aliases
177 aliases
172
178
173 2007-09-04 Ville Vainio <vivainio@gmail.com>
179 2007-09-04 Ville Vainio <vivainio@gmail.com>
174
180
175 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
181 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
176 Relicensed under BSD with the authors approval.
182 Relicensed under BSD with the authors approval.
177
183
178 * ipmaker.py, usage.py: Remove %magic from default banner, improve
184 * ipmaker.py, usage.py: Remove %magic from default banner, improve
179 %quickref
185 %quickref
180
186
181 2007-09-03 Ville Vainio <vivainio@gmail.com>
187 2007-09-03 Ville Vainio <vivainio@gmail.com>
182
188
183 * Magic.py: %time now passes expression through prefilter,
189 * Magic.py: %time now passes expression through prefilter,
184 allowing IPython syntax.
190 allowing IPython syntax.
185
191
186 2007-09-01 Ville Vainio <vivainio@gmail.com>
192 2007-09-01 Ville Vainio <vivainio@gmail.com>
187
193
188 * ipmaker.py: Always show full traceback when newstyle config fails
194 * ipmaker.py: Always show full traceback when newstyle config fails
189
195
190 2007-08-27 Ville Vainio <vivainio@gmail.com>
196 2007-08-27 Ville Vainio <vivainio@gmail.com>
191
197
192 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
198 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
193
199
194 2007-08-26 Ville Vainio <vivainio@gmail.com>
200 2007-08-26 Ville Vainio <vivainio@gmail.com>
195
201
196 * ipmaker.py: Command line args have the highest priority again
202 * ipmaker.py: Command line args have the highest priority again
197
203
198 * iplib.py, ipmaker.py: -i command line argument now behaves as in
204 * iplib.py, ipmaker.py: -i command line argument now behaves as in
199 normal python, i.e. leaves the IPython session running after -c
205 normal python, i.e. leaves the IPython session running after -c
200 command or running a batch file from command line.
206 command or running a batch file from command line.
201
207
202 2007-08-22 Ville Vainio <vivainio@gmail.com>
208 2007-08-22 Ville Vainio <vivainio@gmail.com>
203
209
204 * iplib.py: no extra empty (last) line in raw hist w/ multiline
210 * iplib.py: no extra empty (last) line in raw hist w/ multiline
205 statements
211 statements
206
212
207 * logger.py: Fix bug where blank lines in history were not
213 * logger.py: Fix bug where blank lines in history were not
208 added until AFTER adding the current line; translated and raw
214 added until AFTER adding the current line; translated and raw
209 history should finally be in sync with prompt now.
215 history should finally be in sync with prompt now.
210
216
211 * ipy_completers.py: quick_completer now makes it easy to create
217 * ipy_completers.py: quick_completer now makes it easy to create
212 trivial custom completers
218 trivial custom completers
213
219
214 * clearcmd.py: shadow history compression & erasing, fixed input hist
220 * clearcmd.py: shadow history compression & erasing, fixed input hist
215 clearing.
221 clearing.
216
222
217 * envpersist.py, history.py: %env (sh profile only), %hist completers
223 * envpersist.py, history.py: %env (sh profile only), %hist completers
218
224
219 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
225 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
220 term title now include the drive letter, and always use / instead of
226 term title now include the drive letter, and always use / instead of
221 os.sep (as per recommended approach for win32 ipython in general).
227 os.sep (as per recommended approach for win32 ipython in general).
222
228
223 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
229 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
224 plain python scripts from ipykit command line by running
230 plain python scripts from ipykit command line by running
225 "py myscript.py", even w/o installed python.
231 "py myscript.py", even w/o installed python.
226
232
227 2007-08-21 Ville Vainio <vivainio@gmail.com>
233 2007-08-21 Ville Vainio <vivainio@gmail.com>
228
234
229 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
235 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
230 (for backwards compatibility)
236 (for backwards compatibility)
231
237
232 * history.py: switch back to %hist -t from %hist -r as default.
238 * history.py: switch back to %hist -t from %hist -r as default.
233 At least until raw history is fixed for good.
239 At least until raw history is fixed for good.
234
240
235 2007-08-20 Ville Vainio <vivainio@gmail.com>
241 2007-08-20 Ville Vainio <vivainio@gmail.com>
236
242
237 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
243 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
238 locate alias redeclarations etc. Also, avoid handling
244 locate alias redeclarations etc. Also, avoid handling
239 _ip.IP.alias_table directly, prefer using _ip.defalias.
245 _ip.IP.alias_table directly, prefer using _ip.defalias.
240
246
241
247
242 2007-08-15 Ville Vainio <vivainio@gmail.com>
248 2007-08-15 Ville Vainio <vivainio@gmail.com>
243
249
244 * prefilter.py: ! is now always served first
250 * prefilter.py: ! is now always served first
245
251
246 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
252 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
247
253
248 * IPython/iplib.py (safe_execfile): fix the SystemExit
254 * IPython/iplib.py (safe_execfile): fix the SystemExit
249 auto-suppression code to work in Python2.4 (the internal structure
255 auto-suppression code to work in Python2.4 (the internal structure
250 of that exception changed and I'd only tested the code with 2.5).
256 of that exception changed and I'd only tested the code with 2.5).
251 Bug reported by a SciPy attendee.
257 Bug reported by a SciPy attendee.
252
258
253 2007-08-13 Ville Vainio <vivainio@gmail.com>
259 2007-08-13 Ville Vainio <vivainio@gmail.com>
254
260
255 * prefilter.py: reverted !c:/bin/foo fix, made % in
261 * prefilter.py: reverted !c:/bin/foo fix, made % in
256 multiline specials work again
262 multiline specials work again
257
263
258 2007-08-13 Ville Vainio <vivainio@gmail.com>
264 2007-08-13 Ville Vainio <vivainio@gmail.com>
259
265
260 * prefilter.py: Take more care to special-case !, so that
266 * prefilter.py: Take more care to special-case !, so that
261 !c:/bin/foo.exe works.
267 !c:/bin/foo.exe works.
262
268
263 * setup.py: if we are building eggs, strip all docs and
269 * setup.py: if we are building eggs, strip all docs and
264 examples (it doesn't make sense to bytecompile examples,
270 examples (it doesn't make sense to bytecompile examples,
265 and docs would be in an awkward place anyway).
271 and docs would be in an awkward place anyway).
266
272
267 * Ryan Krauss' patch fixes start menu shortcuts when IPython
273 * Ryan Krauss' patch fixes start menu shortcuts when IPython
268 is installed into a directory that has spaces in the name.
274 is installed into a directory that has spaces in the name.
269
275
270 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
276 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
271
277
272 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
278 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
273 doctest profile and %doctest_mode, so they actually generate the
279 doctest profile and %doctest_mode, so they actually generate the
274 blank lines needed by doctest to separate individual tests.
280 blank lines needed by doctest to separate individual tests.
275
281
276 * IPython/iplib.py (safe_execfile): modify so that running code
282 * IPython/iplib.py (safe_execfile): modify so that running code
277 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
283 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
278 doesn't get a printed traceback. Any other value in sys.exit(),
284 doesn't get a printed traceback. Any other value in sys.exit(),
279 including the empty call, still generates a traceback. This
285 including the empty call, still generates a traceback. This
280 enables use of %run without having to pass '-e' for codes that
286 enables use of %run without having to pass '-e' for codes that
281 correctly set the exit status flag.
287 correctly set the exit status flag.
282
288
283 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
289 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
284
290
285 * IPython/iplib.py (InteractiveShell.post_config_initialization):
291 * IPython/iplib.py (InteractiveShell.post_config_initialization):
286 fix problems with doctests failing when run inside IPython due to
292 fix problems with doctests failing when run inside IPython due to
287 IPython's modifications of sys.displayhook.
293 IPython's modifications of sys.displayhook.
288
294
289 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
295 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
290
296
291 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
297 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
292 a string with names.
298 a string with names.
293
299
294 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
300 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
295
301
296 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
302 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
297 magic to toggle on/off the doctest pasting support without having
303 magic to toggle on/off the doctest pasting support without having
298 to leave a session to switch to a separate profile.
304 to leave a session to switch to a separate profile.
299
305
300 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
306 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
301
307
302 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
308 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
303 introduce a blank line between inputs, to conform to doctest
309 introduce a blank line between inputs, to conform to doctest
304 requirements.
310 requirements.
305
311
306 * IPython/OInspect.py (Inspector.pinfo): fix another part where
312 * IPython/OInspect.py (Inspector.pinfo): fix another part where
307 auto-generated docstrings for new-style classes were showing up.
313 auto-generated docstrings for new-style classes were showing up.
308
314
309 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
315 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
310
316
311 * api_changes: Add new file to track backward-incompatible
317 * api_changes: Add new file to track backward-incompatible
312 user-visible changes.
318 user-visible changes.
313
319
314 2007-08-06 Ville Vainio <vivainio@gmail.com>
320 2007-08-06 Ville Vainio <vivainio@gmail.com>
315
321
316 * ipmaker.py: fix bug where user_config_ns didn't exist at all
322 * ipmaker.py: fix bug where user_config_ns didn't exist at all
317 before all the config files were handled.
323 before all the config files were handled.
318
324
319 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
325 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
320
326
321 * IPython/irunner.py (RunnerFactory): Add new factory class for
327 * IPython/irunner.py (RunnerFactory): Add new factory class for
322 creating reusable runners based on filenames.
328 creating reusable runners based on filenames.
323
329
324 * IPython/Extensions/ipy_profile_doctest.py: New profile for
330 * IPython/Extensions/ipy_profile_doctest.py: New profile for
325 doctest support. It sets prompts/exceptions as similar to
331 doctest support. It sets prompts/exceptions as similar to
326 standard Python as possible, so that ipython sessions in this
332 standard Python as possible, so that ipython sessions in this
327 profile can be easily pasted as doctests with minimal
333 profile can be easily pasted as doctests with minimal
328 modifications. It also enables pasting of doctests from external
334 modifications. It also enables pasting of doctests from external
329 sources (even if they have leading whitespace), so that you can
335 sources (even if they have leading whitespace), so that you can
330 rerun doctests from existing sources.
336 rerun doctests from existing sources.
331
337
332 * IPython/iplib.py (_prefilter): fix a buglet where after entering
338 * IPython/iplib.py (_prefilter): fix a buglet where after entering
333 some whitespace, the prompt would become a continuation prompt
339 some whitespace, the prompt would become a continuation prompt
334 with no way of exiting it other than Ctrl-C. This fix brings us
340 with no way of exiting it other than Ctrl-C. This fix brings us
335 into conformity with how the default python prompt works.
341 into conformity with how the default python prompt works.
336
342
337 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
343 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
338 Add support for pasting not only lines that start with '>>>', but
344 Add support for pasting not only lines that start with '>>>', but
339 also with ' >>>'. That is, arbitrary whitespace can now precede
345 also with ' >>>'. That is, arbitrary whitespace can now precede
340 the prompts. This makes the system useful for pasting doctests
346 the prompts. This makes the system useful for pasting doctests
341 from docstrings back into a normal session.
347 from docstrings back into a normal session.
342
348
343 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
349 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
344
350
345 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
351 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
346 r1357, which had killed multiple invocations of an embedded
352 r1357, which had killed multiple invocations of an embedded
347 ipython (this means that example-embed has been broken for over 1
353 ipython (this means that example-embed has been broken for over 1
348 year!!!). Rather than possibly breaking the batch stuff for which
354 year!!!). Rather than possibly breaking the batch stuff for which
349 the code in iplib.py/interact was introduced, I worked around the
355 the code in iplib.py/interact was introduced, I worked around the
350 problem in the embedding class in Shell.py. We really need a
356 problem in the embedding class in Shell.py. We really need a
351 bloody test suite for this code, I'm sick of finding stuff that
357 bloody test suite for this code, I'm sick of finding stuff that
352 used to work breaking left and right every time I use an old
358 used to work breaking left and right every time I use an old
353 feature I hadn't touched in a few months.
359 feature I hadn't touched in a few months.
354 (kill_embedded): Add a new magic that only shows up in embedded
360 (kill_embedded): Add a new magic that only shows up in embedded
355 mode, to allow users to permanently deactivate an embedded instance.
361 mode, to allow users to permanently deactivate an embedded instance.
356
362
357 2007-08-01 Ville Vainio <vivainio@gmail.com>
363 2007-08-01 Ville Vainio <vivainio@gmail.com>
358
364
359 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
365 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
360 history gets out of sync on runlines (e.g. when running macros).
366 history gets out of sync on runlines (e.g. when running macros).
361
367
362 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
368 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
363
369
364 * IPython/Magic.py (magic_colors): fix win32-related error message
370 * IPython/Magic.py (magic_colors): fix win32-related error message
365 that could appear under *nix when readline was missing. Patch by
371 that could appear under *nix when readline was missing. Patch by
366 Scott Jackson, closes #175.
372 Scott Jackson, closes #175.
367
373
368 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
374 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
369
375
370 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
376 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
371 completer that it traits-aware, so that traits objects don't show
377 completer that it traits-aware, so that traits objects don't show
372 all of their internal attributes all the time.
378 all of their internal attributes all the time.
373
379
374 * IPython/genutils.py (dir2): moved this code from inside
380 * IPython/genutils.py (dir2): moved this code from inside
375 completer.py to expose it publicly, so I could use it in the
381 completer.py to expose it publicly, so I could use it in the
376 wildcards bugfix.
382 wildcards bugfix.
377
383
378 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
384 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
379 Stefan with Traits.
385 Stefan with Traits.
380
386
381 * IPython/completer.py (Completer.attr_matches): change internal
387 * IPython/completer.py (Completer.attr_matches): change internal
382 var name from 'object' to 'obj', since 'object' is now a builtin
388 var name from 'object' to 'obj', since 'object' is now a builtin
383 and this can lead to weird bugs if reusing this code elsewhere.
389 and this can lead to weird bugs if reusing this code elsewhere.
384
390
385 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
391 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
386
392
387 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
393 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
388 'foo?' and update the code to prevent printing of default
394 'foo?' and update the code to prevent printing of default
389 docstrings that started appearing after I added support for
395 docstrings that started appearing after I added support for
390 new-style classes. The approach I'm using isn't ideal (I just
396 new-style classes. The approach I'm using isn't ideal (I just
391 special-case those strings) but I'm not sure how to more robustly
397 special-case those strings) but I'm not sure how to more robustly
392 differentiate between truly user-written strings and Python's
398 differentiate between truly user-written strings and Python's
393 automatic ones.
399 automatic ones.
394
400
395 2007-07-09 Ville Vainio <vivainio@gmail.com>
401 2007-07-09 Ville Vainio <vivainio@gmail.com>
396
402
397 * completer.py: Applied Matthew Neeley's patch:
403 * completer.py: Applied Matthew Neeley's patch:
398 Dynamic attributes from trait_names and _getAttributeNames are added
404 Dynamic attributes from trait_names and _getAttributeNames are added
399 to the list of tab completions, but when this happens, the attribute
405 to the list of tab completions, but when this happens, the attribute
400 list is turned into a set, so the attributes are unordered when
406 list is turned into a set, so the attributes are unordered when
401 printed, which makes it hard to find the right completion. This patch
407 printed, which makes it hard to find the right completion. This patch
402 turns this set back into a list and sort it.
408 turns this set back into a list and sort it.
403
409
404 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
410 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
405
411
406 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
412 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
407 classes in various inspector functions.
413 classes in various inspector functions.
408
414
409 2007-06-28 Ville Vainio <vivainio@gmail.com>
415 2007-06-28 Ville Vainio <vivainio@gmail.com>
410
416
411 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
417 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
412 Implement "shadow" namespace, and callable aliases that reside there.
418 Implement "shadow" namespace, and callable aliases that reside there.
413 Use them by:
419 Use them by:
414
420
415 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
421 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
416
422
417 foo hello world
423 foo hello world
418 (gets translated to:)
424 (gets translated to:)
419 _sh.foo(r"""hello world""")
425 _sh.foo(r"""hello world""")
420
426
421 In practice, this kind of alias can take the role of a magic function
427 In practice, this kind of alias can take the role of a magic function
422
428
423 * New generic inspect_object, called on obj? and obj??
429 * New generic inspect_object, called on obj? and obj??
424
430
425 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
431 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
426
432
427 * IPython/ultraTB.py (findsource): fix a problem with
433 * IPython/ultraTB.py (findsource): fix a problem with
428 inspect.getfile that can cause crashes during traceback construction.
434 inspect.getfile that can cause crashes during traceback construction.
429
435
430 2007-06-14 Ville Vainio <vivainio@gmail.com>
436 2007-06-14 Ville Vainio <vivainio@gmail.com>
431
437
432 * iplib.py (handle_auto): Try to use ascii for printing "--->"
438 * iplib.py (handle_auto): Try to use ascii for printing "--->"
433 autocall rewrite indication, becausesometimes unicode fails to print
439 autocall rewrite indication, becausesometimes unicode fails to print
434 properly (and you get ' - - - '). Use plain uncoloured ---> for
440 properly (and you get ' - - - '). Use plain uncoloured ---> for
435 unicode.
441 unicode.
436
442
437 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
443 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
438
444
439 . pickleshare 'hash' commands (hget, hset, hcompress,
445 . pickleshare 'hash' commands (hget, hset, hcompress,
440 hdict) for efficient shadow history storage.
446 hdict) for efficient shadow history storage.
441
447
442 2007-06-13 Ville Vainio <vivainio@gmail.com>
448 2007-06-13 Ville Vainio <vivainio@gmail.com>
443
449
444 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
450 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
445 Added kw arg 'interactive', tell whether vars should be visible
451 Added kw arg 'interactive', tell whether vars should be visible
446 with %whos.
452 with %whos.
447
453
448 2007-06-11 Ville Vainio <vivainio@gmail.com>
454 2007-06-11 Ville Vainio <vivainio@gmail.com>
449
455
450 * pspersistence.py, Magic.py, iplib.py: directory history now saved
456 * pspersistence.py, Magic.py, iplib.py: directory history now saved
451 to db
457 to db
452
458
453 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
459 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
454 Also, it exits IPython immediately after evaluating the command (just like
460 Also, it exits IPython immediately after evaluating the command (just like
455 std python)
461 std python)
456
462
457 2007-06-05 Walter Doerwald <walter@livinglogic.de>
463 2007-06-05 Walter Doerwald <walter@livinglogic.de>
458
464
459 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
465 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
460 Python string and captures the output. (Idea and original patch by
466 Python string and captures the output. (Idea and original patch by
461 Stefan van der Walt)
467 Stefan van der Walt)
462
468
463 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
469 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
464
470
465 * IPython/ultraTB.py (VerboseTB.text): update printing of
471 * IPython/ultraTB.py (VerboseTB.text): update printing of
466 exception types for Python 2.5 (now all exceptions in the stdlib
472 exception types for Python 2.5 (now all exceptions in the stdlib
467 are new-style classes).
473 are new-style classes).
468
474
469 2007-05-31 Walter Doerwald <walter@livinglogic.de>
475 2007-05-31 Walter Doerwald <walter@livinglogic.de>
470
476
471 * IPython/Extensions/igrid.py: Add new commands refresh and
477 * IPython/Extensions/igrid.py: Add new commands refresh and
472 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
478 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
473 the iterator once (refresh) or after every x seconds (refresh_timer).
479 the iterator once (refresh) or after every x seconds (refresh_timer).
474 Add a working implementation of "searchexpression", where the text
480 Add a working implementation of "searchexpression", where the text
475 entered is not the text to search for, but an expression that must
481 entered is not the text to search for, but an expression that must
476 be true. Added display of shortcuts to the menu. Added commands "pickinput"
482 be true. Added display of shortcuts to the menu. Added commands "pickinput"
477 and "pickinputattr" that put the object or attribute under the cursor
483 and "pickinputattr" that put the object or attribute under the cursor
478 in the input line. Split the statusbar to be able to display the currently
484 in the input line. Split the statusbar to be able to display the currently
479 active refresh interval. (Patch by Nik Tautenhahn)
485 active refresh interval. (Patch by Nik Tautenhahn)
480
486
481 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
487 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
482
488
483 * fixing set_term_title to use ctypes as default
489 * fixing set_term_title to use ctypes as default
484
490
485 * fixing set_term_title fallback to work when curent dir
491 * fixing set_term_title fallback to work when curent dir
486 is on a windows network share
492 is on a windows network share
487
493
488 2007-05-28 Ville Vainio <vivainio@gmail.com>
494 2007-05-28 Ville Vainio <vivainio@gmail.com>
489
495
490 * %cpaste: strip + with > from left (diffs).
496 * %cpaste: strip + with > from left (diffs).
491
497
492 * iplib.py: Fix crash when readline not installed
498 * iplib.py: Fix crash when readline not installed
493
499
494 2007-05-26 Ville Vainio <vivainio@gmail.com>
500 2007-05-26 Ville Vainio <vivainio@gmail.com>
495
501
496 * generics.py: intruduce easy to extend result_display generic
502 * generics.py: intruduce easy to extend result_display generic
497 function (using simplegeneric.py).
503 function (using simplegeneric.py).
498
504
499 * Fixed the append functionality of %set.
505 * Fixed the append functionality of %set.
500
506
501 2007-05-25 Ville Vainio <vivainio@gmail.com>
507 2007-05-25 Ville Vainio <vivainio@gmail.com>
502
508
503 * New magic: %rep (fetch / run old commands from history)
509 * New magic: %rep (fetch / run old commands from history)
504
510
505 * New extension: mglob (%mglob magic), for powerful glob / find /filter
511 * New extension: mglob (%mglob magic), for powerful glob / find /filter
506 like functionality
512 like functionality
507
513
508 % maghistory.py: %hist -g PATTERM greps the history for pattern
514 % maghistory.py: %hist -g PATTERM greps the history for pattern
509
515
510 2007-05-24 Walter Doerwald <walter@livinglogic.de>
516 2007-05-24 Walter Doerwald <walter@livinglogic.de>
511
517
512 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
518 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
513 browse the IPython input history
519 browse the IPython input history
514
520
515 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
521 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
516 (mapped to "i") can be used to put the object under the curser in the input
522 (mapped to "i") can be used to put the object under the curser in the input
517 line. pickinputattr (mapped to "I") does the same for the attribute under
523 line. pickinputattr (mapped to "I") does the same for the attribute under
518 the cursor.
524 the cursor.
519
525
520 2007-05-24 Ville Vainio <vivainio@gmail.com>
526 2007-05-24 Ville Vainio <vivainio@gmail.com>
521
527
522 * Grand magic cleansing (changeset [2380]):
528 * Grand magic cleansing (changeset [2380]):
523
529
524 * Introduce ipy_legacy.py where the following magics were
530 * Introduce ipy_legacy.py where the following magics were
525 moved:
531 moved:
526
532
527 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
533 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
528
534
529 If you need them, either use default profile or "import ipy_legacy"
535 If you need them, either use default profile or "import ipy_legacy"
530 in your ipy_user_conf.py
536 in your ipy_user_conf.py
531
537
532 * Move sh and scipy profile to Extensions from UserConfig. this implies
538 * Move sh and scipy profile to Extensions from UserConfig. this implies
533 you should not edit them, but you don't need to run %upgrade when
539 you should not edit them, but you don't need to run %upgrade when
534 upgrading IPython anymore.
540 upgrading IPython anymore.
535
541
536 * %hist/%history now operates in "raw" mode by default. To get the old
542 * %hist/%history now operates in "raw" mode by default. To get the old
537 behaviour, run '%hist -n' (native mode).
543 behaviour, run '%hist -n' (native mode).
538
544
539 * split ipy_stock_completers.py to ipy_stock_completers.py and
545 * split ipy_stock_completers.py to ipy_stock_completers.py and
540 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
546 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
541 installed as default.
547 installed as default.
542
548
543 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
549 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
544 handling.
550 handling.
545
551
546 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
552 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
547 input if readline is available.
553 input if readline is available.
548
554
549 2007-05-23 Ville Vainio <vivainio@gmail.com>
555 2007-05-23 Ville Vainio <vivainio@gmail.com>
550
556
551 * macro.py: %store uses __getstate__ properly
557 * macro.py: %store uses __getstate__ properly
552
558
553 * exesetup.py: added new setup script for creating
559 * exesetup.py: added new setup script for creating
554 standalone IPython executables with py2exe (i.e.
560 standalone IPython executables with py2exe (i.e.
555 no python installation required).
561 no python installation required).
556
562
557 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
563 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
558 its place.
564 its place.
559
565
560 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
566 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
561
567
562 2007-05-21 Ville Vainio <vivainio@gmail.com>
568 2007-05-21 Ville Vainio <vivainio@gmail.com>
563
569
564 * platutil_win32.py (set_term_title): handle
570 * platutil_win32.py (set_term_title): handle
565 failure of 'title' system call properly.
571 failure of 'title' system call properly.
566
572
567 2007-05-17 Walter Doerwald <walter@livinglogic.de>
573 2007-05-17 Walter Doerwald <walter@livinglogic.de>
568
574
569 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
575 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
570 (Bug detected by Paul Mueller).
576 (Bug detected by Paul Mueller).
571
577
572 2007-05-16 Ville Vainio <vivainio@gmail.com>
578 2007-05-16 Ville Vainio <vivainio@gmail.com>
573
579
574 * ipy_profile_sci.py, ipython_win_post_install.py: Create
580 * ipy_profile_sci.py, ipython_win_post_install.py: Create
575 new "sci" profile, effectively a modern version of the old
581 new "sci" profile, effectively a modern version of the old
576 "scipy" profile (which is now slated for deprecation).
582 "scipy" profile (which is now slated for deprecation).
577
583
578 2007-05-15 Ville Vainio <vivainio@gmail.com>
584 2007-05-15 Ville Vainio <vivainio@gmail.com>
579
585
580 * pycolorize.py, pycolor.1: Paul Mueller's patches that
586 * pycolorize.py, pycolor.1: Paul Mueller's patches that
581 make pycolorize read input from stdin when run without arguments.
587 make pycolorize read input from stdin when run without arguments.
582
588
583 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
589 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
584
590
585 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
591 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
586 it in sh profile (instead of ipy_system_conf.py).
592 it in sh profile (instead of ipy_system_conf.py).
587
593
588 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
594 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
589 aliases are now lower case on windows (MyCommand.exe => mycommand).
595 aliases are now lower case on windows (MyCommand.exe => mycommand).
590
596
591 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
597 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
592 Macros are now callable objects that inherit from ipapi.IPyAutocall,
598 Macros are now callable objects that inherit from ipapi.IPyAutocall,
593 i.e. get autocalled regardless of system autocall setting.
599 i.e. get autocalled regardless of system autocall setting.
594
600
595 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
601 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
596
602
597 * IPython/rlineimpl.py: check for clear_history in readline and
603 * IPython/rlineimpl.py: check for clear_history in readline and
598 make it a dummy no-op if not available. This function isn't
604 make it a dummy no-op if not available. This function isn't
599 guaranteed to be in the API and appeared in Python 2.4, so we need
605 guaranteed to be in the API and appeared in Python 2.4, so we need
600 to check it ourselves. Also, clean up this file quite a bit.
606 to check it ourselves. Also, clean up this file quite a bit.
601
607
602 * ipython.1: update man page and full manual with information
608 * ipython.1: update man page and full manual with information
603 about threads (remove outdated warning). Closes #151.
609 about threads (remove outdated warning). Closes #151.
604
610
605 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
611 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
606
612
607 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
613 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
608 in trunk (note that this made it into the 0.8.1 release already,
614 in trunk (note that this made it into the 0.8.1 release already,
609 but the changelogs didn't get coordinated). Many thanks to Gael
615 but the changelogs didn't get coordinated). Many thanks to Gael
610 Varoquaux <gael.varoquaux-AT-normalesup.org>
616 Varoquaux <gael.varoquaux-AT-normalesup.org>
611
617
612 2007-05-09 *** Released version 0.8.1
618 2007-05-09 *** Released version 0.8.1
613
619
614 2007-05-10 Walter Doerwald <walter@livinglogic.de>
620 2007-05-10 Walter Doerwald <walter@livinglogic.de>
615
621
616 * IPython/Extensions/igrid.py: Incorporate html help into
622 * IPython/Extensions/igrid.py: Incorporate html help into
617 the module, so we don't have to search for the file.
623 the module, so we don't have to search for the file.
618
624
619 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
625 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
620
626
621 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
627 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
622
628
623 2007-04-30 Ville Vainio <vivainio@gmail.com>
629 2007-04-30 Ville Vainio <vivainio@gmail.com>
624
630
625 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
631 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
626 user has illegal (non-ascii) home directory name
632 user has illegal (non-ascii) home directory name
627
633
628 2007-04-27 Ville Vainio <vivainio@gmail.com>
634 2007-04-27 Ville Vainio <vivainio@gmail.com>
629
635
630 * platutils_win32.py: implement set_term_title for windows
636 * platutils_win32.py: implement set_term_title for windows
631
637
632 * Update version number
638 * Update version number
633
639
634 * ipy_profile_sh.py: more informative prompt (2 dir levels)
640 * ipy_profile_sh.py: more informative prompt (2 dir levels)
635
641
636 2007-04-26 Walter Doerwald <walter@livinglogic.de>
642 2007-04-26 Walter Doerwald <walter@livinglogic.de>
637
643
638 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
644 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
639 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
645 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
640 bug discovered by Ville).
646 bug discovered by Ville).
641
647
642 2007-04-26 Ville Vainio <vivainio@gmail.com>
648 2007-04-26 Ville Vainio <vivainio@gmail.com>
643
649
644 * Extensions/ipy_completers.py: Olivier's module completer now
650 * Extensions/ipy_completers.py: Olivier's module completer now
645 saves the list of root modules if it takes > 4 secs on the first run.
651 saves the list of root modules if it takes > 4 secs on the first run.
646
652
647 * Magic.py (%rehashx): %rehashx now clears the completer cache
653 * Magic.py (%rehashx): %rehashx now clears the completer cache
648
654
649
655
650 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
656 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
651
657
652 * ipython.el: fix incorrect color scheme, reported by Stefan.
658 * ipython.el: fix incorrect color scheme, reported by Stefan.
653 Closes #149.
659 Closes #149.
654
660
655 * IPython/PyColorize.py (Parser.format2): fix state-handling
661 * IPython/PyColorize.py (Parser.format2): fix state-handling
656 logic. I still don't like how that code handles state, but at
662 logic. I still don't like how that code handles state, but at
657 least now it should be correct, if inelegant. Closes #146.
663 least now it should be correct, if inelegant. Closes #146.
658
664
659 2007-04-25 Ville Vainio <vivainio@gmail.com>
665 2007-04-25 Ville Vainio <vivainio@gmail.com>
660
666
661 * Extensions/ipy_which.py: added extension for %which magic, works
667 * Extensions/ipy_which.py: added extension for %which magic, works
662 a lot like unix 'which' but also finds and expands aliases, and
668 a lot like unix 'which' but also finds and expands aliases, and
663 allows wildcards.
669 allows wildcards.
664
670
665 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
671 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
666 as opposed to returning nothing.
672 as opposed to returning nothing.
667
673
668 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
674 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
669 ipy_stock_completers on default profile, do import on sh profile.
675 ipy_stock_completers on default profile, do import on sh profile.
670
676
671 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
677 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
672
678
673 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
679 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
674 like ipython.py foo.py which raised a IndexError.
680 like ipython.py foo.py which raised a IndexError.
675
681
676 2007-04-21 Ville Vainio <vivainio@gmail.com>
682 2007-04-21 Ville Vainio <vivainio@gmail.com>
677
683
678 * Extensions/ipy_extutil.py: added extension to manage other ipython
684 * Extensions/ipy_extutil.py: added extension to manage other ipython
679 extensions. Now only supports 'ls' == list extensions.
685 extensions. Now only supports 'ls' == list extensions.
680
686
681 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
687 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
682
688
683 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
689 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
684 would prevent use of the exception system outside of a running
690 would prevent use of the exception system outside of a running
685 IPython instance.
691 IPython instance.
686
692
687 2007-04-20 Ville Vainio <vivainio@gmail.com>
693 2007-04-20 Ville Vainio <vivainio@gmail.com>
688
694
689 * Extensions/ipy_render.py: added extension for easy
695 * Extensions/ipy_render.py: added extension for easy
690 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
696 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
691 'Iptl' template notation,
697 'Iptl' template notation,
692
698
693 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
699 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
694 safer & faster 'import' completer.
700 safer & faster 'import' completer.
695
701
696 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
702 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
697 and _ip.defalias(name, command).
703 and _ip.defalias(name, command).
698
704
699 * Extensions/ipy_exportdb.py: New extension for exporting all the
705 * Extensions/ipy_exportdb.py: New extension for exporting all the
700 %store'd data in a portable format (normal ipapi calls like
706 %store'd data in a portable format (normal ipapi calls like
701 defmacro() etc.)
707 defmacro() etc.)
702
708
703 2007-04-19 Ville Vainio <vivainio@gmail.com>
709 2007-04-19 Ville Vainio <vivainio@gmail.com>
704
710
705 * upgrade_dir.py: skip junk files like *.pyc
711 * upgrade_dir.py: skip junk files like *.pyc
706
712
707 * Release.py: version number to 0.8.1
713 * Release.py: version number to 0.8.1
708
714
709 2007-04-18 Ville Vainio <vivainio@gmail.com>
715 2007-04-18 Ville Vainio <vivainio@gmail.com>
710
716
711 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
717 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
712 and later on win32.
718 and later on win32.
713
719
714 2007-04-16 Ville Vainio <vivainio@gmail.com>
720 2007-04-16 Ville Vainio <vivainio@gmail.com>
715
721
716 * iplib.py (showtraceback): Do not crash when running w/o readline.
722 * iplib.py (showtraceback): Do not crash when running w/o readline.
717
723
718 2007-04-12 Walter Doerwald <walter@livinglogic.de>
724 2007-04-12 Walter Doerwald <walter@livinglogic.de>
719
725
720 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
726 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
721 sorted (case sensitive with files and dirs mixed).
727 sorted (case sensitive with files and dirs mixed).
722
728
723 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
729 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
724
730
725 * IPython/Release.py (version): Open trunk for 0.8.1 development.
731 * IPython/Release.py (version): Open trunk for 0.8.1 development.
726
732
727 2007-04-10 *** Released version 0.8.0
733 2007-04-10 *** Released version 0.8.0
728
734
729 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
735 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
730
736
731 * Tag 0.8.0 for release.
737 * Tag 0.8.0 for release.
732
738
733 * IPython/iplib.py (reloadhist): add API function to cleanly
739 * IPython/iplib.py (reloadhist): add API function to cleanly
734 reload the readline history, which was growing inappropriately on
740 reload the readline history, which was growing inappropriately on
735 every %run call.
741 every %run call.
736
742
737 * win32_manual_post_install.py (run): apply last part of Nicolas
743 * win32_manual_post_install.py (run): apply last part of Nicolas
738 Pernetty's patch (I'd accidentally applied it in a different
744 Pernetty's patch (I'd accidentally applied it in a different
739 directory and this particular file didn't get patched).
745 directory and this particular file didn't get patched).
740
746
741 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
747 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
742
748
743 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
749 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
744 find the main thread id and use the proper API call. Thanks to
750 find the main thread id and use the proper API call. Thanks to
745 Stefan for the fix.
751 Stefan for the fix.
746
752
747 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
753 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
748 unit tests to reflect fixed ticket #52, and add more tests sent by
754 unit tests to reflect fixed ticket #52, and add more tests sent by
749 him.
755 him.
750
756
751 * IPython/iplib.py (raw_input): restore the readline completer
757 * IPython/iplib.py (raw_input): restore the readline completer
752 state on every input, in case third-party code messed it up.
758 state on every input, in case third-party code messed it up.
753 (_prefilter): revert recent addition of early-escape checks which
759 (_prefilter): revert recent addition of early-escape checks which
754 prevent many valid alias calls from working.
760 prevent many valid alias calls from working.
755
761
756 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
762 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
757 flag for sigint handler so we don't run a full signal() call on
763 flag for sigint handler so we don't run a full signal() call on
758 each runcode access.
764 each runcode access.
759
765
760 * IPython/Magic.py (magic_whos): small improvement to diagnostic
766 * IPython/Magic.py (magic_whos): small improvement to diagnostic
761 message.
767 message.
762
768
763 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
769 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
764
770
765 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
771 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
766 asynchronous exceptions working, i.e., Ctrl-C can actually
772 asynchronous exceptions working, i.e., Ctrl-C can actually
767 interrupt long-running code in the multithreaded shells.
773 interrupt long-running code in the multithreaded shells.
768
774
769 This is using Tomer Filiba's great ctypes-based trick:
775 This is using Tomer Filiba's great ctypes-based trick:
770 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
776 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
771 this in the past, but hadn't been able to make it work before. So
777 this in the past, but hadn't been able to make it work before. So
772 far it looks like it's actually running, but this needs more
778 far it looks like it's actually running, but this needs more
773 testing. If it really works, I'll be *very* happy, and we'll owe
779 testing. If it really works, I'll be *very* happy, and we'll owe
774 a huge thank you to Tomer. My current implementation is ugly,
780 a huge thank you to Tomer. My current implementation is ugly,
775 hackish and uses nasty globals, but I don't want to try and clean
781 hackish and uses nasty globals, but I don't want to try and clean
776 anything up until we know if it actually works.
782 anything up until we know if it actually works.
777
783
778 NOTE: this feature needs ctypes to work. ctypes is included in
784 NOTE: this feature needs ctypes to work. ctypes is included in
779 Python2.5, but 2.4 users will need to manually install it. This
785 Python2.5, but 2.4 users will need to manually install it. This
780 feature makes multi-threaded shells so much more usable that it's
786 feature makes multi-threaded shells so much more usable that it's
781 a minor price to pay (ctypes is very easy to install, already a
787 a minor price to pay (ctypes is very easy to install, already a
782 requirement for win32 and available in major linux distros).
788 requirement for win32 and available in major linux distros).
783
789
784 2007-04-04 Ville Vainio <vivainio@gmail.com>
790 2007-04-04 Ville Vainio <vivainio@gmail.com>
785
791
786 * Extensions/ipy_completers.py, ipy_stock_completers.py:
792 * Extensions/ipy_completers.py, ipy_stock_completers.py:
787 Moved implementations of 'bundled' completers to ipy_completers.py,
793 Moved implementations of 'bundled' completers to ipy_completers.py,
788 they are only enabled in ipy_stock_completers.py.
794 they are only enabled in ipy_stock_completers.py.
789
795
790 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
796 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
791
797
792 * IPython/PyColorize.py (Parser.format2): Fix identation of
798 * IPython/PyColorize.py (Parser.format2): Fix identation of
793 colorzied output and return early if color scheme is NoColor, to
799 colorzied output and return early if color scheme is NoColor, to
794 avoid unnecessary and expensive tokenization. Closes #131.
800 avoid unnecessary and expensive tokenization. Closes #131.
795
801
796 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
802 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
797
803
798 * IPython/Debugger.py: disable the use of pydb version 1.17. It
804 * IPython/Debugger.py: disable the use of pydb version 1.17. It
799 has a critical bug (a missing import that makes post-mortem not
805 has a critical bug (a missing import that makes post-mortem not
800 work at all). Unfortunately as of this time, this is the version
806 work at all). Unfortunately as of this time, this is the version
801 shipped with Ubuntu Edgy, so quite a few people have this one. I
807 shipped with Ubuntu Edgy, so quite a few people have this one. I
802 hope Edgy will update to a more recent package.
808 hope Edgy will update to a more recent package.
803
809
804 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
810 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
805
811
806 * IPython/iplib.py (_prefilter): close #52, second part of a patch
812 * IPython/iplib.py (_prefilter): close #52, second part of a patch
807 set by Stefan (only the first part had been applied before).
813 set by Stefan (only the first part had been applied before).
808
814
809 * IPython/Extensions/ipy_stock_completers.py (module_completer):
815 * IPython/Extensions/ipy_stock_completers.py (module_completer):
810 remove usage of the dangerous pkgutil.walk_packages(). See
816 remove usage of the dangerous pkgutil.walk_packages(). See
811 details in comments left in the code.
817 details in comments left in the code.
812
818
813 * IPython/Magic.py (magic_whos): add support for numpy arrays
819 * IPython/Magic.py (magic_whos): add support for numpy arrays
814 similar to what we had for Numeric.
820 similar to what we had for Numeric.
815
821
816 * IPython/completer.py (IPCompleter.complete): extend the
822 * IPython/completer.py (IPCompleter.complete): extend the
817 complete() call API to support completions by other mechanisms
823 complete() call API to support completions by other mechanisms
818 than readline. Closes #109.
824 than readline. Closes #109.
819
825
820 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
826 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
821 protect against a bug in Python's execfile(). Closes #123.
827 protect against a bug in Python's execfile(). Closes #123.
822
828
823 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
829 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
824
830
825 * IPython/iplib.py (split_user_input): ensure that when splitting
831 * IPython/iplib.py (split_user_input): ensure that when splitting
826 user input, the part that can be treated as a python name is pure
832 user input, the part that can be treated as a python name is pure
827 ascii (Python identifiers MUST be pure ascii). Part of the
833 ascii (Python identifiers MUST be pure ascii). Part of the
828 ongoing Unicode support work.
834 ongoing Unicode support work.
829
835
830 * IPython/Prompts.py (prompt_specials_color): Add \N for the
836 * IPython/Prompts.py (prompt_specials_color): Add \N for the
831 actual prompt number, without any coloring. This allows users to
837 actual prompt number, without any coloring. This allows users to
832 produce numbered prompts with their own colors. Added after a
838 produce numbered prompts with their own colors. Added after a
833 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
839 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
834
840
835 2007-03-31 Walter Doerwald <walter@livinglogic.de>
841 2007-03-31 Walter Doerwald <walter@livinglogic.de>
836
842
837 * IPython/Extensions/igrid.py: Map the return key
843 * IPython/Extensions/igrid.py: Map the return key
838 to enter() and shift-return to enterattr().
844 to enter() and shift-return to enterattr().
839
845
840 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
846 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
841
847
842 * IPython/Magic.py (magic_psearch): add unicode support by
848 * IPython/Magic.py (magic_psearch): add unicode support by
843 encoding to ascii the input, since this routine also only deals
849 encoding to ascii the input, since this routine also only deals
844 with valid Python names. Fixes a bug reported by Stefan.
850 with valid Python names. Fixes a bug reported by Stefan.
845
851
846 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
852 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
847
853
848 * IPython/Magic.py (_inspect): convert unicode input into ascii
854 * IPython/Magic.py (_inspect): convert unicode input into ascii
849 before trying to evaluate it as a Python identifier. This fixes a
855 before trying to evaluate it as a Python identifier. This fixes a
850 problem that the new unicode support had introduced when analyzing
856 problem that the new unicode support had introduced when analyzing
851 long definition lines for functions.
857 long definition lines for functions.
852
858
853 2007-03-24 Walter Doerwald <walter@livinglogic.de>
859 2007-03-24 Walter Doerwald <walter@livinglogic.de>
854
860
855 * IPython/Extensions/igrid.py: Fix picking. Using
861 * IPython/Extensions/igrid.py: Fix picking. Using
856 igrid with wxPython 2.6 and -wthread should work now.
862 igrid with wxPython 2.6 and -wthread should work now.
857 igrid.display() simply tries to create a frame without
863 igrid.display() simply tries to create a frame without
858 an application. Only if this fails an application is created.
864 an application. Only if this fails an application is created.
859
865
860 2007-03-23 Walter Doerwald <walter@livinglogic.de>
866 2007-03-23 Walter Doerwald <walter@livinglogic.de>
861
867
862 * IPython/Extensions/path.py: Updated to version 2.2.
868 * IPython/Extensions/path.py: Updated to version 2.2.
863
869
864 2007-03-23 Ville Vainio <vivainio@gmail.com>
870 2007-03-23 Ville Vainio <vivainio@gmail.com>
865
871
866 * iplib.py: recursive alias expansion now works better, so that
872 * iplib.py: recursive alias expansion now works better, so that
867 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
873 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
868 doesn't trip up the process, if 'd' has been aliased to 'ls'.
874 doesn't trip up the process, if 'd' has been aliased to 'ls'.
869
875
870 * Extensions/ipy_gnuglobal.py added, provides %global magic
876 * Extensions/ipy_gnuglobal.py added, provides %global magic
871 for users of http://www.gnu.org/software/global
877 for users of http://www.gnu.org/software/global
872
878
873 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
879 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
874 Closes #52. Patch by Stefan van der Walt.
880 Closes #52. Patch by Stefan van der Walt.
875
881
876 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
882 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
877
883
878 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
884 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
879 respect the __file__ attribute when using %run. Thanks to a bug
885 respect the __file__ attribute when using %run. Thanks to a bug
880 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
886 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
881
887
882 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
888 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
883
889
884 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
890 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
885 input. Patch sent by Stefan.
891 input. Patch sent by Stefan.
886
892
887 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
893 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
888 * IPython/Extensions/ipy_stock_completer.py
894 * IPython/Extensions/ipy_stock_completer.py
889 shlex_split, fix bug in shlex_split. len function
895 shlex_split, fix bug in shlex_split. len function
890 call was missing an if statement. Caused shlex_split to
896 call was missing an if statement. Caused shlex_split to
891 sometimes return "" as last element.
897 sometimes return "" as last element.
892
898
893 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
899 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
894
900
895 * IPython/completer.py
901 * IPython/completer.py
896 (IPCompleter.file_matches.single_dir_expand): fix a problem
902 (IPCompleter.file_matches.single_dir_expand): fix a problem
897 reported by Stefan, where directories containign a single subdir
903 reported by Stefan, where directories containign a single subdir
898 would be completed too early.
904 would be completed too early.
899
905
900 * IPython/Shell.py (_load_pylab): Make the execution of 'from
906 * IPython/Shell.py (_load_pylab): Make the execution of 'from
901 pylab import *' when -pylab is given be optional. A new flag,
907 pylab import *' when -pylab is given be optional. A new flag,
902 pylab_import_all controls this behavior, the default is True for
908 pylab_import_all controls this behavior, the default is True for
903 backwards compatibility.
909 backwards compatibility.
904
910
905 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
911 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
906 modified) R. Bernstein's patch for fully syntax highlighted
912 modified) R. Bernstein's patch for fully syntax highlighted
907 tracebacks. The functionality is also available under ultraTB for
913 tracebacks. The functionality is also available under ultraTB for
908 non-ipython users (someone using ultraTB but outside an ipython
914 non-ipython users (someone using ultraTB but outside an ipython
909 session). They can select the color scheme by setting the
915 session). They can select the color scheme by setting the
910 module-level global DEFAULT_SCHEME. The highlight functionality
916 module-level global DEFAULT_SCHEME. The highlight functionality
911 also works when debugging.
917 also works when debugging.
912
918
913 * IPython/genutils.py (IOStream.close): small patch by
919 * IPython/genutils.py (IOStream.close): small patch by
914 R. Bernstein for improved pydb support.
920 R. Bernstein for improved pydb support.
915
921
916 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
922 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
917 DaveS <davls@telus.net> to improve support of debugging under
923 DaveS <davls@telus.net> to improve support of debugging under
918 NTEmacs, including improved pydb behavior.
924 NTEmacs, including improved pydb behavior.
919
925
920 * IPython/Magic.py (magic_prun): Fix saving of profile info for
926 * IPython/Magic.py (magic_prun): Fix saving of profile info for
921 Python 2.5, where the stats object API changed a little. Thanks
927 Python 2.5, where the stats object API changed a little. Thanks
922 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
928 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
923
929
924 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
930 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
925 Pernetty's patch to improve support for (X)Emacs under Win32.
931 Pernetty's patch to improve support for (X)Emacs under Win32.
926
932
927 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
933 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
928
934
929 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
935 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
930 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
936 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
931 a report by Nik Tautenhahn.
937 a report by Nik Tautenhahn.
932
938
933 2007-03-16 Walter Doerwald <walter@livinglogic.de>
939 2007-03-16 Walter Doerwald <walter@livinglogic.de>
934
940
935 * setup.py: Add the igrid help files to the list of data files
941 * setup.py: Add the igrid help files to the list of data files
936 to be installed alongside igrid.
942 to be installed alongside igrid.
937 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
943 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
938 Show the input object of the igrid browser as the window tile.
944 Show the input object of the igrid browser as the window tile.
939 Show the object the cursor is on in the statusbar.
945 Show the object the cursor is on in the statusbar.
940
946
941 2007-03-15 Ville Vainio <vivainio@gmail.com>
947 2007-03-15 Ville Vainio <vivainio@gmail.com>
942
948
943 * Extensions/ipy_stock_completers.py: Fixed exception
949 * Extensions/ipy_stock_completers.py: Fixed exception
944 on mismatching quotes in %run completer. Patch by
950 on mismatching quotes in %run completer. Patch by
945 Jorgen Stenarson. Closes #127.
951 Jorgen Stenarson. Closes #127.
946
952
947 2007-03-14 Ville Vainio <vivainio@gmail.com>
953 2007-03-14 Ville Vainio <vivainio@gmail.com>
948
954
949 * Extensions/ext_rehashdir.py: Do not do auto_alias
955 * Extensions/ext_rehashdir.py: Do not do auto_alias
950 in %rehashdir, it clobbers %store'd aliases.
956 in %rehashdir, it clobbers %store'd aliases.
951
957
952 * UserConfig/ipy_profile_sh.py: envpersist.py extension
958 * UserConfig/ipy_profile_sh.py: envpersist.py extension
953 (beefed up %env) imported for sh profile.
959 (beefed up %env) imported for sh profile.
954
960
955 2007-03-10 Walter Doerwald <walter@livinglogic.de>
961 2007-03-10 Walter Doerwald <walter@livinglogic.de>
956
962
957 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
963 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
958 as the default browser.
964 as the default browser.
959 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
965 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
960 As igrid displays all attributes it ever encounters, fetch() (which has
966 As igrid displays all attributes it ever encounters, fetch() (which has
961 been renamed to _fetch()) doesn't have to recalculate the display attributes
967 been renamed to _fetch()) doesn't have to recalculate the display attributes
962 every time a new item is fetched. This should speed up scrolling.
968 every time a new item is fetched. This should speed up scrolling.
963
969
964 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
970 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
965
971
966 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
972 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
967 Schmolck's recently reported tab-completion bug (my previous one
973 Schmolck's recently reported tab-completion bug (my previous one
968 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
974 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
969
975
970 2007-03-09 Walter Doerwald <walter@livinglogic.de>
976 2007-03-09 Walter Doerwald <walter@livinglogic.de>
971
977
972 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
978 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
973 Close help window if exiting igrid.
979 Close help window if exiting igrid.
974
980
975 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
981 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
976
982
977 * IPython/Extensions/ipy_defaults.py: Check if readline is available
983 * IPython/Extensions/ipy_defaults.py: Check if readline is available
978 before calling functions from readline.
984 before calling functions from readline.
979
985
980 2007-03-02 Walter Doerwald <walter@livinglogic.de>
986 2007-03-02 Walter Doerwald <walter@livinglogic.de>
981
987
982 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
988 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
983 igrid is a wxPython-based display object for ipipe. If your system has
989 igrid is a wxPython-based display object for ipipe. If your system has
984 wx installed igrid will be the default display. Without wx ipipe falls
990 wx installed igrid will be the default display. Without wx ipipe falls
985 back to ibrowse (which needs curses). If no curses is installed ipipe
991 back to ibrowse (which needs curses). If no curses is installed ipipe
986 falls back to idump.
992 falls back to idump.
987
993
988 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
994 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
989
995
990 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
996 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
991 my changes from yesterday, they introduced bugs. Will reactivate
997 my changes from yesterday, they introduced bugs. Will reactivate
992 once I get a correct solution, which will be much easier thanks to
998 once I get a correct solution, which will be much easier thanks to
993 Dan Milstein's new prefilter test suite.
999 Dan Milstein's new prefilter test suite.
994
1000
995 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1001 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
996
1002
997 * IPython/iplib.py (split_user_input): fix input splitting so we
1003 * IPython/iplib.py (split_user_input): fix input splitting so we
998 don't attempt attribute accesses on things that can't possibly be
1004 don't attempt attribute accesses on things that can't possibly be
999 valid Python attributes. After a bug report by Alex Schmolck.
1005 valid Python attributes. After a bug report by Alex Schmolck.
1000 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1006 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1001 %magic with explicit % prefix.
1007 %magic with explicit % prefix.
1002
1008
1003 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1009 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1004
1010
1005 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1011 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1006 avoid a DeprecationWarning from GTK.
1012 avoid a DeprecationWarning from GTK.
1007
1013
1008 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1014 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1009
1015
1010 * IPython/genutils.py (clock): I modified clock() to return total
1016 * IPython/genutils.py (clock): I modified clock() to return total
1011 time, user+system. This is a more commonly needed metric. I also
1017 time, user+system. This is a more commonly needed metric. I also
1012 introduced the new clocku/clocks to get only user/system time if
1018 introduced the new clocku/clocks to get only user/system time if
1013 one wants those instead.
1019 one wants those instead.
1014
1020
1015 ***WARNING: API CHANGE*** clock() used to return only user time,
1021 ***WARNING: API CHANGE*** clock() used to return only user time,
1016 so if you want exactly the same results as before, use clocku
1022 so if you want exactly the same results as before, use clocku
1017 instead.
1023 instead.
1018
1024
1019 2007-02-22 Ville Vainio <vivainio@gmail.com>
1025 2007-02-22 Ville Vainio <vivainio@gmail.com>
1020
1026
1021 * IPython/Extensions/ipy_p4.py: Extension for improved
1027 * IPython/Extensions/ipy_p4.py: Extension for improved
1022 p4 (perforce version control system) experience.
1028 p4 (perforce version control system) experience.
1023 Adds %p4 magic with p4 command completion and
1029 Adds %p4 magic with p4 command completion and
1024 automatic -G argument (marshall output as python dict)
1030 automatic -G argument (marshall output as python dict)
1025
1031
1026 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1032 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1027
1033
1028 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1034 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1029 stop marks.
1035 stop marks.
1030 (ClearingMixin): a simple mixin to easily make a Demo class clear
1036 (ClearingMixin): a simple mixin to easily make a Demo class clear
1031 the screen in between blocks and have empty marquees. The
1037 the screen in between blocks and have empty marquees. The
1032 ClearDemo and ClearIPDemo classes that use it are included.
1038 ClearDemo and ClearIPDemo classes that use it are included.
1033
1039
1034 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1040 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1035
1041
1036 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1042 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1037 protect against exceptions at Python shutdown time. Patch
1043 protect against exceptions at Python shutdown time. Patch
1038 sumbmitted to upstream.
1044 sumbmitted to upstream.
1039
1045
1040 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1046 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1041
1047
1042 * IPython/Extensions/ibrowse.py: If entering the first object level
1048 * IPython/Extensions/ibrowse.py: If entering the first object level
1043 (i.e. the object for which the browser has been started) fails,
1049 (i.e. the object for which the browser has been started) fails,
1044 now the error is raised directly (aborting the browser) instead of
1050 now the error is raised directly (aborting the browser) instead of
1045 running into an empty levels list later.
1051 running into an empty levels list later.
1046
1052
1047 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1053 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1048
1054
1049 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1055 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1050 for the noitem object.
1056 for the noitem object.
1051
1057
1052 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1058 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1053
1059
1054 * IPython/completer.py (Completer.attr_matches): Fix small
1060 * IPython/completer.py (Completer.attr_matches): Fix small
1055 tab-completion bug with Enthought Traits objects with units.
1061 tab-completion bug with Enthought Traits objects with units.
1056 Thanks to a bug report by Tom Denniston
1062 Thanks to a bug report by Tom Denniston
1057 <tom.denniston-AT-alum.dartmouth.org>.
1063 <tom.denniston-AT-alum.dartmouth.org>.
1058
1064
1059 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1065 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1060
1066
1061 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1067 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1062 bug where only .ipy or .py would be completed. Once the first
1068 bug where only .ipy or .py would be completed. Once the first
1063 argument to %run has been given, all completions are valid because
1069 argument to %run has been given, all completions are valid because
1064 they are the arguments to the script, which may well be non-python
1070 they are the arguments to the script, which may well be non-python
1065 filenames.
1071 filenames.
1066
1072
1067 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1073 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1068 to irunner to allow it to correctly support real doctesting of
1074 to irunner to allow it to correctly support real doctesting of
1069 out-of-process ipython code.
1075 out-of-process ipython code.
1070
1076
1071 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1077 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1072 title an option (-noterm_title) because it completely breaks
1078 title an option (-noterm_title) because it completely breaks
1073 doctesting.
1079 doctesting.
1074
1080
1075 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1081 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1076
1082
1077 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1083 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1078
1084
1079 * IPython/irunner.py (main): fix small bug where extensions were
1085 * IPython/irunner.py (main): fix small bug where extensions were
1080 not being correctly recognized.
1086 not being correctly recognized.
1081
1087
1082 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1088 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1083
1089
1084 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1090 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1085 a string containing a single line yields the string itself as the
1091 a string containing a single line yields the string itself as the
1086 only item.
1092 only item.
1087
1093
1088 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1094 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1089 object if it's the same as the one on the last level (This avoids
1095 object if it's the same as the one on the last level (This avoids
1090 infinite recursion for one line strings).
1096 infinite recursion for one line strings).
1091
1097
1092 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1098 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1093
1099
1094 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1100 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1095 all output streams before printing tracebacks. This ensures that
1101 all output streams before printing tracebacks. This ensures that
1096 user output doesn't end up interleaved with traceback output.
1102 user output doesn't end up interleaved with traceback output.
1097
1103
1098 2007-01-10 Ville Vainio <vivainio@gmail.com>
1104 2007-01-10 Ville Vainio <vivainio@gmail.com>
1099
1105
1100 * Extensions/envpersist.py: Turbocharged %env that remembers
1106 * Extensions/envpersist.py: Turbocharged %env that remembers
1101 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1107 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1102 "%env VISUAL=jed".
1108 "%env VISUAL=jed".
1103
1109
1104 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1110 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1105
1111
1106 * IPython/iplib.py (showtraceback): ensure that we correctly call
1112 * IPython/iplib.py (showtraceback): ensure that we correctly call
1107 custom handlers in all cases (some with pdb were slipping through,
1113 custom handlers in all cases (some with pdb were slipping through,
1108 but I'm not exactly sure why).
1114 but I'm not exactly sure why).
1109
1115
1110 * IPython/Debugger.py (Tracer.__init__): added new class to
1116 * IPython/Debugger.py (Tracer.__init__): added new class to
1111 support set_trace-like usage of IPython's enhanced debugger.
1117 support set_trace-like usage of IPython's enhanced debugger.
1112
1118
1113 2006-12-24 Ville Vainio <vivainio@gmail.com>
1119 2006-12-24 Ville Vainio <vivainio@gmail.com>
1114
1120
1115 * ipmaker.py: more informative message when ipy_user_conf
1121 * ipmaker.py: more informative message when ipy_user_conf
1116 import fails (suggest running %upgrade).
1122 import fails (suggest running %upgrade).
1117
1123
1118 * tools/run_ipy_in_profiler.py: Utility to see where
1124 * tools/run_ipy_in_profiler.py: Utility to see where
1119 the time during IPython startup is spent.
1125 the time during IPython startup is spent.
1120
1126
1121 2006-12-20 Ville Vainio <vivainio@gmail.com>
1127 2006-12-20 Ville Vainio <vivainio@gmail.com>
1122
1128
1123 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1129 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1124
1130
1125 * ipapi.py: Add new ipapi method, expand_alias.
1131 * ipapi.py: Add new ipapi method, expand_alias.
1126
1132
1127 * Release.py: Bump up version to 0.7.4.svn
1133 * Release.py: Bump up version to 0.7.4.svn
1128
1134
1129 2006-12-17 Ville Vainio <vivainio@gmail.com>
1135 2006-12-17 Ville Vainio <vivainio@gmail.com>
1130
1136
1131 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1137 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1132 to work properly on posix too
1138 to work properly on posix too
1133
1139
1134 * Release.py: Update revnum (version is still just 0.7.3).
1140 * Release.py: Update revnum (version is still just 0.7.3).
1135
1141
1136 2006-12-15 Ville Vainio <vivainio@gmail.com>
1142 2006-12-15 Ville Vainio <vivainio@gmail.com>
1137
1143
1138 * scripts/ipython_win_post_install: create ipython.py in
1144 * scripts/ipython_win_post_install: create ipython.py in
1139 prefix + "/scripts".
1145 prefix + "/scripts".
1140
1146
1141 * Release.py: Update version to 0.7.3.
1147 * Release.py: Update version to 0.7.3.
1142
1148
1143 2006-12-14 Ville Vainio <vivainio@gmail.com>
1149 2006-12-14 Ville Vainio <vivainio@gmail.com>
1144
1150
1145 * scripts/ipython_win_post_install: Overwrite old shortcuts
1151 * scripts/ipython_win_post_install: Overwrite old shortcuts
1146 if they already exist
1152 if they already exist
1147
1153
1148 * Release.py: release 0.7.3rc2
1154 * Release.py: release 0.7.3rc2
1149
1155
1150 2006-12-13 Ville Vainio <vivainio@gmail.com>
1156 2006-12-13 Ville Vainio <vivainio@gmail.com>
1151
1157
1152 * Branch and update Release.py for 0.7.3rc1
1158 * Branch and update Release.py for 0.7.3rc1
1153
1159
1154 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1160 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1155
1161
1156 * IPython/Shell.py (IPShellWX): update for current WX naming
1162 * IPython/Shell.py (IPShellWX): update for current WX naming
1157 conventions, to avoid a deprecation warning with current WX
1163 conventions, to avoid a deprecation warning with current WX
1158 versions. Thanks to a report by Danny Shevitz.
1164 versions. Thanks to a report by Danny Shevitz.
1159
1165
1160 2006-12-12 Ville Vainio <vivainio@gmail.com>
1166 2006-12-12 Ville Vainio <vivainio@gmail.com>
1161
1167
1162 * ipmaker.py: apply david cournapeau's patch to make
1168 * ipmaker.py: apply david cournapeau's patch to make
1163 import_some work properly even when ipythonrc does
1169 import_some work properly even when ipythonrc does
1164 import_some on empty list (it was an old bug!).
1170 import_some on empty list (it was an old bug!).
1165
1171
1166 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1172 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1167 Add deprecation note to ipythonrc and a url to wiki
1173 Add deprecation note to ipythonrc and a url to wiki
1168 in ipy_user_conf.py
1174 in ipy_user_conf.py
1169
1175
1170
1176
1171 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1177 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1172 as if it was typed on IPython command prompt, i.e.
1178 as if it was typed on IPython command prompt, i.e.
1173 as IPython script.
1179 as IPython script.
1174
1180
1175 * example-magic.py, magic_grepl.py: remove outdated examples
1181 * example-magic.py, magic_grepl.py: remove outdated examples
1176
1182
1177 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1183 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1178
1184
1179 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1185 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1180 is called before any exception has occurred.
1186 is called before any exception has occurred.
1181
1187
1182 2006-12-08 Ville Vainio <vivainio@gmail.com>
1188 2006-12-08 Ville Vainio <vivainio@gmail.com>
1183
1189
1184 * Extensions/ipy_stock_completers.py: fix cd completer
1190 * Extensions/ipy_stock_completers.py: fix cd completer
1185 to translate /'s to \'s again.
1191 to translate /'s to \'s again.
1186
1192
1187 * completer.py: prevent traceback on file completions w/
1193 * completer.py: prevent traceback on file completions w/
1188 backslash.
1194 backslash.
1189
1195
1190 * Release.py: Update release number to 0.7.3b3 for release
1196 * Release.py: Update release number to 0.7.3b3 for release
1191
1197
1192 2006-12-07 Ville Vainio <vivainio@gmail.com>
1198 2006-12-07 Ville Vainio <vivainio@gmail.com>
1193
1199
1194 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1200 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1195 while executing external code. Provides more shell-like behaviour
1201 while executing external code. Provides more shell-like behaviour
1196 and overall better response to ctrl + C / ctrl + break.
1202 and overall better response to ctrl + C / ctrl + break.
1197
1203
1198 * tools/make_tarball.py: new script to create tarball straight from svn
1204 * tools/make_tarball.py: new script to create tarball straight from svn
1199 (setup.py sdist doesn't work on win32).
1205 (setup.py sdist doesn't work on win32).
1200
1206
1201 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1207 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1202 on dirnames with spaces and use the default completer instead.
1208 on dirnames with spaces and use the default completer instead.
1203
1209
1204 * Revision.py: Change version to 0.7.3b2 for release.
1210 * Revision.py: Change version to 0.7.3b2 for release.
1205
1211
1206 2006-12-05 Ville Vainio <vivainio@gmail.com>
1212 2006-12-05 Ville Vainio <vivainio@gmail.com>
1207
1213
1208 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1214 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1209 pydb patch 4 (rm debug printing, py 2.5 checking)
1215 pydb patch 4 (rm debug printing, py 2.5 checking)
1210
1216
1211 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1217 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1212 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1218 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1213 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1219 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1214 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1220 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1215 object the cursor was on before the refresh. The command "markrange" is
1221 object the cursor was on before the refresh. The command "markrange" is
1216 mapped to "%" now.
1222 mapped to "%" now.
1217 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1223 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1218
1224
1219 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1225 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1220
1226
1221 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1227 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1222 interactive debugger on the last traceback, without having to call
1228 interactive debugger on the last traceback, without having to call
1223 %pdb and rerun your code. Made minor changes in various modules,
1229 %pdb and rerun your code. Made minor changes in various modules,
1224 should automatically recognize pydb if available.
1230 should automatically recognize pydb if available.
1225
1231
1226 2006-11-28 Ville Vainio <vivainio@gmail.com>
1232 2006-11-28 Ville Vainio <vivainio@gmail.com>
1227
1233
1228 * completer.py: If the text start with !, show file completions
1234 * completer.py: If the text start with !, show file completions
1229 properly. This helps when trying to complete command name
1235 properly. This helps when trying to complete command name
1230 for shell escapes.
1236 for shell escapes.
1231
1237
1232 2006-11-27 Ville Vainio <vivainio@gmail.com>
1238 2006-11-27 Ville Vainio <vivainio@gmail.com>
1233
1239
1234 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1240 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1235 der Walt. Clean up svn and hg completers by using a common
1241 der Walt. Clean up svn and hg completers by using a common
1236 vcs_completer.
1242 vcs_completer.
1237
1243
1238 2006-11-26 Ville Vainio <vivainio@gmail.com>
1244 2006-11-26 Ville Vainio <vivainio@gmail.com>
1239
1245
1240 * Remove ipconfig and %config; you should use _ip.options structure
1246 * Remove ipconfig and %config; you should use _ip.options structure
1241 directly instead!
1247 directly instead!
1242
1248
1243 * genutils.py: add wrap_deprecated function for deprecating callables
1249 * genutils.py: add wrap_deprecated function for deprecating callables
1244
1250
1245 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1251 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1246 _ip.system instead. ipalias is redundant.
1252 _ip.system instead. ipalias is redundant.
1247
1253
1248 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1254 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1249 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1255 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1250 explicit.
1256 explicit.
1251
1257
1252 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1258 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1253 completer. Try it by entering 'hg ' and pressing tab.
1259 completer. Try it by entering 'hg ' and pressing tab.
1254
1260
1255 * macro.py: Give Macro a useful __repr__ method
1261 * macro.py: Give Macro a useful __repr__ method
1256
1262
1257 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1263 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1258
1264
1259 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1265 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1260 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1266 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1261 we don't get a duplicate ipipe module, where registration of the xrepr
1267 we don't get a duplicate ipipe module, where registration of the xrepr
1262 implementation for Text is useless.
1268 implementation for Text is useless.
1263
1269
1264 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1270 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1265
1271
1266 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1272 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1267
1273
1268 2006-11-24 Ville Vainio <vivainio@gmail.com>
1274 2006-11-24 Ville Vainio <vivainio@gmail.com>
1269
1275
1270 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1276 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1271 try to use "cProfile" instead of the slower pure python
1277 try to use "cProfile" instead of the slower pure python
1272 "profile"
1278 "profile"
1273
1279
1274 2006-11-23 Ville Vainio <vivainio@gmail.com>
1280 2006-11-23 Ville Vainio <vivainio@gmail.com>
1275
1281
1276 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1282 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1277 Qt+IPython+Designer link in documentation.
1283 Qt+IPython+Designer link in documentation.
1278
1284
1279 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1285 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1280 correct Pdb object to %pydb.
1286 correct Pdb object to %pydb.
1281
1287
1282
1288
1283 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1289 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1284 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1290 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1285 generic xrepr(), otherwise the list implementation would kick in.
1291 generic xrepr(), otherwise the list implementation would kick in.
1286
1292
1287 2006-11-21 Ville Vainio <vivainio@gmail.com>
1293 2006-11-21 Ville Vainio <vivainio@gmail.com>
1288
1294
1289 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1295 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1290 with one from UserConfig.
1296 with one from UserConfig.
1291
1297
1292 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1298 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1293 it was missing which broke the sh profile.
1299 it was missing which broke the sh profile.
1294
1300
1295 * completer.py: file completer now uses explicit '/' instead
1301 * completer.py: file completer now uses explicit '/' instead
1296 of os.path.join, expansion of 'foo' was broken on win32
1302 of os.path.join, expansion of 'foo' was broken on win32
1297 if there was one directory with name 'foobar'.
1303 if there was one directory with name 'foobar'.
1298
1304
1299 * A bunch of patches from Kirill Smelkov:
1305 * A bunch of patches from Kirill Smelkov:
1300
1306
1301 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1307 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1302
1308
1303 * [patch 7/9] Implement %page -r (page in raw mode) -
1309 * [patch 7/9] Implement %page -r (page in raw mode) -
1304
1310
1305 * [patch 5/9] ScientificPython webpage has moved
1311 * [patch 5/9] ScientificPython webpage has moved
1306
1312
1307 * [patch 4/9] The manual mentions %ds, should be %dhist
1313 * [patch 4/9] The manual mentions %ds, should be %dhist
1308
1314
1309 * [patch 3/9] Kill old bits from %prun doc.
1315 * [patch 3/9] Kill old bits from %prun doc.
1310
1316
1311 * [patch 1/9] Fix typos here and there.
1317 * [patch 1/9] Fix typos here and there.
1312
1318
1313 2006-11-08 Ville Vainio <vivainio@gmail.com>
1319 2006-11-08 Ville Vainio <vivainio@gmail.com>
1314
1320
1315 * completer.py (attr_matches): catch all exceptions raised
1321 * completer.py (attr_matches): catch all exceptions raised
1316 by eval of expr with dots.
1322 by eval of expr with dots.
1317
1323
1318 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1324 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1319
1325
1320 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1326 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1321 input if it starts with whitespace. This allows you to paste
1327 input if it starts with whitespace. This allows you to paste
1322 indented input from any editor without manually having to type in
1328 indented input from any editor without manually having to type in
1323 the 'if 1:', which is convenient when working interactively.
1329 the 'if 1:', which is convenient when working interactively.
1324 Slightly modifed version of a patch by Bo Peng
1330 Slightly modifed version of a patch by Bo Peng
1325 <bpeng-AT-rice.edu>.
1331 <bpeng-AT-rice.edu>.
1326
1332
1327 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1333 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1328
1334
1329 * IPython/irunner.py (main): modified irunner so it automatically
1335 * IPython/irunner.py (main): modified irunner so it automatically
1330 recognizes the right runner to use based on the extension (.py for
1336 recognizes the right runner to use based on the extension (.py for
1331 python, .ipy for ipython and .sage for sage).
1337 python, .ipy for ipython and .sage for sage).
1332
1338
1333 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1339 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1334 visible in ipapi as ip.config(), to programatically control the
1340 visible in ipapi as ip.config(), to programatically control the
1335 internal rc object. There's an accompanying %config magic for
1341 internal rc object. There's an accompanying %config magic for
1336 interactive use, which has been enhanced to match the
1342 interactive use, which has been enhanced to match the
1337 funtionality in ipconfig.
1343 funtionality in ipconfig.
1338
1344
1339 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1345 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1340 so it's not just a toggle, it now takes an argument. Add support
1346 so it's not just a toggle, it now takes an argument. Add support
1341 for a customizable header when making system calls, as the new
1347 for a customizable header when making system calls, as the new
1342 system_header variable in the ipythonrc file.
1348 system_header variable in the ipythonrc file.
1343
1349
1344 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1350 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1345
1351
1346 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1352 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1347 generic functions (using Philip J. Eby's simplegeneric package).
1353 generic functions (using Philip J. Eby's simplegeneric package).
1348 This makes it possible to customize the display of third-party classes
1354 This makes it possible to customize the display of third-party classes
1349 without having to monkeypatch them. xiter() no longer supports a mode
1355 without having to monkeypatch them. xiter() no longer supports a mode
1350 argument and the XMode class has been removed. The same functionality can
1356 argument and the XMode class has been removed. The same functionality can
1351 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1357 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1352 One consequence of the switch to generic functions is that xrepr() and
1358 One consequence of the switch to generic functions is that xrepr() and
1353 xattrs() implementation must define the default value for the mode
1359 xattrs() implementation must define the default value for the mode
1354 argument themselves and xattrs() implementations must return real
1360 argument themselves and xattrs() implementations must return real
1355 descriptors.
1361 descriptors.
1356
1362
1357 * IPython/external: This new subpackage will contain all third-party
1363 * IPython/external: This new subpackage will contain all third-party
1358 packages that are bundled with IPython. (The first one is simplegeneric).
1364 packages that are bundled with IPython. (The first one is simplegeneric).
1359
1365
1360 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1366 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1361 directory which as been dropped in r1703.
1367 directory which as been dropped in r1703.
1362
1368
1363 * IPython/Extensions/ipipe.py (iless): Fixed.
1369 * IPython/Extensions/ipipe.py (iless): Fixed.
1364
1370
1365 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1371 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1366
1372
1367 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1373 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1368
1374
1369 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1375 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1370 handling in variable expansion so that shells and magics recognize
1376 handling in variable expansion so that shells and magics recognize
1371 function local scopes correctly. Bug reported by Brian.
1377 function local scopes correctly. Bug reported by Brian.
1372
1378
1373 * scripts/ipython: remove the very first entry in sys.path which
1379 * scripts/ipython: remove the very first entry in sys.path which
1374 Python auto-inserts for scripts, so that sys.path under IPython is
1380 Python auto-inserts for scripts, so that sys.path under IPython is
1375 as similar as possible to that under plain Python.
1381 as similar as possible to that under plain Python.
1376
1382
1377 * IPython/completer.py (IPCompleter.file_matches): Fix
1383 * IPython/completer.py (IPCompleter.file_matches): Fix
1378 tab-completion so that quotes are not closed unless the completion
1384 tab-completion so that quotes are not closed unless the completion
1379 is unambiguous. After a request by Stefan. Minor cleanups in
1385 is unambiguous. After a request by Stefan. Minor cleanups in
1380 ipy_stock_completers.
1386 ipy_stock_completers.
1381
1387
1382 2006-11-02 Ville Vainio <vivainio@gmail.com>
1388 2006-11-02 Ville Vainio <vivainio@gmail.com>
1383
1389
1384 * ipy_stock_completers.py: Add %run and %cd completers.
1390 * ipy_stock_completers.py: Add %run and %cd completers.
1385
1391
1386 * completer.py: Try running custom completer for both
1392 * completer.py: Try running custom completer for both
1387 "foo" and "%foo" if the command is just "foo". Ignore case
1393 "foo" and "%foo" if the command is just "foo". Ignore case
1388 when filtering possible completions.
1394 when filtering possible completions.
1389
1395
1390 * UserConfig/ipy_user_conf.py: install stock completers as default
1396 * UserConfig/ipy_user_conf.py: install stock completers as default
1391
1397
1392 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1398 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1393 simplified readline history save / restore through a wrapper
1399 simplified readline history save / restore through a wrapper
1394 function
1400 function
1395
1401
1396
1402
1397 2006-10-31 Ville Vainio <vivainio@gmail.com>
1403 2006-10-31 Ville Vainio <vivainio@gmail.com>
1398
1404
1399 * strdispatch.py, completer.py, ipy_stock_completers.py:
1405 * strdispatch.py, completer.py, ipy_stock_completers.py:
1400 Allow str_key ("command") in completer hooks. Implement
1406 Allow str_key ("command") in completer hooks. Implement
1401 trivial completer for 'import' (stdlib modules only). Rename
1407 trivial completer for 'import' (stdlib modules only). Rename
1402 ipy_linux_package_managers.py to ipy_stock_completers.py.
1408 ipy_linux_package_managers.py to ipy_stock_completers.py.
1403 SVN completer.
1409 SVN completer.
1404
1410
1405 * Extensions/ledit.py: %magic line editor for easily and
1411 * Extensions/ledit.py: %magic line editor for easily and
1406 incrementally manipulating lists of strings. The magic command
1412 incrementally manipulating lists of strings. The magic command
1407 name is %led.
1413 name is %led.
1408
1414
1409 2006-10-30 Ville Vainio <vivainio@gmail.com>
1415 2006-10-30 Ville Vainio <vivainio@gmail.com>
1410
1416
1411 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1417 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1412 Bernsteins's patches for pydb integration.
1418 Bernsteins's patches for pydb integration.
1413 http://bashdb.sourceforge.net/pydb/
1419 http://bashdb.sourceforge.net/pydb/
1414
1420
1415 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1421 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1416 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1422 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1417 custom completer hook to allow the users to implement their own
1423 custom completer hook to allow the users to implement their own
1418 completers. See ipy_linux_package_managers.py for example. The
1424 completers. See ipy_linux_package_managers.py for example. The
1419 hook name is 'complete_command'.
1425 hook name is 'complete_command'.
1420
1426
1421 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1427 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1422
1428
1423 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1429 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1424 Numeric leftovers.
1430 Numeric leftovers.
1425
1431
1426 * ipython.el (py-execute-region): apply Stefan's patch to fix
1432 * ipython.el (py-execute-region): apply Stefan's patch to fix
1427 garbled results if the python shell hasn't been previously started.
1433 garbled results if the python shell hasn't been previously started.
1428
1434
1429 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1435 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1430 pretty generic function and useful for other things.
1436 pretty generic function and useful for other things.
1431
1437
1432 * IPython/OInspect.py (getsource): Add customizable source
1438 * IPython/OInspect.py (getsource): Add customizable source
1433 extractor. After a request/patch form W. Stein (SAGE).
1439 extractor. After a request/patch form W. Stein (SAGE).
1434
1440
1435 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1441 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1436 window size to a more reasonable value from what pexpect does,
1442 window size to a more reasonable value from what pexpect does,
1437 since their choice causes wrapping bugs with long input lines.
1443 since their choice causes wrapping bugs with long input lines.
1438
1444
1439 2006-10-28 Ville Vainio <vivainio@gmail.com>
1445 2006-10-28 Ville Vainio <vivainio@gmail.com>
1440
1446
1441 * Magic.py (%run): Save and restore the readline history from
1447 * Magic.py (%run): Save and restore the readline history from
1442 file around %run commands to prevent side effects from
1448 file around %run commands to prevent side effects from
1443 %runned programs that might use readline (e.g. pydb).
1449 %runned programs that might use readline (e.g. pydb).
1444
1450
1445 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1451 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1446 invoking the pydb enhanced debugger.
1452 invoking the pydb enhanced debugger.
1447
1453
1448 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1454 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1449
1455
1450 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1456 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1451 call the base class method and propagate the return value to
1457 call the base class method and propagate the return value to
1452 ifile. This is now done by path itself.
1458 ifile. This is now done by path itself.
1453
1459
1454 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1460 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1455
1461
1456 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1462 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1457 api: set_crash_handler(), to expose the ability to change the
1463 api: set_crash_handler(), to expose the ability to change the
1458 internal crash handler.
1464 internal crash handler.
1459
1465
1460 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1466 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1461 the various parameters of the crash handler so that apps using
1467 the various parameters of the crash handler so that apps using
1462 IPython as their engine can customize crash handling. Ipmlemented
1468 IPython as their engine can customize crash handling. Ipmlemented
1463 at the request of SAGE.
1469 at the request of SAGE.
1464
1470
1465 2006-10-14 Ville Vainio <vivainio@gmail.com>
1471 2006-10-14 Ville Vainio <vivainio@gmail.com>
1466
1472
1467 * Magic.py, ipython.el: applied first "safe" part of Rocky
1473 * Magic.py, ipython.el: applied first "safe" part of Rocky
1468 Bernstein's patch set for pydb integration.
1474 Bernstein's patch set for pydb integration.
1469
1475
1470 * Magic.py (%unalias, %alias): %store'd aliases can now be
1476 * Magic.py (%unalias, %alias): %store'd aliases can now be
1471 removed with '%unalias'. %alias w/o args now shows most
1477 removed with '%unalias'. %alias w/o args now shows most
1472 interesting (stored / manually defined) aliases last
1478 interesting (stored / manually defined) aliases last
1473 where they catch the eye w/o scrolling.
1479 where they catch the eye w/o scrolling.
1474
1480
1475 * Magic.py (%rehashx), ext_rehashdir.py: files with
1481 * Magic.py (%rehashx), ext_rehashdir.py: files with
1476 'py' extension are always considered executable, even
1482 'py' extension are always considered executable, even
1477 when not in PATHEXT environment variable.
1483 when not in PATHEXT environment variable.
1478
1484
1479 2006-10-12 Ville Vainio <vivainio@gmail.com>
1485 2006-10-12 Ville Vainio <vivainio@gmail.com>
1480
1486
1481 * jobctrl.py: Add new "jobctrl" extension for spawning background
1487 * jobctrl.py: Add new "jobctrl" extension for spawning background
1482 processes with "&find /". 'import jobctrl' to try it out. Requires
1488 processes with "&find /". 'import jobctrl' to try it out. Requires
1483 'subprocess' module, standard in python 2.4+.
1489 'subprocess' module, standard in python 2.4+.
1484
1490
1485 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1491 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1486 so if foo -> bar and bar -> baz, then foo -> baz.
1492 so if foo -> bar and bar -> baz, then foo -> baz.
1487
1493
1488 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1494 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1489
1495
1490 * IPython/Magic.py (Magic.parse_options): add a new posix option
1496 * IPython/Magic.py (Magic.parse_options): add a new posix option
1491 to allow parsing of input args in magics that doesn't strip quotes
1497 to allow parsing of input args in magics that doesn't strip quotes
1492 (if posix=False). This also closes %timeit bug reported by
1498 (if posix=False). This also closes %timeit bug reported by
1493 Stefan.
1499 Stefan.
1494
1500
1495 2006-10-03 Ville Vainio <vivainio@gmail.com>
1501 2006-10-03 Ville Vainio <vivainio@gmail.com>
1496
1502
1497 * iplib.py (raw_input, interact): Return ValueError catching for
1503 * iplib.py (raw_input, interact): Return ValueError catching for
1498 raw_input. Fixes infinite loop for sys.stdin.close() or
1504 raw_input. Fixes infinite loop for sys.stdin.close() or
1499 sys.stdout.close().
1505 sys.stdout.close().
1500
1506
1501 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1507 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1502
1508
1503 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1509 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1504 to help in handling doctests. irunner is now pretty useful for
1510 to help in handling doctests. irunner is now pretty useful for
1505 running standalone scripts and simulate a full interactive session
1511 running standalone scripts and simulate a full interactive session
1506 in a format that can be then pasted as a doctest.
1512 in a format that can be then pasted as a doctest.
1507
1513
1508 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1514 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1509 on top of the default (useless) ones. This also fixes the nasty
1515 on top of the default (useless) ones. This also fixes the nasty
1510 way in which 2.5's Quitter() exits (reverted [1785]).
1516 way in which 2.5's Quitter() exits (reverted [1785]).
1511
1517
1512 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1518 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1513 2.5.
1519 2.5.
1514
1520
1515 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1521 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1516 color scheme is updated as well when color scheme is changed
1522 color scheme is updated as well when color scheme is changed
1517 interactively.
1523 interactively.
1518
1524
1519 2006-09-27 Ville Vainio <vivainio@gmail.com>
1525 2006-09-27 Ville Vainio <vivainio@gmail.com>
1520
1526
1521 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1527 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1522 infinite loop and just exit. It's a hack, but will do for a while.
1528 infinite loop and just exit. It's a hack, but will do for a while.
1523
1529
1524 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1530 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1525
1531
1526 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1532 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1527 the constructor, this makes it possible to get a list of only directories
1533 the constructor, this makes it possible to get a list of only directories
1528 or only files.
1534 or only files.
1529
1535
1530 2006-08-12 Ville Vainio <vivainio@gmail.com>
1536 2006-08-12 Ville Vainio <vivainio@gmail.com>
1531
1537
1532 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1538 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1533 they broke unittest
1539 they broke unittest
1534
1540
1535 2006-08-11 Ville Vainio <vivainio@gmail.com>
1541 2006-08-11 Ville Vainio <vivainio@gmail.com>
1536
1542
1537 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1543 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1538 by resolving issue properly, i.e. by inheriting FakeModule
1544 by resolving issue properly, i.e. by inheriting FakeModule
1539 from types.ModuleType. Pickling ipython interactive data
1545 from types.ModuleType. Pickling ipython interactive data
1540 should still work as usual (testing appreciated).
1546 should still work as usual (testing appreciated).
1541
1547
1542 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1548 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1543
1549
1544 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1550 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1545 running under python 2.3 with code from 2.4 to fix a bug with
1551 running under python 2.3 with code from 2.4 to fix a bug with
1546 help(). Reported by the Debian maintainers, Norbert Tretkowski
1552 help(). Reported by the Debian maintainers, Norbert Tretkowski
1547 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1553 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1548 <afayolle-AT-debian.org>.
1554 <afayolle-AT-debian.org>.
1549
1555
1550 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1556 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1551
1557
1552 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1558 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1553 (which was displaying "quit" twice).
1559 (which was displaying "quit" twice).
1554
1560
1555 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1561 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1556
1562
1557 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1563 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1558 the mode argument).
1564 the mode argument).
1559
1565
1560 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1566 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1561
1567
1562 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1568 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1563 not running under IPython.
1569 not running under IPython.
1564
1570
1565 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1571 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1566 and make it iterable (iterating over the attribute itself). Add two new
1572 and make it iterable (iterating over the attribute itself). Add two new
1567 magic strings for __xattrs__(): If the string starts with "-", the attribute
1573 magic strings for __xattrs__(): If the string starts with "-", the attribute
1568 will not be displayed in ibrowse's detail view (but it can still be
1574 will not be displayed in ibrowse's detail view (but it can still be
1569 iterated over). This makes it possible to add attributes that are large
1575 iterated over). This makes it possible to add attributes that are large
1570 lists or generator methods to the detail view. Replace magic attribute names
1576 lists or generator methods to the detail view. Replace magic attribute names
1571 and _attrname() and _getattr() with "descriptors": For each type of magic
1577 and _attrname() and _getattr() with "descriptors": For each type of magic
1572 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1578 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1573 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1579 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1574 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1580 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1575 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1581 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1576 are still supported.
1582 are still supported.
1577
1583
1578 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1584 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1579 fails in ibrowse.fetch(), the exception object is added as the last item
1585 fails in ibrowse.fetch(), the exception object is added as the last item
1580 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1586 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1581 a generator throws an exception midway through execution.
1587 a generator throws an exception midway through execution.
1582
1588
1583 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1589 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1584 encoding into methods.
1590 encoding into methods.
1585
1591
1586 2006-07-26 Ville Vainio <vivainio@gmail.com>
1592 2006-07-26 Ville Vainio <vivainio@gmail.com>
1587
1593
1588 * iplib.py: history now stores multiline input as single
1594 * iplib.py: history now stores multiline input as single
1589 history entries. Patch by Jorgen Cederlof.
1595 history entries. Patch by Jorgen Cederlof.
1590
1596
1591 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1597 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1592
1598
1593 * IPython/Extensions/ibrowse.py: Make cursor visible over
1599 * IPython/Extensions/ibrowse.py: Make cursor visible over
1594 non existing attributes.
1600 non existing attributes.
1595
1601
1596 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1602 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1597
1603
1598 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1604 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1599 error output of the running command doesn't mess up the screen.
1605 error output of the running command doesn't mess up the screen.
1600
1606
1601 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1607 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1602
1608
1603 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1609 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1604 argument. This sorts the items themselves.
1610 argument. This sorts the items themselves.
1605
1611
1606 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1612 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1607
1613
1608 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1614 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1609 Compile expression strings into code objects. This should speed
1615 Compile expression strings into code objects. This should speed
1610 up ifilter and friends somewhat.
1616 up ifilter and friends somewhat.
1611
1617
1612 2006-07-08 Ville Vainio <vivainio@gmail.com>
1618 2006-07-08 Ville Vainio <vivainio@gmail.com>
1613
1619
1614 * Magic.py: %cpaste now strips > from the beginning of lines
1620 * Magic.py: %cpaste now strips > from the beginning of lines
1615 to ease pasting quoted code from emails. Contributed by
1621 to ease pasting quoted code from emails. Contributed by
1616 Stefan van der Walt.
1622 Stefan van der Walt.
1617
1623
1618 2006-06-29 Ville Vainio <vivainio@gmail.com>
1624 2006-06-29 Ville Vainio <vivainio@gmail.com>
1619
1625
1620 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1626 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1621 mode, patch contributed by Darren Dale. NEEDS TESTING!
1627 mode, patch contributed by Darren Dale. NEEDS TESTING!
1622
1628
1623 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1629 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1624
1630
1625 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1631 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1626 a blue background. Fix fetching new display rows when the browser
1632 a blue background. Fix fetching new display rows when the browser
1627 scrolls more than a screenful (e.g. by using the goto command).
1633 scrolls more than a screenful (e.g. by using the goto command).
1628
1634
1629 2006-06-27 Ville Vainio <vivainio@gmail.com>
1635 2006-06-27 Ville Vainio <vivainio@gmail.com>
1630
1636
1631 * Magic.py (_inspect, _ofind) Apply David Huard's
1637 * Magic.py (_inspect, _ofind) Apply David Huard's
1632 patch for displaying the correct docstring for 'property'
1638 patch for displaying the correct docstring for 'property'
1633 attributes.
1639 attributes.
1634
1640
1635 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1641 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1636
1642
1637 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1643 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1638 commands into the methods implementing them.
1644 commands into the methods implementing them.
1639
1645
1640 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1646 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1641
1647
1642 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1648 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1643 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1649 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1644 autoindent support was authored by Jin Liu.
1650 autoindent support was authored by Jin Liu.
1645
1651
1646 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1652 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1647
1653
1648 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1654 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1649 for keymaps with a custom class that simplifies handling.
1655 for keymaps with a custom class that simplifies handling.
1650
1656
1651 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1657 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1652
1658
1653 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1659 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1654 resizing. This requires Python 2.5 to work.
1660 resizing. This requires Python 2.5 to work.
1655
1661
1656 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1662 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1657
1663
1658 * IPython/Extensions/ibrowse.py: Add two new commands to
1664 * IPython/Extensions/ibrowse.py: Add two new commands to
1659 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1665 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1660 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1666 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1661 attributes again. Remapped the help command to "?". Display
1667 attributes again. Remapped the help command to "?". Display
1662 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1668 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1663 as keys for the "home" and "end" commands. Add three new commands
1669 as keys for the "home" and "end" commands. Add three new commands
1664 to the input mode for "find" and friends: "delend" (CTRL-K)
1670 to the input mode for "find" and friends: "delend" (CTRL-K)
1665 deletes to the end of line. "incsearchup" searches upwards in the
1671 deletes to the end of line. "incsearchup" searches upwards in the
1666 command history for an input that starts with the text before the cursor.
1672 command history for an input that starts with the text before the cursor.
1667 "incsearchdown" does the same downwards. Removed a bogus mapping of
1673 "incsearchdown" does the same downwards. Removed a bogus mapping of
1668 the x key to "delete".
1674 the x key to "delete".
1669
1675
1670 2006-06-15 Ville Vainio <vivainio@gmail.com>
1676 2006-06-15 Ville Vainio <vivainio@gmail.com>
1671
1677
1672 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1678 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1673 used to create prompts dynamically, instead of the "old" way of
1679 used to create prompts dynamically, instead of the "old" way of
1674 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1680 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1675 way still works (it's invoked by the default hook), of course.
1681 way still works (it's invoked by the default hook), of course.
1676
1682
1677 * Prompts.py: added generate_output_prompt hook for altering output
1683 * Prompts.py: added generate_output_prompt hook for altering output
1678 prompt
1684 prompt
1679
1685
1680 * Release.py: Changed version string to 0.7.3.svn.
1686 * Release.py: Changed version string to 0.7.3.svn.
1681
1687
1682 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1688 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1683
1689
1684 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1690 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1685 the call to fetch() always tries to fetch enough data for at least one
1691 the call to fetch() always tries to fetch enough data for at least one
1686 full screen. This makes it possible to simply call moveto(0,0,True) in
1692 full screen. This makes it possible to simply call moveto(0,0,True) in
1687 the constructor. Fix typos and removed the obsolete goto attribute.
1693 the constructor. Fix typos and removed the obsolete goto attribute.
1688
1694
1689 2006-06-12 Ville Vainio <vivainio@gmail.com>
1695 2006-06-12 Ville Vainio <vivainio@gmail.com>
1690
1696
1691 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1697 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1692 allowing $variable interpolation within multiline statements,
1698 allowing $variable interpolation within multiline statements,
1693 though so far only with "sh" profile for a testing period.
1699 though so far only with "sh" profile for a testing period.
1694 The patch also enables splitting long commands with \ but it
1700 The patch also enables splitting long commands with \ but it
1695 doesn't work properly yet.
1701 doesn't work properly yet.
1696
1702
1697 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1703 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1698
1704
1699 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1705 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1700 input history and the position of the cursor in the input history for
1706 input history and the position of the cursor in the input history for
1701 the find, findbackwards and goto command.
1707 the find, findbackwards and goto command.
1702
1708
1703 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1709 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1704
1710
1705 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1711 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1706 implements the basic functionality of browser commands that require
1712 implements the basic functionality of browser commands that require
1707 input. Reimplement the goto, find and findbackwards commands as
1713 input. Reimplement the goto, find and findbackwards commands as
1708 subclasses of _CommandInput. Add an input history and keymaps to those
1714 subclasses of _CommandInput. Add an input history and keymaps to those
1709 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1715 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1710 execute commands.
1716 execute commands.
1711
1717
1712 2006-06-07 Ville Vainio <vivainio@gmail.com>
1718 2006-06-07 Ville Vainio <vivainio@gmail.com>
1713
1719
1714 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1720 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1715 running the batch files instead of leaving the session open.
1721 running the batch files instead of leaving the session open.
1716
1722
1717 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1723 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1718
1724
1719 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1725 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1720 the original fix was incomplete. Patch submitted by W. Maier.
1726 the original fix was incomplete. Patch submitted by W. Maier.
1721
1727
1722 2006-06-07 Ville Vainio <vivainio@gmail.com>
1728 2006-06-07 Ville Vainio <vivainio@gmail.com>
1723
1729
1724 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1730 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1725 Confirmation prompts can be supressed by 'quiet' option.
1731 Confirmation prompts can be supressed by 'quiet' option.
1726 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1732 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1727
1733
1728 2006-06-06 *** Released version 0.7.2
1734 2006-06-06 *** Released version 0.7.2
1729
1735
1730 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1736 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1731
1737
1732 * IPython/Release.py (version): Made 0.7.2 final for release.
1738 * IPython/Release.py (version): Made 0.7.2 final for release.
1733 Repo tagged and release cut.
1739 Repo tagged and release cut.
1734
1740
1735 2006-06-05 Ville Vainio <vivainio@gmail.com>
1741 2006-06-05 Ville Vainio <vivainio@gmail.com>
1736
1742
1737 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1743 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1738 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1744 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1739
1745
1740 * upgrade_dir.py: try import 'path' module a bit harder
1746 * upgrade_dir.py: try import 'path' module a bit harder
1741 (for %upgrade)
1747 (for %upgrade)
1742
1748
1743 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1749 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1744
1750
1745 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1751 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1746 instead of looping 20 times.
1752 instead of looping 20 times.
1747
1753
1748 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1754 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1749 correctly at initialization time. Bug reported by Krishna Mohan
1755 correctly at initialization time. Bug reported by Krishna Mohan
1750 Gundu <gkmohan-AT-gmail.com> on the user list.
1756 Gundu <gkmohan-AT-gmail.com> on the user list.
1751
1757
1752 * IPython/Release.py (version): Mark 0.7.2 version to start
1758 * IPython/Release.py (version): Mark 0.7.2 version to start
1753 testing for release on 06/06.
1759 testing for release on 06/06.
1754
1760
1755 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1761 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1756
1762
1757 * scripts/irunner: thin script interface so users don't have to
1763 * scripts/irunner: thin script interface so users don't have to
1758 find the module and call it as an executable, since modules rarely
1764 find the module and call it as an executable, since modules rarely
1759 live in people's PATH.
1765 live in people's PATH.
1760
1766
1761 * IPython/irunner.py (InteractiveRunner.__init__): added
1767 * IPython/irunner.py (InteractiveRunner.__init__): added
1762 delaybeforesend attribute to control delays with newer versions of
1768 delaybeforesend attribute to control delays with newer versions of
1763 pexpect. Thanks to detailed help from pexpect's author, Noah
1769 pexpect. Thanks to detailed help from pexpect's author, Noah
1764 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1770 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1765 correctly (it works in NoColor mode).
1771 correctly (it works in NoColor mode).
1766
1772
1767 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1773 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1768 SAGE list, from improper log() calls.
1774 SAGE list, from improper log() calls.
1769
1775
1770 2006-05-31 Ville Vainio <vivainio@gmail.com>
1776 2006-05-31 Ville Vainio <vivainio@gmail.com>
1771
1777
1772 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1778 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1773 with args in parens to work correctly with dirs that have spaces.
1779 with args in parens to work correctly with dirs that have spaces.
1774
1780
1775 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1781 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1776
1782
1777 * IPython/Logger.py (Logger.logstart): add option to log raw input
1783 * IPython/Logger.py (Logger.logstart): add option to log raw input
1778 instead of the processed one. A -r flag was added to the
1784 instead of the processed one. A -r flag was added to the
1779 %logstart magic used for controlling logging.
1785 %logstart magic used for controlling logging.
1780
1786
1781 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1787 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1782
1788
1783 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1789 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1784 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1790 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1785 recognize the option. After a bug report by Will Maier. This
1791 recognize the option. After a bug report by Will Maier. This
1786 closes #64 (will do it after confirmation from W. Maier).
1792 closes #64 (will do it after confirmation from W. Maier).
1787
1793
1788 * IPython/irunner.py: New module to run scripts as if manually
1794 * IPython/irunner.py: New module to run scripts as if manually
1789 typed into an interactive environment, based on pexpect. After a
1795 typed into an interactive environment, based on pexpect. After a
1790 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1796 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1791 ipython-user list. Simple unittests in the tests/ directory.
1797 ipython-user list. Simple unittests in the tests/ directory.
1792
1798
1793 * tools/release: add Will Maier, OpenBSD port maintainer, to
1799 * tools/release: add Will Maier, OpenBSD port maintainer, to
1794 recepients list. We are now officially part of the OpenBSD ports:
1800 recepients list. We are now officially part of the OpenBSD ports:
1795 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1801 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1796 work.
1802 work.
1797
1803
1798 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1804 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1799
1805
1800 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1806 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1801 so that it doesn't break tkinter apps.
1807 so that it doesn't break tkinter apps.
1802
1808
1803 * IPython/iplib.py (_prefilter): fix bug where aliases would
1809 * IPython/iplib.py (_prefilter): fix bug where aliases would
1804 shadow variables when autocall was fully off. Reported by SAGE
1810 shadow variables when autocall was fully off. Reported by SAGE
1805 author William Stein.
1811 author William Stein.
1806
1812
1807 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1813 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1808 at what detail level strings are computed when foo? is requested.
1814 at what detail level strings are computed when foo? is requested.
1809 This allows users to ask for example that the string form of an
1815 This allows users to ask for example that the string form of an
1810 object is only computed when foo?? is called, or even never, by
1816 object is only computed when foo?? is called, or even never, by
1811 setting the object_info_string_level >= 2 in the configuration
1817 setting the object_info_string_level >= 2 in the configuration
1812 file. This new option has been added and documented. After a
1818 file. This new option has been added and documented. After a
1813 request by SAGE to be able to control the printing of very large
1819 request by SAGE to be able to control the printing of very large
1814 objects more easily.
1820 objects more easily.
1815
1821
1816 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1822 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1817
1823
1818 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1824 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1819 from sys.argv, to be 100% consistent with how Python itself works
1825 from sys.argv, to be 100% consistent with how Python itself works
1820 (as seen for example with python -i file.py). After a bug report
1826 (as seen for example with python -i file.py). After a bug report
1821 by Jeffrey Collins.
1827 by Jeffrey Collins.
1822
1828
1823 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1829 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1824 nasty bug which was preventing custom namespaces with -pylab,
1830 nasty bug which was preventing custom namespaces with -pylab,
1825 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1831 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1826 compatibility (long gone from mpl).
1832 compatibility (long gone from mpl).
1827
1833
1828 * IPython/ipapi.py (make_session): name change: create->make. We
1834 * IPython/ipapi.py (make_session): name change: create->make. We
1829 use make in other places (ipmaker,...), it's shorter and easier to
1835 use make in other places (ipmaker,...), it's shorter and easier to
1830 type and say, etc. I'm trying to clean things before 0.7.2 so
1836 type and say, etc. I'm trying to clean things before 0.7.2 so
1831 that I can keep things stable wrt to ipapi in the chainsaw branch.
1837 that I can keep things stable wrt to ipapi in the chainsaw branch.
1832
1838
1833 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1839 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1834 python-mode recognizes our debugger mode. Add support for
1840 python-mode recognizes our debugger mode. Add support for
1835 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1841 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1836 <m.liu.jin-AT-gmail.com> originally written by
1842 <m.liu.jin-AT-gmail.com> originally written by
1837 doxgen-AT-newsmth.net (with minor modifications for xemacs
1843 doxgen-AT-newsmth.net (with minor modifications for xemacs
1838 compatibility)
1844 compatibility)
1839
1845
1840 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1846 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1841 tracebacks when walking the stack so that the stack tracking system
1847 tracebacks when walking the stack so that the stack tracking system
1842 in emacs' python-mode can identify the frames correctly.
1848 in emacs' python-mode can identify the frames correctly.
1843
1849
1844 * IPython/ipmaker.py (make_IPython): make the internal (and
1850 * IPython/ipmaker.py (make_IPython): make the internal (and
1845 default config) autoedit_syntax value false by default. Too many
1851 default config) autoedit_syntax value false by default. Too many
1846 users have complained to me (both on and off-list) about problems
1852 users have complained to me (both on and off-list) about problems
1847 with this option being on by default, so I'm making it default to
1853 with this option being on by default, so I'm making it default to
1848 off. It can still be enabled by anyone via the usual mechanisms.
1854 off. It can still be enabled by anyone via the usual mechanisms.
1849
1855
1850 * IPython/completer.py (Completer.attr_matches): add support for
1856 * IPython/completer.py (Completer.attr_matches): add support for
1851 PyCrust-style _getAttributeNames magic method. Patch contributed
1857 PyCrust-style _getAttributeNames magic method. Patch contributed
1852 by <mscott-AT-goldenspud.com>. Closes #50.
1858 by <mscott-AT-goldenspud.com>. Closes #50.
1853
1859
1854 * IPython/iplib.py (InteractiveShell.__init__): remove the
1860 * IPython/iplib.py (InteractiveShell.__init__): remove the
1855 deletion of exit/quit from __builtin__, which can break
1861 deletion of exit/quit from __builtin__, which can break
1856 third-party tools like the Zope debugging console. The
1862 third-party tools like the Zope debugging console. The
1857 %exit/%quit magics remain. In general, it's probably a good idea
1863 %exit/%quit magics remain. In general, it's probably a good idea
1858 not to delete anything from __builtin__, since we never know what
1864 not to delete anything from __builtin__, since we never know what
1859 that will break. In any case, python now (for 2.5) will support
1865 that will break. In any case, python now (for 2.5) will support
1860 'real' exit/quit, so this issue is moot. Closes #55.
1866 'real' exit/quit, so this issue is moot. Closes #55.
1861
1867
1862 * IPython/genutils.py (with_obj): rename the 'with' function to
1868 * IPython/genutils.py (with_obj): rename the 'with' function to
1863 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1869 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1864 becomes a language keyword. Closes #53.
1870 becomes a language keyword. Closes #53.
1865
1871
1866 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1872 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1867 __file__ attribute to this so it fools more things into thinking
1873 __file__ attribute to this so it fools more things into thinking
1868 it is a real module. Closes #59.
1874 it is a real module. Closes #59.
1869
1875
1870 * IPython/Magic.py (magic_edit): add -n option to open the editor
1876 * IPython/Magic.py (magic_edit): add -n option to open the editor
1871 at a specific line number. After a patch by Stefan van der Walt.
1877 at a specific line number. After a patch by Stefan van der Walt.
1872
1878
1873 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1879 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1874
1880
1875 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1881 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1876 reason the file could not be opened. After automatic crash
1882 reason the file could not be opened. After automatic crash
1877 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1883 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1878 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1884 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1879 (_should_recompile): Don't fire editor if using %bg, since there
1885 (_should_recompile): Don't fire editor if using %bg, since there
1880 is no file in the first place. From the same report as above.
1886 is no file in the first place. From the same report as above.
1881 (raw_input): protect against faulty third-party prefilters. After
1887 (raw_input): protect against faulty third-party prefilters. After
1882 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1888 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1883 while running under SAGE.
1889 while running under SAGE.
1884
1890
1885 2006-05-23 Ville Vainio <vivainio@gmail.com>
1891 2006-05-23 Ville Vainio <vivainio@gmail.com>
1886
1892
1887 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1893 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1888 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1894 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1889 now returns None (again), unless dummy is specifically allowed by
1895 now returns None (again), unless dummy is specifically allowed by
1890 ipapi.get(allow_dummy=True).
1896 ipapi.get(allow_dummy=True).
1891
1897
1892 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1898 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1893
1899
1894 * IPython: remove all 2.2-compatibility objects and hacks from
1900 * IPython: remove all 2.2-compatibility objects and hacks from
1895 everywhere, since we only support 2.3 at this point. Docs
1901 everywhere, since we only support 2.3 at this point. Docs
1896 updated.
1902 updated.
1897
1903
1898 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1904 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1899 Anything requiring extra validation can be turned into a Python
1905 Anything requiring extra validation can be turned into a Python
1900 property in the future. I used a property for the db one b/c
1906 property in the future. I used a property for the db one b/c
1901 there was a nasty circularity problem with the initialization
1907 there was a nasty circularity problem with the initialization
1902 order, which right now I don't have time to clean up.
1908 order, which right now I don't have time to clean up.
1903
1909
1904 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1910 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1905 another locking bug reported by Jorgen. I'm not 100% sure though,
1911 another locking bug reported by Jorgen. I'm not 100% sure though,
1906 so more testing is needed...
1912 so more testing is needed...
1907
1913
1908 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1914 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1909
1915
1910 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1916 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1911 local variables from any routine in user code (typically executed
1917 local variables from any routine in user code (typically executed
1912 with %run) directly into the interactive namespace. Very useful
1918 with %run) directly into the interactive namespace. Very useful
1913 when doing complex debugging.
1919 when doing complex debugging.
1914 (IPythonNotRunning): Changed the default None object to a dummy
1920 (IPythonNotRunning): Changed the default None object to a dummy
1915 whose attributes can be queried as well as called without
1921 whose attributes can be queried as well as called without
1916 exploding, to ease writing code which works transparently both in
1922 exploding, to ease writing code which works transparently both in
1917 and out of ipython and uses some of this API.
1923 and out of ipython and uses some of this API.
1918
1924
1919 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1925 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1920
1926
1921 * IPython/hooks.py (result_display): Fix the fact that our display
1927 * IPython/hooks.py (result_display): Fix the fact that our display
1922 hook was using str() instead of repr(), as the default python
1928 hook was using str() instead of repr(), as the default python
1923 console does. This had gone unnoticed b/c it only happened if
1929 console does. This had gone unnoticed b/c it only happened if
1924 %Pprint was off, but the inconsistency was there.
1930 %Pprint was off, but the inconsistency was there.
1925
1931
1926 2006-05-15 Ville Vainio <vivainio@gmail.com>
1932 2006-05-15 Ville Vainio <vivainio@gmail.com>
1927
1933
1928 * Oinspect.py: Only show docstring for nonexisting/binary files
1934 * Oinspect.py: Only show docstring for nonexisting/binary files
1929 when doing object??, closing ticket #62
1935 when doing object??, closing ticket #62
1930
1936
1931 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1937 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1932
1938
1933 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1939 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1934 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1940 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1935 was being released in a routine which hadn't checked if it had
1941 was being released in a routine which hadn't checked if it had
1936 been the one to acquire it.
1942 been the one to acquire it.
1937
1943
1938 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1944 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1939
1945
1940 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1946 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1941
1947
1942 2006-04-11 Ville Vainio <vivainio@gmail.com>
1948 2006-04-11 Ville Vainio <vivainio@gmail.com>
1943
1949
1944 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1950 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1945 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1951 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1946 prefilters, allowing stuff like magics and aliases in the file.
1952 prefilters, allowing stuff like magics and aliases in the file.
1947
1953
1948 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1954 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1949 added. Supported now are "%clear in" and "%clear out" (clear input and
1955 added. Supported now are "%clear in" and "%clear out" (clear input and
1950 output history, respectively). Also fixed CachedOutput.flush to
1956 output history, respectively). Also fixed CachedOutput.flush to
1951 properly flush the output cache.
1957 properly flush the output cache.
1952
1958
1953 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1959 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1954 half-success (and fail explicitly).
1960 half-success (and fail explicitly).
1955
1961
1956 2006-03-28 Ville Vainio <vivainio@gmail.com>
1962 2006-03-28 Ville Vainio <vivainio@gmail.com>
1957
1963
1958 * iplib.py: Fix quoting of aliases so that only argless ones
1964 * iplib.py: Fix quoting of aliases so that only argless ones
1959 are quoted
1965 are quoted
1960
1966
1961 2006-03-28 Ville Vainio <vivainio@gmail.com>
1967 2006-03-28 Ville Vainio <vivainio@gmail.com>
1962
1968
1963 * iplib.py: Quote aliases with spaces in the name.
1969 * iplib.py: Quote aliases with spaces in the name.
1964 "c:\program files\blah\bin" is now legal alias target.
1970 "c:\program files\blah\bin" is now legal alias target.
1965
1971
1966 * ext_rehashdir.py: Space no longer allowed as arg
1972 * ext_rehashdir.py: Space no longer allowed as arg
1967 separator, since space is legal in path names.
1973 separator, since space is legal in path names.
1968
1974
1969 2006-03-16 Ville Vainio <vivainio@gmail.com>
1975 2006-03-16 Ville Vainio <vivainio@gmail.com>
1970
1976
1971 * upgrade_dir.py: Take path.py from Extensions, correcting
1977 * upgrade_dir.py: Take path.py from Extensions, correcting
1972 %upgrade magic
1978 %upgrade magic
1973
1979
1974 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1980 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1975
1981
1976 * hooks.py: Only enclose editor binary in quotes if legal and
1982 * hooks.py: Only enclose editor binary in quotes if legal and
1977 necessary (space in the name, and is an existing file). Fixes a bug
1983 necessary (space in the name, and is an existing file). Fixes a bug
1978 reported by Zachary Pincus.
1984 reported by Zachary Pincus.
1979
1985
1980 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1986 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1981
1987
1982 * Manual: thanks to a tip on proper color handling for Emacs, by
1988 * Manual: thanks to a tip on proper color handling for Emacs, by
1983 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1989 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1984
1990
1985 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1991 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1986 by applying the provided patch. Thanks to Liu Jin
1992 by applying the provided patch. Thanks to Liu Jin
1987 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1993 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1988 XEmacs/Linux, I'm trusting the submitter that it actually helps
1994 XEmacs/Linux, I'm trusting the submitter that it actually helps
1989 under win32/GNU Emacs. Will revisit if any problems are reported.
1995 under win32/GNU Emacs. Will revisit if any problems are reported.
1990
1996
1991 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1997 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1992
1998
1993 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1999 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1994 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2000 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1995
2001
1996 2006-03-12 Ville Vainio <vivainio@gmail.com>
2002 2006-03-12 Ville Vainio <vivainio@gmail.com>
1997
2003
1998 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2004 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1999 Torsten Marek.
2005 Torsten Marek.
2000
2006
2001 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2007 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2002
2008
2003 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2009 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2004 line ranges works again.
2010 line ranges works again.
2005
2011
2006 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2012 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2007
2013
2008 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2014 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2009 and friends, after a discussion with Zach Pincus on ipython-user.
2015 and friends, after a discussion with Zach Pincus on ipython-user.
2010 I'm not 100% sure, but after thinking about it quite a bit, it may
2016 I'm not 100% sure, but after thinking about it quite a bit, it may
2011 be OK. Testing with the multithreaded shells didn't reveal any
2017 be OK. Testing with the multithreaded shells didn't reveal any
2012 problems, but let's keep an eye out.
2018 problems, but let's keep an eye out.
2013
2019
2014 In the process, I fixed a few things which were calling
2020 In the process, I fixed a few things which were calling
2015 self.InteractiveTB() directly (like safe_execfile), which is a
2021 self.InteractiveTB() directly (like safe_execfile), which is a
2016 mistake: ALL exception reporting should be done by calling
2022 mistake: ALL exception reporting should be done by calling
2017 self.showtraceback(), which handles state and tab-completion and
2023 self.showtraceback(), which handles state and tab-completion and
2018 more.
2024 more.
2019
2025
2020 2006-03-01 Ville Vainio <vivainio@gmail.com>
2026 2006-03-01 Ville Vainio <vivainio@gmail.com>
2021
2027
2022 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2028 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2023 To use, do "from ipipe import *".
2029 To use, do "from ipipe import *".
2024
2030
2025 2006-02-24 Ville Vainio <vivainio@gmail.com>
2031 2006-02-24 Ville Vainio <vivainio@gmail.com>
2026
2032
2027 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2033 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2028 "cleanly" and safely than the older upgrade mechanism.
2034 "cleanly" and safely than the older upgrade mechanism.
2029
2035
2030 2006-02-21 Ville Vainio <vivainio@gmail.com>
2036 2006-02-21 Ville Vainio <vivainio@gmail.com>
2031
2037
2032 * Magic.py: %save works again.
2038 * Magic.py: %save works again.
2033
2039
2034 2006-02-15 Ville Vainio <vivainio@gmail.com>
2040 2006-02-15 Ville Vainio <vivainio@gmail.com>
2035
2041
2036 * Magic.py: %Pprint works again
2042 * Magic.py: %Pprint works again
2037
2043
2038 * Extensions/ipy_sane_defaults.py: Provide everything provided
2044 * Extensions/ipy_sane_defaults.py: Provide everything provided
2039 in default ipythonrc, to make it possible to have a completely empty
2045 in default ipythonrc, to make it possible to have a completely empty
2040 ipythonrc (and thus completely rc-file free configuration)
2046 ipythonrc (and thus completely rc-file free configuration)
2041
2047
2042 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2048 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2043
2049
2044 * IPython/hooks.py (editor): quote the call to the editor command,
2050 * IPython/hooks.py (editor): quote the call to the editor command,
2045 to allow commands with spaces in them. Problem noted by watching
2051 to allow commands with spaces in them. Problem noted by watching
2046 Ian Oswald's video about textpad under win32 at
2052 Ian Oswald's video about textpad under win32 at
2047 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2053 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2048
2054
2049 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2055 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2050 describing magics (we haven't used @ for a loong time).
2056 describing magics (we haven't used @ for a loong time).
2051
2057
2052 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2058 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2053 contributed by marienz to close
2059 contributed by marienz to close
2054 http://www.scipy.net/roundup/ipython/issue53.
2060 http://www.scipy.net/roundup/ipython/issue53.
2055
2061
2056 2006-02-10 Ville Vainio <vivainio@gmail.com>
2062 2006-02-10 Ville Vainio <vivainio@gmail.com>
2057
2063
2058 * genutils.py: getoutput now works in win32 too
2064 * genutils.py: getoutput now works in win32 too
2059
2065
2060 * completer.py: alias and magic completion only invoked
2066 * completer.py: alias and magic completion only invoked
2061 at the first "item" in the line, to avoid "cd %store"
2067 at the first "item" in the line, to avoid "cd %store"
2062 nonsense.
2068 nonsense.
2063
2069
2064 2006-02-09 Ville Vainio <vivainio@gmail.com>
2070 2006-02-09 Ville Vainio <vivainio@gmail.com>
2065
2071
2066 * test/*: Added a unit testing framework (finally).
2072 * test/*: Added a unit testing framework (finally).
2067 '%run runtests.py' to run test_*.
2073 '%run runtests.py' to run test_*.
2068
2074
2069 * ipapi.py: Exposed runlines and set_custom_exc
2075 * ipapi.py: Exposed runlines and set_custom_exc
2070
2076
2071 2006-02-07 Ville Vainio <vivainio@gmail.com>
2077 2006-02-07 Ville Vainio <vivainio@gmail.com>
2072
2078
2073 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2079 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2074 instead use "f(1 2)" as before.
2080 instead use "f(1 2)" as before.
2075
2081
2076 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2082 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2077
2083
2078 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2084 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2079 facilities, for demos processed by the IPython input filter
2085 facilities, for demos processed by the IPython input filter
2080 (IPythonDemo), and for running a script one-line-at-a-time as a
2086 (IPythonDemo), and for running a script one-line-at-a-time as a
2081 demo, both for pure Python (LineDemo) and for IPython-processed
2087 demo, both for pure Python (LineDemo) and for IPython-processed
2082 input (IPythonLineDemo). After a request by Dave Kohel, from the
2088 input (IPythonLineDemo). After a request by Dave Kohel, from the
2083 SAGE team.
2089 SAGE team.
2084 (Demo.edit): added an edit() method to the demo objects, to edit
2090 (Demo.edit): added an edit() method to the demo objects, to edit
2085 the in-memory copy of the last executed block.
2091 the in-memory copy of the last executed block.
2086
2092
2087 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2093 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2088 processing to %edit, %macro and %save. These commands can now be
2094 processing to %edit, %macro and %save. These commands can now be
2089 invoked on the unprocessed input as it was typed by the user
2095 invoked on the unprocessed input as it was typed by the user
2090 (without any prefilters applied). After requests by the SAGE team
2096 (without any prefilters applied). After requests by the SAGE team
2091 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2097 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2092
2098
2093 2006-02-01 Ville Vainio <vivainio@gmail.com>
2099 2006-02-01 Ville Vainio <vivainio@gmail.com>
2094
2100
2095 * setup.py, eggsetup.py: easy_install ipython==dev works
2101 * setup.py, eggsetup.py: easy_install ipython==dev works
2096 correctly now (on Linux)
2102 correctly now (on Linux)
2097
2103
2098 * ipy_user_conf,ipmaker: user config changes, removed spurious
2104 * ipy_user_conf,ipmaker: user config changes, removed spurious
2099 warnings
2105 warnings
2100
2106
2101 * iplib: if rc.banner is string, use it as is.
2107 * iplib: if rc.banner is string, use it as is.
2102
2108
2103 * Magic: %pycat accepts a string argument and pages it's contents.
2109 * Magic: %pycat accepts a string argument and pages it's contents.
2104
2110
2105
2111
2106 2006-01-30 Ville Vainio <vivainio@gmail.com>
2112 2006-01-30 Ville Vainio <vivainio@gmail.com>
2107
2113
2108 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2114 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2109 Now %store and bookmarks work through PickleShare, meaning that
2115 Now %store and bookmarks work through PickleShare, meaning that
2110 concurrent access is possible and all ipython sessions see the
2116 concurrent access is possible and all ipython sessions see the
2111 same database situation all the time, instead of snapshot of
2117 same database situation all the time, instead of snapshot of
2112 the situation when the session was started. Hence, %bookmark
2118 the situation when the session was started. Hence, %bookmark
2113 results are immediately accessible from othes sessions. The database
2119 results are immediately accessible from othes sessions. The database
2114 is also available for use by user extensions. See:
2120 is also available for use by user extensions. See:
2115 http://www.python.org/pypi/pickleshare
2121 http://www.python.org/pypi/pickleshare
2116
2122
2117 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2123 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2118
2124
2119 * aliases can now be %store'd
2125 * aliases can now be %store'd
2120
2126
2121 * path.py moved to Extensions so that pickleshare does not need
2127 * path.py moved to Extensions so that pickleshare does not need
2122 IPython-specific import. Extensions added to pythonpath right
2128 IPython-specific import. Extensions added to pythonpath right
2123 at __init__.
2129 at __init__.
2124
2130
2125 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2131 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2126 called with _ip.system and the pre-transformed command string.
2132 called with _ip.system and the pre-transformed command string.
2127
2133
2128 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2134 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2129
2135
2130 * IPython/iplib.py (interact): Fix that we were not catching
2136 * IPython/iplib.py (interact): Fix that we were not catching
2131 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2137 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2132 logic here had to change, but it's fixed now.
2138 logic here had to change, but it's fixed now.
2133
2139
2134 2006-01-29 Ville Vainio <vivainio@gmail.com>
2140 2006-01-29 Ville Vainio <vivainio@gmail.com>
2135
2141
2136 * iplib.py: Try to import pyreadline on Windows.
2142 * iplib.py: Try to import pyreadline on Windows.
2137
2143
2138 2006-01-27 Ville Vainio <vivainio@gmail.com>
2144 2006-01-27 Ville Vainio <vivainio@gmail.com>
2139
2145
2140 * iplib.py: Expose ipapi as _ip in builtin namespace.
2146 * iplib.py: Expose ipapi as _ip in builtin namespace.
2141 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2147 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2142 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2148 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2143 syntax now produce _ip.* variant of the commands.
2149 syntax now produce _ip.* variant of the commands.
2144
2150
2145 * "_ip.options().autoedit_syntax = 2" automatically throws
2151 * "_ip.options().autoedit_syntax = 2" automatically throws
2146 user to editor for syntax error correction without prompting.
2152 user to editor for syntax error correction without prompting.
2147
2153
2148 2006-01-27 Ville Vainio <vivainio@gmail.com>
2154 2006-01-27 Ville Vainio <vivainio@gmail.com>
2149
2155
2150 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2156 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2151 'ipython' at argv[0]) executed through command line.
2157 'ipython' at argv[0]) executed through command line.
2152 NOTE: this DEPRECATES calling ipython with multiple scripts
2158 NOTE: this DEPRECATES calling ipython with multiple scripts
2153 ("ipython a.py b.py c.py")
2159 ("ipython a.py b.py c.py")
2154
2160
2155 * iplib.py, hooks.py: Added configurable input prefilter,
2161 * iplib.py, hooks.py: Added configurable input prefilter,
2156 named 'input_prefilter'. See ext_rescapture.py for example
2162 named 'input_prefilter'. See ext_rescapture.py for example
2157 usage.
2163 usage.
2158
2164
2159 * ext_rescapture.py, Magic.py: Better system command output capture
2165 * ext_rescapture.py, Magic.py: Better system command output capture
2160 through 'var = !ls' (deprecates user-visible %sc). Same notation
2166 through 'var = !ls' (deprecates user-visible %sc). Same notation
2161 applies for magics, 'var = %alias' assigns alias list to var.
2167 applies for magics, 'var = %alias' assigns alias list to var.
2162
2168
2163 * ipapi.py: added meta() for accessing extension-usable data store.
2169 * ipapi.py: added meta() for accessing extension-usable data store.
2164
2170
2165 * iplib.py: added InteractiveShell.getapi(). New magics should be
2171 * iplib.py: added InteractiveShell.getapi(). New magics should be
2166 written doing self.getapi() instead of using the shell directly.
2172 written doing self.getapi() instead of using the shell directly.
2167
2173
2168 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2174 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2169 %store foo >> ~/myfoo.txt to store variables to files (in clean
2175 %store foo >> ~/myfoo.txt to store variables to files (in clean
2170 textual form, not a restorable pickle).
2176 textual form, not a restorable pickle).
2171
2177
2172 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2178 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2173
2179
2174 * usage.py, Magic.py: added %quickref
2180 * usage.py, Magic.py: added %quickref
2175
2181
2176 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2182 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2177
2183
2178 * GetoptErrors when invoking magics etc. with wrong args
2184 * GetoptErrors when invoking magics etc. with wrong args
2179 are now more helpful:
2185 are now more helpful:
2180 GetoptError: option -l not recognized (allowed: "qb" )
2186 GetoptError: option -l not recognized (allowed: "qb" )
2181
2187
2182 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2188 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2183
2189
2184 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2190 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2185 computationally intensive blocks don't appear to stall the demo.
2191 computationally intensive blocks don't appear to stall the demo.
2186
2192
2187 2006-01-24 Ville Vainio <vivainio@gmail.com>
2193 2006-01-24 Ville Vainio <vivainio@gmail.com>
2188
2194
2189 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2195 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2190 value to manipulate resulting history entry.
2196 value to manipulate resulting history entry.
2191
2197
2192 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2198 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2193 to instance methods of IPApi class, to make extending an embedded
2199 to instance methods of IPApi class, to make extending an embedded
2194 IPython feasible. See ext_rehashdir.py for example usage.
2200 IPython feasible. See ext_rehashdir.py for example usage.
2195
2201
2196 * Merged 1071-1076 from branches/0.7.1
2202 * Merged 1071-1076 from branches/0.7.1
2197
2203
2198
2204
2199 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2205 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2200
2206
2201 * tools/release (daystamp): Fix build tools to use the new
2207 * tools/release (daystamp): Fix build tools to use the new
2202 eggsetup.py script to build lightweight eggs.
2208 eggsetup.py script to build lightweight eggs.
2203
2209
2204 * Applied changesets 1062 and 1064 before 0.7.1 release.
2210 * Applied changesets 1062 and 1064 before 0.7.1 release.
2205
2211
2206 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2212 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2207 see the raw input history (without conversions like %ls ->
2213 see the raw input history (without conversions like %ls ->
2208 ipmagic("ls")). After a request from W. Stein, SAGE
2214 ipmagic("ls")). After a request from W. Stein, SAGE
2209 (http://modular.ucsd.edu/sage) developer. This information is
2215 (http://modular.ucsd.edu/sage) developer. This information is
2210 stored in the input_hist_raw attribute of the IPython instance, so
2216 stored in the input_hist_raw attribute of the IPython instance, so
2211 developers can access it if needed (it's an InputList instance).
2217 developers can access it if needed (it's an InputList instance).
2212
2218
2213 * Versionstring = 0.7.2.svn
2219 * Versionstring = 0.7.2.svn
2214
2220
2215 * eggsetup.py: A separate script for constructing eggs, creates
2221 * eggsetup.py: A separate script for constructing eggs, creates
2216 proper launch scripts even on Windows (an .exe file in
2222 proper launch scripts even on Windows (an .exe file in
2217 \python24\scripts).
2223 \python24\scripts).
2218
2224
2219 * ipapi.py: launch_new_instance, launch entry point needed for the
2225 * ipapi.py: launch_new_instance, launch entry point needed for the
2220 egg.
2226 egg.
2221
2227
2222 2006-01-23 Ville Vainio <vivainio@gmail.com>
2228 2006-01-23 Ville Vainio <vivainio@gmail.com>
2223
2229
2224 * Added %cpaste magic for pasting python code
2230 * Added %cpaste magic for pasting python code
2225
2231
2226 2006-01-22 Ville Vainio <vivainio@gmail.com>
2232 2006-01-22 Ville Vainio <vivainio@gmail.com>
2227
2233
2228 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2234 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2229
2235
2230 * Versionstring = 0.7.2.svn
2236 * Versionstring = 0.7.2.svn
2231
2237
2232 * eggsetup.py: A separate script for constructing eggs, creates
2238 * eggsetup.py: A separate script for constructing eggs, creates
2233 proper launch scripts even on Windows (an .exe file in
2239 proper launch scripts even on Windows (an .exe file in
2234 \python24\scripts).
2240 \python24\scripts).
2235
2241
2236 * ipapi.py: launch_new_instance, launch entry point needed for the
2242 * ipapi.py: launch_new_instance, launch entry point needed for the
2237 egg.
2243 egg.
2238
2244
2239 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2245 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2240
2246
2241 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2247 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2242 %pfile foo would print the file for foo even if it was a binary.
2248 %pfile foo would print the file for foo even if it was a binary.
2243 Now, extensions '.so' and '.dll' are skipped.
2249 Now, extensions '.so' and '.dll' are skipped.
2244
2250
2245 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2251 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2246 bug, where macros would fail in all threaded modes. I'm not 100%
2252 bug, where macros would fail in all threaded modes. I'm not 100%
2247 sure, so I'm going to put out an rc instead of making a release
2253 sure, so I'm going to put out an rc instead of making a release
2248 today, and wait for feedback for at least a few days.
2254 today, and wait for feedback for at least a few days.
2249
2255
2250 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2256 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2251 it...) the handling of pasting external code with autoindent on.
2257 it...) the handling of pasting external code with autoindent on.
2252 To get out of a multiline input, the rule will appear for most
2258 To get out of a multiline input, the rule will appear for most
2253 users unchanged: two blank lines or change the indent level
2259 users unchanged: two blank lines or change the indent level
2254 proposed by IPython. But there is a twist now: you can
2260 proposed by IPython. But there is a twist now: you can
2255 add/subtract only *one or two spaces*. If you add/subtract three
2261 add/subtract only *one or two spaces*. If you add/subtract three
2256 or more (unless you completely delete the line), IPython will
2262 or more (unless you completely delete the line), IPython will
2257 accept that line, and you'll need to enter a second one of pure
2263 accept that line, and you'll need to enter a second one of pure
2258 whitespace. I know it sounds complicated, but I can't find a
2264 whitespace. I know it sounds complicated, but I can't find a
2259 different solution that covers all the cases, with the right
2265 different solution that covers all the cases, with the right
2260 heuristics. Hopefully in actual use, nobody will really notice
2266 heuristics. Hopefully in actual use, nobody will really notice
2261 all these strange rules and things will 'just work'.
2267 all these strange rules and things will 'just work'.
2262
2268
2263 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2269 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2264
2270
2265 * IPython/iplib.py (interact): catch exceptions which can be
2271 * IPython/iplib.py (interact): catch exceptions which can be
2266 triggered asynchronously by signal handlers. Thanks to an
2272 triggered asynchronously by signal handlers. Thanks to an
2267 automatic crash report, submitted by Colin Kingsley
2273 automatic crash report, submitted by Colin Kingsley
2268 <tercel-AT-gentoo.org>.
2274 <tercel-AT-gentoo.org>.
2269
2275
2270 2006-01-20 Ville Vainio <vivainio@gmail.com>
2276 2006-01-20 Ville Vainio <vivainio@gmail.com>
2271
2277
2272 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2278 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2273 (%rehashdir, very useful, try it out) of how to extend ipython
2279 (%rehashdir, very useful, try it out) of how to extend ipython
2274 with new magics. Also added Extensions dir to pythonpath to make
2280 with new magics. Also added Extensions dir to pythonpath to make
2275 importing extensions easy.
2281 importing extensions easy.
2276
2282
2277 * %store now complains when trying to store interactively declared
2283 * %store now complains when trying to store interactively declared
2278 classes / instances of those classes.
2284 classes / instances of those classes.
2279
2285
2280 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2286 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2281 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2287 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2282 if they exist, and ipy_user_conf.py with some defaults is created for
2288 if they exist, and ipy_user_conf.py with some defaults is created for
2283 the user.
2289 the user.
2284
2290
2285 * Startup rehashing done by the config file, not InterpreterExec.
2291 * Startup rehashing done by the config file, not InterpreterExec.
2286 This means system commands are available even without selecting the
2292 This means system commands are available even without selecting the
2287 pysh profile. It's the sensible default after all.
2293 pysh profile. It's the sensible default after all.
2288
2294
2289 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2295 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2290
2296
2291 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2297 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2292 multiline code with autoindent on working. But I am really not
2298 multiline code with autoindent on working. But I am really not
2293 sure, so this needs more testing. Will commit a debug-enabled
2299 sure, so this needs more testing. Will commit a debug-enabled
2294 version for now, while I test it some more, so that Ville and
2300 version for now, while I test it some more, so that Ville and
2295 others may also catch any problems. Also made
2301 others may also catch any problems. Also made
2296 self.indent_current_str() a method, to ensure that there's no
2302 self.indent_current_str() a method, to ensure that there's no
2297 chance of the indent space count and the corresponding string
2303 chance of the indent space count and the corresponding string
2298 falling out of sync. All code needing the string should just call
2304 falling out of sync. All code needing the string should just call
2299 the method.
2305 the method.
2300
2306
2301 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2307 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2302
2308
2303 * IPython/Magic.py (magic_edit): fix check for when users don't
2309 * IPython/Magic.py (magic_edit): fix check for when users don't
2304 save their output files, the try/except was in the wrong section.
2310 save their output files, the try/except was in the wrong section.
2305
2311
2306 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2312 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2307
2313
2308 * IPython/Magic.py (magic_run): fix __file__ global missing from
2314 * IPython/Magic.py (magic_run): fix __file__ global missing from
2309 script's namespace when executed via %run. After a report by
2315 script's namespace when executed via %run. After a report by
2310 Vivian.
2316 Vivian.
2311
2317
2312 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2318 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2313 when using python 2.4. The parent constructor changed in 2.4, and
2319 when using python 2.4. The parent constructor changed in 2.4, and
2314 we need to track it directly (we can't call it, as it messes up
2320 we need to track it directly (we can't call it, as it messes up
2315 readline and tab-completion inside our pdb would stop working).
2321 readline and tab-completion inside our pdb would stop working).
2316 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2322 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2317
2323
2318 2006-01-16 Ville Vainio <vivainio@gmail.com>
2324 2006-01-16 Ville Vainio <vivainio@gmail.com>
2319
2325
2320 * Ipython/magic.py: Reverted back to old %edit functionality
2326 * Ipython/magic.py: Reverted back to old %edit functionality
2321 that returns file contents on exit.
2327 that returns file contents on exit.
2322
2328
2323 * IPython/path.py: Added Jason Orendorff's "path" module to
2329 * IPython/path.py: Added Jason Orendorff's "path" module to
2324 IPython tree, http://www.jorendorff.com/articles/python/path/.
2330 IPython tree, http://www.jorendorff.com/articles/python/path/.
2325 You can get path objects conveniently through %sc, and !!, e.g.:
2331 You can get path objects conveniently through %sc, and !!, e.g.:
2326 sc files=ls
2332 sc files=ls
2327 for p in files.paths: # or files.p
2333 for p in files.paths: # or files.p
2328 print p,p.mtime
2334 print p,p.mtime
2329
2335
2330 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2336 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2331 now work again without considering the exclusion regexp -
2337 now work again without considering the exclusion regexp -
2332 hence, things like ',foo my/path' turn to 'foo("my/path")'
2338 hence, things like ',foo my/path' turn to 'foo("my/path")'
2333 instead of syntax error.
2339 instead of syntax error.
2334
2340
2335
2341
2336 2006-01-14 Ville Vainio <vivainio@gmail.com>
2342 2006-01-14 Ville Vainio <vivainio@gmail.com>
2337
2343
2338 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2344 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2339 ipapi decorators for python 2.4 users, options() provides access to rc
2345 ipapi decorators for python 2.4 users, options() provides access to rc
2340 data.
2346 data.
2341
2347
2342 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2348 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2343 as path separators (even on Linux ;-). Space character after
2349 as path separators (even on Linux ;-). Space character after
2344 backslash (as yielded by tab completer) is still space;
2350 backslash (as yielded by tab completer) is still space;
2345 "%cd long\ name" works as expected.
2351 "%cd long\ name" works as expected.
2346
2352
2347 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2353 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2348 as "chain of command", with priority. API stays the same,
2354 as "chain of command", with priority. API stays the same,
2349 TryNext exception raised by a hook function signals that
2355 TryNext exception raised by a hook function signals that
2350 current hook failed and next hook should try handling it, as
2356 current hook failed and next hook should try handling it, as
2351 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2357 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2352 requested configurable display hook, which is now implemented.
2358 requested configurable display hook, which is now implemented.
2353
2359
2354 2006-01-13 Ville Vainio <vivainio@gmail.com>
2360 2006-01-13 Ville Vainio <vivainio@gmail.com>
2355
2361
2356 * IPython/platutils*.py: platform specific utility functions,
2362 * IPython/platutils*.py: platform specific utility functions,
2357 so far only set_term_title is implemented (change terminal
2363 so far only set_term_title is implemented (change terminal
2358 label in windowing systems). %cd now changes the title to
2364 label in windowing systems). %cd now changes the title to
2359 current dir.
2365 current dir.
2360
2366
2361 * IPython/Release.py: Added myself to "authors" list,
2367 * IPython/Release.py: Added myself to "authors" list,
2362 had to create new files.
2368 had to create new files.
2363
2369
2364 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2370 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2365 shell escape; not a known bug but had potential to be one in the
2371 shell escape; not a known bug but had potential to be one in the
2366 future.
2372 future.
2367
2373
2368 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2374 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2369 extension API for IPython! See the module for usage example. Fix
2375 extension API for IPython! See the module for usage example. Fix
2370 OInspect for docstring-less magic functions.
2376 OInspect for docstring-less magic functions.
2371
2377
2372
2378
2373 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2379 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2374
2380
2375 * IPython/iplib.py (raw_input): temporarily deactivate all
2381 * IPython/iplib.py (raw_input): temporarily deactivate all
2376 attempts at allowing pasting of code with autoindent on. It
2382 attempts at allowing pasting of code with autoindent on. It
2377 introduced bugs (reported by Prabhu) and I can't seem to find a
2383 introduced bugs (reported by Prabhu) and I can't seem to find a
2378 robust combination which works in all cases. Will have to revisit
2384 robust combination which works in all cases. Will have to revisit
2379 later.
2385 later.
2380
2386
2381 * IPython/genutils.py: remove isspace() function. We've dropped
2387 * IPython/genutils.py: remove isspace() function. We've dropped
2382 2.2 compatibility, so it's OK to use the string method.
2388 2.2 compatibility, so it's OK to use the string method.
2383
2389
2384 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2390 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2385
2391
2386 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2392 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2387 matching what NOT to autocall on, to include all python binary
2393 matching what NOT to autocall on, to include all python binary
2388 operators (including things like 'and', 'or', 'is' and 'in').
2394 operators (including things like 'and', 'or', 'is' and 'in').
2389 Prompted by a bug report on 'foo & bar', but I realized we had
2395 Prompted by a bug report on 'foo & bar', but I realized we had
2390 many more potential bug cases with other operators. The regexp is
2396 many more potential bug cases with other operators. The regexp is
2391 self.re_exclude_auto, it's fairly commented.
2397 self.re_exclude_auto, it's fairly commented.
2392
2398
2393 2006-01-12 Ville Vainio <vivainio@gmail.com>
2399 2006-01-12 Ville Vainio <vivainio@gmail.com>
2394
2400
2395 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2401 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2396 Prettified and hardened string/backslash quoting with ipsystem(),
2402 Prettified and hardened string/backslash quoting with ipsystem(),
2397 ipalias() and ipmagic(). Now even \ characters are passed to
2403 ipalias() and ipmagic(). Now even \ characters are passed to
2398 %magics, !shell escapes and aliases exactly as they are in the
2404 %magics, !shell escapes and aliases exactly as they are in the
2399 ipython command line. Should improve backslash experience,
2405 ipython command line. Should improve backslash experience,
2400 particularly in Windows (path delimiter for some commands that
2406 particularly in Windows (path delimiter for some commands that
2401 won't understand '/'), but Unix benefits as well (regexps). %cd
2407 won't understand '/'), but Unix benefits as well (regexps). %cd
2402 magic still doesn't support backslash path delimiters, though. Also
2408 magic still doesn't support backslash path delimiters, though. Also
2403 deleted all pretense of supporting multiline command strings in
2409 deleted all pretense of supporting multiline command strings in
2404 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2410 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2405
2411
2406 * doc/build_doc_instructions.txt added. Documentation on how to
2412 * doc/build_doc_instructions.txt added. Documentation on how to
2407 use doc/update_manual.py, added yesterday. Both files contributed
2413 use doc/update_manual.py, added yesterday. Both files contributed
2408 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2414 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2409 doc/*.sh for deprecation at a later date.
2415 doc/*.sh for deprecation at a later date.
2410
2416
2411 * /ipython.py Added ipython.py to root directory for
2417 * /ipython.py Added ipython.py to root directory for
2412 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2418 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2413 ipython.py) and development convenience (no need to keep doing
2419 ipython.py) and development convenience (no need to keep doing
2414 "setup.py install" between changes).
2420 "setup.py install" between changes).
2415
2421
2416 * Made ! and !! shell escapes work (again) in multiline expressions:
2422 * Made ! and !! shell escapes work (again) in multiline expressions:
2417 if 1:
2423 if 1:
2418 !ls
2424 !ls
2419 !!ls
2425 !!ls
2420
2426
2421 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2427 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2422
2428
2423 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2429 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2424 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2430 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2425 module in case-insensitive installation. Was causing crashes
2431 module in case-insensitive installation. Was causing crashes
2426 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2432 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2427
2433
2428 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2434 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2429 <marienz-AT-gentoo.org>, closes
2435 <marienz-AT-gentoo.org>, closes
2430 http://www.scipy.net/roundup/ipython/issue51.
2436 http://www.scipy.net/roundup/ipython/issue51.
2431
2437
2432 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2438 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2433
2439
2434 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2440 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2435 problem of excessive CPU usage under *nix and keyboard lag under
2441 problem of excessive CPU usage under *nix and keyboard lag under
2436 win32.
2442 win32.
2437
2443
2438 2006-01-10 *** Released version 0.7.0
2444 2006-01-10 *** Released version 0.7.0
2439
2445
2440 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2446 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2441
2447
2442 * IPython/Release.py (revision): tag version number to 0.7.0,
2448 * IPython/Release.py (revision): tag version number to 0.7.0,
2443 ready for release.
2449 ready for release.
2444
2450
2445 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2451 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2446 it informs the user of the name of the temp. file used. This can
2452 it informs the user of the name of the temp. file used. This can
2447 help if you decide later to reuse that same file, so you know
2453 help if you decide later to reuse that same file, so you know
2448 where to copy the info from.
2454 where to copy the info from.
2449
2455
2450 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2456 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2451
2457
2452 * setup_bdist_egg.py: little script to build an egg. Added
2458 * setup_bdist_egg.py: little script to build an egg. Added
2453 support in the release tools as well.
2459 support in the release tools as well.
2454
2460
2455 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2461 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2456
2462
2457 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2463 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2458 version selection (new -wxversion command line and ipythonrc
2464 version selection (new -wxversion command line and ipythonrc
2459 parameter). Patch contributed by Arnd Baecker
2465 parameter). Patch contributed by Arnd Baecker
2460 <arnd.baecker-AT-web.de>.
2466 <arnd.baecker-AT-web.de>.
2461
2467
2462 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2468 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2463 embedded instances, for variables defined at the interactive
2469 embedded instances, for variables defined at the interactive
2464 prompt of the embedded ipython. Reported by Arnd.
2470 prompt of the embedded ipython. Reported by Arnd.
2465
2471
2466 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2472 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2467 it can be used as a (stateful) toggle, or with a direct parameter.
2473 it can be used as a (stateful) toggle, or with a direct parameter.
2468
2474
2469 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2475 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2470 could be triggered in certain cases and cause the traceback
2476 could be triggered in certain cases and cause the traceback
2471 printer not to work.
2477 printer not to work.
2472
2478
2473 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2479 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2474
2480
2475 * IPython/iplib.py (_should_recompile): Small fix, closes
2481 * IPython/iplib.py (_should_recompile): Small fix, closes
2476 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2482 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2477
2483
2478 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2484 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2479
2485
2480 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2486 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2481 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2487 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2482 Moad for help with tracking it down.
2488 Moad for help with tracking it down.
2483
2489
2484 * IPython/iplib.py (handle_auto): fix autocall handling for
2490 * IPython/iplib.py (handle_auto): fix autocall handling for
2485 objects which support BOTH __getitem__ and __call__ (so that f [x]
2491 objects which support BOTH __getitem__ and __call__ (so that f [x]
2486 is left alone, instead of becoming f([x]) automatically).
2492 is left alone, instead of becoming f([x]) automatically).
2487
2493
2488 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2494 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2489 Ville's patch.
2495 Ville's patch.
2490
2496
2491 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2497 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2492
2498
2493 * IPython/iplib.py (handle_auto): changed autocall semantics to
2499 * IPython/iplib.py (handle_auto): changed autocall semantics to
2494 include 'smart' mode, where the autocall transformation is NOT
2500 include 'smart' mode, where the autocall transformation is NOT
2495 applied if there are no arguments on the line. This allows you to
2501 applied if there are no arguments on the line. This allows you to
2496 just type 'foo' if foo is a callable to see its internal form,
2502 just type 'foo' if foo is a callable to see its internal form,
2497 instead of having it called with no arguments (typically a
2503 instead of having it called with no arguments (typically a
2498 mistake). The old 'full' autocall still exists: for that, you
2504 mistake). The old 'full' autocall still exists: for that, you
2499 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2505 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2500
2506
2501 * IPython/completer.py (Completer.attr_matches): add
2507 * IPython/completer.py (Completer.attr_matches): add
2502 tab-completion support for Enthoughts' traits. After a report by
2508 tab-completion support for Enthoughts' traits. After a report by
2503 Arnd and a patch by Prabhu.
2509 Arnd and a patch by Prabhu.
2504
2510
2505 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2511 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2506
2512
2507 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2513 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2508 Schmolck's patch to fix inspect.getinnerframes().
2514 Schmolck's patch to fix inspect.getinnerframes().
2509
2515
2510 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2516 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2511 for embedded instances, regarding handling of namespaces and items
2517 for embedded instances, regarding handling of namespaces and items
2512 added to the __builtin__ one. Multiple embedded instances and
2518 added to the __builtin__ one. Multiple embedded instances and
2513 recursive embeddings should work better now (though I'm not sure
2519 recursive embeddings should work better now (though I'm not sure
2514 I've got all the corner cases fixed, that code is a bit of a brain
2520 I've got all the corner cases fixed, that code is a bit of a brain
2515 twister).
2521 twister).
2516
2522
2517 * IPython/Magic.py (magic_edit): added support to edit in-memory
2523 * IPython/Magic.py (magic_edit): added support to edit in-memory
2518 macros (automatically creates the necessary temp files). %edit
2524 macros (automatically creates the necessary temp files). %edit
2519 also doesn't return the file contents anymore, it's just noise.
2525 also doesn't return the file contents anymore, it's just noise.
2520
2526
2521 * IPython/completer.py (Completer.attr_matches): revert change to
2527 * IPython/completer.py (Completer.attr_matches): revert change to
2522 complete only on attributes listed in __all__. I realized it
2528 complete only on attributes listed in __all__. I realized it
2523 cripples the tab-completion system as a tool for exploring the
2529 cripples the tab-completion system as a tool for exploring the
2524 internals of unknown libraries (it renders any non-__all__
2530 internals of unknown libraries (it renders any non-__all__
2525 attribute off-limits). I got bit by this when trying to see
2531 attribute off-limits). I got bit by this when trying to see
2526 something inside the dis module.
2532 something inside the dis module.
2527
2533
2528 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2534 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2529
2535
2530 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2536 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2531 namespace for users and extension writers to hold data in. This
2537 namespace for users and extension writers to hold data in. This
2532 follows the discussion in
2538 follows the discussion in
2533 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2539 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2534
2540
2535 * IPython/completer.py (IPCompleter.complete): small patch to help
2541 * IPython/completer.py (IPCompleter.complete): small patch to help
2536 tab-completion under Emacs, after a suggestion by John Barnard
2542 tab-completion under Emacs, after a suggestion by John Barnard
2537 <barnarj-AT-ccf.org>.
2543 <barnarj-AT-ccf.org>.
2538
2544
2539 * IPython/Magic.py (Magic.extract_input_slices): added support for
2545 * IPython/Magic.py (Magic.extract_input_slices): added support for
2540 the slice notation in magics to use N-M to represent numbers N...M
2546 the slice notation in magics to use N-M to represent numbers N...M
2541 (closed endpoints). This is used by %macro and %save.
2547 (closed endpoints). This is used by %macro and %save.
2542
2548
2543 * IPython/completer.py (Completer.attr_matches): for modules which
2549 * IPython/completer.py (Completer.attr_matches): for modules which
2544 define __all__, complete only on those. After a patch by Jeffrey
2550 define __all__, complete only on those. After a patch by Jeffrey
2545 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2551 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2546 speed up this routine.
2552 speed up this routine.
2547
2553
2548 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2554 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2549 don't know if this is the end of it, but the behavior now is
2555 don't know if this is the end of it, but the behavior now is
2550 certainly much more correct. Note that coupled with macros,
2556 certainly much more correct. Note that coupled with macros,
2551 slightly surprising (at first) behavior may occur: a macro will in
2557 slightly surprising (at first) behavior may occur: a macro will in
2552 general expand to multiple lines of input, so upon exiting, the
2558 general expand to multiple lines of input, so upon exiting, the
2553 in/out counters will both be bumped by the corresponding amount
2559 in/out counters will both be bumped by the corresponding amount
2554 (as if the macro's contents had been typed interactively). Typing
2560 (as if the macro's contents had been typed interactively). Typing
2555 %hist will reveal the intermediate (silently processed) lines.
2561 %hist will reveal the intermediate (silently processed) lines.
2556
2562
2557 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2563 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2558 pickle to fail (%run was overwriting __main__ and not restoring
2564 pickle to fail (%run was overwriting __main__ and not restoring
2559 it, but pickle relies on __main__ to operate).
2565 it, but pickle relies on __main__ to operate).
2560
2566
2561 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2567 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2562 using properties, but forgot to make the main InteractiveShell
2568 using properties, but forgot to make the main InteractiveShell
2563 class a new-style class. Properties fail silently, and
2569 class a new-style class. Properties fail silently, and
2564 mysteriously, with old-style class (getters work, but
2570 mysteriously, with old-style class (getters work, but
2565 setters don't do anything).
2571 setters don't do anything).
2566
2572
2567 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2573 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2568
2574
2569 * IPython/Magic.py (magic_history): fix history reporting bug (I
2575 * IPython/Magic.py (magic_history): fix history reporting bug (I
2570 know some nasties are still there, I just can't seem to find a
2576 know some nasties are still there, I just can't seem to find a
2571 reproducible test case to track them down; the input history is
2577 reproducible test case to track them down; the input history is
2572 falling out of sync...)
2578 falling out of sync...)
2573
2579
2574 * IPython/iplib.py (handle_shell_escape): fix bug where both
2580 * IPython/iplib.py (handle_shell_escape): fix bug where both
2575 aliases and system accesses where broken for indented code (such
2581 aliases and system accesses where broken for indented code (such
2576 as loops).
2582 as loops).
2577
2583
2578 * IPython/genutils.py (shell): fix small but critical bug for
2584 * IPython/genutils.py (shell): fix small but critical bug for
2579 win32 system access.
2585 win32 system access.
2580
2586
2581 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2587 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2582
2588
2583 * IPython/iplib.py (showtraceback): remove use of the
2589 * IPython/iplib.py (showtraceback): remove use of the
2584 sys.last_{type/value/traceback} structures, which are non
2590 sys.last_{type/value/traceback} structures, which are non
2585 thread-safe.
2591 thread-safe.
2586 (_prefilter): change control flow to ensure that we NEVER
2592 (_prefilter): change control flow to ensure that we NEVER
2587 introspect objects when autocall is off. This will guarantee that
2593 introspect objects when autocall is off. This will guarantee that
2588 having an input line of the form 'x.y', where access to attribute
2594 having an input line of the form 'x.y', where access to attribute
2589 'y' has side effects, doesn't trigger the side effect TWICE. It
2595 'y' has side effects, doesn't trigger the side effect TWICE. It
2590 is important to note that, with autocall on, these side effects
2596 is important to note that, with autocall on, these side effects
2591 can still happen.
2597 can still happen.
2592 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2598 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2593 trio. IPython offers these three kinds of special calls which are
2599 trio. IPython offers these three kinds of special calls which are
2594 not python code, and it's a good thing to have their call method
2600 not python code, and it's a good thing to have their call method
2595 be accessible as pure python functions (not just special syntax at
2601 be accessible as pure python functions (not just special syntax at
2596 the command line). It gives us a better internal implementation
2602 the command line). It gives us a better internal implementation
2597 structure, as well as exposing these for user scripting more
2603 structure, as well as exposing these for user scripting more
2598 cleanly.
2604 cleanly.
2599
2605
2600 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2606 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2601 file. Now that they'll be more likely to be used with the
2607 file. Now that they'll be more likely to be used with the
2602 persistance system (%store), I want to make sure their module path
2608 persistance system (%store), I want to make sure their module path
2603 doesn't change in the future, so that we don't break things for
2609 doesn't change in the future, so that we don't break things for
2604 users' persisted data.
2610 users' persisted data.
2605
2611
2606 * IPython/iplib.py (autoindent_update): move indentation
2612 * IPython/iplib.py (autoindent_update): move indentation
2607 management into the _text_ processing loop, not the keyboard
2613 management into the _text_ processing loop, not the keyboard
2608 interactive one. This is necessary to correctly process non-typed
2614 interactive one. This is necessary to correctly process non-typed
2609 multiline input (such as macros).
2615 multiline input (such as macros).
2610
2616
2611 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2617 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2612 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2618 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2613 which was producing problems in the resulting manual.
2619 which was producing problems in the resulting manual.
2614 (magic_whos): improve reporting of instances (show their class,
2620 (magic_whos): improve reporting of instances (show their class,
2615 instead of simply printing 'instance' which isn't terribly
2621 instead of simply printing 'instance' which isn't terribly
2616 informative).
2622 informative).
2617
2623
2618 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2624 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2619 (minor mods) to support network shares under win32.
2625 (minor mods) to support network shares under win32.
2620
2626
2621 * IPython/winconsole.py (get_console_size): add new winconsole
2627 * IPython/winconsole.py (get_console_size): add new winconsole
2622 module and fixes to page_dumb() to improve its behavior under
2628 module and fixes to page_dumb() to improve its behavior under
2623 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2629 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2624
2630
2625 * IPython/Magic.py (Macro): simplified Macro class to just
2631 * IPython/Magic.py (Macro): simplified Macro class to just
2626 subclass list. We've had only 2.2 compatibility for a very long
2632 subclass list. We've had only 2.2 compatibility for a very long
2627 time, yet I was still avoiding subclassing the builtin types. No
2633 time, yet I was still avoiding subclassing the builtin types. No
2628 more (I'm also starting to use properties, though I won't shift to
2634 more (I'm also starting to use properties, though I won't shift to
2629 2.3-specific features quite yet).
2635 2.3-specific features quite yet).
2630 (magic_store): added Ville's patch for lightweight variable
2636 (magic_store): added Ville's patch for lightweight variable
2631 persistence, after a request on the user list by Matt Wilkie
2637 persistence, after a request on the user list by Matt Wilkie
2632 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2638 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2633 details.
2639 details.
2634
2640
2635 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2641 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2636 changed the default logfile name from 'ipython.log' to
2642 changed the default logfile name from 'ipython.log' to
2637 'ipython_log.py'. These logs are real python files, and now that
2643 'ipython_log.py'. These logs are real python files, and now that
2638 we have much better multiline support, people are more likely to
2644 we have much better multiline support, people are more likely to
2639 want to use them as such. Might as well name them correctly.
2645 want to use them as such. Might as well name them correctly.
2640
2646
2641 * IPython/Magic.py: substantial cleanup. While we can't stop
2647 * IPython/Magic.py: substantial cleanup. While we can't stop
2642 using magics as mixins, due to the existing customizations 'out
2648 using magics as mixins, due to the existing customizations 'out
2643 there' which rely on the mixin naming conventions, at least I
2649 there' which rely on the mixin naming conventions, at least I
2644 cleaned out all cross-class name usage. So once we are OK with
2650 cleaned out all cross-class name usage. So once we are OK with
2645 breaking compatibility, the two systems can be separated.
2651 breaking compatibility, the two systems can be separated.
2646
2652
2647 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2653 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2648 anymore, and the class is a fair bit less hideous as well. New
2654 anymore, and the class is a fair bit less hideous as well. New
2649 features were also introduced: timestamping of input, and logging
2655 features were also introduced: timestamping of input, and logging
2650 of output results. These are user-visible with the -t and -o
2656 of output results. These are user-visible with the -t and -o
2651 options to %logstart. Closes
2657 options to %logstart. Closes
2652 http://www.scipy.net/roundup/ipython/issue11 and a request by
2658 http://www.scipy.net/roundup/ipython/issue11 and a request by
2653 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2659 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2654
2660
2655 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2661 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2656
2662
2657 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2663 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2658 better handle backslashes in paths. See the thread 'More Windows
2664 better handle backslashes in paths. See the thread 'More Windows
2659 questions part 2 - \/ characters revisited' on the iypthon user
2665 questions part 2 - \/ characters revisited' on the iypthon user
2660 list:
2666 list:
2661 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2667 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2662
2668
2663 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2669 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2664
2670
2665 (InteractiveShell.__init__): change threaded shells to not use the
2671 (InteractiveShell.__init__): change threaded shells to not use the
2666 ipython crash handler. This was causing more problems than not,
2672 ipython crash handler. This was causing more problems than not,
2667 as exceptions in the main thread (GUI code, typically) would
2673 as exceptions in the main thread (GUI code, typically) would
2668 always show up as a 'crash', when they really weren't.
2674 always show up as a 'crash', when they really weren't.
2669
2675
2670 The colors and exception mode commands (%colors/%xmode) have been
2676 The colors and exception mode commands (%colors/%xmode) have been
2671 synchronized to also take this into account, so users can get
2677 synchronized to also take this into account, so users can get
2672 verbose exceptions for their threaded code as well. I also added
2678 verbose exceptions for their threaded code as well. I also added
2673 support for activating pdb inside this exception handler as well,
2679 support for activating pdb inside this exception handler as well,
2674 so now GUI authors can use IPython's enhanced pdb at runtime.
2680 so now GUI authors can use IPython's enhanced pdb at runtime.
2675
2681
2676 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2682 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2677 true by default, and add it to the shipped ipythonrc file. Since
2683 true by default, and add it to the shipped ipythonrc file. Since
2678 this asks the user before proceeding, I think it's OK to make it
2684 this asks the user before proceeding, I think it's OK to make it
2679 true by default.
2685 true by default.
2680
2686
2681 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2687 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2682 of the previous special-casing of input in the eval loop. I think
2688 of the previous special-casing of input in the eval loop. I think
2683 this is cleaner, as they really are commands and shouldn't have
2689 this is cleaner, as they really are commands and shouldn't have
2684 a special role in the middle of the core code.
2690 a special role in the middle of the core code.
2685
2691
2686 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2692 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2687
2693
2688 * IPython/iplib.py (edit_syntax_error): added support for
2694 * IPython/iplib.py (edit_syntax_error): added support for
2689 automatically reopening the editor if the file had a syntax error
2695 automatically reopening the editor if the file had a syntax error
2690 in it. Thanks to scottt who provided the patch at:
2696 in it. Thanks to scottt who provided the patch at:
2691 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2697 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2692 version committed).
2698 version committed).
2693
2699
2694 * IPython/iplib.py (handle_normal): add suport for multi-line
2700 * IPython/iplib.py (handle_normal): add suport for multi-line
2695 input with emtpy lines. This fixes
2701 input with emtpy lines. This fixes
2696 http://www.scipy.net/roundup/ipython/issue43 and a similar
2702 http://www.scipy.net/roundup/ipython/issue43 and a similar
2697 discussion on the user list.
2703 discussion on the user list.
2698
2704
2699 WARNING: a behavior change is necessarily introduced to support
2705 WARNING: a behavior change is necessarily introduced to support
2700 blank lines: now a single blank line with whitespace does NOT
2706 blank lines: now a single blank line with whitespace does NOT
2701 break the input loop, which means that when autoindent is on, by
2707 break the input loop, which means that when autoindent is on, by
2702 default hitting return on the next (indented) line does NOT exit.
2708 default hitting return on the next (indented) line does NOT exit.
2703
2709
2704 Instead, to exit a multiline input you can either have:
2710 Instead, to exit a multiline input you can either have:
2705
2711
2706 - TWO whitespace lines (just hit return again), or
2712 - TWO whitespace lines (just hit return again), or
2707 - a single whitespace line of a different length than provided
2713 - a single whitespace line of a different length than provided
2708 by the autoindent (add or remove a space).
2714 by the autoindent (add or remove a space).
2709
2715
2710 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2716 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2711 module to better organize all readline-related functionality.
2717 module to better organize all readline-related functionality.
2712 I've deleted FlexCompleter and put all completion clases here.
2718 I've deleted FlexCompleter and put all completion clases here.
2713
2719
2714 * IPython/iplib.py (raw_input): improve indentation management.
2720 * IPython/iplib.py (raw_input): improve indentation management.
2715 It is now possible to paste indented code with autoindent on, and
2721 It is now possible to paste indented code with autoindent on, and
2716 the code is interpreted correctly (though it still looks bad on
2722 the code is interpreted correctly (though it still looks bad on
2717 screen, due to the line-oriented nature of ipython).
2723 screen, due to the line-oriented nature of ipython).
2718 (MagicCompleter.complete): change behavior so that a TAB key on an
2724 (MagicCompleter.complete): change behavior so that a TAB key on an
2719 otherwise empty line actually inserts a tab, instead of completing
2725 otherwise empty line actually inserts a tab, instead of completing
2720 on the entire global namespace. This makes it easier to use the
2726 on the entire global namespace. This makes it easier to use the
2721 TAB key for indentation. After a request by Hans Meine
2727 TAB key for indentation. After a request by Hans Meine
2722 <hans_meine-AT-gmx.net>
2728 <hans_meine-AT-gmx.net>
2723 (_prefilter): add support so that typing plain 'exit' or 'quit'
2729 (_prefilter): add support so that typing plain 'exit' or 'quit'
2724 does a sensible thing. Originally I tried to deviate as little as
2730 does a sensible thing. Originally I tried to deviate as little as
2725 possible from the default python behavior, but even that one may
2731 possible from the default python behavior, but even that one may
2726 change in this direction (thread on python-dev to that effect).
2732 change in this direction (thread on python-dev to that effect).
2727 Regardless, ipython should do the right thing even if CPython's
2733 Regardless, ipython should do the right thing even if CPython's
2728 '>>>' prompt doesn't.
2734 '>>>' prompt doesn't.
2729 (InteractiveShell): removed subclassing code.InteractiveConsole
2735 (InteractiveShell): removed subclassing code.InteractiveConsole
2730 class. By now we'd overridden just about all of its methods: I've
2736 class. By now we'd overridden just about all of its methods: I've
2731 copied the remaining two over, and now ipython is a standalone
2737 copied the remaining two over, and now ipython is a standalone
2732 class. This will provide a clearer picture for the chainsaw
2738 class. This will provide a clearer picture for the chainsaw
2733 branch refactoring.
2739 branch refactoring.
2734
2740
2735 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2741 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2736
2742
2737 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2743 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2738 failures for objects which break when dir() is called on them.
2744 failures for objects which break when dir() is called on them.
2739
2745
2740 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2746 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2741 distinct local and global namespaces in the completer API. This
2747 distinct local and global namespaces in the completer API. This
2742 change allows us to properly handle completion with distinct
2748 change allows us to properly handle completion with distinct
2743 scopes, including in embedded instances (this had never really
2749 scopes, including in embedded instances (this had never really
2744 worked correctly).
2750 worked correctly).
2745
2751
2746 Note: this introduces a change in the constructor for
2752 Note: this introduces a change in the constructor for
2747 MagicCompleter, as a new global_namespace parameter is now the
2753 MagicCompleter, as a new global_namespace parameter is now the
2748 second argument (the others were bumped one position).
2754 second argument (the others were bumped one position).
2749
2755
2750 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2756 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2751
2757
2752 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2758 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2753 embedded instances (which can be done now thanks to Vivian's
2759 embedded instances (which can be done now thanks to Vivian's
2754 frame-handling fixes for pdb).
2760 frame-handling fixes for pdb).
2755 (InteractiveShell.__init__): Fix namespace handling problem in
2761 (InteractiveShell.__init__): Fix namespace handling problem in
2756 embedded instances. We were overwriting __main__ unconditionally,
2762 embedded instances. We were overwriting __main__ unconditionally,
2757 and this should only be done for 'full' (non-embedded) IPython;
2763 and this should only be done for 'full' (non-embedded) IPython;
2758 embedded instances must respect the caller's __main__. Thanks to
2764 embedded instances must respect the caller's __main__. Thanks to
2759 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2765 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2760
2766
2761 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2767 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2762
2768
2763 * setup.py: added download_url to setup(). This registers the
2769 * setup.py: added download_url to setup(). This registers the
2764 download address at PyPI, which is not only useful to humans
2770 download address at PyPI, which is not only useful to humans
2765 browsing the site, but is also picked up by setuptools (the Eggs
2771 browsing the site, but is also picked up by setuptools (the Eggs
2766 machinery). Thanks to Ville and R. Kern for the info/discussion
2772 machinery). Thanks to Ville and R. Kern for the info/discussion
2767 on this.
2773 on this.
2768
2774
2769 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2775 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2770
2776
2771 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2777 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2772 This brings a lot of nice functionality to the pdb mode, which now
2778 This brings a lot of nice functionality to the pdb mode, which now
2773 has tab-completion, syntax highlighting, and better stack handling
2779 has tab-completion, syntax highlighting, and better stack handling
2774 than before. Many thanks to Vivian De Smedt
2780 than before. Many thanks to Vivian De Smedt
2775 <vivian-AT-vdesmedt.com> for the original patches.
2781 <vivian-AT-vdesmedt.com> for the original patches.
2776
2782
2777 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2783 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2778
2784
2779 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2785 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2780 sequence to consistently accept the banner argument. The
2786 sequence to consistently accept the banner argument. The
2781 inconsistency was tripping SAGE, thanks to Gary Zablackis
2787 inconsistency was tripping SAGE, thanks to Gary Zablackis
2782 <gzabl-AT-yahoo.com> for the report.
2788 <gzabl-AT-yahoo.com> for the report.
2783
2789
2784 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2790 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2785
2791
2786 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2792 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2787 Fix bug where a naked 'alias' call in the ipythonrc file would
2793 Fix bug where a naked 'alias' call in the ipythonrc file would
2788 cause a crash. Bug reported by Jorgen Stenarson.
2794 cause a crash. Bug reported by Jorgen Stenarson.
2789
2795
2790 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2796 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2791
2797
2792 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2798 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2793 startup time.
2799 startup time.
2794
2800
2795 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2801 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2796 instances had introduced a bug with globals in normal code. Now
2802 instances had introduced a bug with globals in normal code. Now
2797 it's working in all cases.
2803 it's working in all cases.
2798
2804
2799 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2805 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2800 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2806 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2801 has been introduced to set the default case sensitivity of the
2807 has been introduced to set the default case sensitivity of the
2802 searches. Users can still select either mode at runtime on a
2808 searches. Users can still select either mode at runtime on a
2803 per-search basis.
2809 per-search basis.
2804
2810
2805 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2811 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2806
2812
2807 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2813 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2808 attributes in wildcard searches for subclasses. Modified version
2814 attributes in wildcard searches for subclasses. Modified version
2809 of a patch by Jorgen.
2815 of a patch by Jorgen.
2810
2816
2811 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2817 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2812
2818
2813 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2819 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2814 embedded instances. I added a user_global_ns attribute to the
2820 embedded instances. I added a user_global_ns attribute to the
2815 InteractiveShell class to handle this.
2821 InteractiveShell class to handle this.
2816
2822
2817 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2823 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2818
2824
2819 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2825 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2820 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2826 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2821 (reported under win32, but may happen also in other platforms).
2827 (reported under win32, but may happen also in other platforms).
2822 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2828 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2823
2829
2824 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2830 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2825
2831
2826 * IPython/Magic.py (magic_psearch): new support for wildcard
2832 * IPython/Magic.py (magic_psearch): new support for wildcard
2827 patterns. Now, typing ?a*b will list all names which begin with a
2833 patterns. Now, typing ?a*b will list all names which begin with a
2828 and end in b, for example. The %psearch magic has full
2834 and end in b, for example. The %psearch magic has full
2829 docstrings. Many thanks to JΓΆrgen Stenarson
2835 docstrings. Many thanks to JΓΆrgen Stenarson
2830 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2836 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2831 implementing this functionality.
2837 implementing this functionality.
2832
2838
2833 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2839 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2834
2840
2835 * Manual: fixed long-standing annoyance of double-dashes (as in
2841 * Manual: fixed long-standing annoyance of double-dashes (as in
2836 --prefix=~, for example) being stripped in the HTML version. This
2842 --prefix=~, for example) being stripped in the HTML version. This
2837 is a latex2html bug, but a workaround was provided. Many thanks
2843 is a latex2html bug, but a workaround was provided. Many thanks
2838 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2844 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2839 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2845 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2840 rolling. This seemingly small issue had tripped a number of users
2846 rolling. This seemingly small issue had tripped a number of users
2841 when first installing, so I'm glad to see it gone.
2847 when first installing, so I'm glad to see it gone.
2842
2848
2843 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2849 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2844
2850
2845 * IPython/Extensions/numeric_formats.py: fix missing import,
2851 * IPython/Extensions/numeric_formats.py: fix missing import,
2846 reported by Stephen Walton.
2852 reported by Stephen Walton.
2847
2853
2848 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2854 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2849
2855
2850 * IPython/demo.py: finish demo module, fully documented now.
2856 * IPython/demo.py: finish demo module, fully documented now.
2851
2857
2852 * IPython/genutils.py (file_read): simple little utility to read a
2858 * IPython/genutils.py (file_read): simple little utility to read a
2853 file and ensure it's closed afterwards.
2859 file and ensure it's closed afterwards.
2854
2860
2855 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2861 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2856
2862
2857 * IPython/demo.py (Demo.__init__): added support for individually
2863 * IPython/demo.py (Demo.__init__): added support for individually
2858 tagging blocks for automatic execution.
2864 tagging blocks for automatic execution.
2859
2865
2860 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2866 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2861 syntax-highlighted python sources, requested by John.
2867 syntax-highlighted python sources, requested by John.
2862
2868
2863 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2869 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2864
2870
2865 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2871 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2866 finishing.
2872 finishing.
2867
2873
2868 * IPython/genutils.py (shlex_split): moved from Magic to here,
2874 * IPython/genutils.py (shlex_split): moved from Magic to here,
2869 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2875 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2870
2876
2871 * IPython/demo.py (Demo.__init__): added support for silent
2877 * IPython/demo.py (Demo.__init__): added support for silent
2872 blocks, improved marks as regexps, docstrings written.
2878 blocks, improved marks as regexps, docstrings written.
2873 (Demo.__init__): better docstring, added support for sys.argv.
2879 (Demo.__init__): better docstring, added support for sys.argv.
2874
2880
2875 * IPython/genutils.py (marquee): little utility used by the demo
2881 * IPython/genutils.py (marquee): little utility used by the demo
2876 code, handy in general.
2882 code, handy in general.
2877
2883
2878 * IPython/demo.py (Demo.__init__): new class for interactive
2884 * IPython/demo.py (Demo.__init__): new class for interactive
2879 demos. Not documented yet, I just wrote it in a hurry for
2885 demos. Not documented yet, I just wrote it in a hurry for
2880 scipy'05. Will docstring later.
2886 scipy'05. Will docstring later.
2881
2887
2882 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2888 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2883
2889
2884 * IPython/Shell.py (sigint_handler): Drastic simplification which
2890 * IPython/Shell.py (sigint_handler): Drastic simplification which
2885 also seems to make Ctrl-C work correctly across threads! This is
2891 also seems to make Ctrl-C work correctly across threads! This is
2886 so simple, that I can't beleive I'd missed it before. Needs more
2892 so simple, that I can't beleive I'd missed it before. Needs more
2887 testing, though.
2893 testing, though.
2888 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2894 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2889 like this before...
2895 like this before...
2890
2896
2891 * IPython/genutils.py (get_home_dir): add protection against
2897 * IPython/genutils.py (get_home_dir): add protection against
2892 non-dirs in win32 registry.
2898 non-dirs in win32 registry.
2893
2899
2894 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2900 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2895 bug where dict was mutated while iterating (pysh crash).
2901 bug where dict was mutated while iterating (pysh crash).
2896
2902
2897 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2903 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2898
2904
2899 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2905 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2900 spurious newlines added by this routine. After a report by
2906 spurious newlines added by this routine. After a report by
2901 F. Mantegazza.
2907 F. Mantegazza.
2902
2908
2903 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2909 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2904
2910
2905 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2911 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2906 calls. These were a leftover from the GTK 1.x days, and can cause
2912 calls. These were a leftover from the GTK 1.x days, and can cause
2907 problems in certain cases (after a report by John Hunter).
2913 problems in certain cases (after a report by John Hunter).
2908
2914
2909 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2915 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2910 os.getcwd() fails at init time. Thanks to patch from David Remahl
2916 os.getcwd() fails at init time. Thanks to patch from David Remahl
2911 <chmod007-AT-mac.com>.
2917 <chmod007-AT-mac.com>.
2912 (InteractiveShell.__init__): prevent certain special magics from
2918 (InteractiveShell.__init__): prevent certain special magics from
2913 being shadowed by aliases. Closes
2919 being shadowed by aliases. Closes
2914 http://www.scipy.net/roundup/ipython/issue41.
2920 http://www.scipy.net/roundup/ipython/issue41.
2915
2921
2916 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2922 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2917
2923
2918 * IPython/iplib.py (InteractiveShell.complete): Added new
2924 * IPython/iplib.py (InteractiveShell.complete): Added new
2919 top-level completion method to expose the completion mechanism
2925 top-level completion method to expose the completion mechanism
2920 beyond readline-based environments.
2926 beyond readline-based environments.
2921
2927
2922 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2928 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2923
2929
2924 * tools/ipsvnc (svnversion): fix svnversion capture.
2930 * tools/ipsvnc (svnversion): fix svnversion capture.
2925
2931
2926 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2932 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2927 attribute to self, which was missing. Before, it was set by a
2933 attribute to self, which was missing. Before, it was set by a
2928 routine which in certain cases wasn't being called, so the
2934 routine which in certain cases wasn't being called, so the
2929 instance could end up missing the attribute. This caused a crash.
2935 instance could end up missing the attribute. This caused a crash.
2930 Closes http://www.scipy.net/roundup/ipython/issue40.
2936 Closes http://www.scipy.net/roundup/ipython/issue40.
2931
2937
2932 2005-08-16 Fernando Perez <fperez@colorado.edu>
2938 2005-08-16 Fernando Perez <fperez@colorado.edu>
2933
2939
2934 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2940 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2935 contains non-string attribute. Closes
2941 contains non-string attribute. Closes
2936 http://www.scipy.net/roundup/ipython/issue38.
2942 http://www.scipy.net/roundup/ipython/issue38.
2937
2943
2938 2005-08-14 Fernando Perez <fperez@colorado.edu>
2944 2005-08-14 Fernando Perez <fperez@colorado.edu>
2939
2945
2940 * tools/ipsvnc: Minor improvements, to add changeset info.
2946 * tools/ipsvnc: Minor improvements, to add changeset info.
2941
2947
2942 2005-08-12 Fernando Perez <fperez@colorado.edu>
2948 2005-08-12 Fernando Perez <fperez@colorado.edu>
2943
2949
2944 * IPython/iplib.py (runsource): remove self.code_to_run_src
2950 * IPython/iplib.py (runsource): remove self.code_to_run_src
2945 attribute. I realized this is nothing more than
2951 attribute. I realized this is nothing more than
2946 '\n'.join(self.buffer), and having the same data in two different
2952 '\n'.join(self.buffer), and having the same data in two different
2947 places is just asking for synchronization bugs. This may impact
2953 places is just asking for synchronization bugs. This may impact
2948 people who have custom exception handlers, so I need to warn
2954 people who have custom exception handlers, so I need to warn
2949 ipython-dev about it (F. Mantegazza may use them).
2955 ipython-dev about it (F. Mantegazza may use them).
2950
2956
2951 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2957 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2952
2958
2953 * IPython/genutils.py: fix 2.2 compatibility (generators)
2959 * IPython/genutils.py: fix 2.2 compatibility (generators)
2954
2960
2955 2005-07-18 Fernando Perez <fperez@colorado.edu>
2961 2005-07-18 Fernando Perez <fperez@colorado.edu>
2956
2962
2957 * IPython/genutils.py (get_home_dir): fix to help users with
2963 * IPython/genutils.py (get_home_dir): fix to help users with
2958 invalid $HOME under win32.
2964 invalid $HOME under win32.
2959
2965
2960 2005-07-17 Fernando Perez <fperez@colorado.edu>
2966 2005-07-17 Fernando Perez <fperez@colorado.edu>
2961
2967
2962 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2968 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2963 some old hacks and clean up a bit other routines; code should be
2969 some old hacks and clean up a bit other routines; code should be
2964 simpler and a bit faster.
2970 simpler and a bit faster.
2965
2971
2966 * IPython/iplib.py (interact): removed some last-resort attempts
2972 * IPython/iplib.py (interact): removed some last-resort attempts
2967 to survive broken stdout/stderr. That code was only making it
2973 to survive broken stdout/stderr. That code was only making it
2968 harder to abstract out the i/o (necessary for gui integration),
2974 harder to abstract out the i/o (necessary for gui integration),
2969 and the crashes it could prevent were extremely rare in practice
2975 and the crashes it could prevent were extremely rare in practice
2970 (besides being fully user-induced in a pretty violent manner).
2976 (besides being fully user-induced in a pretty violent manner).
2971
2977
2972 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2978 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2973 Nothing major yet, but the code is simpler to read; this should
2979 Nothing major yet, but the code is simpler to read; this should
2974 make it easier to do more serious modifications in the future.
2980 make it easier to do more serious modifications in the future.
2975
2981
2976 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2982 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2977 which broke in .15 (thanks to a report by Ville).
2983 which broke in .15 (thanks to a report by Ville).
2978
2984
2979 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2985 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2980 be quite correct, I know next to nothing about unicode). This
2986 be quite correct, I know next to nothing about unicode). This
2981 will allow unicode strings to be used in prompts, amongst other
2987 will allow unicode strings to be used in prompts, amongst other
2982 cases. It also will prevent ipython from crashing when unicode
2988 cases. It also will prevent ipython from crashing when unicode
2983 shows up unexpectedly in many places. If ascii encoding fails, we
2989 shows up unexpectedly in many places. If ascii encoding fails, we
2984 assume utf_8. Currently the encoding is not a user-visible
2990 assume utf_8. Currently the encoding is not a user-visible
2985 setting, though it could be made so if there is demand for it.
2991 setting, though it could be made so if there is demand for it.
2986
2992
2987 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2993 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2988
2994
2989 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2995 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2990
2996
2991 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2997 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2992
2998
2993 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2999 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2994 code can work transparently for 2.2/2.3.
3000 code can work transparently for 2.2/2.3.
2995
3001
2996 2005-07-16 Fernando Perez <fperez@colorado.edu>
3002 2005-07-16 Fernando Perez <fperez@colorado.edu>
2997
3003
2998 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3004 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2999 out of the color scheme table used for coloring exception
3005 out of the color scheme table used for coloring exception
3000 tracebacks. This allows user code to add new schemes at runtime.
3006 tracebacks. This allows user code to add new schemes at runtime.
3001 This is a minimally modified version of the patch at
3007 This is a minimally modified version of the patch at
3002 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3008 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3003 for the contribution.
3009 for the contribution.
3004
3010
3005 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3011 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3006 slightly modified version of the patch in
3012 slightly modified version of the patch in
3007 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3013 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3008 to remove the previous try/except solution (which was costlier).
3014 to remove the previous try/except solution (which was costlier).
3009 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3015 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3010
3016
3011 2005-06-08 Fernando Perez <fperez@colorado.edu>
3017 2005-06-08 Fernando Perez <fperez@colorado.edu>
3012
3018
3013 * IPython/iplib.py (write/write_err): Add methods to abstract all
3019 * IPython/iplib.py (write/write_err): Add methods to abstract all
3014 I/O a bit more.
3020 I/O a bit more.
3015
3021
3016 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3022 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3017 warning, reported by Aric Hagberg, fix by JD Hunter.
3023 warning, reported by Aric Hagberg, fix by JD Hunter.
3018
3024
3019 2005-06-02 *** Released version 0.6.15
3025 2005-06-02 *** Released version 0.6.15
3020
3026
3021 2005-06-01 Fernando Perez <fperez@colorado.edu>
3027 2005-06-01 Fernando Perez <fperez@colorado.edu>
3022
3028
3023 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3029 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3024 tab-completion of filenames within open-quoted strings. Note that
3030 tab-completion of filenames within open-quoted strings. Note that
3025 this requires that in ~/.ipython/ipythonrc, users change the
3031 this requires that in ~/.ipython/ipythonrc, users change the
3026 readline delimiters configuration to read:
3032 readline delimiters configuration to read:
3027
3033
3028 readline_remove_delims -/~
3034 readline_remove_delims -/~
3029
3035
3030
3036
3031 2005-05-31 *** Released version 0.6.14
3037 2005-05-31 *** Released version 0.6.14
3032
3038
3033 2005-05-29 Fernando Perez <fperez@colorado.edu>
3039 2005-05-29 Fernando Perez <fperez@colorado.edu>
3034
3040
3035 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3041 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3036 with files not on the filesystem. Reported by Eliyahu Sandler
3042 with files not on the filesystem. Reported by Eliyahu Sandler
3037 <eli@gondolin.net>
3043 <eli@gondolin.net>
3038
3044
3039 2005-05-22 Fernando Perez <fperez@colorado.edu>
3045 2005-05-22 Fernando Perez <fperez@colorado.edu>
3040
3046
3041 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3047 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3042 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3048 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3043
3049
3044 2005-05-19 Fernando Perez <fperez@colorado.edu>
3050 2005-05-19 Fernando Perez <fperez@colorado.edu>
3045
3051
3046 * IPython/iplib.py (safe_execfile): close a file which could be
3052 * IPython/iplib.py (safe_execfile): close a file which could be
3047 left open (causing problems in win32, which locks open files).
3053 left open (causing problems in win32, which locks open files).
3048 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3054 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3049
3055
3050 2005-05-18 Fernando Perez <fperez@colorado.edu>
3056 2005-05-18 Fernando Perez <fperez@colorado.edu>
3051
3057
3052 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3058 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3053 keyword arguments correctly to safe_execfile().
3059 keyword arguments correctly to safe_execfile().
3054
3060
3055 2005-05-13 Fernando Perez <fperez@colorado.edu>
3061 2005-05-13 Fernando Perez <fperez@colorado.edu>
3056
3062
3057 * ipython.1: Added info about Qt to manpage, and threads warning
3063 * ipython.1: Added info about Qt to manpage, and threads warning
3058 to usage page (invoked with --help).
3064 to usage page (invoked with --help).
3059
3065
3060 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3066 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3061 new matcher (it goes at the end of the priority list) to do
3067 new matcher (it goes at the end of the priority list) to do
3062 tab-completion on named function arguments. Submitted by George
3068 tab-completion on named function arguments. Submitted by George
3063 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3069 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3064 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3070 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3065 for more details.
3071 for more details.
3066
3072
3067 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3073 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3068 SystemExit exceptions in the script being run. Thanks to a report
3074 SystemExit exceptions in the script being run. Thanks to a report
3069 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3075 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3070 producing very annoying behavior when running unit tests.
3076 producing very annoying behavior when running unit tests.
3071
3077
3072 2005-05-12 Fernando Perez <fperez@colorado.edu>
3078 2005-05-12 Fernando Perez <fperez@colorado.edu>
3073
3079
3074 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3080 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3075 which I'd broken (again) due to a changed regexp. In the process,
3081 which I'd broken (again) due to a changed regexp. In the process,
3076 added ';' as an escape to auto-quote the whole line without
3082 added ';' as an escape to auto-quote the whole line without
3077 splitting its arguments. Thanks to a report by Jerry McRae
3083 splitting its arguments. Thanks to a report by Jerry McRae
3078 <qrs0xyc02-AT-sneakemail.com>.
3084 <qrs0xyc02-AT-sneakemail.com>.
3079
3085
3080 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3086 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3081 possible crashes caused by a TokenError. Reported by Ed Schofield
3087 possible crashes caused by a TokenError. Reported by Ed Schofield
3082 <schofield-AT-ftw.at>.
3088 <schofield-AT-ftw.at>.
3083
3089
3084 2005-05-06 Fernando Perez <fperez@colorado.edu>
3090 2005-05-06 Fernando Perez <fperez@colorado.edu>
3085
3091
3086 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3092 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3087
3093
3088 2005-04-29 Fernando Perez <fperez@colorado.edu>
3094 2005-04-29 Fernando Perez <fperez@colorado.edu>
3089
3095
3090 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3096 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3091 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3097 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3092 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3098 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3093 which provides support for Qt interactive usage (similar to the
3099 which provides support for Qt interactive usage (similar to the
3094 existing one for WX and GTK). This had been often requested.
3100 existing one for WX and GTK). This had been often requested.
3095
3101
3096 2005-04-14 *** Released version 0.6.13
3102 2005-04-14 *** Released version 0.6.13
3097
3103
3098 2005-04-08 Fernando Perez <fperez@colorado.edu>
3104 2005-04-08 Fernando Perez <fperez@colorado.edu>
3099
3105
3100 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3106 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3101 from _ofind, which gets called on almost every input line. Now,
3107 from _ofind, which gets called on almost every input line. Now,
3102 we only try to get docstrings if they are actually going to be
3108 we only try to get docstrings if they are actually going to be
3103 used (the overhead of fetching unnecessary docstrings can be
3109 used (the overhead of fetching unnecessary docstrings can be
3104 noticeable for certain objects, such as Pyro proxies).
3110 noticeable for certain objects, such as Pyro proxies).
3105
3111
3106 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3112 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3107 for completers. For some reason I had been passing them the state
3113 for completers. For some reason I had been passing them the state
3108 variable, which completers never actually need, and was in
3114 variable, which completers never actually need, and was in
3109 conflict with the rlcompleter API. Custom completers ONLY need to
3115 conflict with the rlcompleter API. Custom completers ONLY need to
3110 take the text parameter.
3116 take the text parameter.
3111
3117
3112 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3118 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3113 work correctly in pysh. I've also moved all the logic which used
3119 work correctly in pysh. I've also moved all the logic which used
3114 to be in pysh.py here, which will prevent problems with future
3120 to be in pysh.py here, which will prevent problems with future
3115 upgrades. However, this time I must warn users to update their
3121 upgrades. However, this time I must warn users to update their
3116 pysh profile to include the line
3122 pysh profile to include the line
3117
3123
3118 import_all IPython.Extensions.InterpreterExec
3124 import_all IPython.Extensions.InterpreterExec
3119
3125
3120 because otherwise things won't work for them. They MUST also
3126 because otherwise things won't work for them. They MUST also
3121 delete pysh.py and the line
3127 delete pysh.py and the line
3122
3128
3123 execfile pysh.py
3129 execfile pysh.py
3124
3130
3125 from their ipythonrc-pysh.
3131 from their ipythonrc-pysh.
3126
3132
3127 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3133 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3128 robust in the face of objects whose dir() returns non-strings
3134 robust in the face of objects whose dir() returns non-strings
3129 (which it shouldn't, but some broken libs like ITK do). Thanks to
3135 (which it shouldn't, but some broken libs like ITK do). Thanks to
3130 a patch by John Hunter (implemented differently, though). Also
3136 a patch by John Hunter (implemented differently, though). Also
3131 minor improvements by using .extend instead of + on lists.
3137 minor improvements by using .extend instead of + on lists.
3132
3138
3133 * pysh.py:
3139 * pysh.py:
3134
3140
3135 2005-04-06 Fernando Perez <fperez@colorado.edu>
3141 2005-04-06 Fernando Perez <fperez@colorado.edu>
3136
3142
3137 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3143 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3138 by default, so that all users benefit from it. Those who don't
3144 by default, so that all users benefit from it. Those who don't
3139 want it can still turn it off.
3145 want it can still turn it off.
3140
3146
3141 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3147 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3142 config file, I'd forgotten about this, so users were getting it
3148 config file, I'd forgotten about this, so users were getting it
3143 off by default.
3149 off by default.
3144
3150
3145 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3151 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3146 consistency. Now magics can be called in multiline statements,
3152 consistency. Now magics can be called in multiline statements,
3147 and python variables can be expanded in magic calls via $var.
3153 and python variables can be expanded in magic calls via $var.
3148 This makes the magic system behave just like aliases or !system
3154 This makes the magic system behave just like aliases or !system
3149 calls.
3155 calls.
3150
3156
3151 2005-03-28 Fernando Perez <fperez@colorado.edu>
3157 2005-03-28 Fernando Perez <fperez@colorado.edu>
3152
3158
3153 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3159 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3154 expensive string additions for building command. Add support for
3160 expensive string additions for building command. Add support for
3155 trailing ';' when autocall is used.
3161 trailing ';' when autocall is used.
3156
3162
3157 2005-03-26 Fernando Perez <fperez@colorado.edu>
3163 2005-03-26 Fernando Perez <fperez@colorado.edu>
3158
3164
3159 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3165 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3160 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3166 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3161 ipython.el robust against prompts with any number of spaces
3167 ipython.el robust against prompts with any number of spaces
3162 (including 0) after the ':' character.
3168 (including 0) after the ':' character.
3163
3169
3164 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3170 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3165 continuation prompt, which misled users to think the line was
3171 continuation prompt, which misled users to think the line was
3166 already indented. Closes debian Bug#300847, reported to me by
3172 already indented. Closes debian Bug#300847, reported to me by
3167 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3173 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3168
3174
3169 2005-03-23 Fernando Perez <fperez@colorado.edu>
3175 2005-03-23 Fernando Perez <fperez@colorado.edu>
3170
3176
3171 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3177 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3172 properly aligned if they have embedded newlines.
3178 properly aligned if they have embedded newlines.
3173
3179
3174 * IPython/iplib.py (runlines): Add a public method to expose
3180 * IPython/iplib.py (runlines): Add a public method to expose
3175 IPython's code execution machinery, so that users can run strings
3181 IPython's code execution machinery, so that users can run strings
3176 as if they had been typed at the prompt interactively.
3182 as if they had been typed at the prompt interactively.
3177 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3183 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3178 methods which can call the system shell, but with python variable
3184 methods which can call the system shell, but with python variable
3179 expansion. The three such methods are: __IPYTHON__.system,
3185 expansion. The three such methods are: __IPYTHON__.system,
3180 .getoutput and .getoutputerror. These need to be documented in a
3186 .getoutput and .getoutputerror. These need to be documented in a
3181 'public API' section (to be written) of the manual.
3187 'public API' section (to be written) of the manual.
3182
3188
3183 2005-03-20 Fernando Perez <fperez@colorado.edu>
3189 2005-03-20 Fernando Perez <fperez@colorado.edu>
3184
3190
3185 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3191 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3186 for custom exception handling. This is quite powerful, and it
3192 for custom exception handling. This is quite powerful, and it
3187 allows for user-installable exception handlers which can trap
3193 allows for user-installable exception handlers which can trap
3188 custom exceptions at runtime and treat them separately from
3194 custom exceptions at runtime and treat them separately from
3189 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3195 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3190 Mantegazza <mantegazza-AT-ill.fr>.
3196 Mantegazza <mantegazza-AT-ill.fr>.
3191 (InteractiveShell.set_custom_completer): public API function to
3197 (InteractiveShell.set_custom_completer): public API function to
3192 add new completers at runtime.
3198 add new completers at runtime.
3193
3199
3194 2005-03-19 Fernando Perez <fperez@colorado.edu>
3200 2005-03-19 Fernando Perez <fperez@colorado.edu>
3195
3201
3196 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3202 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3197 allow objects which provide their docstrings via non-standard
3203 allow objects which provide their docstrings via non-standard
3198 mechanisms (like Pyro proxies) to still be inspected by ipython's
3204 mechanisms (like Pyro proxies) to still be inspected by ipython's
3199 ? system.
3205 ? system.
3200
3206
3201 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3207 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3202 automatic capture system. I tried quite hard to make it work
3208 automatic capture system. I tried quite hard to make it work
3203 reliably, and simply failed. I tried many combinations with the
3209 reliably, and simply failed. I tried many combinations with the
3204 subprocess module, but eventually nothing worked in all needed
3210 subprocess module, but eventually nothing worked in all needed
3205 cases (not blocking stdin for the child, duplicating stdout
3211 cases (not blocking stdin for the child, duplicating stdout
3206 without blocking, etc). The new %sc/%sx still do capture to these
3212 without blocking, etc). The new %sc/%sx still do capture to these
3207 magical list/string objects which make shell use much more
3213 magical list/string objects which make shell use much more
3208 conveninent, so not all is lost.
3214 conveninent, so not all is lost.
3209
3215
3210 XXX - FIX MANUAL for the change above!
3216 XXX - FIX MANUAL for the change above!
3211
3217
3212 (runsource): I copied code.py's runsource() into ipython to modify
3218 (runsource): I copied code.py's runsource() into ipython to modify
3213 it a bit. Now the code object and source to be executed are
3219 it a bit. Now the code object and source to be executed are
3214 stored in ipython. This makes this info accessible to third-party
3220 stored in ipython. This makes this info accessible to third-party
3215 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3221 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3216 Mantegazza <mantegazza-AT-ill.fr>.
3222 Mantegazza <mantegazza-AT-ill.fr>.
3217
3223
3218 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3224 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3219 history-search via readline (like C-p/C-n). I'd wanted this for a
3225 history-search via readline (like C-p/C-n). I'd wanted this for a
3220 long time, but only recently found out how to do it. For users
3226 long time, but only recently found out how to do it. For users
3221 who already have their ipythonrc files made and want this, just
3227 who already have their ipythonrc files made and want this, just
3222 add:
3228 add:
3223
3229
3224 readline_parse_and_bind "\e[A": history-search-backward
3230 readline_parse_and_bind "\e[A": history-search-backward
3225 readline_parse_and_bind "\e[B": history-search-forward
3231 readline_parse_and_bind "\e[B": history-search-forward
3226
3232
3227 2005-03-18 Fernando Perez <fperez@colorado.edu>
3233 2005-03-18 Fernando Perez <fperez@colorado.edu>
3228
3234
3229 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3235 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3230 LSString and SList classes which allow transparent conversions
3236 LSString and SList classes which allow transparent conversions
3231 between list mode and whitespace-separated string.
3237 between list mode and whitespace-separated string.
3232 (magic_r): Fix recursion problem in %r.
3238 (magic_r): Fix recursion problem in %r.
3233
3239
3234 * IPython/genutils.py (LSString): New class to be used for
3240 * IPython/genutils.py (LSString): New class to be used for
3235 automatic storage of the results of all alias/system calls in _o
3241 automatic storage of the results of all alias/system calls in _o
3236 and _e (stdout/err). These provide a .l/.list attribute which
3242 and _e (stdout/err). These provide a .l/.list attribute which
3237 does automatic splitting on newlines. This means that for most
3243 does automatic splitting on newlines. This means that for most
3238 uses, you'll never need to do capturing of output with %sc/%sx
3244 uses, you'll never need to do capturing of output with %sc/%sx
3239 anymore, since ipython keeps this always done for you. Note that
3245 anymore, since ipython keeps this always done for you. Note that
3240 only the LAST results are stored, the _o/e variables are
3246 only the LAST results are stored, the _o/e variables are
3241 overwritten on each call. If you need to save their contents
3247 overwritten on each call. If you need to save their contents
3242 further, simply bind them to any other name.
3248 further, simply bind them to any other name.
3243
3249
3244 2005-03-17 Fernando Perez <fperez@colorado.edu>
3250 2005-03-17 Fernando Perez <fperez@colorado.edu>
3245
3251
3246 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3252 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3247 prompt namespace handling.
3253 prompt namespace handling.
3248
3254
3249 2005-03-16 Fernando Perez <fperez@colorado.edu>
3255 2005-03-16 Fernando Perez <fperez@colorado.edu>
3250
3256
3251 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3257 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3252 classic prompts to be '>>> ' (final space was missing, and it
3258 classic prompts to be '>>> ' (final space was missing, and it
3253 trips the emacs python mode).
3259 trips the emacs python mode).
3254 (BasePrompt.__str__): Added safe support for dynamic prompt
3260 (BasePrompt.__str__): Added safe support for dynamic prompt
3255 strings. Now you can set your prompt string to be '$x', and the
3261 strings. Now you can set your prompt string to be '$x', and the
3256 value of x will be printed from your interactive namespace. The
3262 value of x will be printed from your interactive namespace. The
3257 interpolation syntax includes the full Itpl support, so
3263 interpolation syntax includes the full Itpl support, so
3258 ${foo()+x+bar()} is a valid prompt string now, and the function
3264 ${foo()+x+bar()} is a valid prompt string now, and the function
3259 calls will be made at runtime.
3265 calls will be made at runtime.
3260
3266
3261 2005-03-15 Fernando Perez <fperez@colorado.edu>
3267 2005-03-15 Fernando Perez <fperez@colorado.edu>
3262
3268
3263 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3269 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3264 avoid name clashes in pylab. %hist still works, it just forwards
3270 avoid name clashes in pylab. %hist still works, it just forwards
3265 the call to %history.
3271 the call to %history.
3266
3272
3267 2005-03-02 *** Released version 0.6.12
3273 2005-03-02 *** Released version 0.6.12
3268
3274
3269 2005-03-02 Fernando Perez <fperez@colorado.edu>
3275 2005-03-02 Fernando Perez <fperez@colorado.edu>
3270
3276
3271 * IPython/iplib.py (handle_magic): log magic calls properly as
3277 * IPython/iplib.py (handle_magic): log magic calls properly as
3272 ipmagic() function calls.
3278 ipmagic() function calls.
3273
3279
3274 * IPython/Magic.py (magic_time): Improved %time to support
3280 * IPython/Magic.py (magic_time): Improved %time to support
3275 statements and provide wall-clock as well as CPU time.
3281 statements and provide wall-clock as well as CPU time.
3276
3282
3277 2005-02-27 Fernando Perez <fperez@colorado.edu>
3283 2005-02-27 Fernando Perez <fperez@colorado.edu>
3278
3284
3279 * IPython/hooks.py: New hooks module, to expose user-modifiable
3285 * IPython/hooks.py: New hooks module, to expose user-modifiable
3280 IPython functionality in a clean manner. For now only the editor
3286 IPython functionality in a clean manner. For now only the editor
3281 hook is actually written, and other thigns which I intend to turn
3287 hook is actually written, and other thigns which I intend to turn
3282 into proper hooks aren't yet there. The display and prefilter
3288 into proper hooks aren't yet there. The display and prefilter
3283 stuff, for example, should be hooks. But at least now the
3289 stuff, for example, should be hooks. But at least now the
3284 framework is in place, and the rest can be moved here with more
3290 framework is in place, and the rest can be moved here with more
3285 time later. IPython had had a .hooks variable for a long time for
3291 time later. IPython had had a .hooks variable for a long time for
3286 this purpose, but I'd never actually used it for anything.
3292 this purpose, but I'd never actually used it for anything.
3287
3293
3288 2005-02-26 Fernando Perez <fperez@colorado.edu>
3294 2005-02-26 Fernando Perez <fperez@colorado.edu>
3289
3295
3290 * IPython/ipmaker.py (make_IPython): make the default ipython
3296 * IPython/ipmaker.py (make_IPython): make the default ipython
3291 directory be called _ipython under win32, to follow more the
3297 directory be called _ipython under win32, to follow more the
3292 naming peculiarities of that platform (where buggy software like
3298 naming peculiarities of that platform (where buggy software like
3293 Visual Sourcesafe breaks with .named directories). Reported by
3299 Visual Sourcesafe breaks with .named directories). Reported by
3294 Ville Vainio.
3300 Ville Vainio.
3295
3301
3296 2005-02-23 Fernando Perez <fperez@colorado.edu>
3302 2005-02-23 Fernando Perez <fperez@colorado.edu>
3297
3303
3298 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3304 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3299 auto_aliases for win32 which were causing problems. Users can
3305 auto_aliases for win32 which were causing problems. Users can
3300 define the ones they personally like.
3306 define the ones they personally like.
3301
3307
3302 2005-02-21 Fernando Perez <fperez@colorado.edu>
3308 2005-02-21 Fernando Perez <fperez@colorado.edu>
3303
3309
3304 * IPython/Magic.py (magic_time): new magic to time execution of
3310 * IPython/Magic.py (magic_time): new magic to time execution of
3305 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3311 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3306
3312
3307 2005-02-19 Fernando Perez <fperez@colorado.edu>
3313 2005-02-19 Fernando Perez <fperez@colorado.edu>
3308
3314
3309 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3315 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3310 into keys (for prompts, for example).
3316 into keys (for prompts, for example).
3311
3317
3312 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3318 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3313 prompts in case users want them. This introduces a small behavior
3319 prompts in case users want them. This introduces a small behavior
3314 change: ipython does not automatically add a space to all prompts
3320 change: ipython does not automatically add a space to all prompts
3315 anymore. To get the old prompts with a space, users should add it
3321 anymore. To get the old prompts with a space, users should add it
3316 manually to their ipythonrc file, so for example prompt_in1 should
3322 manually to their ipythonrc file, so for example prompt_in1 should
3317 now read 'In [\#]: ' instead of 'In [\#]:'.
3323 now read 'In [\#]: ' instead of 'In [\#]:'.
3318 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3324 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3319 file) to control left-padding of secondary prompts.
3325 file) to control left-padding of secondary prompts.
3320
3326
3321 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3327 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3322 the profiler can't be imported. Fix for Debian, which removed
3328 the profiler can't be imported. Fix for Debian, which removed
3323 profile.py because of License issues. I applied a slightly
3329 profile.py because of License issues. I applied a slightly
3324 modified version of the original Debian patch at
3330 modified version of the original Debian patch at
3325 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3331 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3326
3332
3327 2005-02-17 Fernando Perez <fperez@colorado.edu>
3333 2005-02-17 Fernando Perez <fperez@colorado.edu>
3328
3334
3329 * IPython/genutils.py (native_line_ends): Fix bug which would
3335 * IPython/genutils.py (native_line_ends): Fix bug which would
3330 cause improper line-ends under win32 b/c I was not opening files
3336 cause improper line-ends under win32 b/c I was not opening files
3331 in binary mode. Bug report and fix thanks to Ville.
3337 in binary mode. Bug report and fix thanks to Ville.
3332
3338
3333 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3339 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3334 trying to catch spurious foo[1] autocalls. My fix actually broke
3340 trying to catch spurious foo[1] autocalls. My fix actually broke
3335 ',/' autoquote/call with explicit escape (bad regexp).
3341 ',/' autoquote/call with explicit escape (bad regexp).
3336
3342
3337 2005-02-15 *** Released version 0.6.11
3343 2005-02-15 *** Released version 0.6.11
3338
3344
3339 2005-02-14 Fernando Perez <fperez@colorado.edu>
3345 2005-02-14 Fernando Perez <fperez@colorado.edu>
3340
3346
3341 * IPython/background_jobs.py: New background job management
3347 * IPython/background_jobs.py: New background job management
3342 subsystem. This is implemented via a new set of classes, and
3348 subsystem. This is implemented via a new set of classes, and
3343 IPython now provides a builtin 'jobs' object for background job
3349 IPython now provides a builtin 'jobs' object for background job
3344 execution. A convenience %bg magic serves as a lightweight
3350 execution. A convenience %bg magic serves as a lightweight
3345 frontend for starting the more common type of calls. This was
3351 frontend for starting the more common type of calls. This was
3346 inspired by discussions with B. Granger and the BackgroundCommand
3352 inspired by discussions with B. Granger and the BackgroundCommand
3347 class described in the book Python Scripting for Computational
3353 class described in the book Python Scripting for Computational
3348 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3354 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3349 (although ultimately no code from this text was used, as IPython's
3355 (although ultimately no code from this text was used, as IPython's
3350 system is a separate implementation).
3356 system is a separate implementation).
3351
3357
3352 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3358 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3353 to control the completion of single/double underscore names
3359 to control the completion of single/double underscore names
3354 separately. As documented in the example ipytonrc file, the
3360 separately. As documented in the example ipytonrc file, the
3355 readline_omit__names variable can now be set to 2, to omit even
3361 readline_omit__names variable can now be set to 2, to omit even
3356 single underscore names. Thanks to a patch by Brian Wong
3362 single underscore names. Thanks to a patch by Brian Wong
3357 <BrianWong-AT-AirgoNetworks.Com>.
3363 <BrianWong-AT-AirgoNetworks.Com>.
3358 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3364 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3359 be autocalled as foo([1]) if foo were callable. A problem for
3365 be autocalled as foo([1]) if foo were callable. A problem for
3360 things which are both callable and implement __getitem__.
3366 things which are both callable and implement __getitem__.
3361 (init_readline): Fix autoindentation for win32. Thanks to a patch
3367 (init_readline): Fix autoindentation for win32. Thanks to a patch
3362 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3368 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3363
3369
3364 2005-02-12 Fernando Perez <fperez@colorado.edu>
3370 2005-02-12 Fernando Perez <fperez@colorado.edu>
3365
3371
3366 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3372 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3367 which I had written long ago to sort out user error messages which
3373 which I had written long ago to sort out user error messages which
3368 may occur during startup. This seemed like a good idea initially,
3374 may occur during startup. This seemed like a good idea initially,
3369 but it has proven a disaster in retrospect. I don't want to
3375 but it has proven a disaster in retrospect. I don't want to
3370 change much code for now, so my fix is to set the internal 'debug'
3376 change much code for now, so my fix is to set the internal 'debug'
3371 flag to true everywhere, whose only job was precisely to control
3377 flag to true everywhere, whose only job was precisely to control
3372 this subsystem. This closes issue 28 (as well as avoiding all
3378 this subsystem. This closes issue 28 (as well as avoiding all
3373 sorts of strange hangups which occur from time to time).
3379 sorts of strange hangups which occur from time to time).
3374
3380
3375 2005-02-07 Fernando Perez <fperez@colorado.edu>
3381 2005-02-07 Fernando Perez <fperez@colorado.edu>
3376
3382
3377 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3383 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3378 previous call produced a syntax error.
3384 previous call produced a syntax error.
3379
3385
3380 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3386 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3381 classes without constructor.
3387 classes without constructor.
3382
3388
3383 2005-02-06 Fernando Perez <fperez@colorado.edu>
3389 2005-02-06 Fernando Perez <fperez@colorado.edu>
3384
3390
3385 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3391 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3386 completions with the results of each matcher, so we return results
3392 completions with the results of each matcher, so we return results
3387 to the user from all namespaces. This breaks with ipython
3393 to the user from all namespaces. This breaks with ipython
3388 tradition, but I think it's a nicer behavior. Now you get all
3394 tradition, but I think it's a nicer behavior. Now you get all
3389 possible completions listed, from all possible namespaces (python,
3395 possible completions listed, from all possible namespaces (python,
3390 filesystem, magics...) After a request by John Hunter
3396 filesystem, magics...) After a request by John Hunter
3391 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3397 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3392
3398
3393 2005-02-05 Fernando Perez <fperez@colorado.edu>
3399 2005-02-05 Fernando Perez <fperez@colorado.edu>
3394
3400
3395 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3401 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3396 the call had quote characters in it (the quotes were stripped).
3402 the call had quote characters in it (the quotes were stripped).
3397
3403
3398 2005-01-31 Fernando Perez <fperez@colorado.edu>
3404 2005-01-31 Fernando Perez <fperez@colorado.edu>
3399
3405
3400 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3406 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3401 Itpl.itpl() to make the code more robust against psyco
3407 Itpl.itpl() to make the code more robust against psyco
3402 optimizations.
3408 optimizations.
3403
3409
3404 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3410 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3405 of causing an exception. Quicker, cleaner.
3411 of causing an exception. Quicker, cleaner.
3406
3412
3407 2005-01-28 Fernando Perez <fperez@colorado.edu>
3413 2005-01-28 Fernando Perez <fperez@colorado.edu>
3408
3414
3409 * scripts/ipython_win_post_install.py (install): hardcode
3415 * scripts/ipython_win_post_install.py (install): hardcode
3410 sys.prefix+'python.exe' as the executable path. It turns out that
3416 sys.prefix+'python.exe' as the executable path. It turns out that
3411 during the post-installation run, sys.executable resolves to the
3417 during the post-installation run, sys.executable resolves to the
3412 name of the binary installer! I should report this as a distutils
3418 name of the binary installer! I should report this as a distutils
3413 bug, I think. I updated the .10 release with this tiny fix, to
3419 bug, I think. I updated the .10 release with this tiny fix, to
3414 avoid annoying the lists further.
3420 avoid annoying the lists further.
3415
3421
3416 2005-01-27 *** Released version 0.6.10
3422 2005-01-27 *** Released version 0.6.10
3417
3423
3418 2005-01-27 Fernando Perez <fperez@colorado.edu>
3424 2005-01-27 Fernando Perez <fperez@colorado.edu>
3419
3425
3420 * IPython/numutils.py (norm): Added 'inf' as optional name for
3426 * IPython/numutils.py (norm): Added 'inf' as optional name for
3421 L-infinity norm, included references to mathworld.com for vector
3427 L-infinity norm, included references to mathworld.com for vector
3422 norm definitions.
3428 norm definitions.
3423 (amin/amax): added amin/amax for array min/max. Similar to what
3429 (amin/amax): added amin/amax for array min/max. Similar to what
3424 pylab ships with after the recent reorganization of names.
3430 pylab ships with after the recent reorganization of names.
3425 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3431 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3426
3432
3427 * ipython.el: committed Alex's recent fixes and improvements.
3433 * ipython.el: committed Alex's recent fixes and improvements.
3428 Tested with python-mode from CVS, and it looks excellent. Since
3434 Tested with python-mode from CVS, and it looks excellent. Since
3429 python-mode hasn't released anything in a while, I'm temporarily
3435 python-mode hasn't released anything in a while, I'm temporarily
3430 putting a copy of today's CVS (v 4.70) of python-mode in:
3436 putting a copy of today's CVS (v 4.70) of python-mode in:
3431 http://ipython.scipy.org/tmp/python-mode.el
3437 http://ipython.scipy.org/tmp/python-mode.el
3432
3438
3433 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3439 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3434 sys.executable for the executable name, instead of assuming it's
3440 sys.executable for the executable name, instead of assuming it's
3435 called 'python.exe' (the post-installer would have produced broken
3441 called 'python.exe' (the post-installer would have produced broken
3436 setups on systems with a differently named python binary).
3442 setups on systems with a differently named python binary).
3437
3443
3438 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3444 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3439 references to os.linesep, to make the code more
3445 references to os.linesep, to make the code more
3440 platform-independent. This is also part of the win32 coloring
3446 platform-independent. This is also part of the win32 coloring
3441 fixes.
3447 fixes.
3442
3448
3443 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3449 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3444 lines, which actually cause coloring bugs because the length of
3450 lines, which actually cause coloring bugs because the length of
3445 the line is very difficult to correctly compute with embedded
3451 the line is very difficult to correctly compute with embedded
3446 escapes. This was the source of all the coloring problems under
3452 escapes. This was the source of all the coloring problems under
3447 Win32. I think that _finally_, Win32 users have a properly
3453 Win32. I think that _finally_, Win32 users have a properly
3448 working ipython in all respects. This would never have happened
3454 working ipython in all respects. This would never have happened
3449 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3455 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3450
3456
3451 2005-01-26 *** Released version 0.6.9
3457 2005-01-26 *** Released version 0.6.9
3452
3458
3453 2005-01-25 Fernando Perez <fperez@colorado.edu>
3459 2005-01-25 Fernando Perez <fperez@colorado.edu>
3454
3460
3455 * setup.py: finally, we have a true Windows installer, thanks to
3461 * setup.py: finally, we have a true Windows installer, thanks to
3456 the excellent work of Viktor Ransmayr
3462 the excellent work of Viktor Ransmayr
3457 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3463 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3458 Windows users. The setup routine is quite a bit cleaner thanks to
3464 Windows users. The setup routine is quite a bit cleaner thanks to
3459 this, and the post-install script uses the proper functions to
3465 this, and the post-install script uses the proper functions to
3460 allow a clean de-installation using the standard Windows Control
3466 allow a clean de-installation using the standard Windows Control
3461 Panel.
3467 Panel.
3462
3468
3463 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3469 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3464 environment variable under all OSes (including win32) if
3470 environment variable under all OSes (including win32) if
3465 available. This will give consistency to win32 users who have set
3471 available. This will give consistency to win32 users who have set
3466 this variable for any reason. If os.environ['HOME'] fails, the
3472 this variable for any reason. If os.environ['HOME'] fails, the
3467 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3473 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3468
3474
3469 2005-01-24 Fernando Perez <fperez@colorado.edu>
3475 2005-01-24 Fernando Perez <fperez@colorado.edu>
3470
3476
3471 * IPython/numutils.py (empty_like): add empty_like(), similar to
3477 * IPython/numutils.py (empty_like): add empty_like(), similar to
3472 zeros_like() but taking advantage of the new empty() Numeric routine.
3478 zeros_like() but taking advantage of the new empty() Numeric routine.
3473
3479
3474 2005-01-23 *** Released version 0.6.8
3480 2005-01-23 *** Released version 0.6.8
3475
3481
3476 2005-01-22 Fernando Perez <fperez@colorado.edu>
3482 2005-01-22 Fernando Perez <fperez@colorado.edu>
3477
3483
3478 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3484 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3479 automatic show() calls. After discussing things with JDH, it
3485 automatic show() calls. After discussing things with JDH, it
3480 turns out there are too many corner cases where this can go wrong.
3486 turns out there are too many corner cases where this can go wrong.
3481 It's best not to try to be 'too smart', and simply have ipython
3487 It's best not to try to be 'too smart', and simply have ipython
3482 reproduce as much as possible the default behavior of a normal
3488 reproduce as much as possible the default behavior of a normal
3483 python shell.
3489 python shell.
3484
3490
3485 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3491 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3486 line-splitting regexp and _prefilter() to avoid calling getattr()
3492 line-splitting regexp and _prefilter() to avoid calling getattr()
3487 on assignments. This closes
3493 on assignments. This closes
3488 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3494 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3489 readline uses getattr(), so a simple <TAB> keypress is still
3495 readline uses getattr(), so a simple <TAB> keypress is still
3490 enough to trigger getattr() calls on an object.
3496 enough to trigger getattr() calls on an object.
3491
3497
3492 2005-01-21 Fernando Perez <fperez@colorado.edu>
3498 2005-01-21 Fernando Perez <fperez@colorado.edu>
3493
3499
3494 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3500 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3495 docstring under pylab so it doesn't mask the original.
3501 docstring under pylab so it doesn't mask the original.
3496
3502
3497 2005-01-21 *** Released version 0.6.7
3503 2005-01-21 *** Released version 0.6.7
3498
3504
3499 2005-01-21 Fernando Perez <fperez@colorado.edu>
3505 2005-01-21 Fernando Perez <fperez@colorado.edu>
3500
3506
3501 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3507 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3502 signal handling for win32 users in multithreaded mode.
3508 signal handling for win32 users in multithreaded mode.
3503
3509
3504 2005-01-17 Fernando Perez <fperez@colorado.edu>
3510 2005-01-17 Fernando Perez <fperez@colorado.edu>
3505
3511
3506 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3512 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3507 instances with no __init__. After a crash report by Norbert Nemec
3513 instances with no __init__. After a crash report by Norbert Nemec
3508 <Norbert-AT-nemec-online.de>.
3514 <Norbert-AT-nemec-online.de>.
3509
3515
3510 2005-01-14 Fernando Perez <fperez@colorado.edu>
3516 2005-01-14 Fernando Perez <fperez@colorado.edu>
3511
3517
3512 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3518 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3513 names for verbose exceptions, when multiple dotted names and the
3519 names for verbose exceptions, when multiple dotted names and the
3514 'parent' object were present on the same line.
3520 'parent' object were present on the same line.
3515
3521
3516 2005-01-11 Fernando Perez <fperez@colorado.edu>
3522 2005-01-11 Fernando Perez <fperez@colorado.edu>
3517
3523
3518 * IPython/genutils.py (flag_calls): new utility to trap and flag
3524 * IPython/genutils.py (flag_calls): new utility to trap and flag
3519 calls in functions. I need it to clean up matplotlib support.
3525 calls in functions. I need it to clean up matplotlib support.
3520 Also removed some deprecated code in genutils.
3526 Also removed some deprecated code in genutils.
3521
3527
3522 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3528 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3523 that matplotlib scripts called with %run, which don't call show()
3529 that matplotlib scripts called with %run, which don't call show()
3524 themselves, still have their plotting windows open.
3530 themselves, still have their plotting windows open.
3525
3531
3526 2005-01-05 Fernando Perez <fperez@colorado.edu>
3532 2005-01-05 Fernando Perez <fperez@colorado.edu>
3527
3533
3528 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3534 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3529 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3535 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3530
3536
3531 2004-12-19 Fernando Perez <fperez@colorado.edu>
3537 2004-12-19 Fernando Perez <fperez@colorado.edu>
3532
3538
3533 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3539 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3534 parent_runcode, which was an eyesore. The same result can be
3540 parent_runcode, which was an eyesore. The same result can be
3535 obtained with Python's regular superclass mechanisms.
3541 obtained with Python's regular superclass mechanisms.
3536
3542
3537 2004-12-17 Fernando Perez <fperez@colorado.edu>
3543 2004-12-17 Fernando Perez <fperez@colorado.edu>
3538
3544
3539 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3545 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3540 reported by Prabhu.
3546 reported by Prabhu.
3541 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3547 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3542 sys.stderr) instead of explicitly calling sys.stderr. This helps
3548 sys.stderr) instead of explicitly calling sys.stderr. This helps
3543 maintain our I/O abstractions clean, for future GUI embeddings.
3549 maintain our I/O abstractions clean, for future GUI embeddings.
3544
3550
3545 * IPython/genutils.py (info): added new utility for sys.stderr
3551 * IPython/genutils.py (info): added new utility for sys.stderr
3546 unified info message handling (thin wrapper around warn()).
3552 unified info message handling (thin wrapper around warn()).
3547
3553
3548 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3554 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3549 composite (dotted) names on verbose exceptions.
3555 composite (dotted) names on verbose exceptions.
3550 (VerboseTB.nullrepr): harden against another kind of errors which
3556 (VerboseTB.nullrepr): harden against another kind of errors which
3551 Python's inspect module can trigger, and which were crashing
3557 Python's inspect module can trigger, and which were crashing
3552 IPython. Thanks to a report by Marco Lombardi
3558 IPython. Thanks to a report by Marco Lombardi
3553 <mlombard-AT-ma010192.hq.eso.org>.
3559 <mlombard-AT-ma010192.hq.eso.org>.
3554
3560
3555 2004-12-13 *** Released version 0.6.6
3561 2004-12-13 *** Released version 0.6.6
3556
3562
3557 2004-12-12 Fernando Perez <fperez@colorado.edu>
3563 2004-12-12 Fernando Perez <fperez@colorado.edu>
3558
3564
3559 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3565 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3560 generated by pygtk upon initialization if it was built without
3566 generated by pygtk upon initialization if it was built without
3561 threads (for matplotlib users). After a crash reported by
3567 threads (for matplotlib users). After a crash reported by
3562 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3568 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3563
3569
3564 * IPython/ipmaker.py (make_IPython): fix small bug in the
3570 * IPython/ipmaker.py (make_IPython): fix small bug in the
3565 import_some parameter for multiple imports.
3571 import_some parameter for multiple imports.
3566
3572
3567 * IPython/iplib.py (ipmagic): simplified the interface of
3573 * IPython/iplib.py (ipmagic): simplified the interface of
3568 ipmagic() to take a single string argument, just as it would be
3574 ipmagic() to take a single string argument, just as it would be
3569 typed at the IPython cmd line.
3575 typed at the IPython cmd line.
3570 (ipalias): Added new ipalias() with an interface identical to
3576 (ipalias): Added new ipalias() with an interface identical to
3571 ipmagic(). This completes exposing a pure python interface to the
3577 ipmagic(). This completes exposing a pure python interface to the
3572 alias and magic system, which can be used in loops or more complex
3578 alias and magic system, which can be used in loops or more complex
3573 code where IPython's automatic line mangling is not active.
3579 code where IPython's automatic line mangling is not active.
3574
3580
3575 * IPython/genutils.py (timing): changed interface of timing to
3581 * IPython/genutils.py (timing): changed interface of timing to
3576 simply run code once, which is the most common case. timings()
3582 simply run code once, which is the most common case. timings()
3577 remains unchanged, for the cases where you want multiple runs.
3583 remains unchanged, for the cases where you want multiple runs.
3578
3584
3579 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3585 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3580 bug where Python2.2 crashes with exec'ing code which does not end
3586 bug where Python2.2 crashes with exec'ing code which does not end
3581 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3587 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3582 before.
3588 before.
3583
3589
3584 2004-12-10 Fernando Perez <fperez@colorado.edu>
3590 2004-12-10 Fernando Perez <fperez@colorado.edu>
3585
3591
3586 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3592 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3587 -t to -T, to accomodate the new -t flag in %run (the %run and
3593 -t to -T, to accomodate the new -t flag in %run (the %run and
3588 %prun options are kind of intermixed, and it's not easy to change
3594 %prun options are kind of intermixed, and it's not easy to change
3589 this with the limitations of python's getopt).
3595 this with the limitations of python's getopt).
3590
3596
3591 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3597 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3592 the execution of scripts. It's not as fine-tuned as timeit.py,
3598 the execution of scripts. It's not as fine-tuned as timeit.py,
3593 but it works from inside ipython (and under 2.2, which lacks
3599 but it works from inside ipython (and under 2.2, which lacks
3594 timeit.py). Optionally a number of runs > 1 can be given for
3600 timeit.py). Optionally a number of runs > 1 can be given for
3595 timing very short-running code.
3601 timing very short-running code.
3596
3602
3597 * IPython/genutils.py (uniq_stable): new routine which returns a
3603 * IPython/genutils.py (uniq_stable): new routine which returns a
3598 list of unique elements in any iterable, but in stable order of
3604 list of unique elements in any iterable, but in stable order of
3599 appearance. I needed this for the ultraTB fixes, and it's a handy
3605 appearance. I needed this for the ultraTB fixes, and it's a handy
3600 utility.
3606 utility.
3601
3607
3602 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3608 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3603 dotted names in Verbose exceptions. This had been broken since
3609 dotted names in Verbose exceptions. This had been broken since
3604 the very start, now x.y will properly be printed in a Verbose
3610 the very start, now x.y will properly be printed in a Verbose
3605 traceback, instead of x being shown and y appearing always as an
3611 traceback, instead of x being shown and y appearing always as an
3606 'undefined global'. Getting this to work was a bit tricky,
3612 'undefined global'. Getting this to work was a bit tricky,
3607 because by default python tokenizers are stateless. Saved by
3613 because by default python tokenizers are stateless. Saved by
3608 python's ability to easily add a bit of state to an arbitrary
3614 python's ability to easily add a bit of state to an arbitrary
3609 function (without needing to build a full-blown callable object).
3615 function (without needing to build a full-blown callable object).
3610
3616
3611 Also big cleanup of this code, which had horrendous runtime
3617 Also big cleanup of this code, which had horrendous runtime
3612 lookups of zillions of attributes for colorization. Moved all
3618 lookups of zillions of attributes for colorization. Moved all
3613 this code into a few templates, which make it cleaner and quicker.
3619 this code into a few templates, which make it cleaner and quicker.
3614
3620
3615 Printout quality was also improved for Verbose exceptions: one
3621 Printout quality was also improved for Verbose exceptions: one
3616 variable per line, and memory addresses are printed (this can be
3622 variable per line, and memory addresses are printed (this can be
3617 quite handy in nasty debugging situations, which is what Verbose
3623 quite handy in nasty debugging situations, which is what Verbose
3618 is for).
3624 is for).
3619
3625
3620 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3626 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3621 the command line as scripts to be loaded by embedded instances.
3627 the command line as scripts to be loaded by embedded instances.
3622 Doing so has the potential for an infinite recursion if there are
3628 Doing so has the potential for an infinite recursion if there are
3623 exceptions thrown in the process. This fixes a strange crash
3629 exceptions thrown in the process. This fixes a strange crash
3624 reported by Philippe MULLER <muller-AT-irit.fr>.
3630 reported by Philippe MULLER <muller-AT-irit.fr>.
3625
3631
3626 2004-12-09 Fernando Perez <fperez@colorado.edu>
3632 2004-12-09 Fernando Perez <fperez@colorado.edu>
3627
3633
3628 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3634 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3629 to reflect new names in matplotlib, which now expose the
3635 to reflect new names in matplotlib, which now expose the
3630 matlab-compatible interface via a pylab module instead of the
3636 matlab-compatible interface via a pylab module instead of the
3631 'matlab' name. The new code is backwards compatible, so users of
3637 'matlab' name. The new code is backwards compatible, so users of
3632 all matplotlib versions are OK. Patch by J. Hunter.
3638 all matplotlib versions are OK. Patch by J. Hunter.
3633
3639
3634 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3640 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3635 of __init__ docstrings for instances (class docstrings are already
3641 of __init__ docstrings for instances (class docstrings are already
3636 automatically printed). Instances with customized docstrings
3642 automatically printed). Instances with customized docstrings
3637 (indep. of the class) are also recognized and all 3 separate
3643 (indep. of the class) are also recognized and all 3 separate
3638 docstrings are printed (instance, class, constructor). After some
3644 docstrings are printed (instance, class, constructor). After some
3639 comments/suggestions by J. Hunter.
3645 comments/suggestions by J. Hunter.
3640
3646
3641 2004-12-05 Fernando Perez <fperez@colorado.edu>
3647 2004-12-05 Fernando Perez <fperez@colorado.edu>
3642
3648
3643 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3649 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3644 warnings when tab-completion fails and triggers an exception.
3650 warnings when tab-completion fails and triggers an exception.
3645
3651
3646 2004-12-03 Fernando Perez <fperez@colorado.edu>
3652 2004-12-03 Fernando Perez <fperez@colorado.edu>
3647
3653
3648 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3654 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3649 be triggered when using 'run -p'. An incorrect option flag was
3655 be triggered when using 'run -p'. An incorrect option flag was
3650 being set ('d' instead of 'D').
3656 being set ('d' instead of 'D').
3651 (manpage): fix missing escaped \- sign.
3657 (manpage): fix missing escaped \- sign.
3652
3658
3653 2004-11-30 *** Released version 0.6.5
3659 2004-11-30 *** Released version 0.6.5
3654
3660
3655 2004-11-30 Fernando Perez <fperez@colorado.edu>
3661 2004-11-30 Fernando Perez <fperez@colorado.edu>
3656
3662
3657 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3663 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3658 setting with -d option.
3664 setting with -d option.
3659
3665
3660 * setup.py (docfiles): Fix problem where the doc glob I was using
3666 * setup.py (docfiles): Fix problem where the doc glob I was using
3661 was COMPLETELY BROKEN. It was giving the right files by pure
3667 was COMPLETELY BROKEN. It was giving the right files by pure
3662 accident, but failed once I tried to include ipython.el. Note:
3668 accident, but failed once I tried to include ipython.el. Note:
3663 glob() does NOT allow you to do exclusion on multiple endings!
3669 glob() does NOT allow you to do exclusion on multiple endings!
3664
3670
3665 2004-11-29 Fernando Perez <fperez@colorado.edu>
3671 2004-11-29 Fernando Perez <fperez@colorado.edu>
3666
3672
3667 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3673 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3668 the manpage as the source. Better formatting & consistency.
3674 the manpage as the source. Better formatting & consistency.
3669
3675
3670 * IPython/Magic.py (magic_run): Added new -d option, to run
3676 * IPython/Magic.py (magic_run): Added new -d option, to run
3671 scripts under the control of the python pdb debugger. Note that
3677 scripts under the control of the python pdb debugger. Note that
3672 this required changing the %prun option -d to -D, to avoid a clash
3678 this required changing the %prun option -d to -D, to avoid a clash
3673 (since %run must pass options to %prun, and getopt is too dumb to
3679 (since %run must pass options to %prun, and getopt is too dumb to
3674 handle options with string values with embedded spaces). Thanks
3680 handle options with string values with embedded spaces). Thanks
3675 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3681 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3676 (magic_who_ls): added type matching to %who and %whos, so that one
3682 (magic_who_ls): added type matching to %who and %whos, so that one
3677 can filter their output to only include variables of certain
3683 can filter their output to only include variables of certain
3678 types. Another suggestion by Matthew.
3684 types. Another suggestion by Matthew.
3679 (magic_whos): Added memory summaries in kb and Mb for arrays.
3685 (magic_whos): Added memory summaries in kb and Mb for arrays.
3680 (magic_who): Improve formatting (break lines every 9 vars).
3686 (magic_who): Improve formatting (break lines every 9 vars).
3681
3687
3682 2004-11-28 Fernando Perez <fperez@colorado.edu>
3688 2004-11-28 Fernando Perez <fperez@colorado.edu>
3683
3689
3684 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3690 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3685 cache when empty lines were present.
3691 cache when empty lines were present.
3686
3692
3687 2004-11-24 Fernando Perez <fperez@colorado.edu>
3693 2004-11-24 Fernando Perez <fperez@colorado.edu>
3688
3694
3689 * IPython/usage.py (__doc__): document the re-activated threading
3695 * IPython/usage.py (__doc__): document the re-activated threading
3690 options for WX and GTK.
3696 options for WX and GTK.
3691
3697
3692 2004-11-23 Fernando Perez <fperez@colorado.edu>
3698 2004-11-23 Fernando Perez <fperez@colorado.edu>
3693
3699
3694 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3700 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3695 the -wthread and -gthread options, along with a new -tk one to try
3701 the -wthread and -gthread options, along with a new -tk one to try
3696 and coordinate Tk threading with wx/gtk. The tk support is very
3702 and coordinate Tk threading with wx/gtk. The tk support is very
3697 platform dependent, since it seems to require Tcl and Tk to be
3703 platform dependent, since it seems to require Tcl and Tk to be
3698 built with threads (Fedora1/2 appears NOT to have it, but in
3704 built with threads (Fedora1/2 appears NOT to have it, but in
3699 Prabhu's Debian boxes it works OK). But even with some Tk
3705 Prabhu's Debian boxes it works OK). But even with some Tk
3700 limitations, this is a great improvement.
3706 limitations, this is a great improvement.
3701
3707
3702 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3708 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3703 info in user prompts. Patch by Prabhu.
3709 info in user prompts. Patch by Prabhu.
3704
3710
3705 2004-11-18 Fernando Perez <fperez@colorado.edu>
3711 2004-11-18 Fernando Perez <fperez@colorado.edu>
3706
3712
3707 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3713 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3708 EOFErrors and bail, to avoid infinite loops if a non-terminating
3714 EOFErrors and bail, to avoid infinite loops if a non-terminating
3709 file is fed into ipython. Patch submitted in issue 19 by user,
3715 file is fed into ipython. Patch submitted in issue 19 by user,
3710 many thanks.
3716 many thanks.
3711
3717
3712 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3718 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3713 autoquote/parens in continuation prompts, which can cause lots of
3719 autoquote/parens in continuation prompts, which can cause lots of
3714 problems. Closes roundup issue 20.
3720 problems. Closes roundup issue 20.
3715
3721
3716 2004-11-17 Fernando Perez <fperez@colorado.edu>
3722 2004-11-17 Fernando Perez <fperez@colorado.edu>
3717
3723
3718 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3724 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3719 reported as debian bug #280505. I'm not sure my local changelog
3725 reported as debian bug #280505. I'm not sure my local changelog
3720 entry has the proper debian format (Jack?).
3726 entry has the proper debian format (Jack?).
3721
3727
3722 2004-11-08 *** Released version 0.6.4
3728 2004-11-08 *** Released version 0.6.4
3723
3729
3724 2004-11-08 Fernando Perez <fperez@colorado.edu>
3730 2004-11-08 Fernando Perez <fperez@colorado.edu>
3725
3731
3726 * IPython/iplib.py (init_readline): Fix exit message for Windows
3732 * IPython/iplib.py (init_readline): Fix exit message for Windows
3727 when readline is active. Thanks to a report by Eric Jones
3733 when readline is active. Thanks to a report by Eric Jones
3728 <eric-AT-enthought.com>.
3734 <eric-AT-enthought.com>.
3729
3735
3730 2004-11-07 Fernando Perez <fperez@colorado.edu>
3736 2004-11-07 Fernando Perez <fperez@colorado.edu>
3731
3737
3732 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3738 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3733 sometimes seen by win2k/cygwin users.
3739 sometimes seen by win2k/cygwin users.
3734
3740
3735 2004-11-06 Fernando Perez <fperez@colorado.edu>
3741 2004-11-06 Fernando Perez <fperez@colorado.edu>
3736
3742
3737 * IPython/iplib.py (interact): Change the handling of %Exit from
3743 * IPython/iplib.py (interact): Change the handling of %Exit from
3738 trying to propagate a SystemExit to an internal ipython flag.
3744 trying to propagate a SystemExit to an internal ipython flag.
3739 This is less elegant than using Python's exception mechanism, but
3745 This is less elegant than using Python's exception mechanism, but
3740 I can't get that to work reliably with threads, so under -pylab
3746 I can't get that to work reliably with threads, so under -pylab
3741 %Exit was hanging IPython. Cross-thread exception handling is
3747 %Exit was hanging IPython. Cross-thread exception handling is
3742 really a bitch. Thaks to a bug report by Stephen Walton
3748 really a bitch. Thaks to a bug report by Stephen Walton
3743 <stephen.walton-AT-csun.edu>.
3749 <stephen.walton-AT-csun.edu>.
3744
3750
3745 2004-11-04 Fernando Perez <fperez@colorado.edu>
3751 2004-11-04 Fernando Perez <fperez@colorado.edu>
3746
3752
3747 * IPython/iplib.py (raw_input_original): store a pointer to the
3753 * IPython/iplib.py (raw_input_original): store a pointer to the
3748 true raw_input to harden against code which can modify it
3754 true raw_input to harden against code which can modify it
3749 (wx.py.PyShell does this and would otherwise crash ipython).
3755 (wx.py.PyShell does this and would otherwise crash ipython).
3750 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3756 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3751
3757
3752 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3758 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3753 Ctrl-C problem, which does not mess up the input line.
3759 Ctrl-C problem, which does not mess up the input line.
3754
3760
3755 2004-11-03 Fernando Perez <fperez@colorado.edu>
3761 2004-11-03 Fernando Perez <fperez@colorado.edu>
3756
3762
3757 * IPython/Release.py: Changed licensing to BSD, in all files.
3763 * IPython/Release.py: Changed licensing to BSD, in all files.
3758 (name): lowercase name for tarball/RPM release.
3764 (name): lowercase name for tarball/RPM release.
3759
3765
3760 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3766 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3761 use throughout ipython.
3767 use throughout ipython.
3762
3768
3763 * IPython/Magic.py (Magic._ofind): Switch to using the new
3769 * IPython/Magic.py (Magic._ofind): Switch to using the new
3764 OInspect.getdoc() function.
3770 OInspect.getdoc() function.
3765
3771
3766 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3772 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3767 of the line currently being canceled via Ctrl-C. It's extremely
3773 of the line currently being canceled via Ctrl-C. It's extremely
3768 ugly, but I don't know how to do it better (the problem is one of
3774 ugly, but I don't know how to do it better (the problem is one of
3769 handling cross-thread exceptions).
3775 handling cross-thread exceptions).
3770
3776
3771 2004-10-28 Fernando Perez <fperez@colorado.edu>
3777 2004-10-28 Fernando Perez <fperez@colorado.edu>
3772
3778
3773 * IPython/Shell.py (signal_handler): add signal handlers to trap
3779 * IPython/Shell.py (signal_handler): add signal handlers to trap
3774 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3780 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3775 report by Francesc Alted.
3781 report by Francesc Alted.
3776
3782
3777 2004-10-21 Fernando Perez <fperez@colorado.edu>
3783 2004-10-21 Fernando Perez <fperez@colorado.edu>
3778
3784
3779 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3785 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3780 to % for pysh syntax extensions.
3786 to % for pysh syntax extensions.
3781
3787
3782 2004-10-09 Fernando Perez <fperez@colorado.edu>
3788 2004-10-09 Fernando Perez <fperez@colorado.edu>
3783
3789
3784 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3790 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3785 arrays to print a more useful summary, without calling str(arr).
3791 arrays to print a more useful summary, without calling str(arr).
3786 This avoids the problem of extremely lengthy computations which
3792 This avoids the problem of extremely lengthy computations which
3787 occur if arr is large, and appear to the user as a system lockup
3793 occur if arr is large, and appear to the user as a system lockup
3788 with 100% cpu activity. After a suggestion by Kristian Sandberg
3794 with 100% cpu activity. After a suggestion by Kristian Sandberg
3789 <Kristian.Sandberg@colorado.edu>.
3795 <Kristian.Sandberg@colorado.edu>.
3790 (Magic.__init__): fix bug in global magic escapes not being
3796 (Magic.__init__): fix bug in global magic escapes not being
3791 correctly set.
3797 correctly set.
3792
3798
3793 2004-10-08 Fernando Perez <fperez@colorado.edu>
3799 2004-10-08 Fernando Perez <fperez@colorado.edu>
3794
3800
3795 * IPython/Magic.py (__license__): change to absolute imports of
3801 * IPython/Magic.py (__license__): change to absolute imports of
3796 ipython's own internal packages, to start adapting to the absolute
3802 ipython's own internal packages, to start adapting to the absolute
3797 import requirement of PEP-328.
3803 import requirement of PEP-328.
3798
3804
3799 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3805 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3800 files, and standardize author/license marks through the Release
3806 files, and standardize author/license marks through the Release
3801 module instead of having per/file stuff (except for files with
3807 module instead of having per/file stuff (except for files with
3802 particular licenses, like the MIT/PSF-licensed codes).
3808 particular licenses, like the MIT/PSF-licensed codes).
3803
3809
3804 * IPython/Debugger.py: remove dead code for python 2.1
3810 * IPython/Debugger.py: remove dead code for python 2.1
3805
3811
3806 2004-10-04 Fernando Perez <fperez@colorado.edu>
3812 2004-10-04 Fernando Perez <fperez@colorado.edu>
3807
3813
3808 * IPython/iplib.py (ipmagic): New function for accessing magics
3814 * IPython/iplib.py (ipmagic): New function for accessing magics
3809 via a normal python function call.
3815 via a normal python function call.
3810
3816
3811 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3817 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3812 from '@' to '%', to accomodate the new @decorator syntax of python
3818 from '@' to '%', to accomodate the new @decorator syntax of python
3813 2.4.
3819 2.4.
3814
3820
3815 2004-09-29 Fernando Perez <fperez@colorado.edu>
3821 2004-09-29 Fernando Perez <fperez@colorado.edu>
3816
3822
3817 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3823 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3818 matplotlib.use to prevent running scripts which try to switch
3824 matplotlib.use to prevent running scripts which try to switch
3819 interactive backends from within ipython. This will just crash
3825 interactive backends from within ipython. This will just crash
3820 the python interpreter, so we can't allow it (but a detailed error
3826 the python interpreter, so we can't allow it (but a detailed error
3821 is given to the user).
3827 is given to the user).
3822
3828
3823 2004-09-28 Fernando Perez <fperez@colorado.edu>
3829 2004-09-28 Fernando Perez <fperez@colorado.edu>
3824
3830
3825 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3831 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3826 matplotlib-related fixes so that using @run with non-matplotlib
3832 matplotlib-related fixes so that using @run with non-matplotlib
3827 scripts doesn't pop up spurious plot windows. This requires
3833 scripts doesn't pop up spurious plot windows. This requires
3828 matplotlib >= 0.63, where I had to make some changes as well.
3834 matplotlib >= 0.63, where I had to make some changes as well.
3829
3835
3830 * IPython/ipmaker.py (make_IPython): update version requirement to
3836 * IPython/ipmaker.py (make_IPython): update version requirement to
3831 python 2.2.
3837 python 2.2.
3832
3838
3833 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3839 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3834 banner arg for embedded customization.
3840 banner arg for embedded customization.
3835
3841
3836 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3842 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3837 explicit uses of __IP as the IPython's instance name. Now things
3843 explicit uses of __IP as the IPython's instance name. Now things
3838 are properly handled via the shell.name value. The actual code
3844 are properly handled via the shell.name value. The actual code
3839 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3845 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3840 is much better than before. I'll clean things completely when the
3846 is much better than before. I'll clean things completely when the
3841 magic stuff gets a real overhaul.
3847 magic stuff gets a real overhaul.
3842
3848
3843 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3849 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3844 minor changes to debian dir.
3850 minor changes to debian dir.
3845
3851
3846 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3852 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3847 pointer to the shell itself in the interactive namespace even when
3853 pointer to the shell itself in the interactive namespace even when
3848 a user-supplied dict is provided. This is needed for embedding
3854 a user-supplied dict is provided. This is needed for embedding
3849 purposes (found by tests with Michel Sanner).
3855 purposes (found by tests with Michel Sanner).
3850
3856
3851 2004-09-27 Fernando Perez <fperez@colorado.edu>
3857 2004-09-27 Fernando Perez <fperez@colorado.edu>
3852
3858
3853 * IPython/UserConfig/ipythonrc: remove []{} from
3859 * IPython/UserConfig/ipythonrc: remove []{} from
3854 readline_remove_delims, so that things like [modname.<TAB> do
3860 readline_remove_delims, so that things like [modname.<TAB> do
3855 proper completion. This disables [].TAB, but that's a less common
3861 proper completion. This disables [].TAB, but that's a less common
3856 case than module names in list comprehensions, for example.
3862 case than module names in list comprehensions, for example.
3857 Thanks to a report by Andrea Riciputi.
3863 Thanks to a report by Andrea Riciputi.
3858
3864
3859 2004-09-09 Fernando Perez <fperez@colorado.edu>
3865 2004-09-09 Fernando Perez <fperez@colorado.edu>
3860
3866
3861 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3867 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3862 blocking problems in win32 and osx. Fix by John.
3868 blocking problems in win32 and osx. Fix by John.
3863
3869
3864 2004-09-08 Fernando Perez <fperez@colorado.edu>
3870 2004-09-08 Fernando Perez <fperez@colorado.edu>
3865
3871
3866 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3872 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3867 for Win32 and OSX. Fix by John Hunter.
3873 for Win32 and OSX. Fix by John Hunter.
3868
3874
3869 2004-08-30 *** Released version 0.6.3
3875 2004-08-30 *** Released version 0.6.3
3870
3876
3871 2004-08-30 Fernando Perez <fperez@colorado.edu>
3877 2004-08-30 Fernando Perez <fperez@colorado.edu>
3872
3878
3873 * setup.py (isfile): Add manpages to list of dependent files to be
3879 * setup.py (isfile): Add manpages to list of dependent files to be
3874 updated.
3880 updated.
3875
3881
3876 2004-08-27 Fernando Perez <fperez@colorado.edu>
3882 2004-08-27 Fernando Perez <fperez@colorado.edu>
3877
3883
3878 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3884 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3879 for now. They don't really work with standalone WX/GTK code
3885 for now. They don't really work with standalone WX/GTK code
3880 (though matplotlib IS working fine with both of those backends).
3886 (though matplotlib IS working fine with both of those backends).
3881 This will neeed much more testing. I disabled most things with
3887 This will neeed much more testing. I disabled most things with
3882 comments, so turning it back on later should be pretty easy.
3888 comments, so turning it back on later should be pretty easy.
3883
3889
3884 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3890 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3885 autocalling of expressions like r'foo', by modifying the line
3891 autocalling of expressions like r'foo', by modifying the line
3886 split regexp. Closes
3892 split regexp. Closes
3887 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3893 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3888 Riley <ipythonbugs-AT-sabi.net>.
3894 Riley <ipythonbugs-AT-sabi.net>.
3889 (InteractiveShell.mainloop): honor --nobanner with banner
3895 (InteractiveShell.mainloop): honor --nobanner with banner
3890 extensions.
3896 extensions.
3891
3897
3892 * IPython/Shell.py: Significant refactoring of all classes, so
3898 * IPython/Shell.py: Significant refactoring of all classes, so
3893 that we can really support ALL matplotlib backends and threading
3899 that we can really support ALL matplotlib backends and threading
3894 models (John spotted a bug with Tk which required this). Now we
3900 models (John spotted a bug with Tk which required this). Now we
3895 should support single-threaded, WX-threads and GTK-threads, both
3901 should support single-threaded, WX-threads and GTK-threads, both
3896 for generic code and for matplotlib.
3902 for generic code and for matplotlib.
3897
3903
3898 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3904 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3899 -pylab, to simplify things for users. Will also remove the pylab
3905 -pylab, to simplify things for users. Will also remove the pylab
3900 profile, since now all of matplotlib configuration is directly
3906 profile, since now all of matplotlib configuration is directly
3901 handled here. This also reduces startup time.
3907 handled here. This also reduces startup time.
3902
3908
3903 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3909 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3904 shell wasn't being correctly called. Also in IPShellWX.
3910 shell wasn't being correctly called. Also in IPShellWX.
3905
3911
3906 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3912 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3907 fine-tune banner.
3913 fine-tune banner.
3908
3914
3909 * IPython/numutils.py (spike): Deprecate these spike functions,
3915 * IPython/numutils.py (spike): Deprecate these spike functions,
3910 delete (long deprecated) gnuplot_exec handler.
3916 delete (long deprecated) gnuplot_exec handler.
3911
3917
3912 2004-08-26 Fernando Perez <fperez@colorado.edu>
3918 2004-08-26 Fernando Perez <fperez@colorado.edu>
3913
3919
3914 * ipython.1: Update for threading options, plus some others which
3920 * ipython.1: Update for threading options, plus some others which
3915 were missing.
3921 were missing.
3916
3922
3917 * IPython/ipmaker.py (__call__): Added -wthread option for
3923 * IPython/ipmaker.py (__call__): Added -wthread option for
3918 wxpython thread handling. Make sure threading options are only
3924 wxpython thread handling. Make sure threading options are only
3919 valid at the command line.
3925 valid at the command line.
3920
3926
3921 * scripts/ipython: moved shell selection into a factory function
3927 * scripts/ipython: moved shell selection into a factory function
3922 in Shell.py, to keep the starter script to a minimum.
3928 in Shell.py, to keep the starter script to a minimum.
3923
3929
3924 2004-08-25 Fernando Perez <fperez@colorado.edu>
3930 2004-08-25 Fernando Perez <fperez@colorado.edu>
3925
3931
3926 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3932 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3927 John. Along with some recent changes he made to matplotlib, the
3933 John. Along with some recent changes he made to matplotlib, the
3928 next versions of both systems should work very well together.
3934 next versions of both systems should work very well together.
3929
3935
3930 2004-08-24 Fernando Perez <fperez@colorado.edu>
3936 2004-08-24 Fernando Perez <fperez@colorado.edu>
3931
3937
3932 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3938 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3933 tried to switch the profiling to using hotshot, but I'm getting
3939 tried to switch the profiling to using hotshot, but I'm getting
3934 strange errors from prof.runctx() there. I may be misreading the
3940 strange errors from prof.runctx() there. I may be misreading the
3935 docs, but it looks weird. For now the profiling code will
3941 docs, but it looks weird. For now the profiling code will
3936 continue to use the standard profiler.
3942 continue to use the standard profiler.
3937
3943
3938 2004-08-23 Fernando Perez <fperez@colorado.edu>
3944 2004-08-23 Fernando Perez <fperez@colorado.edu>
3939
3945
3940 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3946 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3941 threaded shell, by John Hunter. It's not quite ready yet, but
3947 threaded shell, by John Hunter. It's not quite ready yet, but
3942 close.
3948 close.
3943
3949
3944 2004-08-22 Fernando Perez <fperez@colorado.edu>
3950 2004-08-22 Fernando Perez <fperez@colorado.edu>
3945
3951
3946 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3952 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3947 in Magic and ultraTB.
3953 in Magic and ultraTB.
3948
3954
3949 * ipython.1: document threading options in manpage.
3955 * ipython.1: document threading options in manpage.
3950
3956
3951 * scripts/ipython: Changed name of -thread option to -gthread,
3957 * scripts/ipython: Changed name of -thread option to -gthread,
3952 since this is GTK specific. I want to leave the door open for a
3958 since this is GTK specific. I want to leave the door open for a
3953 -wthread option for WX, which will most likely be necessary. This
3959 -wthread option for WX, which will most likely be necessary. This
3954 change affects usage and ipmaker as well.
3960 change affects usage and ipmaker as well.
3955
3961
3956 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3962 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3957 handle the matplotlib shell issues. Code by John Hunter
3963 handle the matplotlib shell issues. Code by John Hunter
3958 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3964 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3959 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3965 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3960 broken (and disabled for end users) for now, but it puts the
3966 broken (and disabled for end users) for now, but it puts the
3961 infrastructure in place.
3967 infrastructure in place.
3962
3968
3963 2004-08-21 Fernando Perez <fperez@colorado.edu>
3969 2004-08-21 Fernando Perez <fperez@colorado.edu>
3964
3970
3965 * ipythonrc-pylab: Add matplotlib support.
3971 * ipythonrc-pylab: Add matplotlib support.
3966
3972
3967 * matplotlib_config.py: new files for matplotlib support, part of
3973 * matplotlib_config.py: new files for matplotlib support, part of
3968 the pylab profile.
3974 the pylab profile.
3969
3975
3970 * IPython/usage.py (__doc__): documented the threading options.
3976 * IPython/usage.py (__doc__): documented the threading options.
3971
3977
3972 2004-08-20 Fernando Perez <fperez@colorado.edu>
3978 2004-08-20 Fernando Perez <fperez@colorado.edu>
3973
3979
3974 * ipython: Modified the main calling routine to handle the -thread
3980 * ipython: Modified the main calling routine to handle the -thread
3975 and -mpthread options. This needs to be done as a top-level hack,
3981 and -mpthread options. This needs to be done as a top-level hack,
3976 because it determines which class to instantiate for IPython
3982 because it determines which class to instantiate for IPython
3977 itself.
3983 itself.
3978
3984
3979 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3985 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3980 classes to support multithreaded GTK operation without blocking,
3986 classes to support multithreaded GTK operation without blocking,
3981 and matplotlib with all backends. This is a lot of still very
3987 and matplotlib with all backends. This is a lot of still very
3982 experimental code, and threads are tricky. So it may still have a
3988 experimental code, and threads are tricky. So it may still have a
3983 few rough edges... This code owes a lot to
3989 few rough edges... This code owes a lot to
3984 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3990 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3985 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3991 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3986 to John Hunter for all the matplotlib work.
3992 to John Hunter for all the matplotlib work.
3987
3993
3988 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3994 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3989 options for gtk thread and matplotlib support.
3995 options for gtk thread and matplotlib support.
3990
3996
3991 2004-08-16 Fernando Perez <fperez@colorado.edu>
3997 2004-08-16 Fernando Perez <fperez@colorado.edu>
3992
3998
3993 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3999 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3994 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4000 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3995 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4001 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3996
4002
3997 2004-08-11 Fernando Perez <fperez@colorado.edu>
4003 2004-08-11 Fernando Perez <fperez@colorado.edu>
3998
4004
3999 * setup.py (isfile): Fix build so documentation gets updated for
4005 * setup.py (isfile): Fix build so documentation gets updated for
4000 rpms (it was only done for .tgz builds).
4006 rpms (it was only done for .tgz builds).
4001
4007
4002 2004-08-10 Fernando Perez <fperez@colorado.edu>
4008 2004-08-10 Fernando Perez <fperez@colorado.edu>
4003
4009
4004 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4010 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4005
4011
4006 * iplib.py : Silence syntax error exceptions in tab-completion.
4012 * iplib.py : Silence syntax error exceptions in tab-completion.
4007
4013
4008 2004-08-05 Fernando Perez <fperez@colorado.edu>
4014 2004-08-05 Fernando Perez <fperez@colorado.edu>
4009
4015
4010 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4016 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4011 'color off' mark for continuation prompts. This was causing long
4017 'color off' mark for continuation prompts. This was causing long
4012 continuation lines to mis-wrap.
4018 continuation lines to mis-wrap.
4013
4019
4014 2004-08-01 Fernando Perez <fperez@colorado.edu>
4020 2004-08-01 Fernando Perez <fperez@colorado.edu>
4015
4021
4016 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4022 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4017 for building ipython to be a parameter. All this is necessary
4023 for building ipython to be a parameter. All this is necessary
4018 right now to have a multithreaded version, but this insane
4024 right now to have a multithreaded version, but this insane
4019 non-design will be cleaned up soon. For now, it's a hack that
4025 non-design will be cleaned up soon. For now, it's a hack that
4020 works.
4026 works.
4021
4027
4022 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4028 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4023 args in various places. No bugs so far, but it's a dangerous
4029 args in various places. No bugs so far, but it's a dangerous
4024 practice.
4030 practice.
4025
4031
4026 2004-07-31 Fernando Perez <fperez@colorado.edu>
4032 2004-07-31 Fernando Perez <fperez@colorado.edu>
4027
4033
4028 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4034 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4029 fix completion of files with dots in their names under most
4035 fix completion of files with dots in their names under most
4030 profiles (pysh was OK because the completion order is different).
4036 profiles (pysh was OK because the completion order is different).
4031
4037
4032 2004-07-27 Fernando Perez <fperez@colorado.edu>
4038 2004-07-27 Fernando Perez <fperez@colorado.edu>
4033
4039
4034 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4040 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4035 keywords manually, b/c the one in keyword.py was removed in python
4041 keywords manually, b/c the one in keyword.py was removed in python
4036 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4042 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4037 This is NOT a bug under python 2.3 and earlier.
4043 This is NOT a bug under python 2.3 and earlier.
4038
4044
4039 2004-07-26 Fernando Perez <fperez@colorado.edu>
4045 2004-07-26 Fernando Perez <fperez@colorado.edu>
4040
4046
4041 * IPython/ultraTB.py (VerboseTB.text): Add another
4047 * IPython/ultraTB.py (VerboseTB.text): Add another
4042 linecache.checkcache() call to try to prevent inspect.py from
4048 linecache.checkcache() call to try to prevent inspect.py from
4043 crashing under python 2.3. I think this fixes
4049 crashing under python 2.3. I think this fixes
4044 http://www.scipy.net/roundup/ipython/issue17.
4050 http://www.scipy.net/roundup/ipython/issue17.
4045
4051
4046 2004-07-26 *** Released version 0.6.2
4052 2004-07-26 *** Released version 0.6.2
4047
4053
4048 2004-07-26 Fernando Perez <fperez@colorado.edu>
4054 2004-07-26 Fernando Perez <fperez@colorado.edu>
4049
4055
4050 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4056 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4051 fail for any number.
4057 fail for any number.
4052 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4058 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4053 empty bookmarks.
4059 empty bookmarks.
4054
4060
4055 2004-07-26 *** Released version 0.6.1
4061 2004-07-26 *** Released version 0.6.1
4056
4062
4057 2004-07-26 Fernando Perez <fperez@colorado.edu>
4063 2004-07-26 Fernando Perez <fperez@colorado.edu>
4058
4064
4059 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4065 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4060
4066
4061 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4067 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4062 escaping '()[]{}' in filenames.
4068 escaping '()[]{}' in filenames.
4063
4069
4064 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4070 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4065 Python 2.2 users who lack a proper shlex.split.
4071 Python 2.2 users who lack a proper shlex.split.
4066
4072
4067 2004-07-19 Fernando Perez <fperez@colorado.edu>
4073 2004-07-19 Fernando Perez <fperez@colorado.edu>
4068
4074
4069 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4075 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4070 for reading readline's init file. I follow the normal chain:
4076 for reading readline's init file. I follow the normal chain:
4071 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4077 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4072 report by Mike Heeter. This closes
4078 report by Mike Heeter. This closes
4073 http://www.scipy.net/roundup/ipython/issue16.
4079 http://www.scipy.net/roundup/ipython/issue16.
4074
4080
4075 2004-07-18 Fernando Perez <fperez@colorado.edu>
4081 2004-07-18 Fernando Perez <fperez@colorado.edu>
4076
4082
4077 * IPython/iplib.py (__init__): Add better handling of '\' under
4083 * IPython/iplib.py (__init__): Add better handling of '\' under
4078 Win32 for filenames. After a patch by Ville.
4084 Win32 for filenames. After a patch by Ville.
4079
4085
4080 2004-07-17 Fernando Perez <fperez@colorado.edu>
4086 2004-07-17 Fernando Perez <fperez@colorado.edu>
4081
4087
4082 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4088 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4083 autocalling would be triggered for 'foo is bar' if foo is
4089 autocalling would be triggered for 'foo is bar' if foo is
4084 callable. I also cleaned up the autocall detection code to use a
4090 callable. I also cleaned up the autocall detection code to use a
4085 regexp, which is faster. Bug reported by Alexander Schmolck.
4091 regexp, which is faster. Bug reported by Alexander Schmolck.
4086
4092
4087 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4093 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4088 '?' in them would confuse the help system. Reported by Alex
4094 '?' in them would confuse the help system. Reported by Alex
4089 Schmolck.
4095 Schmolck.
4090
4096
4091 2004-07-16 Fernando Perez <fperez@colorado.edu>
4097 2004-07-16 Fernando Perez <fperez@colorado.edu>
4092
4098
4093 * IPython/GnuplotInteractive.py (__all__): added plot2.
4099 * IPython/GnuplotInteractive.py (__all__): added plot2.
4094
4100
4095 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4101 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4096 plotting dictionaries, lists or tuples of 1d arrays.
4102 plotting dictionaries, lists or tuples of 1d arrays.
4097
4103
4098 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4104 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4099 optimizations.
4105 optimizations.
4100
4106
4101 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4107 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4102 the information which was there from Janko's original IPP code:
4108 the information which was there from Janko's original IPP code:
4103
4109
4104 03.05.99 20:53 porto.ifm.uni-kiel.de
4110 03.05.99 20:53 porto.ifm.uni-kiel.de
4105 --Started changelog.
4111 --Started changelog.
4106 --make clear do what it say it does
4112 --make clear do what it say it does
4107 --added pretty output of lines from inputcache
4113 --added pretty output of lines from inputcache
4108 --Made Logger a mixin class, simplifies handling of switches
4114 --Made Logger a mixin class, simplifies handling of switches
4109 --Added own completer class. .string<TAB> expands to last history
4115 --Added own completer class. .string<TAB> expands to last history
4110 line which starts with string. The new expansion is also present
4116 line which starts with string. The new expansion is also present
4111 with Ctrl-r from the readline library. But this shows, who this
4117 with Ctrl-r from the readline library. But this shows, who this
4112 can be done for other cases.
4118 can be done for other cases.
4113 --Added convention that all shell functions should accept a
4119 --Added convention that all shell functions should accept a
4114 parameter_string This opens the door for different behaviour for
4120 parameter_string This opens the door for different behaviour for
4115 each function. @cd is a good example of this.
4121 each function. @cd is a good example of this.
4116
4122
4117 04.05.99 12:12 porto.ifm.uni-kiel.de
4123 04.05.99 12:12 porto.ifm.uni-kiel.de
4118 --added logfile rotation
4124 --added logfile rotation
4119 --added new mainloop method which freezes first the namespace
4125 --added new mainloop method which freezes first the namespace
4120
4126
4121 07.05.99 21:24 porto.ifm.uni-kiel.de
4127 07.05.99 21:24 porto.ifm.uni-kiel.de
4122 --added the docreader classes. Now there is a help system.
4128 --added the docreader classes. Now there is a help system.
4123 -This is only a first try. Currently it's not easy to put new
4129 -This is only a first try. Currently it's not easy to put new
4124 stuff in the indices. But this is the way to go. Info would be
4130 stuff in the indices. But this is the way to go. Info would be
4125 better, but HTML is every where and not everybody has an info
4131 better, but HTML is every where and not everybody has an info
4126 system installed and it's not so easy to change html-docs to info.
4132 system installed and it's not so easy to change html-docs to info.
4127 --added global logfile option
4133 --added global logfile option
4128 --there is now a hook for object inspection method pinfo needs to
4134 --there is now a hook for object inspection method pinfo needs to
4129 be provided for this. Can be reached by two '??'.
4135 be provided for this. Can be reached by two '??'.
4130
4136
4131 08.05.99 20:51 porto.ifm.uni-kiel.de
4137 08.05.99 20:51 porto.ifm.uni-kiel.de
4132 --added a README
4138 --added a README
4133 --bug in rc file. Something has changed so functions in the rc
4139 --bug in rc file. Something has changed so functions in the rc
4134 file need to reference the shell and not self. Not clear if it's a
4140 file need to reference the shell and not self. Not clear if it's a
4135 bug or feature.
4141 bug or feature.
4136 --changed rc file for new behavior
4142 --changed rc file for new behavior
4137
4143
4138 2004-07-15 Fernando Perez <fperez@colorado.edu>
4144 2004-07-15 Fernando Perez <fperez@colorado.edu>
4139
4145
4140 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4146 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4141 cache was falling out of sync in bizarre manners when multi-line
4147 cache was falling out of sync in bizarre manners when multi-line
4142 input was present. Minor optimizations and cleanup.
4148 input was present. Minor optimizations and cleanup.
4143
4149
4144 (Logger): Remove old Changelog info for cleanup. This is the
4150 (Logger): Remove old Changelog info for cleanup. This is the
4145 information which was there from Janko's original code:
4151 information which was there from Janko's original code:
4146
4152
4147 Changes to Logger: - made the default log filename a parameter
4153 Changes to Logger: - made the default log filename a parameter
4148
4154
4149 - put a check for lines beginning with !@? in log(). Needed
4155 - put a check for lines beginning with !@? in log(). Needed
4150 (even if the handlers properly log their lines) for mid-session
4156 (even if the handlers properly log their lines) for mid-session
4151 logging activation to work properly. Without this, lines logged
4157 logging activation to work properly. Without this, lines logged
4152 in mid session, which get read from the cache, would end up
4158 in mid session, which get read from the cache, would end up
4153 'bare' (with !@? in the open) in the log. Now they are caught
4159 'bare' (with !@? in the open) in the log. Now they are caught
4154 and prepended with a #.
4160 and prepended with a #.
4155
4161
4156 * IPython/iplib.py (InteractiveShell.init_readline): added check
4162 * IPython/iplib.py (InteractiveShell.init_readline): added check
4157 in case MagicCompleter fails to be defined, so we don't crash.
4163 in case MagicCompleter fails to be defined, so we don't crash.
4158
4164
4159 2004-07-13 Fernando Perez <fperez@colorado.edu>
4165 2004-07-13 Fernando Perez <fperez@colorado.edu>
4160
4166
4161 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4167 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4162 of EPS if the requested filename ends in '.eps'.
4168 of EPS if the requested filename ends in '.eps'.
4163
4169
4164 2004-07-04 Fernando Perez <fperez@colorado.edu>
4170 2004-07-04 Fernando Perez <fperez@colorado.edu>
4165
4171
4166 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4172 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4167 escaping of quotes when calling the shell.
4173 escaping of quotes when calling the shell.
4168
4174
4169 2004-07-02 Fernando Perez <fperez@colorado.edu>
4175 2004-07-02 Fernando Perez <fperez@colorado.edu>
4170
4176
4171 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4177 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4172 gettext not working because we were clobbering '_'. Fixes
4178 gettext not working because we were clobbering '_'. Fixes
4173 http://www.scipy.net/roundup/ipython/issue6.
4179 http://www.scipy.net/roundup/ipython/issue6.
4174
4180
4175 2004-07-01 Fernando Perez <fperez@colorado.edu>
4181 2004-07-01 Fernando Perez <fperez@colorado.edu>
4176
4182
4177 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4183 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4178 into @cd. Patch by Ville.
4184 into @cd. Patch by Ville.
4179
4185
4180 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4186 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4181 new function to store things after ipmaker runs. Patch by Ville.
4187 new function to store things after ipmaker runs. Patch by Ville.
4182 Eventually this will go away once ipmaker is removed and the class
4188 Eventually this will go away once ipmaker is removed and the class
4183 gets cleaned up, but for now it's ok. Key functionality here is
4189 gets cleaned up, but for now it's ok. Key functionality here is
4184 the addition of the persistent storage mechanism, a dict for
4190 the addition of the persistent storage mechanism, a dict for
4185 keeping data across sessions (for now just bookmarks, but more can
4191 keeping data across sessions (for now just bookmarks, but more can
4186 be implemented later).
4192 be implemented later).
4187
4193
4188 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4194 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4189 persistent across sections. Patch by Ville, I modified it
4195 persistent across sections. Patch by Ville, I modified it
4190 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4196 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4191 added a '-l' option to list all bookmarks.
4197 added a '-l' option to list all bookmarks.
4192
4198
4193 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4199 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4194 center for cleanup. Registered with atexit.register(). I moved
4200 center for cleanup. Registered with atexit.register(). I moved
4195 here the old exit_cleanup(). After a patch by Ville.
4201 here the old exit_cleanup(). After a patch by Ville.
4196
4202
4197 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4203 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4198 characters in the hacked shlex_split for python 2.2.
4204 characters in the hacked shlex_split for python 2.2.
4199
4205
4200 * IPython/iplib.py (file_matches): more fixes to filenames with
4206 * IPython/iplib.py (file_matches): more fixes to filenames with
4201 whitespace in them. It's not perfect, but limitations in python's
4207 whitespace in them. It's not perfect, but limitations in python's
4202 readline make it impossible to go further.
4208 readline make it impossible to go further.
4203
4209
4204 2004-06-29 Fernando Perez <fperez@colorado.edu>
4210 2004-06-29 Fernando Perez <fperez@colorado.edu>
4205
4211
4206 * IPython/iplib.py (file_matches): escape whitespace correctly in
4212 * IPython/iplib.py (file_matches): escape whitespace correctly in
4207 filename completions. Bug reported by Ville.
4213 filename completions. Bug reported by Ville.
4208
4214
4209 2004-06-28 Fernando Perez <fperez@colorado.edu>
4215 2004-06-28 Fernando Perez <fperez@colorado.edu>
4210
4216
4211 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4217 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4212 the history file will be called 'history-PROFNAME' (or just
4218 the history file will be called 'history-PROFNAME' (or just
4213 'history' if no profile is loaded). I was getting annoyed at
4219 'history' if no profile is loaded). I was getting annoyed at
4214 getting my Numerical work history clobbered by pysh sessions.
4220 getting my Numerical work history clobbered by pysh sessions.
4215
4221
4216 * IPython/iplib.py (InteractiveShell.__init__): Internal
4222 * IPython/iplib.py (InteractiveShell.__init__): Internal
4217 getoutputerror() function so that we can honor the system_verbose
4223 getoutputerror() function so that we can honor the system_verbose
4218 flag for _all_ system calls. I also added escaping of #
4224 flag for _all_ system calls. I also added escaping of #
4219 characters here to avoid confusing Itpl.
4225 characters here to avoid confusing Itpl.
4220
4226
4221 * IPython/Magic.py (shlex_split): removed call to shell in
4227 * IPython/Magic.py (shlex_split): removed call to shell in
4222 parse_options and replaced it with shlex.split(). The annoying
4228 parse_options and replaced it with shlex.split(). The annoying
4223 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4229 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4224 to backport it from 2.3, with several frail hacks (the shlex
4230 to backport it from 2.3, with several frail hacks (the shlex
4225 module is rather limited in 2.2). Thanks to a suggestion by Ville
4231 module is rather limited in 2.2). Thanks to a suggestion by Ville
4226 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4232 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4227 problem.
4233 problem.
4228
4234
4229 (Magic.magic_system_verbose): new toggle to print the actual
4235 (Magic.magic_system_verbose): new toggle to print the actual
4230 system calls made by ipython. Mainly for debugging purposes.
4236 system calls made by ipython. Mainly for debugging purposes.
4231
4237
4232 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4238 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4233 doesn't support persistence. Reported (and fix suggested) by
4239 doesn't support persistence. Reported (and fix suggested) by
4234 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4240 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4235
4241
4236 2004-06-26 Fernando Perez <fperez@colorado.edu>
4242 2004-06-26 Fernando Perez <fperez@colorado.edu>
4237
4243
4238 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4244 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4239 continue prompts.
4245 continue prompts.
4240
4246
4241 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4247 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4242 function (basically a big docstring) and a few more things here to
4248 function (basically a big docstring) and a few more things here to
4243 speedup startup. pysh.py is now very lightweight. We want because
4249 speedup startup. pysh.py is now very lightweight. We want because
4244 it gets execfile'd, while InterpreterExec gets imported, so
4250 it gets execfile'd, while InterpreterExec gets imported, so
4245 byte-compilation saves time.
4251 byte-compilation saves time.
4246
4252
4247 2004-06-25 Fernando Perez <fperez@colorado.edu>
4253 2004-06-25 Fernando Perez <fperez@colorado.edu>
4248
4254
4249 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4255 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4250 -NUM', which was recently broken.
4256 -NUM', which was recently broken.
4251
4257
4252 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4258 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4253 in multi-line input (but not !!, which doesn't make sense there).
4259 in multi-line input (but not !!, which doesn't make sense there).
4254
4260
4255 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4261 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4256 It's just too useful, and people can turn it off in the less
4262 It's just too useful, and people can turn it off in the less
4257 common cases where it's a problem.
4263 common cases where it's a problem.
4258
4264
4259 2004-06-24 Fernando Perez <fperez@colorado.edu>
4265 2004-06-24 Fernando Perez <fperez@colorado.edu>
4260
4266
4261 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4267 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4262 special syntaxes (like alias calling) is now allied in multi-line
4268 special syntaxes (like alias calling) is now allied in multi-line
4263 input. This is still _very_ experimental, but it's necessary for
4269 input. This is still _very_ experimental, but it's necessary for
4264 efficient shell usage combining python looping syntax with system
4270 efficient shell usage combining python looping syntax with system
4265 calls. For now it's restricted to aliases, I don't think it
4271 calls. For now it's restricted to aliases, I don't think it
4266 really even makes sense to have this for magics.
4272 really even makes sense to have this for magics.
4267
4273
4268 2004-06-23 Fernando Perez <fperez@colorado.edu>
4274 2004-06-23 Fernando Perez <fperez@colorado.edu>
4269
4275
4270 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4276 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4271 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4277 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4272
4278
4273 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4279 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4274 extensions under Windows (after code sent by Gary Bishop). The
4280 extensions under Windows (after code sent by Gary Bishop). The
4275 extensions considered 'executable' are stored in IPython's rc
4281 extensions considered 'executable' are stored in IPython's rc
4276 structure as win_exec_ext.
4282 structure as win_exec_ext.
4277
4283
4278 * IPython/genutils.py (shell): new function, like system() but
4284 * IPython/genutils.py (shell): new function, like system() but
4279 without return value. Very useful for interactive shell work.
4285 without return value. Very useful for interactive shell work.
4280
4286
4281 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4287 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4282 delete aliases.
4288 delete aliases.
4283
4289
4284 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4290 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4285 sure that the alias table doesn't contain python keywords.
4291 sure that the alias table doesn't contain python keywords.
4286
4292
4287 2004-06-21 Fernando Perez <fperez@colorado.edu>
4293 2004-06-21 Fernando Perez <fperez@colorado.edu>
4288
4294
4289 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4295 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4290 non-existent items are found in $PATH. Reported by Thorsten.
4296 non-existent items are found in $PATH. Reported by Thorsten.
4291
4297
4292 2004-06-20 Fernando Perez <fperez@colorado.edu>
4298 2004-06-20 Fernando Perez <fperez@colorado.edu>
4293
4299
4294 * IPython/iplib.py (complete): modified the completer so that the
4300 * IPython/iplib.py (complete): modified the completer so that the
4295 order of priorities can be easily changed at runtime.
4301 order of priorities can be easily changed at runtime.
4296
4302
4297 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4303 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4298 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4304 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4299
4305
4300 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4306 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4301 expand Python variables prepended with $ in all system calls. The
4307 expand Python variables prepended with $ in all system calls. The
4302 same was done to InteractiveShell.handle_shell_escape. Now all
4308 same was done to InteractiveShell.handle_shell_escape. Now all
4303 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4309 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4304 expansion of python variables and expressions according to the
4310 expansion of python variables and expressions according to the
4305 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4311 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4306
4312
4307 Though PEP-215 has been rejected, a similar (but simpler) one
4313 Though PEP-215 has been rejected, a similar (but simpler) one
4308 seems like it will go into Python 2.4, PEP-292 -
4314 seems like it will go into Python 2.4, PEP-292 -
4309 http://www.python.org/peps/pep-0292.html.
4315 http://www.python.org/peps/pep-0292.html.
4310
4316
4311 I'll keep the full syntax of PEP-215, since IPython has since the
4317 I'll keep the full syntax of PEP-215, since IPython has since the
4312 start used Ka-Ping Yee's reference implementation discussed there
4318 start used Ka-Ping Yee's reference implementation discussed there
4313 (Itpl), and I actually like the powerful semantics it offers.
4319 (Itpl), and I actually like the powerful semantics it offers.
4314
4320
4315 In order to access normal shell variables, the $ has to be escaped
4321 In order to access normal shell variables, the $ has to be escaped
4316 via an extra $. For example:
4322 via an extra $. For example:
4317
4323
4318 In [7]: PATH='a python variable'
4324 In [7]: PATH='a python variable'
4319
4325
4320 In [8]: !echo $PATH
4326 In [8]: !echo $PATH
4321 a python variable
4327 a python variable
4322
4328
4323 In [9]: !echo $$PATH
4329 In [9]: !echo $$PATH
4324 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4330 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4325
4331
4326 (Magic.parse_options): escape $ so the shell doesn't evaluate
4332 (Magic.parse_options): escape $ so the shell doesn't evaluate
4327 things prematurely.
4333 things prematurely.
4328
4334
4329 * IPython/iplib.py (InteractiveShell.call_alias): added the
4335 * IPython/iplib.py (InteractiveShell.call_alias): added the
4330 ability for aliases to expand python variables via $.
4336 ability for aliases to expand python variables via $.
4331
4337
4332 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4338 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4333 system, now there's a @rehash/@rehashx pair of magics. These work
4339 system, now there's a @rehash/@rehashx pair of magics. These work
4334 like the csh rehash command, and can be invoked at any time. They
4340 like the csh rehash command, and can be invoked at any time. They
4335 build a table of aliases to everything in the user's $PATH
4341 build a table of aliases to everything in the user's $PATH
4336 (@rehash uses everything, @rehashx is slower but only adds
4342 (@rehash uses everything, @rehashx is slower but only adds
4337 executable files). With this, the pysh.py-based shell profile can
4343 executable files). With this, the pysh.py-based shell profile can
4338 now simply call rehash upon startup, and full access to all
4344 now simply call rehash upon startup, and full access to all
4339 programs in the user's path is obtained.
4345 programs in the user's path is obtained.
4340
4346
4341 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4347 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4342 functionality is now fully in place. I removed the old dynamic
4348 functionality is now fully in place. I removed the old dynamic
4343 code generation based approach, in favor of a much lighter one
4349 code generation based approach, in favor of a much lighter one
4344 based on a simple dict. The advantage is that this allows me to
4350 based on a simple dict. The advantage is that this allows me to
4345 now have thousands of aliases with negligible cost (unthinkable
4351 now have thousands of aliases with negligible cost (unthinkable
4346 with the old system).
4352 with the old system).
4347
4353
4348 2004-06-19 Fernando Perez <fperez@colorado.edu>
4354 2004-06-19 Fernando Perez <fperez@colorado.edu>
4349
4355
4350 * IPython/iplib.py (__init__): extended MagicCompleter class to
4356 * IPython/iplib.py (__init__): extended MagicCompleter class to
4351 also complete (last in priority) on user aliases.
4357 also complete (last in priority) on user aliases.
4352
4358
4353 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4359 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4354 call to eval.
4360 call to eval.
4355 (ItplNS.__init__): Added a new class which functions like Itpl,
4361 (ItplNS.__init__): Added a new class which functions like Itpl,
4356 but allows configuring the namespace for the evaluation to occur
4362 but allows configuring the namespace for the evaluation to occur
4357 in.
4363 in.
4358
4364
4359 2004-06-18 Fernando Perez <fperez@colorado.edu>
4365 2004-06-18 Fernando Perez <fperez@colorado.edu>
4360
4366
4361 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4367 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4362 better message when 'exit' or 'quit' are typed (a common newbie
4368 better message when 'exit' or 'quit' are typed (a common newbie
4363 confusion).
4369 confusion).
4364
4370
4365 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4371 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4366 check for Windows users.
4372 check for Windows users.
4367
4373
4368 * IPython/iplib.py (InteractiveShell.user_setup): removed
4374 * IPython/iplib.py (InteractiveShell.user_setup): removed
4369 disabling of colors for Windows. I'll test at runtime and issue a
4375 disabling of colors for Windows. I'll test at runtime and issue a
4370 warning if Gary's readline isn't found, as to nudge users to
4376 warning if Gary's readline isn't found, as to nudge users to
4371 download it.
4377 download it.
4372
4378
4373 2004-06-16 Fernando Perez <fperez@colorado.edu>
4379 2004-06-16 Fernando Perez <fperez@colorado.edu>
4374
4380
4375 * IPython/genutils.py (Stream.__init__): changed to print errors
4381 * IPython/genutils.py (Stream.__init__): changed to print errors
4376 to sys.stderr. I had a circular dependency here. Now it's
4382 to sys.stderr. I had a circular dependency here. Now it's
4377 possible to run ipython as IDLE's shell (consider this pre-alpha,
4383 possible to run ipython as IDLE's shell (consider this pre-alpha,
4378 since true stdout things end up in the starting terminal instead
4384 since true stdout things end up in the starting terminal instead
4379 of IDLE's out).
4385 of IDLE's out).
4380
4386
4381 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4387 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4382 users who haven't # updated their prompt_in2 definitions. Remove
4388 users who haven't # updated their prompt_in2 definitions. Remove
4383 eventually.
4389 eventually.
4384 (multiple_replace): added credit to original ASPN recipe.
4390 (multiple_replace): added credit to original ASPN recipe.
4385
4391
4386 2004-06-15 Fernando Perez <fperez@colorado.edu>
4392 2004-06-15 Fernando Perez <fperez@colorado.edu>
4387
4393
4388 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4394 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4389 list of auto-defined aliases.
4395 list of auto-defined aliases.
4390
4396
4391 2004-06-13 Fernando Perez <fperez@colorado.edu>
4397 2004-06-13 Fernando Perez <fperez@colorado.edu>
4392
4398
4393 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4399 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4394 install was really requested (so setup.py can be used for other
4400 install was really requested (so setup.py can be used for other
4395 things under Windows).
4401 things under Windows).
4396
4402
4397 2004-06-10 Fernando Perez <fperez@colorado.edu>
4403 2004-06-10 Fernando Perez <fperez@colorado.edu>
4398
4404
4399 * IPython/Logger.py (Logger.create_log): Manually remove any old
4405 * IPython/Logger.py (Logger.create_log): Manually remove any old
4400 backup, since os.remove may fail under Windows. Fixes bug
4406 backup, since os.remove may fail under Windows. Fixes bug
4401 reported by Thorsten.
4407 reported by Thorsten.
4402
4408
4403 2004-06-09 Fernando Perez <fperez@colorado.edu>
4409 2004-06-09 Fernando Perez <fperez@colorado.edu>
4404
4410
4405 * examples/example-embed.py: fixed all references to %n (replaced
4411 * examples/example-embed.py: fixed all references to %n (replaced
4406 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4412 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4407 for all examples and the manual as well.
4413 for all examples and the manual as well.
4408
4414
4409 2004-06-08 Fernando Perez <fperez@colorado.edu>
4415 2004-06-08 Fernando Perez <fperez@colorado.edu>
4410
4416
4411 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4417 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4412 alignment and color management. All 3 prompt subsystems now
4418 alignment and color management. All 3 prompt subsystems now
4413 inherit from BasePrompt.
4419 inherit from BasePrompt.
4414
4420
4415 * tools/release: updates for windows installer build and tag rpms
4421 * tools/release: updates for windows installer build and tag rpms
4416 with python version (since paths are fixed).
4422 with python version (since paths are fixed).
4417
4423
4418 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4424 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4419 which will become eventually obsolete. Also fixed the default
4425 which will become eventually obsolete. Also fixed the default
4420 prompt_in2 to use \D, so at least new users start with the correct
4426 prompt_in2 to use \D, so at least new users start with the correct
4421 defaults.
4427 defaults.
4422 WARNING: Users with existing ipythonrc files will need to apply
4428 WARNING: Users with existing ipythonrc files will need to apply
4423 this fix manually!
4429 this fix manually!
4424
4430
4425 * setup.py: make windows installer (.exe). This is finally the
4431 * setup.py: make windows installer (.exe). This is finally the
4426 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4432 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4427 which I hadn't included because it required Python 2.3 (or recent
4433 which I hadn't included because it required Python 2.3 (or recent
4428 distutils).
4434 distutils).
4429
4435
4430 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4436 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4431 usage of new '\D' escape.
4437 usage of new '\D' escape.
4432
4438
4433 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4439 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4434 lacks os.getuid())
4440 lacks os.getuid())
4435 (CachedOutput.set_colors): Added the ability to turn coloring
4441 (CachedOutput.set_colors): Added the ability to turn coloring
4436 on/off with @colors even for manually defined prompt colors. It
4442 on/off with @colors even for manually defined prompt colors. It
4437 uses a nasty global, but it works safely and via the generic color
4443 uses a nasty global, but it works safely and via the generic color
4438 handling mechanism.
4444 handling mechanism.
4439 (Prompt2.__init__): Introduced new escape '\D' for continuation
4445 (Prompt2.__init__): Introduced new escape '\D' for continuation
4440 prompts. It represents the counter ('\#') as dots.
4446 prompts. It represents the counter ('\#') as dots.
4441 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4447 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4442 need to update their ipythonrc files and replace '%n' with '\D' in
4448 need to update their ipythonrc files and replace '%n' with '\D' in
4443 their prompt_in2 settings everywhere. Sorry, but there's
4449 their prompt_in2 settings everywhere. Sorry, but there's
4444 otherwise no clean way to get all prompts to properly align. The
4450 otherwise no clean way to get all prompts to properly align. The
4445 ipythonrc shipped with IPython has been updated.
4451 ipythonrc shipped with IPython has been updated.
4446
4452
4447 2004-06-07 Fernando Perez <fperez@colorado.edu>
4453 2004-06-07 Fernando Perez <fperez@colorado.edu>
4448
4454
4449 * setup.py (isfile): Pass local_icons option to latex2html, so the
4455 * setup.py (isfile): Pass local_icons option to latex2html, so the
4450 resulting HTML file is self-contained. Thanks to
4456 resulting HTML file is self-contained. Thanks to
4451 dryice-AT-liu.com.cn for the tip.
4457 dryice-AT-liu.com.cn for the tip.
4452
4458
4453 * pysh.py: I created a new profile 'shell', which implements a
4459 * pysh.py: I created a new profile 'shell', which implements a
4454 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4460 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4455 system shell, nor will it become one anytime soon. It's mainly
4461 system shell, nor will it become one anytime soon. It's mainly
4456 meant to illustrate the use of the new flexible bash-like prompts.
4462 meant to illustrate the use of the new flexible bash-like prompts.
4457 I guess it could be used by hardy souls for true shell management,
4463 I guess it could be used by hardy souls for true shell management,
4458 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4464 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4459 profile. This uses the InterpreterExec extension provided by
4465 profile. This uses the InterpreterExec extension provided by
4460 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4466 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4461
4467
4462 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4468 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4463 auto-align itself with the length of the previous input prompt
4469 auto-align itself with the length of the previous input prompt
4464 (taking into account the invisible color escapes).
4470 (taking into account the invisible color escapes).
4465 (CachedOutput.__init__): Large restructuring of this class. Now
4471 (CachedOutput.__init__): Large restructuring of this class. Now
4466 all three prompts (primary1, primary2, output) are proper objects,
4472 all three prompts (primary1, primary2, output) are proper objects,
4467 managed by the 'parent' CachedOutput class. The code is still a
4473 managed by the 'parent' CachedOutput class. The code is still a
4468 bit hackish (all prompts share state via a pointer to the cache),
4474 bit hackish (all prompts share state via a pointer to the cache),
4469 but it's overall far cleaner than before.
4475 but it's overall far cleaner than before.
4470
4476
4471 * IPython/genutils.py (getoutputerror): modified to add verbose,
4477 * IPython/genutils.py (getoutputerror): modified to add verbose,
4472 debug and header options. This makes the interface of all getout*
4478 debug and header options. This makes the interface of all getout*
4473 functions uniform.
4479 functions uniform.
4474 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4480 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4475
4481
4476 * IPython/Magic.py (Magic.default_option): added a function to
4482 * IPython/Magic.py (Magic.default_option): added a function to
4477 allow registering default options for any magic command. This
4483 allow registering default options for any magic command. This
4478 makes it easy to have profiles which customize the magics globally
4484 makes it easy to have profiles which customize the magics globally
4479 for a certain use. The values set through this function are
4485 for a certain use. The values set through this function are
4480 picked up by the parse_options() method, which all magics should
4486 picked up by the parse_options() method, which all magics should
4481 use to parse their options.
4487 use to parse their options.
4482
4488
4483 * IPython/genutils.py (warn): modified the warnings framework to
4489 * IPython/genutils.py (warn): modified the warnings framework to
4484 use the Term I/O class. I'm trying to slowly unify all of
4490 use the Term I/O class. I'm trying to slowly unify all of
4485 IPython's I/O operations to pass through Term.
4491 IPython's I/O operations to pass through Term.
4486
4492
4487 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4493 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4488 the secondary prompt to correctly match the length of the primary
4494 the secondary prompt to correctly match the length of the primary
4489 one for any prompt. Now multi-line code will properly line up
4495 one for any prompt. Now multi-line code will properly line up
4490 even for path dependent prompts, such as the new ones available
4496 even for path dependent prompts, such as the new ones available
4491 via the prompt_specials.
4497 via the prompt_specials.
4492
4498
4493 2004-06-06 Fernando Perez <fperez@colorado.edu>
4499 2004-06-06 Fernando Perez <fperez@colorado.edu>
4494
4500
4495 * IPython/Prompts.py (prompt_specials): Added the ability to have
4501 * IPython/Prompts.py (prompt_specials): Added the ability to have
4496 bash-like special sequences in the prompts, which get
4502 bash-like special sequences in the prompts, which get
4497 automatically expanded. Things like hostname, current working
4503 automatically expanded. Things like hostname, current working
4498 directory and username are implemented already, but it's easy to
4504 directory and username are implemented already, but it's easy to
4499 add more in the future. Thanks to a patch by W.J. van der Laan
4505 add more in the future. Thanks to a patch by W.J. van der Laan
4500 <gnufnork-AT-hetdigitalegat.nl>
4506 <gnufnork-AT-hetdigitalegat.nl>
4501 (prompt_specials): Added color support for prompt strings, so
4507 (prompt_specials): Added color support for prompt strings, so
4502 users can define arbitrary color setups for their prompts.
4508 users can define arbitrary color setups for their prompts.
4503
4509
4504 2004-06-05 Fernando Perez <fperez@colorado.edu>
4510 2004-06-05 Fernando Perez <fperez@colorado.edu>
4505
4511
4506 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4512 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4507 code to load Gary Bishop's readline and configure it
4513 code to load Gary Bishop's readline and configure it
4508 automatically. Thanks to Gary for help on this.
4514 automatically. Thanks to Gary for help on this.
4509
4515
4510 2004-06-01 Fernando Perez <fperez@colorado.edu>
4516 2004-06-01 Fernando Perez <fperez@colorado.edu>
4511
4517
4512 * IPython/Logger.py (Logger.create_log): fix bug for logging
4518 * IPython/Logger.py (Logger.create_log): fix bug for logging
4513 with no filename (previous fix was incomplete).
4519 with no filename (previous fix was incomplete).
4514
4520
4515 2004-05-25 Fernando Perez <fperez@colorado.edu>
4521 2004-05-25 Fernando Perez <fperez@colorado.edu>
4516
4522
4517 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4523 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4518 parens would get passed to the shell.
4524 parens would get passed to the shell.
4519
4525
4520 2004-05-20 Fernando Perez <fperez@colorado.edu>
4526 2004-05-20 Fernando Perez <fperez@colorado.edu>
4521
4527
4522 * IPython/Magic.py (Magic.magic_prun): changed default profile
4528 * IPython/Magic.py (Magic.magic_prun): changed default profile
4523 sort order to 'time' (the more common profiling need).
4529 sort order to 'time' (the more common profiling need).
4524
4530
4525 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4531 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4526 so that source code shown is guaranteed in sync with the file on
4532 so that source code shown is guaranteed in sync with the file on
4527 disk (also changed in psource). Similar fix to the one for
4533 disk (also changed in psource). Similar fix to the one for
4528 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4534 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4529 <yann.ledu-AT-noos.fr>.
4535 <yann.ledu-AT-noos.fr>.
4530
4536
4531 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4537 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4532 with a single option would not be correctly parsed. Closes
4538 with a single option would not be correctly parsed. Closes
4533 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4539 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4534 introduced in 0.6.0 (on 2004-05-06).
4540 introduced in 0.6.0 (on 2004-05-06).
4535
4541
4536 2004-05-13 *** Released version 0.6.0
4542 2004-05-13 *** Released version 0.6.0
4537
4543
4538 2004-05-13 Fernando Perez <fperez@colorado.edu>
4544 2004-05-13 Fernando Perez <fperez@colorado.edu>
4539
4545
4540 * debian/: Added debian/ directory to CVS, so that debian support
4546 * debian/: Added debian/ directory to CVS, so that debian support
4541 is publicly accessible. The debian package is maintained by Jack
4547 is publicly accessible. The debian package is maintained by Jack
4542 Moffit <jack-AT-xiph.org>.
4548 Moffit <jack-AT-xiph.org>.
4543
4549
4544 * Documentation: included the notes about an ipython-based system
4550 * Documentation: included the notes about an ipython-based system
4545 shell (the hypothetical 'pysh') into the new_design.pdf document,
4551 shell (the hypothetical 'pysh') into the new_design.pdf document,
4546 so that these ideas get distributed to users along with the
4552 so that these ideas get distributed to users along with the
4547 official documentation.
4553 official documentation.
4548
4554
4549 2004-05-10 Fernando Perez <fperez@colorado.edu>
4555 2004-05-10 Fernando Perez <fperez@colorado.edu>
4550
4556
4551 * IPython/Logger.py (Logger.create_log): fix recently introduced
4557 * IPython/Logger.py (Logger.create_log): fix recently introduced
4552 bug (misindented line) where logstart would fail when not given an
4558 bug (misindented line) where logstart would fail when not given an
4553 explicit filename.
4559 explicit filename.
4554
4560
4555 2004-05-09 Fernando Perez <fperez@colorado.edu>
4561 2004-05-09 Fernando Perez <fperez@colorado.edu>
4556
4562
4557 * IPython/Magic.py (Magic.parse_options): skip system call when
4563 * IPython/Magic.py (Magic.parse_options): skip system call when
4558 there are no options to look for. Faster, cleaner for the common
4564 there are no options to look for. Faster, cleaner for the common
4559 case.
4565 case.
4560
4566
4561 * Documentation: many updates to the manual: describing Windows
4567 * Documentation: many updates to the manual: describing Windows
4562 support better, Gnuplot updates, credits, misc small stuff. Also
4568 support better, Gnuplot updates, credits, misc small stuff. Also
4563 updated the new_design doc a bit.
4569 updated the new_design doc a bit.
4564
4570
4565 2004-05-06 *** Released version 0.6.0.rc1
4571 2004-05-06 *** Released version 0.6.0.rc1
4566
4572
4567 2004-05-06 Fernando Perez <fperez@colorado.edu>
4573 2004-05-06 Fernando Perez <fperez@colorado.edu>
4568
4574
4569 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4575 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4570 operations to use the vastly more efficient list/''.join() method.
4576 operations to use the vastly more efficient list/''.join() method.
4571 (FormattedTB.text): Fix
4577 (FormattedTB.text): Fix
4572 http://www.scipy.net/roundup/ipython/issue12 - exception source
4578 http://www.scipy.net/roundup/ipython/issue12 - exception source
4573 extract not updated after reload. Thanks to Mike Salib
4579 extract not updated after reload. Thanks to Mike Salib
4574 <msalib-AT-mit.edu> for pinning the source of the problem.
4580 <msalib-AT-mit.edu> for pinning the source of the problem.
4575 Fortunately, the solution works inside ipython and doesn't require
4581 Fortunately, the solution works inside ipython and doesn't require
4576 any changes to python proper.
4582 any changes to python proper.
4577
4583
4578 * IPython/Magic.py (Magic.parse_options): Improved to process the
4584 * IPython/Magic.py (Magic.parse_options): Improved to process the
4579 argument list as a true shell would (by actually using the
4585 argument list as a true shell would (by actually using the
4580 underlying system shell). This way, all @magics automatically get
4586 underlying system shell). This way, all @magics automatically get
4581 shell expansion for variables. Thanks to a comment by Alex
4587 shell expansion for variables. Thanks to a comment by Alex
4582 Schmolck.
4588 Schmolck.
4583
4589
4584 2004-04-04 Fernando Perez <fperez@colorado.edu>
4590 2004-04-04 Fernando Perez <fperez@colorado.edu>
4585
4591
4586 * IPython/iplib.py (InteractiveShell.interact): Added a special
4592 * IPython/iplib.py (InteractiveShell.interact): Added a special
4587 trap for a debugger quit exception, which is basically impossible
4593 trap for a debugger quit exception, which is basically impossible
4588 to handle by normal mechanisms, given what pdb does to the stack.
4594 to handle by normal mechanisms, given what pdb does to the stack.
4589 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4595 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4590
4596
4591 2004-04-03 Fernando Perez <fperez@colorado.edu>
4597 2004-04-03 Fernando Perez <fperez@colorado.edu>
4592
4598
4593 * IPython/genutils.py (Term): Standardized the names of the Term
4599 * IPython/genutils.py (Term): Standardized the names of the Term
4594 class streams to cin/cout/cerr, following C++ naming conventions
4600 class streams to cin/cout/cerr, following C++ naming conventions
4595 (I can't use in/out/err because 'in' is not a valid attribute
4601 (I can't use in/out/err because 'in' is not a valid attribute
4596 name).
4602 name).
4597
4603
4598 * IPython/iplib.py (InteractiveShell.interact): don't increment
4604 * IPython/iplib.py (InteractiveShell.interact): don't increment
4599 the prompt if there's no user input. By Daniel 'Dang' Griffith
4605 the prompt if there's no user input. By Daniel 'Dang' Griffith
4600 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4606 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4601 Francois Pinard.
4607 Francois Pinard.
4602
4608
4603 2004-04-02 Fernando Perez <fperez@colorado.edu>
4609 2004-04-02 Fernando Perez <fperez@colorado.edu>
4604
4610
4605 * IPython/genutils.py (Stream.__init__): Modified to survive at
4611 * IPython/genutils.py (Stream.__init__): Modified to survive at
4606 least importing in contexts where stdin/out/err aren't true file
4612 least importing in contexts where stdin/out/err aren't true file
4607 objects, such as PyCrust (they lack fileno() and mode). However,
4613 objects, such as PyCrust (they lack fileno() and mode). However,
4608 the recovery facilities which rely on these things existing will
4614 the recovery facilities which rely on these things existing will
4609 not work.
4615 not work.
4610
4616
4611 2004-04-01 Fernando Perez <fperez@colorado.edu>
4617 2004-04-01 Fernando Perez <fperez@colorado.edu>
4612
4618
4613 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4619 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4614 use the new getoutputerror() function, so it properly
4620 use the new getoutputerror() function, so it properly
4615 distinguishes stdout/err.
4621 distinguishes stdout/err.
4616
4622
4617 * IPython/genutils.py (getoutputerror): added a function to
4623 * IPython/genutils.py (getoutputerror): added a function to
4618 capture separately the standard output and error of a command.
4624 capture separately the standard output and error of a command.
4619 After a comment from dang on the mailing lists. This code is
4625 After a comment from dang on the mailing lists. This code is
4620 basically a modified version of commands.getstatusoutput(), from
4626 basically a modified version of commands.getstatusoutput(), from
4621 the standard library.
4627 the standard library.
4622
4628
4623 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4629 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4624 '!!' as a special syntax (shorthand) to access @sx.
4630 '!!' as a special syntax (shorthand) to access @sx.
4625
4631
4626 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4632 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4627 command and return its output as a list split on '\n'.
4633 command and return its output as a list split on '\n'.
4628
4634
4629 2004-03-31 Fernando Perez <fperez@colorado.edu>
4635 2004-03-31 Fernando Perez <fperez@colorado.edu>
4630
4636
4631 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4637 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4632 method to dictionaries used as FakeModule instances if they lack
4638 method to dictionaries used as FakeModule instances if they lack
4633 it. At least pydoc in python2.3 breaks for runtime-defined
4639 it. At least pydoc in python2.3 breaks for runtime-defined
4634 functions without this hack. At some point I need to _really_
4640 functions without this hack. At some point I need to _really_
4635 understand what FakeModule is doing, because it's a gross hack.
4641 understand what FakeModule is doing, because it's a gross hack.
4636 But it solves Arnd's problem for now...
4642 But it solves Arnd's problem for now...
4637
4643
4638 2004-02-27 Fernando Perez <fperez@colorado.edu>
4644 2004-02-27 Fernando Perez <fperez@colorado.edu>
4639
4645
4640 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4646 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4641 mode would behave erratically. Also increased the number of
4647 mode would behave erratically. Also increased the number of
4642 possible logs in rotate mod to 999. Thanks to Rod Holland
4648 possible logs in rotate mod to 999. Thanks to Rod Holland
4643 <rhh@StructureLABS.com> for the report and fixes.
4649 <rhh@StructureLABS.com> for the report and fixes.
4644
4650
4645 2004-02-26 Fernando Perez <fperez@colorado.edu>
4651 2004-02-26 Fernando Perez <fperez@colorado.edu>
4646
4652
4647 * IPython/genutils.py (page): Check that the curses module really
4653 * IPython/genutils.py (page): Check that the curses module really
4648 has the initscr attribute before trying to use it. For some
4654 has the initscr attribute before trying to use it. For some
4649 reason, the Solaris curses module is missing this. I think this
4655 reason, the Solaris curses module is missing this. I think this
4650 should be considered a Solaris python bug, but I'm not sure.
4656 should be considered a Solaris python bug, but I'm not sure.
4651
4657
4652 2004-01-17 Fernando Perez <fperez@colorado.edu>
4658 2004-01-17 Fernando Perez <fperez@colorado.edu>
4653
4659
4654 * IPython/genutils.py (Stream.__init__): Changes to try to make
4660 * IPython/genutils.py (Stream.__init__): Changes to try to make
4655 ipython robust against stdin/out/err being closed by the user.
4661 ipython robust against stdin/out/err being closed by the user.
4656 This is 'user error' (and blocks a normal python session, at least
4662 This is 'user error' (and blocks a normal python session, at least
4657 the stdout case). However, Ipython should be able to survive such
4663 the stdout case). However, Ipython should be able to survive such
4658 instances of abuse as gracefully as possible. To simplify the
4664 instances of abuse as gracefully as possible. To simplify the
4659 coding and maintain compatibility with Gary Bishop's Term
4665 coding and maintain compatibility with Gary Bishop's Term
4660 contributions, I've made use of classmethods for this. I think
4666 contributions, I've made use of classmethods for this. I think
4661 this introduces a dependency on python 2.2.
4667 this introduces a dependency on python 2.2.
4662
4668
4663 2004-01-13 Fernando Perez <fperez@colorado.edu>
4669 2004-01-13 Fernando Perez <fperez@colorado.edu>
4664
4670
4665 * IPython/numutils.py (exp_safe): simplified the code a bit and
4671 * IPython/numutils.py (exp_safe): simplified the code a bit and
4666 removed the need for importing the kinds module altogether.
4672 removed the need for importing the kinds module altogether.
4667
4673
4668 2004-01-06 Fernando Perez <fperez@colorado.edu>
4674 2004-01-06 Fernando Perez <fperez@colorado.edu>
4669
4675
4670 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4676 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4671 a magic function instead, after some community feedback. No
4677 a magic function instead, after some community feedback. No
4672 special syntax will exist for it, but its name is deliberately
4678 special syntax will exist for it, but its name is deliberately
4673 very short.
4679 very short.
4674
4680
4675 2003-12-20 Fernando Perez <fperez@colorado.edu>
4681 2003-12-20 Fernando Perez <fperez@colorado.edu>
4676
4682
4677 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4683 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4678 new functionality, to automagically assign the result of a shell
4684 new functionality, to automagically assign the result of a shell
4679 command to a variable. I'll solicit some community feedback on
4685 command to a variable. I'll solicit some community feedback on
4680 this before making it permanent.
4686 this before making it permanent.
4681
4687
4682 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4688 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4683 requested about callables for which inspect couldn't obtain a
4689 requested about callables for which inspect couldn't obtain a
4684 proper argspec. Thanks to a crash report sent by Etienne
4690 proper argspec. Thanks to a crash report sent by Etienne
4685 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4691 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4686
4692
4687 2003-12-09 Fernando Perez <fperez@colorado.edu>
4693 2003-12-09 Fernando Perez <fperez@colorado.edu>
4688
4694
4689 * IPython/genutils.py (page): patch for the pager to work across
4695 * IPython/genutils.py (page): patch for the pager to work across
4690 various versions of Windows. By Gary Bishop.
4696 various versions of Windows. By Gary Bishop.
4691
4697
4692 2003-12-04 Fernando Perez <fperez@colorado.edu>
4698 2003-12-04 Fernando Perez <fperez@colorado.edu>
4693
4699
4694 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4700 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4695 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4701 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4696 While I tested this and it looks ok, there may still be corner
4702 While I tested this and it looks ok, there may still be corner
4697 cases I've missed.
4703 cases I've missed.
4698
4704
4699 2003-12-01 Fernando Perez <fperez@colorado.edu>
4705 2003-12-01 Fernando Perez <fperez@colorado.edu>
4700
4706
4701 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4707 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4702 where a line like 'p,q=1,2' would fail because the automagic
4708 where a line like 'p,q=1,2' would fail because the automagic
4703 system would be triggered for @p.
4709 system would be triggered for @p.
4704
4710
4705 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4711 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4706 cleanups, code unmodified.
4712 cleanups, code unmodified.
4707
4713
4708 * IPython/genutils.py (Term): added a class for IPython to handle
4714 * IPython/genutils.py (Term): added a class for IPython to handle
4709 output. In most cases it will just be a proxy for stdout/err, but
4715 output. In most cases it will just be a proxy for stdout/err, but
4710 having this allows modifications to be made for some platforms,
4716 having this allows modifications to be made for some platforms,
4711 such as handling color escapes under Windows. All of this code
4717 such as handling color escapes under Windows. All of this code
4712 was contributed by Gary Bishop, with minor modifications by me.
4718 was contributed by Gary Bishop, with minor modifications by me.
4713 The actual changes affect many files.
4719 The actual changes affect many files.
4714
4720
4715 2003-11-30 Fernando Perez <fperez@colorado.edu>
4721 2003-11-30 Fernando Perez <fperez@colorado.edu>
4716
4722
4717 * IPython/iplib.py (file_matches): new completion code, courtesy
4723 * IPython/iplib.py (file_matches): new completion code, courtesy
4718 of Jeff Collins. This enables filename completion again under
4724 of Jeff Collins. This enables filename completion again under
4719 python 2.3, which disabled it at the C level.
4725 python 2.3, which disabled it at the C level.
4720
4726
4721 2003-11-11 Fernando Perez <fperez@colorado.edu>
4727 2003-11-11 Fernando Perez <fperez@colorado.edu>
4722
4728
4723 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4729 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4724 for Numeric.array(map(...)), but often convenient.
4730 for Numeric.array(map(...)), but often convenient.
4725
4731
4726 2003-11-05 Fernando Perez <fperez@colorado.edu>
4732 2003-11-05 Fernando Perez <fperez@colorado.edu>
4727
4733
4728 * IPython/numutils.py (frange): Changed a call from int() to
4734 * IPython/numutils.py (frange): Changed a call from int() to
4729 int(round()) to prevent a problem reported with arange() in the
4735 int(round()) to prevent a problem reported with arange() in the
4730 numpy list.
4736 numpy list.
4731
4737
4732 2003-10-06 Fernando Perez <fperez@colorado.edu>
4738 2003-10-06 Fernando Perez <fperez@colorado.edu>
4733
4739
4734 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4740 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4735 prevent crashes if sys lacks an argv attribute (it happens with
4741 prevent crashes if sys lacks an argv attribute (it happens with
4736 embedded interpreters which build a bare-bones sys module).
4742 embedded interpreters which build a bare-bones sys module).
4737 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4743 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4738
4744
4739 2003-09-24 Fernando Perez <fperez@colorado.edu>
4745 2003-09-24 Fernando Perez <fperez@colorado.edu>
4740
4746
4741 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4747 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4742 to protect against poorly written user objects where __getattr__
4748 to protect against poorly written user objects where __getattr__
4743 raises exceptions other than AttributeError. Thanks to a bug
4749 raises exceptions other than AttributeError. Thanks to a bug
4744 report by Oliver Sander <osander-AT-gmx.de>.
4750 report by Oliver Sander <osander-AT-gmx.de>.
4745
4751
4746 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4752 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4747 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4753 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4748
4754
4749 2003-09-09 Fernando Perez <fperez@colorado.edu>
4755 2003-09-09 Fernando Perez <fperez@colorado.edu>
4750
4756
4751 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4757 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4752 unpacking a list whith a callable as first element would
4758 unpacking a list whith a callable as first element would
4753 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4759 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4754 Collins.
4760 Collins.
4755
4761
4756 2003-08-25 *** Released version 0.5.0
4762 2003-08-25 *** Released version 0.5.0
4757
4763
4758 2003-08-22 Fernando Perez <fperez@colorado.edu>
4764 2003-08-22 Fernando Perez <fperez@colorado.edu>
4759
4765
4760 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4766 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4761 improperly defined user exceptions. Thanks to feedback from Mark
4767 improperly defined user exceptions. Thanks to feedback from Mark
4762 Russell <mrussell-AT-verio.net>.
4768 Russell <mrussell-AT-verio.net>.
4763
4769
4764 2003-08-20 Fernando Perez <fperez@colorado.edu>
4770 2003-08-20 Fernando Perez <fperez@colorado.edu>
4765
4771
4766 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4772 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4767 printing so that it would print multi-line string forms starting
4773 printing so that it would print multi-line string forms starting
4768 with a new line. This way the formatting is better respected for
4774 with a new line. This way the formatting is better respected for
4769 objects which work hard to make nice string forms.
4775 objects which work hard to make nice string forms.
4770
4776
4771 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4777 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4772 autocall would overtake data access for objects with both
4778 autocall would overtake data access for objects with both
4773 __getitem__ and __call__.
4779 __getitem__ and __call__.
4774
4780
4775 2003-08-19 *** Released version 0.5.0-rc1
4781 2003-08-19 *** Released version 0.5.0-rc1
4776
4782
4777 2003-08-19 Fernando Perez <fperez@colorado.edu>
4783 2003-08-19 Fernando Perez <fperez@colorado.edu>
4778
4784
4779 * IPython/deep_reload.py (load_tail): single tiny change here
4785 * IPython/deep_reload.py (load_tail): single tiny change here
4780 seems to fix the long-standing bug of dreload() failing to work
4786 seems to fix the long-standing bug of dreload() failing to work
4781 for dotted names. But this module is pretty tricky, so I may have
4787 for dotted names. But this module is pretty tricky, so I may have
4782 missed some subtlety. Needs more testing!.
4788 missed some subtlety. Needs more testing!.
4783
4789
4784 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4790 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4785 exceptions which have badly implemented __str__ methods.
4791 exceptions which have badly implemented __str__ methods.
4786 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4792 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4787 which I've been getting reports about from Python 2.3 users. I
4793 which I've been getting reports about from Python 2.3 users. I
4788 wish I had a simple test case to reproduce the problem, so I could
4794 wish I had a simple test case to reproduce the problem, so I could
4789 either write a cleaner workaround or file a bug report if
4795 either write a cleaner workaround or file a bug report if
4790 necessary.
4796 necessary.
4791
4797
4792 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4798 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4793 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4799 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4794 a bug report by Tjabo Kloppenburg.
4800 a bug report by Tjabo Kloppenburg.
4795
4801
4796 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4802 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4797 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4803 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4798 seems rather unstable. Thanks to a bug report by Tjabo
4804 seems rather unstable. Thanks to a bug report by Tjabo
4799 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4805 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4800
4806
4801 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4807 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4802 this out soon because of the critical fixes in the inner loop for
4808 this out soon because of the critical fixes in the inner loop for
4803 generators.
4809 generators.
4804
4810
4805 * IPython/Magic.py (Magic.getargspec): removed. This (and
4811 * IPython/Magic.py (Magic.getargspec): removed. This (and
4806 _get_def) have been obsoleted by OInspect for a long time, I
4812 _get_def) have been obsoleted by OInspect for a long time, I
4807 hadn't noticed that they were dead code.
4813 hadn't noticed that they were dead code.
4808 (Magic._ofind): restored _ofind functionality for a few literals
4814 (Magic._ofind): restored _ofind functionality for a few literals
4809 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4815 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4810 for things like "hello".capitalize?, since that would require a
4816 for things like "hello".capitalize?, since that would require a
4811 potentially dangerous eval() again.
4817 potentially dangerous eval() again.
4812
4818
4813 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4819 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4814 logic a bit more to clean up the escapes handling and minimize the
4820 logic a bit more to clean up the escapes handling and minimize the
4815 use of _ofind to only necessary cases. The interactive 'feel' of
4821 use of _ofind to only necessary cases. The interactive 'feel' of
4816 IPython should have improved quite a bit with the changes in
4822 IPython should have improved quite a bit with the changes in
4817 _prefilter and _ofind (besides being far safer than before).
4823 _prefilter and _ofind (besides being far safer than before).
4818
4824
4819 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4825 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4820 obscure, never reported). Edit would fail to find the object to
4826 obscure, never reported). Edit would fail to find the object to
4821 edit under some circumstances.
4827 edit under some circumstances.
4822 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4828 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4823 which were causing double-calling of generators. Those eval calls
4829 which were causing double-calling of generators. Those eval calls
4824 were _very_ dangerous, since code with side effects could be
4830 were _very_ dangerous, since code with side effects could be
4825 triggered. As they say, 'eval is evil'... These were the
4831 triggered. As they say, 'eval is evil'... These were the
4826 nastiest evals in IPython. Besides, _ofind is now far simpler,
4832 nastiest evals in IPython. Besides, _ofind is now far simpler,
4827 and it should also be quite a bit faster. Its use of inspect is
4833 and it should also be quite a bit faster. Its use of inspect is
4828 also safer, so perhaps some of the inspect-related crashes I've
4834 also safer, so perhaps some of the inspect-related crashes I've
4829 seen lately with Python 2.3 might be taken care of. That will
4835 seen lately with Python 2.3 might be taken care of. That will
4830 need more testing.
4836 need more testing.
4831
4837
4832 2003-08-17 Fernando Perez <fperez@colorado.edu>
4838 2003-08-17 Fernando Perez <fperez@colorado.edu>
4833
4839
4834 * IPython/iplib.py (InteractiveShell._prefilter): significant
4840 * IPython/iplib.py (InteractiveShell._prefilter): significant
4835 simplifications to the logic for handling user escapes. Faster
4841 simplifications to the logic for handling user escapes. Faster
4836 and simpler code.
4842 and simpler code.
4837
4843
4838 2003-08-14 Fernando Perez <fperez@colorado.edu>
4844 2003-08-14 Fernando Perez <fperez@colorado.edu>
4839
4845
4840 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4846 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4841 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4847 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4842 but it should be quite a bit faster. And the recursive version
4848 but it should be quite a bit faster. And the recursive version
4843 generated O(log N) intermediate storage for all rank>1 arrays,
4849 generated O(log N) intermediate storage for all rank>1 arrays,
4844 even if they were contiguous.
4850 even if they were contiguous.
4845 (l1norm): Added this function.
4851 (l1norm): Added this function.
4846 (norm): Added this function for arbitrary norms (including
4852 (norm): Added this function for arbitrary norms (including
4847 l-infinity). l1 and l2 are still special cases for convenience
4853 l-infinity). l1 and l2 are still special cases for convenience
4848 and speed.
4854 and speed.
4849
4855
4850 2003-08-03 Fernando Perez <fperez@colorado.edu>
4856 2003-08-03 Fernando Perez <fperez@colorado.edu>
4851
4857
4852 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4858 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4853 exceptions, which now raise PendingDeprecationWarnings in Python
4859 exceptions, which now raise PendingDeprecationWarnings in Python
4854 2.3. There were some in Magic and some in Gnuplot2.
4860 2.3. There were some in Magic and some in Gnuplot2.
4855
4861
4856 2003-06-30 Fernando Perez <fperez@colorado.edu>
4862 2003-06-30 Fernando Perez <fperez@colorado.edu>
4857
4863
4858 * IPython/genutils.py (page): modified to call curses only for
4864 * IPython/genutils.py (page): modified to call curses only for
4859 terminals where TERM=='xterm'. After problems under many other
4865 terminals where TERM=='xterm'. After problems under many other
4860 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4866 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4861
4867
4862 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4868 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4863 would be triggered when readline was absent. This was just an old
4869 would be triggered when readline was absent. This was just an old
4864 debugging statement I'd forgotten to take out.
4870 debugging statement I'd forgotten to take out.
4865
4871
4866 2003-06-20 Fernando Perez <fperez@colorado.edu>
4872 2003-06-20 Fernando Perez <fperez@colorado.edu>
4867
4873
4868 * IPython/genutils.py (clock): modified to return only user time
4874 * IPython/genutils.py (clock): modified to return only user time
4869 (not counting system time), after a discussion on scipy. While
4875 (not counting system time), after a discussion on scipy. While
4870 system time may be a useful quantity occasionally, it may much
4876 system time may be a useful quantity occasionally, it may much
4871 more easily be skewed by occasional swapping or other similar
4877 more easily be skewed by occasional swapping or other similar
4872 activity.
4878 activity.
4873
4879
4874 2003-06-05 Fernando Perez <fperez@colorado.edu>
4880 2003-06-05 Fernando Perez <fperez@colorado.edu>
4875
4881
4876 * IPython/numutils.py (identity): new function, for building
4882 * IPython/numutils.py (identity): new function, for building
4877 arbitrary rank Kronecker deltas (mostly backwards compatible with
4883 arbitrary rank Kronecker deltas (mostly backwards compatible with
4878 Numeric.identity)
4884 Numeric.identity)
4879
4885
4880 2003-06-03 Fernando Perez <fperez@colorado.edu>
4886 2003-06-03 Fernando Perez <fperez@colorado.edu>
4881
4887
4882 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4888 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4883 arguments passed to magics with spaces, to allow trailing '\' to
4889 arguments passed to magics with spaces, to allow trailing '\' to
4884 work normally (mainly for Windows users).
4890 work normally (mainly for Windows users).
4885
4891
4886 2003-05-29 Fernando Perez <fperez@colorado.edu>
4892 2003-05-29 Fernando Perez <fperez@colorado.edu>
4887
4893
4888 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4894 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4889 instead of pydoc.help. This fixes a bizarre behavior where
4895 instead of pydoc.help. This fixes a bizarre behavior where
4890 printing '%s' % locals() would trigger the help system. Now
4896 printing '%s' % locals() would trigger the help system. Now
4891 ipython behaves like normal python does.
4897 ipython behaves like normal python does.
4892
4898
4893 Note that if one does 'from pydoc import help', the bizarre
4899 Note that if one does 'from pydoc import help', the bizarre
4894 behavior returns, but this will also happen in normal python, so
4900 behavior returns, but this will also happen in normal python, so
4895 it's not an ipython bug anymore (it has to do with how pydoc.help
4901 it's not an ipython bug anymore (it has to do with how pydoc.help
4896 is implemented).
4902 is implemented).
4897
4903
4898 2003-05-22 Fernando Perez <fperez@colorado.edu>
4904 2003-05-22 Fernando Perez <fperez@colorado.edu>
4899
4905
4900 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4906 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4901 return [] instead of None when nothing matches, also match to end
4907 return [] instead of None when nothing matches, also match to end
4902 of line. Patch by Gary Bishop.
4908 of line. Patch by Gary Bishop.
4903
4909
4904 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4910 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4905 protection as before, for files passed on the command line. This
4911 protection as before, for files passed on the command line. This
4906 prevents the CrashHandler from kicking in if user files call into
4912 prevents the CrashHandler from kicking in if user files call into
4907 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4913 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4908 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4914 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4909
4915
4910 2003-05-20 *** Released version 0.4.0
4916 2003-05-20 *** Released version 0.4.0
4911
4917
4912 2003-05-20 Fernando Perez <fperez@colorado.edu>
4918 2003-05-20 Fernando Perez <fperez@colorado.edu>
4913
4919
4914 * setup.py: added support for manpages. It's a bit hackish b/c of
4920 * setup.py: added support for manpages. It's a bit hackish b/c of
4915 a bug in the way the bdist_rpm distutils target handles gzipped
4921 a bug in the way the bdist_rpm distutils target handles gzipped
4916 manpages, but it works. After a patch by Jack.
4922 manpages, but it works. After a patch by Jack.
4917
4923
4918 2003-05-19 Fernando Perez <fperez@colorado.edu>
4924 2003-05-19 Fernando Perez <fperez@colorado.edu>
4919
4925
4920 * IPython/numutils.py: added a mockup of the kinds module, since
4926 * IPython/numutils.py: added a mockup of the kinds module, since
4921 it was recently removed from Numeric. This way, numutils will
4927 it was recently removed from Numeric. This way, numutils will
4922 work for all users even if they are missing kinds.
4928 work for all users even if they are missing kinds.
4923
4929
4924 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4930 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4925 failure, which can occur with SWIG-wrapped extensions. After a
4931 failure, which can occur with SWIG-wrapped extensions. After a
4926 crash report from Prabhu.
4932 crash report from Prabhu.
4927
4933
4928 2003-05-16 Fernando Perez <fperez@colorado.edu>
4934 2003-05-16 Fernando Perez <fperez@colorado.edu>
4929
4935
4930 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4936 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4931 protect ipython from user code which may call directly
4937 protect ipython from user code which may call directly
4932 sys.excepthook (this looks like an ipython crash to the user, even
4938 sys.excepthook (this looks like an ipython crash to the user, even
4933 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4939 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4934 This is especially important to help users of WxWindows, but may
4940 This is especially important to help users of WxWindows, but may
4935 also be useful in other cases.
4941 also be useful in other cases.
4936
4942
4937 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4943 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4938 an optional tb_offset to be specified, and to preserve exception
4944 an optional tb_offset to be specified, and to preserve exception
4939 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4945 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4940
4946
4941 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4947 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4942
4948
4943 2003-05-15 Fernando Perez <fperez@colorado.edu>
4949 2003-05-15 Fernando Perez <fperez@colorado.edu>
4944
4950
4945 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4951 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4946 installing for a new user under Windows.
4952 installing for a new user under Windows.
4947
4953
4948 2003-05-12 Fernando Perez <fperez@colorado.edu>
4954 2003-05-12 Fernando Perez <fperez@colorado.edu>
4949
4955
4950 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4956 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4951 handler for Emacs comint-based lines. Currently it doesn't do
4957 handler for Emacs comint-based lines. Currently it doesn't do
4952 much (but importantly, it doesn't update the history cache). In
4958 much (but importantly, it doesn't update the history cache). In
4953 the future it may be expanded if Alex needs more functionality
4959 the future it may be expanded if Alex needs more functionality
4954 there.
4960 there.
4955
4961
4956 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4962 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4957 info to crash reports.
4963 info to crash reports.
4958
4964
4959 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4965 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4960 just like Python's -c. Also fixed crash with invalid -color
4966 just like Python's -c. Also fixed crash with invalid -color
4961 option value at startup. Thanks to Will French
4967 option value at startup. Thanks to Will French
4962 <wfrench-AT-bestweb.net> for the bug report.
4968 <wfrench-AT-bestweb.net> for the bug report.
4963
4969
4964 2003-05-09 Fernando Perez <fperez@colorado.edu>
4970 2003-05-09 Fernando Perez <fperez@colorado.edu>
4965
4971
4966 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4972 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4967 to EvalDict (it's a mapping, after all) and simplified its code
4973 to EvalDict (it's a mapping, after all) and simplified its code
4968 quite a bit, after a nice discussion on c.l.py where Gustavo
4974 quite a bit, after a nice discussion on c.l.py where Gustavo
4969 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4975 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4970
4976
4971 2003-04-30 Fernando Perez <fperez@colorado.edu>
4977 2003-04-30 Fernando Perez <fperez@colorado.edu>
4972
4978
4973 * IPython/genutils.py (timings_out): modified it to reduce its
4979 * IPython/genutils.py (timings_out): modified it to reduce its
4974 overhead in the common reps==1 case.
4980 overhead in the common reps==1 case.
4975
4981
4976 2003-04-29 Fernando Perez <fperez@colorado.edu>
4982 2003-04-29 Fernando Perez <fperez@colorado.edu>
4977
4983
4978 * IPython/genutils.py (timings_out): Modified to use the resource
4984 * IPython/genutils.py (timings_out): Modified to use the resource
4979 module, which avoids the wraparound problems of time.clock().
4985 module, which avoids the wraparound problems of time.clock().
4980
4986
4981 2003-04-17 *** Released version 0.2.15pre4
4987 2003-04-17 *** Released version 0.2.15pre4
4982
4988
4983 2003-04-17 Fernando Perez <fperez@colorado.edu>
4989 2003-04-17 Fernando Perez <fperez@colorado.edu>
4984
4990
4985 * setup.py (scriptfiles): Split windows-specific stuff over to a
4991 * setup.py (scriptfiles): Split windows-specific stuff over to a
4986 separate file, in an attempt to have a Windows GUI installer.
4992 separate file, in an attempt to have a Windows GUI installer.
4987 That didn't work, but part of the groundwork is done.
4993 That didn't work, but part of the groundwork is done.
4988
4994
4989 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4995 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4990 indent/unindent with 4 spaces. Particularly useful in combination
4996 indent/unindent with 4 spaces. Particularly useful in combination
4991 with the new auto-indent option.
4997 with the new auto-indent option.
4992
4998
4993 2003-04-16 Fernando Perez <fperez@colorado.edu>
4999 2003-04-16 Fernando Perez <fperez@colorado.edu>
4994
5000
4995 * IPython/Magic.py: various replacements of self.rc for
5001 * IPython/Magic.py: various replacements of self.rc for
4996 self.shell.rc. A lot more remains to be done to fully disentangle
5002 self.shell.rc. A lot more remains to be done to fully disentangle
4997 this class from the main Shell class.
5003 this class from the main Shell class.
4998
5004
4999 * IPython/GnuplotRuntime.py: added checks for mouse support so
5005 * IPython/GnuplotRuntime.py: added checks for mouse support so
5000 that we don't try to enable it if the current gnuplot doesn't
5006 that we don't try to enable it if the current gnuplot doesn't
5001 really support it. Also added checks so that we don't try to
5007 really support it. Also added checks so that we don't try to
5002 enable persist under Windows (where Gnuplot doesn't recognize the
5008 enable persist under Windows (where Gnuplot doesn't recognize the
5003 option).
5009 option).
5004
5010
5005 * IPython/iplib.py (InteractiveShell.interact): Added optional
5011 * IPython/iplib.py (InteractiveShell.interact): Added optional
5006 auto-indenting code, after a patch by King C. Shu
5012 auto-indenting code, after a patch by King C. Shu
5007 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5013 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5008 get along well with pasting indented code. If I ever figure out
5014 get along well with pasting indented code. If I ever figure out
5009 how to make that part go well, it will become on by default.
5015 how to make that part go well, it will become on by default.
5010
5016
5011 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5017 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5012 crash ipython if there was an unmatched '%' in the user's prompt
5018 crash ipython if there was an unmatched '%' in the user's prompt
5013 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5019 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5014
5020
5015 * IPython/iplib.py (InteractiveShell.interact): removed the
5021 * IPython/iplib.py (InteractiveShell.interact): removed the
5016 ability to ask the user whether he wants to crash or not at the
5022 ability to ask the user whether he wants to crash or not at the
5017 'last line' exception handler. Calling functions at that point
5023 'last line' exception handler. Calling functions at that point
5018 changes the stack, and the error reports would have incorrect
5024 changes the stack, and the error reports would have incorrect
5019 tracebacks.
5025 tracebacks.
5020
5026
5021 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5027 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5022 pass through a peger a pretty-printed form of any object. After a
5028 pass through a peger a pretty-printed form of any object. After a
5023 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5029 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5024
5030
5025 2003-04-14 Fernando Perez <fperez@colorado.edu>
5031 2003-04-14 Fernando Perez <fperez@colorado.edu>
5026
5032
5027 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5033 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5028 all files in ~ would be modified at first install (instead of
5034 all files in ~ would be modified at first install (instead of
5029 ~/.ipython). This could be potentially disastrous, as the
5035 ~/.ipython). This could be potentially disastrous, as the
5030 modification (make line-endings native) could damage binary files.
5036 modification (make line-endings native) could damage binary files.
5031
5037
5032 2003-04-10 Fernando Perez <fperez@colorado.edu>
5038 2003-04-10 Fernando Perez <fperez@colorado.edu>
5033
5039
5034 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5040 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5035 handle only lines which are invalid python. This now means that
5041 handle only lines which are invalid python. This now means that
5036 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5042 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5037 for the bug report.
5043 for the bug report.
5038
5044
5039 2003-04-01 Fernando Perez <fperez@colorado.edu>
5045 2003-04-01 Fernando Perez <fperez@colorado.edu>
5040
5046
5041 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5047 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5042 where failing to set sys.last_traceback would crash pdb.pm().
5048 where failing to set sys.last_traceback would crash pdb.pm().
5043 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5049 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5044 report.
5050 report.
5045
5051
5046 2003-03-25 Fernando Perez <fperez@colorado.edu>
5052 2003-03-25 Fernando Perez <fperez@colorado.edu>
5047
5053
5048 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5054 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5049 before printing it (it had a lot of spurious blank lines at the
5055 before printing it (it had a lot of spurious blank lines at the
5050 end).
5056 end).
5051
5057
5052 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5058 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5053 output would be sent 21 times! Obviously people don't use this
5059 output would be sent 21 times! Obviously people don't use this
5054 too often, or I would have heard about it.
5060 too often, or I would have heard about it.
5055
5061
5056 2003-03-24 Fernando Perez <fperez@colorado.edu>
5062 2003-03-24 Fernando Perez <fperez@colorado.edu>
5057
5063
5058 * setup.py (scriptfiles): renamed the data_files parameter from
5064 * setup.py (scriptfiles): renamed the data_files parameter from
5059 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5065 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5060 for the patch.
5066 for the patch.
5061
5067
5062 2003-03-20 Fernando Perez <fperez@colorado.edu>
5068 2003-03-20 Fernando Perez <fperez@colorado.edu>
5063
5069
5064 * IPython/genutils.py (error): added error() and fatal()
5070 * IPython/genutils.py (error): added error() and fatal()
5065 functions.
5071 functions.
5066
5072
5067 2003-03-18 *** Released version 0.2.15pre3
5073 2003-03-18 *** Released version 0.2.15pre3
5068
5074
5069 2003-03-18 Fernando Perez <fperez@colorado.edu>
5075 2003-03-18 Fernando Perez <fperez@colorado.edu>
5070
5076
5071 * setupext/install_data_ext.py
5077 * setupext/install_data_ext.py
5072 (install_data_ext.initialize_options): Class contributed by Jack
5078 (install_data_ext.initialize_options): Class contributed by Jack
5073 Moffit for fixing the old distutils hack. He is sending this to
5079 Moffit for fixing the old distutils hack. He is sending this to
5074 the distutils folks so in the future we may not need it as a
5080 the distutils folks so in the future we may not need it as a
5075 private fix.
5081 private fix.
5076
5082
5077 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5083 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5078 changes for Debian packaging. See his patch for full details.
5084 changes for Debian packaging. See his patch for full details.
5079 The old distutils hack of making the ipythonrc* files carry a
5085 The old distutils hack of making the ipythonrc* files carry a
5080 bogus .py extension is gone, at last. Examples were moved to a
5086 bogus .py extension is gone, at last. Examples were moved to a
5081 separate subdir under doc/, and the separate executable scripts
5087 separate subdir under doc/, and the separate executable scripts
5082 now live in their own directory. Overall a great cleanup. The
5088 now live in their own directory. Overall a great cleanup. The
5083 manual was updated to use the new files, and setup.py has been
5089 manual was updated to use the new files, and setup.py has been
5084 fixed for this setup.
5090 fixed for this setup.
5085
5091
5086 * IPython/PyColorize.py (Parser.usage): made non-executable and
5092 * IPython/PyColorize.py (Parser.usage): made non-executable and
5087 created a pycolor wrapper around it to be included as a script.
5093 created a pycolor wrapper around it to be included as a script.
5088
5094
5089 2003-03-12 *** Released version 0.2.15pre2
5095 2003-03-12 *** Released version 0.2.15pre2
5090
5096
5091 2003-03-12 Fernando Perez <fperez@colorado.edu>
5097 2003-03-12 Fernando Perez <fperez@colorado.edu>
5092
5098
5093 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5099 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5094 long-standing problem with garbage characters in some terminals.
5100 long-standing problem with garbage characters in some terminals.
5095 The issue was really that the \001 and \002 escapes must _only_ be
5101 The issue was really that the \001 and \002 escapes must _only_ be
5096 passed to input prompts (which call readline), but _never_ to
5102 passed to input prompts (which call readline), but _never_ to
5097 normal text to be printed on screen. I changed ColorANSI to have
5103 normal text to be printed on screen. I changed ColorANSI to have
5098 two classes: TermColors and InputTermColors, each with the
5104 two classes: TermColors and InputTermColors, each with the
5099 appropriate escapes for input prompts or normal text. The code in
5105 appropriate escapes for input prompts or normal text. The code in
5100 Prompts.py got slightly more complicated, but this very old and
5106 Prompts.py got slightly more complicated, but this very old and
5101 annoying bug is finally fixed.
5107 annoying bug is finally fixed.
5102
5108
5103 All the credit for nailing down the real origin of this problem
5109 All the credit for nailing down the real origin of this problem
5104 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5110 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5105 *Many* thanks to him for spending quite a bit of effort on this.
5111 *Many* thanks to him for spending quite a bit of effort on this.
5106
5112
5107 2003-03-05 *** Released version 0.2.15pre1
5113 2003-03-05 *** Released version 0.2.15pre1
5108
5114
5109 2003-03-03 Fernando Perez <fperez@colorado.edu>
5115 2003-03-03 Fernando Perez <fperez@colorado.edu>
5110
5116
5111 * IPython/FakeModule.py: Moved the former _FakeModule to a
5117 * IPython/FakeModule.py: Moved the former _FakeModule to a
5112 separate file, because it's also needed by Magic (to fix a similar
5118 separate file, because it's also needed by Magic (to fix a similar
5113 pickle-related issue in @run).
5119 pickle-related issue in @run).
5114
5120
5115 2003-03-02 Fernando Perez <fperez@colorado.edu>
5121 2003-03-02 Fernando Perez <fperez@colorado.edu>
5116
5122
5117 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5123 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5118 the autocall option at runtime.
5124 the autocall option at runtime.
5119 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5125 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5120 across Magic.py to start separating Magic from InteractiveShell.
5126 across Magic.py to start separating Magic from InteractiveShell.
5121 (Magic._ofind): Fixed to return proper namespace for dotted
5127 (Magic._ofind): Fixed to return proper namespace for dotted
5122 names. Before, a dotted name would always return 'not currently
5128 names. Before, a dotted name would always return 'not currently
5123 defined', because it would find the 'parent'. s.x would be found,
5129 defined', because it would find the 'parent'. s.x would be found,
5124 but since 'x' isn't defined by itself, it would get confused.
5130 but since 'x' isn't defined by itself, it would get confused.
5125 (Magic.magic_run): Fixed pickling problems reported by Ralf
5131 (Magic.magic_run): Fixed pickling problems reported by Ralf
5126 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5132 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5127 that I'd used when Mike Heeter reported similar issues at the
5133 that I'd used when Mike Heeter reported similar issues at the
5128 top-level, but now for @run. It boils down to injecting the
5134 top-level, but now for @run. It boils down to injecting the
5129 namespace where code is being executed with something that looks
5135 namespace where code is being executed with something that looks
5130 enough like a module to fool pickle.dump(). Since a pickle stores
5136 enough like a module to fool pickle.dump(). Since a pickle stores
5131 a named reference to the importing module, we need this for
5137 a named reference to the importing module, we need this for
5132 pickles to save something sensible.
5138 pickles to save something sensible.
5133
5139
5134 * IPython/ipmaker.py (make_IPython): added an autocall option.
5140 * IPython/ipmaker.py (make_IPython): added an autocall option.
5135
5141
5136 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5142 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5137 the auto-eval code. Now autocalling is an option, and the code is
5143 the auto-eval code. Now autocalling is an option, and the code is
5138 also vastly safer. There is no more eval() involved at all.
5144 also vastly safer. There is no more eval() involved at all.
5139
5145
5140 2003-03-01 Fernando Perez <fperez@colorado.edu>
5146 2003-03-01 Fernando Perez <fperez@colorado.edu>
5141
5147
5142 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5148 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5143 dict with named keys instead of a tuple.
5149 dict with named keys instead of a tuple.
5144
5150
5145 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5151 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5146
5152
5147 * setup.py (make_shortcut): Fixed message about directories
5153 * setup.py (make_shortcut): Fixed message about directories
5148 created during Windows installation (the directories were ok, just
5154 created during Windows installation (the directories were ok, just
5149 the printed message was misleading). Thanks to Chris Liechti
5155 the printed message was misleading). Thanks to Chris Liechti
5150 <cliechti-AT-gmx.net> for the heads up.
5156 <cliechti-AT-gmx.net> for the heads up.
5151
5157
5152 2003-02-21 Fernando Perez <fperez@colorado.edu>
5158 2003-02-21 Fernando Perez <fperez@colorado.edu>
5153
5159
5154 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5160 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5155 of ValueError exception when checking for auto-execution. This
5161 of ValueError exception when checking for auto-execution. This
5156 one is raised by things like Numeric arrays arr.flat when the
5162 one is raised by things like Numeric arrays arr.flat when the
5157 array is non-contiguous.
5163 array is non-contiguous.
5158
5164
5159 2003-01-31 Fernando Perez <fperez@colorado.edu>
5165 2003-01-31 Fernando Perez <fperez@colorado.edu>
5160
5166
5161 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5167 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5162 not return any value at all (even though the command would get
5168 not return any value at all (even though the command would get
5163 executed).
5169 executed).
5164 (xsys): Flush stdout right after printing the command to ensure
5170 (xsys): Flush stdout right after printing the command to ensure
5165 proper ordering of commands and command output in the total
5171 proper ordering of commands and command output in the total
5166 output.
5172 output.
5167 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5173 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5168 system/getoutput as defaults. The old ones are kept for
5174 system/getoutput as defaults. The old ones are kept for
5169 compatibility reasons, so no code which uses this library needs
5175 compatibility reasons, so no code which uses this library needs
5170 changing.
5176 changing.
5171
5177
5172 2003-01-27 *** Released version 0.2.14
5178 2003-01-27 *** Released version 0.2.14
5173
5179
5174 2003-01-25 Fernando Perez <fperez@colorado.edu>
5180 2003-01-25 Fernando Perez <fperez@colorado.edu>
5175
5181
5176 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5182 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5177 functions defined in previous edit sessions could not be re-edited
5183 functions defined in previous edit sessions could not be re-edited
5178 (because the temp files were immediately removed). Now temp files
5184 (because the temp files were immediately removed). Now temp files
5179 are removed only at IPython's exit.
5185 are removed only at IPython's exit.
5180 (Magic.magic_run): Improved @run to perform shell-like expansions
5186 (Magic.magic_run): Improved @run to perform shell-like expansions
5181 on its arguments (~users and $VARS). With this, @run becomes more
5187 on its arguments (~users and $VARS). With this, @run becomes more
5182 like a normal command-line.
5188 like a normal command-line.
5183
5189
5184 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5190 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5185 bugs related to embedding and cleaned up that code. A fairly
5191 bugs related to embedding and cleaned up that code. A fairly
5186 important one was the impossibility to access the global namespace
5192 important one was the impossibility to access the global namespace
5187 through the embedded IPython (only local variables were visible).
5193 through the embedded IPython (only local variables were visible).
5188
5194
5189 2003-01-14 Fernando Perez <fperez@colorado.edu>
5195 2003-01-14 Fernando Perez <fperez@colorado.edu>
5190
5196
5191 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5197 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5192 auto-calling to be a bit more conservative. Now it doesn't get
5198 auto-calling to be a bit more conservative. Now it doesn't get
5193 triggered if any of '!=()<>' are in the rest of the input line, to
5199 triggered if any of '!=()<>' are in the rest of the input line, to
5194 allow comparing callables. Thanks to Alex for the heads up.
5200 allow comparing callables. Thanks to Alex for the heads up.
5195
5201
5196 2003-01-07 Fernando Perez <fperez@colorado.edu>
5202 2003-01-07 Fernando Perez <fperez@colorado.edu>
5197
5203
5198 * IPython/genutils.py (page): fixed estimation of the number of
5204 * IPython/genutils.py (page): fixed estimation of the number of
5199 lines in a string to be paged to simply count newlines. This
5205 lines in a string to be paged to simply count newlines. This
5200 prevents over-guessing due to embedded escape sequences. A better
5206 prevents over-guessing due to embedded escape sequences. A better
5201 long-term solution would involve stripping out the control chars
5207 long-term solution would involve stripping out the control chars
5202 for the count, but it's potentially so expensive I just don't
5208 for the count, but it's potentially so expensive I just don't
5203 think it's worth doing.
5209 think it's worth doing.
5204
5210
5205 2002-12-19 *** Released version 0.2.14pre50
5211 2002-12-19 *** Released version 0.2.14pre50
5206
5212
5207 2002-12-19 Fernando Perez <fperez@colorado.edu>
5213 2002-12-19 Fernando Perez <fperez@colorado.edu>
5208
5214
5209 * tools/release (version): Changed release scripts to inform
5215 * tools/release (version): Changed release scripts to inform
5210 Andrea and build a NEWS file with a list of recent changes.
5216 Andrea and build a NEWS file with a list of recent changes.
5211
5217
5212 * IPython/ColorANSI.py (__all__): changed terminal detection
5218 * IPython/ColorANSI.py (__all__): changed terminal detection
5213 code. Seems to work better for xterms without breaking
5219 code. Seems to work better for xterms without breaking
5214 konsole. Will need more testing to determine if WinXP and Mac OSX
5220 konsole. Will need more testing to determine if WinXP and Mac OSX
5215 also work ok.
5221 also work ok.
5216
5222
5217 2002-12-18 *** Released version 0.2.14pre49
5223 2002-12-18 *** Released version 0.2.14pre49
5218
5224
5219 2002-12-18 Fernando Perez <fperez@colorado.edu>
5225 2002-12-18 Fernando Perez <fperez@colorado.edu>
5220
5226
5221 * Docs: added new info about Mac OSX, from Andrea.
5227 * Docs: added new info about Mac OSX, from Andrea.
5222
5228
5223 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5229 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5224 allow direct plotting of python strings whose format is the same
5230 allow direct plotting of python strings whose format is the same
5225 of gnuplot data files.
5231 of gnuplot data files.
5226
5232
5227 2002-12-16 Fernando Perez <fperez@colorado.edu>
5233 2002-12-16 Fernando Perez <fperez@colorado.edu>
5228
5234
5229 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5235 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5230 value of exit question to be acknowledged.
5236 value of exit question to be acknowledged.
5231
5237
5232 2002-12-03 Fernando Perez <fperez@colorado.edu>
5238 2002-12-03 Fernando Perez <fperez@colorado.edu>
5233
5239
5234 * IPython/ipmaker.py: removed generators, which had been added
5240 * IPython/ipmaker.py: removed generators, which had been added
5235 by mistake in an earlier debugging run. This was causing trouble
5241 by mistake in an earlier debugging run. This was causing trouble
5236 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5242 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5237 for pointing this out.
5243 for pointing this out.
5238
5244
5239 2002-11-17 Fernando Perez <fperez@colorado.edu>
5245 2002-11-17 Fernando Perez <fperez@colorado.edu>
5240
5246
5241 * Manual: updated the Gnuplot section.
5247 * Manual: updated the Gnuplot section.
5242
5248
5243 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5249 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5244 a much better split of what goes in Runtime and what goes in
5250 a much better split of what goes in Runtime and what goes in
5245 Interactive.
5251 Interactive.
5246
5252
5247 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5253 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5248 being imported from iplib.
5254 being imported from iplib.
5249
5255
5250 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5256 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5251 for command-passing. Now the global Gnuplot instance is called
5257 for command-passing. Now the global Gnuplot instance is called
5252 'gp' instead of 'g', which was really a far too fragile and
5258 'gp' instead of 'g', which was really a far too fragile and
5253 common name.
5259 common name.
5254
5260
5255 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5261 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5256 bounding boxes generated by Gnuplot for square plots.
5262 bounding boxes generated by Gnuplot for square plots.
5257
5263
5258 * IPython/genutils.py (popkey): new function added. I should
5264 * IPython/genutils.py (popkey): new function added. I should
5259 suggest this on c.l.py as a dict method, it seems useful.
5265 suggest this on c.l.py as a dict method, it seems useful.
5260
5266
5261 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5267 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5262 to transparently handle PostScript generation. MUCH better than
5268 to transparently handle PostScript generation. MUCH better than
5263 the previous plot_eps/replot_eps (which I removed now). The code
5269 the previous plot_eps/replot_eps (which I removed now). The code
5264 is also fairly clean and well documented now (including
5270 is also fairly clean and well documented now (including
5265 docstrings).
5271 docstrings).
5266
5272
5267 2002-11-13 Fernando Perez <fperez@colorado.edu>
5273 2002-11-13 Fernando Perez <fperez@colorado.edu>
5268
5274
5269 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5275 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5270 (inconsistent with options).
5276 (inconsistent with options).
5271
5277
5272 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5278 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5273 manually disabled, I don't know why. Fixed it.
5279 manually disabled, I don't know why. Fixed it.
5274 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5280 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5275 eps output.
5281 eps output.
5276
5282
5277 2002-11-12 Fernando Perez <fperez@colorado.edu>
5283 2002-11-12 Fernando Perez <fperez@colorado.edu>
5278
5284
5279 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5285 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5280 don't propagate up to caller. Fixes crash reported by François
5286 don't propagate up to caller. Fixes crash reported by François
5281 Pinard.
5287 Pinard.
5282
5288
5283 2002-11-09 Fernando Perez <fperez@colorado.edu>
5289 2002-11-09 Fernando Perez <fperez@colorado.edu>
5284
5290
5285 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5291 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5286 history file for new users.
5292 history file for new users.
5287 (make_IPython): fixed bug where initial install would leave the
5293 (make_IPython): fixed bug where initial install would leave the
5288 user running in the .ipython dir.
5294 user running in the .ipython dir.
5289 (make_IPython): fixed bug where config dir .ipython would be
5295 (make_IPython): fixed bug where config dir .ipython would be
5290 created regardless of the given -ipythondir option. Thanks to Cory
5296 created regardless of the given -ipythondir option. Thanks to Cory
5291 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5297 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5292
5298
5293 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5299 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5294 type confirmations. Will need to use it in all of IPython's code
5300 type confirmations. Will need to use it in all of IPython's code
5295 consistently.
5301 consistently.
5296
5302
5297 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5303 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5298 context to print 31 lines instead of the default 5. This will make
5304 context to print 31 lines instead of the default 5. This will make
5299 the crash reports extremely detailed in case the problem is in
5305 the crash reports extremely detailed in case the problem is in
5300 libraries I don't have access to.
5306 libraries I don't have access to.
5301
5307
5302 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5308 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5303 line of defense' code to still crash, but giving users fair
5309 line of defense' code to still crash, but giving users fair
5304 warning. I don't want internal errors to go unreported: if there's
5310 warning. I don't want internal errors to go unreported: if there's
5305 an internal problem, IPython should crash and generate a full
5311 an internal problem, IPython should crash and generate a full
5306 report.
5312 report.
5307
5313
5308 2002-11-08 Fernando Perez <fperez@colorado.edu>
5314 2002-11-08 Fernando Perez <fperez@colorado.edu>
5309
5315
5310 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5316 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5311 otherwise uncaught exceptions which can appear if people set
5317 otherwise uncaught exceptions which can appear if people set
5312 sys.stdout to something badly broken. Thanks to a crash report
5318 sys.stdout to something badly broken. Thanks to a crash report
5313 from henni-AT-mail.brainbot.com.
5319 from henni-AT-mail.brainbot.com.
5314
5320
5315 2002-11-04 Fernando Perez <fperez@colorado.edu>
5321 2002-11-04 Fernando Perez <fperez@colorado.edu>
5316
5322
5317 * IPython/iplib.py (InteractiveShell.interact): added
5323 * IPython/iplib.py (InteractiveShell.interact): added
5318 __IPYTHON__active to the builtins. It's a flag which goes on when
5324 __IPYTHON__active to the builtins. It's a flag which goes on when
5319 the interaction starts and goes off again when it stops. This
5325 the interaction starts and goes off again when it stops. This
5320 allows embedding code to detect being inside IPython. Before this
5326 allows embedding code to detect being inside IPython. Before this
5321 was done via __IPYTHON__, but that only shows that an IPython
5327 was done via __IPYTHON__, but that only shows that an IPython
5322 instance has been created.
5328 instance has been created.
5323
5329
5324 * IPython/Magic.py (Magic.magic_env): I realized that in a
5330 * IPython/Magic.py (Magic.magic_env): I realized that in a
5325 UserDict, instance.data holds the data as a normal dict. So I
5331 UserDict, instance.data holds the data as a normal dict. So I
5326 modified @env to return os.environ.data instead of rebuilding a
5332 modified @env to return os.environ.data instead of rebuilding a
5327 dict by hand.
5333 dict by hand.
5328
5334
5329 2002-11-02 Fernando Perez <fperez@colorado.edu>
5335 2002-11-02 Fernando Perez <fperez@colorado.edu>
5330
5336
5331 * IPython/genutils.py (warn): changed so that level 1 prints no
5337 * IPython/genutils.py (warn): changed so that level 1 prints no
5332 header. Level 2 is now the default (with 'WARNING' header, as
5338 header. Level 2 is now the default (with 'WARNING' header, as
5333 before). I think I tracked all places where changes were needed in
5339 before). I think I tracked all places where changes were needed in
5334 IPython, but outside code using the old level numbering may have
5340 IPython, but outside code using the old level numbering may have
5335 broken.
5341 broken.
5336
5342
5337 * IPython/iplib.py (InteractiveShell.runcode): added this to
5343 * IPython/iplib.py (InteractiveShell.runcode): added this to
5338 handle the tracebacks in SystemExit traps correctly. The previous
5344 handle the tracebacks in SystemExit traps correctly. The previous
5339 code (through interact) was printing more of the stack than
5345 code (through interact) was printing more of the stack than
5340 necessary, showing IPython internal code to the user.
5346 necessary, showing IPython internal code to the user.
5341
5347
5342 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5348 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5343 default. Now that the default at the confirmation prompt is yes,
5349 default. Now that the default at the confirmation prompt is yes,
5344 it's not so intrusive. François' argument that ipython sessions
5350 it's not so intrusive. François' argument that ipython sessions
5345 tend to be complex enough not to lose them from an accidental C-d,
5351 tend to be complex enough not to lose them from an accidental C-d,
5346 is a valid one.
5352 is a valid one.
5347
5353
5348 * IPython/iplib.py (InteractiveShell.interact): added a
5354 * IPython/iplib.py (InteractiveShell.interact): added a
5349 showtraceback() call to the SystemExit trap, and modified the exit
5355 showtraceback() call to the SystemExit trap, and modified the exit
5350 confirmation to have yes as the default.
5356 confirmation to have yes as the default.
5351
5357
5352 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5358 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5353 this file. It's been gone from the code for a long time, this was
5359 this file. It's been gone from the code for a long time, this was
5354 simply leftover junk.
5360 simply leftover junk.
5355
5361
5356 2002-11-01 Fernando Perez <fperez@colorado.edu>
5362 2002-11-01 Fernando Perez <fperez@colorado.edu>
5357
5363
5358 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5364 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5359 added. If set, IPython now traps EOF and asks for
5365 added. If set, IPython now traps EOF and asks for
5360 confirmation. After a request by François Pinard.
5366 confirmation. After a request by François Pinard.
5361
5367
5362 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5368 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5363 of @abort, and with a new (better) mechanism for handling the
5369 of @abort, and with a new (better) mechanism for handling the
5364 exceptions.
5370 exceptions.
5365
5371
5366 2002-10-27 Fernando Perez <fperez@colorado.edu>
5372 2002-10-27 Fernando Perez <fperez@colorado.edu>
5367
5373
5368 * IPython/usage.py (__doc__): updated the --help information and
5374 * IPython/usage.py (__doc__): updated the --help information and
5369 the ipythonrc file to indicate that -log generates
5375 the ipythonrc file to indicate that -log generates
5370 ./ipython.log. Also fixed the corresponding info in @logstart.
5376 ./ipython.log. Also fixed the corresponding info in @logstart.
5371 This and several other fixes in the manuals thanks to reports by
5377 This and several other fixes in the manuals thanks to reports by
5372 François Pinard <pinard-AT-iro.umontreal.ca>.
5378 François Pinard <pinard-AT-iro.umontreal.ca>.
5373
5379
5374 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5380 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5375 refer to @logstart (instead of @log, which doesn't exist).
5381 refer to @logstart (instead of @log, which doesn't exist).
5376
5382
5377 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5383 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5378 AttributeError crash. Thanks to Christopher Armstrong
5384 AttributeError crash. Thanks to Christopher Armstrong
5379 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5385 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5380 introduced recently (in 0.2.14pre37) with the fix to the eval
5386 introduced recently (in 0.2.14pre37) with the fix to the eval
5381 problem mentioned below.
5387 problem mentioned below.
5382
5388
5383 2002-10-17 Fernando Perez <fperez@colorado.edu>
5389 2002-10-17 Fernando Perez <fperez@colorado.edu>
5384
5390
5385 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5391 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5386 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5392 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5387
5393
5388 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5394 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5389 this function to fix a problem reported by Alex Schmolck. He saw
5395 this function to fix a problem reported by Alex Schmolck. He saw
5390 it with list comprehensions and generators, which were getting
5396 it with list comprehensions and generators, which were getting
5391 called twice. The real problem was an 'eval' call in testing for
5397 called twice. The real problem was an 'eval' call in testing for
5392 automagic which was evaluating the input line silently.
5398 automagic which was evaluating the input line silently.
5393
5399
5394 This is a potentially very nasty bug, if the input has side
5400 This is a potentially very nasty bug, if the input has side
5395 effects which must not be repeated. The code is much cleaner now,
5401 effects which must not be repeated. The code is much cleaner now,
5396 without any blanket 'except' left and with a regexp test for
5402 without any blanket 'except' left and with a regexp test for
5397 actual function names.
5403 actual function names.
5398
5404
5399 But an eval remains, which I'm not fully comfortable with. I just
5405 But an eval remains, which I'm not fully comfortable with. I just
5400 don't know how to find out if an expression could be a callable in
5406 don't know how to find out if an expression could be a callable in
5401 the user's namespace without doing an eval on the string. However
5407 the user's namespace without doing an eval on the string. However
5402 that string is now much more strictly checked so that no code
5408 that string is now much more strictly checked so that no code
5403 slips by, so the eval should only happen for things that can
5409 slips by, so the eval should only happen for things that can
5404 really be only function/method names.
5410 really be only function/method names.
5405
5411
5406 2002-10-15 Fernando Perez <fperez@colorado.edu>
5412 2002-10-15 Fernando Perez <fperez@colorado.edu>
5407
5413
5408 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5414 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5409 OSX information to main manual, removed README_Mac_OSX file from
5415 OSX information to main manual, removed README_Mac_OSX file from
5410 distribution. Also updated credits for recent additions.
5416 distribution. Also updated credits for recent additions.
5411
5417
5412 2002-10-10 Fernando Perez <fperez@colorado.edu>
5418 2002-10-10 Fernando Perez <fperez@colorado.edu>
5413
5419
5414 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5420 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5415 terminal-related issues. Many thanks to Andrea Riciputi
5421 terminal-related issues. Many thanks to Andrea Riciputi
5416 <andrea.riciputi-AT-libero.it> for writing it.
5422 <andrea.riciputi-AT-libero.it> for writing it.
5417
5423
5418 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5424 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5419 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5425 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5420
5426
5421 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5427 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5422 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5428 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5423 <syver-en-AT-online.no> who both submitted patches for this problem.
5429 <syver-en-AT-online.no> who both submitted patches for this problem.
5424
5430
5425 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5431 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5426 global embedding to make sure that things don't overwrite user
5432 global embedding to make sure that things don't overwrite user
5427 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5433 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5428
5434
5429 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5435 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5430 compatibility. Thanks to Hayden Callow
5436 compatibility. Thanks to Hayden Callow
5431 <h.callow-AT-elec.canterbury.ac.nz>
5437 <h.callow-AT-elec.canterbury.ac.nz>
5432
5438
5433 2002-10-04 Fernando Perez <fperez@colorado.edu>
5439 2002-10-04 Fernando Perez <fperez@colorado.edu>
5434
5440
5435 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5441 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5436 Gnuplot.File objects.
5442 Gnuplot.File objects.
5437
5443
5438 2002-07-23 Fernando Perez <fperez@colorado.edu>
5444 2002-07-23 Fernando Perez <fperez@colorado.edu>
5439
5445
5440 * IPython/genutils.py (timing): Added timings() and timing() for
5446 * IPython/genutils.py (timing): Added timings() and timing() for
5441 quick access to the most commonly needed data, the execution
5447 quick access to the most commonly needed data, the execution
5442 times. Old timing() renamed to timings_out().
5448 times. Old timing() renamed to timings_out().
5443
5449
5444 2002-07-18 Fernando Perez <fperez@colorado.edu>
5450 2002-07-18 Fernando Perez <fperez@colorado.edu>
5445
5451
5446 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5452 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5447 bug with nested instances disrupting the parent's tab completion.
5453 bug with nested instances disrupting the parent's tab completion.
5448
5454
5449 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5455 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5450 all_completions code to begin the emacs integration.
5456 all_completions code to begin the emacs integration.
5451
5457
5452 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5458 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5453 argument to allow titling individual arrays when plotting.
5459 argument to allow titling individual arrays when plotting.
5454
5460
5455 2002-07-15 Fernando Perez <fperez@colorado.edu>
5461 2002-07-15 Fernando Perez <fperez@colorado.edu>
5456
5462
5457 * setup.py (make_shortcut): changed to retrieve the value of
5463 * setup.py (make_shortcut): changed to retrieve the value of
5458 'Program Files' directory from the registry (this value changes in
5464 'Program Files' directory from the registry (this value changes in
5459 non-english versions of Windows). Thanks to Thomas Fanslau
5465 non-english versions of Windows). Thanks to Thomas Fanslau
5460 <tfanslau-AT-gmx.de> for the report.
5466 <tfanslau-AT-gmx.de> for the report.
5461
5467
5462 2002-07-10 Fernando Perez <fperez@colorado.edu>
5468 2002-07-10 Fernando Perez <fperez@colorado.edu>
5463
5469
5464 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5470 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5465 a bug in pdb, which crashes if a line with only whitespace is
5471 a bug in pdb, which crashes if a line with only whitespace is
5466 entered. Bug report submitted to sourceforge.
5472 entered. Bug report submitted to sourceforge.
5467
5473
5468 2002-07-09 Fernando Perez <fperez@colorado.edu>
5474 2002-07-09 Fernando Perez <fperez@colorado.edu>
5469
5475
5470 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5476 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5471 reporting exceptions (it's a bug in inspect.py, I just set a
5477 reporting exceptions (it's a bug in inspect.py, I just set a
5472 workaround).
5478 workaround).
5473
5479
5474 2002-07-08 Fernando Perez <fperez@colorado.edu>
5480 2002-07-08 Fernando Perez <fperez@colorado.edu>
5475
5481
5476 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5482 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5477 __IPYTHON__ in __builtins__ to show up in user_ns.
5483 __IPYTHON__ in __builtins__ to show up in user_ns.
5478
5484
5479 2002-07-03 Fernando Perez <fperez@colorado.edu>
5485 2002-07-03 Fernando Perez <fperez@colorado.edu>
5480
5486
5481 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5487 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5482 name from @gp_set_instance to @gp_set_default.
5488 name from @gp_set_instance to @gp_set_default.
5483
5489
5484 * IPython/ipmaker.py (make_IPython): default editor value set to
5490 * IPython/ipmaker.py (make_IPython): default editor value set to
5485 '0' (a string), to match the rc file. Otherwise will crash when
5491 '0' (a string), to match the rc file. Otherwise will crash when
5486 .strip() is called on it.
5492 .strip() is called on it.
5487
5493
5488
5494
5489 2002-06-28 Fernando Perez <fperez@colorado.edu>
5495 2002-06-28 Fernando Perez <fperez@colorado.edu>
5490
5496
5491 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5497 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5492 of files in current directory when a file is executed via
5498 of files in current directory when a file is executed via
5493 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5499 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5494
5500
5495 * setup.py (manfiles): fix for rpm builds, submitted by RA
5501 * setup.py (manfiles): fix for rpm builds, submitted by RA
5496 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5502 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5497
5503
5498 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5504 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5499 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5505 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5500 string!). A. Schmolck caught this one.
5506 string!). A. Schmolck caught this one.
5501
5507
5502 2002-06-27 Fernando Perez <fperez@colorado.edu>
5508 2002-06-27 Fernando Perez <fperez@colorado.edu>
5503
5509
5504 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5510 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5505 defined files at the cmd line. __name__ wasn't being set to
5511 defined files at the cmd line. __name__ wasn't being set to
5506 __main__.
5512 __main__.
5507
5513
5508 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5514 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5509 regular lists and tuples besides Numeric arrays.
5515 regular lists and tuples besides Numeric arrays.
5510
5516
5511 * IPython/Prompts.py (CachedOutput.__call__): Added output
5517 * IPython/Prompts.py (CachedOutput.__call__): Added output
5512 supression for input ending with ';'. Similar to Mathematica and
5518 supression for input ending with ';'. Similar to Mathematica and
5513 Matlab. The _* vars and Out[] list are still updated, just like
5519 Matlab. The _* vars and Out[] list are still updated, just like
5514 Mathematica behaves.
5520 Mathematica behaves.
5515
5521
5516 2002-06-25 Fernando Perez <fperez@colorado.edu>
5522 2002-06-25 Fernando Perez <fperez@colorado.edu>
5517
5523
5518 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5524 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5519 .ini extensions for profiels under Windows.
5525 .ini extensions for profiels under Windows.
5520
5526
5521 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5527 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5522 string form. Fix contributed by Alexander Schmolck
5528 string form. Fix contributed by Alexander Schmolck
5523 <a.schmolck-AT-gmx.net>
5529 <a.schmolck-AT-gmx.net>
5524
5530
5525 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5531 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5526 pre-configured Gnuplot instance.
5532 pre-configured Gnuplot instance.
5527
5533
5528 2002-06-21 Fernando Perez <fperez@colorado.edu>
5534 2002-06-21 Fernando Perez <fperez@colorado.edu>
5529
5535
5530 * IPython/numutils.py (exp_safe): new function, works around the
5536 * IPython/numutils.py (exp_safe): new function, works around the
5531 underflow problems in Numeric.
5537 underflow problems in Numeric.
5532 (log2): New fn. Safe log in base 2: returns exact integer answer
5538 (log2): New fn. Safe log in base 2: returns exact integer answer
5533 for exact integer powers of 2.
5539 for exact integer powers of 2.
5534
5540
5535 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5541 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5536 properly.
5542 properly.
5537
5543
5538 2002-06-20 Fernando Perez <fperez@colorado.edu>
5544 2002-06-20 Fernando Perez <fperez@colorado.edu>
5539
5545
5540 * IPython/genutils.py (timing): new function like
5546 * IPython/genutils.py (timing): new function like
5541 Mathematica's. Similar to time_test, but returns more info.
5547 Mathematica's. Similar to time_test, but returns more info.
5542
5548
5543 2002-06-18 Fernando Perez <fperez@colorado.edu>
5549 2002-06-18 Fernando Perez <fperez@colorado.edu>
5544
5550
5545 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5551 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5546 according to Mike Heeter's suggestions.
5552 according to Mike Heeter's suggestions.
5547
5553
5548 2002-06-16 Fernando Perez <fperez@colorado.edu>
5554 2002-06-16 Fernando Perez <fperez@colorado.edu>
5549
5555
5550 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5556 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5551 system. GnuplotMagic is gone as a user-directory option. New files
5557 system. GnuplotMagic is gone as a user-directory option. New files
5552 make it easier to use all the gnuplot stuff both from external
5558 make it easier to use all the gnuplot stuff both from external
5553 programs as well as from IPython. Had to rewrite part of
5559 programs as well as from IPython. Had to rewrite part of
5554 hardcopy() b/c of a strange bug: often the ps files simply don't
5560 hardcopy() b/c of a strange bug: often the ps files simply don't
5555 get created, and require a repeat of the command (often several
5561 get created, and require a repeat of the command (often several
5556 times).
5562 times).
5557
5563
5558 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5564 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5559 resolve output channel at call time, so that if sys.stderr has
5565 resolve output channel at call time, so that if sys.stderr has
5560 been redirected by user this gets honored.
5566 been redirected by user this gets honored.
5561
5567
5562 2002-06-13 Fernando Perez <fperez@colorado.edu>
5568 2002-06-13 Fernando Perez <fperez@colorado.edu>
5563
5569
5564 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5570 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5565 IPShell. Kept a copy with the old names to avoid breaking people's
5571 IPShell. Kept a copy with the old names to avoid breaking people's
5566 embedded code.
5572 embedded code.
5567
5573
5568 * IPython/ipython: simplified it to the bare minimum after
5574 * IPython/ipython: simplified it to the bare minimum after
5569 Holger's suggestions. Added info about how to use it in
5575 Holger's suggestions. Added info about how to use it in
5570 PYTHONSTARTUP.
5576 PYTHONSTARTUP.
5571
5577
5572 * IPython/Shell.py (IPythonShell): changed the options passing
5578 * IPython/Shell.py (IPythonShell): changed the options passing
5573 from a string with funky %s replacements to a straight list. Maybe
5579 from a string with funky %s replacements to a straight list. Maybe
5574 a bit more typing, but it follows sys.argv conventions, so there's
5580 a bit more typing, but it follows sys.argv conventions, so there's
5575 less special-casing to remember.
5581 less special-casing to remember.
5576
5582
5577 2002-06-12 Fernando Perez <fperez@colorado.edu>
5583 2002-06-12 Fernando Perez <fperez@colorado.edu>
5578
5584
5579 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5585 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5580 command. Thanks to a suggestion by Mike Heeter.
5586 command. Thanks to a suggestion by Mike Heeter.
5581 (Magic.magic_pfile): added behavior to look at filenames if given
5587 (Magic.magic_pfile): added behavior to look at filenames if given
5582 arg is not a defined object.
5588 arg is not a defined object.
5583 (Magic.magic_save): New @save function to save code snippets. Also
5589 (Magic.magic_save): New @save function to save code snippets. Also
5584 a Mike Heeter idea.
5590 a Mike Heeter idea.
5585
5591
5586 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5592 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5587 plot() and replot(). Much more convenient now, especially for
5593 plot() and replot(). Much more convenient now, especially for
5588 interactive use.
5594 interactive use.
5589
5595
5590 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5596 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5591 filenames.
5597 filenames.
5592
5598
5593 2002-06-02 Fernando Perez <fperez@colorado.edu>
5599 2002-06-02 Fernando Perez <fperez@colorado.edu>
5594
5600
5595 * IPython/Struct.py (Struct.__init__): modified to admit
5601 * IPython/Struct.py (Struct.__init__): modified to admit
5596 initialization via another struct.
5602 initialization via another struct.
5597
5603
5598 * IPython/genutils.py (SystemExec.__init__): New stateful
5604 * IPython/genutils.py (SystemExec.__init__): New stateful
5599 interface to xsys and bq. Useful for writing system scripts.
5605 interface to xsys and bq. Useful for writing system scripts.
5600
5606
5601 2002-05-30 Fernando Perez <fperez@colorado.edu>
5607 2002-05-30 Fernando Perez <fperez@colorado.edu>
5602
5608
5603 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5609 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5604 documents. This will make the user download smaller (it's getting
5610 documents. This will make the user download smaller (it's getting
5605 too big).
5611 too big).
5606
5612
5607 2002-05-29 Fernando Perez <fperez@colorado.edu>
5613 2002-05-29 Fernando Perez <fperez@colorado.edu>
5608
5614
5609 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5615 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5610 fix problems with shelve and pickle. Seems to work, but I don't
5616 fix problems with shelve and pickle. Seems to work, but I don't
5611 know if corner cases break it. Thanks to Mike Heeter
5617 know if corner cases break it. Thanks to Mike Heeter
5612 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5618 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5613
5619
5614 2002-05-24 Fernando Perez <fperez@colorado.edu>
5620 2002-05-24 Fernando Perez <fperez@colorado.edu>
5615
5621
5616 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5622 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5617 macros having broken.
5623 macros having broken.
5618
5624
5619 2002-05-21 Fernando Perez <fperez@colorado.edu>
5625 2002-05-21 Fernando Perez <fperez@colorado.edu>
5620
5626
5621 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5627 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5622 introduced logging bug: all history before logging started was
5628 introduced logging bug: all history before logging started was
5623 being written one character per line! This came from the redesign
5629 being written one character per line! This came from the redesign
5624 of the input history as a special list which slices to strings,
5630 of the input history as a special list which slices to strings,
5625 not to lists.
5631 not to lists.
5626
5632
5627 2002-05-20 Fernando Perez <fperez@colorado.edu>
5633 2002-05-20 Fernando Perez <fperez@colorado.edu>
5628
5634
5629 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5635 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5630 be an attribute of all classes in this module. The design of these
5636 be an attribute of all classes in this module. The design of these
5631 classes needs some serious overhauling.
5637 classes needs some serious overhauling.
5632
5638
5633 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5639 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5634 which was ignoring '_' in option names.
5640 which was ignoring '_' in option names.
5635
5641
5636 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5642 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5637 'Verbose_novars' to 'Context' and made it the new default. It's a
5643 'Verbose_novars' to 'Context' and made it the new default. It's a
5638 bit more readable and also safer than verbose.
5644 bit more readable and also safer than verbose.
5639
5645
5640 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5646 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5641 triple-quoted strings.
5647 triple-quoted strings.
5642
5648
5643 * IPython/OInspect.py (__all__): new module exposing the object
5649 * IPython/OInspect.py (__all__): new module exposing the object
5644 introspection facilities. Now the corresponding magics are dummy
5650 introspection facilities. Now the corresponding magics are dummy
5645 wrappers around this. Having this module will make it much easier
5651 wrappers around this. Having this module will make it much easier
5646 to put these functions into our modified pdb.
5652 to put these functions into our modified pdb.
5647 This new object inspector system uses the new colorizing module,
5653 This new object inspector system uses the new colorizing module,
5648 so source code and other things are nicely syntax highlighted.
5654 so source code and other things are nicely syntax highlighted.
5649
5655
5650 2002-05-18 Fernando Perez <fperez@colorado.edu>
5656 2002-05-18 Fernando Perez <fperez@colorado.edu>
5651
5657
5652 * IPython/ColorANSI.py: Split the coloring tools into a separate
5658 * IPython/ColorANSI.py: Split the coloring tools into a separate
5653 module so I can use them in other code easier (they were part of
5659 module so I can use them in other code easier (they were part of
5654 ultraTB).
5660 ultraTB).
5655
5661
5656 2002-05-17 Fernando Perez <fperez@colorado.edu>
5662 2002-05-17 Fernando Perez <fperez@colorado.edu>
5657
5663
5658 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5664 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5659 fixed it to set the global 'g' also to the called instance, as
5665 fixed it to set the global 'g' also to the called instance, as
5660 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5666 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5661 user's 'g' variables).
5667 user's 'g' variables).
5662
5668
5663 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5669 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5664 global variables (aliases to _ih,_oh) so that users which expect
5670 global variables (aliases to _ih,_oh) so that users which expect
5665 In[5] or Out[7] to work aren't unpleasantly surprised.
5671 In[5] or Out[7] to work aren't unpleasantly surprised.
5666 (InputList.__getslice__): new class to allow executing slices of
5672 (InputList.__getslice__): new class to allow executing slices of
5667 input history directly. Very simple class, complements the use of
5673 input history directly. Very simple class, complements the use of
5668 macros.
5674 macros.
5669
5675
5670 2002-05-16 Fernando Perez <fperez@colorado.edu>
5676 2002-05-16 Fernando Perez <fperez@colorado.edu>
5671
5677
5672 * setup.py (docdirbase): make doc directory be just doc/IPython
5678 * setup.py (docdirbase): make doc directory be just doc/IPython
5673 without version numbers, it will reduce clutter for users.
5679 without version numbers, it will reduce clutter for users.
5674
5680
5675 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5681 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5676 execfile call to prevent possible memory leak. See for details:
5682 execfile call to prevent possible memory leak. See for details:
5677 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5683 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5678
5684
5679 2002-05-15 Fernando Perez <fperez@colorado.edu>
5685 2002-05-15 Fernando Perez <fperez@colorado.edu>
5680
5686
5681 * IPython/Magic.py (Magic.magic_psource): made the object
5687 * IPython/Magic.py (Magic.magic_psource): made the object
5682 introspection names be more standard: pdoc, pdef, pfile and
5688 introspection names be more standard: pdoc, pdef, pfile and
5683 psource. They all print/page their output, and it makes
5689 psource. They all print/page their output, and it makes
5684 remembering them easier. Kept old names for compatibility as
5690 remembering them easier. Kept old names for compatibility as
5685 aliases.
5691 aliases.
5686
5692
5687 2002-05-14 Fernando Perez <fperez@colorado.edu>
5693 2002-05-14 Fernando Perez <fperez@colorado.edu>
5688
5694
5689 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5695 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5690 what the mouse problem was. The trick is to use gnuplot with temp
5696 what the mouse problem was. The trick is to use gnuplot with temp
5691 files and NOT with pipes (for data communication), because having
5697 files and NOT with pipes (for data communication), because having
5692 both pipes and the mouse on is bad news.
5698 both pipes and the mouse on is bad news.
5693
5699
5694 2002-05-13 Fernando Perez <fperez@colorado.edu>
5700 2002-05-13 Fernando Perez <fperez@colorado.edu>
5695
5701
5696 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5702 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5697 bug. Information would be reported about builtins even when
5703 bug. Information would be reported about builtins even when
5698 user-defined functions overrode them.
5704 user-defined functions overrode them.
5699
5705
5700 2002-05-11 Fernando Perez <fperez@colorado.edu>
5706 2002-05-11 Fernando Perez <fperez@colorado.edu>
5701
5707
5702 * IPython/__init__.py (__all__): removed FlexCompleter from
5708 * IPython/__init__.py (__all__): removed FlexCompleter from
5703 __all__ so that things don't fail in platforms without readline.
5709 __all__ so that things don't fail in platforms without readline.
5704
5710
5705 2002-05-10 Fernando Perez <fperez@colorado.edu>
5711 2002-05-10 Fernando Perez <fperez@colorado.edu>
5706
5712
5707 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5713 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5708 it requires Numeric, effectively making Numeric a dependency for
5714 it requires Numeric, effectively making Numeric a dependency for
5709 IPython.
5715 IPython.
5710
5716
5711 * Released 0.2.13
5717 * Released 0.2.13
5712
5718
5713 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5719 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5714 profiler interface. Now all the major options from the profiler
5720 profiler interface. Now all the major options from the profiler
5715 module are directly supported in IPython, both for single
5721 module are directly supported in IPython, both for single
5716 expressions (@prun) and for full programs (@run -p).
5722 expressions (@prun) and for full programs (@run -p).
5717
5723
5718 2002-05-09 Fernando Perez <fperez@colorado.edu>
5724 2002-05-09 Fernando Perez <fperez@colorado.edu>
5719
5725
5720 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5726 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5721 magic properly formatted for screen.
5727 magic properly formatted for screen.
5722
5728
5723 * setup.py (make_shortcut): Changed things to put pdf version in
5729 * setup.py (make_shortcut): Changed things to put pdf version in
5724 doc/ instead of doc/manual (had to change lyxport a bit).
5730 doc/ instead of doc/manual (had to change lyxport a bit).
5725
5731
5726 * IPython/Magic.py (Profile.string_stats): made profile runs go
5732 * IPython/Magic.py (Profile.string_stats): made profile runs go
5727 through pager (they are long and a pager allows searching, saving,
5733 through pager (they are long and a pager allows searching, saving,
5728 etc.)
5734 etc.)
5729
5735
5730 2002-05-08 Fernando Perez <fperez@colorado.edu>
5736 2002-05-08 Fernando Perez <fperez@colorado.edu>
5731
5737
5732 * Released 0.2.12
5738 * Released 0.2.12
5733
5739
5734 2002-05-06 Fernando Perez <fperez@colorado.edu>
5740 2002-05-06 Fernando Perez <fperez@colorado.edu>
5735
5741
5736 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5742 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5737 introduced); 'hist n1 n2' was broken.
5743 introduced); 'hist n1 n2' was broken.
5738 (Magic.magic_pdb): added optional on/off arguments to @pdb
5744 (Magic.magic_pdb): added optional on/off arguments to @pdb
5739 (Magic.magic_run): added option -i to @run, which executes code in
5745 (Magic.magic_run): added option -i to @run, which executes code in
5740 the IPython namespace instead of a clean one. Also added @irun as
5746 the IPython namespace instead of a clean one. Also added @irun as
5741 an alias to @run -i.
5747 an alias to @run -i.
5742
5748
5743 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5749 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5744 fixed (it didn't really do anything, the namespaces were wrong).
5750 fixed (it didn't really do anything, the namespaces were wrong).
5745
5751
5746 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5752 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5747
5753
5748 * IPython/__init__.py (__all__): Fixed package namespace, now
5754 * IPython/__init__.py (__all__): Fixed package namespace, now
5749 'import IPython' does give access to IPython.<all> as
5755 'import IPython' does give access to IPython.<all> as
5750 expected. Also renamed __release__ to Release.
5756 expected. Also renamed __release__ to Release.
5751
5757
5752 * IPython/Debugger.py (__license__): created new Pdb class which
5758 * IPython/Debugger.py (__license__): created new Pdb class which
5753 functions like a drop-in for the normal pdb.Pdb but does NOT
5759 functions like a drop-in for the normal pdb.Pdb but does NOT
5754 import readline by default. This way it doesn't muck up IPython's
5760 import readline by default. This way it doesn't muck up IPython's
5755 readline handling, and now tab-completion finally works in the
5761 readline handling, and now tab-completion finally works in the
5756 debugger -- sort of. It completes things globally visible, but the
5762 debugger -- sort of. It completes things globally visible, but the
5757 completer doesn't track the stack as pdb walks it. That's a bit
5763 completer doesn't track the stack as pdb walks it. That's a bit
5758 tricky, and I'll have to implement it later.
5764 tricky, and I'll have to implement it later.
5759
5765
5760 2002-05-05 Fernando Perez <fperez@colorado.edu>
5766 2002-05-05 Fernando Perez <fperez@colorado.edu>
5761
5767
5762 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5768 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5763 magic docstrings when printed via ? (explicit \'s were being
5769 magic docstrings when printed via ? (explicit \'s were being
5764 printed).
5770 printed).
5765
5771
5766 * IPython/ipmaker.py (make_IPython): fixed namespace
5772 * IPython/ipmaker.py (make_IPython): fixed namespace
5767 identification bug. Now variables loaded via logs or command-line
5773 identification bug. Now variables loaded via logs or command-line
5768 files are recognized in the interactive namespace by @who.
5774 files are recognized in the interactive namespace by @who.
5769
5775
5770 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5776 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5771 log replay system stemming from the string form of Structs.
5777 log replay system stemming from the string form of Structs.
5772
5778
5773 * IPython/Magic.py (Macro.__init__): improved macros to properly
5779 * IPython/Magic.py (Macro.__init__): improved macros to properly
5774 handle magic commands in them.
5780 handle magic commands in them.
5775 (Magic.magic_logstart): usernames are now expanded so 'logstart
5781 (Magic.magic_logstart): usernames are now expanded so 'logstart
5776 ~/mylog' now works.
5782 ~/mylog' now works.
5777
5783
5778 * IPython/iplib.py (complete): fixed bug where paths starting with
5784 * IPython/iplib.py (complete): fixed bug where paths starting with
5779 '/' would be completed as magic names.
5785 '/' would be completed as magic names.
5780
5786
5781 2002-05-04 Fernando Perez <fperez@colorado.edu>
5787 2002-05-04 Fernando Perez <fperez@colorado.edu>
5782
5788
5783 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5789 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5784 allow running full programs under the profiler's control.
5790 allow running full programs under the profiler's control.
5785
5791
5786 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5792 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5787 mode to report exceptions verbosely but without formatting
5793 mode to report exceptions verbosely but without formatting
5788 variables. This addresses the issue of ipython 'freezing' (it's
5794 variables. This addresses the issue of ipython 'freezing' (it's
5789 not frozen, but caught in an expensive formatting loop) when huge
5795 not frozen, but caught in an expensive formatting loop) when huge
5790 variables are in the context of an exception.
5796 variables are in the context of an exception.
5791 (VerboseTB.text): Added '--->' markers at line where exception was
5797 (VerboseTB.text): Added '--->' markers at line where exception was
5792 triggered. Much clearer to read, especially in NoColor modes.
5798 triggered. Much clearer to read, especially in NoColor modes.
5793
5799
5794 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5800 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5795 implemented in reverse when changing to the new parse_options().
5801 implemented in reverse when changing to the new parse_options().
5796
5802
5797 2002-05-03 Fernando Perez <fperez@colorado.edu>
5803 2002-05-03 Fernando Perez <fperez@colorado.edu>
5798
5804
5799 * IPython/Magic.py (Magic.parse_options): new function so that
5805 * IPython/Magic.py (Magic.parse_options): new function so that
5800 magics can parse options easier.
5806 magics can parse options easier.
5801 (Magic.magic_prun): new function similar to profile.run(),
5807 (Magic.magic_prun): new function similar to profile.run(),
5802 suggested by Chris Hart.
5808 suggested by Chris Hart.
5803 (Magic.magic_cd): fixed behavior so that it only changes if
5809 (Magic.magic_cd): fixed behavior so that it only changes if
5804 directory actually is in history.
5810 directory actually is in history.
5805
5811
5806 * IPython/usage.py (__doc__): added information about potential
5812 * IPython/usage.py (__doc__): added information about potential
5807 slowness of Verbose exception mode when there are huge data
5813 slowness of Verbose exception mode when there are huge data
5808 structures to be formatted (thanks to Archie Paulson).
5814 structures to be formatted (thanks to Archie Paulson).
5809
5815
5810 * IPython/ipmaker.py (make_IPython): Changed default logging
5816 * IPython/ipmaker.py (make_IPython): Changed default logging
5811 (when simply called with -log) to use curr_dir/ipython.log in
5817 (when simply called with -log) to use curr_dir/ipython.log in
5812 rotate mode. Fixed crash which was occuring with -log before
5818 rotate mode. Fixed crash which was occuring with -log before
5813 (thanks to Jim Boyle).
5819 (thanks to Jim Boyle).
5814
5820
5815 2002-05-01 Fernando Perez <fperez@colorado.edu>
5821 2002-05-01 Fernando Perez <fperez@colorado.edu>
5816
5822
5817 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5823 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5818 was nasty -- though somewhat of a corner case).
5824 was nasty -- though somewhat of a corner case).
5819
5825
5820 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5826 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5821 text (was a bug).
5827 text (was a bug).
5822
5828
5823 2002-04-30 Fernando Perez <fperez@colorado.edu>
5829 2002-04-30 Fernando Perez <fperez@colorado.edu>
5824
5830
5825 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5831 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5826 a print after ^D or ^C from the user so that the In[] prompt
5832 a print after ^D or ^C from the user so that the In[] prompt
5827 doesn't over-run the gnuplot one.
5833 doesn't over-run the gnuplot one.
5828
5834
5829 2002-04-29 Fernando Perez <fperez@colorado.edu>
5835 2002-04-29 Fernando Perez <fperez@colorado.edu>
5830
5836
5831 * Released 0.2.10
5837 * Released 0.2.10
5832
5838
5833 * IPython/__release__.py (version): get date dynamically.
5839 * IPython/__release__.py (version): get date dynamically.
5834
5840
5835 * Misc. documentation updates thanks to Arnd's comments. Also ran
5841 * Misc. documentation updates thanks to Arnd's comments. Also ran
5836 a full spellcheck on the manual (hadn't been done in a while).
5842 a full spellcheck on the manual (hadn't been done in a while).
5837
5843
5838 2002-04-27 Fernando Perez <fperez@colorado.edu>
5844 2002-04-27 Fernando Perez <fperez@colorado.edu>
5839
5845
5840 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5846 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5841 starting a log in mid-session would reset the input history list.
5847 starting a log in mid-session would reset the input history list.
5842
5848
5843 2002-04-26 Fernando Perez <fperez@colorado.edu>
5849 2002-04-26 Fernando Perez <fperez@colorado.edu>
5844
5850
5845 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5851 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5846 all files were being included in an update. Now anything in
5852 all files were being included in an update. Now anything in
5847 UserConfig that matches [A-Za-z]*.py will go (this excludes
5853 UserConfig that matches [A-Za-z]*.py will go (this excludes
5848 __init__.py)
5854 __init__.py)
5849
5855
5850 2002-04-25 Fernando Perez <fperez@colorado.edu>
5856 2002-04-25 Fernando Perez <fperez@colorado.edu>
5851
5857
5852 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5858 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5853 to __builtins__ so that any form of embedded or imported code can
5859 to __builtins__ so that any form of embedded or imported code can
5854 test for being inside IPython.
5860 test for being inside IPython.
5855
5861
5856 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5862 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5857 changed to GnuplotMagic because it's now an importable module,
5863 changed to GnuplotMagic because it's now an importable module,
5858 this makes the name follow that of the standard Gnuplot module.
5864 this makes the name follow that of the standard Gnuplot module.
5859 GnuplotMagic can now be loaded at any time in mid-session.
5865 GnuplotMagic can now be loaded at any time in mid-session.
5860
5866
5861 2002-04-24 Fernando Perez <fperez@colorado.edu>
5867 2002-04-24 Fernando Perez <fperez@colorado.edu>
5862
5868
5863 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5869 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5864 the globals (IPython has its own namespace) and the
5870 the globals (IPython has its own namespace) and the
5865 PhysicalQuantity stuff is much better anyway.
5871 PhysicalQuantity stuff is much better anyway.
5866
5872
5867 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5873 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5868 embedding example to standard user directory for
5874 embedding example to standard user directory for
5869 distribution. Also put it in the manual.
5875 distribution. Also put it in the manual.
5870
5876
5871 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5877 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5872 instance as first argument (so it doesn't rely on some obscure
5878 instance as first argument (so it doesn't rely on some obscure
5873 hidden global).
5879 hidden global).
5874
5880
5875 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5881 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5876 delimiters. While it prevents ().TAB from working, it allows
5882 delimiters. While it prevents ().TAB from working, it allows
5877 completions in open (... expressions. This is by far a more common
5883 completions in open (... expressions. This is by far a more common
5878 case.
5884 case.
5879
5885
5880 2002-04-23 Fernando Perez <fperez@colorado.edu>
5886 2002-04-23 Fernando Perez <fperez@colorado.edu>
5881
5887
5882 * IPython/Extensions/InterpreterPasteInput.py: new
5888 * IPython/Extensions/InterpreterPasteInput.py: new
5883 syntax-processing module for pasting lines with >>> or ... at the
5889 syntax-processing module for pasting lines with >>> or ... at the
5884 start.
5890 start.
5885
5891
5886 * IPython/Extensions/PhysicalQ_Interactive.py
5892 * IPython/Extensions/PhysicalQ_Interactive.py
5887 (PhysicalQuantityInteractive.__int__): fixed to work with either
5893 (PhysicalQuantityInteractive.__int__): fixed to work with either
5888 Numeric or math.
5894 Numeric or math.
5889
5895
5890 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5896 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5891 provided profiles. Now we have:
5897 provided profiles. Now we have:
5892 -math -> math module as * and cmath with its own namespace.
5898 -math -> math module as * and cmath with its own namespace.
5893 -numeric -> Numeric as *, plus gnuplot & grace
5899 -numeric -> Numeric as *, plus gnuplot & grace
5894 -physics -> same as before
5900 -physics -> same as before
5895
5901
5896 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5902 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5897 user-defined magics wouldn't be found by @magic if they were
5903 user-defined magics wouldn't be found by @magic if they were
5898 defined as class methods. Also cleaned up the namespace search
5904 defined as class methods. Also cleaned up the namespace search
5899 logic and the string building (to use %s instead of many repeated
5905 logic and the string building (to use %s instead of many repeated
5900 string adds).
5906 string adds).
5901
5907
5902 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5908 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5903 of user-defined magics to operate with class methods (cleaner, in
5909 of user-defined magics to operate with class methods (cleaner, in
5904 line with the gnuplot code).
5910 line with the gnuplot code).
5905
5911
5906 2002-04-22 Fernando Perez <fperez@colorado.edu>
5912 2002-04-22 Fernando Perez <fperez@colorado.edu>
5907
5913
5908 * setup.py: updated dependency list so that manual is updated when
5914 * setup.py: updated dependency list so that manual is updated when
5909 all included files change.
5915 all included files change.
5910
5916
5911 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5917 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5912 the delimiter removal option (the fix is ugly right now).
5918 the delimiter removal option (the fix is ugly right now).
5913
5919
5914 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5920 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5915 all of the math profile (quicker loading, no conflict between
5921 all of the math profile (quicker loading, no conflict between
5916 g-9.8 and g-gnuplot).
5922 g-9.8 and g-gnuplot).
5917
5923
5918 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5924 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5919 name of post-mortem files to IPython_crash_report.txt.
5925 name of post-mortem files to IPython_crash_report.txt.
5920
5926
5921 * Cleanup/update of the docs. Added all the new readline info and
5927 * Cleanup/update of the docs. Added all the new readline info and
5922 formatted all lists as 'real lists'.
5928 formatted all lists as 'real lists'.
5923
5929
5924 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5930 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5925 tab-completion options, since the full readline parse_and_bind is
5931 tab-completion options, since the full readline parse_and_bind is
5926 now accessible.
5932 now accessible.
5927
5933
5928 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5934 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5929 handling of readline options. Now users can specify any string to
5935 handling of readline options. Now users can specify any string to
5930 be passed to parse_and_bind(), as well as the delimiters to be
5936 be passed to parse_and_bind(), as well as the delimiters to be
5931 removed.
5937 removed.
5932 (InteractiveShell.__init__): Added __name__ to the global
5938 (InteractiveShell.__init__): Added __name__ to the global
5933 namespace so that things like Itpl which rely on its existence
5939 namespace so that things like Itpl which rely on its existence
5934 don't crash.
5940 don't crash.
5935 (InteractiveShell._prefilter): Defined the default with a _ so
5941 (InteractiveShell._prefilter): Defined the default with a _ so
5936 that prefilter() is easier to override, while the default one
5942 that prefilter() is easier to override, while the default one
5937 remains available.
5943 remains available.
5938
5944
5939 2002-04-18 Fernando Perez <fperez@colorado.edu>
5945 2002-04-18 Fernando Perez <fperez@colorado.edu>
5940
5946
5941 * Added information about pdb in the docs.
5947 * Added information about pdb in the docs.
5942
5948
5943 2002-04-17 Fernando Perez <fperez@colorado.edu>
5949 2002-04-17 Fernando Perez <fperez@colorado.edu>
5944
5950
5945 * IPython/ipmaker.py (make_IPython): added rc_override option to
5951 * IPython/ipmaker.py (make_IPython): added rc_override option to
5946 allow passing config options at creation time which may override
5952 allow passing config options at creation time which may override
5947 anything set in the config files or command line. This is
5953 anything set in the config files or command line. This is
5948 particularly useful for configuring embedded instances.
5954 particularly useful for configuring embedded instances.
5949
5955
5950 2002-04-15 Fernando Perez <fperez@colorado.edu>
5956 2002-04-15 Fernando Perez <fperez@colorado.edu>
5951
5957
5952 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5958 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5953 crash embedded instances because of the input cache falling out of
5959 crash embedded instances because of the input cache falling out of
5954 sync with the output counter.
5960 sync with the output counter.
5955
5961
5956 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5962 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5957 mode which calls pdb after an uncaught exception in IPython itself.
5963 mode which calls pdb after an uncaught exception in IPython itself.
5958
5964
5959 2002-04-14 Fernando Perez <fperez@colorado.edu>
5965 2002-04-14 Fernando Perez <fperez@colorado.edu>
5960
5966
5961 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5967 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5962 readline, fix it back after each call.
5968 readline, fix it back after each call.
5963
5969
5964 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5970 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5965 method to force all access via __call__(), which guarantees that
5971 method to force all access via __call__(), which guarantees that
5966 traceback references are properly deleted.
5972 traceback references are properly deleted.
5967
5973
5968 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5974 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5969 improve printing when pprint is in use.
5975 improve printing when pprint is in use.
5970
5976
5971 2002-04-13 Fernando Perez <fperez@colorado.edu>
5977 2002-04-13 Fernando Perez <fperez@colorado.edu>
5972
5978
5973 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5979 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5974 exceptions aren't caught anymore. If the user triggers one, he
5980 exceptions aren't caught anymore. If the user triggers one, he
5975 should know why he's doing it and it should go all the way up,
5981 should know why he's doing it and it should go all the way up,
5976 just like any other exception. So now @abort will fully kill the
5982 just like any other exception. So now @abort will fully kill the
5977 embedded interpreter and the embedding code (unless that happens
5983 embedded interpreter and the embedding code (unless that happens
5978 to catch SystemExit).
5984 to catch SystemExit).
5979
5985
5980 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5986 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5981 and a debugger() method to invoke the interactive pdb debugger
5987 and a debugger() method to invoke the interactive pdb debugger
5982 after printing exception information. Also added the corresponding
5988 after printing exception information. Also added the corresponding
5983 -pdb option and @pdb magic to control this feature, and updated
5989 -pdb option and @pdb magic to control this feature, and updated
5984 the docs. After a suggestion from Christopher Hart
5990 the docs. After a suggestion from Christopher Hart
5985 (hart-AT-caltech.edu).
5991 (hart-AT-caltech.edu).
5986
5992
5987 2002-04-12 Fernando Perez <fperez@colorado.edu>
5993 2002-04-12 Fernando Perez <fperez@colorado.edu>
5988
5994
5989 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5995 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5990 the exception handlers defined by the user (not the CrashHandler)
5996 the exception handlers defined by the user (not the CrashHandler)
5991 so that user exceptions don't trigger an ipython bug report.
5997 so that user exceptions don't trigger an ipython bug report.
5992
5998
5993 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5999 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5994 configurable (it should have always been so).
6000 configurable (it should have always been so).
5995
6001
5996 2002-03-26 Fernando Perez <fperez@colorado.edu>
6002 2002-03-26 Fernando Perez <fperez@colorado.edu>
5997
6003
5998 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6004 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5999 and there to fix embedding namespace issues. This should all be
6005 and there to fix embedding namespace issues. This should all be
6000 done in a more elegant way.
6006 done in a more elegant way.
6001
6007
6002 2002-03-25 Fernando Perez <fperez@colorado.edu>
6008 2002-03-25 Fernando Perez <fperez@colorado.edu>
6003
6009
6004 * IPython/genutils.py (get_home_dir): Try to make it work under
6010 * IPython/genutils.py (get_home_dir): Try to make it work under
6005 win9x also.
6011 win9x also.
6006
6012
6007 2002-03-20 Fernando Perez <fperez@colorado.edu>
6013 2002-03-20 Fernando Perez <fperez@colorado.edu>
6008
6014
6009 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6015 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6010 sys.displayhook untouched upon __init__.
6016 sys.displayhook untouched upon __init__.
6011
6017
6012 2002-03-19 Fernando Perez <fperez@colorado.edu>
6018 2002-03-19 Fernando Perez <fperez@colorado.edu>
6013
6019
6014 * Released 0.2.9 (for embedding bug, basically).
6020 * Released 0.2.9 (for embedding bug, basically).
6015
6021
6016 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6022 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6017 exceptions so that enclosing shell's state can be restored.
6023 exceptions so that enclosing shell's state can be restored.
6018
6024
6019 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6025 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6020 naming conventions in the .ipython/ dir.
6026 naming conventions in the .ipython/ dir.
6021
6027
6022 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6028 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6023 from delimiters list so filenames with - in them get expanded.
6029 from delimiters list so filenames with - in them get expanded.
6024
6030
6025 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6031 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6026 sys.displayhook not being properly restored after an embedded call.
6032 sys.displayhook not being properly restored after an embedded call.
6027
6033
6028 2002-03-18 Fernando Perez <fperez@colorado.edu>
6034 2002-03-18 Fernando Perez <fperez@colorado.edu>
6029
6035
6030 * Released 0.2.8
6036 * Released 0.2.8
6031
6037
6032 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6038 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6033 some files weren't being included in a -upgrade.
6039 some files weren't being included in a -upgrade.
6034 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6040 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6035 on' so that the first tab completes.
6041 on' so that the first tab completes.
6036 (InteractiveShell.handle_magic): fixed bug with spaces around
6042 (InteractiveShell.handle_magic): fixed bug with spaces around
6037 quotes breaking many magic commands.
6043 quotes breaking many magic commands.
6038
6044
6039 * setup.py: added note about ignoring the syntax error messages at
6045 * setup.py: added note about ignoring the syntax error messages at
6040 installation.
6046 installation.
6041
6047
6042 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6048 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6043 streamlining the gnuplot interface, now there's only one magic @gp.
6049 streamlining the gnuplot interface, now there's only one magic @gp.
6044
6050
6045 2002-03-17 Fernando Perez <fperez@colorado.edu>
6051 2002-03-17 Fernando Perez <fperez@colorado.edu>
6046
6052
6047 * IPython/UserConfig/magic_gnuplot.py: new name for the
6053 * IPython/UserConfig/magic_gnuplot.py: new name for the
6048 example-magic_pm.py file. Much enhanced system, now with a shell
6054 example-magic_pm.py file. Much enhanced system, now with a shell
6049 for communicating directly with gnuplot, one command at a time.
6055 for communicating directly with gnuplot, one command at a time.
6050
6056
6051 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6057 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6052 setting __name__=='__main__'.
6058 setting __name__=='__main__'.
6053
6059
6054 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6060 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6055 mini-shell for accessing gnuplot from inside ipython. Should
6061 mini-shell for accessing gnuplot from inside ipython. Should
6056 extend it later for grace access too. Inspired by Arnd's
6062 extend it later for grace access too. Inspired by Arnd's
6057 suggestion.
6063 suggestion.
6058
6064
6059 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6065 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6060 calling magic functions with () in their arguments. Thanks to Arnd
6066 calling magic functions with () in their arguments. Thanks to Arnd
6061 Baecker for pointing this to me.
6067 Baecker for pointing this to me.
6062
6068
6063 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6069 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6064 infinitely for integer or complex arrays (only worked with floats).
6070 infinitely for integer or complex arrays (only worked with floats).
6065
6071
6066 2002-03-16 Fernando Perez <fperez@colorado.edu>
6072 2002-03-16 Fernando Perez <fperez@colorado.edu>
6067
6073
6068 * setup.py: Merged setup and setup_windows into a single script
6074 * setup.py: Merged setup and setup_windows into a single script
6069 which properly handles things for windows users.
6075 which properly handles things for windows users.
6070
6076
6071 2002-03-15 Fernando Perez <fperez@colorado.edu>
6077 2002-03-15 Fernando Perez <fperez@colorado.edu>
6072
6078
6073 * Big change to the manual: now the magics are all automatically
6079 * Big change to the manual: now the magics are all automatically
6074 documented. This information is generated from their docstrings
6080 documented. This information is generated from their docstrings
6075 and put in a latex file included by the manual lyx file. This way
6081 and put in a latex file included by the manual lyx file. This way
6076 we get always up to date information for the magics. The manual
6082 we get always up to date information for the magics. The manual
6077 now also has proper version information, also auto-synced.
6083 now also has proper version information, also auto-synced.
6078
6084
6079 For this to work, an undocumented --magic_docstrings option was added.
6085 For this to work, an undocumented --magic_docstrings option was added.
6080
6086
6081 2002-03-13 Fernando Perez <fperez@colorado.edu>
6087 2002-03-13 Fernando Perez <fperez@colorado.edu>
6082
6088
6083 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6089 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6084 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6090 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6085
6091
6086 2002-03-12 Fernando Perez <fperez@colorado.edu>
6092 2002-03-12 Fernando Perez <fperez@colorado.edu>
6087
6093
6088 * IPython/ultraTB.py (TermColors): changed color escapes again to
6094 * IPython/ultraTB.py (TermColors): changed color escapes again to
6089 fix the (old, reintroduced) line-wrapping bug. Basically, if
6095 fix the (old, reintroduced) line-wrapping bug. Basically, if
6090 \001..\002 aren't given in the color escapes, lines get wrapped
6096 \001..\002 aren't given in the color escapes, lines get wrapped
6091 weirdly. But giving those screws up old xterms and emacs terms. So
6097 weirdly. But giving those screws up old xterms and emacs terms. So
6092 I added some logic for emacs terms to be ok, but I can't identify old
6098 I added some logic for emacs terms to be ok, but I can't identify old
6093 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6099 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6094
6100
6095 2002-03-10 Fernando Perez <fperez@colorado.edu>
6101 2002-03-10 Fernando Perez <fperez@colorado.edu>
6096
6102
6097 * IPython/usage.py (__doc__): Various documentation cleanups and
6103 * IPython/usage.py (__doc__): Various documentation cleanups and
6098 updates, both in usage docstrings and in the manual.
6104 updates, both in usage docstrings and in the manual.
6099
6105
6100 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6106 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6101 handling of caching. Set minimum acceptabe value for having a
6107 handling of caching. Set minimum acceptabe value for having a
6102 cache at 20 values.
6108 cache at 20 values.
6103
6109
6104 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6110 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6105 install_first_time function to a method, renamed it and added an
6111 install_first_time function to a method, renamed it and added an
6106 'upgrade' mode. Now people can update their config directory with
6112 'upgrade' mode. Now people can update their config directory with
6107 a simple command line switch (-upgrade, also new).
6113 a simple command line switch (-upgrade, also new).
6108
6114
6109 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6115 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6110 @file (convenient for automagic users under Python >= 2.2).
6116 @file (convenient for automagic users under Python >= 2.2).
6111 Removed @files (it seemed more like a plural than an abbrev. of
6117 Removed @files (it seemed more like a plural than an abbrev. of
6112 'file show').
6118 'file show').
6113
6119
6114 * IPython/iplib.py (install_first_time): Fixed crash if there were
6120 * IPython/iplib.py (install_first_time): Fixed crash if there were
6115 backup files ('~') in .ipython/ install directory.
6121 backup files ('~') in .ipython/ install directory.
6116
6122
6117 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6123 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6118 system. Things look fine, but these changes are fairly
6124 system. Things look fine, but these changes are fairly
6119 intrusive. Test them for a few days.
6125 intrusive. Test them for a few days.
6120
6126
6121 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6127 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6122 the prompts system. Now all in/out prompt strings are user
6128 the prompts system. Now all in/out prompt strings are user
6123 controllable. This is particularly useful for embedding, as one
6129 controllable. This is particularly useful for embedding, as one
6124 can tag embedded instances with particular prompts.
6130 can tag embedded instances with particular prompts.
6125
6131
6126 Also removed global use of sys.ps1/2, which now allows nested
6132 Also removed global use of sys.ps1/2, which now allows nested
6127 embeddings without any problems. Added command-line options for
6133 embeddings without any problems. Added command-line options for
6128 the prompt strings.
6134 the prompt strings.
6129
6135
6130 2002-03-08 Fernando Perez <fperez@colorado.edu>
6136 2002-03-08 Fernando Perez <fperez@colorado.edu>
6131
6137
6132 * IPython/UserConfig/example-embed-short.py (ipshell): added
6138 * IPython/UserConfig/example-embed-short.py (ipshell): added
6133 example file with the bare minimum code for embedding.
6139 example file with the bare minimum code for embedding.
6134
6140
6135 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6141 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6136 functionality for the embeddable shell to be activated/deactivated
6142 functionality for the embeddable shell to be activated/deactivated
6137 either globally or at each call.
6143 either globally or at each call.
6138
6144
6139 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6145 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6140 rewriting the prompt with '--->' for auto-inputs with proper
6146 rewriting the prompt with '--->' for auto-inputs with proper
6141 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6147 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6142 this is handled by the prompts class itself, as it should.
6148 this is handled by the prompts class itself, as it should.
6143
6149
6144 2002-03-05 Fernando Perez <fperez@colorado.edu>
6150 2002-03-05 Fernando Perez <fperez@colorado.edu>
6145
6151
6146 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6152 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6147 @logstart to avoid name clashes with the math log function.
6153 @logstart to avoid name clashes with the math log function.
6148
6154
6149 * Big updates to X/Emacs section of the manual.
6155 * Big updates to X/Emacs section of the manual.
6150
6156
6151 * Removed ipython_emacs. Milan explained to me how to pass
6157 * Removed ipython_emacs. Milan explained to me how to pass
6152 arguments to ipython through Emacs. Some day I'm going to end up
6158 arguments to ipython through Emacs. Some day I'm going to end up
6153 learning some lisp...
6159 learning some lisp...
6154
6160
6155 2002-03-04 Fernando Perez <fperez@colorado.edu>
6161 2002-03-04 Fernando Perez <fperez@colorado.edu>
6156
6162
6157 * IPython/ipython_emacs: Created script to be used as the
6163 * IPython/ipython_emacs: Created script to be used as the
6158 py-python-command Emacs variable so we can pass IPython
6164 py-python-command Emacs variable so we can pass IPython
6159 parameters. I can't figure out how to tell Emacs directly to pass
6165 parameters. I can't figure out how to tell Emacs directly to pass
6160 parameters to IPython, so a dummy shell script will do it.
6166 parameters to IPython, so a dummy shell script will do it.
6161
6167
6162 Other enhancements made for things to work better under Emacs'
6168 Other enhancements made for things to work better under Emacs'
6163 various types of terminals. Many thanks to Milan Zamazal
6169 various types of terminals. Many thanks to Milan Zamazal
6164 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6170 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6165
6171
6166 2002-03-01 Fernando Perez <fperez@colorado.edu>
6172 2002-03-01 Fernando Perez <fperez@colorado.edu>
6167
6173
6168 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6174 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6169 that loading of readline is now optional. This gives better
6175 that loading of readline is now optional. This gives better
6170 control to emacs users.
6176 control to emacs users.
6171
6177
6172 * IPython/ultraTB.py (__date__): Modified color escape sequences
6178 * IPython/ultraTB.py (__date__): Modified color escape sequences
6173 and now things work fine under xterm and in Emacs' term buffers
6179 and now things work fine under xterm and in Emacs' term buffers
6174 (though not shell ones). Well, in emacs you get colors, but all
6180 (though not shell ones). Well, in emacs you get colors, but all
6175 seem to be 'light' colors (no difference between dark and light
6181 seem to be 'light' colors (no difference between dark and light
6176 ones). But the garbage chars are gone, and also in xterms. It
6182 ones). But the garbage chars are gone, and also in xterms. It
6177 seems that now I'm using 'cleaner' ansi sequences.
6183 seems that now I'm using 'cleaner' ansi sequences.
6178
6184
6179 2002-02-21 Fernando Perez <fperez@colorado.edu>
6185 2002-02-21 Fernando Perez <fperez@colorado.edu>
6180
6186
6181 * Released 0.2.7 (mainly to publish the scoping fix).
6187 * Released 0.2.7 (mainly to publish the scoping fix).
6182
6188
6183 * IPython/Logger.py (Logger.logstate): added. A corresponding
6189 * IPython/Logger.py (Logger.logstate): added. A corresponding
6184 @logstate magic was created.
6190 @logstate magic was created.
6185
6191
6186 * IPython/Magic.py: fixed nested scoping problem under Python
6192 * IPython/Magic.py: fixed nested scoping problem under Python
6187 2.1.x (automagic wasn't working).
6193 2.1.x (automagic wasn't working).
6188
6194
6189 2002-02-20 Fernando Perez <fperez@colorado.edu>
6195 2002-02-20 Fernando Perez <fperez@colorado.edu>
6190
6196
6191 * Released 0.2.6.
6197 * Released 0.2.6.
6192
6198
6193 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6199 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6194 option so that logs can come out without any headers at all.
6200 option so that logs can come out without any headers at all.
6195
6201
6196 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6202 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6197 SciPy.
6203 SciPy.
6198
6204
6199 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6205 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6200 that embedded IPython calls don't require vars() to be explicitly
6206 that embedded IPython calls don't require vars() to be explicitly
6201 passed. Now they are extracted from the caller's frame (code
6207 passed. Now they are extracted from the caller's frame (code
6202 snatched from Eric Jones' weave). Added better documentation to
6208 snatched from Eric Jones' weave). Added better documentation to
6203 the section on embedding and the example file.
6209 the section on embedding and the example file.
6204
6210
6205 * IPython/genutils.py (page): Changed so that under emacs, it just
6211 * IPython/genutils.py (page): Changed so that under emacs, it just
6206 prints the string. You can then page up and down in the emacs
6212 prints the string. You can then page up and down in the emacs
6207 buffer itself. This is how the builtin help() works.
6213 buffer itself. This is how the builtin help() works.
6208
6214
6209 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6215 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6210 macro scoping: macros need to be executed in the user's namespace
6216 macro scoping: macros need to be executed in the user's namespace
6211 to work as if they had been typed by the user.
6217 to work as if they had been typed by the user.
6212
6218
6213 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6219 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6214 execute automatically (no need to type 'exec...'). They then
6220 execute automatically (no need to type 'exec...'). They then
6215 behave like 'true macros'. The printing system was also modified
6221 behave like 'true macros'. The printing system was also modified
6216 for this to work.
6222 for this to work.
6217
6223
6218 2002-02-19 Fernando Perez <fperez@colorado.edu>
6224 2002-02-19 Fernando Perez <fperez@colorado.edu>
6219
6225
6220 * IPython/genutils.py (page_file): new function for paging files
6226 * IPython/genutils.py (page_file): new function for paging files
6221 in an OS-independent way. Also necessary for file viewing to work
6227 in an OS-independent way. Also necessary for file viewing to work
6222 well inside Emacs buffers.
6228 well inside Emacs buffers.
6223 (page): Added checks for being in an emacs buffer.
6229 (page): Added checks for being in an emacs buffer.
6224 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6230 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6225 same bug in iplib.
6231 same bug in iplib.
6226
6232
6227 2002-02-18 Fernando Perez <fperez@colorado.edu>
6233 2002-02-18 Fernando Perez <fperez@colorado.edu>
6228
6234
6229 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6235 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6230 of readline so that IPython can work inside an Emacs buffer.
6236 of readline so that IPython can work inside an Emacs buffer.
6231
6237
6232 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6238 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6233 method signatures (they weren't really bugs, but it looks cleaner
6239 method signatures (they weren't really bugs, but it looks cleaner
6234 and keeps PyChecker happy).
6240 and keeps PyChecker happy).
6235
6241
6236 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6242 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6237 for implementing various user-defined hooks. Currently only
6243 for implementing various user-defined hooks. Currently only
6238 display is done.
6244 display is done.
6239
6245
6240 * IPython/Prompts.py (CachedOutput._display): changed display
6246 * IPython/Prompts.py (CachedOutput._display): changed display
6241 functions so that they can be dynamically changed by users easily.
6247 functions so that they can be dynamically changed by users easily.
6242
6248
6243 * IPython/Extensions/numeric_formats.py (num_display): added an
6249 * IPython/Extensions/numeric_formats.py (num_display): added an
6244 extension for printing NumPy arrays in flexible manners. It
6250 extension for printing NumPy arrays in flexible manners. It
6245 doesn't do anything yet, but all the structure is in
6251 doesn't do anything yet, but all the structure is in
6246 place. Ultimately the plan is to implement output format control
6252 place. Ultimately the plan is to implement output format control
6247 like in Octave.
6253 like in Octave.
6248
6254
6249 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6255 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6250 methods are found at run-time by all the automatic machinery.
6256 methods are found at run-time by all the automatic machinery.
6251
6257
6252 2002-02-17 Fernando Perez <fperez@colorado.edu>
6258 2002-02-17 Fernando Perez <fperez@colorado.edu>
6253
6259
6254 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6260 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6255 whole file a little.
6261 whole file a little.
6256
6262
6257 * ToDo: closed this document. Now there's a new_design.lyx
6263 * ToDo: closed this document. Now there's a new_design.lyx
6258 document for all new ideas. Added making a pdf of it for the
6264 document for all new ideas. Added making a pdf of it for the
6259 end-user distro.
6265 end-user distro.
6260
6266
6261 * IPython/Logger.py (Logger.switch_log): Created this to replace
6267 * IPython/Logger.py (Logger.switch_log): Created this to replace
6262 logon() and logoff(). It also fixes a nasty crash reported by
6268 logon() and logoff(). It also fixes a nasty crash reported by
6263 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6269 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6264
6270
6265 * IPython/iplib.py (complete): got auto-completion to work with
6271 * IPython/iplib.py (complete): got auto-completion to work with
6266 automagic (I had wanted this for a long time).
6272 automagic (I had wanted this for a long time).
6267
6273
6268 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6274 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6269 to @file, since file() is now a builtin and clashes with automagic
6275 to @file, since file() is now a builtin and clashes with automagic
6270 for @file.
6276 for @file.
6271
6277
6272 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6278 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6273 of this was previously in iplib, which had grown to more than 2000
6279 of this was previously in iplib, which had grown to more than 2000
6274 lines, way too long. No new functionality, but it makes managing
6280 lines, way too long. No new functionality, but it makes managing
6275 the code a bit easier.
6281 the code a bit easier.
6276
6282
6277 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6283 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6278 information to crash reports.
6284 information to crash reports.
6279
6285
6280 2002-02-12 Fernando Perez <fperez@colorado.edu>
6286 2002-02-12 Fernando Perez <fperez@colorado.edu>
6281
6287
6282 * Released 0.2.5.
6288 * Released 0.2.5.
6283
6289
6284 2002-02-11 Fernando Perez <fperez@colorado.edu>
6290 2002-02-11 Fernando Perez <fperez@colorado.edu>
6285
6291
6286 * Wrote a relatively complete Windows installer. It puts
6292 * Wrote a relatively complete Windows installer. It puts
6287 everything in place, creates Start Menu entries and fixes the
6293 everything in place, creates Start Menu entries and fixes the
6288 color issues. Nothing fancy, but it works.
6294 color issues. Nothing fancy, but it works.
6289
6295
6290 2002-02-10 Fernando Perez <fperez@colorado.edu>
6296 2002-02-10 Fernando Perez <fperez@colorado.edu>
6291
6297
6292 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6298 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6293 os.path.expanduser() call so that we can type @run ~/myfile.py and
6299 os.path.expanduser() call so that we can type @run ~/myfile.py and
6294 have thigs work as expected.
6300 have thigs work as expected.
6295
6301
6296 * IPython/genutils.py (page): fixed exception handling so things
6302 * IPython/genutils.py (page): fixed exception handling so things
6297 work both in Unix and Windows correctly. Quitting a pager triggers
6303 work both in Unix and Windows correctly. Quitting a pager triggers
6298 an IOError/broken pipe in Unix, and in windows not finding a pager
6304 an IOError/broken pipe in Unix, and in windows not finding a pager
6299 is also an IOError, so I had to actually look at the return value
6305 is also an IOError, so I had to actually look at the return value
6300 of the exception, not just the exception itself. Should be ok now.
6306 of the exception, not just the exception itself. Should be ok now.
6301
6307
6302 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6308 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6303 modified to allow case-insensitive color scheme changes.
6309 modified to allow case-insensitive color scheme changes.
6304
6310
6305 2002-02-09 Fernando Perez <fperez@colorado.edu>
6311 2002-02-09 Fernando Perez <fperez@colorado.edu>
6306
6312
6307 * IPython/genutils.py (native_line_ends): new function to leave
6313 * IPython/genutils.py (native_line_ends): new function to leave
6308 user config files with os-native line-endings.
6314 user config files with os-native line-endings.
6309
6315
6310 * README and manual updates.
6316 * README and manual updates.
6311
6317
6312 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6318 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6313 instead of StringType to catch Unicode strings.
6319 instead of StringType to catch Unicode strings.
6314
6320
6315 * IPython/genutils.py (filefind): fixed bug for paths with
6321 * IPython/genutils.py (filefind): fixed bug for paths with
6316 embedded spaces (very common in Windows).
6322 embedded spaces (very common in Windows).
6317
6323
6318 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6324 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6319 files under Windows, so that they get automatically associated
6325 files under Windows, so that they get automatically associated
6320 with a text editor. Windows makes it a pain to handle
6326 with a text editor. Windows makes it a pain to handle
6321 extension-less files.
6327 extension-less files.
6322
6328
6323 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6329 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6324 warning about readline only occur for Posix. In Windows there's no
6330 warning about readline only occur for Posix. In Windows there's no
6325 way to get readline, so why bother with the warning.
6331 way to get readline, so why bother with the warning.
6326
6332
6327 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6333 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6328 for __str__ instead of dir(self), since dir() changed in 2.2.
6334 for __str__ instead of dir(self), since dir() changed in 2.2.
6329
6335
6330 * Ported to Windows! Tested on XP, I suspect it should work fine
6336 * Ported to Windows! Tested on XP, I suspect it should work fine
6331 on NT/2000, but I don't think it will work on 98 et al. That
6337 on NT/2000, but I don't think it will work on 98 et al. That
6332 series of Windows is such a piece of junk anyway that I won't try
6338 series of Windows is such a piece of junk anyway that I won't try
6333 porting it there. The XP port was straightforward, showed a few
6339 porting it there. The XP port was straightforward, showed a few
6334 bugs here and there (fixed all), in particular some string
6340 bugs here and there (fixed all), in particular some string
6335 handling stuff which required considering Unicode strings (which
6341 handling stuff which required considering Unicode strings (which
6336 Windows uses). This is good, but hasn't been too tested :) No
6342 Windows uses). This is good, but hasn't been too tested :) No
6337 fancy installer yet, I'll put a note in the manual so people at
6343 fancy installer yet, I'll put a note in the manual so people at
6338 least make manually a shortcut.
6344 least make manually a shortcut.
6339
6345
6340 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6346 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6341 into a single one, "colors". This now controls both prompt and
6347 into a single one, "colors". This now controls both prompt and
6342 exception color schemes, and can be changed both at startup
6348 exception color schemes, and can be changed both at startup
6343 (either via command-line switches or via ipythonrc files) and at
6349 (either via command-line switches or via ipythonrc files) and at
6344 runtime, with @colors.
6350 runtime, with @colors.
6345 (Magic.magic_run): renamed @prun to @run and removed the old
6351 (Magic.magic_run): renamed @prun to @run and removed the old
6346 @run. The two were too similar to warrant keeping both.
6352 @run. The two were too similar to warrant keeping both.
6347
6353
6348 2002-02-03 Fernando Perez <fperez@colorado.edu>
6354 2002-02-03 Fernando Perez <fperez@colorado.edu>
6349
6355
6350 * IPython/iplib.py (install_first_time): Added comment on how to
6356 * IPython/iplib.py (install_first_time): Added comment on how to
6351 configure the color options for first-time users. Put a <return>
6357 configure the color options for first-time users. Put a <return>
6352 request at the end so that small-terminal users get a chance to
6358 request at the end so that small-terminal users get a chance to
6353 read the startup info.
6359 read the startup info.
6354
6360
6355 2002-01-23 Fernando Perez <fperez@colorado.edu>
6361 2002-01-23 Fernando Perez <fperez@colorado.edu>
6356
6362
6357 * IPython/iplib.py (CachedOutput.update): Changed output memory
6363 * IPython/iplib.py (CachedOutput.update): Changed output memory
6358 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6364 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6359 input history we still use _i. Did this b/c these variable are
6365 input history we still use _i. Did this b/c these variable are
6360 very commonly used in interactive work, so the less we need to
6366 very commonly used in interactive work, so the less we need to
6361 type the better off we are.
6367 type the better off we are.
6362 (Magic.magic_prun): updated @prun to better handle the namespaces
6368 (Magic.magic_prun): updated @prun to better handle the namespaces
6363 the file will run in, including a fix for __name__ not being set
6369 the file will run in, including a fix for __name__ not being set
6364 before.
6370 before.
6365
6371
6366 2002-01-20 Fernando Perez <fperez@colorado.edu>
6372 2002-01-20 Fernando Perez <fperez@colorado.edu>
6367
6373
6368 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6374 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6369 extra garbage for Python 2.2. Need to look more carefully into
6375 extra garbage for Python 2.2. Need to look more carefully into
6370 this later.
6376 this later.
6371
6377
6372 2002-01-19 Fernando Perez <fperez@colorado.edu>
6378 2002-01-19 Fernando Perez <fperez@colorado.edu>
6373
6379
6374 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6380 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6375 display SyntaxError exceptions properly formatted when they occur
6381 display SyntaxError exceptions properly formatted when they occur
6376 (they can be triggered by imported code).
6382 (they can be triggered by imported code).
6377
6383
6378 2002-01-18 Fernando Perez <fperez@colorado.edu>
6384 2002-01-18 Fernando Perez <fperez@colorado.edu>
6379
6385
6380 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6386 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6381 SyntaxError exceptions are reported nicely formatted, instead of
6387 SyntaxError exceptions are reported nicely formatted, instead of
6382 spitting out only offset information as before.
6388 spitting out only offset information as before.
6383 (Magic.magic_prun): Added the @prun function for executing
6389 (Magic.magic_prun): Added the @prun function for executing
6384 programs with command line args inside IPython.
6390 programs with command line args inside IPython.
6385
6391
6386 2002-01-16 Fernando Perez <fperez@colorado.edu>
6392 2002-01-16 Fernando Perez <fperez@colorado.edu>
6387
6393
6388 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6394 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6389 to *not* include the last item given in a range. This brings their
6395 to *not* include the last item given in a range. This brings their
6390 behavior in line with Python's slicing:
6396 behavior in line with Python's slicing:
6391 a[n1:n2] -> a[n1]...a[n2-1]
6397 a[n1:n2] -> a[n1]...a[n2-1]
6392 It may be a bit less convenient, but I prefer to stick to Python's
6398 It may be a bit less convenient, but I prefer to stick to Python's
6393 conventions *everywhere*, so users never have to wonder.
6399 conventions *everywhere*, so users never have to wonder.
6394 (Magic.magic_macro): Added @macro function to ease the creation of
6400 (Magic.magic_macro): Added @macro function to ease the creation of
6395 macros.
6401 macros.
6396
6402
6397 2002-01-05 Fernando Perez <fperez@colorado.edu>
6403 2002-01-05 Fernando Perez <fperez@colorado.edu>
6398
6404
6399 * Released 0.2.4.
6405 * Released 0.2.4.
6400
6406
6401 * IPython/iplib.py (Magic.magic_pdef):
6407 * IPython/iplib.py (Magic.magic_pdef):
6402 (InteractiveShell.safe_execfile): report magic lines and error
6408 (InteractiveShell.safe_execfile): report magic lines and error
6403 lines without line numbers so one can easily copy/paste them for
6409 lines without line numbers so one can easily copy/paste them for
6404 re-execution.
6410 re-execution.
6405
6411
6406 * Updated manual with recent changes.
6412 * Updated manual with recent changes.
6407
6413
6408 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6414 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6409 docstring printing when class? is called. Very handy for knowing
6415 docstring printing when class? is called. Very handy for knowing
6410 how to create class instances (as long as __init__ is well
6416 how to create class instances (as long as __init__ is well
6411 documented, of course :)
6417 documented, of course :)
6412 (Magic.magic_doc): print both class and constructor docstrings.
6418 (Magic.magic_doc): print both class and constructor docstrings.
6413 (Magic.magic_pdef): give constructor info if passed a class and
6419 (Magic.magic_pdef): give constructor info if passed a class and
6414 __call__ info for callable object instances.
6420 __call__ info for callable object instances.
6415
6421
6416 2002-01-04 Fernando Perez <fperez@colorado.edu>
6422 2002-01-04 Fernando Perez <fperez@colorado.edu>
6417
6423
6418 * Made deep_reload() off by default. It doesn't always work
6424 * Made deep_reload() off by default. It doesn't always work
6419 exactly as intended, so it's probably safer to have it off. It's
6425 exactly as intended, so it's probably safer to have it off. It's
6420 still available as dreload() anyway, so nothing is lost.
6426 still available as dreload() anyway, so nothing is lost.
6421
6427
6422 2002-01-02 Fernando Perez <fperez@colorado.edu>
6428 2002-01-02 Fernando Perez <fperez@colorado.edu>
6423
6429
6424 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6430 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6425 so I wanted an updated release).
6431 so I wanted an updated release).
6426
6432
6427 2001-12-27 Fernando Perez <fperez@colorado.edu>
6433 2001-12-27 Fernando Perez <fperez@colorado.edu>
6428
6434
6429 * IPython/iplib.py (InteractiveShell.interact): Added the original
6435 * IPython/iplib.py (InteractiveShell.interact): Added the original
6430 code from 'code.py' for this module in order to change the
6436 code from 'code.py' for this module in order to change the
6431 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6437 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6432 the history cache would break when the user hit Ctrl-C, and
6438 the history cache would break when the user hit Ctrl-C, and
6433 interact() offers no way to add any hooks to it.
6439 interact() offers no way to add any hooks to it.
6434
6440
6435 2001-12-23 Fernando Perez <fperez@colorado.edu>
6441 2001-12-23 Fernando Perez <fperez@colorado.edu>
6436
6442
6437 * setup.py: added check for 'MANIFEST' before trying to remove
6443 * setup.py: added check for 'MANIFEST' before trying to remove
6438 it. Thanks to Sean Reifschneider.
6444 it. Thanks to Sean Reifschneider.
6439
6445
6440 2001-12-22 Fernando Perez <fperez@colorado.edu>
6446 2001-12-22 Fernando Perez <fperez@colorado.edu>
6441
6447
6442 * Released 0.2.2.
6448 * Released 0.2.2.
6443
6449
6444 * Finished (reasonably) writing the manual. Later will add the
6450 * Finished (reasonably) writing the manual. Later will add the
6445 python-standard navigation stylesheets, but for the time being
6451 python-standard navigation stylesheets, but for the time being
6446 it's fairly complete. Distribution will include html and pdf
6452 it's fairly complete. Distribution will include html and pdf
6447 versions.
6453 versions.
6448
6454
6449 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6455 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6450 (MayaVi author).
6456 (MayaVi author).
6451
6457
6452 2001-12-21 Fernando Perez <fperez@colorado.edu>
6458 2001-12-21 Fernando Perez <fperez@colorado.edu>
6453
6459
6454 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6460 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6455 good public release, I think (with the manual and the distutils
6461 good public release, I think (with the manual and the distutils
6456 installer). The manual can use some work, but that can go
6462 installer). The manual can use some work, but that can go
6457 slowly. Otherwise I think it's quite nice for end users. Next
6463 slowly. Otherwise I think it's quite nice for end users. Next
6458 summer, rewrite the guts of it...
6464 summer, rewrite the guts of it...
6459
6465
6460 * Changed format of ipythonrc files to use whitespace as the
6466 * Changed format of ipythonrc files to use whitespace as the
6461 separator instead of an explicit '='. Cleaner.
6467 separator instead of an explicit '='. Cleaner.
6462
6468
6463 2001-12-20 Fernando Perez <fperez@colorado.edu>
6469 2001-12-20 Fernando Perez <fperez@colorado.edu>
6464
6470
6465 * Started a manual in LyX. For now it's just a quick merge of the
6471 * Started a manual in LyX. For now it's just a quick merge of the
6466 various internal docstrings and READMEs. Later it may grow into a
6472 various internal docstrings and READMEs. Later it may grow into a
6467 nice, full-blown manual.
6473 nice, full-blown manual.
6468
6474
6469 * Set up a distutils based installer. Installation should now be
6475 * Set up a distutils based installer. Installation should now be
6470 trivially simple for end-users.
6476 trivially simple for end-users.
6471
6477
6472 2001-12-11 Fernando Perez <fperez@colorado.edu>
6478 2001-12-11 Fernando Perez <fperez@colorado.edu>
6473
6479
6474 * Released 0.2.0. First public release, announced it at
6480 * Released 0.2.0. First public release, announced it at
6475 comp.lang.python. From now on, just bugfixes...
6481 comp.lang.python. From now on, just bugfixes...
6476
6482
6477 * Went through all the files, set copyright/license notices and
6483 * Went through all the files, set copyright/license notices and
6478 cleaned up things. Ready for release.
6484 cleaned up things. Ready for release.
6479
6485
6480 2001-12-10 Fernando Perez <fperez@colorado.edu>
6486 2001-12-10 Fernando Perez <fperez@colorado.edu>
6481
6487
6482 * Changed the first-time installer not to use tarfiles. It's more
6488 * Changed the first-time installer not to use tarfiles. It's more
6483 robust now and less unix-dependent. Also makes it easier for
6489 robust now and less unix-dependent. Also makes it easier for
6484 people to later upgrade versions.
6490 people to later upgrade versions.
6485
6491
6486 * Changed @exit to @abort to reflect the fact that it's pretty
6492 * Changed @exit to @abort to reflect the fact that it's pretty
6487 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6493 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6488 becomes significant only when IPyhton is embedded: in that case,
6494 becomes significant only when IPyhton is embedded: in that case,
6489 C-D closes IPython only, but @abort kills the enclosing program
6495 C-D closes IPython only, but @abort kills the enclosing program
6490 too (unless it had called IPython inside a try catching
6496 too (unless it had called IPython inside a try catching
6491 SystemExit).
6497 SystemExit).
6492
6498
6493 * Created Shell module which exposes the actuall IPython Shell
6499 * Created Shell module which exposes the actuall IPython Shell
6494 classes, currently the normal and the embeddable one. This at
6500 classes, currently the normal and the embeddable one. This at
6495 least offers a stable interface we won't need to change when
6501 least offers a stable interface we won't need to change when
6496 (later) the internals are rewritten. That rewrite will be confined
6502 (later) the internals are rewritten. That rewrite will be confined
6497 to iplib and ipmaker, but the Shell interface should remain as is.
6503 to iplib and ipmaker, but the Shell interface should remain as is.
6498
6504
6499 * Added embed module which offers an embeddable IPShell object,
6505 * Added embed module which offers an embeddable IPShell object,
6500 useful to fire up IPython *inside* a running program. Great for
6506 useful to fire up IPython *inside* a running program. Great for
6501 debugging or dynamical data analysis.
6507 debugging or dynamical data analysis.
6502
6508
6503 2001-12-08 Fernando Perez <fperez@colorado.edu>
6509 2001-12-08 Fernando Perez <fperez@colorado.edu>
6504
6510
6505 * Fixed small bug preventing seeing info from methods of defined
6511 * Fixed small bug preventing seeing info from methods of defined
6506 objects (incorrect namespace in _ofind()).
6512 objects (incorrect namespace in _ofind()).
6507
6513
6508 * Documentation cleanup. Moved the main usage docstrings to a
6514 * Documentation cleanup. Moved the main usage docstrings to a
6509 separate file, usage.py (cleaner to maintain, and hopefully in the
6515 separate file, usage.py (cleaner to maintain, and hopefully in the
6510 future some perlpod-like way of producing interactive, man and
6516 future some perlpod-like way of producing interactive, man and
6511 html docs out of it will be found).
6517 html docs out of it will be found).
6512
6518
6513 * Added @profile to see your profile at any time.
6519 * Added @profile to see your profile at any time.
6514
6520
6515 * Added @p as an alias for 'print'. It's especially convenient if
6521 * Added @p as an alias for 'print'. It's especially convenient if
6516 using automagic ('p x' prints x).
6522 using automagic ('p x' prints x).
6517
6523
6518 * Small cleanups and fixes after a pychecker run.
6524 * Small cleanups and fixes after a pychecker run.
6519
6525
6520 * Changed the @cd command to handle @cd - and @cd -<n> for
6526 * Changed the @cd command to handle @cd - and @cd -<n> for
6521 visiting any directory in _dh.
6527 visiting any directory in _dh.
6522
6528
6523 * Introduced _dh, a history of visited directories. @dhist prints
6529 * Introduced _dh, a history of visited directories. @dhist prints
6524 it out with numbers.
6530 it out with numbers.
6525
6531
6526 2001-12-07 Fernando Perez <fperez@colorado.edu>
6532 2001-12-07 Fernando Perez <fperez@colorado.edu>
6527
6533
6528 * Released 0.1.22
6534 * Released 0.1.22
6529
6535
6530 * Made initialization a bit more robust against invalid color
6536 * Made initialization a bit more robust against invalid color
6531 options in user input (exit, not traceback-crash).
6537 options in user input (exit, not traceback-crash).
6532
6538
6533 * Changed the bug crash reporter to write the report only in the
6539 * Changed the bug crash reporter to write the report only in the
6534 user's .ipython directory. That way IPython won't litter people's
6540 user's .ipython directory. That way IPython won't litter people's
6535 hard disks with crash files all over the place. Also print on
6541 hard disks with crash files all over the place. Also print on
6536 screen the necessary mail command.
6542 screen the necessary mail command.
6537
6543
6538 * With the new ultraTB, implemented LightBG color scheme for light
6544 * With the new ultraTB, implemented LightBG color scheme for light
6539 background terminals. A lot of people like white backgrounds, so I
6545 background terminals. A lot of people like white backgrounds, so I
6540 guess we should at least give them something readable.
6546 guess we should at least give them something readable.
6541
6547
6542 2001-12-06 Fernando Perez <fperez@colorado.edu>
6548 2001-12-06 Fernando Perez <fperez@colorado.edu>
6543
6549
6544 * Modified the structure of ultraTB. Now there's a proper class
6550 * Modified the structure of ultraTB. Now there's a proper class
6545 for tables of color schemes which allow adding schemes easily and
6551 for tables of color schemes which allow adding schemes easily and
6546 switching the active scheme without creating a new instance every
6552 switching the active scheme without creating a new instance every
6547 time (which was ridiculous). The syntax for creating new schemes
6553 time (which was ridiculous). The syntax for creating new schemes
6548 is also cleaner. I think ultraTB is finally done, with a clean
6554 is also cleaner. I think ultraTB is finally done, with a clean
6549 class structure. Names are also much cleaner (now there's proper
6555 class structure. Names are also much cleaner (now there's proper
6550 color tables, no need for every variable to also have 'color' in
6556 color tables, no need for every variable to also have 'color' in
6551 its name).
6557 its name).
6552
6558
6553 * Broke down genutils into separate files. Now genutils only
6559 * Broke down genutils into separate files. Now genutils only
6554 contains utility functions, and classes have been moved to their
6560 contains utility functions, and classes have been moved to their
6555 own files (they had enough independent functionality to warrant
6561 own files (they had enough independent functionality to warrant
6556 it): ConfigLoader, OutputTrap, Struct.
6562 it): ConfigLoader, OutputTrap, Struct.
6557
6563
6558 2001-12-05 Fernando Perez <fperez@colorado.edu>
6564 2001-12-05 Fernando Perez <fperez@colorado.edu>
6559
6565
6560 * IPython turns 21! Released version 0.1.21, as a candidate for
6566 * IPython turns 21! Released version 0.1.21, as a candidate for
6561 public consumption. If all goes well, release in a few days.
6567 public consumption. If all goes well, release in a few days.
6562
6568
6563 * Fixed path bug (files in Extensions/ directory wouldn't be found
6569 * Fixed path bug (files in Extensions/ directory wouldn't be found
6564 unless IPython/ was explicitly in sys.path).
6570 unless IPython/ was explicitly in sys.path).
6565
6571
6566 * Extended the FlexCompleter class as MagicCompleter to allow
6572 * Extended the FlexCompleter class as MagicCompleter to allow
6567 completion of @-starting lines.
6573 completion of @-starting lines.
6568
6574
6569 * Created __release__.py file as a central repository for release
6575 * Created __release__.py file as a central repository for release
6570 info that other files can read from.
6576 info that other files can read from.
6571
6577
6572 * Fixed small bug in logging: when logging was turned on in
6578 * Fixed small bug in logging: when logging was turned on in
6573 mid-session, old lines with special meanings (!@?) were being
6579 mid-session, old lines with special meanings (!@?) were being
6574 logged without the prepended comment, which is necessary since
6580 logged without the prepended comment, which is necessary since
6575 they are not truly valid python syntax. This should make session
6581 they are not truly valid python syntax. This should make session
6576 restores produce less errors.
6582 restores produce less errors.
6577
6583
6578 * The namespace cleanup forced me to make a FlexCompleter class
6584 * The namespace cleanup forced me to make a FlexCompleter class
6579 which is nothing but a ripoff of rlcompleter, but with selectable
6585 which is nothing but a ripoff of rlcompleter, but with selectable
6580 namespace (rlcompleter only works in __main__.__dict__). I'll try
6586 namespace (rlcompleter only works in __main__.__dict__). I'll try
6581 to submit a note to the authors to see if this change can be
6587 to submit a note to the authors to see if this change can be
6582 incorporated in future rlcompleter releases (Dec.6: done)
6588 incorporated in future rlcompleter releases (Dec.6: done)
6583
6589
6584 * More fixes to namespace handling. It was a mess! Now all
6590 * More fixes to namespace handling. It was a mess! Now all
6585 explicit references to __main__.__dict__ are gone (except when
6591 explicit references to __main__.__dict__ are gone (except when
6586 really needed) and everything is handled through the namespace
6592 really needed) and everything is handled through the namespace
6587 dicts in the IPython instance. We seem to be getting somewhere
6593 dicts in the IPython instance. We seem to be getting somewhere
6588 with this, finally...
6594 with this, finally...
6589
6595
6590 * Small documentation updates.
6596 * Small documentation updates.
6591
6597
6592 * Created the Extensions directory under IPython (with an
6598 * Created the Extensions directory under IPython (with an
6593 __init__.py). Put the PhysicalQ stuff there. This directory should
6599 __init__.py). Put the PhysicalQ stuff there. This directory should
6594 be used for all special-purpose extensions.
6600 be used for all special-purpose extensions.
6595
6601
6596 * File renaming:
6602 * File renaming:
6597 ipythonlib --> ipmaker
6603 ipythonlib --> ipmaker
6598 ipplib --> iplib
6604 ipplib --> iplib
6599 This makes a bit more sense in terms of what these files actually do.
6605 This makes a bit more sense in terms of what these files actually do.
6600
6606
6601 * Moved all the classes and functions in ipythonlib to ipplib, so
6607 * Moved all the classes and functions in ipythonlib to ipplib, so
6602 now ipythonlib only has make_IPython(). This will ease up its
6608 now ipythonlib only has make_IPython(). This will ease up its
6603 splitting in smaller functional chunks later.
6609 splitting in smaller functional chunks later.
6604
6610
6605 * Cleaned up (done, I think) output of @whos. Better column
6611 * Cleaned up (done, I think) output of @whos. Better column
6606 formatting, and now shows str(var) for as much as it can, which is
6612 formatting, and now shows str(var) for as much as it can, which is
6607 typically what one gets with a 'print var'.
6613 typically what one gets with a 'print var'.
6608
6614
6609 2001-12-04 Fernando Perez <fperez@colorado.edu>
6615 2001-12-04 Fernando Perez <fperez@colorado.edu>
6610
6616
6611 * Fixed namespace problems. Now builtin/IPyhton/user names get
6617 * Fixed namespace problems. Now builtin/IPyhton/user names get
6612 properly reported in their namespace. Internal namespace handling
6618 properly reported in their namespace. Internal namespace handling
6613 is finally getting decent (not perfect yet, but much better than
6619 is finally getting decent (not perfect yet, but much better than
6614 the ad-hoc mess we had).
6620 the ad-hoc mess we had).
6615
6621
6616 * Removed -exit option. If people just want to run a python
6622 * Removed -exit option. If people just want to run a python
6617 script, that's what the normal interpreter is for. Less
6623 script, that's what the normal interpreter is for. Less
6618 unnecessary options, less chances for bugs.
6624 unnecessary options, less chances for bugs.
6619
6625
6620 * Added a crash handler which generates a complete post-mortem if
6626 * Added a crash handler which generates a complete post-mortem if
6621 IPython crashes. This will help a lot in tracking bugs down the
6627 IPython crashes. This will help a lot in tracking bugs down the
6622 road.
6628 road.
6623
6629
6624 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6630 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6625 which were boud to functions being reassigned would bypass the
6631 which were boud to functions being reassigned would bypass the
6626 logger, breaking the sync of _il with the prompt counter. This
6632 logger, breaking the sync of _il with the prompt counter. This
6627 would then crash IPython later when a new line was logged.
6633 would then crash IPython later when a new line was logged.
6628
6634
6629 2001-12-02 Fernando Perez <fperez@colorado.edu>
6635 2001-12-02 Fernando Perez <fperez@colorado.edu>
6630
6636
6631 * Made IPython a package. This means people don't have to clutter
6637 * Made IPython a package. This means people don't have to clutter
6632 their sys.path with yet another directory. Changed the INSTALL
6638 their sys.path with yet another directory. Changed the INSTALL
6633 file accordingly.
6639 file accordingly.
6634
6640
6635 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6641 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6636 sorts its output (so @who shows it sorted) and @whos formats the
6642 sorts its output (so @who shows it sorted) and @whos formats the
6637 table according to the width of the first column. Nicer, easier to
6643 table according to the width of the first column. Nicer, easier to
6638 read. Todo: write a generic table_format() which takes a list of
6644 read. Todo: write a generic table_format() which takes a list of
6639 lists and prints it nicely formatted, with optional row/column
6645 lists and prints it nicely formatted, with optional row/column
6640 separators and proper padding and justification.
6646 separators and proper padding and justification.
6641
6647
6642 * Released 0.1.20
6648 * Released 0.1.20
6643
6649
6644 * Fixed bug in @log which would reverse the inputcache list (a
6650 * Fixed bug in @log which would reverse the inputcache list (a
6645 copy operation was missing).
6651 copy operation was missing).
6646
6652
6647 * Code cleanup. @config was changed to use page(). Better, since
6653 * Code cleanup. @config was changed to use page(). Better, since
6648 its output is always quite long.
6654 its output is always quite long.
6649
6655
6650 * Itpl is back as a dependency. I was having too many problems
6656 * Itpl is back as a dependency. I was having too many problems
6651 getting the parametric aliases to work reliably, and it's just
6657 getting the parametric aliases to work reliably, and it's just
6652 easier to code weird string operations with it than playing %()s
6658 easier to code weird string operations with it than playing %()s
6653 games. It's only ~6k, so I don't think it's too big a deal.
6659 games. It's only ~6k, so I don't think it's too big a deal.
6654
6660
6655 * Found (and fixed) a very nasty bug with history. !lines weren't
6661 * Found (and fixed) a very nasty bug with history. !lines weren't
6656 getting cached, and the out of sync caches would crash
6662 getting cached, and the out of sync caches would crash
6657 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6663 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6658 division of labor a bit better. Bug fixed, cleaner structure.
6664 division of labor a bit better. Bug fixed, cleaner structure.
6659
6665
6660 2001-12-01 Fernando Perez <fperez@colorado.edu>
6666 2001-12-01 Fernando Perez <fperez@colorado.edu>
6661
6667
6662 * Released 0.1.19
6668 * Released 0.1.19
6663
6669
6664 * Added option -n to @hist to prevent line number printing. Much
6670 * Added option -n to @hist to prevent line number printing. Much
6665 easier to copy/paste code this way.
6671 easier to copy/paste code this way.
6666
6672
6667 * Created global _il to hold the input list. Allows easy
6673 * Created global _il to hold the input list. Allows easy
6668 re-execution of blocks of code by slicing it (inspired by Janko's
6674 re-execution of blocks of code by slicing it (inspired by Janko's
6669 comment on 'macros').
6675 comment on 'macros').
6670
6676
6671 * Small fixes and doc updates.
6677 * Small fixes and doc updates.
6672
6678
6673 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6679 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6674 much too fragile with automagic. Handles properly multi-line
6680 much too fragile with automagic. Handles properly multi-line
6675 statements and takes parameters.
6681 statements and takes parameters.
6676
6682
6677 2001-11-30 Fernando Perez <fperez@colorado.edu>
6683 2001-11-30 Fernando Perez <fperez@colorado.edu>
6678
6684
6679 * Version 0.1.18 released.
6685 * Version 0.1.18 released.
6680
6686
6681 * Fixed nasty namespace bug in initial module imports.
6687 * Fixed nasty namespace bug in initial module imports.
6682
6688
6683 * Added copyright/license notes to all code files (except
6689 * Added copyright/license notes to all code files (except
6684 DPyGetOpt). For the time being, LGPL. That could change.
6690 DPyGetOpt). For the time being, LGPL. That could change.
6685
6691
6686 * Rewrote a much nicer README, updated INSTALL, cleaned up
6692 * Rewrote a much nicer README, updated INSTALL, cleaned up
6687 ipythonrc-* samples.
6693 ipythonrc-* samples.
6688
6694
6689 * Overall code/documentation cleanup. Basically ready for
6695 * Overall code/documentation cleanup. Basically ready for
6690 release. Only remaining thing: licence decision (LGPL?).
6696 release. Only remaining thing: licence decision (LGPL?).
6691
6697
6692 * Converted load_config to a class, ConfigLoader. Now recursion
6698 * Converted load_config to a class, ConfigLoader. Now recursion
6693 control is better organized. Doesn't include the same file twice.
6699 control is better organized. Doesn't include the same file twice.
6694
6700
6695 2001-11-29 Fernando Perez <fperez@colorado.edu>
6701 2001-11-29 Fernando Perez <fperez@colorado.edu>
6696
6702
6697 * Got input history working. Changed output history variables from
6703 * Got input history working. Changed output history variables from
6698 _p to _o so that _i is for input and _o for output. Just cleaner
6704 _p to _o so that _i is for input and _o for output. Just cleaner
6699 convention.
6705 convention.
6700
6706
6701 * Implemented parametric aliases. This pretty much allows the
6707 * Implemented parametric aliases. This pretty much allows the
6702 alias system to offer full-blown shell convenience, I think.
6708 alias system to offer full-blown shell convenience, I think.
6703
6709
6704 * Version 0.1.17 released, 0.1.18 opened.
6710 * Version 0.1.17 released, 0.1.18 opened.
6705
6711
6706 * dot_ipython/ipythonrc (alias): added documentation.
6712 * dot_ipython/ipythonrc (alias): added documentation.
6707 (xcolor): Fixed small bug (xcolors -> xcolor)
6713 (xcolor): Fixed small bug (xcolors -> xcolor)
6708
6714
6709 * Changed the alias system. Now alias is a magic command to define
6715 * Changed the alias system. Now alias is a magic command to define
6710 aliases just like the shell. Rationale: the builtin magics should
6716 aliases just like the shell. Rationale: the builtin magics should
6711 be there for things deeply connected to IPython's
6717 be there for things deeply connected to IPython's
6712 architecture. And this is a much lighter system for what I think
6718 architecture. And this is a much lighter system for what I think
6713 is the really important feature: allowing users to define quickly
6719 is the really important feature: allowing users to define quickly
6714 magics that will do shell things for them, so they can customize
6720 magics that will do shell things for them, so they can customize
6715 IPython easily to match their work habits. If someone is really
6721 IPython easily to match their work habits. If someone is really
6716 desperate to have another name for a builtin alias, they can
6722 desperate to have another name for a builtin alias, they can
6717 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6723 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6718 works.
6724 works.
6719
6725
6720 2001-11-28 Fernando Perez <fperez@colorado.edu>
6726 2001-11-28 Fernando Perez <fperez@colorado.edu>
6721
6727
6722 * Changed @file so that it opens the source file at the proper
6728 * Changed @file so that it opens the source file at the proper
6723 line. Since it uses less, if your EDITOR environment is
6729 line. Since it uses less, if your EDITOR environment is
6724 configured, typing v will immediately open your editor of choice
6730 configured, typing v will immediately open your editor of choice
6725 right at the line where the object is defined. Not as quick as
6731 right at the line where the object is defined. Not as quick as
6726 having a direct @edit command, but for all intents and purposes it
6732 having a direct @edit command, but for all intents and purposes it
6727 works. And I don't have to worry about writing @edit to deal with
6733 works. And I don't have to worry about writing @edit to deal with
6728 all the editors, less does that.
6734 all the editors, less does that.
6729
6735
6730 * Version 0.1.16 released, 0.1.17 opened.
6736 * Version 0.1.16 released, 0.1.17 opened.
6731
6737
6732 * Fixed some nasty bugs in the page/page_dumb combo that could
6738 * Fixed some nasty bugs in the page/page_dumb combo that could
6733 crash IPython.
6739 crash IPython.
6734
6740
6735 2001-11-27 Fernando Perez <fperez@colorado.edu>
6741 2001-11-27 Fernando Perez <fperez@colorado.edu>
6736
6742
6737 * Version 0.1.15 released, 0.1.16 opened.
6743 * Version 0.1.15 released, 0.1.16 opened.
6738
6744
6739 * Finally got ? and ?? to work for undefined things: now it's
6745 * Finally got ? and ?? to work for undefined things: now it's
6740 possible to type {}.get? and get information about the get method
6746 possible to type {}.get? and get information about the get method
6741 of dicts, or os.path? even if only os is defined (so technically
6747 of dicts, or os.path? even if only os is defined (so technically
6742 os.path isn't). Works at any level. For example, after import os,
6748 os.path isn't). Works at any level. For example, after import os,
6743 os?, os.path?, os.path.abspath? all work. This is great, took some
6749 os?, os.path?, os.path.abspath? all work. This is great, took some
6744 work in _ofind.
6750 work in _ofind.
6745
6751
6746 * Fixed more bugs with logging. The sanest way to do it was to add
6752 * Fixed more bugs with logging. The sanest way to do it was to add
6747 to @log a 'mode' parameter. Killed two in one shot (this mode
6753 to @log a 'mode' parameter. Killed two in one shot (this mode
6748 option was a request of Janko's). I think it's finally clean
6754 option was a request of Janko's). I think it's finally clean
6749 (famous last words).
6755 (famous last words).
6750
6756
6751 * Added a page_dumb() pager which does a decent job of paging on
6757 * Added a page_dumb() pager which does a decent job of paging on
6752 screen, if better things (like less) aren't available. One less
6758 screen, if better things (like less) aren't available. One less
6753 unix dependency (someday maybe somebody will port this to
6759 unix dependency (someday maybe somebody will port this to
6754 windows).
6760 windows).
6755
6761
6756 * Fixed problem in magic_log: would lock of logging out if log
6762 * Fixed problem in magic_log: would lock of logging out if log
6757 creation failed (because it would still think it had succeeded).
6763 creation failed (because it would still think it had succeeded).
6758
6764
6759 * Improved the page() function using curses to auto-detect screen
6765 * Improved the page() function using curses to auto-detect screen
6760 size. Now it can make a much better decision on whether to print
6766 size. Now it can make a much better decision on whether to print
6761 or page a string. Option screen_length was modified: a value 0
6767 or page a string. Option screen_length was modified: a value 0
6762 means auto-detect, and that's the default now.
6768 means auto-detect, and that's the default now.
6763
6769
6764 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6770 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6765 go out. I'll test it for a few days, then talk to Janko about
6771 go out. I'll test it for a few days, then talk to Janko about
6766 licences and announce it.
6772 licences and announce it.
6767
6773
6768 * Fixed the length of the auto-generated ---> prompt which appears
6774 * Fixed the length of the auto-generated ---> prompt which appears
6769 for auto-parens and auto-quotes. Getting this right isn't trivial,
6775 for auto-parens and auto-quotes. Getting this right isn't trivial,
6770 with all the color escapes, different prompt types and optional
6776 with all the color escapes, different prompt types and optional
6771 separators. But it seems to be working in all the combinations.
6777 separators. But it seems to be working in all the combinations.
6772
6778
6773 2001-11-26 Fernando Perez <fperez@colorado.edu>
6779 2001-11-26 Fernando Perez <fperez@colorado.edu>
6774
6780
6775 * Wrote a regexp filter to get option types from the option names
6781 * Wrote a regexp filter to get option types from the option names
6776 string. This eliminates the need to manually keep two duplicate
6782 string. This eliminates the need to manually keep two duplicate
6777 lists.
6783 lists.
6778
6784
6779 * Removed the unneeded check_option_names. Now options are handled
6785 * Removed the unneeded check_option_names. Now options are handled
6780 in a much saner manner and it's easy to visually check that things
6786 in a much saner manner and it's easy to visually check that things
6781 are ok.
6787 are ok.
6782
6788
6783 * Updated version numbers on all files I modified to carry a
6789 * Updated version numbers on all files I modified to carry a
6784 notice so Janko and Nathan have clear version markers.
6790 notice so Janko and Nathan have clear version markers.
6785
6791
6786 * Updated docstring for ultraTB with my changes. I should send
6792 * Updated docstring for ultraTB with my changes. I should send
6787 this to Nathan.
6793 this to Nathan.
6788
6794
6789 * Lots of small fixes. Ran everything through pychecker again.
6795 * Lots of small fixes. Ran everything through pychecker again.
6790
6796
6791 * Made loading of deep_reload an cmd line option. If it's not too
6797 * Made loading of deep_reload an cmd line option. If it's not too
6792 kosher, now people can just disable it. With -nodeep_reload it's
6798 kosher, now people can just disable it. With -nodeep_reload it's
6793 still available as dreload(), it just won't overwrite reload().
6799 still available as dreload(), it just won't overwrite reload().
6794
6800
6795 * Moved many options to the no| form (-opt and -noopt
6801 * Moved many options to the no| form (-opt and -noopt
6796 accepted). Cleaner.
6802 accepted). Cleaner.
6797
6803
6798 * Changed magic_log so that if called with no parameters, it uses
6804 * Changed magic_log so that if called with no parameters, it uses
6799 'rotate' mode. That way auto-generated logs aren't automatically
6805 'rotate' mode. That way auto-generated logs aren't automatically
6800 over-written. For normal logs, now a backup is made if it exists
6806 over-written. For normal logs, now a backup is made if it exists
6801 (only 1 level of backups). A new 'backup' mode was added to the
6807 (only 1 level of backups). A new 'backup' mode was added to the
6802 Logger class to support this. This was a request by Janko.
6808 Logger class to support this. This was a request by Janko.
6803
6809
6804 * Added @logoff/@logon to stop/restart an active log.
6810 * Added @logoff/@logon to stop/restart an active log.
6805
6811
6806 * Fixed a lot of bugs in log saving/replay. It was pretty
6812 * Fixed a lot of bugs in log saving/replay. It was pretty
6807 broken. Now special lines (!@,/) appear properly in the command
6813 broken. Now special lines (!@,/) appear properly in the command
6808 history after a log replay.
6814 history after a log replay.
6809
6815
6810 * Tried and failed to implement full session saving via pickle. My
6816 * Tried and failed to implement full session saving via pickle. My
6811 idea was to pickle __main__.__dict__, but modules can't be
6817 idea was to pickle __main__.__dict__, but modules can't be
6812 pickled. This would be a better alternative to replaying logs, but
6818 pickled. This would be a better alternative to replaying logs, but
6813 seems quite tricky to get to work. Changed -session to be called
6819 seems quite tricky to get to work. Changed -session to be called
6814 -logplay, which more accurately reflects what it does. And if we
6820 -logplay, which more accurately reflects what it does. And if we
6815 ever get real session saving working, -session is now available.
6821 ever get real session saving working, -session is now available.
6816
6822
6817 * Implemented color schemes for prompts also. As for tracebacks,
6823 * Implemented color schemes for prompts also. As for tracebacks,
6818 currently only NoColor and Linux are supported. But now the
6824 currently only NoColor and Linux are supported. But now the
6819 infrastructure is in place, based on a generic ColorScheme
6825 infrastructure is in place, based on a generic ColorScheme
6820 class. So writing and activating new schemes both for the prompts
6826 class. So writing and activating new schemes both for the prompts
6821 and the tracebacks should be straightforward.
6827 and the tracebacks should be straightforward.
6822
6828
6823 * Version 0.1.13 released, 0.1.14 opened.
6829 * Version 0.1.13 released, 0.1.14 opened.
6824
6830
6825 * Changed handling of options for output cache. Now counter is
6831 * Changed handling of options for output cache. Now counter is
6826 hardwired starting at 1 and one specifies the maximum number of
6832 hardwired starting at 1 and one specifies the maximum number of
6827 entries *in the outcache* (not the max prompt counter). This is
6833 entries *in the outcache* (not the max prompt counter). This is
6828 much better, since many statements won't increase the cache
6834 much better, since many statements won't increase the cache
6829 count. It also eliminated some confusing options, now there's only
6835 count. It also eliminated some confusing options, now there's only
6830 one: cache_size.
6836 one: cache_size.
6831
6837
6832 * Added 'alias' magic function and magic_alias option in the
6838 * Added 'alias' magic function and magic_alias option in the
6833 ipythonrc file. Now the user can easily define whatever names he
6839 ipythonrc file. Now the user can easily define whatever names he
6834 wants for the magic functions without having to play weird
6840 wants for the magic functions without having to play weird
6835 namespace games. This gives IPython a real shell-like feel.
6841 namespace games. This gives IPython a real shell-like feel.
6836
6842
6837 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6843 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6838 @ or not).
6844 @ or not).
6839
6845
6840 This was one of the last remaining 'visible' bugs (that I know
6846 This was one of the last remaining 'visible' bugs (that I know
6841 of). I think if I can clean up the session loading so it works
6847 of). I think if I can clean up the session loading so it works
6842 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6848 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6843 about licensing).
6849 about licensing).
6844
6850
6845 2001-11-25 Fernando Perez <fperez@colorado.edu>
6851 2001-11-25 Fernando Perez <fperez@colorado.edu>
6846
6852
6847 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6853 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6848 there's a cleaner distinction between what ? and ?? show.
6854 there's a cleaner distinction between what ? and ?? show.
6849
6855
6850 * Added screen_length option. Now the user can define his own
6856 * Added screen_length option. Now the user can define his own
6851 screen size for page() operations.
6857 screen size for page() operations.
6852
6858
6853 * Implemented magic shell-like functions with automatic code
6859 * Implemented magic shell-like functions with automatic code
6854 generation. Now adding another function is just a matter of adding
6860 generation. Now adding another function is just a matter of adding
6855 an entry to a dict, and the function is dynamically generated at
6861 an entry to a dict, and the function is dynamically generated at
6856 run-time. Python has some really cool features!
6862 run-time. Python has some really cool features!
6857
6863
6858 * Renamed many options to cleanup conventions a little. Now all
6864 * Renamed many options to cleanup conventions a little. Now all
6859 are lowercase, and only underscores where needed. Also in the code
6865 are lowercase, and only underscores where needed. Also in the code
6860 option name tables are clearer.
6866 option name tables are clearer.
6861
6867
6862 * Changed prompts a little. Now input is 'In [n]:' instead of
6868 * Changed prompts a little. Now input is 'In [n]:' instead of
6863 'In[n]:='. This allows it the numbers to be aligned with the
6869 'In[n]:='. This allows it the numbers to be aligned with the
6864 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6870 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6865 Python (it was a Mathematica thing). The '...' continuation prompt
6871 Python (it was a Mathematica thing). The '...' continuation prompt
6866 was also changed a little to align better.
6872 was also changed a little to align better.
6867
6873
6868 * Fixed bug when flushing output cache. Not all _p<n> variables
6874 * Fixed bug when flushing output cache. Not all _p<n> variables
6869 exist, so their deletion needs to be wrapped in a try:
6875 exist, so their deletion needs to be wrapped in a try:
6870
6876
6871 * Figured out how to properly use inspect.formatargspec() (it
6877 * Figured out how to properly use inspect.formatargspec() (it
6872 requires the args preceded by *). So I removed all the code from
6878 requires the args preceded by *). So I removed all the code from
6873 _get_pdef in Magic, which was just replicating that.
6879 _get_pdef in Magic, which was just replicating that.
6874
6880
6875 * Added test to prefilter to allow redefining magic function names
6881 * Added test to prefilter to allow redefining magic function names
6876 as variables. This is ok, since the @ form is always available,
6882 as variables. This is ok, since the @ form is always available,
6877 but whe should allow the user to define a variable called 'ls' if
6883 but whe should allow the user to define a variable called 'ls' if
6878 he needs it.
6884 he needs it.
6879
6885
6880 * Moved the ToDo information from README into a separate ToDo.
6886 * Moved the ToDo information from README into a separate ToDo.
6881
6887
6882 * General code cleanup and small bugfixes. I think it's close to a
6888 * General code cleanup and small bugfixes. I think it's close to a
6883 state where it can be released, obviously with a big 'beta'
6889 state where it can be released, obviously with a big 'beta'
6884 warning on it.
6890 warning on it.
6885
6891
6886 * Got the magic function split to work. Now all magics are defined
6892 * Got the magic function split to work. Now all magics are defined
6887 in a separate class. It just organizes things a bit, and now
6893 in a separate class. It just organizes things a bit, and now
6888 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6894 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6889 was too long).
6895 was too long).
6890
6896
6891 * Changed @clear to @reset to avoid potential confusions with
6897 * Changed @clear to @reset to avoid potential confusions with
6892 the shell command clear. Also renamed @cl to @clear, which does
6898 the shell command clear. Also renamed @cl to @clear, which does
6893 exactly what people expect it to from their shell experience.
6899 exactly what people expect it to from their shell experience.
6894
6900
6895 Added a check to the @reset command (since it's so
6901 Added a check to the @reset command (since it's so
6896 destructive, it's probably a good idea to ask for confirmation).
6902 destructive, it's probably a good idea to ask for confirmation).
6897 But now reset only works for full namespace resetting. Since the
6903 But now reset only works for full namespace resetting. Since the
6898 del keyword is already there for deleting a few specific
6904 del keyword is already there for deleting a few specific
6899 variables, I don't see the point of having a redundant magic
6905 variables, I don't see the point of having a redundant magic
6900 function for the same task.
6906 function for the same task.
6901
6907
6902 2001-11-24 Fernando Perez <fperez@colorado.edu>
6908 2001-11-24 Fernando Perez <fperez@colorado.edu>
6903
6909
6904 * Updated the builtin docs (esp. the ? ones).
6910 * Updated the builtin docs (esp. the ? ones).
6905
6911
6906 * Ran all the code through pychecker. Not terribly impressed with
6912 * Ran all the code through pychecker. Not terribly impressed with
6907 it: lots of spurious warnings and didn't really find anything of
6913 it: lots of spurious warnings and didn't really find anything of
6908 substance (just a few modules being imported and not used).
6914 substance (just a few modules being imported and not used).
6909
6915
6910 * Implemented the new ultraTB functionality into IPython. New
6916 * Implemented the new ultraTB functionality into IPython. New
6911 option: xcolors. This chooses color scheme. xmode now only selects
6917 option: xcolors. This chooses color scheme. xmode now only selects
6912 between Plain and Verbose. Better orthogonality.
6918 between Plain and Verbose. Better orthogonality.
6913
6919
6914 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6920 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6915 mode and color scheme for the exception handlers. Now it's
6921 mode and color scheme for the exception handlers. Now it's
6916 possible to have the verbose traceback with no coloring.
6922 possible to have the verbose traceback with no coloring.
6917
6923
6918 2001-11-23 Fernando Perez <fperez@colorado.edu>
6924 2001-11-23 Fernando Perez <fperez@colorado.edu>
6919
6925
6920 * Version 0.1.12 released, 0.1.13 opened.
6926 * Version 0.1.12 released, 0.1.13 opened.
6921
6927
6922 * Removed option to set auto-quote and auto-paren escapes by
6928 * Removed option to set auto-quote and auto-paren escapes by
6923 user. The chances of breaking valid syntax are just too high. If
6929 user. The chances of breaking valid syntax are just too high. If
6924 someone *really* wants, they can always dig into the code.
6930 someone *really* wants, they can always dig into the code.
6925
6931
6926 * Made prompt separators configurable.
6932 * Made prompt separators configurable.
6927
6933
6928 2001-11-22 Fernando Perez <fperez@colorado.edu>
6934 2001-11-22 Fernando Perez <fperez@colorado.edu>
6929
6935
6930 * Small bugfixes in many places.
6936 * Small bugfixes in many places.
6931
6937
6932 * Removed the MyCompleter class from ipplib. It seemed redundant
6938 * Removed the MyCompleter class from ipplib. It seemed redundant
6933 with the C-p,C-n history search functionality. Less code to
6939 with the C-p,C-n history search functionality. Less code to
6934 maintain.
6940 maintain.
6935
6941
6936 * Moved all the original ipython.py code into ipythonlib.py. Right
6942 * Moved all the original ipython.py code into ipythonlib.py. Right
6937 now it's just one big dump into a function called make_IPython, so
6943 now it's just one big dump into a function called make_IPython, so
6938 no real modularity has been gained. But at least it makes the
6944 no real modularity has been gained. But at least it makes the
6939 wrapper script tiny, and since ipythonlib is a module, it gets
6945 wrapper script tiny, and since ipythonlib is a module, it gets
6940 compiled and startup is much faster.
6946 compiled and startup is much faster.
6941
6947
6942 This is a reasobably 'deep' change, so we should test it for a
6948 This is a reasobably 'deep' change, so we should test it for a
6943 while without messing too much more with the code.
6949 while without messing too much more with the code.
6944
6950
6945 2001-11-21 Fernando Perez <fperez@colorado.edu>
6951 2001-11-21 Fernando Perez <fperez@colorado.edu>
6946
6952
6947 * Version 0.1.11 released, 0.1.12 opened for further work.
6953 * Version 0.1.11 released, 0.1.12 opened for further work.
6948
6954
6949 * Removed dependency on Itpl. It was only needed in one place. It
6955 * Removed dependency on Itpl. It was only needed in one place. It
6950 would be nice if this became part of python, though. It makes life
6956 would be nice if this became part of python, though. It makes life
6951 *a lot* easier in some cases.
6957 *a lot* easier in some cases.
6952
6958
6953 * Simplified the prefilter code a bit. Now all handlers are
6959 * Simplified the prefilter code a bit. Now all handlers are
6954 expected to explicitly return a value (at least a blank string).
6960 expected to explicitly return a value (at least a blank string).
6955
6961
6956 * Heavy edits in ipplib. Removed the help system altogether. Now
6962 * Heavy edits in ipplib. Removed the help system altogether. Now
6957 obj?/?? is used for inspecting objects, a magic @doc prints
6963 obj?/?? is used for inspecting objects, a magic @doc prints
6958 docstrings, and full-blown Python help is accessed via the 'help'
6964 docstrings, and full-blown Python help is accessed via the 'help'
6959 keyword. This cleans up a lot of code (less to maintain) and does
6965 keyword. This cleans up a lot of code (less to maintain) and does
6960 the job. Since 'help' is now a standard Python component, might as
6966 the job. Since 'help' is now a standard Python component, might as
6961 well use it and remove duplicate functionality.
6967 well use it and remove duplicate functionality.
6962
6968
6963 Also removed the option to use ipplib as a standalone program. By
6969 Also removed the option to use ipplib as a standalone program. By
6964 now it's too dependent on other parts of IPython to function alone.
6970 now it's too dependent on other parts of IPython to function alone.
6965
6971
6966 * Fixed bug in genutils.pager. It would crash if the pager was
6972 * Fixed bug in genutils.pager. It would crash if the pager was
6967 exited immediately after opening (broken pipe).
6973 exited immediately after opening (broken pipe).
6968
6974
6969 * Trimmed down the VerboseTB reporting a little. The header is
6975 * Trimmed down the VerboseTB reporting a little. The header is
6970 much shorter now and the repeated exception arguments at the end
6976 much shorter now and the repeated exception arguments at the end
6971 have been removed. For interactive use the old header seemed a bit
6977 have been removed. For interactive use the old header seemed a bit
6972 excessive.
6978 excessive.
6973
6979
6974 * Fixed small bug in output of @whos for variables with multi-word
6980 * Fixed small bug in output of @whos for variables with multi-word
6975 types (only first word was displayed).
6981 types (only first word was displayed).
6976
6982
6977 2001-11-17 Fernando Perez <fperez@colorado.edu>
6983 2001-11-17 Fernando Perez <fperez@colorado.edu>
6978
6984
6979 * Version 0.1.10 released, 0.1.11 opened for further work.
6985 * Version 0.1.10 released, 0.1.11 opened for further work.
6980
6986
6981 * Modified dirs and friends. dirs now *returns* the stack (not
6987 * Modified dirs and friends. dirs now *returns* the stack (not
6982 prints), so one can manipulate it as a variable. Convenient to
6988 prints), so one can manipulate it as a variable. Convenient to
6983 travel along many directories.
6989 travel along many directories.
6984
6990
6985 * Fixed bug in magic_pdef: would only work with functions with
6991 * Fixed bug in magic_pdef: would only work with functions with
6986 arguments with default values.
6992 arguments with default values.
6987
6993
6988 2001-11-14 Fernando Perez <fperez@colorado.edu>
6994 2001-11-14 Fernando Perez <fperez@colorado.edu>
6989
6995
6990 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6996 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6991 example with IPython. Various other minor fixes and cleanups.
6997 example with IPython. Various other minor fixes and cleanups.
6992
6998
6993 * Version 0.1.9 released, 0.1.10 opened for further work.
6999 * Version 0.1.9 released, 0.1.10 opened for further work.
6994
7000
6995 * Added sys.path to the list of directories searched in the
7001 * Added sys.path to the list of directories searched in the
6996 execfile= option. It used to be the current directory and the
7002 execfile= option. It used to be the current directory and the
6997 user's IPYTHONDIR only.
7003 user's IPYTHONDIR only.
6998
7004
6999 2001-11-13 Fernando Perez <fperez@colorado.edu>
7005 2001-11-13 Fernando Perez <fperez@colorado.edu>
7000
7006
7001 * Reinstated the raw_input/prefilter separation that Janko had
7007 * Reinstated the raw_input/prefilter separation that Janko had
7002 initially. This gives a more convenient setup for extending the
7008 initially. This gives a more convenient setup for extending the
7003 pre-processor from the outside: raw_input always gets a string,
7009 pre-processor from the outside: raw_input always gets a string,
7004 and prefilter has to process it. We can then redefine prefilter
7010 and prefilter has to process it. We can then redefine prefilter
7005 from the outside and implement extensions for special
7011 from the outside and implement extensions for special
7006 purposes.
7012 purposes.
7007
7013
7008 Today I got one for inputting PhysicalQuantity objects
7014 Today I got one for inputting PhysicalQuantity objects
7009 (from Scientific) without needing any function calls at
7015 (from Scientific) without needing any function calls at
7010 all. Extremely convenient, and it's all done as a user-level
7016 all. Extremely convenient, and it's all done as a user-level
7011 extension (no IPython code was touched). Now instead of:
7017 extension (no IPython code was touched). Now instead of:
7012 a = PhysicalQuantity(4.2,'m/s**2')
7018 a = PhysicalQuantity(4.2,'m/s**2')
7013 one can simply say
7019 one can simply say
7014 a = 4.2 m/s**2
7020 a = 4.2 m/s**2
7015 or even
7021 or even
7016 a = 4.2 m/s^2
7022 a = 4.2 m/s^2
7017
7023
7018 I use this, but it's also a proof of concept: IPython really is
7024 I use this, but it's also a proof of concept: IPython really is
7019 fully user-extensible, even at the level of the parsing of the
7025 fully user-extensible, even at the level of the parsing of the
7020 command line. It's not trivial, but it's perfectly doable.
7026 command line. It's not trivial, but it's perfectly doable.
7021
7027
7022 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7028 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7023 the problem of modules being loaded in the inverse order in which
7029 the problem of modules being loaded in the inverse order in which
7024 they were defined in
7030 they were defined in
7025
7031
7026 * Version 0.1.8 released, 0.1.9 opened for further work.
7032 * Version 0.1.8 released, 0.1.9 opened for further work.
7027
7033
7028 * Added magics pdef, source and file. They respectively show the
7034 * Added magics pdef, source and file. They respectively show the
7029 definition line ('prototype' in C), source code and full python
7035 definition line ('prototype' in C), source code and full python
7030 file for any callable object. The object inspector oinfo uses
7036 file for any callable object. The object inspector oinfo uses
7031 these to show the same information.
7037 these to show the same information.
7032
7038
7033 * Version 0.1.7 released, 0.1.8 opened for further work.
7039 * Version 0.1.7 released, 0.1.8 opened for further work.
7034
7040
7035 * Separated all the magic functions into a class called Magic. The
7041 * Separated all the magic functions into a class called Magic. The
7036 InteractiveShell class was becoming too big for Xemacs to handle
7042 InteractiveShell class was becoming too big for Xemacs to handle
7037 (de-indenting a line would lock it up for 10 seconds while it
7043 (de-indenting a line would lock it up for 10 seconds while it
7038 backtracked on the whole class!)
7044 backtracked on the whole class!)
7039
7045
7040 FIXME: didn't work. It can be done, but right now namespaces are
7046 FIXME: didn't work. It can be done, but right now namespaces are
7041 all messed up. Do it later (reverted it for now, so at least
7047 all messed up. Do it later (reverted it for now, so at least
7042 everything works as before).
7048 everything works as before).
7043
7049
7044 * Got the object introspection system (magic_oinfo) working! I
7050 * Got the object introspection system (magic_oinfo) working! I
7045 think this is pretty much ready for release to Janko, so he can
7051 think this is pretty much ready for release to Janko, so he can
7046 test it for a while and then announce it. Pretty much 100% of what
7052 test it for a while and then announce it. Pretty much 100% of what
7047 I wanted for the 'phase 1' release is ready. Happy, tired.
7053 I wanted for the 'phase 1' release is ready. Happy, tired.
7048
7054
7049 2001-11-12 Fernando Perez <fperez@colorado.edu>
7055 2001-11-12 Fernando Perez <fperez@colorado.edu>
7050
7056
7051 * Version 0.1.6 released, 0.1.7 opened for further work.
7057 * Version 0.1.6 released, 0.1.7 opened for further work.
7052
7058
7053 * Fixed bug in printing: it used to test for truth before
7059 * Fixed bug in printing: it used to test for truth before
7054 printing, so 0 wouldn't print. Now checks for None.
7060 printing, so 0 wouldn't print. Now checks for None.
7055
7061
7056 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7062 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7057 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7063 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7058 reaches by hand into the outputcache. Think of a better way to do
7064 reaches by hand into the outputcache. Think of a better way to do
7059 this later.
7065 this later.
7060
7066
7061 * Various small fixes thanks to Nathan's comments.
7067 * Various small fixes thanks to Nathan's comments.
7062
7068
7063 * Changed magic_pprint to magic_Pprint. This way it doesn't
7069 * Changed magic_pprint to magic_Pprint. This way it doesn't
7064 collide with pprint() and the name is consistent with the command
7070 collide with pprint() and the name is consistent with the command
7065 line option.
7071 line option.
7066
7072
7067 * Changed prompt counter behavior to be fully like
7073 * Changed prompt counter behavior to be fully like
7068 Mathematica's. That is, even input that doesn't return a result
7074 Mathematica's. That is, even input that doesn't return a result
7069 raises the prompt counter. The old behavior was kind of confusing
7075 raises the prompt counter. The old behavior was kind of confusing
7070 (getting the same prompt number several times if the operation
7076 (getting the same prompt number several times if the operation
7071 didn't return a result).
7077 didn't return a result).
7072
7078
7073 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7079 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7074
7080
7075 * Fixed -Classic mode (wasn't working anymore).
7081 * Fixed -Classic mode (wasn't working anymore).
7076
7082
7077 * Added colored prompts using Nathan's new code. Colors are
7083 * Added colored prompts using Nathan's new code. Colors are
7078 currently hardwired, they can be user-configurable. For
7084 currently hardwired, they can be user-configurable. For
7079 developers, they can be chosen in file ipythonlib.py, at the
7085 developers, they can be chosen in file ipythonlib.py, at the
7080 beginning of the CachedOutput class def.
7086 beginning of the CachedOutput class def.
7081
7087
7082 2001-11-11 Fernando Perez <fperez@colorado.edu>
7088 2001-11-11 Fernando Perez <fperez@colorado.edu>
7083
7089
7084 * Version 0.1.5 released, 0.1.6 opened for further work.
7090 * Version 0.1.5 released, 0.1.6 opened for further work.
7085
7091
7086 * Changed magic_env to *return* the environment as a dict (not to
7092 * Changed magic_env to *return* the environment as a dict (not to
7087 print it). This way it prints, but it can also be processed.
7093 print it). This way it prints, but it can also be processed.
7088
7094
7089 * Added Verbose exception reporting to interactive
7095 * Added Verbose exception reporting to interactive
7090 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7096 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7091 traceback. Had to make some changes to the ultraTB file. This is
7097 traceback. Had to make some changes to the ultraTB file. This is
7092 probably the last 'big' thing in my mental todo list. This ties
7098 probably the last 'big' thing in my mental todo list. This ties
7093 in with the next entry:
7099 in with the next entry:
7094
7100
7095 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7101 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7096 has to specify is Plain, Color or Verbose for all exception
7102 has to specify is Plain, Color or Verbose for all exception
7097 handling.
7103 handling.
7098
7104
7099 * Removed ShellServices option. All this can really be done via
7105 * Removed ShellServices option. All this can really be done via
7100 the magic system. It's easier to extend, cleaner and has automatic
7106 the magic system. It's easier to extend, cleaner and has automatic
7101 namespace protection and documentation.
7107 namespace protection and documentation.
7102
7108
7103 2001-11-09 Fernando Perez <fperez@colorado.edu>
7109 2001-11-09 Fernando Perez <fperez@colorado.edu>
7104
7110
7105 * Fixed bug in output cache flushing (missing parameter to
7111 * Fixed bug in output cache flushing (missing parameter to
7106 __init__). Other small bugs fixed (found using pychecker).
7112 __init__). Other small bugs fixed (found using pychecker).
7107
7113
7108 * Version 0.1.4 opened for bugfixing.
7114 * Version 0.1.4 opened for bugfixing.
7109
7115
7110 2001-11-07 Fernando Perez <fperez@colorado.edu>
7116 2001-11-07 Fernando Perez <fperez@colorado.edu>
7111
7117
7112 * Version 0.1.3 released, mainly because of the raw_input bug.
7118 * Version 0.1.3 released, mainly because of the raw_input bug.
7113
7119
7114 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7120 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7115 and when testing for whether things were callable, a call could
7121 and when testing for whether things were callable, a call could
7116 actually be made to certain functions. They would get called again
7122 actually be made to certain functions. They would get called again
7117 once 'really' executed, with a resulting double call. A disaster
7123 once 'really' executed, with a resulting double call. A disaster
7118 in many cases (list.reverse() would never work!).
7124 in many cases (list.reverse() would never work!).
7119
7125
7120 * Removed prefilter() function, moved its code to raw_input (which
7126 * Removed prefilter() function, moved its code to raw_input (which
7121 after all was just a near-empty caller for prefilter). This saves
7127 after all was just a near-empty caller for prefilter). This saves
7122 a function call on every prompt, and simplifies the class a tiny bit.
7128 a function call on every prompt, and simplifies the class a tiny bit.
7123
7129
7124 * Fix _ip to __ip name in magic example file.
7130 * Fix _ip to __ip name in magic example file.
7125
7131
7126 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7132 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7127 work with non-gnu versions of tar.
7133 work with non-gnu versions of tar.
7128
7134
7129 2001-11-06 Fernando Perez <fperez@colorado.edu>
7135 2001-11-06 Fernando Perez <fperez@colorado.edu>
7130
7136
7131 * Version 0.1.2. Just to keep track of the recent changes.
7137 * Version 0.1.2. Just to keep track of the recent changes.
7132
7138
7133 * Fixed nasty bug in output prompt routine. It used to check 'if
7139 * Fixed nasty bug in output prompt routine. It used to check 'if
7134 arg != None...'. Problem is, this fails if arg implements a
7140 arg != None...'. Problem is, this fails if arg implements a
7135 special comparison (__cmp__) which disallows comparing to
7141 special comparison (__cmp__) which disallows comparing to
7136 None. Found it when trying to use the PhysicalQuantity module from
7142 None. Found it when trying to use the PhysicalQuantity module from
7137 ScientificPython.
7143 ScientificPython.
7138
7144
7139 2001-11-05 Fernando Perez <fperez@colorado.edu>
7145 2001-11-05 Fernando Perez <fperez@colorado.edu>
7140
7146
7141 * Also added dirs. Now the pushd/popd/dirs family functions
7147 * Also added dirs. Now the pushd/popd/dirs family functions
7142 basically like the shell, with the added convenience of going home
7148 basically like the shell, with the added convenience of going home
7143 when called with no args.
7149 when called with no args.
7144
7150
7145 * pushd/popd slightly modified to mimic shell behavior more
7151 * pushd/popd slightly modified to mimic shell behavior more
7146 closely.
7152 closely.
7147
7153
7148 * Added env,pushd,popd from ShellServices as magic functions. I
7154 * Added env,pushd,popd from ShellServices as magic functions. I
7149 think the cleanest will be to port all desired functions from
7155 think the cleanest will be to port all desired functions from
7150 ShellServices as magics and remove ShellServices altogether. This
7156 ShellServices as magics and remove ShellServices altogether. This
7151 will provide a single, clean way of adding functionality
7157 will provide a single, clean way of adding functionality
7152 (shell-type or otherwise) to IP.
7158 (shell-type or otherwise) to IP.
7153
7159
7154 2001-11-04 Fernando Perez <fperez@colorado.edu>
7160 2001-11-04 Fernando Perez <fperez@colorado.edu>
7155
7161
7156 * Added .ipython/ directory to sys.path. This way users can keep
7162 * Added .ipython/ directory to sys.path. This way users can keep
7157 customizations there and access them via import.
7163 customizations there and access them via import.
7158
7164
7159 2001-11-03 Fernando Perez <fperez@colorado.edu>
7165 2001-11-03 Fernando Perez <fperez@colorado.edu>
7160
7166
7161 * Opened version 0.1.1 for new changes.
7167 * Opened version 0.1.1 for new changes.
7162
7168
7163 * Changed version number to 0.1.0: first 'public' release, sent to
7169 * Changed version number to 0.1.0: first 'public' release, sent to
7164 Nathan and Janko.
7170 Nathan and Janko.
7165
7171
7166 * Lots of small fixes and tweaks.
7172 * Lots of small fixes and tweaks.
7167
7173
7168 * Minor changes to whos format. Now strings are shown, snipped if
7174 * Minor changes to whos format. Now strings are shown, snipped if
7169 too long.
7175 too long.
7170
7176
7171 * Changed ShellServices to work on __main__ so they show up in @who
7177 * Changed ShellServices to work on __main__ so they show up in @who
7172
7178
7173 * Help also works with ? at the end of a line:
7179 * Help also works with ? at the end of a line:
7174 ?sin and sin?
7180 ?sin and sin?
7175 both produce the same effect. This is nice, as often I use the
7181 both produce the same effect. This is nice, as often I use the
7176 tab-complete to find the name of a method, but I used to then have
7182 tab-complete to find the name of a method, but I used to then have
7177 to go to the beginning of the line to put a ? if I wanted more
7183 to go to the beginning of the line to put a ? if I wanted more
7178 info. Now I can just add the ? and hit return. Convenient.
7184 info. Now I can just add the ? and hit return. Convenient.
7179
7185
7180 2001-11-02 Fernando Perez <fperez@colorado.edu>
7186 2001-11-02 Fernando Perez <fperez@colorado.edu>
7181
7187
7182 * Python version check (>=2.1) added.
7188 * Python version check (>=2.1) added.
7183
7189
7184 * Added LazyPython documentation. At this point the docs are quite
7190 * Added LazyPython documentation. At this point the docs are quite
7185 a mess. A cleanup is in order.
7191 a mess. A cleanup is in order.
7186
7192
7187 * Auto-installer created. For some bizarre reason, the zipfiles
7193 * Auto-installer created. For some bizarre reason, the zipfiles
7188 module isn't working on my system. So I made a tar version
7194 module isn't working on my system. So I made a tar version
7189 (hopefully the command line options in various systems won't kill
7195 (hopefully the command line options in various systems won't kill
7190 me).
7196 me).
7191
7197
7192 * Fixes to Struct in genutils. Now all dictionary-like methods are
7198 * Fixes to Struct in genutils. Now all dictionary-like methods are
7193 protected (reasonably).
7199 protected (reasonably).
7194
7200
7195 * Added pager function to genutils and changed ? to print usage
7201 * Added pager function to genutils and changed ? to print usage
7196 note through it (it was too long).
7202 note through it (it was too long).
7197
7203
7198 * Added the LazyPython functionality. Works great! I changed the
7204 * Added the LazyPython functionality. Works great! I changed the
7199 auto-quote escape to ';', it's on home row and next to '. But
7205 auto-quote escape to ';', it's on home row and next to '. But
7200 both auto-quote and auto-paren (still /) escapes are command-line
7206 both auto-quote and auto-paren (still /) escapes are command-line
7201 parameters.
7207 parameters.
7202
7208
7203
7209
7204 2001-11-01 Fernando Perez <fperez@colorado.edu>
7210 2001-11-01 Fernando Perez <fperez@colorado.edu>
7205
7211
7206 * Version changed to 0.0.7. Fairly large change: configuration now
7212 * Version changed to 0.0.7. Fairly large change: configuration now
7207 is all stored in a directory, by default .ipython. There, all
7213 is all stored in a directory, by default .ipython. There, all
7208 config files have normal looking names (not .names)
7214 config files have normal looking names (not .names)
7209
7215
7210 * Version 0.0.6 Released first to Lucas and Archie as a test
7216 * Version 0.0.6 Released first to Lucas and Archie as a test
7211 run. Since it's the first 'semi-public' release, change version to
7217 run. Since it's the first 'semi-public' release, change version to
7212 > 0.0.6 for any changes now.
7218 > 0.0.6 for any changes now.
7213
7219
7214 * Stuff I had put in the ipplib.py changelog:
7220 * Stuff I had put in the ipplib.py changelog:
7215
7221
7216 Changes to InteractiveShell:
7222 Changes to InteractiveShell:
7217
7223
7218 - Made the usage message a parameter.
7224 - Made the usage message a parameter.
7219
7225
7220 - Require the name of the shell variable to be given. It's a bit
7226 - Require the name of the shell variable to be given. It's a bit
7221 of a hack, but allows the name 'shell' not to be hardwired in the
7227 of a hack, but allows the name 'shell' not to be hardwired in the
7222 magic (@) handler, which is problematic b/c it requires
7228 magic (@) handler, which is problematic b/c it requires
7223 polluting the global namespace with 'shell'. This in turn is
7229 polluting the global namespace with 'shell'. This in turn is
7224 fragile: if a user redefines a variable called shell, things
7230 fragile: if a user redefines a variable called shell, things
7225 break.
7231 break.
7226
7232
7227 - magic @: all functions available through @ need to be defined
7233 - magic @: all functions available through @ need to be defined
7228 as magic_<name>, even though they can be called simply as
7234 as magic_<name>, even though they can be called simply as
7229 @<name>. This allows the special command @magic to gather
7235 @<name>. This allows the special command @magic to gather
7230 information automatically about all existing magic functions,
7236 information automatically about all existing magic functions,
7231 even if they are run-time user extensions, by parsing the shell
7237 even if they are run-time user extensions, by parsing the shell
7232 instance __dict__ looking for special magic_ names.
7238 instance __dict__ looking for special magic_ names.
7233
7239
7234 - mainloop: added *two* local namespace parameters. This allows
7240 - mainloop: added *two* local namespace parameters. This allows
7235 the class to differentiate between parameters which were there
7241 the class to differentiate between parameters which were there
7236 before and after command line initialization was processed. This
7242 before and after command line initialization was processed. This
7237 way, later @who can show things loaded at startup by the
7243 way, later @who can show things loaded at startup by the
7238 user. This trick was necessary to make session saving/reloading
7244 user. This trick was necessary to make session saving/reloading
7239 really work: ideally after saving/exiting/reloading a session,
7245 really work: ideally after saving/exiting/reloading a session,
7240 *everything* should look the same, including the output of @who. I
7246 *everything* should look the same, including the output of @who. I
7241 was only able to make this work with this double namespace
7247 was only able to make this work with this double namespace
7242 trick.
7248 trick.
7243
7249
7244 - added a header to the logfile which allows (almost) full
7250 - added a header to the logfile which allows (almost) full
7245 session restoring.
7251 session restoring.
7246
7252
7247 - prepend lines beginning with @ or !, with a and log
7253 - prepend lines beginning with @ or !, with a and log
7248 them. Why? !lines: may be useful to know what you did @lines:
7254 them. Why? !lines: may be useful to know what you did @lines:
7249 they may affect session state. So when restoring a session, at
7255 they may affect session state. So when restoring a session, at
7250 least inform the user of their presence. I couldn't quite get
7256 least inform the user of their presence. I couldn't quite get
7251 them to properly re-execute, but at least the user is warned.
7257 them to properly re-execute, but at least the user is warned.
7252
7258
7253 * Started ChangeLog.
7259 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now