##// END OF EJS Templates
flush stdout/err before printing tracebacks
fperez -
Show More
@@ -1,897 +1,903 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 1956 2006-11-30 05:22:31Z fperez $"""
63 $Id: ultraTB.py 2027 2007-01-19 00:55:09Z fperez $"""
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 string
84 import string
85 import sys
85 import sys
86 import time
86 import time
87 import tokenize
87 import tokenize
88 import traceback
88 import traceback
89 import types
89 import types
90
90
91 # IPython's own modules
91 # IPython's own modules
92 # Modified pdb which doesn't damage IPython's readline handling
92 # Modified pdb which doesn't damage IPython's readline handling
93 from IPython import Debugger
93 from IPython import Debugger
94 from IPython.ipstruct import Struct
94 from IPython.ipstruct import Struct
95 from IPython.excolors import ExceptionColors
95 from IPython.excolors import ExceptionColors
96 from IPython.genutils import Term,uniq_stable,error,info
96 from IPython.genutils import Term,uniq_stable,error,info
97
97
98 # Globals
98 # Globals
99 # amount of space to put line numbers before verbose tracebacks
99 # amount of space to put line numbers before verbose tracebacks
100 INDENT_SIZE = 8
100 INDENT_SIZE = 8
101
101
102 #---------------------------------------------------------------------------
102 #---------------------------------------------------------------------------
103 # Code begins
103 # Code begins
104
104
105 # Utility functions
105 # Utility functions
106 def inspect_error():
106 def inspect_error():
107 """Print a message about internal inspect errors.
107 """Print a message about internal inspect errors.
108
108
109 These are unfortunately quite common."""
109 These are unfortunately quite common."""
110
110
111 error('Internal Python error in the inspect module.\n'
111 error('Internal Python error in the inspect module.\n'
112 'Below is the traceback from this internal error.\n')
112 'Below is the traceback from this internal error.\n')
113
113
114 def _fixed_getinnerframes(etb, context=1,tb_offset=0):
114 def _fixed_getinnerframes(etb, context=1,tb_offset=0):
115 import linecache
115 import linecache
116 LNUM_POS, LINES_POS, INDEX_POS = 2, 4, 5
116 LNUM_POS, LINES_POS, INDEX_POS = 2, 4, 5
117
117
118 records = inspect.getinnerframes(etb, context)
118 records = inspect.getinnerframes(etb, context)
119
119
120 # If the error is at the console, don't build any context, since it would
120 # If the error is at the console, don't build any context, since it would
121 # otherwise produce 5 blank lines printed out (there is no file at the
121 # otherwise produce 5 blank lines printed out (there is no file at the
122 # console)
122 # console)
123 rec_check = records[tb_offset:]
123 rec_check = records[tb_offset:]
124 try:
124 try:
125 rname = rec_check[0][1]
125 rname = rec_check[0][1]
126 if rname == '<ipython console>' or rname.endswith('<string>'):
126 if rname == '<ipython console>' or rname.endswith('<string>'):
127 return rec_check
127 return rec_check
128 except IndexError:
128 except IndexError:
129 pass
129 pass
130
130
131 aux = traceback.extract_tb(etb)
131 aux = traceback.extract_tb(etb)
132 assert len(records) == len(aux)
132 assert len(records) == len(aux)
133 for i, (file, lnum, _, _) in zip(range(len(records)), aux):
133 for i, (file, lnum, _, _) in zip(range(len(records)), aux):
134 maybeStart = lnum-1 - context//2
134 maybeStart = lnum-1 - context//2
135 start = max(maybeStart, 0)
135 start = max(maybeStart, 0)
136 end = start + context
136 end = start + context
137 lines = linecache.getlines(file)[start:end]
137 lines = linecache.getlines(file)[start:end]
138 # pad with empty lines if necessary
138 # pad with empty lines if necessary
139 if maybeStart < 0:
139 if maybeStart < 0:
140 lines = (['\n'] * -maybeStart) + lines
140 lines = (['\n'] * -maybeStart) + lines
141 if len(lines) < context:
141 if len(lines) < context:
142 lines += ['\n'] * (context - len(lines))
142 lines += ['\n'] * (context - len(lines))
143 buf = list(records[i])
143 buf = list(records[i])
144 buf[LNUM_POS] = lnum
144 buf[LNUM_POS] = lnum
145 buf[INDEX_POS] = lnum - 1 - start
145 buf[INDEX_POS] = lnum - 1 - start
146 buf[LINES_POS] = lines
146 buf[LINES_POS] = lines
147 records[i] = tuple(buf)
147 records[i] = tuple(buf)
148 return records[tb_offset:]
148 return records[tb_offset:]
149
149
150 # Helper function -- largely belongs to VerboseTB, but we need the same
150 # Helper function -- largely belongs to VerboseTB, but we need the same
151 # functionality to produce a pseudo verbose TB for SyntaxErrors, so that they
151 # functionality to produce a pseudo verbose TB for SyntaxErrors, so that they
152 # can be recognized properly by ipython.el's py-traceback-line-re
152 # can be recognized properly by ipython.el's py-traceback-line-re
153 # (SyntaxErrors have to be treated specially because they have no traceback)
153 # (SyntaxErrors have to be treated specially because they have no traceback)
154 def _formatTracebackLines(lnum, index, lines, Colors, lvals=None):
154 def _formatTracebackLines(lnum, index, lines, Colors, lvals=None):
155 numbers_width = INDENT_SIZE - 1
155 numbers_width = INDENT_SIZE - 1
156 res = []
156 res = []
157 i = lnum - index
157 i = lnum - index
158 for line in lines:
158 for line in lines:
159 if i == lnum:
159 if i == lnum:
160 # This is the line with the error
160 # This is the line with the error
161 pad = numbers_width - len(str(i))
161 pad = numbers_width - len(str(i))
162 if pad >= 3:
162 if pad >= 3:
163 marker = '-'*(pad-3) + '-> '
163 marker = '-'*(pad-3) + '-> '
164 elif pad == 2:
164 elif pad == 2:
165 marker = '> '
165 marker = '> '
166 elif pad == 1:
166 elif pad == 1:
167 marker = '>'
167 marker = '>'
168 else:
168 else:
169 marker = ''
169 marker = ''
170 num = marker + str(i)
170 num = marker + str(i)
171 line = '%s%s%s %s%s' %(Colors.linenoEm, num,
171 line = '%s%s%s %s%s' %(Colors.linenoEm, num,
172 Colors.line, line, Colors.Normal)
172 Colors.line, line, Colors.Normal)
173 else:
173 else:
174 num = '%*s' % (numbers_width,i)
174 num = '%*s' % (numbers_width,i)
175 line = '%s%s%s %s' %(Colors.lineno, num,
175 line = '%s%s%s %s' %(Colors.lineno, num,
176 Colors.Normal, line)
176 Colors.Normal, line)
177
177
178 res.append(line)
178 res.append(line)
179 if lvals and i == lnum:
179 if lvals and i == lnum:
180 res.append(lvals + '\n')
180 res.append(lvals + '\n')
181 i = i + 1
181 i = i + 1
182 return res
182 return res
183
183
184 #---------------------------------------------------------------------------
184 #---------------------------------------------------------------------------
185 # Module classes
185 # Module classes
186 class TBTools:
186 class TBTools:
187 """Basic tools used by all traceback printer classes."""
187 """Basic tools used by all traceback printer classes."""
188
188
189 def __init__(self,color_scheme = 'NoColor',call_pdb=False):
189 def __init__(self,color_scheme = 'NoColor',call_pdb=False):
190 # Whether to call the interactive pdb debugger after printing
190 # Whether to call the interactive pdb debugger after printing
191 # tracebacks or not
191 # tracebacks or not
192 self.call_pdb = call_pdb
192 self.call_pdb = call_pdb
193
193
194 # Create color table
194 # Create color table
195 self.color_scheme_table = ExceptionColors
195 self.color_scheme_table = ExceptionColors
196
196
197 self.set_colors(color_scheme)
197 self.set_colors(color_scheme)
198 self.old_scheme = color_scheme # save initial value for toggles
198 self.old_scheme = color_scheme # save initial value for toggles
199
199
200 if call_pdb:
200 if call_pdb:
201 self.pdb = Debugger.Pdb(self.color_scheme_table.active_scheme_name)
201 self.pdb = Debugger.Pdb(self.color_scheme_table.active_scheme_name)
202 else:
202 else:
203 self.pdb = None
203 self.pdb = None
204
204
205 def set_colors(self,*args,**kw):
205 def set_colors(self,*args,**kw):
206 """Shorthand access to the color table scheme selector method."""
206 """Shorthand access to the color table scheme selector method."""
207
207
208 # Set own color table
208 # Set own color table
209 self.color_scheme_table.set_active_scheme(*args,**kw)
209 self.color_scheme_table.set_active_scheme(*args,**kw)
210 # for convenience, set Colors to the active scheme
210 # for convenience, set Colors to the active scheme
211 self.Colors = self.color_scheme_table.active_colors
211 self.Colors = self.color_scheme_table.active_colors
212 # Also set colors of debugger
212 # Also set colors of debugger
213 if hasattr(self,'pdb') and self.pdb is not None:
213 if hasattr(self,'pdb') and self.pdb is not None:
214 self.pdb.set_colors(*args,**kw)
214 self.pdb.set_colors(*args,**kw)
215
215
216 def color_toggle(self):
216 def color_toggle(self):
217 """Toggle between the currently active color scheme and NoColor."""
217 """Toggle between the currently active color scheme and NoColor."""
218
218
219 if self.color_scheme_table.active_scheme_name == 'NoColor':
219 if self.color_scheme_table.active_scheme_name == 'NoColor':
220 self.color_scheme_table.set_active_scheme(self.old_scheme)
220 self.color_scheme_table.set_active_scheme(self.old_scheme)
221 self.Colors = self.color_scheme_table.active_colors
221 self.Colors = self.color_scheme_table.active_colors
222 else:
222 else:
223 self.old_scheme = self.color_scheme_table.active_scheme_name
223 self.old_scheme = self.color_scheme_table.active_scheme_name
224 self.color_scheme_table.set_active_scheme('NoColor')
224 self.color_scheme_table.set_active_scheme('NoColor')
225 self.Colors = self.color_scheme_table.active_colors
225 self.Colors = self.color_scheme_table.active_colors
226
226
227 #---------------------------------------------------------------------------
227 #---------------------------------------------------------------------------
228 class ListTB(TBTools):
228 class ListTB(TBTools):
229 """Print traceback information from a traceback list, with optional color.
229 """Print traceback information from a traceback list, with optional color.
230
230
231 Calling: requires 3 arguments:
231 Calling: requires 3 arguments:
232 (etype, evalue, elist)
232 (etype, evalue, elist)
233 as would be obtained by:
233 as would be obtained by:
234 etype, evalue, tb = sys.exc_info()
234 etype, evalue, tb = sys.exc_info()
235 if tb:
235 if tb:
236 elist = traceback.extract_tb(tb)
236 elist = traceback.extract_tb(tb)
237 else:
237 else:
238 elist = None
238 elist = None
239
239
240 It can thus be used by programs which need to process the traceback before
240 It can thus be used by programs which need to process the traceback before
241 printing (such as console replacements based on the code module from the
241 printing (such as console replacements based on the code module from the
242 standard library).
242 standard library).
243
243
244 Because they are meant to be called without a full traceback (only a
244 Because they are meant to be called without a full traceback (only a
245 list), instances of this class can't call the interactive pdb debugger."""
245 list), instances of this class can't call the interactive pdb debugger."""
246
246
247 def __init__(self,color_scheme = 'NoColor'):
247 def __init__(self,color_scheme = 'NoColor'):
248 TBTools.__init__(self,color_scheme = color_scheme,call_pdb=0)
248 TBTools.__init__(self,color_scheme = color_scheme,call_pdb=0)
249
249
250 def __call__(self, etype, value, elist):
250 def __call__(self, etype, value, elist):
251 Term.cout.flush()
252 Term.cerr.flush()
251 print >> Term.cerr, self.text(etype,value,elist)
253 print >> Term.cerr, self.text(etype,value,elist)
252
254
253 def text(self,etype, value, elist,context=5):
255 def text(self,etype, value, elist,context=5):
254 """Return a color formatted string with the traceback info."""
256 """Return a color formatted string with the traceback info."""
255
257
256 Colors = self.Colors
258 Colors = self.Colors
257 out_string = ['%s%s%s\n' % (Colors.topline,'-'*60,Colors.Normal)]
259 out_string = ['%s%s%s\n' % (Colors.topline,'-'*60,Colors.Normal)]
258 if elist:
260 if elist:
259 out_string.append('Traceback %s(most recent call last)%s:' % \
261 out_string.append('Traceback %s(most recent call last)%s:' % \
260 (Colors.normalEm, Colors.Normal) + '\n')
262 (Colors.normalEm, Colors.Normal) + '\n')
261 out_string.extend(self._format_list(elist))
263 out_string.extend(self._format_list(elist))
262 lines = self._format_exception_only(etype, value)
264 lines = self._format_exception_only(etype, value)
263 for line in lines[:-1]:
265 for line in lines[:-1]:
264 out_string.append(" "+line)
266 out_string.append(" "+line)
265 out_string.append(lines[-1])
267 out_string.append(lines[-1])
266 return ''.join(out_string)
268 return ''.join(out_string)
267
269
268 def _format_list(self, extracted_list):
270 def _format_list(self, extracted_list):
269 """Format a list of traceback entry tuples for printing.
271 """Format a list of traceback entry tuples for printing.
270
272
271 Given a list of tuples as returned by extract_tb() or
273 Given a list of tuples as returned by extract_tb() or
272 extract_stack(), return a list of strings ready for printing.
274 extract_stack(), return a list of strings ready for printing.
273 Each string in the resulting list corresponds to the item with the
275 Each string in the resulting list corresponds to the item with the
274 same index in the argument list. Each string ends in a newline;
276 same index in the argument list. Each string ends in a newline;
275 the strings may contain internal newlines as well, for those items
277 the strings may contain internal newlines as well, for those items
276 whose source text line is not None.
278 whose source text line is not None.
277
279
278 Lifted almost verbatim from traceback.py
280 Lifted almost verbatim from traceback.py
279 """
281 """
280
282
281 Colors = self.Colors
283 Colors = self.Colors
282 list = []
284 list = []
283 for filename, lineno, name, line in extracted_list[:-1]:
285 for filename, lineno, name, line in extracted_list[:-1]:
284 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
286 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
285 (Colors.filename, filename, Colors.Normal,
287 (Colors.filename, filename, Colors.Normal,
286 Colors.lineno, lineno, Colors.Normal,
288 Colors.lineno, lineno, Colors.Normal,
287 Colors.name, name, Colors.Normal)
289 Colors.name, name, Colors.Normal)
288 if line:
290 if line:
289 item = item + ' %s\n' % line.strip()
291 item = item + ' %s\n' % line.strip()
290 list.append(item)
292 list.append(item)
291 # Emphasize the last entry
293 # Emphasize the last entry
292 filename, lineno, name, line = extracted_list[-1]
294 filename, lineno, name, line = extracted_list[-1]
293 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
295 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
294 (Colors.normalEm,
296 (Colors.normalEm,
295 Colors.filenameEm, filename, Colors.normalEm,
297 Colors.filenameEm, filename, Colors.normalEm,
296 Colors.linenoEm, lineno, Colors.normalEm,
298 Colors.linenoEm, lineno, Colors.normalEm,
297 Colors.nameEm, name, Colors.normalEm,
299 Colors.nameEm, name, Colors.normalEm,
298 Colors.Normal)
300 Colors.Normal)
299 if line:
301 if line:
300 item = item + '%s %s%s\n' % (Colors.line, line.strip(),
302 item = item + '%s %s%s\n' % (Colors.line, line.strip(),
301 Colors.Normal)
303 Colors.Normal)
302 list.append(item)
304 list.append(item)
303 return list
305 return list
304
306
305 def _format_exception_only(self, etype, value):
307 def _format_exception_only(self, etype, value):
306 """Format the exception part of a traceback.
308 """Format the exception part of a traceback.
307
309
308 The arguments are the exception type and value such as given by
310 The arguments are the exception type and value such as given by
309 sys.exc_info()[:2]. The return value is a list of strings, each ending
311 sys.exc_info()[:2]. The return value is a list of strings, each ending
310 in a newline. Normally, the list contains a single string; however,
312 in a newline. Normally, the list contains a single string; however,
311 for SyntaxError exceptions, it contains several lines that (when
313 for SyntaxError exceptions, it contains several lines that (when
312 printed) display detailed information about where the syntax error
314 printed) display detailed information about where the syntax error
313 occurred. The message indicating which exception occurred is the
315 occurred. The message indicating which exception occurred is the
314 always last string in the list.
316 always last string in the list.
315
317
316 Also lifted nearly verbatim from traceback.py
318 Also lifted nearly verbatim from traceback.py
317 """
319 """
318
320
319 Colors = self.Colors
321 Colors = self.Colors
320 list = []
322 list = []
321 if type(etype) == types.ClassType:
323 if type(etype) == types.ClassType:
322 stype = Colors.excName + etype.__name__ + Colors.Normal
324 stype = Colors.excName + etype.__name__ + Colors.Normal
323 else:
325 else:
324 stype = etype # String exceptions don't get special coloring
326 stype = etype # String exceptions don't get special coloring
325 if value is None:
327 if value is None:
326 list.append( str(stype) + '\n')
328 list.append( str(stype) + '\n')
327 else:
329 else:
328 if etype is SyntaxError:
330 if etype is SyntaxError:
329 try:
331 try:
330 msg, (filename, lineno, offset, line) = value
332 msg, (filename, lineno, offset, line) = value
331 except:
333 except:
332 pass
334 pass
333 else:
335 else:
334 #print 'filename is',filename # dbg
336 #print 'filename is',filename # dbg
335 if not filename: filename = "<string>"
337 if not filename: filename = "<string>"
336 list.append('%s File %s"%s"%s, line %s%d%s\n' % \
338 list.append('%s File %s"%s"%s, line %s%d%s\n' % \
337 (Colors.normalEm,
339 (Colors.normalEm,
338 Colors.filenameEm, filename, Colors.normalEm,
340 Colors.filenameEm, filename, Colors.normalEm,
339 Colors.linenoEm, lineno, Colors.Normal ))
341 Colors.linenoEm, lineno, Colors.Normal ))
340 if line is not None:
342 if line is not None:
341 i = 0
343 i = 0
342 while i < len(line) and line[i].isspace():
344 while i < len(line) and line[i].isspace():
343 i = i+1
345 i = i+1
344 list.append('%s %s%s\n' % (Colors.line,
346 list.append('%s %s%s\n' % (Colors.line,
345 line.strip(),
347 line.strip(),
346 Colors.Normal))
348 Colors.Normal))
347 if offset is not None:
349 if offset is not None:
348 s = ' '
350 s = ' '
349 for c in line[i:offset-1]:
351 for c in line[i:offset-1]:
350 if c.isspace():
352 if c.isspace():
351 s = s + c
353 s = s + c
352 else:
354 else:
353 s = s + ' '
355 s = s + ' '
354 list.append('%s%s^%s\n' % (Colors.caret, s,
356 list.append('%s%s^%s\n' % (Colors.caret, s,
355 Colors.Normal) )
357 Colors.Normal) )
356 value = msg
358 value = msg
357 s = self._some_str(value)
359 s = self._some_str(value)
358 if s:
360 if s:
359 list.append('%s%s:%s %s\n' % (str(stype), Colors.excName,
361 list.append('%s%s:%s %s\n' % (str(stype), Colors.excName,
360 Colors.Normal, s))
362 Colors.Normal, s))
361 else:
363 else:
362 list.append('%s\n' % str(stype))
364 list.append('%s\n' % str(stype))
363 return list
365 return list
364
366
365 def _some_str(self, value):
367 def _some_str(self, value):
366 # Lifted from traceback.py
368 # Lifted from traceback.py
367 try:
369 try:
368 return str(value)
370 return str(value)
369 except:
371 except:
370 return '<unprintable %s object>' % type(value).__name__
372 return '<unprintable %s object>' % type(value).__name__
371
373
372 #----------------------------------------------------------------------------
374 #----------------------------------------------------------------------------
373 class VerboseTB(TBTools):
375 class VerboseTB(TBTools):
374 """A port of Ka-Ping Yee's cgitb.py module that outputs color text instead
376 """A port of Ka-Ping Yee's cgitb.py module that outputs color text instead
375 of HTML. Requires inspect and pydoc. Crazy, man.
377 of HTML. Requires inspect and pydoc. Crazy, man.
376
378
377 Modified version which optionally strips the topmost entries from the
379 Modified version which optionally strips the topmost entries from the
378 traceback, to be used with alternate interpreters (because their own code
380 traceback, to be used with alternate interpreters (because their own code
379 would appear in the traceback)."""
381 would appear in the traceback)."""
380
382
381 def __init__(self,color_scheme = 'Linux',tb_offset=0,long_header=0,
383 def __init__(self,color_scheme = 'Linux',tb_offset=0,long_header=0,
382 call_pdb = 0, include_vars=1):
384 call_pdb = 0, include_vars=1):
383 """Specify traceback offset, headers and color scheme.
385 """Specify traceback offset, headers and color scheme.
384
386
385 Define how many frames to drop from the tracebacks. Calling it with
387 Define how many frames to drop from the tracebacks. Calling it with
386 tb_offset=1 allows use of this handler in interpreters which will have
388 tb_offset=1 allows use of this handler in interpreters which will have
387 their own code at the top of the traceback (VerboseTB will first
389 their own code at the top of the traceback (VerboseTB will first
388 remove that frame before printing the traceback info)."""
390 remove that frame before printing the traceback info)."""
389 TBTools.__init__(self,color_scheme=color_scheme,call_pdb=call_pdb)
391 TBTools.__init__(self,color_scheme=color_scheme,call_pdb=call_pdb)
390 self.tb_offset = tb_offset
392 self.tb_offset = tb_offset
391 self.long_header = long_header
393 self.long_header = long_header
392 self.include_vars = include_vars
394 self.include_vars = include_vars
393
395
394 def text(self, etype, evalue, etb, context=5):
396 def text(self, etype, evalue, etb, context=5):
395 """Return a nice text document describing the traceback."""
397 """Return a nice text document describing the traceback."""
396
398
397 # some locals
399 # some locals
398 Colors = self.Colors # just a shorthand + quicker name lookup
400 Colors = self.Colors # just a shorthand + quicker name lookup
399 ColorsNormal = Colors.Normal # used a lot
401 ColorsNormal = Colors.Normal # used a lot
400 indent = ' '*INDENT_SIZE
402 indent = ' '*INDENT_SIZE
401 exc = '%s%s%s' % (Colors.excName, str(etype), ColorsNormal)
403 exc = '%s%s%s' % (Colors.excName, str(etype), ColorsNormal)
402 em_normal = '%s\n%s%s' % (Colors.valEm, indent,ColorsNormal)
404 em_normal = '%s\n%s%s' % (Colors.valEm, indent,ColorsNormal)
403 undefined = '%sundefined%s' % (Colors.em, ColorsNormal)
405 undefined = '%sundefined%s' % (Colors.em, ColorsNormal)
404
406
405 # some internal-use functions
407 # some internal-use functions
406 def text_repr(value):
408 def text_repr(value):
407 """Hopefully pretty robust repr equivalent."""
409 """Hopefully pretty robust repr equivalent."""
408 # this is pretty horrible but should always return *something*
410 # this is pretty horrible but should always return *something*
409 try:
411 try:
410 return pydoc.text.repr(value)
412 return pydoc.text.repr(value)
411 except KeyboardInterrupt:
413 except KeyboardInterrupt:
412 raise
414 raise
413 except:
415 except:
414 try:
416 try:
415 return repr(value)
417 return repr(value)
416 except KeyboardInterrupt:
418 except KeyboardInterrupt:
417 raise
419 raise
418 except:
420 except:
419 try:
421 try:
420 # all still in an except block so we catch
422 # all still in an except block so we catch
421 # getattr raising
423 # getattr raising
422 name = getattr(value, '__name__', None)
424 name = getattr(value, '__name__', None)
423 if name:
425 if name:
424 # ick, recursion
426 # ick, recursion
425 return text_repr(name)
427 return text_repr(name)
426 klass = getattr(value, '__class__', None)
428 klass = getattr(value, '__class__', None)
427 if klass:
429 if klass:
428 return '%s instance' % text_repr(klass)
430 return '%s instance' % text_repr(klass)
429 except KeyboardInterrupt:
431 except KeyboardInterrupt:
430 raise
432 raise
431 except:
433 except:
432 return 'UNRECOVERABLE REPR FAILURE'
434 return 'UNRECOVERABLE REPR FAILURE'
433 def eqrepr(value, repr=text_repr): return '=%s' % repr(value)
435 def eqrepr(value, repr=text_repr): return '=%s' % repr(value)
434 def nullrepr(value, repr=text_repr): return ''
436 def nullrepr(value, repr=text_repr): return ''
435
437
436 # meat of the code begins
438 # meat of the code begins
437 if type(etype) is types.ClassType:
439 if type(etype) is types.ClassType:
438 etype = etype.__name__
440 etype = etype.__name__
439
441
440 if self.long_header:
442 if self.long_header:
441 # Header with the exception type, python version, and date
443 # Header with the exception type, python version, and date
442 pyver = 'Python ' + string.split(sys.version)[0] + ': ' + sys.executable
444 pyver = 'Python ' + string.split(sys.version)[0] + ': ' + sys.executable
443 date = time.ctime(time.time())
445 date = time.ctime(time.time())
444
446
445 head = '%s%s%s\n%s%s%s\n%s' % (Colors.topline, '-'*75, ColorsNormal,
447 head = '%s%s%s\n%s%s%s\n%s' % (Colors.topline, '-'*75, ColorsNormal,
446 exc, ' '*(75-len(str(etype))-len(pyver)),
448 exc, ' '*(75-len(str(etype))-len(pyver)),
447 pyver, string.rjust(date, 75) )
449 pyver, string.rjust(date, 75) )
448 head += "\nA problem occured executing Python code. Here is the sequence of function"\
450 head += "\nA problem occured executing Python code. Here is the sequence of function"\
449 "\ncalls leading up to the error, with the most recent (innermost) call last."
451 "\ncalls leading up to the error, with the most recent (innermost) call last."
450 else:
452 else:
451 # Simplified header
453 # Simplified header
452 head = '%s%s%s\n%s%s' % (Colors.topline, '-'*75, ColorsNormal,exc,
454 head = '%s%s%s\n%s%s' % (Colors.topline, '-'*75, ColorsNormal,exc,
453 string.rjust('Traceback (most recent call last)',
455 string.rjust('Traceback (most recent call last)',
454 75 - len(str(etype)) ) )
456 75 - len(str(etype)) ) )
455 frames = []
457 frames = []
456 # Flush cache before calling inspect. This helps alleviate some of the
458 # Flush cache before calling inspect. This helps alleviate some of the
457 # problems with python 2.3's inspect.py.
459 # problems with python 2.3's inspect.py.
458 linecache.checkcache()
460 linecache.checkcache()
459 # Drop topmost frames if requested
461 # Drop topmost frames if requested
460 try:
462 try:
461 # Try the default getinnerframes and Alex's: Alex's fixes some
463 # Try the default getinnerframes and Alex's: Alex's fixes some
462 # problems, but it generates empty tracebacks for console errors
464 # problems, but it generates empty tracebacks for console errors
463 # (5 blanks lines) where none should be returned.
465 # (5 blanks lines) where none should be returned.
464 #records = inspect.getinnerframes(etb, context)[self.tb_offset:]
466 #records = inspect.getinnerframes(etb, context)[self.tb_offset:]
465 #print 'python records:', records # dbg
467 #print 'python records:', records # dbg
466 records = _fixed_getinnerframes(etb, context,self.tb_offset)
468 records = _fixed_getinnerframes(etb, context,self.tb_offset)
467 #print 'alex records:', records # dbg
469 #print 'alex records:', records # dbg
468 except:
470 except:
469
471
470 # FIXME: I've been getting many crash reports from python 2.3
472 # FIXME: I've been getting many crash reports from python 2.3
471 # users, traceable to inspect.py. If I can find a small test-case
473 # users, traceable to inspect.py. If I can find a small test-case
472 # to reproduce this, I should either write a better workaround or
474 # to reproduce this, I should either write a better workaround or
473 # file a bug report against inspect (if that's the real problem).
475 # file a bug report against inspect (if that's the real problem).
474 # So far, I haven't been able to find an isolated example to
476 # So far, I haven't been able to find an isolated example to
475 # reproduce the problem.
477 # reproduce the problem.
476 inspect_error()
478 inspect_error()
477 traceback.print_exc(file=Term.cerr)
479 traceback.print_exc(file=Term.cerr)
478 info('\nUnfortunately, your original traceback can not be constructed.\n')
480 info('\nUnfortunately, your original traceback can not be constructed.\n')
479 return ''
481 return ''
480
482
481 # build some color string templates outside these nested loops
483 # build some color string templates outside these nested loops
482 tpl_link = '%s%%s%s' % (Colors.filenameEm,ColorsNormal)
484 tpl_link = '%s%%s%s' % (Colors.filenameEm,ColorsNormal)
483 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
485 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
484 ColorsNormal)
486 ColorsNormal)
485 tpl_call_fail = 'in %s%%s%s(***failed resolving arguments***)%s' % \
487 tpl_call_fail = 'in %s%%s%s(***failed resolving arguments***)%s' % \
486 (Colors.vName, Colors.valEm, ColorsNormal)
488 (Colors.vName, Colors.valEm, ColorsNormal)
487 tpl_local_var = '%s%%s%s' % (Colors.vName, ColorsNormal)
489 tpl_local_var = '%s%%s%s' % (Colors.vName, ColorsNormal)
488 tpl_global_var = '%sglobal%s %s%%s%s' % (Colors.em, ColorsNormal,
490 tpl_global_var = '%sglobal%s %s%%s%s' % (Colors.em, ColorsNormal,
489 Colors.vName, ColorsNormal)
491 Colors.vName, ColorsNormal)
490 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
492 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
491 tpl_line = '%s%%s%s %%s' % (Colors.lineno, ColorsNormal)
493 tpl_line = '%s%%s%s %%s' % (Colors.lineno, ColorsNormal)
492 tpl_line_em = '%s%%s%s %%s%s' % (Colors.linenoEm,Colors.line,
494 tpl_line_em = '%s%%s%s %%s%s' % (Colors.linenoEm,Colors.line,
493 ColorsNormal)
495 ColorsNormal)
494
496
495 # now, loop over all records printing context and info
497 # now, loop over all records printing context and info
496 abspath = os.path.abspath
498 abspath = os.path.abspath
497 for frame, file, lnum, func, lines, index in records:
499 for frame, file, lnum, func, lines, index in records:
498 #print '*** record:',file,lnum,func,lines,index # dbg
500 #print '*** record:',file,lnum,func,lines,index # dbg
499 try:
501 try:
500 file = file and abspath(file) or '?'
502 file = file and abspath(file) or '?'
501 except OSError:
503 except OSError:
502 # if file is '<console>' or something not in the filesystem,
504 # if file is '<console>' or something not in the filesystem,
503 # the abspath call will throw an OSError. Just ignore it and
505 # the abspath call will throw an OSError. Just ignore it and
504 # keep the original file string.
506 # keep the original file string.
505 pass
507 pass
506 link = tpl_link % file
508 link = tpl_link % file
507 try:
509 try:
508 args, varargs, varkw, locals = inspect.getargvalues(frame)
510 args, varargs, varkw, locals = inspect.getargvalues(frame)
509 except:
511 except:
510 # This can happen due to a bug in python2.3. We should be
512 # This can happen due to a bug in python2.3. We should be
511 # able to remove this try/except when 2.4 becomes a
513 # able to remove this try/except when 2.4 becomes a
512 # requirement. Bug details at http://python.org/sf/1005466
514 # requirement. Bug details at http://python.org/sf/1005466
513 inspect_error()
515 inspect_error()
514 traceback.print_exc(file=Term.cerr)
516 traceback.print_exc(file=Term.cerr)
515 info("\nIPython's exception reporting continues...\n")
517 info("\nIPython's exception reporting continues...\n")
516
518
517 if func == '?':
519 if func == '?':
518 call = ''
520 call = ''
519 else:
521 else:
520 # Decide whether to include variable details or not
522 # Decide whether to include variable details or not
521 var_repr = self.include_vars and eqrepr or nullrepr
523 var_repr = self.include_vars and eqrepr or nullrepr
522 try:
524 try:
523 call = tpl_call % (func,inspect.formatargvalues(args,
525 call = tpl_call % (func,inspect.formatargvalues(args,
524 varargs, varkw,
526 varargs, varkw,
525 locals,formatvalue=var_repr))
527 locals,formatvalue=var_repr))
526 except KeyError:
528 except KeyError:
527 # Very odd crash from inspect.formatargvalues(). The
529 # Very odd crash from inspect.formatargvalues(). The
528 # scenario under which it appeared was a call to
530 # scenario under which it appeared was a call to
529 # view(array,scale) in NumTut.view.view(), where scale had
531 # view(array,scale) in NumTut.view.view(), where scale had
530 # been defined as a scalar (it should be a tuple). Somehow
532 # been defined as a scalar (it should be a tuple). Somehow
531 # inspect messes up resolving the argument list of view()
533 # inspect messes up resolving the argument list of view()
532 # and barfs out. At some point I should dig into this one
534 # and barfs out. At some point I should dig into this one
533 # and file a bug report about it.
535 # and file a bug report about it.
534 inspect_error()
536 inspect_error()
535 traceback.print_exc(file=Term.cerr)
537 traceback.print_exc(file=Term.cerr)
536 info("\nIPython's exception reporting continues...\n")
538 info("\nIPython's exception reporting continues...\n")
537 call = tpl_call_fail % func
539 call = tpl_call_fail % func
538
540
539 # Initialize a list of names on the current line, which the
541 # Initialize a list of names on the current line, which the
540 # tokenizer below will populate.
542 # tokenizer below will populate.
541 names = []
543 names = []
542
544
543 def tokeneater(token_type, token, start, end, line):
545 def tokeneater(token_type, token, start, end, line):
544 """Stateful tokeneater which builds dotted names.
546 """Stateful tokeneater which builds dotted names.
545
547
546 The list of names it appends to (from the enclosing scope) can
548 The list of names it appends to (from the enclosing scope) can
547 contain repeated composite names. This is unavoidable, since
549 contain repeated composite names. This is unavoidable, since
548 there is no way to disambguate partial dotted structures until
550 there is no way to disambguate partial dotted structures until
549 the full list is known. The caller is responsible for pruning
551 the full list is known. The caller is responsible for pruning
550 the final list of duplicates before using it."""
552 the final list of duplicates before using it."""
551
553
552 # build composite names
554 # build composite names
553 if token == '.':
555 if token == '.':
554 try:
556 try:
555 names[-1] += '.'
557 names[-1] += '.'
556 # store state so the next token is added for x.y.z names
558 # store state so the next token is added for x.y.z names
557 tokeneater.name_cont = True
559 tokeneater.name_cont = True
558 return
560 return
559 except IndexError:
561 except IndexError:
560 pass
562 pass
561 if token_type == tokenize.NAME and token not in keyword.kwlist:
563 if token_type == tokenize.NAME and token not in keyword.kwlist:
562 if tokeneater.name_cont:
564 if tokeneater.name_cont:
563 # Dotted names
565 # Dotted names
564 names[-1] += token
566 names[-1] += token
565 tokeneater.name_cont = False
567 tokeneater.name_cont = False
566 else:
568 else:
567 # Regular new names. We append everything, the caller
569 # Regular new names. We append everything, the caller
568 # will be responsible for pruning the list later. It's
570 # will be responsible for pruning the list later. It's
569 # very tricky to try to prune as we go, b/c composite
571 # very tricky to try to prune as we go, b/c composite
570 # names can fool us. The pruning at the end is easy
572 # names can fool us. The pruning at the end is easy
571 # to do (or the caller can print a list with repeated
573 # to do (or the caller can print a list with repeated
572 # names if so desired.
574 # names if so desired.
573 names.append(token)
575 names.append(token)
574 elif token_type == tokenize.NEWLINE:
576 elif token_type == tokenize.NEWLINE:
575 raise IndexError
577 raise IndexError
576 # we need to store a bit of state in the tokenizer to build
578 # we need to store a bit of state in the tokenizer to build
577 # dotted names
579 # dotted names
578 tokeneater.name_cont = False
580 tokeneater.name_cont = False
579
581
580 def linereader(file=file, lnum=[lnum], getline=linecache.getline):
582 def linereader(file=file, lnum=[lnum], getline=linecache.getline):
581 line = getline(file, lnum[0])
583 line = getline(file, lnum[0])
582 lnum[0] += 1
584 lnum[0] += 1
583 return line
585 return line
584
586
585 # Build the list of names on this line of code where the exception
587 # Build the list of names on this line of code where the exception
586 # occurred.
588 # occurred.
587 try:
589 try:
588 # This builds the names list in-place by capturing it from the
590 # This builds the names list in-place by capturing it from the
589 # enclosing scope.
591 # enclosing scope.
590 tokenize.tokenize(linereader, tokeneater)
592 tokenize.tokenize(linereader, tokeneater)
591 except IndexError:
593 except IndexError:
592 # signals exit of tokenizer
594 # signals exit of tokenizer
593 pass
595 pass
594 except tokenize.TokenError,msg:
596 except tokenize.TokenError,msg:
595 _m = ("An unexpected error occurred while tokenizing input\n"
597 _m = ("An unexpected error occurred while tokenizing input\n"
596 "The following traceback may be corrupted or invalid\n"
598 "The following traceback may be corrupted or invalid\n"
597 "The error message is: %s\n" % msg)
599 "The error message is: %s\n" % msg)
598 error(_m)
600 error(_m)
599
601
600 # prune names list of duplicates, but keep the right order
602 # prune names list of duplicates, but keep the right order
601 unique_names = uniq_stable(names)
603 unique_names = uniq_stable(names)
602
604
603 # Start loop over vars
605 # Start loop over vars
604 lvals = []
606 lvals = []
605 if self.include_vars:
607 if self.include_vars:
606 for name_full in unique_names:
608 for name_full in unique_names:
607 name_base = name_full.split('.',1)[0]
609 name_base = name_full.split('.',1)[0]
608 if name_base in frame.f_code.co_varnames:
610 if name_base in frame.f_code.co_varnames:
609 if locals.has_key(name_base):
611 if locals.has_key(name_base):
610 try:
612 try:
611 value = repr(eval(name_full,locals))
613 value = repr(eval(name_full,locals))
612 except:
614 except:
613 value = undefined
615 value = undefined
614 else:
616 else:
615 value = undefined
617 value = undefined
616 name = tpl_local_var % name_full
618 name = tpl_local_var % name_full
617 else:
619 else:
618 if frame.f_globals.has_key(name_base):
620 if frame.f_globals.has_key(name_base):
619 try:
621 try:
620 value = repr(eval(name_full,frame.f_globals))
622 value = repr(eval(name_full,frame.f_globals))
621 except:
623 except:
622 value = undefined
624 value = undefined
623 else:
625 else:
624 value = undefined
626 value = undefined
625 name = tpl_global_var % name_full
627 name = tpl_global_var % name_full
626 lvals.append(tpl_name_val % (name,value))
628 lvals.append(tpl_name_val % (name,value))
627 if lvals:
629 if lvals:
628 lvals = '%s%s' % (indent,em_normal.join(lvals))
630 lvals = '%s%s' % (indent,em_normal.join(lvals))
629 else:
631 else:
630 lvals = ''
632 lvals = ''
631
633
632 level = '%s %s\n' % (link,call)
634 level = '%s %s\n' % (link,call)
633
635
634 if index is None:
636 if index is None:
635 frames.append(level)
637 frames.append(level)
636 else:
638 else:
637 frames.append('%s%s' % (level,''.join(
639 frames.append('%s%s' % (level,''.join(
638 _formatTracebackLines(lnum,index,lines,self.Colors,lvals))))
640 _formatTracebackLines(lnum,index,lines,self.Colors,lvals))))
639
641
640 # Get (safely) a string form of the exception info
642 # Get (safely) a string form of the exception info
641 try:
643 try:
642 etype_str,evalue_str = map(str,(etype,evalue))
644 etype_str,evalue_str = map(str,(etype,evalue))
643 except:
645 except:
644 # User exception is improperly defined.
646 # User exception is improperly defined.
645 etype,evalue = str,sys.exc_info()[:2]
647 etype,evalue = str,sys.exc_info()[:2]
646 etype_str,evalue_str = map(str,(etype,evalue))
648 etype_str,evalue_str = map(str,(etype,evalue))
647 # ... and format it
649 # ... and format it
648 exception = ['%s%s%s: %s' % (Colors.excName, etype_str,
650 exception = ['%s%s%s: %s' % (Colors.excName, etype_str,
649 ColorsNormal, evalue_str)]
651 ColorsNormal, evalue_str)]
650 if type(evalue) is types.InstanceType:
652 if type(evalue) is types.InstanceType:
651 try:
653 try:
652 names = [w for w in dir(evalue) if isinstance(w, basestring)]
654 names = [w for w in dir(evalue) if isinstance(w, basestring)]
653 except:
655 except:
654 # Every now and then, an object with funny inernals blows up
656 # Every now and then, an object with funny inernals blows up
655 # when dir() is called on it. We do the best we can to report
657 # when dir() is called on it. We do the best we can to report
656 # the problem and continue
658 # the problem and continue
657 _m = '%sException reporting error (object with broken dir())%s:'
659 _m = '%sException reporting error (object with broken dir())%s:'
658 exception.append(_m % (Colors.excName,ColorsNormal))
660 exception.append(_m % (Colors.excName,ColorsNormal))
659 etype_str,evalue_str = map(str,sys.exc_info()[:2])
661 etype_str,evalue_str = map(str,sys.exc_info()[:2])
660 exception.append('%s%s%s: %s' % (Colors.excName,etype_str,
662 exception.append('%s%s%s: %s' % (Colors.excName,etype_str,
661 ColorsNormal, evalue_str))
663 ColorsNormal, evalue_str))
662 names = []
664 names = []
663 for name in names:
665 for name in names:
664 value = text_repr(getattr(evalue, name))
666 value = text_repr(getattr(evalue, name))
665 exception.append('\n%s%s = %s' % (indent, name, value))
667 exception.append('\n%s%s = %s' % (indent, name, value))
666 # return all our info assembled as a single string
668 # return all our info assembled as a single string
667 return '%s\n\n%s\n%s' % (head,'\n'.join(frames),''.join(exception[0]) )
669 return '%s\n\n%s\n%s' % (head,'\n'.join(frames),''.join(exception[0]) )
668
670
669 def debugger(self,force=False):
671 def debugger(self,force=False):
670 """Call up the pdb debugger if desired, always clean up the tb
672 """Call up the pdb debugger if desired, always clean up the tb
671 reference.
673 reference.
672
674
673 Keywords:
675 Keywords:
674
676
675 - force(False): by default, this routine checks the instance call_pdb
677 - force(False): by default, this routine checks the instance call_pdb
676 flag and does not actually invoke the debugger if the flag is false.
678 flag and does not actually invoke the debugger if the flag is false.
677 The 'force' option forces the debugger to activate even if the flag
679 The 'force' option forces the debugger to activate even if the flag
678 is false.
680 is false.
679
681
680 If the call_pdb flag is set, the pdb interactive debugger is
682 If the call_pdb flag is set, the pdb interactive debugger is
681 invoked. In all cases, the self.tb reference to the current traceback
683 invoked. In all cases, the self.tb reference to the current traceback
682 is deleted to prevent lingering references which hamper memory
684 is deleted to prevent lingering references which hamper memory
683 management.
685 management.
684
686
685 Note that each call to pdb() does an 'import readline', so if your app
687 Note that each call to pdb() does an 'import readline', so if your app
686 requires a special setup for the readline completers, you'll have to
688 requires a special setup for the readline completers, you'll have to
687 fix that by hand after invoking the exception handler."""
689 fix that by hand after invoking the exception handler."""
688
690
689 if force or self.call_pdb:
691 if force or self.call_pdb:
690 if self.pdb is None:
692 if self.pdb is None:
691 self.pdb = Debugger.Pdb(
693 self.pdb = Debugger.Pdb(
692 self.color_scheme_table.active_scheme_name)
694 self.color_scheme_table.active_scheme_name)
693 # the system displayhook may have changed, restore the original
695 # the system displayhook may have changed, restore the original
694 # for pdb
696 # for pdb
695 dhook = sys.displayhook
697 dhook = sys.displayhook
696 sys.displayhook = sys.__displayhook__
698 sys.displayhook = sys.__displayhook__
697 self.pdb.reset()
699 self.pdb.reset()
698 # Find the right frame so we don't pop up inside ipython itself
700 # Find the right frame so we don't pop up inside ipython itself
699 if hasattr(self,'tb'):
701 if hasattr(self,'tb'):
700 etb = self.tb
702 etb = self.tb
701 else:
703 else:
702 etb = self.tb = sys.last_traceback
704 etb = self.tb = sys.last_traceback
703 while self.tb.tb_next is not None:
705 while self.tb.tb_next is not None:
704 self.tb = self.tb.tb_next
706 self.tb = self.tb.tb_next
705 try:
707 try:
706 if etb and etb.tb_next:
708 if etb and etb.tb_next:
707 etb = etb.tb_next
709 etb = etb.tb_next
708 self.pdb.botframe = etb.tb_frame
710 self.pdb.botframe = etb.tb_frame
709 self.pdb.interaction(self.tb.tb_frame, self.tb)
711 self.pdb.interaction(self.tb.tb_frame, self.tb)
710 finally:
712 finally:
711 sys.displayhook = dhook
713 sys.displayhook = dhook
712
714
713 if hasattr(self,'tb'):
715 if hasattr(self,'tb'):
714 del self.tb
716 del self.tb
715
717
716 def handler(self, info=None):
718 def handler(self, info=None):
717 (etype, evalue, etb) = info or sys.exc_info()
719 (etype, evalue, etb) = info or sys.exc_info()
718 self.tb = etb
720 self.tb = etb
721 Term.cout.flush()
722 Term.cerr.flush()
719 print >> Term.cerr, self.text(etype, evalue, etb)
723 print >> Term.cerr, self.text(etype, evalue, etb)
720
724
721 # Changed so an instance can just be called as VerboseTB_inst() and print
725 # Changed so an instance can just be called as VerboseTB_inst() and print
722 # out the right info on its own.
726 # out the right info on its own.
723 def __call__(self, etype=None, evalue=None, etb=None):
727 def __call__(self, etype=None, evalue=None, etb=None):
724 """This hook can replace sys.excepthook (for Python 2.1 or higher)."""
728 """This hook can replace sys.excepthook (for Python 2.1 or higher)."""
725 if etb is None:
729 if etb is None:
726 self.handler()
730 self.handler()
727 else:
731 else:
728 self.handler((etype, evalue, etb))
732 self.handler((etype, evalue, etb))
729 self.debugger()
733 self.debugger()
730
734
731 #----------------------------------------------------------------------------
735 #----------------------------------------------------------------------------
732 class FormattedTB(VerboseTB,ListTB):
736 class FormattedTB(VerboseTB,ListTB):
733 """Subclass ListTB but allow calling with a traceback.
737 """Subclass ListTB but allow calling with a traceback.
734
738
735 It can thus be used as a sys.excepthook for Python > 2.1.
739 It can thus be used as a sys.excepthook for Python > 2.1.
736
740
737 Also adds 'Context' and 'Verbose' modes, not available in ListTB.
741 Also adds 'Context' and 'Verbose' modes, not available in ListTB.
738
742
739 Allows a tb_offset to be specified. This is useful for situations where
743 Allows a tb_offset to be specified. This is useful for situations where
740 one needs to remove a number of topmost frames from the traceback (such as
744 one needs to remove a number of topmost frames from the traceback (such as
741 occurs with python programs that themselves execute other python code,
745 occurs with python programs that themselves execute other python code,
742 like Python shells). """
746 like Python shells). """
743
747
744 def __init__(self, mode = 'Plain', color_scheme='Linux',
748 def __init__(self, mode = 'Plain', color_scheme='Linux',
745 tb_offset = 0,long_header=0,call_pdb=0,include_vars=0):
749 tb_offset = 0,long_header=0,call_pdb=0,include_vars=0):
746
750
747 # NEVER change the order of this list. Put new modes at the end:
751 # NEVER change the order of this list. Put new modes at the end:
748 self.valid_modes = ['Plain','Context','Verbose']
752 self.valid_modes = ['Plain','Context','Verbose']
749 self.verbose_modes = self.valid_modes[1:3]
753 self.verbose_modes = self.valid_modes[1:3]
750
754
751 VerboseTB.__init__(self,color_scheme,tb_offset,long_header,
755 VerboseTB.__init__(self,color_scheme,tb_offset,long_header,
752 call_pdb=call_pdb,include_vars=include_vars)
756 call_pdb=call_pdb,include_vars=include_vars)
753 self.set_mode(mode)
757 self.set_mode(mode)
754
758
755 def _extract_tb(self,tb):
759 def _extract_tb(self,tb):
756 if tb:
760 if tb:
757 return traceback.extract_tb(tb)
761 return traceback.extract_tb(tb)
758 else:
762 else:
759 return None
763 return None
760
764
761 def text(self, etype, value, tb,context=5,mode=None):
765 def text(self, etype, value, tb,context=5,mode=None):
762 """Return formatted traceback.
766 """Return formatted traceback.
763
767
764 If the optional mode parameter is given, it overrides the current
768 If the optional mode parameter is given, it overrides the current
765 mode."""
769 mode."""
766
770
767 if mode is None:
771 if mode is None:
768 mode = self.mode
772 mode = self.mode
769 if mode in self.verbose_modes:
773 if mode in self.verbose_modes:
770 # verbose modes need a full traceback
774 # verbose modes need a full traceback
771 return VerboseTB.text(self,etype, value, tb,context=5)
775 return VerboseTB.text(self,etype, value, tb,context=5)
772 else:
776 else:
773 # We must check the source cache because otherwise we can print
777 # We must check the source cache because otherwise we can print
774 # out-of-date source code.
778 # out-of-date source code.
775 linecache.checkcache()
779 linecache.checkcache()
776 # Now we can extract and format the exception
780 # Now we can extract and format the exception
777 elist = self._extract_tb(tb)
781 elist = self._extract_tb(tb)
778 if len(elist) > self.tb_offset:
782 if len(elist) > self.tb_offset:
779 del elist[:self.tb_offset]
783 del elist[:self.tb_offset]
780 return ListTB.text(self,etype,value,elist)
784 return ListTB.text(self,etype,value,elist)
781
785
782 def set_mode(self,mode=None):
786 def set_mode(self,mode=None):
783 """Switch to the desired mode.
787 """Switch to the desired mode.
784
788
785 If mode is not specified, cycles through the available modes."""
789 If mode is not specified, cycles through the available modes."""
786
790
787 if not mode:
791 if not mode:
788 new_idx = ( self.valid_modes.index(self.mode) + 1 ) % \
792 new_idx = ( self.valid_modes.index(self.mode) + 1 ) % \
789 len(self.valid_modes)
793 len(self.valid_modes)
790 self.mode = self.valid_modes[new_idx]
794 self.mode = self.valid_modes[new_idx]
791 elif mode not in self.valid_modes:
795 elif mode not in self.valid_modes:
792 raise ValueError, 'Unrecognized mode in FormattedTB: <'+mode+'>\n'\
796 raise ValueError, 'Unrecognized mode in FormattedTB: <'+mode+'>\n'\
793 'Valid modes: '+str(self.valid_modes)
797 'Valid modes: '+str(self.valid_modes)
794 else:
798 else:
795 self.mode = mode
799 self.mode = mode
796 # include variable details only in 'Verbose' mode
800 # include variable details only in 'Verbose' mode
797 self.include_vars = (self.mode == self.valid_modes[2])
801 self.include_vars = (self.mode == self.valid_modes[2])
798
802
799 # some convenient shorcuts
803 # some convenient shorcuts
800 def plain(self):
804 def plain(self):
801 self.set_mode(self.valid_modes[0])
805 self.set_mode(self.valid_modes[0])
802
806
803 def context(self):
807 def context(self):
804 self.set_mode(self.valid_modes[1])
808 self.set_mode(self.valid_modes[1])
805
809
806 def verbose(self):
810 def verbose(self):
807 self.set_mode(self.valid_modes[2])
811 self.set_mode(self.valid_modes[2])
808
812
809 #----------------------------------------------------------------------------
813 #----------------------------------------------------------------------------
810 class AutoFormattedTB(FormattedTB):
814 class AutoFormattedTB(FormattedTB):
811 """A traceback printer which can be called on the fly.
815 """A traceback printer which can be called on the fly.
812
816
813 It will find out about exceptions by itself.
817 It will find out about exceptions by itself.
814
818
815 A brief example:
819 A brief example:
816
820
817 AutoTB = AutoFormattedTB(mode = 'Verbose',color_scheme='Linux')
821 AutoTB = AutoFormattedTB(mode = 'Verbose',color_scheme='Linux')
818 try:
822 try:
819 ...
823 ...
820 except:
824 except:
821 AutoTB() # or AutoTB(out=logfile) where logfile is an open file object
825 AutoTB() # or AutoTB(out=logfile) where logfile is an open file object
822 """
826 """
823 def __call__(self,etype=None,evalue=None,etb=None,
827 def __call__(self,etype=None,evalue=None,etb=None,
824 out=None,tb_offset=None):
828 out=None,tb_offset=None):
825 """Print out a formatted exception traceback.
829 """Print out a formatted exception traceback.
826
830
827 Optional arguments:
831 Optional arguments:
828 - out: an open file-like object to direct output to.
832 - out: an open file-like object to direct output to.
829
833
830 - tb_offset: the number of frames to skip over in the stack, on a
834 - tb_offset: the number of frames to skip over in the stack, on a
831 per-call basis (this overrides temporarily the instance's tb_offset
835 per-call basis (this overrides temporarily the instance's tb_offset
832 given at initialization time. """
836 given at initialization time. """
833
837
834 if out is None:
838 if out is None:
835 out = Term.cerr
839 out = Term.cerr
840 Term.cout.flush()
841 out.flush()
836 if tb_offset is not None:
842 if tb_offset is not None:
837 tb_offset, self.tb_offset = self.tb_offset, tb_offset
843 tb_offset, self.tb_offset = self.tb_offset, tb_offset
838 print >> out, self.text(etype, evalue, etb)
844 print >> out, self.text(etype, evalue, etb)
839 self.tb_offset = tb_offset
845 self.tb_offset = tb_offset
840 else:
846 else:
841 print >> out, self.text(etype, evalue, etb)
847 print >> out, self.text(etype, evalue, etb)
842 self.debugger()
848 self.debugger()
843
849
844 def text(self,etype=None,value=None,tb=None,context=5,mode=None):
850 def text(self,etype=None,value=None,tb=None,context=5,mode=None):
845 if etype is None:
851 if etype is None:
846 etype,value,tb = sys.exc_info()
852 etype,value,tb = sys.exc_info()
847 self.tb = tb
853 self.tb = tb
848 return FormattedTB.text(self,etype,value,tb,context=5,mode=mode)
854 return FormattedTB.text(self,etype,value,tb,context=5,mode=mode)
849
855
850 #---------------------------------------------------------------------------
856 #---------------------------------------------------------------------------
851 # A simple class to preserve Nathan's original functionality.
857 # A simple class to preserve Nathan's original functionality.
852 class ColorTB(FormattedTB):
858 class ColorTB(FormattedTB):
853 """Shorthand to initialize a FormattedTB in Linux colors mode."""
859 """Shorthand to initialize a FormattedTB in Linux colors mode."""
854 def __init__(self,color_scheme='Linux',call_pdb=0):
860 def __init__(self,color_scheme='Linux',call_pdb=0):
855 FormattedTB.__init__(self,color_scheme=color_scheme,
861 FormattedTB.__init__(self,color_scheme=color_scheme,
856 call_pdb=call_pdb)
862 call_pdb=call_pdb)
857
863
858 #----------------------------------------------------------------------------
864 #----------------------------------------------------------------------------
859 # module testing (minimal)
865 # module testing (minimal)
860 if __name__ == "__main__":
866 if __name__ == "__main__":
861 def spam(c, (d, e)):
867 def spam(c, (d, e)):
862 x = c + d
868 x = c + d
863 y = c * d
869 y = c * d
864 foo(x, y)
870 foo(x, y)
865
871
866 def foo(a, b, bar=1):
872 def foo(a, b, bar=1):
867 eggs(a, b + bar)
873 eggs(a, b + bar)
868
874
869 def eggs(f, g, z=globals()):
875 def eggs(f, g, z=globals()):
870 h = f + g
876 h = f + g
871 i = f - g
877 i = f - g
872 return h / i
878 return h / i
873
879
874 print ''
880 print ''
875 print '*** Before ***'
881 print '*** Before ***'
876 try:
882 try:
877 print spam(1, (2, 3))
883 print spam(1, (2, 3))
878 except:
884 except:
879 traceback.print_exc()
885 traceback.print_exc()
880 print ''
886 print ''
881
887
882 handler = ColorTB()
888 handler = ColorTB()
883 print '*** ColorTB ***'
889 print '*** ColorTB ***'
884 try:
890 try:
885 print spam(1, (2, 3))
891 print spam(1, (2, 3))
886 except:
892 except:
887 apply(handler, sys.exc_info() )
893 apply(handler, sys.exc_info() )
888 print ''
894 print ''
889
895
890 handler = VerboseTB()
896 handler = VerboseTB()
891 print '*** VerboseTB ***'
897 print '*** VerboseTB ***'
892 try:
898 try:
893 print spam(1, (2, 3))
899 print spam(1, (2, 3))
894 except:
900 except:
895 apply(handler, sys.exc_info() )
901 apply(handler, sys.exc_info() )
896 print ''
902 print ''
897
903
@@ -1,6156 +1,6162 b''
1 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
4 all output streams before printing tracebacks. This ensures that
5 user output doesn't end up interleaved with traceback output.
6
1 2007-01-10 Ville Vainio <vivainio@gmail.com>
7 2007-01-10 Ville Vainio <vivainio@gmail.com>
2
8
3 * Extensions/envpersist.py: Turbocharged %env that remembers
9 * Extensions/envpersist.py: Turbocharged %env that remembers
4 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
10 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
5 "%env VISUAL=jed".
11 "%env VISUAL=jed".
6
12
7 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
13 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
8
14
9 * IPython/iplib.py (showtraceback): ensure that we correctly call
15 * IPython/iplib.py (showtraceback): ensure that we correctly call
10 custom handlers in all cases (some with pdb were slipping through,
16 custom handlers in all cases (some with pdb were slipping through,
11 but I'm not exactly sure why).
17 but I'm not exactly sure why).
12
18
13 * IPython/Debugger.py (Tracer.__init__): added new class to
19 * IPython/Debugger.py (Tracer.__init__): added new class to
14 support set_trace-like usage of IPython's enhanced debugger.
20 support set_trace-like usage of IPython's enhanced debugger.
15
21
16 2006-12-24 Ville Vainio <vivainio@gmail.com>
22 2006-12-24 Ville Vainio <vivainio@gmail.com>
17
23
18 * ipmaker.py: more informative message when ipy_user_conf
24 * ipmaker.py: more informative message when ipy_user_conf
19 import fails (suggest running %upgrade).
25 import fails (suggest running %upgrade).
20
26
21 * tools/run_ipy_in_profiler.py: Utility to see where
27 * tools/run_ipy_in_profiler.py: Utility to see where
22 the time during IPython startup is spent.
28 the time during IPython startup is spent.
23
29
24 2006-12-20 Ville Vainio <vivainio@gmail.com>
30 2006-12-20 Ville Vainio <vivainio@gmail.com>
25
31
26 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
32 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
27
33
28 * ipapi.py: Add new ipapi method, expand_alias.
34 * ipapi.py: Add new ipapi method, expand_alias.
29
35
30 * Release.py: Bump up version to 0.7.4.svn
36 * Release.py: Bump up version to 0.7.4.svn
31
37
32 2006-12-17 Ville Vainio <vivainio@gmail.com>
38 2006-12-17 Ville Vainio <vivainio@gmail.com>
33
39
34 * Extensions/jobctrl.py: Fixed &cmd arg arg...
40 * Extensions/jobctrl.py: Fixed &cmd arg arg...
35 to work properly on posix too
41 to work properly on posix too
36
42
37 * Release.py: Update revnum (version is still just 0.7.3).
43 * Release.py: Update revnum (version is still just 0.7.3).
38
44
39 2006-12-15 Ville Vainio <vivainio@gmail.com>
45 2006-12-15 Ville Vainio <vivainio@gmail.com>
40
46
41 * scripts/ipython_win_post_install: create ipython.py in
47 * scripts/ipython_win_post_install: create ipython.py in
42 prefix + "/scripts".
48 prefix + "/scripts".
43
49
44 * Release.py: Update version to 0.7.3.
50 * Release.py: Update version to 0.7.3.
45
51
46 2006-12-14 Ville Vainio <vivainio@gmail.com>
52 2006-12-14 Ville Vainio <vivainio@gmail.com>
47
53
48 * scripts/ipython_win_post_install: Overwrite old shortcuts
54 * scripts/ipython_win_post_install: Overwrite old shortcuts
49 if they already exist
55 if they already exist
50
56
51 * Release.py: release 0.7.3rc2
57 * Release.py: release 0.7.3rc2
52
58
53 2006-12-13 Ville Vainio <vivainio@gmail.com>
59 2006-12-13 Ville Vainio <vivainio@gmail.com>
54
60
55 * Branch and update Release.py for 0.7.3rc1
61 * Branch and update Release.py for 0.7.3rc1
56
62
57 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
63 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
58
64
59 * IPython/Shell.py (IPShellWX): update for current WX naming
65 * IPython/Shell.py (IPShellWX): update for current WX naming
60 conventions, to avoid a deprecation warning with current WX
66 conventions, to avoid a deprecation warning with current WX
61 versions. Thanks to a report by Danny Shevitz.
67 versions. Thanks to a report by Danny Shevitz.
62
68
63 2006-12-12 Ville Vainio <vivainio@gmail.com>
69 2006-12-12 Ville Vainio <vivainio@gmail.com>
64
70
65 * ipmaker.py: apply david cournapeau's patch to make
71 * ipmaker.py: apply david cournapeau's patch to make
66 import_some work properly even when ipythonrc does
72 import_some work properly even when ipythonrc does
67 import_some on empty list (it was an old bug!).
73 import_some on empty list (it was an old bug!).
68
74
69 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
75 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
70 Add deprecation note to ipythonrc and a url to wiki
76 Add deprecation note to ipythonrc and a url to wiki
71 in ipy_user_conf.py
77 in ipy_user_conf.py
72
78
73
79
74 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
80 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
75 as if it was typed on IPython command prompt, i.e.
81 as if it was typed on IPython command prompt, i.e.
76 as IPython script.
82 as IPython script.
77
83
78 * example-magic.py, magic_grepl.py: remove outdated examples
84 * example-magic.py, magic_grepl.py: remove outdated examples
79
85
80 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
86 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
81
87
82 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
88 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
83 is called before any exception has occurred.
89 is called before any exception has occurred.
84
90
85 2006-12-08 Ville Vainio <vivainio@gmail.com>
91 2006-12-08 Ville Vainio <vivainio@gmail.com>
86
92
87 * Extensions/ipy_stock_completers.py.py: fix cd completer
93 * Extensions/ipy_stock_completers.py.py: fix cd completer
88 to translate /'s to \'s again.
94 to translate /'s to \'s again.
89
95
90 * completer.py: prevent traceback on file completions w/
96 * completer.py: prevent traceback on file completions w/
91 backslash.
97 backslash.
92
98
93 * Release.py: Update release number to 0.7.3b3 for release
99 * Release.py: Update release number to 0.7.3b3 for release
94
100
95 2006-12-07 Ville Vainio <vivainio@gmail.com>
101 2006-12-07 Ville Vainio <vivainio@gmail.com>
96
102
97 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
103 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
98 while executing external code. Provides more shell-like behaviour
104 while executing external code. Provides more shell-like behaviour
99 and overall better response to ctrl + C / ctrl + break.
105 and overall better response to ctrl + C / ctrl + break.
100
106
101 * tools/make_tarball.py: new script to create tarball straight from svn
107 * tools/make_tarball.py: new script to create tarball straight from svn
102 (setup.py sdist doesn't work on win32).
108 (setup.py sdist doesn't work on win32).
103
109
104 * Extensions/ipy_stock_completers.py: fix cd completer to give up
110 * Extensions/ipy_stock_completers.py: fix cd completer to give up
105 on dirnames with spaces and use the default completer instead.
111 on dirnames with spaces and use the default completer instead.
106
112
107 * Revision.py: Change version to 0.7.3b2 for release.
113 * Revision.py: Change version to 0.7.3b2 for release.
108
114
109 2006-12-05 Ville Vainio <vivainio@gmail.com>
115 2006-12-05 Ville Vainio <vivainio@gmail.com>
110
116
111 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
117 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
112 pydb patch 4 (rm debug printing, py 2.5 checking)
118 pydb patch 4 (rm debug printing, py 2.5 checking)
113
119
114 2006-11-30 Walter Doerwald <walter@livinglogic.de>
120 2006-11-30 Walter Doerwald <walter@livinglogic.de>
115 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
121 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
116 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
122 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
117 "refreshfind" (mapped to "R") does the same but tries to go back to the same
123 "refreshfind" (mapped to "R") does the same but tries to go back to the same
118 object the cursor was on before the refresh. The command "markrange" is
124 object the cursor was on before the refresh. The command "markrange" is
119 mapped to "%" now.
125 mapped to "%" now.
120 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
126 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
121
127
122 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
128 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
123
129
124 * IPython/Magic.py (magic_debug): new %debug magic to activate the
130 * IPython/Magic.py (magic_debug): new %debug magic to activate the
125 interactive debugger on the last traceback, without having to call
131 interactive debugger on the last traceback, without having to call
126 %pdb and rerun your code. Made minor changes in various modules,
132 %pdb and rerun your code. Made minor changes in various modules,
127 should automatically recognize pydb if available.
133 should automatically recognize pydb if available.
128
134
129 2006-11-28 Ville Vainio <vivainio@gmail.com>
135 2006-11-28 Ville Vainio <vivainio@gmail.com>
130
136
131 * completer.py: If the text start with !, show file completions
137 * completer.py: If the text start with !, show file completions
132 properly. This helps when trying to complete command name
138 properly. This helps when trying to complete command name
133 for shell escapes.
139 for shell escapes.
134
140
135 2006-11-27 Ville Vainio <vivainio@gmail.com>
141 2006-11-27 Ville Vainio <vivainio@gmail.com>
136
142
137 * ipy_stock_completers.py: bzr completer submitted by Stefan van
143 * ipy_stock_completers.py: bzr completer submitted by Stefan van
138 der Walt. Clean up svn and hg completers by using a common
144 der Walt. Clean up svn and hg completers by using a common
139 vcs_completer.
145 vcs_completer.
140
146
141 2006-11-26 Ville Vainio <vivainio@gmail.com>
147 2006-11-26 Ville Vainio <vivainio@gmail.com>
142
148
143 * Remove ipconfig and %config; you should use _ip.options structure
149 * Remove ipconfig and %config; you should use _ip.options structure
144 directly instead!
150 directly instead!
145
151
146 * genutils.py: add wrap_deprecated function for deprecating callables
152 * genutils.py: add wrap_deprecated function for deprecating callables
147
153
148 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
154 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
149 _ip.system instead. ipalias is redundant.
155 _ip.system instead. ipalias is redundant.
150
156
151 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
157 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
152 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
158 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
153 explicit.
159 explicit.
154
160
155 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
161 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
156 completer. Try it by entering 'hg ' and pressing tab.
162 completer. Try it by entering 'hg ' and pressing tab.
157
163
158 * macro.py: Give Macro a useful __repr__ method
164 * macro.py: Give Macro a useful __repr__ method
159
165
160 * Magic.py: %whos abbreviates the typename of Macro for brevity.
166 * Magic.py: %whos abbreviates the typename of Macro for brevity.
161
167
162 2006-11-24 Walter Doerwald <walter@livinglogic.de>
168 2006-11-24 Walter Doerwald <walter@livinglogic.de>
163 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
169 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
164 we don't get a duplicate ipipe module, where registration of the xrepr
170 we don't get a duplicate ipipe module, where registration of the xrepr
165 implementation for Text is useless.
171 implementation for Text is useless.
166
172
167 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
173 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
168
174
169 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
175 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
170
176
171 2006-11-24 Ville Vainio <vivainio@gmail.com>
177 2006-11-24 Ville Vainio <vivainio@gmail.com>
172
178
173 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
179 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
174 try to use "cProfile" instead of the slower pure python
180 try to use "cProfile" instead of the slower pure python
175 "profile"
181 "profile"
176
182
177 2006-11-23 Ville Vainio <vivainio@gmail.com>
183 2006-11-23 Ville Vainio <vivainio@gmail.com>
178
184
179 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
185 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
180 Qt+IPython+Designer link in documentation.
186 Qt+IPython+Designer link in documentation.
181
187
182 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
188 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
183 correct Pdb object to %pydb.
189 correct Pdb object to %pydb.
184
190
185
191
186 2006-11-22 Walter Doerwald <walter@livinglogic.de>
192 2006-11-22 Walter Doerwald <walter@livinglogic.de>
187 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
193 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
188 generic xrepr(), otherwise the list implementation would kick in.
194 generic xrepr(), otherwise the list implementation would kick in.
189
195
190 2006-11-21 Ville Vainio <vivainio@gmail.com>
196 2006-11-21 Ville Vainio <vivainio@gmail.com>
191
197
192 * upgrade_dir.py: Now actually overwrites a nonmodified user file
198 * upgrade_dir.py: Now actually overwrites a nonmodified user file
193 with one from UserConfig.
199 with one from UserConfig.
194
200
195 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
201 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
196 it was missing which broke the sh profile.
202 it was missing which broke the sh profile.
197
203
198 * completer.py: file completer now uses explicit '/' instead
204 * completer.py: file completer now uses explicit '/' instead
199 of os.path.join, expansion of 'foo' was broken on win32
205 of os.path.join, expansion of 'foo' was broken on win32
200 if there was one directory with name 'foobar'.
206 if there was one directory with name 'foobar'.
201
207
202 * A bunch of patches from Kirill Smelkov:
208 * A bunch of patches from Kirill Smelkov:
203
209
204 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
210 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
205
211
206 * [patch 7/9] Implement %page -r (page in raw mode) -
212 * [patch 7/9] Implement %page -r (page in raw mode) -
207
213
208 * [patch 5/9] ScientificPython webpage has moved
214 * [patch 5/9] ScientificPython webpage has moved
209
215
210 * [patch 4/9] The manual mentions %ds, should be %dhist
216 * [patch 4/9] The manual mentions %ds, should be %dhist
211
217
212 * [patch 3/9] Kill old bits from %prun doc.
218 * [patch 3/9] Kill old bits from %prun doc.
213
219
214 * [patch 1/9] Fix typos here and there.
220 * [patch 1/9] Fix typos here and there.
215
221
216 2006-11-08 Ville Vainio <vivainio@gmail.com>
222 2006-11-08 Ville Vainio <vivainio@gmail.com>
217
223
218 * completer.py (attr_matches): catch all exceptions raised
224 * completer.py (attr_matches): catch all exceptions raised
219 by eval of expr with dots.
225 by eval of expr with dots.
220
226
221 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
227 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
222
228
223 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
229 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
224 input if it starts with whitespace. This allows you to paste
230 input if it starts with whitespace. This allows you to paste
225 indented input from any editor without manually having to type in
231 indented input from any editor without manually having to type in
226 the 'if 1:', which is convenient when working interactively.
232 the 'if 1:', which is convenient when working interactively.
227 Slightly modifed version of a patch by Bo Peng
233 Slightly modifed version of a patch by Bo Peng
228 <bpeng-AT-rice.edu>.
234 <bpeng-AT-rice.edu>.
229
235
230 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
236 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
231
237
232 * IPython/irunner.py (main): modified irunner so it automatically
238 * IPython/irunner.py (main): modified irunner so it automatically
233 recognizes the right runner to use based on the extension (.py for
239 recognizes the right runner to use based on the extension (.py for
234 python, .ipy for ipython and .sage for sage).
240 python, .ipy for ipython and .sage for sage).
235
241
236 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
242 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
237 visible in ipapi as ip.config(), to programatically control the
243 visible in ipapi as ip.config(), to programatically control the
238 internal rc object. There's an accompanying %config magic for
244 internal rc object. There's an accompanying %config magic for
239 interactive use, which has been enhanced to match the
245 interactive use, which has been enhanced to match the
240 funtionality in ipconfig.
246 funtionality in ipconfig.
241
247
242 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
248 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
243 so it's not just a toggle, it now takes an argument. Add support
249 so it's not just a toggle, it now takes an argument. Add support
244 for a customizable header when making system calls, as the new
250 for a customizable header when making system calls, as the new
245 system_header variable in the ipythonrc file.
251 system_header variable in the ipythonrc file.
246
252
247 2006-11-03 Walter Doerwald <walter@livinglogic.de>
253 2006-11-03 Walter Doerwald <walter@livinglogic.de>
248
254
249 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
255 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
250 generic functions (using Philip J. Eby's simplegeneric package).
256 generic functions (using Philip J. Eby's simplegeneric package).
251 This makes it possible to customize the display of third-party classes
257 This makes it possible to customize the display of third-party classes
252 without having to monkeypatch them. xiter() no longer supports a mode
258 without having to monkeypatch them. xiter() no longer supports a mode
253 argument and the XMode class has been removed. The same functionality can
259 argument and the XMode class has been removed. The same functionality can
254 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
260 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
255 One consequence of the switch to generic functions is that xrepr() and
261 One consequence of the switch to generic functions is that xrepr() and
256 xattrs() implementation must define the default value for the mode
262 xattrs() implementation must define the default value for the mode
257 argument themselves and xattrs() implementations must return real
263 argument themselves and xattrs() implementations must return real
258 descriptors.
264 descriptors.
259
265
260 * IPython/external: This new subpackage will contain all third-party
266 * IPython/external: This new subpackage will contain all third-party
261 packages that are bundled with IPython. (The first one is simplegeneric).
267 packages that are bundled with IPython. (The first one is simplegeneric).
262
268
263 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
269 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
264 directory which as been dropped in r1703.
270 directory which as been dropped in r1703.
265
271
266 * IPython/Extensions/ipipe.py (iless): Fixed.
272 * IPython/Extensions/ipipe.py (iless): Fixed.
267
273
268 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
274 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
269
275
270 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
276 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
271
277
272 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
278 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
273 handling in variable expansion so that shells and magics recognize
279 handling in variable expansion so that shells and magics recognize
274 function local scopes correctly. Bug reported by Brian.
280 function local scopes correctly. Bug reported by Brian.
275
281
276 * scripts/ipython: remove the very first entry in sys.path which
282 * scripts/ipython: remove the very first entry in sys.path which
277 Python auto-inserts for scripts, so that sys.path under IPython is
283 Python auto-inserts for scripts, so that sys.path under IPython is
278 as similar as possible to that under plain Python.
284 as similar as possible to that under plain Python.
279
285
280 * IPython/completer.py (IPCompleter.file_matches): Fix
286 * IPython/completer.py (IPCompleter.file_matches): Fix
281 tab-completion so that quotes are not closed unless the completion
287 tab-completion so that quotes are not closed unless the completion
282 is unambiguous. After a request by Stefan. Minor cleanups in
288 is unambiguous. After a request by Stefan. Minor cleanups in
283 ipy_stock_completers.
289 ipy_stock_completers.
284
290
285 2006-11-02 Ville Vainio <vivainio@gmail.com>
291 2006-11-02 Ville Vainio <vivainio@gmail.com>
286
292
287 * ipy_stock_completers.py: Add %run and %cd completers.
293 * ipy_stock_completers.py: Add %run and %cd completers.
288
294
289 * completer.py: Try running custom completer for both
295 * completer.py: Try running custom completer for both
290 "foo" and "%foo" if the command is just "foo". Ignore case
296 "foo" and "%foo" if the command is just "foo". Ignore case
291 when filtering possible completions.
297 when filtering possible completions.
292
298
293 * UserConfig/ipy_user_conf.py: install stock completers as default
299 * UserConfig/ipy_user_conf.py: install stock completers as default
294
300
295 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
301 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
296 simplified readline history save / restore through a wrapper
302 simplified readline history save / restore through a wrapper
297 function
303 function
298
304
299
305
300 2006-10-31 Ville Vainio <vivainio@gmail.com>
306 2006-10-31 Ville Vainio <vivainio@gmail.com>
301
307
302 * strdispatch.py, completer.py, ipy_stock_completers.py:
308 * strdispatch.py, completer.py, ipy_stock_completers.py:
303 Allow str_key ("command") in completer hooks. Implement
309 Allow str_key ("command") in completer hooks. Implement
304 trivial completer for 'import' (stdlib modules only). Rename
310 trivial completer for 'import' (stdlib modules only). Rename
305 ipy_linux_package_managers.py to ipy_stock_completers.py.
311 ipy_linux_package_managers.py to ipy_stock_completers.py.
306 SVN completer.
312 SVN completer.
307
313
308 * Extensions/ledit.py: %magic line editor for easily and
314 * Extensions/ledit.py: %magic line editor for easily and
309 incrementally manipulating lists of strings. The magic command
315 incrementally manipulating lists of strings. The magic command
310 name is %led.
316 name is %led.
311
317
312 2006-10-30 Ville Vainio <vivainio@gmail.com>
318 2006-10-30 Ville Vainio <vivainio@gmail.com>
313
319
314 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
320 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
315 Bernsteins's patches for pydb integration.
321 Bernsteins's patches for pydb integration.
316 http://bashdb.sourceforge.net/pydb/
322 http://bashdb.sourceforge.net/pydb/
317
323
318 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
324 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
319 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
325 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
320 custom completer hook to allow the users to implement their own
326 custom completer hook to allow the users to implement their own
321 completers. See ipy_linux_package_managers.py for example. The
327 completers. See ipy_linux_package_managers.py for example. The
322 hook name is 'complete_command'.
328 hook name is 'complete_command'.
323
329
324 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
330 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
325
331
326 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
332 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
327 Numeric leftovers.
333 Numeric leftovers.
328
334
329 * ipython.el (py-execute-region): apply Stefan's patch to fix
335 * ipython.el (py-execute-region): apply Stefan's patch to fix
330 garbled results if the python shell hasn't been previously started.
336 garbled results if the python shell hasn't been previously started.
331
337
332 * IPython/genutils.py (arg_split): moved to genutils, since it's a
338 * IPython/genutils.py (arg_split): moved to genutils, since it's a
333 pretty generic function and useful for other things.
339 pretty generic function and useful for other things.
334
340
335 * IPython/OInspect.py (getsource): Add customizable source
341 * IPython/OInspect.py (getsource): Add customizable source
336 extractor. After a request/patch form W. Stein (SAGE).
342 extractor. After a request/patch form W. Stein (SAGE).
337
343
338 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
344 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
339 window size to a more reasonable value from what pexpect does,
345 window size to a more reasonable value from what pexpect does,
340 since their choice causes wrapping bugs with long input lines.
346 since their choice causes wrapping bugs with long input lines.
341
347
342 2006-10-28 Ville Vainio <vivainio@gmail.com>
348 2006-10-28 Ville Vainio <vivainio@gmail.com>
343
349
344 * Magic.py (%run): Save and restore the readline history from
350 * Magic.py (%run): Save and restore the readline history from
345 file around %run commands to prevent side effects from
351 file around %run commands to prevent side effects from
346 %runned programs that might use readline (e.g. pydb).
352 %runned programs that might use readline (e.g. pydb).
347
353
348 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
354 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
349 invoking the pydb enhanced debugger.
355 invoking the pydb enhanced debugger.
350
356
351 2006-10-23 Walter Doerwald <walter@livinglogic.de>
357 2006-10-23 Walter Doerwald <walter@livinglogic.de>
352
358
353 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
359 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
354 call the base class method and propagate the return value to
360 call the base class method and propagate the return value to
355 ifile. This is now done by path itself.
361 ifile. This is now done by path itself.
356
362
357 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
363 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
358
364
359 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
365 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
360 api: set_crash_handler(), to expose the ability to change the
366 api: set_crash_handler(), to expose the ability to change the
361 internal crash handler.
367 internal crash handler.
362
368
363 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
369 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
364 the various parameters of the crash handler so that apps using
370 the various parameters of the crash handler so that apps using
365 IPython as their engine can customize crash handling. Ipmlemented
371 IPython as their engine can customize crash handling. Ipmlemented
366 at the request of SAGE.
372 at the request of SAGE.
367
373
368 2006-10-14 Ville Vainio <vivainio@gmail.com>
374 2006-10-14 Ville Vainio <vivainio@gmail.com>
369
375
370 * Magic.py, ipython.el: applied first "safe" part of Rocky
376 * Magic.py, ipython.el: applied first "safe" part of Rocky
371 Bernstein's patch set for pydb integration.
377 Bernstein's patch set for pydb integration.
372
378
373 * Magic.py (%unalias, %alias): %store'd aliases can now be
379 * Magic.py (%unalias, %alias): %store'd aliases can now be
374 removed with '%unalias'. %alias w/o args now shows most
380 removed with '%unalias'. %alias w/o args now shows most
375 interesting (stored / manually defined) aliases last
381 interesting (stored / manually defined) aliases last
376 where they catch the eye w/o scrolling.
382 where they catch the eye w/o scrolling.
377
383
378 * Magic.py (%rehashx), ext_rehashdir.py: files with
384 * Magic.py (%rehashx), ext_rehashdir.py: files with
379 'py' extension are always considered executable, even
385 'py' extension are always considered executable, even
380 when not in PATHEXT environment variable.
386 when not in PATHEXT environment variable.
381
387
382 2006-10-12 Ville Vainio <vivainio@gmail.com>
388 2006-10-12 Ville Vainio <vivainio@gmail.com>
383
389
384 * jobctrl.py: Add new "jobctrl" extension for spawning background
390 * jobctrl.py: Add new "jobctrl" extension for spawning background
385 processes with "&find /". 'import jobctrl' to try it out. Requires
391 processes with "&find /". 'import jobctrl' to try it out. Requires
386 'subprocess' module, standard in python 2.4+.
392 'subprocess' module, standard in python 2.4+.
387
393
388 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
394 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
389 so if foo -> bar and bar -> baz, then foo -> baz.
395 so if foo -> bar and bar -> baz, then foo -> baz.
390
396
391 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
397 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
392
398
393 * IPython/Magic.py (Magic.parse_options): add a new posix option
399 * IPython/Magic.py (Magic.parse_options): add a new posix option
394 to allow parsing of input args in magics that doesn't strip quotes
400 to allow parsing of input args in magics that doesn't strip quotes
395 (if posix=False). This also closes %timeit bug reported by
401 (if posix=False). This also closes %timeit bug reported by
396 Stefan.
402 Stefan.
397
403
398 2006-10-03 Ville Vainio <vivainio@gmail.com>
404 2006-10-03 Ville Vainio <vivainio@gmail.com>
399
405
400 * iplib.py (raw_input, interact): Return ValueError catching for
406 * iplib.py (raw_input, interact): Return ValueError catching for
401 raw_input. Fixes infinite loop for sys.stdin.close() or
407 raw_input. Fixes infinite loop for sys.stdin.close() or
402 sys.stdout.close().
408 sys.stdout.close().
403
409
404 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
410 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
405
411
406 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
412 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
407 to help in handling doctests. irunner is now pretty useful for
413 to help in handling doctests. irunner is now pretty useful for
408 running standalone scripts and simulate a full interactive session
414 running standalone scripts and simulate a full interactive session
409 in a format that can be then pasted as a doctest.
415 in a format that can be then pasted as a doctest.
410
416
411 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
417 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
412 on top of the default (useless) ones. This also fixes the nasty
418 on top of the default (useless) ones. This also fixes the nasty
413 way in which 2.5's Quitter() exits (reverted [1785]).
419 way in which 2.5's Quitter() exits (reverted [1785]).
414
420
415 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
421 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
416 2.5.
422 2.5.
417
423
418 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
424 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
419 color scheme is updated as well when color scheme is changed
425 color scheme is updated as well when color scheme is changed
420 interactively.
426 interactively.
421
427
422 2006-09-27 Ville Vainio <vivainio@gmail.com>
428 2006-09-27 Ville Vainio <vivainio@gmail.com>
423
429
424 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
430 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
425 infinite loop and just exit. It's a hack, but will do for a while.
431 infinite loop and just exit. It's a hack, but will do for a while.
426
432
427 2006-08-25 Walter Doerwald <walter@livinglogic.de>
433 2006-08-25 Walter Doerwald <walter@livinglogic.de>
428
434
429 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
435 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
430 the constructor, this makes it possible to get a list of only directories
436 the constructor, this makes it possible to get a list of only directories
431 or only files.
437 or only files.
432
438
433 2006-08-12 Ville Vainio <vivainio@gmail.com>
439 2006-08-12 Ville Vainio <vivainio@gmail.com>
434
440
435 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
441 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
436 they broke unittest
442 they broke unittest
437
443
438 2006-08-11 Ville Vainio <vivainio@gmail.com>
444 2006-08-11 Ville Vainio <vivainio@gmail.com>
439
445
440 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
446 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
441 by resolving issue properly, i.e. by inheriting FakeModule
447 by resolving issue properly, i.e. by inheriting FakeModule
442 from types.ModuleType. Pickling ipython interactive data
448 from types.ModuleType. Pickling ipython interactive data
443 should still work as usual (testing appreciated).
449 should still work as usual (testing appreciated).
444
450
445 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
451 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
446
452
447 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
453 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
448 running under python 2.3 with code from 2.4 to fix a bug with
454 running under python 2.3 with code from 2.4 to fix a bug with
449 help(). Reported by the Debian maintainers, Norbert Tretkowski
455 help(). Reported by the Debian maintainers, Norbert Tretkowski
450 <norbert-AT-tretkowski.de> and Alexandre Fayolle
456 <norbert-AT-tretkowski.de> and Alexandre Fayolle
451 <afayolle-AT-debian.org>.
457 <afayolle-AT-debian.org>.
452
458
453 2006-08-04 Walter Doerwald <walter@livinglogic.de>
459 2006-08-04 Walter Doerwald <walter@livinglogic.de>
454
460
455 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
461 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
456 (which was displaying "quit" twice).
462 (which was displaying "quit" twice).
457
463
458 2006-07-28 Walter Doerwald <walter@livinglogic.de>
464 2006-07-28 Walter Doerwald <walter@livinglogic.de>
459
465
460 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
466 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
461 the mode argument).
467 the mode argument).
462
468
463 2006-07-27 Walter Doerwald <walter@livinglogic.de>
469 2006-07-27 Walter Doerwald <walter@livinglogic.de>
464
470
465 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
471 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
466 not running under IPython.
472 not running under IPython.
467
473
468 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
474 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
469 and make it iterable (iterating over the attribute itself). Add two new
475 and make it iterable (iterating over the attribute itself). Add two new
470 magic strings for __xattrs__(): If the string starts with "-", the attribute
476 magic strings for __xattrs__(): If the string starts with "-", the attribute
471 will not be displayed in ibrowse's detail view (but it can still be
477 will not be displayed in ibrowse's detail view (but it can still be
472 iterated over). This makes it possible to add attributes that are large
478 iterated over). This makes it possible to add attributes that are large
473 lists or generator methods to the detail view. Replace magic attribute names
479 lists or generator methods to the detail view. Replace magic attribute names
474 and _attrname() and _getattr() with "descriptors": For each type of magic
480 and _attrname() and _getattr() with "descriptors": For each type of magic
475 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
481 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
476 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
482 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
477 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
483 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
478 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
484 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
479 are still supported.
485 are still supported.
480
486
481 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
487 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
482 fails in ibrowse.fetch(), the exception object is added as the last item
488 fails in ibrowse.fetch(), the exception object is added as the last item
483 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
489 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
484 a generator throws an exception midway through execution.
490 a generator throws an exception midway through execution.
485
491
486 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
492 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
487 encoding into methods.
493 encoding into methods.
488
494
489 2006-07-26 Ville Vainio <vivainio@gmail.com>
495 2006-07-26 Ville Vainio <vivainio@gmail.com>
490
496
491 * iplib.py: history now stores multiline input as single
497 * iplib.py: history now stores multiline input as single
492 history entries. Patch by Jorgen Cederlof.
498 history entries. Patch by Jorgen Cederlof.
493
499
494 2006-07-18 Walter Doerwald <walter@livinglogic.de>
500 2006-07-18 Walter Doerwald <walter@livinglogic.de>
495
501
496 * IPython/Extensions/ibrowse.py: Make cursor visible over
502 * IPython/Extensions/ibrowse.py: Make cursor visible over
497 non existing attributes.
503 non existing attributes.
498
504
499 2006-07-14 Walter Doerwald <walter@livinglogic.de>
505 2006-07-14 Walter Doerwald <walter@livinglogic.de>
500
506
501 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
507 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
502 error output of the running command doesn't mess up the screen.
508 error output of the running command doesn't mess up the screen.
503
509
504 2006-07-13 Walter Doerwald <walter@livinglogic.de>
510 2006-07-13 Walter Doerwald <walter@livinglogic.de>
505
511
506 * IPython/Extensions/ipipe.py (isort): Make isort usable without
512 * IPython/Extensions/ipipe.py (isort): Make isort usable without
507 argument. This sorts the items themselves.
513 argument. This sorts the items themselves.
508
514
509 2006-07-12 Walter Doerwald <walter@livinglogic.de>
515 2006-07-12 Walter Doerwald <walter@livinglogic.de>
510
516
511 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
517 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
512 Compile expression strings into code objects. This should speed
518 Compile expression strings into code objects. This should speed
513 up ifilter and friends somewhat.
519 up ifilter and friends somewhat.
514
520
515 2006-07-08 Ville Vainio <vivainio@gmail.com>
521 2006-07-08 Ville Vainio <vivainio@gmail.com>
516
522
517 * Magic.py: %cpaste now strips > from the beginning of lines
523 * Magic.py: %cpaste now strips > from the beginning of lines
518 to ease pasting quoted code from emails. Contributed by
524 to ease pasting quoted code from emails. Contributed by
519 Stefan van der Walt.
525 Stefan van der Walt.
520
526
521 2006-06-29 Ville Vainio <vivainio@gmail.com>
527 2006-06-29 Ville Vainio <vivainio@gmail.com>
522
528
523 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
529 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
524 mode, patch contributed by Darren Dale. NEEDS TESTING!
530 mode, patch contributed by Darren Dale. NEEDS TESTING!
525
531
526 2006-06-28 Walter Doerwald <walter@livinglogic.de>
532 2006-06-28 Walter Doerwald <walter@livinglogic.de>
527
533
528 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
534 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
529 a blue background. Fix fetching new display rows when the browser
535 a blue background. Fix fetching new display rows when the browser
530 scrolls more than a screenful (e.g. by using the goto command).
536 scrolls more than a screenful (e.g. by using the goto command).
531
537
532 2006-06-27 Ville Vainio <vivainio@gmail.com>
538 2006-06-27 Ville Vainio <vivainio@gmail.com>
533
539
534 * Magic.py (_inspect, _ofind) Apply David Huard's
540 * Magic.py (_inspect, _ofind) Apply David Huard's
535 patch for displaying the correct docstring for 'property'
541 patch for displaying the correct docstring for 'property'
536 attributes.
542 attributes.
537
543
538 2006-06-23 Walter Doerwald <walter@livinglogic.de>
544 2006-06-23 Walter Doerwald <walter@livinglogic.de>
539
545
540 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
546 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
541 commands into the methods implementing them.
547 commands into the methods implementing them.
542
548
543 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
549 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
544
550
545 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
551 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
546 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
552 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
547 autoindent support was authored by Jin Liu.
553 autoindent support was authored by Jin Liu.
548
554
549 2006-06-22 Walter Doerwald <walter@livinglogic.de>
555 2006-06-22 Walter Doerwald <walter@livinglogic.de>
550
556
551 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
557 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
552 for keymaps with a custom class that simplifies handling.
558 for keymaps with a custom class that simplifies handling.
553
559
554 2006-06-19 Walter Doerwald <walter@livinglogic.de>
560 2006-06-19 Walter Doerwald <walter@livinglogic.de>
555
561
556 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
562 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
557 resizing. This requires Python 2.5 to work.
563 resizing. This requires Python 2.5 to work.
558
564
559 2006-06-16 Walter Doerwald <walter@livinglogic.de>
565 2006-06-16 Walter Doerwald <walter@livinglogic.de>
560
566
561 * IPython/Extensions/ibrowse.py: Add two new commands to
567 * IPython/Extensions/ibrowse.py: Add two new commands to
562 ibrowse: "hideattr" (mapped to "h") hides the attribute under
568 ibrowse: "hideattr" (mapped to "h") hides the attribute under
563 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
569 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
564 attributes again. Remapped the help command to "?". Display
570 attributes again. Remapped the help command to "?". Display
565 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
571 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
566 as keys for the "home" and "end" commands. Add three new commands
572 as keys for the "home" and "end" commands. Add three new commands
567 to the input mode for "find" and friends: "delend" (CTRL-K)
573 to the input mode for "find" and friends: "delend" (CTRL-K)
568 deletes to the end of line. "incsearchup" searches upwards in the
574 deletes to the end of line. "incsearchup" searches upwards in the
569 command history for an input that starts with the text before the cursor.
575 command history for an input that starts with the text before the cursor.
570 "incsearchdown" does the same downwards. Removed a bogus mapping of
576 "incsearchdown" does the same downwards. Removed a bogus mapping of
571 the x key to "delete".
577 the x key to "delete".
572
578
573 2006-06-15 Ville Vainio <vivainio@gmail.com>
579 2006-06-15 Ville Vainio <vivainio@gmail.com>
574
580
575 * iplib.py, hooks.py: Added new generate_prompt hook that can be
581 * iplib.py, hooks.py: Added new generate_prompt hook that can be
576 used to create prompts dynamically, instead of the "old" way of
582 used to create prompts dynamically, instead of the "old" way of
577 assigning "magic" strings to prompt_in1 and prompt_in2. The old
583 assigning "magic" strings to prompt_in1 and prompt_in2. The old
578 way still works (it's invoked by the default hook), of course.
584 way still works (it's invoked by the default hook), of course.
579
585
580 * Prompts.py: added generate_output_prompt hook for altering output
586 * Prompts.py: added generate_output_prompt hook for altering output
581 prompt
587 prompt
582
588
583 * Release.py: Changed version string to 0.7.3.svn.
589 * Release.py: Changed version string to 0.7.3.svn.
584
590
585 2006-06-15 Walter Doerwald <walter@livinglogic.de>
591 2006-06-15 Walter Doerwald <walter@livinglogic.de>
586
592
587 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
593 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
588 the call to fetch() always tries to fetch enough data for at least one
594 the call to fetch() always tries to fetch enough data for at least one
589 full screen. This makes it possible to simply call moveto(0,0,True) in
595 full screen. This makes it possible to simply call moveto(0,0,True) in
590 the constructor. Fix typos and removed the obsolete goto attribute.
596 the constructor. Fix typos and removed the obsolete goto attribute.
591
597
592 2006-06-12 Ville Vainio <vivainio@gmail.com>
598 2006-06-12 Ville Vainio <vivainio@gmail.com>
593
599
594 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
600 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
595 allowing $variable interpolation within multiline statements,
601 allowing $variable interpolation within multiline statements,
596 though so far only with "sh" profile for a testing period.
602 though so far only with "sh" profile for a testing period.
597 The patch also enables splitting long commands with \ but it
603 The patch also enables splitting long commands with \ but it
598 doesn't work properly yet.
604 doesn't work properly yet.
599
605
600 2006-06-12 Walter Doerwald <walter@livinglogic.de>
606 2006-06-12 Walter Doerwald <walter@livinglogic.de>
601
607
602 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
608 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
603 input history and the position of the cursor in the input history for
609 input history and the position of the cursor in the input history for
604 the find, findbackwards and goto command.
610 the find, findbackwards and goto command.
605
611
606 2006-06-10 Walter Doerwald <walter@livinglogic.de>
612 2006-06-10 Walter Doerwald <walter@livinglogic.de>
607
613
608 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
614 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
609 implements the basic functionality of browser commands that require
615 implements the basic functionality of browser commands that require
610 input. Reimplement the goto, find and findbackwards commands as
616 input. Reimplement the goto, find and findbackwards commands as
611 subclasses of _CommandInput. Add an input history and keymaps to those
617 subclasses of _CommandInput. Add an input history and keymaps to those
612 commands. Add "\r" as a keyboard shortcut for the enterdefault and
618 commands. Add "\r" as a keyboard shortcut for the enterdefault and
613 execute commands.
619 execute commands.
614
620
615 2006-06-07 Ville Vainio <vivainio@gmail.com>
621 2006-06-07 Ville Vainio <vivainio@gmail.com>
616
622
617 * iplib.py: ipython mybatch.ipy exits ipython immediately after
623 * iplib.py: ipython mybatch.ipy exits ipython immediately after
618 running the batch files instead of leaving the session open.
624 running the batch files instead of leaving the session open.
619
625
620 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
626 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
621
627
622 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
628 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
623 the original fix was incomplete. Patch submitted by W. Maier.
629 the original fix was incomplete. Patch submitted by W. Maier.
624
630
625 2006-06-07 Ville Vainio <vivainio@gmail.com>
631 2006-06-07 Ville Vainio <vivainio@gmail.com>
626
632
627 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
633 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
628 Confirmation prompts can be supressed by 'quiet' option.
634 Confirmation prompts can be supressed by 'quiet' option.
629 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
635 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
630
636
631 2006-06-06 *** Released version 0.7.2
637 2006-06-06 *** Released version 0.7.2
632
638
633 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
639 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
634
640
635 * IPython/Release.py (version): Made 0.7.2 final for release.
641 * IPython/Release.py (version): Made 0.7.2 final for release.
636 Repo tagged and release cut.
642 Repo tagged and release cut.
637
643
638 2006-06-05 Ville Vainio <vivainio@gmail.com>
644 2006-06-05 Ville Vainio <vivainio@gmail.com>
639
645
640 * Magic.py (magic_rehashx): Honor no_alias list earlier in
646 * Magic.py (magic_rehashx): Honor no_alias list earlier in
641 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
647 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
642
648
643 * upgrade_dir.py: try import 'path' module a bit harder
649 * upgrade_dir.py: try import 'path' module a bit harder
644 (for %upgrade)
650 (for %upgrade)
645
651
646 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
652 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
647
653
648 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
654 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
649 instead of looping 20 times.
655 instead of looping 20 times.
650
656
651 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
657 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
652 correctly at initialization time. Bug reported by Krishna Mohan
658 correctly at initialization time. Bug reported by Krishna Mohan
653 Gundu <gkmohan-AT-gmail.com> on the user list.
659 Gundu <gkmohan-AT-gmail.com> on the user list.
654
660
655 * IPython/Release.py (version): Mark 0.7.2 version to start
661 * IPython/Release.py (version): Mark 0.7.2 version to start
656 testing for release on 06/06.
662 testing for release on 06/06.
657
663
658 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
664 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
659
665
660 * scripts/irunner: thin script interface so users don't have to
666 * scripts/irunner: thin script interface so users don't have to
661 find the module and call it as an executable, since modules rarely
667 find the module and call it as an executable, since modules rarely
662 live in people's PATH.
668 live in people's PATH.
663
669
664 * IPython/irunner.py (InteractiveRunner.__init__): added
670 * IPython/irunner.py (InteractiveRunner.__init__): added
665 delaybeforesend attribute to control delays with newer versions of
671 delaybeforesend attribute to control delays with newer versions of
666 pexpect. Thanks to detailed help from pexpect's author, Noah
672 pexpect. Thanks to detailed help from pexpect's author, Noah
667 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
673 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
668 correctly (it works in NoColor mode).
674 correctly (it works in NoColor mode).
669
675
670 * IPython/iplib.py (handle_normal): fix nasty crash reported on
676 * IPython/iplib.py (handle_normal): fix nasty crash reported on
671 SAGE list, from improper log() calls.
677 SAGE list, from improper log() calls.
672
678
673 2006-05-31 Ville Vainio <vivainio@gmail.com>
679 2006-05-31 Ville Vainio <vivainio@gmail.com>
674
680
675 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
681 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
676 with args in parens to work correctly with dirs that have spaces.
682 with args in parens to work correctly with dirs that have spaces.
677
683
678 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
684 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
679
685
680 * IPython/Logger.py (Logger.logstart): add option to log raw input
686 * IPython/Logger.py (Logger.logstart): add option to log raw input
681 instead of the processed one. A -r flag was added to the
687 instead of the processed one. A -r flag was added to the
682 %logstart magic used for controlling logging.
688 %logstart magic used for controlling logging.
683
689
684 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
690 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
685
691
686 * IPython/iplib.py (InteractiveShell.__init__): add check for the
692 * IPython/iplib.py (InteractiveShell.__init__): add check for the
687 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
693 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
688 recognize the option. After a bug report by Will Maier. This
694 recognize the option. After a bug report by Will Maier. This
689 closes #64 (will do it after confirmation from W. Maier).
695 closes #64 (will do it after confirmation from W. Maier).
690
696
691 * IPython/irunner.py: New module to run scripts as if manually
697 * IPython/irunner.py: New module to run scripts as if manually
692 typed into an interactive environment, based on pexpect. After a
698 typed into an interactive environment, based on pexpect. After a
693 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
699 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
694 ipython-user list. Simple unittests in the tests/ directory.
700 ipython-user list. Simple unittests in the tests/ directory.
695
701
696 * tools/release: add Will Maier, OpenBSD port maintainer, to
702 * tools/release: add Will Maier, OpenBSD port maintainer, to
697 recepients list. We are now officially part of the OpenBSD ports:
703 recepients list. We are now officially part of the OpenBSD ports:
698 http://www.openbsd.org/ports.html ! Many thanks to Will for the
704 http://www.openbsd.org/ports.html ! Many thanks to Will for the
699 work.
705 work.
700
706
701 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
707 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
702
708
703 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
709 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
704 so that it doesn't break tkinter apps.
710 so that it doesn't break tkinter apps.
705
711
706 * IPython/iplib.py (_prefilter): fix bug where aliases would
712 * IPython/iplib.py (_prefilter): fix bug where aliases would
707 shadow variables when autocall was fully off. Reported by SAGE
713 shadow variables when autocall was fully off. Reported by SAGE
708 author William Stein.
714 author William Stein.
709
715
710 * IPython/OInspect.py (Inspector.__init__): add a flag to control
716 * IPython/OInspect.py (Inspector.__init__): add a flag to control
711 at what detail level strings are computed when foo? is requested.
717 at what detail level strings are computed when foo? is requested.
712 This allows users to ask for example that the string form of an
718 This allows users to ask for example that the string form of an
713 object is only computed when foo?? is called, or even never, by
719 object is only computed when foo?? is called, or even never, by
714 setting the object_info_string_level >= 2 in the configuration
720 setting the object_info_string_level >= 2 in the configuration
715 file. This new option has been added and documented. After a
721 file. This new option has been added and documented. After a
716 request by SAGE to be able to control the printing of very large
722 request by SAGE to be able to control the printing of very large
717 objects more easily.
723 objects more easily.
718
724
719 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
725 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
720
726
721 * IPython/ipmaker.py (make_IPython): remove the ipython call path
727 * IPython/ipmaker.py (make_IPython): remove the ipython call path
722 from sys.argv, to be 100% consistent with how Python itself works
728 from sys.argv, to be 100% consistent with how Python itself works
723 (as seen for example with python -i file.py). After a bug report
729 (as seen for example with python -i file.py). After a bug report
724 by Jeffrey Collins.
730 by Jeffrey Collins.
725
731
726 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
732 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
727 nasty bug which was preventing custom namespaces with -pylab,
733 nasty bug which was preventing custom namespaces with -pylab,
728 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
734 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
729 compatibility (long gone from mpl).
735 compatibility (long gone from mpl).
730
736
731 * IPython/ipapi.py (make_session): name change: create->make. We
737 * IPython/ipapi.py (make_session): name change: create->make. We
732 use make in other places (ipmaker,...), it's shorter and easier to
738 use make in other places (ipmaker,...), it's shorter and easier to
733 type and say, etc. I'm trying to clean things before 0.7.2 so
739 type and say, etc. I'm trying to clean things before 0.7.2 so
734 that I can keep things stable wrt to ipapi in the chainsaw branch.
740 that I can keep things stable wrt to ipapi in the chainsaw branch.
735
741
736 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
742 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
737 python-mode recognizes our debugger mode. Add support for
743 python-mode recognizes our debugger mode. Add support for
738 autoindent inside (X)emacs. After a patch sent in by Jin Liu
744 autoindent inside (X)emacs. After a patch sent in by Jin Liu
739 <m.liu.jin-AT-gmail.com> originally written by
745 <m.liu.jin-AT-gmail.com> originally written by
740 doxgen-AT-newsmth.net (with minor modifications for xemacs
746 doxgen-AT-newsmth.net (with minor modifications for xemacs
741 compatibility)
747 compatibility)
742
748
743 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
749 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
744 tracebacks when walking the stack so that the stack tracking system
750 tracebacks when walking the stack so that the stack tracking system
745 in emacs' python-mode can identify the frames correctly.
751 in emacs' python-mode can identify the frames correctly.
746
752
747 * IPython/ipmaker.py (make_IPython): make the internal (and
753 * IPython/ipmaker.py (make_IPython): make the internal (and
748 default config) autoedit_syntax value false by default. Too many
754 default config) autoedit_syntax value false by default. Too many
749 users have complained to me (both on and off-list) about problems
755 users have complained to me (both on and off-list) about problems
750 with this option being on by default, so I'm making it default to
756 with this option being on by default, so I'm making it default to
751 off. It can still be enabled by anyone via the usual mechanisms.
757 off. It can still be enabled by anyone via the usual mechanisms.
752
758
753 * IPython/completer.py (Completer.attr_matches): add support for
759 * IPython/completer.py (Completer.attr_matches): add support for
754 PyCrust-style _getAttributeNames magic method. Patch contributed
760 PyCrust-style _getAttributeNames magic method. Patch contributed
755 by <mscott-AT-goldenspud.com>. Closes #50.
761 by <mscott-AT-goldenspud.com>. Closes #50.
756
762
757 * IPython/iplib.py (InteractiveShell.__init__): remove the
763 * IPython/iplib.py (InteractiveShell.__init__): remove the
758 deletion of exit/quit from __builtin__, which can break
764 deletion of exit/quit from __builtin__, which can break
759 third-party tools like the Zope debugging console. The
765 third-party tools like the Zope debugging console. The
760 %exit/%quit magics remain. In general, it's probably a good idea
766 %exit/%quit magics remain. In general, it's probably a good idea
761 not to delete anything from __builtin__, since we never know what
767 not to delete anything from __builtin__, since we never know what
762 that will break. In any case, python now (for 2.5) will support
768 that will break. In any case, python now (for 2.5) will support
763 'real' exit/quit, so this issue is moot. Closes #55.
769 'real' exit/quit, so this issue is moot. Closes #55.
764
770
765 * IPython/genutils.py (with_obj): rename the 'with' function to
771 * IPython/genutils.py (with_obj): rename the 'with' function to
766 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
772 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
767 becomes a language keyword. Closes #53.
773 becomes a language keyword. Closes #53.
768
774
769 * IPython/FakeModule.py (FakeModule.__init__): add a proper
775 * IPython/FakeModule.py (FakeModule.__init__): add a proper
770 __file__ attribute to this so it fools more things into thinking
776 __file__ attribute to this so it fools more things into thinking
771 it is a real module. Closes #59.
777 it is a real module. Closes #59.
772
778
773 * IPython/Magic.py (magic_edit): add -n option to open the editor
779 * IPython/Magic.py (magic_edit): add -n option to open the editor
774 at a specific line number. After a patch by Stefan van der Walt.
780 at a specific line number. After a patch by Stefan van der Walt.
775
781
776 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
782 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
777
783
778 * IPython/iplib.py (edit_syntax_error): fix crash when for some
784 * IPython/iplib.py (edit_syntax_error): fix crash when for some
779 reason the file could not be opened. After automatic crash
785 reason the file could not be opened. After automatic crash
780 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
786 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
781 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
787 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
782 (_should_recompile): Don't fire editor if using %bg, since there
788 (_should_recompile): Don't fire editor if using %bg, since there
783 is no file in the first place. From the same report as above.
789 is no file in the first place. From the same report as above.
784 (raw_input): protect against faulty third-party prefilters. After
790 (raw_input): protect against faulty third-party prefilters. After
785 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
791 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
786 while running under SAGE.
792 while running under SAGE.
787
793
788 2006-05-23 Ville Vainio <vivainio@gmail.com>
794 2006-05-23 Ville Vainio <vivainio@gmail.com>
789
795
790 * ipapi.py: Stripped down ip.to_user_ns() to work only as
796 * ipapi.py: Stripped down ip.to_user_ns() to work only as
791 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
797 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
792 now returns None (again), unless dummy is specifically allowed by
798 now returns None (again), unless dummy is specifically allowed by
793 ipapi.get(allow_dummy=True).
799 ipapi.get(allow_dummy=True).
794
800
795 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
801 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
796
802
797 * IPython: remove all 2.2-compatibility objects and hacks from
803 * IPython: remove all 2.2-compatibility objects and hacks from
798 everywhere, since we only support 2.3 at this point. Docs
804 everywhere, since we only support 2.3 at this point. Docs
799 updated.
805 updated.
800
806
801 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
807 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
802 Anything requiring extra validation can be turned into a Python
808 Anything requiring extra validation can be turned into a Python
803 property in the future. I used a property for the db one b/c
809 property in the future. I used a property for the db one b/c
804 there was a nasty circularity problem with the initialization
810 there was a nasty circularity problem with the initialization
805 order, which right now I don't have time to clean up.
811 order, which right now I don't have time to clean up.
806
812
807 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
813 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
808 another locking bug reported by Jorgen. I'm not 100% sure though,
814 another locking bug reported by Jorgen. I'm not 100% sure though,
809 so more testing is needed...
815 so more testing is needed...
810
816
811 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
817 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
812
818
813 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
819 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
814 local variables from any routine in user code (typically executed
820 local variables from any routine in user code (typically executed
815 with %run) directly into the interactive namespace. Very useful
821 with %run) directly into the interactive namespace. Very useful
816 when doing complex debugging.
822 when doing complex debugging.
817 (IPythonNotRunning): Changed the default None object to a dummy
823 (IPythonNotRunning): Changed the default None object to a dummy
818 whose attributes can be queried as well as called without
824 whose attributes can be queried as well as called without
819 exploding, to ease writing code which works transparently both in
825 exploding, to ease writing code which works transparently both in
820 and out of ipython and uses some of this API.
826 and out of ipython and uses some of this API.
821
827
822 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
828 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
823
829
824 * IPython/hooks.py (result_display): Fix the fact that our display
830 * IPython/hooks.py (result_display): Fix the fact that our display
825 hook was using str() instead of repr(), as the default python
831 hook was using str() instead of repr(), as the default python
826 console does. This had gone unnoticed b/c it only happened if
832 console does. This had gone unnoticed b/c it only happened if
827 %Pprint was off, but the inconsistency was there.
833 %Pprint was off, but the inconsistency was there.
828
834
829 2006-05-15 Ville Vainio <vivainio@gmail.com>
835 2006-05-15 Ville Vainio <vivainio@gmail.com>
830
836
831 * Oinspect.py: Only show docstring for nonexisting/binary files
837 * Oinspect.py: Only show docstring for nonexisting/binary files
832 when doing object??, closing ticket #62
838 when doing object??, closing ticket #62
833
839
834 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
840 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
835
841
836 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
842 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
837 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
843 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
838 was being released in a routine which hadn't checked if it had
844 was being released in a routine which hadn't checked if it had
839 been the one to acquire it.
845 been the one to acquire it.
840
846
841 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
847 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
842
848
843 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
849 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
844
850
845 2006-04-11 Ville Vainio <vivainio@gmail.com>
851 2006-04-11 Ville Vainio <vivainio@gmail.com>
846
852
847 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
853 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
848 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
854 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
849 prefilters, allowing stuff like magics and aliases in the file.
855 prefilters, allowing stuff like magics and aliases in the file.
850
856
851 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
857 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
852 added. Supported now are "%clear in" and "%clear out" (clear input and
858 added. Supported now are "%clear in" and "%clear out" (clear input and
853 output history, respectively). Also fixed CachedOutput.flush to
859 output history, respectively). Also fixed CachedOutput.flush to
854 properly flush the output cache.
860 properly flush the output cache.
855
861
856 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
862 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
857 half-success (and fail explicitly).
863 half-success (and fail explicitly).
858
864
859 2006-03-28 Ville Vainio <vivainio@gmail.com>
865 2006-03-28 Ville Vainio <vivainio@gmail.com>
860
866
861 * iplib.py: Fix quoting of aliases so that only argless ones
867 * iplib.py: Fix quoting of aliases so that only argless ones
862 are quoted
868 are quoted
863
869
864 2006-03-28 Ville Vainio <vivainio@gmail.com>
870 2006-03-28 Ville Vainio <vivainio@gmail.com>
865
871
866 * iplib.py: Quote aliases with spaces in the name.
872 * iplib.py: Quote aliases with spaces in the name.
867 "c:\program files\blah\bin" is now legal alias target.
873 "c:\program files\blah\bin" is now legal alias target.
868
874
869 * ext_rehashdir.py: Space no longer allowed as arg
875 * ext_rehashdir.py: Space no longer allowed as arg
870 separator, since space is legal in path names.
876 separator, since space is legal in path names.
871
877
872 2006-03-16 Ville Vainio <vivainio@gmail.com>
878 2006-03-16 Ville Vainio <vivainio@gmail.com>
873
879
874 * upgrade_dir.py: Take path.py from Extensions, correcting
880 * upgrade_dir.py: Take path.py from Extensions, correcting
875 %upgrade magic
881 %upgrade magic
876
882
877 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
883 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
878
884
879 * hooks.py: Only enclose editor binary in quotes if legal and
885 * hooks.py: Only enclose editor binary in quotes if legal and
880 necessary (space in the name, and is an existing file). Fixes a bug
886 necessary (space in the name, and is an existing file). Fixes a bug
881 reported by Zachary Pincus.
887 reported by Zachary Pincus.
882
888
883 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
889 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
884
890
885 * Manual: thanks to a tip on proper color handling for Emacs, by
891 * Manual: thanks to a tip on proper color handling for Emacs, by
886 Eric J Haywiser <ejh1-AT-MIT.EDU>.
892 Eric J Haywiser <ejh1-AT-MIT.EDU>.
887
893
888 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
894 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
889 by applying the provided patch. Thanks to Liu Jin
895 by applying the provided patch. Thanks to Liu Jin
890 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
896 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
891 XEmacs/Linux, I'm trusting the submitter that it actually helps
897 XEmacs/Linux, I'm trusting the submitter that it actually helps
892 under win32/GNU Emacs. Will revisit if any problems are reported.
898 under win32/GNU Emacs. Will revisit if any problems are reported.
893
899
894 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
900 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
895
901
896 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
902 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
897 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
903 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
898
904
899 2006-03-12 Ville Vainio <vivainio@gmail.com>
905 2006-03-12 Ville Vainio <vivainio@gmail.com>
900
906
901 * Magic.py (magic_timeit): Added %timeit magic, contributed by
907 * Magic.py (magic_timeit): Added %timeit magic, contributed by
902 Torsten Marek.
908 Torsten Marek.
903
909
904 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
910 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
905
911
906 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
912 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
907 line ranges works again.
913 line ranges works again.
908
914
909 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
915 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
910
916
911 * IPython/iplib.py (showtraceback): add back sys.last_traceback
917 * IPython/iplib.py (showtraceback): add back sys.last_traceback
912 and friends, after a discussion with Zach Pincus on ipython-user.
918 and friends, after a discussion with Zach Pincus on ipython-user.
913 I'm not 100% sure, but after thinking about it quite a bit, it may
919 I'm not 100% sure, but after thinking about it quite a bit, it may
914 be OK. Testing with the multithreaded shells didn't reveal any
920 be OK. Testing with the multithreaded shells didn't reveal any
915 problems, but let's keep an eye out.
921 problems, but let's keep an eye out.
916
922
917 In the process, I fixed a few things which were calling
923 In the process, I fixed a few things which were calling
918 self.InteractiveTB() directly (like safe_execfile), which is a
924 self.InteractiveTB() directly (like safe_execfile), which is a
919 mistake: ALL exception reporting should be done by calling
925 mistake: ALL exception reporting should be done by calling
920 self.showtraceback(), which handles state and tab-completion and
926 self.showtraceback(), which handles state and tab-completion and
921 more.
927 more.
922
928
923 2006-03-01 Ville Vainio <vivainio@gmail.com>
929 2006-03-01 Ville Vainio <vivainio@gmail.com>
924
930
925 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
931 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
926 To use, do "from ipipe import *".
932 To use, do "from ipipe import *".
927
933
928 2006-02-24 Ville Vainio <vivainio@gmail.com>
934 2006-02-24 Ville Vainio <vivainio@gmail.com>
929
935
930 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
936 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
931 "cleanly" and safely than the older upgrade mechanism.
937 "cleanly" and safely than the older upgrade mechanism.
932
938
933 2006-02-21 Ville Vainio <vivainio@gmail.com>
939 2006-02-21 Ville Vainio <vivainio@gmail.com>
934
940
935 * Magic.py: %save works again.
941 * Magic.py: %save works again.
936
942
937 2006-02-15 Ville Vainio <vivainio@gmail.com>
943 2006-02-15 Ville Vainio <vivainio@gmail.com>
938
944
939 * Magic.py: %Pprint works again
945 * Magic.py: %Pprint works again
940
946
941 * Extensions/ipy_sane_defaults.py: Provide everything provided
947 * Extensions/ipy_sane_defaults.py: Provide everything provided
942 in default ipythonrc, to make it possible to have a completely empty
948 in default ipythonrc, to make it possible to have a completely empty
943 ipythonrc (and thus completely rc-file free configuration)
949 ipythonrc (and thus completely rc-file free configuration)
944
950
945 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
951 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
946
952
947 * IPython/hooks.py (editor): quote the call to the editor command,
953 * IPython/hooks.py (editor): quote the call to the editor command,
948 to allow commands with spaces in them. Problem noted by watching
954 to allow commands with spaces in them. Problem noted by watching
949 Ian Oswald's video about textpad under win32 at
955 Ian Oswald's video about textpad under win32 at
950 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
956 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
951
957
952 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
958 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
953 describing magics (we haven't used @ for a loong time).
959 describing magics (we haven't used @ for a loong time).
954
960
955 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
961 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
956 contributed by marienz to close
962 contributed by marienz to close
957 http://www.scipy.net/roundup/ipython/issue53.
963 http://www.scipy.net/roundup/ipython/issue53.
958
964
959 2006-02-10 Ville Vainio <vivainio@gmail.com>
965 2006-02-10 Ville Vainio <vivainio@gmail.com>
960
966
961 * genutils.py: getoutput now works in win32 too
967 * genutils.py: getoutput now works in win32 too
962
968
963 * completer.py: alias and magic completion only invoked
969 * completer.py: alias and magic completion only invoked
964 at the first "item" in the line, to avoid "cd %store"
970 at the first "item" in the line, to avoid "cd %store"
965 nonsense.
971 nonsense.
966
972
967 2006-02-09 Ville Vainio <vivainio@gmail.com>
973 2006-02-09 Ville Vainio <vivainio@gmail.com>
968
974
969 * test/*: Added a unit testing framework (finally).
975 * test/*: Added a unit testing framework (finally).
970 '%run runtests.py' to run test_*.
976 '%run runtests.py' to run test_*.
971
977
972 * ipapi.py: Exposed runlines and set_custom_exc
978 * ipapi.py: Exposed runlines and set_custom_exc
973
979
974 2006-02-07 Ville Vainio <vivainio@gmail.com>
980 2006-02-07 Ville Vainio <vivainio@gmail.com>
975
981
976 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
982 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
977 instead use "f(1 2)" as before.
983 instead use "f(1 2)" as before.
978
984
979 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
985 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
980
986
981 * IPython/demo.py (IPythonDemo): Add new classes to the demo
987 * IPython/demo.py (IPythonDemo): Add new classes to the demo
982 facilities, for demos processed by the IPython input filter
988 facilities, for demos processed by the IPython input filter
983 (IPythonDemo), and for running a script one-line-at-a-time as a
989 (IPythonDemo), and for running a script one-line-at-a-time as a
984 demo, both for pure Python (LineDemo) and for IPython-processed
990 demo, both for pure Python (LineDemo) and for IPython-processed
985 input (IPythonLineDemo). After a request by Dave Kohel, from the
991 input (IPythonLineDemo). After a request by Dave Kohel, from the
986 SAGE team.
992 SAGE team.
987 (Demo.edit): added an edit() method to the demo objects, to edit
993 (Demo.edit): added an edit() method to the demo objects, to edit
988 the in-memory copy of the last executed block.
994 the in-memory copy of the last executed block.
989
995
990 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
996 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
991 processing to %edit, %macro and %save. These commands can now be
997 processing to %edit, %macro and %save. These commands can now be
992 invoked on the unprocessed input as it was typed by the user
998 invoked on the unprocessed input as it was typed by the user
993 (without any prefilters applied). After requests by the SAGE team
999 (without any prefilters applied). After requests by the SAGE team
994 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1000 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
995
1001
996 2006-02-01 Ville Vainio <vivainio@gmail.com>
1002 2006-02-01 Ville Vainio <vivainio@gmail.com>
997
1003
998 * setup.py, eggsetup.py: easy_install ipython==dev works
1004 * setup.py, eggsetup.py: easy_install ipython==dev works
999 correctly now (on Linux)
1005 correctly now (on Linux)
1000
1006
1001 * ipy_user_conf,ipmaker: user config changes, removed spurious
1007 * ipy_user_conf,ipmaker: user config changes, removed spurious
1002 warnings
1008 warnings
1003
1009
1004 * iplib: if rc.banner is string, use it as is.
1010 * iplib: if rc.banner is string, use it as is.
1005
1011
1006 * Magic: %pycat accepts a string argument and pages it's contents.
1012 * Magic: %pycat accepts a string argument and pages it's contents.
1007
1013
1008
1014
1009 2006-01-30 Ville Vainio <vivainio@gmail.com>
1015 2006-01-30 Ville Vainio <vivainio@gmail.com>
1010
1016
1011 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1017 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1012 Now %store and bookmarks work through PickleShare, meaning that
1018 Now %store and bookmarks work through PickleShare, meaning that
1013 concurrent access is possible and all ipython sessions see the
1019 concurrent access is possible and all ipython sessions see the
1014 same database situation all the time, instead of snapshot of
1020 same database situation all the time, instead of snapshot of
1015 the situation when the session was started. Hence, %bookmark
1021 the situation when the session was started. Hence, %bookmark
1016 results are immediately accessible from othes sessions. The database
1022 results are immediately accessible from othes sessions. The database
1017 is also available for use by user extensions. See:
1023 is also available for use by user extensions. See:
1018 http://www.python.org/pypi/pickleshare
1024 http://www.python.org/pypi/pickleshare
1019
1025
1020 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1026 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1021
1027
1022 * aliases can now be %store'd
1028 * aliases can now be %store'd
1023
1029
1024 * path.py moved to Extensions so that pickleshare does not need
1030 * path.py moved to Extensions so that pickleshare does not need
1025 IPython-specific import. Extensions added to pythonpath right
1031 IPython-specific import. Extensions added to pythonpath right
1026 at __init__.
1032 at __init__.
1027
1033
1028 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1034 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1029 called with _ip.system and the pre-transformed command string.
1035 called with _ip.system and the pre-transformed command string.
1030
1036
1031 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1037 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1032
1038
1033 * IPython/iplib.py (interact): Fix that we were not catching
1039 * IPython/iplib.py (interact): Fix that we were not catching
1034 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1040 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1035 logic here had to change, but it's fixed now.
1041 logic here had to change, but it's fixed now.
1036
1042
1037 2006-01-29 Ville Vainio <vivainio@gmail.com>
1043 2006-01-29 Ville Vainio <vivainio@gmail.com>
1038
1044
1039 * iplib.py: Try to import pyreadline on Windows.
1045 * iplib.py: Try to import pyreadline on Windows.
1040
1046
1041 2006-01-27 Ville Vainio <vivainio@gmail.com>
1047 2006-01-27 Ville Vainio <vivainio@gmail.com>
1042
1048
1043 * iplib.py: Expose ipapi as _ip in builtin namespace.
1049 * iplib.py: Expose ipapi as _ip in builtin namespace.
1044 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1050 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1045 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1051 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1046 syntax now produce _ip.* variant of the commands.
1052 syntax now produce _ip.* variant of the commands.
1047
1053
1048 * "_ip.options().autoedit_syntax = 2" automatically throws
1054 * "_ip.options().autoedit_syntax = 2" automatically throws
1049 user to editor for syntax error correction without prompting.
1055 user to editor for syntax error correction without prompting.
1050
1056
1051 2006-01-27 Ville Vainio <vivainio@gmail.com>
1057 2006-01-27 Ville Vainio <vivainio@gmail.com>
1052
1058
1053 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1059 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1054 'ipython' at argv[0]) executed through command line.
1060 'ipython' at argv[0]) executed through command line.
1055 NOTE: this DEPRECATES calling ipython with multiple scripts
1061 NOTE: this DEPRECATES calling ipython with multiple scripts
1056 ("ipython a.py b.py c.py")
1062 ("ipython a.py b.py c.py")
1057
1063
1058 * iplib.py, hooks.py: Added configurable input prefilter,
1064 * iplib.py, hooks.py: Added configurable input prefilter,
1059 named 'input_prefilter'. See ext_rescapture.py for example
1065 named 'input_prefilter'. See ext_rescapture.py for example
1060 usage.
1066 usage.
1061
1067
1062 * ext_rescapture.py, Magic.py: Better system command output capture
1068 * ext_rescapture.py, Magic.py: Better system command output capture
1063 through 'var = !ls' (deprecates user-visible %sc). Same notation
1069 through 'var = !ls' (deprecates user-visible %sc). Same notation
1064 applies for magics, 'var = %alias' assigns alias list to var.
1070 applies for magics, 'var = %alias' assigns alias list to var.
1065
1071
1066 * ipapi.py: added meta() for accessing extension-usable data store.
1072 * ipapi.py: added meta() for accessing extension-usable data store.
1067
1073
1068 * iplib.py: added InteractiveShell.getapi(). New magics should be
1074 * iplib.py: added InteractiveShell.getapi(). New magics should be
1069 written doing self.getapi() instead of using the shell directly.
1075 written doing self.getapi() instead of using the shell directly.
1070
1076
1071 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1077 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1072 %store foo >> ~/myfoo.txt to store variables to files (in clean
1078 %store foo >> ~/myfoo.txt to store variables to files (in clean
1073 textual form, not a restorable pickle).
1079 textual form, not a restorable pickle).
1074
1080
1075 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1081 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1076
1082
1077 * usage.py, Magic.py: added %quickref
1083 * usage.py, Magic.py: added %quickref
1078
1084
1079 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1085 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1080
1086
1081 * GetoptErrors when invoking magics etc. with wrong args
1087 * GetoptErrors when invoking magics etc. with wrong args
1082 are now more helpful:
1088 are now more helpful:
1083 GetoptError: option -l not recognized (allowed: "qb" )
1089 GetoptError: option -l not recognized (allowed: "qb" )
1084
1090
1085 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1091 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1086
1092
1087 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1093 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1088 computationally intensive blocks don't appear to stall the demo.
1094 computationally intensive blocks don't appear to stall the demo.
1089
1095
1090 2006-01-24 Ville Vainio <vivainio@gmail.com>
1096 2006-01-24 Ville Vainio <vivainio@gmail.com>
1091
1097
1092 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1098 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1093 value to manipulate resulting history entry.
1099 value to manipulate resulting history entry.
1094
1100
1095 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1101 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1096 to instance methods of IPApi class, to make extending an embedded
1102 to instance methods of IPApi class, to make extending an embedded
1097 IPython feasible. See ext_rehashdir.py for example usage.
1103 IPython feasible. See ext_rehashdir.py for example usage.
1098
1104
1099 * Merged 1071-1076 from branches/0.7.1
1105 * Merged 1071-1076 from branches/0.7.1
1100
1106
1101
1107
1102 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1108 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1103
1109
1104 * tools/release (daystamp): Fix build tools to use the new
1110 * tools/release (daystamp): Fix build tools to use the new
1105 eggsetup.py script to build lightweight eggs.
1111 eggsetup.py script to build lightweight eggs.
1106
1112
1107 * Applied changesets 1062 and 1064 before 0.7.1 release.
1113 * Applied changesets 1062 and 1064 before 0.7.1 release.
1108
1114
1109 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1115 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1110 see the raw input history (without conversions like %ls ->
1116 see the raw input history (without conversions like %ls ->
1111 ipmagic("ls")). After a request from W. Stein, SAGE
1117 ipmagic("ls")). After a request from W. Stein, SAGE
1112 (http://modular.ucsd.edu/sage) developer. This information is
1118 (http://modular.ucsd.edu/sage) developer. This information is
1113 stored in the input_hist_raw attribute of the IPython instance, so
1119 stored in the input_hist_raw attribute of the IPython instance, so
1114 developers can access it if needed (it's an InputList instance).
1120 developers can access it if needed (it's an InputList instance).
1115
1121
1116 * Versionstring = 0.7.2.svn
1122 * Versionstring = 0.7.2.svn
1117
1123
1118 * eggsetup.py: A separate script for constructing eggs, creates
1124 * eggsetup.py: A separate script for constructing eggs, creates
1119 proper launch scripts even on Windows (an .exe file in
1125 proper launch scripts even on Windows (an .exe file in
1120 \python24\scripts).
1126 \python24\scripts).
1121
1127
1122 * ipapi.py: launch_new_instance, launch entry point needed for the
1128 * ipapi.py: launch_new_instance, launch entry point needed for the
1123 egg.
1129 egg.
1124
1130
1125 2006-01-23 Ville Vainio <vivainio@gmail.com>
1131 2006-01-23 Ville Vainio <vivainio@gmail.com>
1126
1132
1127 * Added %cpaste magic for pasting python code
1133 * Added %cpaste magic for pasting python code
1128
1134
1129 2006-01-22 Ville Vainio <vivainio@gmail.com>
1135 2006-01-22 Ville Vainio <vivainio@gmail.com>
1130
1136
1131 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1137 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1132
1138
1133 * Versionstring = 0.7.2.svn
1139 * Versionstring = 0.7.2.svn
1134
1140
1135 * eggsetup.py: A separate script for constructing eggs, creates
1141 * eggsetup.py: A separate script for constructing eggs, creates
1136 proper launch scripts even on Windows (an .exe file in
1142 proper launch scripts even on Windows (an .exe file in
1137 \python24\scripts).
1143 \python24\scripts).
1138
1144
1139 * ipapi.py: launch_new_instance, launch entry point needed for the
1145 * ipapi.py: launch_new_instance, launch entry point needed for the
1140 egg.
1146 egg.
1141
1147
1142 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1148 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1143
1149
1144 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1150 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1145 %pfile foo would print the file for foo even if it was a binary.
1151 %pfile foo would print the file for foo even if it was a binary.
1146 Now, extensions '.so' and '.dll' are skipped.
1152 Now, extensions '.so' and '.dll' are skipped.
1147
1153
1148 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1154 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1149 bug, where macros would fail in all threaded modes. I'm not 100%
1155 bug, where macros would fail in all threaded modes. I'm not 100%
1150 sure, so I'm going to put out an rc instead of making a release
1156 sure, so I'm going to put out an rc instead of making a release
1151 today, and wait for feedback for at least a few days.
1157 today, and wait for feedback for at least a few days.
1152
1158
1153 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1159 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1154 it...) the handling of pasting external code with autoindent on.
1160 it...) the handling of pasting external code with autoindent on.
1155 To get out of a multiline input, the rule will appear for most
1161 To get out of a multiline input, the rule will appear for most
1156 users unchanged: two blank lines or change the indent level
1162 users unchanged: two blank lines or change the indent level
1157 proposed by IPython. But there is a twist now: you can
1163 proposed by IPython. But there is a twist now: you can
1158 add/subtract only *one or two spaces*. If you add/subtract three
1164 add/subtract only *one or two spaces*. If you add/subtract three
1159 or more (unless you completely delete the line), IPython will
1165 or more (unless you completely delete the line), IPython will
1160 accept that line, and you'll need to enter a second one of pure
1166 accept that line, and you'll need to enter a second one of pure
1161 whitespace. I know it sounds complicated, but I can't find a
1167 whitespace. I know it sounds complicated, but I can't find a
1162 different solution that covers all the cases, with the right
1168 different solution that covers all the cases, with the right
1163 heuristics. Hopefully in actual use, nobody will really notice
1169 heuristics. Hopefully in actual use, nobody will really notice
1164 all these strange rules and things will 'just work'.
1170 all these strange rules and things will 'just work'.
1165
1171
1166 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1172 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1167
1173
1168 * IPython/iplib.py (interact): catch exceptions which can be
1174 * IPython/iplib.py (interact): catch exceptions which can be
1169 triggered asynchronously by signal handlers. Thanks to an
1175 triggered asynchronously by signal handlers. Thanks to an
1170 automatic crash report, submitted by Colin Kingsley
1176 automatic crash report, submitted by Colin Kingsley
1171 <tercel-AT-gentoo.org>.
1177 <tercel-AT-gentoo.org>.
1172
1178
1173 2006-01-20 Ville Vainio <vivainio@gmail.com>
1179 2006-01-20 Ville Vainio <vivainio@gmail.com>
1174
1180
1175 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1181 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1176 (%rehashdir, very useful, try it out) of how to extend ipython
1182 (%rehashdir, very useful, try it out) of how to extend ipython
1177 with new magics. Also added Extensions dir to pythonpath to make
1183 with new magics. Also added Extensions dir to pythonpath to make
1178 importing extensions easy.
1184 importing extensions easy.
1179
1185
1180 * %store now complains when trying to store interactively declared
1186 * %store now complains when trying to store interactively declared
1181 classes / instances of those classes.
1187 classes / instances of those classes.
1182
1188
1183 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1189 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1184 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1190 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1185 if they exist, and ipy_user_conf.py with some defaults is created for
1191 if they exist, and ipy_user_conf.py with some defaults is created for
1186 the user.
1192 the user.
1187
1193
1188 * Startup rehashing done by the config file, not InterpreterExec.
1194 * Startup rehashing done by the config file, not InterpreterExec.
1189 This means system commands are available even without selecting the
1195 This means system commands are available even without selecting the
1190 pysh profile. It's the sensible default after all.
1196 pysh profile. It's the sensible default after all.
1191
1197
1192 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1198 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1193
1199
1194 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1200 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1195 multiline code with autoindent on working. But I am really not
1201 multiline code with autoindent on working. But I am really not
1196 sure, so this needs more testing. Will commit a debug-enabled
1202 sure, so this needs more testing. Will commit a debug-enabled
1197 version for now, while I test it some more, so that Ville and
1203 version for now, while I test it some more, so that Ville and
1198 others may also catch any problems. Also made
1204 others may also catch any problems. Also made
1199 self.indent_current_str() a method, to ensure that there's no
1205 self.indent_current_str() a method, to ensure that there's no
1200 chance of the indent space count and the corresponding string
1206 chance of the indent space count and the corresponding string
1201 falling out of sync. All code needing the string should just call
1207 falling out of sync. All code needing the string should just call
1202 the method.
1208 the method.
1203
1209
1204 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1210 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1205
1211
1206 * IPython/Magic.py (magic_edit): fix check for when users don't
1212 * IPython/Magic.py (magic_edit): fix check for when users don't
1207 save their output files, the try/except was in the wrong section.
1213 save their output files, the try/except was in the wrong section.
1208
1214
1209 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1215 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1210
1216
1211 * IPython/Magic.py (magic_run): fix __file__ global missing from
1217 * IPython/Magic.py (magic_run): fix __file__ global missing from
1212 script's namespace when executed via %run. After a report by
1218 script's namespace when executed via %run. After a report by
1213 Vivian.
1219 Vivian.
1214
1220
1215 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1221 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1216 when using python 2.4. The parent constructor changed in 2.4, and
1222 when using python 2.4. The parent constructor changed in 2.4, and
1217 we need to track it directly (we can't call it, as it messes up
1223 we need to track it directly (we can't call it, as it messes up
1218 readline and tab-completion inside our pdb would stop working).
1224 readline and tab-completion inside our pdb would stop working).
1219 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1225 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1220
1226
1221 2006-01-16 Ville Vainio <vivainio@gmail.com>
1227 2006-01-16 Ville Vainio <vivainio@gmail.com>
1222
1228
1223 * Ipython/magic.py: Reverted back to old %edit functionality
1229 * Ipython/magic.py: Reverted back to old %edit functionality
1224 that returns file contents on exit.
1230 that returns file contents on exit.
1225
1231
1226 * IPython/path.py: Added Jason Orendorff's "path" module to
1232 * IPython/path.py: Added Jason Orendorff's "path" module to
1227 IPython tree, http://www.jorendorff.com/articles/python/path/.
1233 IPython tree, http://www.jorendorff.com/articles/python/path/.
1228 You can get path objects conveniently through %sc, and !!, e.g.:
1234 You can get path objects conveniently through %sc, and !!, e.g.:
1229 sc files=ls
1235 sc files=ls
1230 for p in files.paths: # or files.p
1236 for p in files.paths: # or files.p
1231 print p,p.mtime
1237 print p,p.mtime
1232
1238
1233 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1239 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1234 now work again without considering the exclusion regexp -
1240 now work again without considering the exclusion regexp -
1235 hence, things like ',foo my/path' turn to 'foo("my/path")'
1241 hence, things like ',foo my/path' turn to 'foo("my/path")'
1236 instead of syntax error.
1242 instead of syntax error.
1237
1243
1238
1244
1239 2006-01-14 Ville Vainio <vivainio@gmail.com>
1245 2006-01-14 Ville Vainio <vivainio@gmail.com>
1240
1246
1241 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1247 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1242 ipapi decorators for python 2.4 users, options() provides access to rc
1248 ipapi decorators for python 2.4 users, options() provides access to rc
1243 data.
1249 data.
1244
1250
1245 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1251 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1246 as path separators (even on Linux ;-). Space character after
1252 as path separators (even on Linux ;-). Space character after
1247 backslash (as yielded by tab completer) is still space;
1253 backslash (as yielded by tab completer) is still space;
1248 "%cd long\ name" works as expected.
1254 "%cd long\ name" works as expected.
1249
1255
1250 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1256 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1251 as "chain of command", with priority. API stays the same,
1257 as "chain of command", with priority. API stays the same,
1252 TryNext exception raised by a hook function signals that
1258 TryNext exception raised by a hook function signals that
1253 current hook failed and next hook should try handling it, as
1259 current hook failed and next hook should try handling it, as
1254 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1260 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1255 requested configurable display hook, which is now implemented.
1261 requested configurable display hook, which is now implemented.
1256
1262
1257 2006-01-13 Ville Vainio <vivainio@gmail.com>
1263 2006-01-13 Ville Vainio <vivainio@gmail.com>
1258
1264
1259 * IPython/platutils*.py: platform specific utility functions,
1265 * IPython/platutils*.py: platform specific utility functions,
1260 so far only set_term_title is implemented (change terminal
1266 so far only set_term_title is implemented (change terminal
1261 label in windowing systems). %cd now changes the title to
1267 label in windowing systems). %cd now changes the title to
1262 current dir.
1268 current dir.
1263
1269
1264 * IPython/Release.py: Added myself to "authors" list,
1270 * IPython/Release.py: Added myself to "authors" list,
1265 had to create new files.
1271 had to create new files.
1266
1272
1267 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1273 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1268 shell escape; not a known bug but had potential to be one in the
1274 shell escape; not a known bug but had potential to be one in the
1269 future.
1275 future.
1270
1276
1271 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1277 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1272 extension API for IPython! See the module for usage example. Fix
1278 extension API for IPython! See the module for usage example. Fix
1273 OInspect for docstring-less magic functions.
1279 OInspect for docstring-less magic functions.
1274
1280
1275
1281
1276 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1282 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1277
1283
1278 * IPython/iplib.py (raw_input): temporarily deactivate all
1284 * IPython/iplib.py (raw_input): temporarily deactivate all
1279 attempts at allowing pasting of code with autoindent on. It
1285 attempts at allowing pasting of code with autoindent on. It
1280 introduced bugs (reported by Prabhu) and I can't seem to find a
1286 introduced bugs (reported by Prabhu) and I can't seem to find a
1281 robust combination which works in all cases. Will have to revisit
1287 robust combination which works in all cases. Will have to revisit
1282 later.
1288 later.
1283
1289
1284 * IPython/genutils.py: remove isspace() function. We've dropped
1290 * IPython/genutils.py: remove isspace() function. We've dropped
1285 2.2 compatibility, so it's OK to use the string method.
1291 2.2 compatibility, so it's OK to use the string method.
1286
1292
1287 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1293 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1288
1294
1289 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1295 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1290 matching what NOT to autocall on, to include all python binary
1296 matching what NOT to autocall on, to include all python binary
1291 operators (including things like 'and', 'or', 'is' and 'in').
1297 operators (including things like 'and', 'or', 'is' and 'in').
1292 Prompted by a bug report on 'foo & bar', but I realized we had
1298 Prompted by a bug report on 'foo & bar', but I realized we had
1293 many more potential bug cases with other operators. The regexp is
1299 many more potential bug cases with other operators. The regexp is
1294 self.re_exclude_auto, it's fairly commented.
1300 self.re_exclude_auto, it's fairly commented.
1295
1301
1296 2006-01-12 Ville Vainio <vivainio@gmail.com>
1302 2006-01-12 Ville Vainio <vivainio@gmail.com>
1297
1303
1298 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1304 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1299 Prettified and hardened string/backslash quoting with ipsystem(),
1305 Prettified and hardened string/backslash quoting with ipsystem(),
1300 ipalias() and ipmagic(). Now even \ characters are passed to
1306 ipalias() and ipmagic(). Now even \ characters are passed to
1301 %magics, !shell escapes and aliases exactly as they are in the
1307 %magics, !shell escapes and aliases exactly as they are in the
1302 ipython command line. Should improve backslash experience,
1308 ipython command line. Should improve backslash experience,
1303 particularly in Windows (path delimiter for some commands that
1309 particularly in Windows (path delimiter for some commands that
1304 won't understand '/'), but Unix benefits as well (regexps). %cd
1310 won't understand '/'), but Unix benefits as well (regexps). %cd
1305 magic still doesn't support backslash path delimiters, though. Also
1311 magic still doesn't support backslash path delimiters, though. Also
1306 deleted all pretense of supporting multiline command strings in
1312 deleted all pretense of supporting multiline command strings in
1307 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1313 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1308
1314
1309 * doc/build_doc_instructions.txt added. Documentation on how to
1315 * doc/build_doc_instructions.txt added. Documentation on how to
1310 use doc/update_manual.py, added yesterday. Both files contributed
1316 use doc/update_manual.py, added yesterday. Both files contributed
1311 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1317 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1312 doc/*.sh for deprecation at a later date.
1318 doc/*.sh for deprecation at a later date.
1313
1319
1314 * /ipython.py Added ipython.py to root directory for
1320 * /ipython.py Added ipython.py to root directory for
1315 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1321 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1316 ipython.py) and development convenience (no need to keep doing
1322 ipython.py) and development convenience (no need to keep doing
1317 "setup.py install" between changes).
1323 "setup.py install" between changes).
1318
1324
1319 * Made ! and !! shell escapes work (again) in multiline expressions:
1325 * Made ! and !! shell escapes work (again) in multiline expressions:
1320 if 1:
1326 if 1:
1321 !ls
1327 !ls
1322 !!ls
1328 !!ls
1323
1329
1324 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1330 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1325
1331
1326 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1332 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1327 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1333 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1328 module in case-insensitive installation. Was causing crashes
1334 module in case-insensitive installation. Was causing crashes
1329 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1335 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1330
1336
1331 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1337 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1332 <marienz-AT-gentoo.org>, closes
1338 <marienz-AT-gentoo.org>, closes
1333 http://www.scipy.net/roundup/ipython/issue51.
1339 http://www.scipy.net/roundup/ipython/issue51.
1334
1340
1335 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1341 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1336
1342
1337 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1343 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1338 problem of excessive CPU usage under *nix and keyboard lag under
1344 problem of excessive CPU usage under *nix and keyboard lag under
1339 win32.
1345 win32.
1340
1346
1341 2006-01-10 *** Released version 0.7.0
1347 2006-01-10 *** Released version 0.7.0
1342
1348
1343 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1349 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1344
1350
1345 * IPython/Release.py (revision): tag version number to 0.7.0,
1351 * IPython/Release.py (revision): tag version number to 0.7.0,
1346 ready for release.
1352 ready for release.
1347
1353
1348 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1354 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1349 it informs the user of the name of the temp. file used. This can
1355 it informs the user of the name of the temp. file used. This can
1350 help if you decide later to reuse that same file, so you know
1356 help if you decide later to reuse that same file, so you know
1351 where to copy the info from.
1357 where to copy the info from.
1352
1358
1353 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1359 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1354
1360
1355 * setup_bdist_egg.py: little script to build an egg. Added
1361 * setup_bdist_egg.py: little script to build an egg. Added
1356 support in the release tools as well.
1362 support in the release tools as well.
1357
1363
1358 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1364 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1359
1365
1360 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1366 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1361 version selection (new -wxversion command line and ipythonrc
1367 version selection (new -wxversion command line and ipythonrc
1362 parameter). Patch contributed by Arnd Baecker
1368 parameter). Patch contributed by Arnd Baecker
1363 <arnd.baecker-AT-web.de>.
1369 <arnd.baecker-AT-web.de>.
1364
1370
1365 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1371 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1366 embedded instances, for variables defined at the interactive
1372 embedded instances, for variables defined at the interactive
1367 prompt of the embedded ipython. Reported by Arnd.
1373 prompt of the embedded ipython. Reported by Arnd.
1368
1374
1369 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1375 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1370 it can be used as a (stateful) toggle, or with a direct parameter.
1376 it can be used as a (stateful) toggle, or with a direct parameter.
1371
1377
1372 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1378 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1373 could be triggered in certain cases and cause the traceback
1379 could be triggered in certain cases and cause the traceback
1374 printer not to work.
1380 printer not to work.
1375
1381
1376 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1382 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1377
1383
1378 * IPython/iplib.py (_should_recompile): Small fix, closes
1384 * IPython/iplib.py (_should_recompile): Small fix, closes
1379 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1385 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1380
1386
1381 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1387 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1382
1388
1383 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1389 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1384 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1390 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1385 Moad for help with tracking it down.
1391 Moad for help with tracking it down.
1386
1392
1387 * IPython/iplib.py (handle_auto): fix autocall handling for
1393 * IPython/iplib.py (handle_auto): fix autocall handling for
1388 objects which support BOTH __getitem__ and __call__ (so that f [x]
1394 objects which support BOTH __getitem__ and __call__ (so that f [x]
1389 is left alone, instead of becoming f([x]) automatically).
1395 is left alone, instead of becoming f([x]) automatically).
1390
1396
1391 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1397 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1392 Ville's patch.
1398 Ville's patch.
1393
1399
1394 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1400 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1395
1401
1396 * IPython/iplib.py (handle_auto): changed autocall semantics to
1402 * IPython/iplib.py (handle_auto): changed autocall semantics to
1397 include 'smart' mode, where the autocall transformation is NOT
1403 include 'smart' mode, where the autocall transformation is NOT
1398 applied if there are no arguments on the line. This allows you to
1404 applied if there are no arguments on the line. This allows you to
1399 just type 'foo' if foo is a callable to see its internal form,
1405 just type 'foo' if foo is a callable to see its internal form,
1400 instead of having it called with no arguments (typically a
1406 instead of having it called with no arguments (typically a
1401 mistake). The old 'full' autocall still exists: for that, you
1407 mistake). The old 'full' autocall still exists: for that, you
1402 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1408 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1403
1409
1404 * IPython/completer.py (Completer.attr_matches): add
1410 * IPython/completer.py (Completer.attr_matches): add
1405 tab-completion support for Enthoughts' traits. After a report by
1411 tab-completion support for Enthoughts' traits. After a report by
1406 Arnd and a patch by Prabhu.
1412 Arnd and a patch by Prabhu.
1407
1413
1408 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1414 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1409
1415
1410 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1416 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1411 Schmolck's patch to fix inspect.getinnerframes().
1417 Schmolck's patch to fix inspect.getinnerframes().
1412
1418
1413 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1419 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1414 for embedded instances, regarding handling of namespaces and items
1420 for embedded instances, regarding handling of namespaces and items
1415 added to the __builtin__ one. Multiple embedded instances and
1421 added to the __builtin__ one. Multiple embedded instances and
1416 recursive embeddings should work better now (though I'm not sure
1422 recursive embeddings should work better now (though I'm not sure
1417 I've got all the corner cases fixed, that code is a bit of a brain
1423 I've got all the corner cases fixed, that code is a bit of a brain
1418 twister).
1424 twister).
1419
1425
1420 * IPython/Magic.py (magic_edit): added support to edit in-memory
1426 * IPython/Magic.py (magic_edit): added support to edit in-memory
1421 macros (automatically creates the necessary temp files). %edit
1427 macros (automatically creates the necessary temp files). %edit
1422 also doesn't return the file contents anymore, it's just noise.
1428 also doesn't return the file contents anymore, it's just noise.
1423
1429
1424 * IPython/completer.py (Completer.attr_matches): revert change to
1430 * IPython/completer.py (Completer.attr_matches): revert change to
1425 complete only on attributes listed in __all__. I realized it
1431 complete only on attributes listed in __all__. I realized it
1426 cripples the tab-completion system as a tool for exploring the
1432 cripples the tab-completion system as a tool for exploring the
1427 internals of unknown libraries (it renders any non-__all__
1433 internals of unknown libraries (it renders any non-__all__
1428 attribute off-limits). I got bit by this when trying to see
1434 attribute off-limits). I got bit by this when trying to see
1429 something inside the dis module.
1435 something inside the dis module.
1430
1436
1431 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1437 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1432
1438
1433 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1439 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1434 namespace for users and extension writers to hold data in. This
1440 namespace for users and extension writers to hold data in. This
1435 follows the discussion in
1441 follows the discussion in
1436 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1442 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1437
1443
1438 * IPython/completer.py (IPCompleter.complete): small patch to help
1444 * IPython/completer.py (IPCompleter.complete): small patch to help
1439 tab-completion under Emacs, after a suggestion by John Barnard
1445 tab-completion under Emacs, after a suggestion by John Barnard
1440 <barnarj-AT-ccf.org>.
1446 <barnarj-AT-ccf.org>.
1441
1447
1442 * IPython/Magic.py (Magic.extract_input_slices): added support for
1448 * IPython/Magic.py (Magic.extract_input_slices): added support for
1443 the slice notation in magics to use N-M to represent numbers N...M
1449 the slice notation in magics to use N-M to represent numbers N...M
1444 (closed endpoints). This is used by %macro and %save.
1450 (closed endpoints). This is used by %macro and %save.
1445
1451
1446 * IPython/completer.py (Completer.attr_matches): for modules which
1452 * IPython/completer.py (Completer.attr_matches): for modules which
1447 define __all__, complete only on those. After a patch by Jeffrey
1453 define __all__, complete only on those. After a patch by Jeffrey
1448 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1454 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1449 speed up this routine.
1455 speed up this routine.
1450
1456
1451 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1457 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1452 don't know if this is the end of it, but the behavior now is
1458 don't know if this is the end of it, but the behavior now is
1453 certainly much more correct. Note that coupled with macros,
1459 certainly much more correct. Note that coupled with macros,
1454 slightly surprising (at first) behavior may occur: a macro will in
1460 slightly surprising (at first) behavior may occur: a macro will in
1455 general expand to multiple lines of input, so upon exiting, the
1461 general expand to multiple lines of input, so upon exiting, the
1456 in/out counters will both be bumped by the corresponding amount
1462 in/out counters will both be bumped by the corresponding amount
1457 (as if the macro's contents had been typed interactively). Typing
1463 (as if the macro's contents had been typed interactively). Typing
1458 %hist will reveal the intermediate (silently processed) lines.
1464 %hist will reveal the intermediate (silently processed) lines.
1459
1465
1460 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1466 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1461 pickle to fail (%run was overwriting __main__ and not restoring
1467 pickle to fail (%run was overwriting __main__ and not restoring
1462 it, but pickle relies on __main__ to operate).
1468 it, but pickle relies on __main__ to operate).
1463
1469
1464 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1470 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1465 using properties, but forgot to make the main InteractiveShell
1471 using properties, but forgot to make the main InteractiveShell
1466 class a new-style class. Properties fail silently, and
1472 class a new-style class. Properties fail silently, and
1467 mysteriously, with old-style class (getters work, but
1473 mysteriously, with old-style class (getters work, but
1468 setters don't do anything).
1474 setters don't do anything).
1469
1475
1470 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1476 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1471
1477
1472 * IPython/Magic.py (magic_history): fix history reporting bug (I
1478 * IPython/Magic.py (magic_history): fix history reporting bug (I
1473 know some nasties are still there, I just can't seem to find a
1479 know some nasties are still there, I just can't seem to find a
1474 reproducible test case to track them down; the input history is
1480 reproducible test case to track them down; the input history is
1475 falling out of sync...)
1481 falling out of sync...)
1476
1482
1477 * IPython/iplib.py (handle_shell_escape): fix bug where both
1483 * IPython/iplib.py (handle_shell_escape): fix bug where both
1478 aliases and system accesses where broken for indented code (such
1484 aliases and system accesses where broken for indented code (such
1479 as loops).
1485 as loops).
1480
1486
1481 * IPython/genutils.py (shell): fix small but critical bug for
1487 * IPython/genutils.py (shell): fix small but critical bug for
1482 win32 system access.
1488 win32 system access.
1483
1489
1484 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1490 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1485
1491
1486 * IPython/iplib.py (showtraceback): remove use of the
1492 * IPython/iplib.py (showtraceback): remove use of the
1487 sys.last_{type/value/traceback} structures, which are non
1493 sys.last_{type/value/traceback} structures, which are non
1488 thread-safe.
1494 thread-safe.
1489 (_prefilter): change control flow to ensure that we NEVER
1495 (_prefilter): change control flow to ensure that we NEVER
1490 introspect objects when autocall is off. This will guarantee that
1496 introspect objects when autocall is off. This will guarantee that
1491 having an input line of the form 'x.y', where access to attribute
1497 having an input line of the form 'x.y', where access to attribute
1492 'y' has side effects, doesn't trigger the side effect TWICE. It
1498 'y' has side effects, doesn't trigger the side effect TWICE. It
1493 is important to note that, with autocall on, these side effects
1499 is important to note that, with autocall on, these side effects
1494 can still happen.
1500 can still happen.
1495 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1501 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1496 trio. IPython offers these three kinds of special calls which are
1502 trio. IPython offers these three kinds of special calls which are
1497 not python code, and it's a good thing to have their call method
1503 not python code, and it's a good thing to have their call method
1498 be accessible as pure python functions (not just special syntax at
1504 be accessible as pure python functions (not just special syntax at
1499 the command line). It gives us a better internal implementation
1505 the command line). It gives us a better internal implementation
1500 structure, as well as exposing these for user scripting more
1506 structure, as well as exposing these for user scripting more
1501 cleanly.
1507 cleanly.
1502
1508
1503 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1509 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1504 file. Now that they'll be more likely to be used with the
1510 file. Now that they'll be more likely to be used with the
1505 persistance system (%store), I want to make sure their module path
1511 persistance system (%store), I want to make sure their module path
1506 doesn't change in the future, so that we don't break things for
1512 doesn't change in the future, so that we don't break things for
1507 users' persisted data.
1513 users' persisted data.
1508
1514
1509 * IPython/iplib.py (autoindent_update): move indentation
1515 * IPython/iplib.py (autoindent_update): move indentation
1510 management into the _text_ processing loop, not the keyboard
1516 management into the _text_ processing loop, not the keyboard
1511 interactive one. This is necessary to correctly process non-typed
1517 interactive one. This is necessary to correctly process non-typed
1512 multiline input (such as macros).
1518 multiline input (such as macros).
1513
1519
1514 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1520 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1515 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1521 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1516 which was producing problems in the resulting manual.
1522 which was producing problems in the resulting manual.
1517 (magic_whos): improve reporting of instances (show their class,
1523 (magic_whos): improve reporting of instances (show their class,
1518 instead of simply printing 'instance' which isn't terribly
1524 instead of simply printing 'instance' which isn't terribly
1519 informative).
1525 informative).
1520
1526
1521 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1527 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1522 (minor mods) to support network shares under win32.
1528 (minor mods) to support network shares under win32.
1523
1529
1524 * IPython/winconsole.py (get_console_size): add new winconsole
1530 * IPython/winconsole.py (get_console_size): add new winconsole
1525 module and fixes to page_dumb() to improve its behavior under
1531 module and fixes to page_dumb() to improve its behavior under
1526 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1532 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1527
1533
1528 * IPython/Magic.py (Macro): simplified Macro class to just
1534 * IPython/Magic.py (Macro): simplified Macro class to just
1529 subclass list. We've had only 2.2 compatibility for a very long
1535 subclass list. We've had only 2.2 compatibility for a very long
1530 time, yet I was still avoiding subclassing the builtin types. No
1536 time, yet I was still avoiding subclassing the builtin types. No
1531 more (I'm also starting to use properties, though I won't shift to
1537 more (I'm also starting to use properties, though I won't shift to
1532 2.3-specific features quite yet).
1538 2.3-specific features quite yet).
1533 (magic_store): added Ville's patch for lightweight variable
1539 (magic_store): added Ville's patch for lightweight variable
1534 persistence, after a request on the user list by Matt Wilkie
1540 persistence, after a request on the user list by Matt Wilkie
1535 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1541 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1536 details.
1542 details.
1537
1543
1538 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1544 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1539 changed the default logfile name from 'ipython.log' to
1545 changed the default logfile name from 'ipython.log' to
1540 'ipython_log.py'. These logs are real python files, and now that
1546 'ipython_log.py'. These logs are real python files, and now that
1541 we have much better multiline support, people are more likely to
1547 we have much better multiline support, people are more likely to
1542 want to use them as such. Might as well name them correctly.
1548 want to use them as such. Might as well name them correctly.
1543
1549
1544 * IPython/Magic.py: substantial cleanup. While we can't stop
1550 * IPython/Magic.py: substantial cleanup. While we can't stop
1545 using magics as mixins, due to the existing customizations 'out
1551 using magics as mixins, due to the existing customizations 'out
1546 there' which rely on the mixin naming conventions, at least I
1552 there' which rely on the mixin naming conventions, at least I
1547 cleaned out all cross-class name usage. So once we are OK with
1553 cleaned out all cross-class name usage. So once we are OK with
1548 breaking compatibility, the two systems can be separated.
1554 breaking compatibility, the two systems can be separated.
1549
1555
1550 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1556 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1551 anymore, and the class is a fair bit less hideous as well. New
1557 anymore, and the class is a fair bit less hideous as well. New
1552 features were also introduced: timestamping of input, and logging
1558 features were also introduced: timestamping of input, and logging
1553 of output results. These are user-visible with the -t and -o
1559 of output results. These are user-visible with the -t and -o
1554 options to %logstart. Closes
1560 options to %logstart. Closes
1555 http://www.scipy.net/roundup/ipython/issue11 and a request by
1561 http://www.scipy.net/roundup/ipython/issue11 and a request by
1556 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1562 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1557
1563
1558 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1564 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1559
1565
1560 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1566 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1561 better handle backslashes in paths. See the thread 'More Windows
1567 better handle backslashes in paths. See the thread 'More Windows
1562 questions part 2 - \/ characters revisited' on the iypthon user
1568 questions part 2 - \/ characters revisited' on the iypthon user
1563 list:
1569 list:
1564 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1570 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1565
1571
1566 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1572 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1567
1573
1568 (InteractiveShell.__init__): change threaded shells to not use the
1574 (InteractiveShell.__init__): change threaded shells to not use the
1569 ipython crash handler. This was causing more problems than not,
1575 ipython crash handler. This was causing more problems than not,
1570 as exceptions in the main thread (GUI code, typically) would
1576 as exceptions in the main thread (GUI code, typically) would
1571 always show up as a 'crash', when they really weren't.
1577 always show up as a 'crash', when they really weren't.
1572
1578
1573 The colors and exception mode commands (%colors/%xmode) have been
1579 The colors and exception mode commands (%colors/%xmode) have been
1574 synchronized to also take this into account, so users can get
1580 synchronized to also take this into account, so users can get
1575 verbose exceptions for their threaded code as well. I also added
1581 verbose exceptions for their threaded code as well. I also added
1576 support for activating pdb inside this exception handler as well,
1582 support for activating pdb inside this exception handler as well,
1577 so now GUI authors can use IPython's enhanced pdb at runtime.
1583 so now GUI authors can use IPython's enhanced pdb at runtime.
1578
1584
1579 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1585 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1580 true by default, and add it to the shipped ipythonrc file. Since
1586 true by default, and add it to the shipped ipythonrc file. Since
1581 this asks the user before proceeding, I think it's OK to make it
1587 this asks the user before proceeding, I think it's OK to make it
1582 true by default.
1588 true by default.
1583
1589
1584 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1590 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1585 of the previous special-casing of input in the eval loop. I think
1591 of the previous special-casing of input in the eval loop. I think
1586 this is cleaner, as they really are commands and shouldn't have
1592 this is cleaner, as they really are commands and shouldn't have
1587 a special role in the middle of the core code.
1593 a special role in the middle of the core code.
1588
1594
1589 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1595 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1590
1596
1591 * IPython/iplib.py (edit_syntax_error): added support for
1597 * IPython/iplib.py (edit_syntax_error): added support for
1592 automatically reopening the editor if the file had a syntax error
1598 automatically reopening the editor if the file had a syntax error
1593 in it. Thanks to scottt who provided the patch at:
1599 in it. Thanks to scottt who provided the patch at:
1594 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1600 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1595 version committed).
1601 version committed).
1596
1602
1597 * IPython/iplib.py (handle_normal): add suport for multi-line
1603 * IPython/iplib.py (handle_normal): add suport for multi-line
1598 input with emtpy lines. This fixes
1604 input with emtpy lines. This fixes
1599 http://www.scipy.net/roundup/ipython/issue43 and a similar
1605 http://www.scipy.net/roundup/ipython/issue43 and a similar
1600 discussion on the user list.
1606 discussion on the user list.
1601
1607
1602 WARNING: a behavior change is necessarily introduced to support
1608 WARNING: a behavior change is necessarily introduced to support
1603 blank lines: now a single blank line with whitespace does NOT
1609 blank lines: now a single blank line with whitespace does NOT
1604 break the input loop, which means that when autoindent is on, by
1610 break the input loop, which means that when autoindent is on, by
1605 default hitting return on the next (indented) line does NOT exit.
1611 default hitting return on the next (indented) line does NOT exit.
1606
1612
1607 Instead, to exit a multiline input you can either have:
1613 Instead, to exit a multiline input you can either have:
1608
1614
1609 - TWO whitespace lines (just hit return again), or
1615 - TWO whitespace lines (just hit return again), or
1610 - a single whitespace line of a different length than provided
1616 - a single whitespace line of a different length than provided
1611 by the autoindent (add or remove a space).
1617 by the autoindent (add or remove a space).
1612
1618
1613 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1619 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1614 module to better organize all readline-related functionality.
1620 module to better organize all readline-related functionality.
1615 I've deleted FlexCompleter and put all completion clases here.
1621 I've deleted FlexCompleter and put all completion clases here.
1616
1622
1617 * IPython/iplib.py (raw_input): improve indentation management.
1623 * IPython/iplib.py (raw_input): improve indentation management.
1618 It is now possible to paste indented code with autoindent on, and
1624 It is now possible to paste indented code with autoindent on, and
1619 the code is interpreted correctly (though it still looks bad on
1625 the code is interpreted correctly (though it still looks bad on
1620 screen, due to the line-oriented nature of ipython).
1626 screen, due to the line-oriented nature of ipython).
1621 (MagicCompleter.complete): change behavior so that a TAB key on an
1627 (MagicCompleter.complete): change behavior so that a TAB key on an
1622 otherwise empty line actually inserts a tab, instead of completing
1628 otherwise empty line actually inserts a tab, instead of completing
1623 on the entire global namespace. This makes it easier to use the
1629 on the entire global namespace. This makes it easier to use the
1624 TAB key for indentation. After a request by Hans Meine
1630 TAB key for indentation. After a request by Hans Meine
1625 <hans_meine-AT-gmx.net>
1631 <hans_meine-AT-gmx.net>
1626 (_prefilter): add support so that typing plain 'exit' or 'quit'
1632 (_prefilter): add support so that typing plain 'exit' or 'quit'
1627 does a sensible thing. Originally I tried to deviate as little as
1633 does a sensible thing. Originally I tried to deviate as little as
1628 possible from the default python behavior, but even that one may
1634 possible from the default python behavior, but even that one may
1629 change in this direction (thread on python-dev to that effect).
1635 change in this direction (thread on python-dev to that effect).
1630 Regardless, ipython should do the right thing even if CPython's
1636 Regardless, ipython should do the right thing even if CPython's
1631 '>>>' prompt doesn't.
1637 '>>>' prompt doesn't.
1632 (InteractiveShell): removed subclassing code.InteractiveConsole
1638 (InteractiveShell): removed subclassing code.InteractiveConsole
1633 class. By now we'd overridden just about all of its methods: I've
1639 class. By now we'd overridden just about all of its methods: I've
1634 copied the remaining two over, and now ipython is a standalone
1640 copied the remaining two over, and now ipython is a standalone
1635 class. This will provide a clearer picture for the chainsaw
1641 class. This will provide a clearer picture for the chainsaw
1636 branch refactoring.
1642 branch refactoring.
1637
1643
1638 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1644 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1639
1645
1640 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1646 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1641 failures for objects which break when dir() is called on them.
1647 failures for objects which break when dir() is called on them.
1642
1648
1643 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1649 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1644 distinct local and global namespaces in the completer API. This
1650 distinct local and global namespaces in the completer API. This
1645 change allows us to properly handle completion with distinct
1651 change allows us to properly handle completion with distinct
1646 scopes, including in embedded instances (this had never really
1652 scopes, including in embedded instances (this had never really
1647 worked correctly).
1653 worked correctly).
1648
1654
1649 Note: this introduces a change in the constructor for
1655 Note: this introduces a change in the constructor for
1650 MagicCompleter, as a new global_namespace parameter is now the
1656 MagicCompleter, as a new global_namespace parameter is now the
1651 second argument (the others were bumped one position).
1657 second argument (the others were bumped one position).
1652
1658
1653 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1659 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1654
1660
1655 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1661 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1656 embedded instances (which can be done now thanks to Vivian's
1662 embedded instances (which can be done now thanks to Vivian's
1657 frame-handling fixes for pdb).
1663 frame-handling fixes for pdb).
1658 (InteractiveShell.__init__): Fix namespace handling problem in
1664 (InteractiveShell.__init__): Fix namespace handling problem in
1659 embedded instances. We were overwriting __main__ unconditionally,
1665 embedded instances. We were overwriting __main__ unconditionally,
1660 and this should only be done for 'full' (non-embedded) IPython;
1666 and this should only be done for 'full' (non-embedded) IPython;
1661 embedded instances must respect the caller's __main__. Thanks to
1667 embedded instances must respect the caller's __main__. Thanks to
1662 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1668 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1663
1669
1664 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1670 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1665
1671
1666 * setup.py: added download_url to setup(). This registers the
1672 * setup.py: added download_url to setup(). This registers the
1667 download address at PyPI, which is not only useful to humans
1673 download address at PyPI, which is not only useful to humans
1668 browsing the site, but is also picked up by setuptools (the Eggs
1674 browsing the site, but is also picked up by setuptools (the Eggs
1669 machinery). Thanks to Ville and R. Kern for the info/discussion
1675 machinery). Thanks to Ville and R. Kern for the info/discussion
1670 on this.
1676 on this.
1671
1677
1672 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1678 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1673
1679
1674 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1680 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1675 This brings a lot of nice functionality to the pdb mode, which now
1681 This brings a lot of nice functionality to the pdb mode, which now
1676 has tab-completion, syntax highlighting, and better stack handling
1682 has tab-completion, syntax highlighting, and better stack handling
1677 than before. Many thanks to Vivian De Smedt
1683 than before. Many thanks to Vivian De Smedt
1678 <vivian-AT-vdesmedt.com> for the original patches.
1684 <vivian-AT-vdesmedt.com> for the original patches.
1679
1685
1680 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1686 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1681
1687
1682 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1688 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1683 sequence to consistently accept the banner argument. The
1689 sequence to consistently accept the banner argument. The
1684 inconsistency was tripping SAGE, thanks to Gary Zablackis
1690 inconsistency was tripping SAGE, thanks to Gary Zablackis
1685 <gzabl-AT-yahoo.com> for the report.
1691 <gzabl-AT-yahoo.com> for the report.
1686
1692
1687 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1693 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1688
1694
1689 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1695 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1690 Fix bug where a naked 'alias' call in the ipythonrc file would
1696 Fix bug where a naked 'alias' call in the ipythonrc file would
1691 cause a crash. Bug reported by Jorgen Stenarson.
1697 cause a crash. Bug reported by Jorgen Stenarson.
1692
1698
1693 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1699 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1694
1700
1695 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1701 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1696 startup time.
1702 startup time.
1697
1703
1698 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1704 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1699 instances had introduced a bug with globals in normal code. Now
1705 instances had introduced a bug with globals in normal code. Now
1700 it's working in all cases.
1706 it's working in all cases.
1701
1707
1702 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1708 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1703 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1709 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1704 has been introduced to set the default case sensitivity of the
1710 has been introduced to set the default case sensitivity of the
1705 searches. Users can still select either mode at runtime on a
1711 searches. Users can still select either mode at runtime on a
1706 per-search basis.
1712 per-search basis.
1707
1713
1708 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1714 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1709
1715
1710 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1716 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1711 attributes in wildcard searches for subclasses. Modified version
1717 attributes in wildcard searches for subclasses. Modified version
1712 of a patch by Jorgen.
1718 of a patch by Jorgen.
1713
1719
1714 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1720 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1715
1721
1716 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1722 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1717 embedded instances. I added a user_global_ns attribute to the
1723 embedded instances. I added a user_global_ns attribute to the
1718 InteractiveShell class to handle this.
1724 InteractiveShell class to handle this.
1719
1725
1720 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1726 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1721
1727
1722 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1728 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1723 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1729 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1724 (reported under win32, but may happen also in other platforms).
1730 (reported under win32, but may happen also in other platforms).
1725 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1731 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1726
1732
1727 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1733 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1728
1734
1729 * IPython/Magic.py (magic_psearch): new support for wildcard
1735 * IPython/Magic.py (magic_psearch): new support for wildcard
1730 patterns. Now, typing ?a*b will list all names which begin with a
1736 patterns. Now, typing ?a*b will list all names which begin with a
1731 and end in b, for example. The %psearch magic has full
1737 and end in b, for example. The %psearch magic has full
1732 docstrings. Many thanks to JΓΆrgen Stenarson
1738 docstrings. Many thanks to JΓΆrgen Stenarson
1733 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1739 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1734 implementing this functionality.
1740 implementing this functionality.
1735
1741
1736 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1742 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1737
1743
1738 * Manual: fixed long-standing annoyance of double-dashes (as in
1744 * Manual: fixed long-standing annoyance of double-dashes (as in
1739 --prefix=~, for example) being stripped in the HTML version. This
1745 --prefix=~, for example) being stripped in the HTML version. This
1740 is a latex2html bug, but a workaround was provided. Many thanks
1746 is a latex2html bug, but a workaround was provided. Many thanks
1741 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1747 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1742 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1748 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1743 rolling. This seemingly small issue had tripped a number of users
1749 rolling. This seemingly small issue had tripped a number of users
1744 when first installing, so I'm glad to see it gone.
1750 when first installing, so I'm glad to see it gone.
1745
1751
1746 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1752 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1747
1753
1748 * IPython/Extensions/numeric_formats.py: fix missing import,
1754 * IPython/Extensions/numeric_formats.py: fix missing import,
1749 reported by Stephen Walton.
1755 reported by Stephen Walton.
1750
1756
1751 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1757 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1752
1758
1753 * IPython/demo.py: finish demo module, fully documented now.
1759 * IPython/demo.py: finish demo module, fully documented now.
1754
1760
1755 * IPython/genutils.py (file_read): simple little utility to read a
1761 * IPython/genutils.py (file_read): simple little utility to read a
1756 file and ensure it's closed afterwards.
1762 file and ensure it's closed afterwards.
1757
1763
1758 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1764 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1759
1765
1760 * IPython/demo.py (Demo.__init__): added support for individually
1766 * IPython/demo.py (Demo.__init__): added support for individually
1761 tagging blocks for automatic execution.
1767 tagging blocks for automatic execution.
1762
1768
1763 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1769 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1764 syntax-highlighted python sources, requested by John.
1770 syntax-highlighted python sources, requested by John.
1765
1771
1766 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1772 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1767
1773
1768 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1774 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1769 finishing.
1775 finishing.
1770
1776
1771 * IPython/genutils.py (shlex_split): moved from Magic to here,
1777 * IPython/genutils.py (shlex_split): moved from Magic to here,
1772 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1778 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1773
1779
1774 * IPython/demo.py (Demo.__init__): added support for silent
1780 * IPython/demo.py (Demo.__init__): added support for silent
1775 blocks, improved marks as regexps, docstrings written.
1781 blocks, improved marks as regexps, docstrings written.
1776 (Demo.__init__): better docstring, added support for sys.argv.
1782 (Demo.__init__): better docstring, added support for sys.argv.
1777
1783
1778 * IPython/genutils.py (marquee): little utility used by the demo
1784 * IPython/genutils.py (marquee): little utility used by the demo
1779 code, handy in general.
1785 code, handy in general.
1780
1786
1781 * IPython/demo.py (Demo.__init__): new class for interactive
1787 * IPython/demo.py (Demo.__init__): new class for interactive
1782 demos. Not documented yet, I just wrote it in a hurry for
1788 demos. Not documented yet, I just wrote it in a hurry for
1783 scipy'05. Will docstring later.
1789 scipy'05. Will docstring later.
1784
1790
1785 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1791 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1786
1792
1787 * IPython/Shell.py (sigint_handler): Drastic simplification which
1793 * IPython/Shell.py (sigint_handler): Drastic simplification which
1788 also seems to make Ctrl-C work correctly across threads! This is
1794 also seems to make Ctrl-C work correctly across threads! This is
1789 so simple, that I can't beleive I'd missed it before. Needs more
1795 so simple, that I can't beleive I'd missed it before. Needs more
1790 testing, though.
1796 testing, though.
1791 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1797 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1792 like this before...
1798 like this before...
1793
1799
1794 * IPython/genutils.py (get_home_dir): add protection against
1800 * IPython/genutils.py (get_home_dir): add protection against
1795 non-dirs in win32 registry.
1801 non-dirs in win32 registry.
1796
1802
1797 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1803 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1798 bug where dict was mutated while iterating (pysh crash).
1804 bug where dict was mutated while iterating (pysh crash).
1799
1805
1800 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1806 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1801
1807
1802 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1808 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1803 spurious newlines added by this routine. After a report by
1809 spurious newlines added by this routine. After a report by
1804 F. Mantegazza.
1810 F. Mantegazza.
1805
1811
1806 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1812 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1807
1813
1808 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1814 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1809 calls. These were a leftover from the GTK 1.x days, and can cause
1815 calls. These were a leftover from the GTK 1.x days, and can cause
1810 problems in certain cases (after a report by John Hunter).
1816 problems in certain cases (after a report by John Hunter).
1811
1817
1812 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1818 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1813 os.getcwd() fails at init time. Thanks to patch from David Remahl
1819 os.getcwd() fails at init time. Thanks to patch from David Remahl
1814 <chmod007-AT-mac.com>.
1820 <chmod007-AT-mac.com>.
1815 (InteractiveShell.__init__): prevent certain special magics from
1821 (InteractiveShell.__init__): prevent certain special magics from
1816 being shadowed by aliases. Closes
1822 being shadowed by aliases. Closes
1817 http://www.scipy.net/roundup/ipython/issue41.
1823 http://www.scipy.net/roundup/ipython/issue41.
1818
1824
1819 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1825 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1820
1826
1821 * IPython/iplib.py (InteractiveShell.complete): Added new
1827 * IPython/iplib.py (InteractiveShell.complete): Added new
1822 top-level completion method to expose the completion mechanism
1828 top-level completion method to expose the completion mechanism
1823 beyond readline-based environments.
1829 beyond readline-based environments.
1824
1830
1825 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1831 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1826
1832
1827 * tools/ipsvnc (svnversion): fix svnversion capture.
1833 * tools/ipsvnc (svnversion): fix svnversion capture.
1828
1834
1829 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1835 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1830 attribute to self, which was missing. Before, it was set by a
1836 attribute to self, which was missing. Before, it was set by a
1831 routine which in certain cases wasn't being called, so the
1837 routine which in certain cases wasn't being called, so the
1832 instance could end up missing the attribute. This caused a crash.
1838 instance could end up missing the attribute. This caused a crash.
1833 Closes http://www.scipy.net/roundup/ipython/issue40.
1839 Closes http://www.scipy.net/roundup/ipython/issue40.
1834
1840
1835 2005-08-16 Fernando Perez <fperez@colorado.edu>
1841 2005-08-16 Fernando Perez <fperez@colorado.edu>
1836
1842
1837 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1843 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1838 contains non-string attribute. Closes
1844 contains non-string attribute. Closes
1839 http://www.scipy.net/roundup/ipython/issue38.
1845 http://www.scipy.net/roundup/ipython/issue38.
1840
1846
1841 2005-08-14 Fernando Perez <fperez@colorado.edu>
1847 2005-08-14 Fernando Perez <fperez@colorado.edu>
1842
1848
1843 * tools/ipsvnc: Minor improvements, to add changeset info.
1849 * tools/ipsvnc: Minor improvements, to add changeset info.
1844
1850
1845 2005-08-12 Fernando Perez <fperez@colorado.edu>
1851 2005-08-12 Fernando Perez <fperez@colorado.edu>
1846
1852
1847 * IPython/iplib.py (runsource): remove self.code_to_run_src
1853 * IPython/iplib.py (runsource): remove self.code_to_run_src
1848 attribute. I realized this is nothing more than
1854 attribute. I realized this is nothing more than
1849 '\n'.join(self.buffer), and having the same data in two different
1855 '\n'.join(self.buffer), and having the same data in two different
1850 places is just asking for synchronization bugs. This may impact
1856 places is just asking for synchronization bugs. This may impact
1851 people who have custom exception handlers, so I need to warn
1857 people who have custom exception handlers, so I need to warn
1852 ipython-dev about it (F. Mantegazza may use them).
1858 ipython-dev about it (F. Mantegazza may use them).
1853
1859
1854 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1860 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1855
1861
1856 * IPython/genutils.py: fix 2.2 compatibility (generators)
1862 * IPython/genutils.py: fix 2.2 compatibility (generators)
1857
1863
1858 2005-07-18 Fernando Perez <fperez@colorado.edu>
1864 2005-07-18 Fernando Perez <fperez@colorado.edu>
1859
1865
1860 * IPython/genutils.py (get_home_dir): fix to help users with
1866 * IPython/genutils.py (get_home_dir): fix to help users with
1861 invalid $HOME under win32.
1867 invalid $HOME under win32.
1862
1868
1863 2005-07-17 Fernando Perez <fperez@colorado.edu>
1869 2005-07-17 Fernando Perez <fperez@colorado.edu>
1864
1870
1865 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1871 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1866 some old hacks and clean up a bit other routines; code should be
1872 some old hacks and clean up a bit other routines; code should be
1867 simpler and a bit faster.
1873 simpler and a bit faster.
1868
1874
1869 * IPython/iplib.py (interact): removed some last-resort attempts
1875 * IPython/iplib.py (interact): removed some last-resort attempts
1870 to survive broken stdout/stderr. That code was only making it
1876 to survive broken stdout/stderr. That code was only making it
1871 harder to abstract out the i/o (necessary for gui integration),
1877 harder to abstract out the i/o (necessary for gui integration),
1872 and the crashes it could prevent were extremely rare in practice
1878 and the crashes it could prevent were extremely rare in practice
1873 (besides being fully user-induced in a pretty violent manner).
1879 (besides being fully user-induced in a pretty violent manner).
1874
1880
1875 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1881 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1876 Nothing major yet, but the code is simpler to read; this should
1882 Nothing major yet, but the code is simpler to read; this should
1877 make it easier to do more serious modifications in the future.
1883 make it easier to do more serious modifications in the future.
1878
1884
1879 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1885 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1880 which broke in .15 (thanks to a report by Ville).
1886 which broke in .15 (thanks to a report by Ville).
1881
1887
1882 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1888 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1883 be quite correct, I know next to nothing about unicode). This
1889 be quite correct, I know next to nothing about unicode). This
1884 will allow unicode strings to be used in prompts, amongst other
1890 will allow unicode strings to be used in prompts, amongst other
1885 cases. It also will prevent ipython from crashing when unicode
1891 cases. It also will prevent ipython from crashing when unicode
1886 shows up unexpectedly in many places. If ascii encoding fails, we
1892 shows up unexpectedly in many places. If ascii encoding fails, we
1887 assume utf_8. Currently the encoding is not a user-visible
1893 assume utf_8. Currently the encoding is not a user-visible
1888 setting, though it could be made so if there is demand for it.
1894 setting, though it could be made so if there is demand for it.
1889
1895
1890 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1896 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1891
1897
1892 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1898 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1893
1899
1894 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1900 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1895
1901
1896 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1902 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1897 code can work transparently for 2.2/2.3.
1903 code can work transparently for 2.2/2.3.
1898
1904
1899 2005-07-16 Fernando Perez <fperez@colorado.edu>
1905 2005-07-16 Fernando Perez <fperez@colorado.edu>
1900
1906
1901 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1907 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1902 out of the color scheme table used for coloring exception
1908 out of the color scheme table used for coloring exception
1903 tracebacks. This allows user code to add new schemes at runtime.
1909 tracebacks. This allows user code to add new schemes at runtime.
1904 This is a minimally modified version of the patch at
1910 This is a minimally modified version of the patch at
1905 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1911 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1906 for the contribution.
1912 for the contribution.
1907
1913
1908 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1914 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1909 slightly modified version of the patch in
1915 slightly modified version of the patch in
1910 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1916 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1911 to remove the previous try/except solution (which was costlier).
1917 to remove the previous try/except solution (which was costlier).
1912 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1918 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1913
1919
1914 2005-06-08 Fernando Perez <fperez@colorado.edu>
1920 2005-06-08 Fernando Perez <fperez@colorado.edu>
1915
1921
1916 * IPython/iplib.py (write/write_err): Add methods to abstract all
1922 * IPython/iplib.py (write/write_err): Add methods to abstract all
1917 I/O a bit more.
1923 I/O a bit more.
1918
1924
1919 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1925 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1920 warning, reported by Aric Hagberg, fix by JD Hunter.
1926 warning, reported by Aric Hagberg, fix by JD Hunter.
1921
1927
1922 2005-06-02 *** Released version 0.6.15
1928 2005-06-02 *** Released version 0.6.15
1923
1929
1924 2005-06-01 Fernando Perez <fperez@colorado.edu>
1930 2005-06-01 Fernando Perez <fperez@colorado.edu>
1925
1931
1926 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1932 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1927 tab-completion of filenames within open-quoted strings. Note that
1933 tab-completion of filenames within open-quoted strings. Note that
1928 this requires that in ~/.ipython/ipythonrc, users change the
1934 this requires that in ~/.ipython/ipythonrc, users change the
1929 readline delimiters configuration to read:
1935 readline delimiters configuration to read:
1930
1936
1931 readline_remove_delims -/~
1937 readline_remove_delims -/~
1932
1938
1933
1939
1934 2005-05-31 *** Released version 0.6.14
1940 2005-05-31 *** Released version 0.6.14
1935
1941
1936 2005-05-29 Fernando Perez <fperez@colorado.edu>
1942 2005-05-29 Fernando Perez <fperez@colorado.edu>
1937
1943
1938 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1944 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1939 with files not on the filesystem. Reported by Eliyahu Sandler
1945 with files not on the filesystem. Reported by Eliyahu Sandler
1940 <eli@gondolin.net>
1946 <eli@gondolin.net>
1941
1947
1942 2005-05-22 Fernando Perez <fperez@colorado.edu>
1948 2005-05-22 Fernando Perez <fperez@colorado.edu>
1943
1949
1944 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1950 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1945 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1951 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1946
1952
1947 2005-05-19 Fernando Perez <fperez@colorado.edu>
1953 2005-05-19 Fernando Perez <fperez@colorado.edu>
1948
1954
1949 * IPython/iplib.py (safe_execfile): close a file which could be
1955 * IPython/iplib.py (safe_execfile): close a file which could be
1950 left open (causing problems in win32, which locks open files).
1956 left open (causing problems in win32, which locks open files).
1951 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1957 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1952
1958
1953 2005-05-18 Fernando Perez <fperez@colorado.edu>
1959 2005-05-18 Fernando Perez <fperez@colorado.edu>
1954
1960
1955 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1961 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1956 keyword arguments correctly to safe_execfile().
1962 keyword arguments correctly to safe_execfile().
1957
1963
1958 2005-05-13 Fernando Perez <fperez@colorado.edu>
1964 2005-05-13 Fernando Perez <fperez@colorado.edu>
1959
1965
1960 * ipython.1: Added info about Qt to manpage, and threads warning
1966 * ipython.1: Added info about Qt to manpage, and threads warning
1961 to usage page (invoked with --help).
1967 to usage page (invoked with --help).
1962
1968
1963 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1969 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1964 new matcher (it goes at the end of the priority list) to do
1970 new matcher (it goes at the end of the priority list) to do
1965 tab-completion on named function arguments. Submitted by George
1971 tab-completion on named function arguments. Submitted by George
1966 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1972 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1967 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1973 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1968 for more details.
1974 for more details.
1969
1975
1970 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1976 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1971 SystemExit exceptions in the script being run. Thanks to a report
1977 SystemExit exceptions in the script being run. Thanks to a report
1972 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1978 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1973 producing very annoying behavior when running unit tests.
1979 producing very annoying behavior when running unit tests.
1974
1980
1975 2005-05-12 Fernando Perez <fperez@colorado.edu>
1981 2005-05-12 Fernando Perez <fperez@colorado.edu>
1976
1982
1977 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1983 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1978 which I'd broken (again) due to a changed regexp. In the process,
1984 which I'd broken (again) due to a changed regexp. In the process,
1979 added ';' as an escape to auto-quote the whole line without
1985 added ';' as an escape to auto-quote the whole line without
1980 splitting its arguments. Thanks to a report by Jerry McRae
1986 splitting its arguments. Thanks to a report by Jerry McRae
1981 <qrs0xyc02-AT-sneakemail.com>.
1987 <qrs0xyc02-AT-sneakemail.com>.
1982
1988
1983 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1989 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1984 possible crashes caused by a TokenError. Reported by Ed Schofield
1990 possible crashes caused by a TokenError. Reported by Ed Schofield
1985 <schofield-AT-ftw.at>.
1991 <schofield-AT-ftw.at>.
1986
1992
1987 2005-05-06 Fernando Perez <fperez@colorado.edu>
1993 2005-05-06 Fernando Perez <fperez@colorado.edu>
1988
1994
1989 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1995 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1990
1996
1991 2005-04-29 Fernando Perez <fperez@colorado.edu>
1997 2005-04-29 Fernando Perez <fperez@colorado.edu>
1992
1998
1993 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1999 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1994 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2000 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1995 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2001 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1996 which provides support for Qt interactive usage (similar to the
2002 which provides support for Qt interactive usage (similar to the
1997 existing one for WX and GTK). This had been often requested.
2003 existing one for WX and GTK). This had been often requested.
1998
2004
1999 2005-04-14 *** Released version 0.6.13
2005 2005-04-14 *** Released version 0.6.13
2000
2006
2001 2005-04-08 Fernando Perez <fperez@colorado.edu>
2007 2005-04-08 Fernando Perez <fperez@colorado.edu>
2002
2008
2003 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2009 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2004 from _ofind, which gets called on almost every input line. Now,
2010 from _ofind, which gets called on almost every input line. Now,
2005 we only try to get docstrings if they are actually going to be
2011 we only try to get docstrings if they are actually going to be
2006 used (the overhead of fetching unnecessary docstrings can be
2012 used (the overhead of fetching unnecessary docstrings can be
2007 noticeable for certain objects, such as Pyro proxies).
2013 noticeable for certain objects, such as Pyro proxies).
2008
2014
2009 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2015 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2010 for completers. For some reason I had been passing them the state
2016 for completers. For some reason I had been passing them the state
2011 variable, which completers never actually need, and was in
2017 variable, which completers never actually need, and was in
2012 conflict with the rlcompleter API. Custom completers ONLY need to
2018 conflict with the rlcompleter API. Custom completers ONLY need to
2013 take the text parameter.
2019 take the text parameter.
2014
2020
2015 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2021 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2016 work correctly in pysh. I've also moved all the logic which used
2022 work correctly in pysh. I've also moved all the logic which used
2017 to be in pysh.py here, which will prevent problems with future
2023 to be in pysh.py here, which will prevent problems with future
2018 upgrades. However, this time I must warn users to update their
2024 upgrades. However, this time I must warn users to update their
2019 pysh profile to include the line
2025 pysh profile to include the line
2020
2026
2021 import_all IPython.Extensions.InterpreterExec
2027 import_all IPython.Extensions.InterpreterExec
2022
2028
2023 because otherwise things won't work for them. They MUST also
2029 because otherwise things won't work for them. They MUST also
2024 delete pysh.py and the line
2030 delete pysh.py and the line
2025
2031
2026 execfile pysh.py
2032 execfile pysh.py
2027
2033
2028 from their ipythonrc-pysh.
2034 from their ipythonrc-pysh.
2029
2035
2030 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2036 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2031 robust in the face of objects whose dir() returns non-strings
2037 robust in the face of objects whose dir() returns non-strings
2032 (which it shouldn't, but some broken libs like ITK do). Thanks to
2038 (which it shouldn't, but some broken libs like ITK do). Thanks to
2033 a patch by John Hunter (implemented differently, though). Also
2039 a patch by John Hunter (implemented differently, though). Also
2034 minor improvements by using .extend instead of + on lists.
2040 minor improvements by using .extend instead of + on lists.
2035
2041
2036 * pysh.py:
2042 * pysh.py:
2037
2043
2038 2005-04-06 Fernando Perez <fperez@colorado.edu>
2044 2005-04-06 Fernando Perez <fperez@colorado.edu>
2039
2045
2040 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2046 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2041 by default, so that all users benefit from it. Those who don't
2047 by default, so that all users benefit from it. Those who don't
2042 want it can still turn it off.
2048 want it can still turn it off.
2043
2049
2044 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2050 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2045 config file, I'd forgotten about this, so users were getting it
2051 config file, I'd forgotten about this, so users were getting it
2046 off by default.
2052 off by default.
2047
2053
2048 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2054 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2049 consistency. Now magics can be called in multiline statements,
2055 consistency. Now magics can be called in multiline statements,
2050 and python variables can be expanded in magic calls via $var.
2056 and python variables can be expanded in magic calls via $var.
2051 This makes the magic system behave just like aliases or !system
2057 This makes the magic system behave just like aliases or !system
2052 calls.
2058 calls.
2053
2059
2054 2005-03-28 Fernando Perez <fperez@colorado.edu>
2060 2005-03-28 Fernando Perez <fperez@colorado.edu>
2055
2061
2056 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2062 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2057 expensive string additions for building command. Add support for
2063 expensive string additions for building command. Add support for
2058 trailing ';' when autocall is used.
2064 trailing ';' when autocall is used.
2059
2065
2060 2005-03-26 Fernando Perez <fperez@colorado.edu>
2066 2005-03-26 Fernando Perez <fperez@colorado.edu>
2061
2067
2062 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2068 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2063 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2069 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2064 ipython.el robust against prompts with any number of spaces
2070 ipython.el robust against prompts with any number of spaces
2065 (including 0) after the ':' character.
2071 (including 0) after the ':' character.
2066
2072
2067 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2073 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2068 continuation prompt, which misled users to think the line was
2074 continuation prompt, which misled users to think the line was
2069 already indented. Closes debian Bug#300847, reported to me by
2075 already indented. Closes debian Bug#300847, reported to me by
2070 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2076 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2071
2077
2072 2005-03-23 Fernando Perez <fperez@colorado.edu>
2078 2005-03-23 Fernando Perez <fperez@colorado.edu>
2073
2079
2074 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2080 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2075 properly aligned if they have embedded newlines.
2081 properly aligned if they have embedded newlines.
2076
2082
2077 * IPython/iplib.py (runlines): Add a public method to expose
2083 * IPython/iplib.py (runlines): Add a public method to expose
2078 IPython's code execution machinery, so that users can run strings
2084 IPython's code execution machinery, so that users can run strings
2079 as if they had been typed at the prompt interactively.
2085 as if they had been typed at the prompt interactively.
2080 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2086 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2081 methods which can call the system shell, but with python variable
2087 methods which can call the system shell, but with python variable
2082 expansion. The three such methods are: __IPYTHON__.system,
2088 expansion. The three such methods are: __IPYTHON__.system,
2083 .getoutput and .getoutputerror. These need to be documented in a
2089 .getoutput and .getoutputerror. These need to be documented in a
2084 'public API' section (to be written) of the manual.
2090 'public API' section (to be written) of the manual.
2085
2091
2086 2005-03-20 Fernando Perez <fperez@colorado.edu>
2092 2005-03-20 Fernando Perez <fperez@colorado.edu>
2087
2093
2088 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2094 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2089 for custom exception handling. This is quite powerful, and it
2095 for custom exception handling. This is quite powerful, and it
2090 allows for user-installable exception handlers which can trap
2096 allows for user-installable exception handlers which can trap
2091 custom exceptions at runtime and treat them separately from
2097 custom exceptions at runtime and treat them separately from
2092 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2098 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2093 Mantegazza <mantegazza-AT-ill.fr>.
2099 Mantegazza <mantegazza-AT-ill.fr>.
2094 (InteractiveShell.set_custom_completer): public API function to
2100 (InteractiveShell.set_custom_completer): public API function to
2095 add new completers at runtime.
2101 add new completers at runtime.
2096
2102
2097 2005-03-19 Fernando Perez <fperez@colorado.edu>
2103 2005-03-19 Fernando Perez <fperez@colorado.edu>
2098
2104
2099 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2105 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2100 allow objects which provide their docstrings via non-standard
2106 allow objects which provide their docstrings via non-standard
2101 mechanisms (like Pyro proxies) to still be inspected by ipython's
2107 mechanisms (like Pyro proxies) to still be inspected by ipython's
2102 ? system.
2108 ? system.
2103
2109
2104 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2110 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2105 automatic capture system. I tried quite hard to make it work
2111 automatic capture system. I tried quite hard to make it work
2106 reliably, and simply failed. I tried many combinations with the
2112 reliably, and simply failed. I tried many combinations with the
2107 subprocess module, but eventually nothing worked in all needed
2113 subprocess module, but eventually nothing worked in all needed
2108 cases (not blocking stdin for the child, duplicating stdout
2114 cases (not blocking stdin for the child, duplicating stdout
2109 without blocking, etc). The new %sc/%sx still do capture to these
2115 without blocking, etc). The new %sc/%sx still do capture to these
2110 magical list/string objects which make shell use much more
2116 magical list/string objects which make shell use much more
2111 conveninent, so not all is lost.
2117 conveninent, so not all is lost.
2112
2118
2113 XXX - FIX MANUAL for the change above!
2119 XXX - FIX MANUAL for the change above!
2114
2120
2115 (runsource): I copied code.py's runsource() into ipython to modify
2121 (runsource): I copied code.py's runsource() into ipython to modify
2116 it a bit. Now the code object and source to be executed are
2122 it a bit. Now the code object and source to be executed are
2117 stored in ipython. This makes this info accessible to third-party
2123 stored in ipython. This makes this info accessible to third-party
2118 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2124 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2119 Mantegazza <mantegazza-AT-ill.fr>.
2125 Mantegazza <mantegazza-AT-ill.fr>.
2120
2126
2121 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2127 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2122 history-search via readline (like C-p/C-n). I'd wanted this for a
2128 history-search via readline (like C-p/C-n). I'd wanted this for a
2123 long time, but only recently found out how to do it. For users
2129 long time, but only recently found out how to do it. For users
2124 who already have their ipythonrc files made and want this, just
2130 who already have their ipythonrc files made and want this, just
2125 add:
2131 add:
2126
2132
2127 readline_parse_and_bind "\e[A": history-search-backward
2133 readline_parse_and_bind "\e[A": history-search-backward
2128 readline_parse_and_bind "\e[B": history-search-forward
2134 readline_parse_and_bind "\e[B": history-search-forward
2129
2135
2130 2005-03-18 Fernando Perez <fperez@colorado.edu>
2136 2005-03-18 Fernando Perez <fperez@colorado.edu>
2131
2137
2132 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2138 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2133 LSString and SList classes which allow transparent conversions
2139 LSString and SList classes which allow transparent conversions
2134 between list mode and whitespace-separated string.
2140 between list mode and whitespace-separated string.
2135 (magic_r): Fix recursion problem in %r.
2141 (magic_r): Fix recursion problem in %r.
2136
2142
2137 * IPython/genutils.py (LSString): New class to be used for
2143 * IPython/genutils.py (LSString): New class to be used for
2138 automatic storage of the results of all alias/system calls in _o
2144 automatic storage of the results of all alias/system calls in _o
2139 and _e (stdout/err). These provide a .l/.list attribute which
2145 and _e (stdout/err). These provide a .l/.list attribute which
2140 does automatic splitting on newlines. This means that for most
2146 does automatic splitting on newlines. This means that for most
2141 uses, you'll never need to do capturing of output with %sc/%sx
2147 uses, you'll never need to do capturing of output with %sc/%sx
2142 anymore, since ipython keeps this always done for you. Note that
2148 anymore, since ipython keeps this always done for you. Note that
2143 only the LAST results are stored, the _o/e variables are
2149 only the LAST results are stored, the _o/e variables are
2144 overwritten on each call. If you need to save their contents
2150 overwritten on each call. If you need to save their contents
2145 further, simply bind them to any other name.
2151 further, simply bind them to any other name.
2146
2152
2147 2005-03-17 Fernando Perez <fperez@colorado.edu>
2153 2005-03-17 Fernando Perez <fperez@colorado.edu>
2148
2154
2149 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2155 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2150 prompt namespace handling.
2156 prompt namespace handling.
2151
2157
2152 2005-03-16 Fernando Perez <fperez@colorado.edu>
2158 2005-03-16 Fernando Perez <fperez@colorado.edu>
2153
2159
2154 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2160 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2155 classic prompts to be '>>> ' (final space was missing, and it
2161 classic prompts to be '>>> ' (final space was missing, and it
2156 trips the emacs python mode).
2162 trips the emacs python mode).
2157 (BasePrompt.__str__): Added safe support for dynamic prompt
2163 (BasePrompt.__str__): Added safe support for dynamic prompt
2158 strings. Now you can set your prompt string to be '$x', and the
2164 strings. Now you can set your prompt string to be '$x', and the
2159 value of x will be printed from your interactive namespace. The
2165 value of x will be printed from your interactive namespace. The
2160 interpolation syntax includes the full Itpl support, so
2166 interpolation syntax includes the full Itpl support, so
2161 ${foo()+x+bar()} is a valid prompt string now, and the function
2167 ${foo()+x+bar()} is a valid prompt string now, and the function
2162 calls will be made at runtime.
2168 calls will be made at runtime.
2163
2169
2164 2005-03-15 Fernando Perez <fperez@colorado.edu>
2170 2005-03-15 Fernando Perez <fperez@colorado.edu>
2165
2171
2166 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2172 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2167 avoid name clashes in pylab. %hist still works, it just forwards
2173 avoid name clashes in pylab. %hist still works, it just forwards
2168 the call to %history.
2174 the call to %history.
2169
2175
2170 2005-03-02 *** Released version 0.6.12
2176 2005-03-02 *** Released version 0.6.12
2171
2177
2172 2005-03-02 Fernando Perez <fperez@colorado.edu>
2178 2005-03-02 Fernando Perez <fperez@colorado.edu>
2173
2179
2174 * IPython/iplib.py (handle_magic): log magic calls properly as
2180 * IPython/iplib.py (handle_magic): log magic calls properly as
2175 ipmagic() function calls.
2181 ipmagic() function calls.
2176
2182
2177 * IPython/Magic.py (magic_time): Improved %time to support
2183 * IPython/Magic.py (magic_time): Improved %time to support
2178 statements and provide wall-clock as well as CPU time.
2184 statements and provide wall-clock as well as CPU time.
2179
2185
2180 2005-02-27 Fernando Perez <fperez@colorado.edu>
2186 2005-02-27 Fernando Perez <fperez@colorado.edu>
2181
2187
2182 * IPython/hooks.py: New hooks module, to expose user-modifiable
2188 * IPython/hooks.py: New hooks module, to expose user-modifiable
2183 IPython functionality in a clean manner. For now only the editor
2189 IPython functionality in a clean manner. For now only the editor
2184 hook is actually written, and other thigns which I intend to turn
2190 hook is actually written, and other thigns which I intend to turn
2185 into proper hooks aren't yet there. The display and prefilter
2191 into proper hooks aren't yet there. The display and prefilter
2186 stuff, for example, should be hooks. But at least now the
2192 stuff, for example, should be hooks. But at least now the
2187 framework is in place, and the rest can be moved here with more
2193 framework is in place, and the rest can be moved here with more
2188 time later. IPython had had a .hooks variable for a long time for
2194 time later. IPython had had a .hooks variable for a long time for
2189 this purpose, but I'd never actually used it for anything.
2195 this purpose, but I'd never actually used it for anything.
2190
2196
2191 2005-02-26 Fernando Perez <fperez@colorado.edu>
2197 2005-02-26 Fernando Perez <fperez@colorado.edu>
2192
2198
2193 * IPython/ipmaker.py (make_IPython): make the default ipython
2199 * IPython/ipmaker.py (make_IPython): make the default ipython
2194 directory be called _ipython under win32, to follow more the
2200 directory be called _ipython under win32, to follow more the
2195 naming peculiarities of that platform (where buggy software like
2201 naming peculiarities of that platform (where buggy software like
2196 Visual Sourcesafe breaks with .named directories). Reported by
2202 Visual Sourcesafe breaks with .named directories). Reported by
2197 Ville Vainio.
2203 Ville Vainio.
2198
2204
2199 2005-02-23 Fernando Perez <fperez@colorado.edu>
2205 2005-02-23 Fernando Perez <fperez@colorado.edu>
2200
2206
2201 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2207 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2202 auto_aliases for win32 which were causing problems. Users can
2208 auto_aliases for win32 which were causing problems. Users can
2203 define the ones they personally like.
2209 define the ones they personally like.
2204
2210
2205 2005-02-21 Fernando Perez <fperez@colorado.edu>
2211 2005-02-21 Fernando Perez <fperez@colorado.edu>
2206
2212
2207 * IPython/Magic.py (magic_time): new magic to time execution of
2213 * IPython/Magic.py (magic_time): new magic to time execution of
2208 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2214 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2209
2215
2210 2005-02-19 Fernando Perez <fperez@colorado.edu>
2216 2005-02-19 Fernando Perez <fperez@colorado.edu>
2211
2217
2212 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2218 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2213 into keys (for prompts, for example).
2219 into keys (for prompts, for example).
2214
2220
2215 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2221 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2216 prompts in case users want them. This introduces a small behavior
2222 prompts in case users want them. This introduces a small behavior
2217 change: ipython does not automatically add a space to all prompts
2223 change: ipython does not automatically add a space to all prompts
2218 anymore. To get the old prompts with a space, users should add it
2224 anymore. To get the old prompts with a space, users should add it
2219 manually to their ipythonrc file, so for example prompt_in1 should
2225 manually to their ipythonrc file, so for example prompt_in1 should
2220 now read 'In [\#]: ' instead of 'In [\#]:'.
2226 now read 'In [\#]: ' instead of 'In [\#]:'.
2221 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2227 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2222 file) to control left-padding of secondary prompts.
2228 file) to control left-padding of secondary prompts.
2223
2229
2224 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2230 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2225 the profiler can't be imported. Fix for Debian, which removed
2231 the profiler can't be imported. Fix for Debian, which removed
2226 profile.py because of License issues. I applied a slightly
2232 profile.py because of License issues. I applied a slightly
2227 modified version of the original Debian patch at
2233 modified version of the original Debian patch at
2228 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2234 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2229
2235
2230 2005-02-17 Fernando Perez <fperez@colorado.edu>
2236 2005-02-17 Fernando Perez <fperez@colorado.edu>
2231
2237
2232 * IPython/genutils.py (native_line_ends): Fix bug which would
2238 * IPython/genutils.py (native_line_ends): Fix bug which would
2233 cause improper line-ends under win32 b/c I was not opening files
2239 cause improper line-ends under win32 b/c I was not opening files
2234 in binary mode. Bug report and fix thanks to Ville.
2240 in binary mode. Bug report and fix thanks to Ville.
2235
2241
2236 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2242 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2237 trying to catch spurious foo[1] autocalls. My fix actually broke
2243 trying to catch spurious foo[1] autocalls. My fix actually broke
2238 ',/' autoquote/call with explicit escape (bad regexp).
2244 ',/' autoquote/call with explicit escape (bad regexp).
2239
2245
2240 2005-02-15 *** Released version 0.6.11
2246 2005-02-15 *** Released version 0.6.11
2241
2247
2242 2005-02-14 Fernando Perez <fperez@colorado.edu>
2248 2005-02-14 Fernando Perez <fperez@colorado.edu>
2243
2249
2244 * IPython/background_jobs.py: New background job management
2250 * IPython/background_jobs.py: New background job management
2245 subsystem. This is implemented via a new set of classes, and
2251 subsystem. This is implemented via a new set of classes, and
2246 IPython now provides a builtin 'jobs' object for background job
2252 IPython now provides a builtin 'jobs' object for background job
2247 execution. A convenience %bg magic serves as a lightweight
2253 execution. A convenience %bg magic serves as a lightweight
2248 frontend for starting the more common type of calls. This was
2254 frontend for starting the more common type of calls. This was
2249 inspired by discussions with B. Granger and the BackgroundCommand
2255 inspired by discussions with B. Granger and the BackgroundCommand
2250 class described in the book Python Scripting for Computational
2256 class described in the book Python Scripting for Computational
2251 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2257 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2252 (although ultimately no code from this text was used, as IPython's
2258 (although ultimately no code from this text was used, as IPython's
2253 system is a separate implementation).
2259 system is a separate implementation).
2254
2260
2255 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2261 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2256 to control the completion of single/double underscore names
2262 to control the completion of single/double underscore names
2257 separately. As documented in the example ipytonrc file, the
2263 separately. As documented in the example ipytonrc file, the
2258 readline_omit__names variable can now be set to 2, to omit even
2264 readline_omit__names variable can now be set to 2, to omit even
2259 single underscore names. Thanks to a patch by Brian Wong
2265 single underscore names. Thanks to a patch by Brian Wong
2260 <BrianWong-AT-AirgoNetworks.Com>.
2266 <BrianWong-AT-AirgoNetworks.Com>.
2261 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2267 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2262 be autocalled as foo([1]) if foo were callable. A problem for
2268 be autocalled as foo([1]) if foo were callable. A problem for
2263 things which are both callable and implement __getitem__.
2269 things which are both callable and implement __getitem__.
2264 (init_readline): Fix autoindentation for win32. Thanks to a patch
2270 (init_readline): Fix autoindentation for win32. Thanks to a patch
2265 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2271 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2266
2272
2267 2005-02-12 Fernando Perez <fperez@colorado.edu>
2273 2005-02-12 Fernando Perez <fperez@colorado.edu>
2268
2274
2269 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2275 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2270 which I had written long ago to sort out user error messages which
2276 which I had written long ago to sort out user error messages which
2271 may occur during startup. This seemed like a good idea initially,
2277 may occur during startup. This seemed like a good idea initially,
2272 but it has proven a disaster in retrospect. I don't want to
2278 but it has proven a disaster in retrospect. I don't want to
2273 change much code for now, so my fix is to set the internal 'debug'
2279 change much code for now, so my fix is to set the internal 'debug'
2274 flag to true everywhere, whose only job was precisely to control
2280 flag to true everywhere, whose only job was precisely to control
2275 this subsystem. This closes issue 28 (as well as avoiding all
2281 this subsystem. This closes issue 28 (as well as avoiding all
2276 sorts of strange hangups which occur from time to time).
2282 sorts of strange hangups which occur from time to time).
2277
2283
2278 2005-02-07 Fernando Perez <fperez@colorado.edu>
2284 2005-02-07 Fernando Perez <fperez@colorado.edu>
2279
2285
2280 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2286 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2281 previous call produced a syntax error.
2287 previous call produced a syntax error.
2282
2288
2283 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2289 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2284 classes without constructor.
2290 classes without constructor.
2285
2291
2286 2005-02-06 Fernando Perez <fperez@colorado.edu>
2292 2005-02-06 Fernando Perez <fperez@colorado.edu>
2287
2293
2288 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2294 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2289 completions with the results of each matcher, so we return results
2295 completions with the results of each matcher, so we return results
2290 to the user from all namespaces. This breaks with ipython
2296 to the user from all namespaces. This breaks with ipython
2291 tradition, but I think it's a nicer behavior. Now you get all
2297 tradition, but I think it's a nicer behavior. Now you get all
2292 possible completions listed, from all possible namespaces (python,
2298 possible completions listed, from all possible namespaces (python,
2293 filesystem, magics...) After a request by John Hunter
2299 filesystem, magics...) After a request by John Hunter
2294 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2300 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2295
2301
2296 2005-02-05 Fernando Perez <fperez@colorado.edu>
2302 2005-02-05 Fernando Perez <fperez@colorado.edu>
2297
2303
2298 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2304 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2299 the call had quote characters in it (the quotes were stripped).
2305 the call had quote characters in it (the quotes were stripped).
2300
2306
2301 2005-01-31 Fernando Perez <fperez@colorado.edu>
2307 2005-01-31 Fernando Perez <fperez@colorado.edu>
2302
2308
2303 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2309 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2304 Itpl.itpl() to make the code more robust against psyco
2310 Itpl.itpl() to make the code more robust against psyco
2305 optimizations.
2311 optimizations.
2306
2312
2307 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2313 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2308 of causing an exception. Quicker, cleaner.
2314 of causing an exception. Quicker, cleaner.
2309
2315
2310 2005-01-28 Fernando Perez <fperez@colorado.edu>
2316 2005-01-28 Fernando Perez <fperez@colorado.edu>
2311
2317
2312 * scripts/ipython_win_post_install.py (install): hardcode
2318 * scripts/ipython_win_post_install.py (install): hardcode
2313 sys.prefix+'python.exe' as the executable path. It turns out that
2319 sys.prefix+'python.exe' as the executable path. It turns out that
2314 during the post-installation run, sys.executable resolves to the
2320 during the post-installation run, sys.executable resolves to the
2315 name of the binary installer! I should report this as a distutils
2321 name of the binary installer! I should report this as a distutils
2316 bug, I think. I updated the .10 release with this tiny fix, to
2322 bug, I think. I updated the .10 release with this tiny fix, to
2317 avoid annoying the lists further.
2323 avoid annoying the lists further.
2318
2324
2319 2005-01-27 *** Released version 0.6.10
2325 2005-01-27 *** Released version 0.6.10
2320
2326
2321 2005-01-27 Fernando Perez <fperez@colorado.edu>
2327 2005-01-27 Fernando Perez <fperez@colorado.edu>
2322
2328
2323 * IPython/numutils.py (norm): Added 'inf' as optional name for
2329 * IPython/numutils.py (norm): Added 'inf' as optional name for
2324 L-infinity norm, included references to mathworld.com for vector
2330 L-infinity norm, included references to mathworld.com for vector
2325 norm definitions.
2331 norm definitions.
2326 (amin/amax): added amin/amax for array min/max. Similar to what
2332 (amin/amax): added amin/amax for array min/max. Similar to what
2327 pylab ships with after the recent reorganization of names.
2333 pylab ships with after the recent reorganization of names.
2328 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2334 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2329
2335
2330 * ipython.el: committed Alex's recent fixes and improvements.
2336 * ipython.el: committed Alex's recent fixes and improvements.
2331 Tested with python-mode from CVS, and it looks excellent. Since
2337 Tested with python-mode from CVS, and it looks excellent. Since
2332 python-mode hasn't released anything in a while, I'm temporarily
2338 python-mode hasn't released anything in a while, I'm temporarily
2333 putting a copy of today's CVS (v 4.70) of python-mode in:
2339 putting a copy of today's CVS (v 4.70) of python-mode in:
2334 http://ipython.scipy.org/tmp/python-mode.el
2340 http://ipython.scipy.org/tmp/python-mode.el
2335
2341
2336 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2342 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2337 sys.executable for the executable name, instead of assuming it's
2343 sys.executable for the executable name, instead of assuming it's
2338 called 'python.exe' (the post-installer would have produced broken
2344 called 'python.exe' (the post-installer would have produced broken
2339 setups on systems with a differently named python binary).
2345 setups on systems with a differently named python binary).
2340
2346
2341 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2347 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2342 references to os.linesep, to make the code more
2348 references to os.linesep, to make the code more
2343 platform-independent. This is also part of the win32 coloring
2349 platform-independent. This is also part of the win32 coloring
2344 fixes.
2350 fixes.
2345
2351
2346 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2352 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2347 lines, which actually cause coloring bugs because the length of
2353 lines, which actually cause coloring bugs because the length of
2348 the line is very difficult to correctly compute with embedded
2354 the line is very difficult to correctly compute with embedded
2349 escapes. This was the source of all the coloring problems under
2355 escapes. This was the source of all the coloring problems under
2350 Win32. I think that _finally_, Win32 users have a properly
2356 Win32. I think that _finally_, Win32 users have a properly
2351 working ipython in all respects. This would never have happened
2357 working ipython in all respects. This would never have happened
2352 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2358 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2353
2359
2354 2005-01-26 *** Released version 0.6.9
2360 2005-01-26 *** Released version 0.6.9
2355
2361
2356 2005-01-25 Fernando Perez <fperez@colorado.edu>
2362 2005-01-25 Fernando Perez <fperez@colorado.edu>
2357
2363
2358 * setup.py: finally, we have a true Windows installer, thanks to
2364 * setup.py: finally, we have a true Windows installer, thanks to
2359 the excellent work of Viktor Ransmayr
2365 the excellent work of Viktor Ransmayr
2360 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2366 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2361 Windows users. The setup routine is quite a bit cleaner thanks to
2367 Windows users. The setup routine is quite a bit cleaner thanks to
2362 this, and the post-install script uses the proper functions to
2368 this, and the post-install script uses the proper functions to
2363 allow a clean de-installation using the standard Windows Control
2369 allow a clean de-installation using the standard Windows Control
2364 Panel.
2370 Panel.
2365
2371
2366 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2372 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2367 environment variable under all OSes (including win32) if
2373 environment variable under all OSes (including win32) if
2368 available. This will give consistency to win32 users who have set
2374 available. This will give consistency to win32 users who have set
2369 this variable for any reason. If os.environ['HOME'] fails, the
2375 this variable for any reason. If os.environ['HOME'] fails, the
2370 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2376 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2371
2377
2372 2005-01-24 Fernando Perez <fperez@colorado.edu>
2378 2005-01-24 Fernando Perez <fperez@colorado.edu>
2373
2379
2374 * IPython/numutils.py (empty_like): add empty_like(), similar to
2380 * IPython/numutils.py (empty_like): add empty_like(), similar to
2375 zeros_like() but taking advantage of the new empty() Numeric routine.
2381 zeros_like() but taking advantage of the new empty() Numeric routine.
2376
2382
2377 2005-01-23 *** Released version 0.6.8
2383 2005-01-23 *** Released version 0.6.8
2378
2384
2379 2005-01-22 Fernando Perez <fperez@colorado.edu>
2385 2005-01-22 Fernando Perez <fperez@colorado.edu>
2380
2386
2381 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2387 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2382 automatic show() calls. After discussing things with JDH, it
2388 automatic show() calls. After discussing things with JDH, it
2383 turns out there are too many corner cases where this can go wrong.
2389 turns out there are too many corner cases where this can go wrong.
2384 It's best not to try to be 'too smart', and simply have ipython
2390 It's best not to try to be 'too smart', and simply have ipython
2385 reproduce as much as possible the default behavior of a normal
2391 reproduce as much as possible the default behavior of a normal
2386 python shell.
2392 python shell.
2387
2393
2388 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2394 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2389 line-splitting regexp and _prefilter() to avoid calling getattr()
2395 line-splitting regexp and _prefilter() to avoid calling getattr()
2390 on assignments. This closes
2396 on assignments. This closes
2391 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2397 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2392 readline uses getattr(), so a simple <TAB> keypress is still
2398 readline uses getattr(), so a simple <TAB> keypress is still
2393 enough to trigger getattr() calls on an object.
2399 enough to trigger getattr() calls on an object.
2394
2400
2395 2005-01-21 Fernando Perez <fperez@colorado.edu>
2401 2005-01-21 Fernando Perez <fperez@colorado.edu>
2396
2402
2397 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2403 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2398 docstring under pylab so it doesn't mask the original.
2404 docstring under pylab so it doesn't mask the original.
2399
2405
2400 2005-01-21 *** Released version 0.6.7
2406 2005-01-21 *** Released version 0.6.7
2401
2407
2402 2005-01-21 Fernando Perez <fperez@colorado.edu>
2408 2005-01-21 Fernando Perez <fperez@colorado.edu>
2403
2409
2404 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2410 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2405 signal handling for win32 users in multithreaded mode.
2411 signal handling for win32 users in multithreaded mode.
2406
2412
2407 2005-01-17 Fernando Perez <fperez@colorado.edu>
2413 2005-01-17 Fernando Perez <fperez@colorado.edu>
2408
2414
2409 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2415 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2410 instances with no __init__. After a crash report by Norbert Nemec
2416 instances with no __init__. After a crash report by Norbert Nemec
2411 <Norbert-AT-nemec-online.de>.
2417 <Norbert-AT-nemec-online.de>.
2412
2418
2413 2005-01-14 Fernando Perez <fperez@colorado.edu>
2419 2005-01-14 Fernando Perez <fperez@colorado.edu>
2414
2420
2415 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2421 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2416 names for verbose exceptions, when multiple dotted names and the
2422 names for verbose exceptions, when multiple dotted names and the
2417 'parent' object were present on the same line.
2423 'parent' object were present on the same line.
2418
2424
2419 2005-01-11 Fernando Perez <fperez@colorado.edu>
2425 2005-01-11 Fernando Perez <fperez@colorado.edu>
2420
2426
2421 * IPython/genutils.py (flag_calls): new utility to trap and flag
2427 * IPython/genutils.py (flag_calls): new utility to trap and flag
2422 calls in functions. I need it to clean up matplotlib support.
2428 calls in functions. I need it to clean up matplotlib support.
2423 Also removed some deprecated code in genutils.
2429 Also removed some deprecated code in genutils.
2424
2430
2425 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2431 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2426 that matplotlib scripts called with %run, which don't call show()
2432 that matplotlib scripts called with %run, which don't call show()
2427 themselves, still have their plotting windows open.
2433 themselves, still have their plotting windows open.
2428
2434
2429 2005-01-05 Fernando Perez <fperez@colorado.edu>
2435 2005-01-05 Fernando Perez <fperez@colorado.edu>
2430
2436
2431 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2437 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2432 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2438 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2433
2439
2434 2004-12-19 Fernando Perez <fperez@colorado.edu>
2440 2004-12-19 Fernando Perez <fperez@colorado.edu>
2435
2441
2436 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2442 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2437 parent_runcode, which was an eyesore. The same result can be
2443 parent_runcode, which was an eyesore. The same result can be
2438 obtained with Python's regular superclass mechanisms.
2444 obtained with Python's regular superclass mechanisms.
2439
2445
2440 2004-12-17 Fernando Perez <fperez@colorado.edu>
2446 2004-12-17 Fernando Perez <fperez@colorado.edu>
2441
2447
2442 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2448 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2443 reported by Prabhu.
2449 reported by Prabhu.
2444 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2450 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2445 sys.stderr) instead of explicitly calling sys.stderr. This helps
2451 sys.stderr) instead of explicitly calling sys.stderr. This helps
2446 maintain our I/O abstractions clean, for future GUI embeddings.
2452 maintain our I/O abstractions clean, for future GUI embeddings.
2447
2453
2448 * IPython/genutils.py (info): added new utility for sys.stderr
2454 * IPython/genutils.py (info): added new utility for sys.stderr
2449 unified info message handling (thin wrapper around warn()).
2455 unified info message handling (thin wrapper around warn()).
2450
2456
2451 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2457 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2452 composite (dotted) names on verbose exceptions.
2458 composite (dotted) names on verbose exceptions.
2453 (VerboseTB.nullrepr): harden against another kind of errors which
2459 (VerboseTB.nullrepr): harden against another kind of errors which
2454 Python's inspect module can trigger, and which were crashing
2460 Python's inspect module can trigger, and which were crashing
2455 IPython. Thanks to a report by Marco Lombardi
2461 IPython. Thanks to a report by Marco Lombardi
2456 <mlombard-AT-ma010192.hq.eso.org>.
2462 <mlombard-AT-ma010192.hq.eso.org>.
2457
2463
2458 2004-12-13 *** Released version 0.6.6
2464 2004-12-13 *** Released version 0.6.6
2459
2465
2460 2004-12-12 Fernando Perez <fperez@colorado.edu>
2466 2004-12-12 Fernando Perez <fperez@colorado.edu>
2461
2467
2462 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2468 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2463 generated by pygtk upon initialization if it was built without
2469 generated by pygtk upon initialization if it was built without
2464 threads (for matplotlib users). After a crash reported by
2470 threads (for matplotlib users). After a crash reported by
2465 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2471 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2466
2472
2467 * IPython/ipmaker.py (make_IPython): fix small bug in the
2473 * IPython/ipmaker.py (make_IPython): fix small bug in the
2468 import_some parameter for multiple imports.
2474 import_some parameter for multiple imports.
2469
2475
2470 * IPython/iplib.py (ipmagic): simplified the interface of
2476 * IPython/iplib.py (ipmagic): simplified the interface of
2471 ipmagic() to take a single string argument, just as it would be
2477 ipmagic() to take a single string argument, just as it would be
2472 typed at the IPython cmd line.
2478 typed at the IPython cmd line.
2473 (ipalias): Added new ipalias() with an interface identical to
2479 (ipalias): Added new ipalias() with an interface identical to
2474 ipmagic(). This completes exposing a pure python interface to the
2480 ipmagic(). This completes exposing a pure python interface to the
2475 alias and magic system, which can be used in loops or more complex
2481 alias and magic system, which can be used in loops or more complex
2476 code where IPython's automatic line mangling is not active.
2482 code where IPython's automatic line mangling is not active.
2477
2483
2478 * IPython/genutils.py (timing): changed interface of timing to
2484 * IPython/genutils.py (timing): changed interface of timing to
2479 simply run code once, which is the most common case. timings()
2485 simply run code once, which is the most common case. timings()
2480 remains unchanged, for the cases where you want multiple runs.
2486 remains unchanged, for the cases where you want multiple runs.
2481
2487
2482 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2488 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2483 bug where Python2.2 crashes with exec'ing code which does not end
2489 bug where Python2.2 crashes with exec'ing code which does not end
2484 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2490 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2485 before.
2491 before.
2486
2492
2487 2004-12-10 Fernando Perez <fperez@colorado.edu>
2493 2004-12-10 Fernando Perez <fperez@colorado.edu>
2488
2494
2489 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2495 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2490 -t to -T, to accomodate the new -t flag in %run (the %run and
2496 -t to -T, to accomodate the new -t flag in %run (the %run and
2491 %prun options are kind of intermixed, and it's not easy to change
2497 %prun options are kind of intermixed, and it's not easy to change
2492 this with the limitations of python's getopt).
2498 this with the limitations of python's getopt).
2493
2499
2494 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2500 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2495 the execution of scripts. It's not as fine-tuned as timeit.py,
2501 the execution of scripts. It's not as fine-tuned as timeit.py,
2496 but it works from inside ipython (and under 2.2, which lacks
2502 but it works from inside ipython (and under 2.2, which lacks
2497 timeit.py). Optionally a number of runs > 1 can be given for
2503 timeit.py). Optionally a number of runs > 1 can be given for
2498 timing very short-running code.
2504 timing very short-running code.
2499
2505
2500 * IPython/genutils.py (uniq_stable): new routine which returns a
2506 * IPython/genutils.py (uniq_stable): new routine which returns a
2501 list of unique elements in any iterable, but in stable order of
2507 list of unique elements in any iterable, but in stable order of
2502 appearance. I needed this for the ultraTB fixes, and it's a handy
2508 appearance. I needed this for the ultraTB fixes, and it's a handy
2503 utility.
2509 utility.
2504
2510
2505 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2511 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2506 dotted names in Verbose exceptions. This had been broken since
2512 dotted names in Verbose exceptions. This had been broken since
2507 the very start, now x.y will properly be printed in a Verbose
2513 the very start, now x.y will properly be printed in a Verbose
2508 traceback, instead of x being shown and y appearing always as an
2514 traceback, instead of x being shown and y appearing always as an
2509 'undefined global'. Getting this to work was a bit tricky,
2515 'undefined global'. Getting this to work was a bit tricky,
2510 because by default python tokenizers are stateless. Saved by
2516 because by default python tokenizers are stateless. Saved by
2511 python's ability to easily add a bit of state to an arbitrary
2517 python's ability to easily add a bit of state to an arbitrary
2512 function (without needing to build a full-blown callable object).
2518 function (without needing to build a full-blown callable object).
2513
2519
2514 Also big cleanup of this code, which had horrendous runtime
2520 Also big cleanup of this code, which had horrendous runtime
2515 lookups of zillions of attributes for colorization. Moved all
2521 lookups of zillions of attributes for colorization. Moved all
2516 this code into a few templates, which make it cleaner and quicker.
2522 this code into a few templates, which make it cleaner and quicker.
2517
2523
2518 Printout quality was also improved for Verbose exceptions: one
2524 Printout quality was also improved for Verbose exceptions: one
2519 variable per line, and memory addresses are printed (this can be
2525 variable per line, and memory addresses are printed (this can be
2520 quite handy in nasty debugging situations, which is what Verbose
2526 quite handy in nasty debugging situations, which is what Verbose
2521 is for).
2527 is for).
2522
2528
2523 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2529 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2524 the command line as scripts to be loaded by embedded instances.
2530 the command line as scripts to be loaded by embedded instances.
2525 Doing so has the potential for an infinite recursion if there are
2531 Doing so has the potential for an infinite recursion if there are
2526 exceptions thrown in the process. This fixes a strange crash
2532 exceptions thrown in the process. This fixes a strange crash
2527 reported by Philippe MULLER <muller-AT-irit.fr>.
2533 reported by Philippe MULLER <muller-AT-irit.fr>.
2528
2534
2529 2004-12-09 Fernando Perez <fperez@colorado.edu>
2535 2004-12-09 Fernando Perez <fperez@colorado.edu>
2530
2536
2531 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2537 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2532 to reflect new names in matplotlib, which now expose the
2538 to reflect new names in matplotlib, which now expose the
2533 matlab-compatible interface via a pylab module instead of the
2539 matlab-compatible interface via a pylab module instead of the
2534 'matlab' name. The new code is backwards compatible, so users of
2540 'matlab' name. The new code is backwards compatible, so users of
2535 all matplotlib versions are OK. Patch by J. Hunter.
2541 all matplotlib versions are OK. Patch by J. Hunter.
2536
2542
2537 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2543 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2538 of __init__ docstrings for instances (class docstrings are already
2544 of __init__ docstrings for instances (class docstrings are already
2539 automatically printed). Instances with customized docstrings
2545 automatically printed). Instances with customized docstrings
2540 (indep. of the class) are also recognized and all 3 separate
2546 (indep. of the class) are also recognized and all 3 separate
2541 docstrings are printed (instance, class, constructor). After some
2547 docstrings are printed (instance, class, constructor). After some
2542 comments/suggestions by J. Hunter.
2548 comments/suggestions by J. Hunter.
2543
2549
2544 2004-12-05 Fernando Perez <fperez@colorado.edu>
2550 2004-12-05 Fernando Perez <fperez@colorado.edu>
2545
2551
2546 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2552 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2547 warnings when tab-completion fails and triggers an exception.
2553 warnings when tab-completion fails and triggers an exception.
2548
2554
2549 2004-12-03 Fernando Perez <fperez@colorado.edu>
2555 2004-12-03 Fernando Perez <fperez@colorado.edu>
2550
2556
2551 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2557 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2552 be triggered when using 'run -p'. An incorrect option flag was
2558 be triggered when using 'run -p'. An incorrect option flag was
2553 being set ('d' instead of 'D').
2559 being set ('d' instead of 'D').
2554 (manpage): fix missing escaped \- sign.
2560 (manpage): fix missing escaped \- sign.
2555
2561
2556 2004-11-30 *** Released version 0.6.5
2562 2004-11-30 *** Released version 0.6.5
2557
2563
2558 2004-11-30 Fernando Perez <fperez@colorado.edu>
2564 2004-11-30 Fernando Perez <fperez@colorado.edu>
2559
2565
2560 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2566 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2561 setting with -d option.
2567 setting with -d option.
2562
2568
2563 * setup.py (docfiles): Fix problem where the doc glob I was using
2569 * setup.py (docfiles): Fix problem where the doc glob I was using
2564 was COMPLETELY BROKEN. It was giving the right files by pure
2570 was COMPLETELY BROKEN. It was giving the right files by pure
2565 accident, but failed once I tried to include ipython.el. Note:
2571 accident, but failed once I tried to include ipython.el. Note:
2566 glob() does NOT allow you to do exclusion on multiple endings!
2572 glob() does NOT allow you to do exclusion on multiple endings!
2567
2573
2568 2004-11-29 Fernando Perez <fperez@colorado.edu>
2574 2004-11-29 Fernando Perez <fperez@colorado.edu>
2569
2575
2570 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2576 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2571 the manpage as the source. Better formatting & consistency.
2577 the manpage as the source. Better formatting & consistency.
2572
2578
2573 * IPython/Magic.py (magic_run): Added new -d option, to run
2579 * IPython/Magic.py (magic_run): Added new -d option, to run
2574 scripts under the control of the python pdb debugger. Note that
2580 scripts under the control of the python pdb debugger. Note that
2575 this required changing the %prun option -d to -D, to avoid a clash
2581 this required changing the %prun option -d to -D, to avoid a clash
2576 (since %run must pass options to %prun, and getopt is too dumb to
2582 (since %run must pass options to %prun, and getopt is too dumb to
2577 handle options with string values with embedded spaces). Thanks
2583 handle options with string values with embedded spaces). Thanks
2578 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2584 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2579 (magic_who_ls): added type matching to %who and %whos, so that one
2585 (magic_who_ls): added type matching to %who and %whos, so that one
2580 can filter their output to only include variables of certain
2586 can filter their output to only include variables of certain
2581 types. Another suggestion by Matthew.
2587 types. Another suggestion by Matthew.
2582 (magic_whos): Added memory summaries in kb and Mb for arrays.
2588 (magic_whos): Added memory summaries in kb and Mb for arrays.
2583 (magic_who): Improve formatting (break lines every 9 vars).
2589 (magic_who): Improve formatting (break lines every 9 vars).
2584
2590
2585 2004-11-28 Fernando Perez <fperez@colorado.edu>
2591 2004-11-28 Fernando Perez <fperez@colorado.edu>
2586
2592
2587 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2593 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2588 cache when empty lines were present.
2594 cache when empty lines were present.
2589
2595
2590 2004-11-24 Fernando Perez <fperez@colorado.edu>
2596 2004-11-24 Fernando Perez <fperez@colorado.edu>
2591
2597
2592 * IPython/usage.py (__doc__): document the re-activated threading
2598 * IPython/usage.py (__doc__): document the re-activated threading
2593 options for WX and GTK.
2599 options for WX and GTK.
2594
2600
2595 2004-11-23 Fernando Perez <fperez@colorado.edu>
2601 2004-11-23 Fernando Perez <fperez@colorado.edu>
2596
2602
2597 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2603 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2598 the -wthread and -gthread options, along with a new -tk one to try
2604 the -wthread and -gthread options, along with a new -tk one to try
2599 and coordinate Tk threading with wx/gtk. The tk support is very
2605 and coordinate Tk threading with wx/gtk. The tk support is very
2600 platform dependent, since it seems to require Tcl and Tk to be
2606 platform dependent, since it seems to require Tcl and Tk to be
2601 built with threads (Fedora1/2 appears NOT to have it, but in
2607 built with threads (Fedora1/2 appears NOT to have it, but in
2602 Prabhu's Debian boxes it works OK). But even with some Tk
2608 Prabhu's Debian boxes it works OK). But even with some Tk
2603 limitations, this is a great improvement.
2609 limitations, this is a great improvement.
2604
2610
2605 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2611 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2606 info in user prompts. Patch by Prabhu.
2612 info in user prompts. Patch by Prabhu.
2607
2613
2608 2004-11-18 Fernando Perez <fperez@colorado.edu>
2614 2004-11-18 Fernando Perez <fperez@colorado.edu>
2609
2615
2610 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2616 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2611 EOFErrors and bail, to avoid infinite loops if a non-terminating
2617 EOFErrors and bail, to avoid infinite loops if a non-terminating
2612 file is fed into ipython. Patch submitted in issue 19 by user,
2618 file is fed into ipython. Patch submitted in issue 19 by user,
2613 many thanks.
2619 many thanks.
2614
2620
2615 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2621 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2616 autoquote/parens in continuation prompts, which can cause lots of
2622 autoquote/parens in continuation prompts, which can cause lots of
2617 problems. Closes roundup issue 20.
2623 problems. Closes roundup issue 20.
2618
2624
2619 2004-11-17 Fernando Perez <fperez@colorado.edu>
2625 2004-11-17 Fernando Perez <fperez@colorado.edu>
2620
2626
2621 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2627 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2622 reported as debian bug #280505. I'm not sure my local changelog
2628 reported as debian bug #280505. I'm not sure my local changelog
2623 entry has the proper debian format (Jack?).
2629 entry has the proper debian format (Jack?).
2624
2630
2625 2004-11-08 *** Released version 0.6.4
2631 2004-11-08 *** Released version 0.6.4
2626
2632
2627 2004-11-08 Fernando Perez <fperez@colorado.edu>
2633 2004-11-08 Fernando Perez <fperez@colorado.edu>
2628
2634
2629 * IPython/iplib.py (init_readline): Fix exit message for Windows
2635 * IPython/iplib.py (init_readline): Fix exit message for Windows
2630 when readline is active. Thanks to a report by Eric Jones
2636 when readline is active. Thanks to a report by Eric Jones
2631 <eric-AT-enthought.com>.
2637 <eric-AT-enthought.com>.
2632
2638
2633 2004-11-07 Fernando Perez <fperez@colorado.edu>
2639 2004-11-07 Fernando Perez <fperez@colorado.edu>
2634
2640
2635 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2641 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2636 sometimes seen by win2k/cygwin users.
2642 sometimes seen by win2k/cygwin users.
2637
2643
2638 2004-11-06 Fernando Perez <fperez@colorado.edu>
2644 2004-11-06 Fernando Perez <fperez@colorado.edu>
2639
2645
2640 * IPython/iplib.py (interact): Change the handling of %Exit from
2646 * IPython/iplib.py (interact): Change the handling of %Exit from
2641 trying to propagate a SystemExit to an internal ipython flag.
2647 trying to propagate a SystemExit to an internal ipython flag.
2642 This is less elegant than using Python's exception mechanism, but
2648 This is less elegant than using Python's exception mechanism, but
2643 I can't get that to work reliably with threads, so under -pylab
2649 I can't get that to work reliably with threads, so under -pylab
2644 %Exit was hanging IPython. Cross-thread exception handling is
2650 %Exit was hanging IPython. Cross-thread exception handling is
2645 really a bitch. Thaks to a bug report by Stephen Walton
2651 really a bitch. Thaks to a bug report by Stephen Walton
2646 <stephen.walton-AT-csun.edu>.
2652 <stephen.walton-AT-csun.edu>.
2647
2653
2648 2004-11-04 Fernando Perez <fperez@colorado.edu>
2654 2004-11-04 Fernando Perez <fperez@colorado.edu>
2649
2655
2650 * IPython/iplib.py (raw_input_original): store a pointer to the
2656 * IPython/iplib.py (raw_input_original): store a pointer to the
2651 true raw_input to harden against code which can modify it
2657 true raw_input to harden against code which can modify it
2652 (wx.py.PyShell does this and would otherwise crash ipython).
2658 (wx.py.PyShell does this and would otherwise crash ipython).
2653 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2659 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2654
2660
2655 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2661 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2656 Ctrl-C problem, which does not mess up the input line.
2662 Ctrl-C problem, which does not mess up the input line.
2657
2663
2658 2004-11-03 Fernando Perez <fperez@colorado.edu>
2664 2004-11-03 Fernando Perez <fperez@colorado.edu>
2659
2665
2660 * IPython/Release.py: Changed licensing to BSD, in all files.
2666 * IPython/Release.py: Changed licensing to BSD, in all files.
2661 (name): lowercase name for tarball/RPM release.
2667 (name): lowercase name for tarball/RPM release.
2662
2668
2663 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2669 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2664 use throughout ipython.
2670 use throughout ipython.
2665
2671
2666 * IPython/Magic.py (Magic._ofind): Switch to using the new
2672 * IPython/Magic.py (Magic._ofind): Switch to using the new
2667 OInspect.getdoc() function.
2673 OInspect.getdoc() function.
2668
2674
2669 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2675 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2670 of the line currently being canceled via Ctrl-C. It's extremely
2676 of the line currently being canceled via Ctrl-C. It's extremely
2671 ugly, but I don't know how to do it better (the problem is one of
2677 ugly, but I don't know how to do it better (the problem is one of
2672 handling cross-thread exceptions).
2678 handling cross-thread exceptions).
2673
2679
2674 2004-10-28 Fernando Perez <fperez@colorado.edu>
2680 2004-10-28 Fernando Perez <fperez@colorado.edu>
2675
2681
2676 * IPython/Shell.py (signal_handler): add signal handlers to trap
2682 * IPython/Shell.py (signal_handler): add signal handlers to trap
2677 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2683 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2678 report by Francesc Alted.
2684 report by Francesc Alted.
2679
2685
2680 2004-10-21 Fernando Perez <fperez@colorado.edu>
2686 2004-10-21 Fernando Perez <fperez@colorado.edu>
2681
2687
2682 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2688 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2683 to % for pysh syntax extensions.
2689 to % for pysh syntax extensions.
2684
2690
2685 2004-10-09 Fernando Perez <fperez@colorado.edu>
2691 2004-10-09 Fernando Perez <fperez@colorado.edu>
2686
2692
2687 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2693 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2688 arrays to print a more useful summary, without calling str(arr).
2694 arrays to print a more useful summary, without calling str(arr).
2689 This avoids the problem of extremely lengthy computations which
2695 This avoids the problem of extremely lengthy computations which
2690 occur if arr is large, and appear to the user as a system lockup
2696 occur if arr is large, and appear to the user as a system lockup
2691 with 100% cpu activity. After a suggestion by Kristian Sandberg
2697 with 100% cpu activity. After a suggestion by Kristian Sandberg
2692 <Kristian.Sandberg@colorado.edu>.
2698 <Kristian.Sandberg@colorado.edu>.
2693 (Magic.__init__): fix bug in global magic escapes not being
2699 (Magic.__init__): fix bug in global magic escapes not being
2694 correctly set.
2700 correctly set.
2695
2701
2696 2004-10-08 Fernando Perez <fperez@colorado.edu>
2702 2004-10-08 Fernando Perez <fperez@colorado.edu>
2697
2703
2698 * IPython/Magic.py (__license__): change to absolute imports of
2704 * IPython/Magic.py (__license__): change to absolute imports of
2699 ipython's own internal packages, to start adapting to the absolute
2705 ipython's own internal packages, to start adapting to the absolute
2700 import requirement of PEP-328.
2706 import requirement of PEP-328.
2701
2707
2702 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2708 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2703 files, and standardize author/license marks through the Release
2709 files, and standardize author/license marks through the Release
2704 module instead of having per/file stuff (except for files with
2710 module instead of having per/file stuff (except for files with
2705 particular licenses, like the MIT/PSF-licensed codes).
2711 particular licenses, like the MIT/PSF-licensed codes).
2706
2712
2707 * IPython/Debugger.py: remove dead code for python 2.1
2713 * IPython/Debugger.py: remove dead code for python 2.1
2708
2714
2709 2004-10-04 Fernando Perez <fperez@colorado.edu>
2715 2004-10-04 Fernando Perez <fperez@colorado.edu>
2710
2716
2711 * IPython/iplib.py (ipmagic): New function for accessing magics
2717 * IPython/iplib.py (ipmagic): New function for accessing magics
2712 via a normal python function call.
2718 via a normal python function call.
2713
2719
2714 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2720 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2715 from '@' to '%', to accomodate the new @decorator syntax of python
2721 from '@' to '%', to accomodate the new @decorator syntax of python
2716 2.4.
2722 2.4.
2717
2723
2718 2004-09-29 Fernando Perez <fperez@colorado.edu>
2724 2004-09-29 Fernando Perez <fperez@colorado.edu>
2719
2725
2720 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2726 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2721 matplotlib.use to prevent running scripts which try to switch
2727 matplotlib.use to prevent running scripts which try to switch
2722 interactive backends from within ipython. This will just crash
2728 interactive backends from within ipython. This will just crash
2723 the python interpreter, so we can't allow it (but a detailed error
2729 the python interpreter, so we can't allow it (but a detailed error
2724 is given to the user).
2730 is given to the user).
2725
2731
2726 2004-09-28 Fernando Perez <fperez@colorado.edu>
2732 2004-09-28 Fernando Perez <fperez@colorado.edu>
2727
2733
2728 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2734 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2729 matplotlib-related fixes so that using @run with non-matplotlib
2735 matplotlib-related fixes so that using @run with non-matplotlib
2730 scripts doesn't pop up spurious plot windows. This requires
2736 scripts doesn't pop up spurious plot windows. This requires
2731 matplotlib >= 0.63, where I had to make some changes as well.
2737 matplotlib >= 0.63, where I had to make some changes as well.
2732
2738
2733 * IPython/ipmaker.py (make_IPython): update version requirement to
2739 * IPython/ipmaker.py (make_IPython): update version requirement to
2734 python 2.2.
2740 python 2.2.
2735
2741
2736 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2742 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2737 banner arg for embedded customization.
2743 banner arg for embedded customization.
2738
2744
2739 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2745 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2740 explicit uses of __IP as the IPython's instance name. Now things
2746 explicit uses of __IP as the IPython's instance name. Now things
2741 are properly handled via the shell.name value. The actual code
2747 are properly handled via the shell.name value. The actual code
2742 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2748 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2743 is much better than before. I'll clean things completely when the
2749 is much better than before. I'll clean things completely when the
2744 magic stuff gets a real overhaul.
2750 magic stuff gets a real overhaul.
2745
2751
2746 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2752 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2747 minor changes to debian dir.
2753 minor changes to debian dir.
2748
2754
2749 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2755 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2750 pointer to the shell itself in the interactive namespace even when
2756 pointer to the shell itself in the interactive namespace even when
2751 a user-supplied dict is provided. This is needed for embedding
2757 a user-supplied dict is provided. This is needed for embedding
2752 purposes (found by tests with Michel Sanner).
2758 purposes (found by tests with Michel Sanner).
2753
2759
2754 2004-09-27 Fernando Perez <fperez@colorado.edu>
2760 2004-09-27 Fernando Perez <fperez@colorado.edu>
2755
2761
2756 * IPython/UserConfig/ipythonrc: remove []{} from
2762 * IPython/UserConfig/ipythonrc: remove []{} from
2757 readline_remove_delims, so that things like [modname.<TAB> do
2763 readline_remove_delims, so that things like [modname.<TAB> do
2758 proper completion. This disables [].TAB, but that's a less common
2764 proper completion. This disables [].TAB, but that's a less common
2759 case than module names in list comprehensions, for example.
2765 case than module names in list comprehensions, for example.
2760 Thanks to a report by Andrea Riciputi.
2766 Thanks to a report by Andrea Riciputi.
2761
2767
2762 2004-09-09 Fernando Perez <fperez@colorado.edu>
2768 2004-09-09 Fernando Perez <fperez@colorado.edu>
2763
2769
2764 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2770 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2765 blocking problems in win32 and osx. Fix by John.
2771 blocking problems in win32 and osx. Fix by John.
2766
2772
2767 2004-09-08 Fernando Perez <fperez@colorado.edu>
2773 2004-09-08 Fernando Perez <fperez@colorado.edu>
2768
2774
2769 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2775 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2770 for Win32 and OSX. Fix by John Hunter.
2776 for Win32 and OSX. Fix by John Hunter.
2771
2777
2772 2004-08-30 *** Released version 0.6.3
2778 2004-08-30 *** Released version 0.6.3
2773
2779
2774 2004-08-30 Fernando Perez <fperez@colorado.edu>
2780 2004-08-30 Fernando Perez <fperez@colorado.edu>
2775
2781
2776 * setup.py (isfile): Add manpages to list of dependent files to be
2782 * setup.py (isfile): Add manpages to list of dependent files to be
2777 updated.
2783 updated.
2778
2784
2779 2004-08-27 Fernando Perez <fperez@colorado.edu>
2785 2004-08-27 Fernando Perez <fperez@colorado.edu>
2780
2786
2781 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2787 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2782 for now. They don't really work with standalone WX/GTK code
2788 for now. They don't really work with standalone WX/GTK code
2783 (though matplotlib IS working fine with both of those backends).
2789 (though matplotlib IS working fine with both of those backends).
2784 This will neeed much more testing. I disabled most things with
2790 This will neeed much more testing. I disabled most things with
2785 comments, so turning it back on later should be pretty easy.
2791 comments, so turning it back on later should be pretty easy.
2786
2792
2787 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2793 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2788 autocalling of expressions like r'foo', by modifying the line
2794 autocalling of expressions like r'foo', by modifying the line
2789 split regexp. Closes
2795 split regexp. Closes
2790 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2796 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2791 Riley <ipythonbugs-AT-sabi.net>.
2797 Riley <ipythonbugs-AT-sabi.net>.
2792 (InteractiveShell.mainloop): honor --nobanner with banner
2798 (InteractiveShell.mainloop): honor --nobanner with banner
2793 extensions.
2799 extensions.
2794
2800
2795 * IPython/Shell.py: Significant refactoring of all classes, so
2801 * IPython/Shell.py: Significant refactoring of all classes, so
2796 that we can really support ALL matplotlib backends and threading
2802 that we can really support ALL matplotlib backends and threading
2797 models (John spotted a bug with Tk which required this). Now we
2803 models (John spotted a bug with Tk which required this). Now we
2798 should support single-threaded, WX-threads and GTK-threads, both
2804 should support single-threaded, WX-threads and GTK-threads, both
2799 for generic code and for matplotlib.
2805 for generic code and for matplotlib.
2800
2806
2801 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2807 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2802 -pylab, to simplify things for users. Will also remove the pylab
2808 -pylab, to simplify things for users. Will also remove the pylab
2803 profile, since now all of matplotlib configuration is directly
2809 profile, since now all of matplotlib configuration is directly
2804 handled here. This also reduces startup time.
2810 handled here. This also reduces startup time.
2805
2811
2806 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2812 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2807 shell wasn't being correctly called. Also in IPShellWX.
2813 shell wasn't being correctly called. Also in IPShellWX.
2808
2814
2809 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2815 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2810 fine-tune banner.
2816 fine-tune banner.
2811
2817
2812 * IPython/numutils.py (spike): Deprecate these spike functions,
2818 * IPython/numutils.py (spike): Deprecate these spike functions,
2813 delete (long deprecated) gnuplot_exec handler.
2819 delete (long deprecated) gnuplot_exec handler.
2814
2820
2815 2004-08-26 Fernando Perez <fperez@colorado.edu>
2821 2004-08-26 Fernando Perez <fperez@colorado.edu>
2816
2822
2817 * ipython.1: Update for threading options, plus some others which
2823 * ipython.1: Update for threading options, plus some others which
2818 were missing.
2824 were missing.
2819
2825
2820 * IPython/ipmaker.py (__call__): Added -wthread option for
2826 * IPython/ipmaker.py (__call__): Added -wthread option for
2821 wxpython thread handling. Make sure threading options are only
2827 wxpython thread handling. Make sure threading options are only
2822 valid at the command line.
2828 valid at the command line.
2823
2829
2824 * scripts/ipython: moved shell selection into a factory function
2830 * scripts/ipython: moved shell selection into a factory function
2825 in Shell.py, to keep the starter script to a minimum.
2831 in Shell.py, to keep the starter script to a minimum.
2826
2832
2827 2004-08-25 Fernando Perez <fperez@colorado.edu>
2833 2004-08-25 Fernando Perez <fperez@colorado.edu>
2828
2834
2829 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2835 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2830 John. Along with some recent changes he made to matplotlib, the
2836 John. Along with some recent changes he made to matplotlib, the
2831 next versions of both systems should work very well together.
2837 next versions of both systems should work very well together.
2832
2838
2833 2004-08-24 Fernando Perez <fperez@colorado.edu>
2839 2004-08-24 Fernando Perez <fperez@colorado.edu>
2834
2840
2835 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2841 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2836 tried to switch the profiling to using hotshot, but I'm getting
2842 tried to switch the profiling to using hotshot, but I'm getting
2837 strange errors from prof.runctx() there. I may be misreading the
2843 strange errors from prof.runctx() there. I may be misreading the
2838 docs, but it looks weird. For now the profiling code will
2844 docs, but it looks weird. For now the profiling code will
2839 continue to use the standard profiler.
2845 continue to use the standard profiler.
2840
2846
2841 2004-08-23 Fernando Perez <fperez@colorado.edu>
2847 2004-08-23 Fernando Perez <fperez@colorado.edu>
2842
2848
2843 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2849 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2844 threaded shell, by John Hunter. It's not quite ready yet, but
2850 threaded shell, by John Hunter. It's not quite ready yet, but
2845 close.
2851 close.
2846
2852
2847 2004-08-22 Fernando Perez <fperez@colorado.edu>
2853 2004-08-22 Fernando Perez <fperez@colorado.edu>
2848
2854
2849 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2855 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2850 in Magic and ultraTB.
2856 in Magic and ultraTB.
2851
2857
2852 * ipython.1: document threading options in manpage.
2858 * ipython.1: document threading options in manpage.
2853
2859
2854 * scripts/ipython: Changed name of -thread option to -gthread,
2860 * scripts/ipython: Changed name of -thread option to -gthread,
2855 since this is GTK specific. I want to leave the door open for a
2861 since this is GTK specific. I want to leave the door open for a
2856 -wthread option for WX, which will most likely be necessary. This
2862 -wthread option for WX, which will most likely be necessary. This
2857 change affects usage and ipmaker as well.
2863 change affects usage and ipmaker as well.
2858
2864
2859 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2865 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2860 handle the matplotlib shell issues. Code by John Hunter
2866 handle the matplotlib shell issues. Code by John Hunter
2861 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2867 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2862 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2868 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2863 broken (and disabled for end users) for now, but it puts the
2869 broken (and disabled for end users) for now, but it puts the
2864 infrastructure in place.
2870 infrastructure in place.
2865
2871
2866 2004-08-21 Fernando Perez <fperez@colorado.edu>
2872 2004-08-21 Fernando Perez <fperez@colorado.edu>
2867
2873
2868 * ipythonrc-pylab: Add matplotlib support.
2874 * ipythonrc-pylab: Add matplotlib support.
2869
2875
2870 * matplotlib_config.py: new files for matplotlib support, part of
2876 * matplotlib_config.py: new files for matplotlib support, part of
2871 the pylab profile.
2877 the pylab profile.
2872
2878
2873 * IPython/usage.py (__doc__): documented the threading options.
2879 * IPython/usage.py (__doc__): documented the threading options.
2874
2880
2875 2004-08-20 Fernando Perez <fperez@colorado.edu>
2881 2004-08-20 Fernando Perez <fperez@colorado.edu>
2876
2882
2877 * ipython: Modified the main calling routine to handle the -thread
2883 * ipython: Modified the main calling routine to handle the -thread
2878 and -mpthread options. This needs to be done as a top-level hack,
2884 and -mpthread options. This needs to be done as a top-level hack,
2879 because it determines which class to instantiate for IPython
2885 because it determines which class to instantiate for IPython
2880 itself.
2886 itself.
2881
2887
2882 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2888 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2883 classes to support multithreaded GTK operation without blocking,
2889 classes to support multithreaded GTK operation without blocking,
2884 and matplotlib with all backends. This is a lot of still very
2890 and matplotlib with all backends. This is a lot of still very
2885 experimental code, and threads are tricky. So it may still have a
2891 experimental code, and threads are tricky. So it may still have a
2886 few rough edges... This code owes a lot to
2892 few rough edges... This code owes a lot to
2887 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2893 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2888 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2894 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2889 to John Hunter for all the matplotlib work.
2895 to John Hunter for all the matplotlib work.
2890
2896
2891 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2897 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2892 options for gtk thread and matplotlib support.
2898 options for gtk thread and matplotlib support.
2893
2899
2894 2004-08-16 Fernando Perez <fperez@colorado.edu>
2900 2004-08-16 Fernando Perez <fperez@colorado.edu>
2895
2901
2896 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2902 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2897 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2903 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2898 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2904 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2899
2905
2900 2004-08-11 Fernando Perez <fperez@colorado.edu>
2906 2004-08-11 Fernando Perez <fperez@colorado.edu>
2901
2907
2902 * setup.py (isfile): Fix build so documentation gets updated for
2908 * setup.py (isfile): Fix build so documentation gets updated for
2903 rpms (it was only done for .tgz builds).
2909 rpms (it was only done for .tgz builds).
2904
2910
2905 2004-08-10 Fernando Perez <fperez@colorado.edu>
2911 2004-08-10 Fernando Perez <fperez@colorado.edu>
2906
2912
2907 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2913 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2908
2914
2909 * iplib.py : Silence syntax error exceptions in tab-completion.
2915 * iplib.py : Silence syntax error exceptions in tab-completion.
2910
2916
2911 2004-08-05 Fernando Perez <fperez@colorado.edu>
2917 2004-08-05 Fernando Perez <fperez@colorado.edu>
2912
2918
2913 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2919 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2914 'color off' mark for continuation prompts. This was causing long
2920 'color off' mark for continuation prompts. This was causing long
2915 continuation lines to mis-wrap.
2921 continuation lines to mis-wrap.
2916
2922
2917 2004-08-01 Fernando Perez <fperez@colorado.edu>
2923 2004-08-01 Fernando Perez <fperez@colorado.edu>
2918
2924
2919 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2925 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2920 for building ipython to be a parameter. All this is necessary
2926 for building ipython to be a parameter. All this is necessary
2921 right now to have a multithreaded version, but this insane
2927 right now to have a multithreaded version, but this insane
2922 non-design will be cleaned up soon. For now, it's a hack that
2928 non-design will be cleaned up soon. For now, it's a hack that
2923 works.
2929 works.
2924
2930
2925 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2931 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2926 args in various places. No bugs so far, but it's a dangerous
2932 args in various places. No bugs so far, but it's a dangerous
2927 practice.
2933 practice.
2928
2934
2929 2004-07-31 Fernando Perez <fperez@colorado.edu>
2935 2004-07-31 Fernando Perez <fperez@colorado.edu>
2930
2936
2931 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2937 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2932 fix completion of files with dots in their names under most
2938 fix completion of files with dots in their names under most
2933 profiles (pysh was OK because the completion order is different).
2939 profiles (pysh was OK because the completion order is different).
2934
2940
2935 2004-07-27 Fernando Perez <fperez@colorado.edu>
2941 2004-07-27 Fernando Perez <fperez@colorado.edu>
2936
2942
2937 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2943 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2938 keywords manually, b/c the one in keyword.py was removed in python
2944 keywords manually, b/c the one in keyword.py was removed in python
2939 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2945 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2940 This is NOT a bug under python 2.3 and earlier.
2946 This is NOT a bug under python 2.3 and earlier.
2941
2947
2942 2004-07-26 Fernando Perez <fperez@colorado.edu>
2948 2004-07-26 Fernando Perez <fperez@colorado.edu>
2943
2949
2944 * IPython/ultraTB.py (VerboseTB.text): Add another
2950 * IPython/ultraTB.py (VerboseTB.text): Add another
2945 linecache.checkcache() call to try to prevent inspect.py from
2951 linecache.checkcache() call to try to prevent inspect.py from
2946 crashing under python 2.3. I think this fixes
2952 crashing under python 2.3. I think this fixes
2947 http://www.scipy.net/roundup/ipython/issue17.
2953 http://www.scipy.net/roundup/ipython/issue17.
2948
2954
2949 2004-07-26 *** Released version 0.6.2
2955 2004-07-26 *** Released version 0.6.2
2950
2956
2951 2004-07-26 Fernando Perez <fperez@colorado.edu>
2957 2004-07-26 Fernando Perez <fperez@colorado.edu>
2952
2958
2953 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2959 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2954 fail for any number.
2960 fail for any number.
2955 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2961 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2956 empty bookmarks.
2962 empty bookmarks.
2957
2963
2958 2004-07-26 *** Released version 0.6.1
2964 2004-07-26 *** Released version 0.6.1
2959
2965
2960 2004-07-26 Fernando Perez <fperez@colorado.edu>
2966 2004-07-26 Fernando Perez <fperez@colorado.edu>
2961
2967
2962 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2968 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2963
2969
2964 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2970 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2965 escaping '()[]{}' in filenames.
2971 escaping '()[]{}' in filenames.
2966
2972
2967 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2973 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2968 Python 2.2 users who lack a proper shlex.split.
2974 Python 2.2 users who lack a proper shlex.split.
2969
2975
2970 2004-07-19 Fernando Perez <fperez@colorado.edu>
2976 2004-07-19 Fernando Perez <fperez@colorado.edu>
2971
2977
2972 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2978 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2973 for reading readline's init file. I follow the normal chain:
2979 for reading readline's init file. I follow the normal chain:
2974 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2980 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2975 report by Mike Heeter. This closes
2981 report by Mike Heeter. This closes
2976 http://www.scipy.net/roundup/ipython/issue16.
2982 http://www.scipy.net/roundup/ipython/issue16.
2977
2983
2978 2004-07-18 Fernando Perez <fperez@colorado.edu>
2984 2004-07-18 Fernando Perez <fperez@colorado.edu>
2979
2985
2980 * IPython/iplib.py (__init__): Add better handling of '\' under
2986 * IPython/iplib.py (__init__): Add better handling of '\' under
2981 Win32 for filenames. After a patch by Ville.
2987 Win32 for filenames. After a patch by Ville.
2982
2988
2983 2004-07-17 Fernando Perez <fperez@colorado.edu>
2989 2004-07-17 Fernando Perez <fperez@colorado.edu>
2984
2990
2985 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2991 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2986 autocalling would be triggered for 'foo is bar' if foo is
2992 autocalling would be triggered for 'foo is bar' if foo is
2987 callable. I also cleaned up the autocall detection code to use a
2993 callable. I also cleaned up the autocall detection code to use a
2988 regexp, which is faster. Bug reported by Alexander Schmolck.
2994 regexp, which is faster. Bug reported by Alexander Schmolck.
2989
2995
2990 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2996 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2991 '?' in them would confuse the help system. Reported by Alex
2997 '?' in them would confuse the help system. Reported by Alex
2992 Schmolck.
2998 Schmolck.
2993
2999
2994 2004-07-16 Fernando Perez <fperez@colorado.edu>
3000 2004-07-16 Fernando Perez <fperez@colorado.edu>
2995
3001
2996 * IPython/GnuplotInteractive.py (__all__): added plot2.
3002 * IPython/GnuplotInteractive.py (__all__): added plot2.
2997
3003
2998 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3004 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2999 plotting dictionaries, lists or tuples of 1d arrays.
3005 plotting dictionaries, lists or tuples of 1d arrays.
3000
3006
3001 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3007 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3002 optimizations.
3008 optimizations.
3003
3009
3004 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3010 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3005 the information which was there from Janko's original IPP code:
3011 the information which was there from Janko's original IPP code:
3006
3012
3007 03.05.99 20:53 porto.ifm.uni-kiel.de
3013 03.05.99 20:53 porto.ifm.uni-kiel.de
3008 --Started changelog.
3014 --Started changelog.
3009 --make clear do what it say it does
3015 --make clear do what it say it does
3010 --added pretty output of lines from inputcache
3016 --added pretty output of lines from inputcache
3011 --Made Logger a mixin class, simplifies handling of switches
3017 --Made Logger a mixin class, simplifies handling of switches
3012 --Added own completer class. .string<TAB> expands to last history
3018 --Added own completer class. .string<TAB> expands to last history
3013 line which starts with string. The new expansion is also present
3019 line which starts with string. The new expansion is also present
3014 with Ctrl-r from the readline library. But this shows, who this
3020 with Ctrl-r from the readline library. But this shows, who this
3015 can be done for other cases.
3021 can be done for other cases.
3016 --Added convention that all shell functions should accept a
3022 --Added convention that all shell functions should accept a
3017 parameter_string This opens the door for different behaviour for
3023 parameter_string This opens the door for different behaviour for
3018 each function. @cd is a good example of this.
3024 each function. @cd is a good example of this.
3019
3025
3020 04.05.99 12:12 porto.ifm.uni-kiel.de
3026 04.05.99 12:12 porto.ifm.uni-kiel.de
3021 --added logfile rotation
3027 --added logfile rotation
3022 --added new mainloop method which freezes first the namespace
3028 --added new mainloop method which freezes first the namespace
3023
3029
3024 07.05.99 21:24 porto.ifm.uni-kiel.de
3030 07.05.99 21:24 porto.ifm.uni-kiel.de
3025 --added the docreader classes. Now there is a help system.
3031 --added the docreader classes. Now there is a help system.
3026 -This is only a first try. Currently it's not easy to put new
3032 -This is only a first try. Currently it's not easy to put new
3027 stuff in the indices. But this is the way to go. Info would be
3033 stuff in the indices. But this is the way to go. Info would be
3028 better, but HTML is every where and not everybody has an info
3034 better, but HTML is every where and not everybody has an info
3029 system installed and it's not so easy to change html-docs to info.
3035 system installed and it's not so easy to change html-docs to info.
3030 --added global logfile option
3036 --added global logfile option
3031 --there is now a hook for object inspection method pinfo needs to
3037 --there is now a hook for object inspection method pinfo needs to
3032 be provided for this. Can be reached by two '??'.
3038 be provided for this. Can be reached by two '??'.
3033
3039
3034 08.05.99 20:51 porto.ifm.uni-kiel.de
3040 08.05.99 20:51 porto.ifm.uni-kiel.de
3035 --added a README
3041 --added a README
3036 --bug in rc file. Something has changed so functions in the rc
3042 --bug in rc file. Something has changed so functions in the rc
3037 file need to reference the shell and not self. Not clear if it's a
3043 file need to reference the shell and not self. Not clear if it's a
3038 bug or feature.
3044 bug or feature.
3039 --changed rc file for new behavior
3045 --changed rc file for new behavior
3040
3046
3041 2004-07-15 Fernando Perez <fperez@colorado.edu>
3047 2004-07-15 Fernando Perez <fperez@colorado.edu>
3042
3048
3043 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3049 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3044 cache was falling out of sync in bizarre manners when multi-line
3050 cache was falling out of sync in bizarre manners when multi-line
3045 input was present. Minor optimizations and cleanup.
3051 input was present. Minor optimizations and cleanup.
3046
3052
3047 (Logger): Remove old Changelog info for cleanup. This is the
3053 (Logger): Remove old Changelog info for cleanup. This is the
3048 information which was there from Janko's original code:
3054 information which was there from Janko's original code:
3049
3055
3050 Changes to Logger: - made the default log filename a parameter
3056 Changes to Logger: - made the default log filename a parameter
3051
3057
3052 - put a check for lines beginning with !@? in log(). Needed
3058 - put a check for lines beginning with !@? in log(). Needed
3053 (even if the handlers properly log their lines) for mid-session
3059 (even if the handlers properly log their lines) for mid-session
3054 logging activation to work properly. Without this, lines logged
3060 logging activation to work properly. Without this, lines logged
3055 in mid session, which get read from the cache, would end up
3061 in mid session, which get read from the cache, would end up
3056 'bare' (with !@? in the open) in the log. Now they are caught
3062 'bare' (with !@? in the open) in the log. Now they are caught
3057 and prepended with a #.
3063 and prepended with a #.
3058
3064
3059 * IPython/iplib.py (InteractiveShell.init_readline): added check
3065 * IPython/iplib.py (InteractiveShell.init_readline): added check
3060 in case MagicCompleter fails to be defined, so we don't crash.
3066 in case MagicCompleter fails to be defined, so we don't crash.
3061
3067
3062 2004-07-13 Fernando Perez <fperez@colorado.edu>
3068 2004-07-13 Fernando Perez <fperez@colorado.edu>
3063
3069
3064 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3070 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3065 of EPS if the requested filename ends in '.eps'.
3071 of EPS if the requested filename ends in '.eps'.
3066
3072
3067 2004-07-04 Fernando Perez <fperez@colorado.edu>
3073 2004-07-04 Fernando Perez <fperez@colorado.edu>
3068
3074
3069 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3075 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3070 escaping of quotes when calling the shell.
3076 escaping of quotes when calling the shell.
3071
3077
3072 2004-07-02 Fernando Perez <fperez@colorado.edu>
3078 2004-07-02 Fernando Perez <fperez@colorado.edu>
3073
3079
3074 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3080 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3075 gettext not working because we were clobbering '_'. Fixes
3081 gettext not working because we were clobbering '_'. Fixes
3076 http://www.scipy.net/roundup/ipython/issue6.
3082 http://www.scipy.net/roundup/ipython/issue6.
3077
3083
3078 2004-07-01 Fernando Perez <fperez@colorado.edu>
3084 2004-07-01 Fernando Perez <fperez@colorado.edu>
3079
3085
3080 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3086 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3081 into @cd. Patch by Ville.
3087 into @cd. Patch by Ville.
3082
3088
3083 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3089 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3084 new function to store things after ipmaker runs. Patch by Ville.
3090 new function to store things after ipmaker runs. Patch by Ville.
3085 Eventually this will go away once ipmaker is removed and the class
3091 Eventually this will go away once ipmaker is removed and the class
3086 gets cleaned up, but for now it's ok. Key functionality here is
3092 gets cleaned up, but for now it's ok. Key functionality here is
3087 the addition of the persistent storage mechanism, a dict for
3093 the addition of the persistent storage mechanism, a dict for
3088 keeping data across sessions (for now just bookmarks, but more can
3094 keeping data across sessions (for now just bookmarks, but more can
3089 be implemented later).
3095 be implemented later).
3090
3096
3091 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3097 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3092 persistent across sections. Patch by Ville, I modified it
3098 persistent across sections. Patch by Ville, I modified it
3093 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3099 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3094 added a '-l' option to list all bookmarks.
3100 added a '-l' option to list all bookmarks.
3095
3101
3096 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3102 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3097 center for cleanup. Registered with atexit.register(). I moved
3103 center for cleanup. Registered with atexit.register(). I moved
3098 here the old exit_cleanup(). After a patch by Ville.
3104 here the old exit_cleanup(). After a patch by Ville.
3099
3105
3100 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3106 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3101 characters in the hacked shlex_split for python 2.2.
3107 characters in the hacked shlex_split for python 2.2.
3102
3108
3103 * IPython/iplib.py (file_matches): more fixes to filenames with
3109 * IPython/iplib.py (file_matches): more fixes to filenames with
3104 whitespace in them. It's not perfect, but limitations in python's
3110 whitespace in them. It's not perfect, but limitations in python's
3105 readline make it impossible to go further.
3111 readline make it impossible to go further.
3106
3112
3107 2004-06-29 Fernando Perez <fperez@colorado.edu>
3113 2004-06-29 Fernando Perez <fperez@colorado.edu>
3108
3114
3109 * IPython/iplib.py (file_matches): escape whitespace correctly in
3115 * IPython/iplib.py (file_matches): escape whitespace correctly in
3110 filename completions. Bug reported by Ville.
3116 filename completions. Bug reported by Ville.
3111
3117
3112 2004-06-28 Fernando Perez <fperez@colorado.edu>
3118 2004-06-28 Fernando Perez <fperez@colorado.edu>
3113
3119
3114 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3120 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3115 the history file will be called 'history-PROFNAME' (or just
3121 the history file will be called 'history-PROFNAME' (or just
3116 'history' if no profile is loaded). I was getting annoyed at
3122 'history' if no profile is loaded). I was getting annoyed at
3117 getting my Numerical work history clobbered by pysh sessions.
3123 getting my Numerical work history clobbered by pysh sessions.
3118
3124
3119 * IPython/iplib.py (InteractiveShell.__init__): Internal
3125 * IPython/iplib.py (InteractiveShell.__init__): Internal
3120 getoutputerror() function so that we can honor the system_verbose
3126 getoutputerror() function so that we can honor the system_verbose
3121 flag for _all_ system calls. I also added escaping of #
3127 flag for _all_ system calls. I also added escaping of #
3122 characters here to avoid confusing Itpl.
3128 characters here to avoid confusing Itpl.
3123
3129
3124 * IPython/Magic.py (shlex_split): removed call to shell in
3130 * IPython/Magic.py (shlex_split): removed call to shell in
3125 parse_options and replaced it with shlex.split(). The annoying
3131 parse_options and replaced it with shlex.split(). The annoying
3126 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3132 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3127 to backport it from 2.3, with several frail hacks (the shlex
3133 to backport it from 2.3, with several frail hacks (the shlex
3128 module is rather limited in 2.2). Thanks to a suggestion by Ville
3134 module is rather limited in 2.2). Thanks to a suggestion by Ville
3129 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3135 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3130 problem.
3136 problem.
3131
3137
3132 (Magic.magic_system_verbose): new toggle to print the actual
3138 (Magic.magic_system_verbose): new toggle to print the actual
3133 system calls made by ipython. Mainly for debugging purposes.
3139 system calls made by ipython. Mainly for debugging purposes.
3134
3140
3135 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3141 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3136 doesn't support persistence. Reported (and fix suggested) by
3142 doesn't support persistence. Reported (and fix suggested) by
3137 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3143 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3138
3144
3139 2004-06-26 Fernando Perez <fperez@colorado.edu>
3145 2004-06-26 Fernando Perez <fperez@colorado.edu>
3140
3146
3141 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3147 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3142 continue prompts.
3148 continue prompts.
3143
3149
3144 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3150 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3145 function (basically a big docstring) and a few more things here to
3151 function (basically a big docstring) and a few more things here to
3146 speedup startup. pysh.py is now very lightweight. We want because
3152 speedup startup. pysh.py is now very lightweight. We want because
3147 it gets execfile'd, while InterpreterExec gets imported, so
3153 it gets execfile'd, while InterpreterExec gets imported, so
3148 byte-compilation saves time.
3154 byte-compilation saves time.
3149
3155
3150 2004-06-25 Fernando Perez <fperez@colorado.edu>
3156 2004-06-25 Fernando Perez <fperez@colorado.edu>
3151
3157
3152 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3158 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3153 -NUM', which was recently broken.
3159 -NUM', which was recently broken.
3154
3160
3155 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3161 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3156 in multi-line input (but not !!, which doesn't make sense there).
3162 in multi-line input (but not !!, which doesn't make sense there).
3157
3163
3158 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3164 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3159 It's just too useful, and people can turn it off in the less
3165 It's just too useful, and people can turn it off in the less
3160 common cases where it's a problem.
3166 common cases where it's a problem.
3161
3167
3162 2004-06-24 Fernando Perez <fperez@colorado.edu>
3168 2004-06-24 Fernando Perez <fperez@colorado.edu>
3163
3169
3164 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3170 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3165 special syntaxes (like alias calling) is now allied in multi-line
3171 special syntaxes (like alias calling) is now allied in multi-line
3166 input. This is still _very_ experimental, but it's necessary for
3172 input. This is still _very_ experimental, but it's necessary for
3167 efficient shell usage combining python looping syntax with system
3173 efficient shell usage combining python looping syntax with system
3168 calls. For now it's restricted to aliases, I don't think it
3174 calls. For now it's restricted to aliases, I don't think it
3169 really even makes sense to have this for magics.
3175 really even makes sense to have this for magics.
3170
3176
3171 2004-06-23 Fernando Perez <fperez@colorado.edu>
3177 2004-06-23 Fernando Perez <fperez@colorado.edu>
3172
3178
3173 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3179 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3174 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3180 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3175
3181
3176 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3182 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3177 extensions under Windows (after code sent by Gary Bishop). The
3183 extensions under Windows (after code sent by Gary Bishop). The
3178 extensions considered 'executable' are stored in IPython's rc
3184 extensions considered 'executable' are stored in IPython's rc
3179 structure as win_exec_ext.
3185 structure as win_exec_ext.
3180
3186
3181 * IPython/genutils.py (shell): new function, like system() but
3187 * IPython/genutils.py (shell): new function, like system() but
3182 without return value. Very useful for interactive shell work.
3188 without return value. Very useful for interactive shell work.
3183
3189
3184 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3190 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3185 delete aliases.
3191 delete aliases.
3186
3192
3187 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3193 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3188 sure that the alias table doesn't contain python keywords.
3194 sure that the alias table doesn't contain python keywords.
3189
3195
3190 2004-06-21 Fernando Perez <fperez@colorado.edu>
3196 2004-06-21 Fernando Perez <fperez@colorado.edu>
3191
3197
3192 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3198 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3193 non-existent items are found in $PATH. Reported by Thorsten.
3199 non-existent items are found in $PATH. Reported by Thorsten.
3194
3200
3195 2004-06-20 Fernando Perez <fperez@colorado.edu>
3201 2004-06-20 Fernando Perez <fperez@colorado.edu>
3196
3202
3197 * IPython/iplib.py (complete): modified the completer so that the
3203 * IPython/iplib.py (complete): modified the completer so that the
3198 order of priorities can be easily changed at runtime.
3204 order of priorities can be easily changed at runtime.
3199
3205
3200 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3206 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3201 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3207 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3202
3208
3203 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3209 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3204 expand Python variables prepended with $ in all system calls. The
3210 expand Python variables prepended with $ in all system calls. The
3205 same was done to InteractiveShell.handle_shell_escape. Now all
3211 same was done to InteractiveShell.handle_shell_escape. Now all
3206 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3212 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3207 expansion of python variables and expressions according to the
3213 expansion of python variables and expressions according to the
3208 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3214 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3209
3215
3210 Though PEP-215 has been rejected, a similar (but simpler) one
3216 Though PEP-215 has been rejected, a similar (but simpler) one
3211 seems like it will go into Python 2.4, PEP-292 -
3217 seems like it will go into Python 2.4, PEP-292 -
3212 http://www.python.org/peps/pep-0292.html.
3218 http://www.python.org/peps/pep-0292.html.
3213
3219
3214 I'll keep the full syntax of PEP-215, since IPython has since the
3220 I'll keep the full syntax of PEP-215, since IPython has since the
3215 start used Ka-Ping Yee's reference implementation discussed there
3221 start used Ka-Ping Yee's reference implementation discussed there
3216 (Itpl), and I actually like the powerful semantics it offers.
3222 (Itpl), and I actually like the powerful semantics it offers.
3217
3223
3218 In order to access normal shell variables, the $ has to be escaped
3224 In order to access normal shell variables, the $ has to be escaped
3219 via an extra $. For example:
3225 via an extra $. For example:
3220
3226
3221 In [7]: PATH='a python variable'
3227 In [7]: PATH='a python variable'
3222
3228
3223 In [8]: !echo $PATH
3229 In [8]: !echo $PATH
3224 a python variable
3230 a python variable
3225
3231
3226 In [9]: !echo $$PATH
3232 In [9]: !echo $$PATH
3227 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3233 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3228
3234
3229 (Magic.parse_options): escape $ so the shell doesn't evaluate
3235 (Magic.parse_options): escape $ so the shell doesn't evaluate
3230 things prematurely.
3236 things prematurely.
3231
3237
3232 * IPython/iplib.py (InteractiveShell.call_alias): added the
3238 * IPython/iplib.py (InteractiveShell.call_alias): added the
3233 ability for aliases to expand python variables via $.
3239 ability for aliases to expand python variables via $.
3234
3240
3235 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3241 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3236 system, now there's a @rehash/@rehashx pair of magics. These work
3242 system, now there's a @rehash/@rehashx pair of magics. These work
3237 like the csh rehash command, and can be invoked at any time. They
3243 like the csh rehash command, and can be invoked at any time. They
3238 build a table of aliases to everything in the user's $PATH
3244 build a table of aliases to everything in the user's $PATH
3239 (@rehash uses everything, @rehashx is slower but only adds
3245 (@rehash uses everything, @rehashx is slower but only adds
3240 executable files). With this, the pysh.py-based shell profile can
3246 executable files). With this, the pysh.py-based shell profile can
3241 now simply call rehash upon startup, and full access to all
3247 now simply call rehash upon startup, and full access to all
3242 programs in the user's path is obtained.
3248 programs in the user's path is obtained.
3243
3249
3244 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3250 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3245 functionality is now fully in place. I removed the old dynamic
3251 functionality is now fully in place. I removed the old dynamic
3246 code generation based approach, in favor of a much lighter one
3252 code generation based approach, in favor of a much lighter one
3247 based on a simple dict. The advantage is that this allows me to
3253 based on a simple dict. The advantage is that this allows me to
3248 now have thousands of aliases with negligible cost (unthinkable
3254 now have thousands of aliases with negligible cost (unthinkable
3249 with the old system).
3255 with the old system).
3250
3256
3251 2004-06-19 Fernando Perez <fperez@colorado.edu>
3257 2004-06-19 Fernando Perez <fperez@colorado.edu>
3252
3258
3253 * IPython/iplib.py (__init__): extended MagicCompleter class to
3259 * IPython/iplib.py (__init__): extended MagicCompleter class to
3254 also complete (last in priority) on user aliases.
3260 also complete (last in priority) on user aliases.
3255
3261
3256 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3262 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3257 call to eval.
3263 call to eval.
3258 (ItplNS.__init__): Added a new class which functions like Itpl,
3264 (ItplNS.__init__): Added a new class which functions like Itpl,
3259 but allows configuring the namespace for the evaluation to occur
3265 but allows configuring the namespace for the evaluation to occur
3260 in.
3266 in.
3261
3267
3262 2004-06-18 Fernando Perez <fperez@colorado.edu>
3268 2004-06-18 Fernando Perez <fperez@colorado.edu>
3263
3269
3264 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3270 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3265 better message when 'exit' or 'quit' are typed (a common newbie
3271 better message when 'exit' or 'quit' are typed (a common newbie
3266 confusion).
3272 confusion).
3267
3273
3268 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3274 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3269 check for Windows users.
3275 check for Windows users.
3270
3276
3271 * IPython/iplib.py (InteractiveShell.user_setup): removed
3277 * IPython/iplib.py (InteractiveShell.user_setup): removed
3272 disabling of colors for Windows. I'll test at runtime and issue a
3278 disabling of colors for Windows. I'll test at runtime and issue a
3273 warning if Gary's readline isn't found, as to nudge users to
3279 warning if Gary's readline isn't found, as to nudge users to
3274 download it.
3280 download it.
3275
3281
3276 2004-06-16 Fernando Perez <fperez@colorado.edu>
3282 2004-06-16 Fernando Perez <fperez@colorado.edu>
3277
3283
3278 * IPython/genutils.py (Stream.__init__): changed to print errors
3284 * IPython/genutils.py (Stream.__init__): changed to print errors
3279 to sys.stderr. I had a circular dependency here. Now it's
3285 to sys.stderr. I had a circular dependency here. Now it's
3280 possible to run ipython as IDLE's shell (consider this pre-alpha,
3286 possible to run ipython as IDLE's shell (consider this pre-alpha,
3281 since true stdout things end up in the starting terminal instead
3287 since true stdout things end up in the starting terminal instead
3282 of IDLE's out).
3288 of IDLE's out).
3283
3289
3284 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3290 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3285 users who haven't # updated their prompt_in2 definitions. Remove
3291 users who haven't # updated their prompt_in2 definitions. Remove
3286 eventually.
3292 eventually.
3287 (multiple_replace): added credit to original ASPN recipe.
3293 (multiple_replace): added credit to original ASPN recipe.
3288
3294
3289 2004-06-15 Fernando Perez <fperez@colorado.edu>
3295 2004-06-15 Fernando Perez <fperez@colorado.edu>
3290
3296
3291 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3297 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3292 list of auto-defined aliases.
3298 list of auto-defined aliases.
3293
3299
3294 2004-06-13 Fernando Perez <fperez@colorado.edu>
3300 2004-06-13 Fernando Perez <fperez@colorado.edu>
3295
3301
3296 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3302 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3297 install was really requested (so setup.py can be used for other
3303 install was really requested (so setup.py can be used for other
3298 things under Windows).
3304 things under Windows).
3299
3305
3300 2004-06-10 Fernando Perez <fperez@colorado.edu>
3306 2004-06-10 Fernando Perez <fperez@colorado.edu>
3301
3307
3302 * IPython/Logger.py (Logger.create_log): Manually remove any old
3308 * IPython/Logger.py (Logger.create_log): Manually remove any old
3303 backup, since os.remove may fail under Windows. Fixes bug
3309 backup, since os.remove may fail under Windows. Fixes bug
3304 reported by Thorsten.
3310 reported by Thorsten.
3305
3311
3306 2004-06-09 Fernando Perez <fperez@colorado.edu>
3312 2004-06-09 Fernando Perez <fperez@colorado.edu>
3307
3313
3308 * examples/example-embed.py: fixed all references to %n (replaced
3314 * examples/example-embed.py: fixed all references to %n (replaced
3309 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3315 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3310 for all examples and the manual as well.
3316 for all examples and the manual as well.
3311
3317
3312 2004-06-08 Fernando Perez <fperez@colorado.edu>
3318 2004-06-08 Fernando Perez <fperez@colorado.edu>
3313
3319
3314 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3320 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3315 alignment and color management. All 3 prompt subsystems now
3321 alignment and color management. All 3 prompt subsystems now
3316 inherit from BasePrompt.
3322 inherit from BasePrompt.
3317
3323
3318 * tools/release: updates for windows installer build and tag rpms
3324 * tools/release: updates for windows installer build and tag rpms
3319 with python version (since paths are fixed).
3325 with python version (since paths are fixed).
3320
3326
3321 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3327 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3322 which will become eventually obsolete. Also fixed the default
3328 which will become eventually obsolete. Also fixed the default
3323 prompt_in2 to use \D, so at least new users start with the correct
3329 prompt_in2 to use \D, so at least new users start with the correct
3324 defaults.
3330 defaults.
3325 WARNING: Users with existing ipythonrc files will need to apply
3331 WARNING: Users with existing ipythonrc files will need to apply
3326 this fix manually!
3332 this fix manually!
3327
3333
3328 * setup.py: make windows installer (.exe). This is finally the
3334 * setup.py: make windows installer (.exe). This is finally the
3329 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3335 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3330 which I hadn't included because it required Python 2.3 (or recent
3336 which I hadn't included because it required Python 2.3 (or recent
3331 distutils).
3337 distutils).
3332
3338
3333 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3339 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3334 usage of new '\D' escape.
3340 usage of new '\D' escape.
3335
3341
3336 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3342 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3337 lacks os.getuid())
3343 lacks os.getuid())
3338 (CachedOutput.set_colors): Added the ability to turn coloring
3344 (CachedOutput.set_colors): Added the ability to turn coloring
3339 on/off with @colors even for manually defined prompt colors. It
3345 on/off with @colors even for manually defined prompt colors. It
3340 uses a nasty global, but it works safely and via the generic color
3346 uses a nasty global, but it works safely and via the generic color
3341 handling mechanism.
3347 handling mechanism.
3342 (Prompt2.__init__): Introduced new escape '\D' for continuation
3348 (Prompt2.__init__): Introduced new escape '\D' for continuation
3343 prompts. It represents the counter ('\#') as dots.
3349 prompts. It represents the counter ('\#') as dots.
3344 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3350 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3345 need to update their ipythonrc files and replace '%n' with '\D' in
3351 need to update their ipythonrc files and replace '%n' with '\D' in
3346 their prompt_in2 settings everywhere. Sorry, but there's
3352 their prompt_in2 settings everywhere. Sorry, but there's
3347 otherwise no clean way to get all prompts to properly align. The
3353 otherwise no clean way to get all prompts to properly align. The
3348 ipythonrc shipped with IPython has been updated.
3354 ipythonrc shipped with IPython has been updated.
3349
3355
3350 2004-06-07 Fernando Perez <fperez@colorado.edu>
3356 2004-06-07 Fernando Perez <fperez@colorado.edu>
3351
3357
3352 * setup.py (isfile): Pass local_icons option to latex2html, so the
3358 * setup.py (isfile): Pass local_icons option to latex2html, so the
3353 resulting HTML file is self-contained. Thanks to
3359 resulting HTML file is self-contained. Thanks to
3354 dryice-AT-liu.com.cn for the tip.
3360 dryice-AT-liu.com.cn for the tip.
3355
3361
3356 * pysh.py: I created a new profile 'shell', which implements a
3362 * pysh.py: I created a new profile 'shell', which implements a
3357 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3363 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3358 system shell, nor will it become one anytime soon. It's mainly
3364 system shell, nor will it become one anytime soon. It's mainly
3359 meant to illustrate the use of the new flexible bash-like prompts.
3365 meant to illustrate the use of the new flexible bash-like prompts.
3360 I guess it could be used by hardy souls for true shell management,
3366 I guess it could be used by hardy souls for true shell management,
3361 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3367 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3362 profile. This uses the InterpreterExec extension provided by
3368 profile. This uses the InterpreterExec extension provided by
3363 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3369 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3364
3370
3365 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3371 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3366 auto-align itself with the length of the previous input prompt
3372 auto-align itself with the length of the previous input prompt
3367 (taking into account the invisible color escapes).
3373 (taking into account the invisible color escapes).
3368 (CachedOutput.__init__): Large restructuring of this class. Now
3374 (CachedOutput.__init__): Large restructuring of this class. Now
3369 all three prompts (primary1, primary2, output) are proper objects,
3375 all three prompts (primary1, primary2, output) are proper objects,
3370 managed by the 'parent' CachedOutput class. The code is still a
3376 managed by the 'parent' CachedOutput class. The code is still a
3371 bit hackish (all prompts share state via a pointer to the cache),
3377 bit hackish (all prompts share state via a pointer to the cache),
3372 but it's overall far cleaner than before.
3378 but it's overall far cleaner than before.
3373
3379
3374 * IPython/genutils.py (getoutputerror): modified to add verbose,
3380 * IPython/genutils.py (getoutputerror): modified to add verbose,
3375 debug and header options. This makes the interface of all getout*
3381 debug and header options. This makes the interface of all getout*
3376 functions uniform.
3382 functions uniform.
3377 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3383 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3378
3384
3379 * IPython/Magic.py (Magic.default_option): added a function to
3385 * IPython/Magic.py (Magic.default_option): added a function to
3380 allow registering default options for any magic command. This
3386 allow registering default options for any magic command. This
3381 makes it easy to have profiles which customize the magics globally
3387 makes it easy to have profiles which customize the magics globally
3382 for a certain use. The values set through this function are
3388 for a certain use. The values set through this function are
3383 picked up by the parse_options() method, which all magics should
3389 picked up by the parse_options() method, which all magics should
3384 use to parse their options.
3390 use to parse their options.
3385
3391
3386 * IPython/genutils.py (warn): modified the warnings framework to
3392 * IPython/genutils.py (warn): modified the warnings framework to
3387 use the Term I/O class. I'm trying to slowly unify all of
3393 use the Term I/O class. I'm trying to slowly unify all of
3388 IPython's I/O operations to pass through Term.
3394 IPython's I/O operations to pass through Term.
3389
3395
3390 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3396 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3391 the secondary prompt to correctly match the length of the primary
3397 the secondary prompt to correctly match the length of the primary
3392 one for any prompt. Now multi-line code will properly line up
3398 one for any prompt. Now multi-line code will properly line up
3393 even for path dependent prompts, such as the new ones available
3399 even for path dependent prompts, such as the new ones available
3394 via the prompt_specials.
3400 via the prompt_specials.
3395
3401
3396 2004-06-06 Fernando Perez <fperez@colorado.edu>
3402 2004-06-06 Fernando Perez <fperez@colorado.edu>
3397
3403
3398 * IPython/Prompts.py (prompt_specials): Added the ability to have
3404 * IPython/Prompts.py (prompt_specials): Added the ability to have
3399 bash-like special sequences in the prompts, which get
3405 bash-like special sequences in the prompts, which get
3400 automatically expanded. Things like hostname, current working
3406 automatically expanded. Things like hostname, current working
3401 directory and username are implemented already, but it's easy to
3407 directory and username are implemented already, but it's easy to
3402 add more in the future. Thanks to a patch by W.J. van der Laan
3408 add more in the future. Thanks to a patch by W.J. van der Laan
3403 <gnufnork-AT-hetdigitalegat.nl>
3409 <gnufnork-AT-hetdigitalegat.nl>
3404 (prompt_specials): Added color support for prompt strings, so
3410 (prompt_specials): Added color support for prompt strings, so
3405 users can define arbitrary color setups for their prompts.
3411 users can define arbitrary color setups for their prompts.
3406
3412
3407 2004-06-05 Fernando Perez <fperez@colorado.edu>
3413 2004-06-05 Fernando Perez <fperez@colorado.edu>
3408
3414
3409 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3415 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3410 code to load Gary Bishop's readline and configure it
3416 code to load Gary Bishop's readline and configure it
3411 automatically. Thanks to Gary for help on this.
3417 automatically. Thanks to Gary for help on this.
3412
3418
3413 2004-06-01 Fernando Perez <fperez@colorado.edu>
3419 2004-06-01 Fernando Perez <fperez@colorado.edu>
3414
3420
3415 * IPython/Logger.py (Logger.create_log): fix bug for logging
3421 * IPython/Logger.py (Logger.create_log): fix bug for logging
3416 with no filename (previous fix was incomplete).
3422 with no filename (previous fix was incomplete).
3417
3423
3418 2004-05-25 Fernando Perez <fperez@colorado.edu>
3424 2004-05-25 Fernando Perez <fperez@colorado.edu>
3419
3425
3420 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3426 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3421 parens would get passed to the shell.
3427 parens would get passed to the shell.
3422
3428
3423 2004-05-20 Fernando Perez <fperez@colorado.edu>
3429 2004-05-20 Fernando Perez <fperez@colorado.edu>
3424
3430
3425 * IPython/Magic.py (Magic.magic_prun): changed default profile
3431 * IPython/Magic.py (Magic.magic_prun): changed default profile
3426 sort order to 'time' (the more common profiling need).
3432 sort order to 'time' (the more common profiling need).
3427
3433
3428 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3434 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3429 so that source code shown is guaranteed in sync with the file on
3435 so that source code shown is guaranteed in sync with the file on
3430 disk (also changed in psource). Similar fix to the one for
3436 disk (also changed in psource). Similar fix to the one for
3431 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3437 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3432 <yann.ledu-AT-noos.fr>.
3438 <yann.ledu-AT-noos.fr>.
3433
3439
3434 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3440 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3435 with a single option would not be correctly parsed. Closes
3441 with a single option would not be correctly parsed. Closes
3436 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3442 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3437 introduced in 0.6.0 (on 2004-05-06).
3443 introduced in 0.6.0 (on 2004-05-06).
3438
3444
3439 2004-05-13 *** Released version 0.6.0
3445 2004-05-13 *** Released version 0.6.0
3440
3446
3441 2004-05-13 Fernando Perez <fperez@colorado.edu>
3447 2004-05-13 Fernando Perez <fperez@colorado.edu>
3442
3448
3443 * debian/: Added debian/ directory to CVS, so that debian support
3449 * debian/: Added debian/ directory to CVS, so that debian support
3444 is publicly accessible. The debian package is maintained by Jack
3450 is publicly accessible. The debian package is maintained by Jack
3445 Moffit <jack-AT-xiph.org>.
3451 Moffit <jack-AT-xiph.org>.
3446
3452
3447 * Documentation: included the notes about an ipython-based system
3453 * Documentation: included the notes about an ipython-based system
3448 shell (the hypothetical 'pysh') into the new_design.pdf document,
3454 shell (the hypothetical 'pysh') into the new_design.pdf document,
3449 so that these ideas get distributed to users along with the
3455 so that these ideas get distributed to users along with the
3450 official documentation.
3456 official documentation.
3451
3457
3452 2004-05-10 Fernando Perez <fperez@colorado.edu>
3458 2004-05-10 Fernando Perez <fperez@colorado.edu>
3453
3459
3454 * IPython/Logger.py (Logger.create_log): fix recently introduced
3460 * IPython/Logger.py (Logger.create_log): fix recently introduced
3455 bug (misindented line) where logstart would fail when not given an
3461 bug (misindented line) where logstart would fail when not given an
3456 explicit filename.
3462 explicit filename.
3457
3463
3458 2004-05-09 Fernando Perez <fperez@colorado.edu>
3464 2004-05-09 Fernando Perez <fperez@colorado.edu>
3459
3465
3460 * IPython/Magic.py (Magic.parse_options): skip system call when
3466 * IPython/Magic.py (Magic.parse_options): skip system call when
3461 there are no options to look for. Faster, cleaner for the common
3467 there are no options to look for. Faster, cleaner for the common
3462 case.
3468 case.
3463
3469
3464 * Documentation: many updates to the manual: describing Windows
3470 * Documentation: many updates to the manual: describing Windows
3465 support better, Gnuplot updates, credits, misc small stuff. Also
3471 support better, Gnuplot updates, credits, misc small stuff. Also
3466 updated the new_design doc a bit.
3472 updated the new_design doc a bit.
3467
3473
3468 2004-05-06 *** Released version 0.6.0.rc1
3474 2004-05-06 *** Released version 0.6.0.rc1
3469
3475
3470 2004-05-06 Fernando Perez <fperez@colorado.edu>
3476 2004-05-06 Fernando Perez <fperez@colorado.edu>
3471
3477
3472 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3478 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3473 operations to use the vastly more efficient list/''.join() method.
3479 operations to use the vastly more efficient list/''.join() method.
3474 (FormattedTB.text): Fix
3480 (FormattedTB.text): Fix
3475 http://www.scipy.net/roundup/ipython/issue12 - exception source
3481 http://www.scipy.net/roundup/ipython/issue12 - exception source
3476 extract not updated after reload. Thanks to Mike Salib
3482 extract not updated after reload. Thanks to Mike Salib
3477 <msalib-AT-mit.edu> for pinning the source of the problem.
3483 <msalib-AT-mit.edu> for pinning the source of the problem.
3478 Fortunately, the solution works inside ipython and doesn't require
3484 Fortunately, the solution works inside ipython and doesn't require
3479 any changes to python proper.
3485 any changes to python proper.
3480
3486
3481 * IPython/Magic.py (Magic.parse_options): Improved to process the
3487 * IPython/Magic.py (Magic.parse_options): Improved to process the
3482 argument list as a true shell would (by actually using the
3488 argument list as a true shell would (by actually using the
3483 underlying system shell). This way, all @magics automatically get
3489 underlying system shell). This way, all @magics automatically get
3484 shell expansion for variables. Thanks to a comment by Alex
3490 shell expansion for variables. Thanks to a comment by Alex
3485 Schmolck.
3491 Schmolck.
3486
3492
3487 2004-04-04 Fernando Perez <fperez@colorado.edu>
3493 2004-04-04 Fernando Perez <fperez@colorado.edu>
3488
3494
3489 * IPython/iplib.py (InteractiveShell.interact): Added a special
3495 * IPython/iplib.py (InteractiveShell.interact): Added a special
3490 trap for a debugger quit exception, which is basically impossible
3496 trap for a debugger quit exception, which is basically impossible
3491 to handle by normal mechanisms, given what pdb does to the stack.
3497 to handle by normal mechanisms, given what pdb does to the stack.
3492 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3498 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3493
3499
3494 2004-04-03 Fernando Perez <fperez@colorado.edu>
3500 2004-04-03 Fernando Perez <fperez@colorado.edu>
3495
3501
3496 * IPython/genutils.py (Term): Standardized the names of the Term
3502 * IPython/genutils.py (Term): Standardized the names of the Term
3497 class streams to cin/cout/cerr, following C++ naming conventions
3503 class streams to cin/cout/cerr, following C++ naming conventions
3498 (I can't use in/out/err because 'in' is not a valid attribute
3504 (I can't use in/out/err because 'in' is not a valid attribute
3499 name).
3505 name).
3500
3506
3501 * IPython/iplib.py (InteractiveShell.interact): don't increment
3507 * IPython/iplib.py (InteractiveShell.interact): don't increment
3502 the prompt if there's no user input. By Daniel 'Dang' Griffith
3508 the prompt if there's no user input. By Daniel 'Dang' Griffith
3503 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3509 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3504 Francois Pinard.
3510 Francois Pinard.
3505
3511
3506 2004-04-02 Fernando Perez <fperez@colorado.edu>
3512 2004-04-02 Fernando Perez <fperez@colorado.edu>
3507
3513
3508 * IPython/genutils.py (Stream.__init__): Modified to survive at
3514 * IPython/genutils.py (Stream.__init__): Modified to survive at
3509 least importing in contexts where stdin/out/err aren't true file
3515 least importing in contexts where stdin/out/err aren't true file
3510 objects, such as PyCrust (they lack fileno() and mode). However,
3516 objects, such as PyCrust (they lack fileno() and mode). However,
3511 the recovery facilities which rely on these things existing will
3517 the recovery facilities which rely on these things existing will
3512 not work.
3518 not work.
3513
3519
3514 2004-04-01 Fernando Perez <fperez@colorado.edu>
3520 2004-04-01 Fernando Perez <fperez@colorado.edu>
3515
3521
3516 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3522 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3517 use the new getoutputerror() function, so it properly
3523 use the new getoutputerror() function, so it properly
3518 distinguishes stdout/err.
3524 distinguishes stdout/err.
3519
3525
3520 * IPython/genutils.py (getoutputerror): added a function to
3526 * IPython/genutils.py (getoutputerror): added a function to
3521 capture separately the standard output and error of a command.
3527 capture separately the standard output and error of a command.
3522 After a comment from dang on the mailing lists. This code is
3528 After a comment from dang on the mailing lists. This code is
3523 basically a modified version of commands.getstatusoutput(), from
3529 basically a modified version of commands.getstatusoutput(), from
3524 the standard library.
3530 the standard library.
3525
3531
3526 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3532 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3527 '!!' as a special syntax (shorthand) to access @sx.
3533 '!!' as a special syntax (shorthand) to access @sx.
3528
3534
3529 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3535 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3530 command and return its output as a list split on '\n'.
3536 command and return its output as a list split on '\n'.
3531
3537
3532 2004-03-31 Fernando Perez <fperez@colorado.edu>
3538 2004-03-31 Fernando Perez <fperez@colorado.edu>
3533
3539
3534 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3540 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3535 method to dictionaries used as FakeModule instances if they lack
3541 method to dictionaries used as FakeModule instances if they lack
3536 it. At least pydoc in python2.3 breaks for runtime-defined
3542 it. At least pydoc in python2.3 breaks for runtime-defined
3537 functions without this hack. At some point I need to _really_
3543 functions without this hack. At some point I need to _really_
3538 understand what FakeModule is doing, because it's a gross hack.
3544 understand what FakeModule is doing, because it's a gross hack.
3539 But it solves Arnd's problem for now...
3545 But it solves Arnd's problem for now...
3540
3546
3541 2004-02-27 Fernando Perez <fperez@colorado.edu>
3547 2004-02-27 Fernando Perez <fperez@colorado.edu>
3542
3548
3543 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3549 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3544 mode would behave erratically. Also increased the number of
3550 mode would behave erratically. Also increased the number of
3545 possible logs in rotate mod to 999. Thanks to Rod Holland
3551 possible logs in rotate mod to 999. Thanks to Rod Holland
3546 <rhh@StructureLABS.com> for the report and fixes.
3552 <rhh@StructureLABS.com> for the report and fixes.
3547
3553
3548 2004-02-26 Fernando Perez <fperez@colorado.edu>
3554 2004-02-26 Fernando Perez <fperez@colorado.edu>
3549
3555
3550 * IPython/genutils.py (page): Check that the curses module really
3556 * IPython/genutils.py (page): Check that the curses module really
3551 has the initscr attribute before trying to use it. For some
3557 has the initscr attribute before trying to use it. For some
3552 reason, the Solaris curses module is missing this. I think this
3558 reason, the Solaris curses module is missing this. I think this
3553 should be considered a Solaris python bug, but I'm not sure.
3559 should be considered a Solaris python bug, but I'm not sure.
3554
3560
3555 2004-01-17 Fernando Perez <fperez@colorado.edu>
3561 2004-01-17 Fernando Perez <fperez@colorado.edu>
3556
3562
3557 * IPython/genutils.py (Stream.__init__): Changes to try to make
3563 * IPython/genutils.py (Stream.__init__): Changes to try to make
3558 ipython robust against stdin/out/err being closed by the user.
3564 ipython robust against stdin/out/err being closed by the user.
3559 This is 'user error' (and blocks a normal python session, at least
3565 This is 'user error' (and blocks a normal python session, at least
3560 the stdout case). However, Ipython should be able to survive such
3566 the stdout case). However, Ipython should be able to survive such
3561 instances of abuse as gracefully as possible. To simplify the
3567 instances of abuse as gracefully as possible. To simplify the
3562 coding and maintain compatibility with Gary Bishop's Term
3568 coding and maintain compatibility with Gary Bishop's Term
3563 contributions, I've made use of classmethods for this. I think
3569 contributions, I've made use of classmethods for this. I think
3564 this introduces a dependency on python 2.2.
3570 this introduces a dependency on python 2.2.
3565
3571
3566 2004-01-13 Fernando Perez <fperez@colorado.edu>
3572 2004-01-13 Fernando Perez <fperez@colorado.edu>
3567
3573
3568 * IPython/numutils.py (exp_safe): simplified the code a bit and
3574 * IPython/numutils.py (exp_safe): simplified the code a bit and
3569 removed the need for importing the kinds module altogether.
3575 removed the need for importing the kinds module altogether.
3570
3576
3571 2004-01-06 Fernando Perez <fperez@colorado.edu>
3577 2004-01-06 Fernando Perez <fperez@colorado.edu>
3572
3578
3573 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3579 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3574 a magic function instead, after some community feedback. No
3580 a magic function instead, after some community feedback. No
3575 special syntax will exist for it, but its name is deliberately
3581 special syntax will exist for it, but its name is deliberately
3576 very short.
3582 very short.
3577
3583
3578 2003-12-20 Fernando Perez <fperez@colorado.edu>
3584 2003-12-20 Fernando Perez <fperez@colorado.edu>
3579
3585
3580 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3586 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3581 new functionality, to automagically assign the result of a shell
3587 new functionality, to automagically assign the result of a shell
3582 command to a variable. I'll solicit some community feedback on
3588 command to a variable. I'll solicit some community feedback on
3583 this before making it permanent.
3589 this before making it permanent.
3584
3590
3585 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3591 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3586 requested about callables for which inspect couldn't obtain a
3592 requested about callables for which inspect couldn't obtain a
3587 proper argspec. Thanks to a crash report sent by Etienne
3593 proper argspec. Thanks to a crash report sent by Etienne
3588 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3594 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3589
3595
3590 2003-12-09 Fernando Perez <fperez@colorado.edu>
3596 2003-12-09 Fernando Perez <fperez@colorado.edu>
3591
3597
3592 * IPython/genutils.py (page): patch for the pager to work across
3598 * IPython/genutils.py (page): patch for the pager to work across
3593 various versions of Windows. By Gary Bishop.
3599 various versions of Windows. By Gary Bishop.
3594
3600
3595 2003-12-04 Fernando Perez <fperez@colorado.edu>
3601 2003-12-04 Fernando Perez <fperez@colorado.edu>
3596
3602
3597 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3603 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3598 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3604 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3599 While I tested this and it looks ok, there may still be corner
3605 While I tested this and it looks ok, there may still be corner
3600 cases I've missed.
3606 cases I've missed.
3601
3607
3602 2003-12-01 Fernando Perez <fperez@colorado.edu>
3608 2003-12-01 Fernando Perez <fperez@colorado.edu>
3603
3609
3604 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3610 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3605 where a line like 'p,q=1,2' would fail because the automagic
3611 where a line like 'p,q=1,2' would fail because the automagic
3606 system would be triggered for @p.
3612 system would be triggered for @p.
3607
3613
3608 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3614 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3609 cleanups, code unmodified.
3615 cleanups, code unmodified.
3610
3616
3611 * IPython/genutils.py (Term): added a class for IPython to handle
3617 * IPython/genutils.py (Term): added a class for IPython to handle
3612 output. In most cases it will just be a proxy for stdout/err, but
3618 output. In most cases it will just be a proxy for stdout/err, but
3613 having this allows modifications to be made for some platforms,
3619 having this allows modifications to be made for some platforms,
3614 such as handling color escapes under Windows. All of this code
3620 such as handling color escapes under Windows. All of this code
3615 was contributed by Gary Bishop, with minor modifications by me.
3621 was contributed by Gary Bishop, with minor modifications by me.
3616 The actual changes affect many files.
3622 The actual changes affect many files.
3617
3623
3618 2003-11-30 Fernando Perez <fperez@colorado.edu>
3624 2003-11-30 Fernando Perez <fperez@colorado.edu>
3619
3625
3620 * IPython/iplib.py (file_matches): new completion code, courtesy
3626 * IPython/iplib.py (file_matches): new completion code, courtesy
3621 of Jeff Collins. This enables filename completion again under
3627 of Jeff Collins. This enables filename completion again under
3622 python 2.3, which disabled it at the C level.
3628 python 2.3, which disabled it at the C level.
3623
3629
3624 2003-11-11 Fernando Perez <fperez@colorado.edu>
3630 2003-11-11 Fernando Perez <fperez@colorado.edu>
3625
3631
3626 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3632 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3627 for Numeric.array(map(...)), but often convenient.
3633 for Numeric.array(map(...)), but often convenient.
3628
3634
3629 2003-11-05 Fernando Perez <fperez@colorado.edu>
3635 2003-11-05 Fernando Perez <fperez@colorado.edu>
3630
3636
3631 * IPython/numutils.py (frange): Changed a call from int() to
3637 * IPython/numutils.py (frange): Changed a call from int() to
3632 int(round()) to prevent a problem reported with arange() in the
3638 int(round()) to prevent a problem reported with arange() in the
3633 numpy list.
3639 numpy list.
3634
3640
3635 2003-10-06 Fernando Perez <fperez@colorado.edu>
3641 2003-10-06 Fernando Perez <fperez@colorado.edu>
3636
3642
3637 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3643 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3638 prevent crashes if sys lacks an argv attribute (it happens with
3644 prevent crashes if sys lacks an argv attribute (it happens with
3639 embedded interpreters which build a bare-bones sys module).
3645 embedded interpreters which build a bare-bones sys module).
3640 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3646 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3641
3647
3642 2003-09-24 Fernando Perez <fperez@colorado.edu>
3648 2003-09-24 Fernando Perez <fperez@colorado.edu>
3643
3649
3644 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3650 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3645 to protect against poorly written user objects where __getattr__
3651 to protect against poorly written user objects where __getattr__
3646 raises exceptions other than AttributeError. Thanks to a bug
3652 raises exceptions other than AttributeError. Thanks to a bug
3647 report by Oliver Sander <osander-AT-gmx.de>.
3653 report by Oliver Sander <osander-AT-gmx.de>.
3648
3654
3649 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3655 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3650 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3656 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3651
3657
3652 2003-09-09 Fernando Perez <fperez@colorado.edu>
3658 2003-09-09 Fernando Perez <fperez@colorado.edu>
3653
3659
3654 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3660 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3655 unpacking a list whith a callable as first element would
3661 unpacking a list whith a callable as first element would
3656 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3662 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3657 Collins.
3663 Collins.
3658
3664
3659 2003-08-25 *** Released version 0.5.0
3665 2003-08-25 *** Released version 0.5.0
3660
3666
3661 2003-08-22 Fernando Perez <fperez@colorado.edu>
3667 2003-08-22 Fernando Perez <fperez@colorado.edu>
3662
3668
3663 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3669 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3664 improperly defined user exceptions. Thanks to feedback from Mark
3670 improperly defined user exceptions. Thanks to feedback from Mark
3665 Russell <mrussell-AT-verio.net>.
3671 Russell <mrussell-AT-verio.net>.
3666
3672
3667 2003-08-20 Fernando Perez <fperez@colorado.edu>
3673 2003-08-20 Fernando Perez <fperez@colorado.edu>
3668
3674
3669 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3675 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3670 printing so that it would print multi-line string forms starting
3676 printing so that it would print multi-line string forms starting
3671 with a new line. This way the formatting is better respected for
3677 with a new line. This way the formatting is better respected for
3672 objects which work hard to make nice string forms.
3678 objects which work hard to make nice string forms.
3673
3679
3674 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3680 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3675 autocall would overtake data access for objects with both
3681 autocall would overtake data access for objects with both
3676 __getitem__ and __call__.
3682 __getitem__ and __call__.
3677
3683
3678 2003-08-19 *** Released version 0.5.0-rc1
3684 2003-08-19 *** Released version 0.5.0-rc1
3679
3685
3680 2003-08-19 Fernando Perez <fperez@colorado.edu>
3686 2003-08-19 Fernando Perez <fperez@colorado.edu>
3681
3687
3682 * IPython/deep_reload.py (load_tail): single tiny change here
3688 * IPython/deep_reload.py (load_tail): single tiny change here
3683 seems to fix the long-standing bug of dreload() failing to work
3689 seems to fix the long-standing bug of dreload() failing to work
3684 for dotted names. But this module is pretty tricky, so I may have
3690 for dotted names. But this module is pretty tricky, so I may have
3685 missed some subtlety. Needs more testing!.
3691 missed some subtlety. Needs more testing!.
3686
3692
3687 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3693 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3688 exceptions which have badly implemented __str__ methods.
3694 exceptions which have badly implemented __str__ methods.
3689 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3695 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3690 which I've been getting reports about from Python 2.3 users. I
3696 which I've been getting reports about from Python 2.3 users. I
3691 wish I had a simple test case to reproduce the problem, so I could
3697 wish I had a simple test case to reproduce the problem, so I could
3692 either write a cleaner workaround or file a bug report if
3698 either write a cleaner workaround or file a bug report if
3693 necessary.
3699 necessary.
3694
3700
3695 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3701 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3696 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3702 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3697 a bug report by Tjabo Kloppenburg.
3703 a bug report by Tjabo Kloppenburg.
3698
3704
3699 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3705 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3700 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3706 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3701 seems rather unstable. Thanks to a bug report by Tjabo
3707 seems rather unstable. Thanks to a bug report by Tjabo
3702 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3708 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3703
3709
3704 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3710 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3705 this out soon because of the critical fixes in the inner loop for
3711 this out soon because of the critical fixes in the inner loop for
3706 generators.
3712 generators.
3707
3713
3708 * IPython/Magic.py (Magic.getargspec): removed. This (and
3714 * IPython/Magic.py (Magic.getargspec): removed. This (and
3709 _get_def) have been obsoleted by OInspect for a long time, I
3715 _get_def) have been obsoleted by OInspect for a long time, I
3710 hadn't noticed that they were dead code.
3716 hadn't noticed that they were dead code.
3711 (Magic._ofind): restored _ofind functionality for a few literals
3717 (Magic._ofind): restored _ofind functionality for a few literals
3712 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3718 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3713 for things like "hello".capitalize?, since that would require a
3719 for things like "hello".capitalize?, since that would require a
3714 potentially dangerous eval() again.
3720 potentially dangerous eval() again.
3715
3721
3716 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3722 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3717 logic a bit more to clean up the escapes handling and minimize the
3723 logic a bit more to clean up the escapes handling and minimize the
3718 use of _ofind to only necessary cases. The interactive 'feel' of
3724 use of _ofind to only necessary cases. The interactive 'feel' of
3719 IPython should have improved quite a bit with the changes in
3725 IPython should have improved quite a bit with the changes in
3720 _prefilter and _ofind (besides being far safer than before).
3726 _prefilter and _ofind (besides being far safer than before).
3721
3727
3722 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3728 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3723 obscure, never reported). Edit would fail to find the object to
3729 obscure, never reported). Edit would fail to find the object to
3724 edit under some circumstances.
3730 edit under some circumstances.
3725 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3731 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3726 which were causing double-calling of generators. Those eval calls
3732 which were causing double-calling of generators. Those eval calls
3727 were _very_ dangerous, since code with side effects could be
3733 were _very_ dangerous, since code with side effects could be
3728 triggered. As they say, 'eval is evil'... These were the
3734 triggered. As they say, 'eval is evil'... These were the
3729 nastiest evals in IPython. Besides, _ofind is now far simpler,
3735 nastiest evals in IPython. Besides, _ofind is now far simpler,
3730 and it should also be quite a bit faster. Its use of inspect is
3736 and it should also be quite a bit faster. Its use of inspect is
3731 also safer, so perhaps some of the inspect-related crashes I've
3737 also safer, so perhaps some of the inspect-related crashes I've
3732 seen lately with Python 2.3 might be taken care of. That will
3738 seen lately with Python 2.3 might be taken care of. That will
3733 need more testing.
3739 need more testing.
3734
3740
3735 2003-08-17 Fernando Perez <fperez@colorado.edu>
3741 2003-08-17 Fernando Perez <fperez@colorado.edu>
3736
3742
3737 * IPython/iplib.py (InteractiveShell._prefilter): significant
3743 * IPython/iplib.py (InteractiveShell._prefilter): significant
3738 simplifications to the logic for handling user escapes. Faster
3744 simplifications to the logic for handling user escapes. Faster
3739 and simpler code.
3745 and simpler code.
3740
3746
3741 2003-08-14 Fernando Perez <fperez@colorado.edu>
3747 2003-08-14 Fernando Perez <fperez@colorado.edu>
3742
3748
3743 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3749 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3744 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3750 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3745 but it should be quite a bit faster. And the recursive version
3751 but it should be quite a bit faster. And the recursive version
3746 generated O(log N) intermediate storage for all rank>1 arrays,
3752 generated O(log N) intermediate storage for all rank>1 arrays,
3747 even if they were contiguous.
3753 even if they were contiguous.
3748 (l1norm): Added this function.
3754 (l1norm): Added this function.
3749 (norm): Added this function for arbitrary norms (including
3755 (norm): Added this function for arbitrary norms (including
3750 l-infinity). l1 and l2 are still special cases for convenience
3756 l-infinity). l1 and l2 are still special cases for convenience
3751 and speed.
3757 and speed.
3752
3758
3753 2003-08-03 Fernando Perez <fperez@colorado.edu>
3759 2003-08-03 Fernando Perez <fperez@colorado.edu>
3754
3760
3755 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3761 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3756 exceptions, which now raise PendingDeprecationWarnings in Python
3762 exceptions, which now raise PendingDeprecationWarnings in Python
3757 2.3. There were some in Magic and some in Gnuplot2.
3763 2.3. There were some in Magic and some in Gnuplot2.
3758
3764
3759 2003-06-30 Fernando Perez <fperez@colorado.edu>
3765 2003-06-30 Fernando Perez <fperez@colorado.edu>
3760
3766
3761 * IPython/genutils.py (page): modified to call curses only for
3767 * IPython/genutils.py (page): modified to call curses only for
3762 terminals where TERM=='xterm'. After problems under many other
3768 terminals where TERM=='xterm'. After problems under many other
3763 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3769 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3764
3770
3765 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3771 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3766 would be triggered when readline was absent. This was just an old
3772 would be triggered when readline was absent. This was just an old
3767 debugging statement I'd forgotten to take out.
3773 debugging statement I'd forgotten to take out.
3768
3774
3769 2003-06-20 Fernando Perez <fperez@colorado.edu>
3775 2003-06-20 Fernando Perez <fperez@colorado.edu>
3770
3776
3771 * IPython/genutils.py (clock): modified to return only user time
3777 * IPython/genutils.py (clock): modified to return only user time
3772 (not counting system time), after a discussion on scipy. While
3778 (not counting system time), after a discussion on scipy. While
3773 system time may be a useful quantity occasionally, it may much
3779 system time may be a useful quantity occasionally, it may much
3774 more easily be skewed by occasional swapping or other similar
3780 more easily be skewed by occasional swapping or other similar
3775 activity.
3781 activity.
3776
3782
3777 2003-06-05 Fernando Perez <fperez@colorado.edu>
3783 2003-06-05 Fernando Perez <fperez@colorado.edu>
3778
3784
3779 * IPython/numutils.py (identity): new function, for building
3785 * IPython/numutils.py (identity): new function, for building
3780 arbitrary rank Kronecker deltas (mostly backwards compatible with
3786 arbitrary rank Kronecker deltas (mostly backwards compatible with
3781 Numeric.identity)
3787 Numeric.identity)
3782
3788
3783 2003-06-03 Fernando Perez <fperez@colorado.edu>
3789 2003-06-03 Fernando Perez <fperez@colorado.edu>
3784
3790
3785 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3791 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3786 arguments passed to magics with spaces, to allow trailing '\' to
3792 arguments passed to magics with spaces, to allow trailing '\' to
3787 work normally (mainly for Windows users).
3793 work normally (mainly for Windows users).
3788
3794
3789 2003-05-29 Fernando Perez <fperez@colorado.edu>
3795 2003-05-29 Fernando Perez <fperez@colorado.edu>
3790
3796
3791 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3797 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3792 instead of pydoc.help. This fixes a bizarre behavior where
3798 instead of pydoc.help. This fixes a bizarre behavior where
3793 printing '%s' % locals() would trigger the help system. Now
3799 printing '%s' % locals() would trigger the help system. Now
3794 ipython behaves like normal python does.
3800 ipython behaves like normal python does.
3795
3801
3796 Note that if one does 'from pydoc import help', the bizarre
3802 Note that if one does 'from pydoc import help', the bizarre
3797 behavior returns, but this will also happen in normal python, so
3803 behavior returns, but this will also happen in normal python, so
3798 it's not an ipython bug anymore (it has to do with how pydoc.help
3804 it's not an ipython bug anymore (it has to do with how pydoc.help
3799 is implemented).
3805 is implemented).
3800
3806
3801 2003-05-22 Fernando Perez <fperez@colorado.edu>
3807 2003-05-22 Fernando Perez <fperez@colorado.edu>
3802
3808
3803 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3809 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3804 return [] instead of None when nothing matches, also match to end
3810 return [] instead of None when nothing matches, also match to end
3805 of line. Patch by Gary Bishop.
3811 of line. Patch by Gary Bishop.
3806
3812
3807 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3813 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3808 protection as before, for files passed on the command line. This
3814 protection as before, for files passed on the command line. This
3809 prevents the CrashHandler from kicking in if user files call into
3815 prevents the CrashHandler from kicking in if user files call into
3810 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3816 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3811 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3817 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3812
3818
3813 2003-05-20 *** Released version 0.4.0
3819 2003-05-20 *** Released version 0.4.0
3814
3820
3815 2003-05-20 Fernando Perez <fperez@colorado.edu>
3821 2003-05-20 Fernando Perez <fperez@colorado.edu>
3816
3822
3817 * setup.py: added support for manpages. It's a bit hackish b/c of
3823 * setup.py: added support for manpages. It's a bit hackish b/c of
3818 a bug in the way the bdist_rpm distutils target handles gzipped
3824 a bug in the way the bdist_rpm distutils target handles gzipped
3819 manpages, but it works. After a patch by Jack.
3825 manpages, but it works. After a patch by Jack.
3820
3826
3821 2003-05-19 Fernando Perez <fperez@colorado.edu>
3827 2003-05-19 Fernando Perez <fperez@colorado.edu>
3822
3828
3823 * IPython/numutils.py: added a mockup of the kinds module, since
3829 * IPython/numutils.py: added a mockup of the kinds module, since
3824 it was recently removed from Numeric. This way, numutils will
3830 it was recently removed from Numeric. This way, numutils will
3825 work for all users even if they are missing kinds.
3831 work for all users even if they are missing kinds.
3826
3832
3827 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3833 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3828 failure, which can occur with SWIG-wrapped extensions. After a
3834 failure, which can occur with SWIG-wrapped extensions. After a
3829 crash report from Prabhu.
3835 crash report from Prabhu.
3830
3836
3831 2003-05-16 Fernando Perez <fperez@colorado.edu>
3837 2003-05-16 Fernando Perez <fperez@colorado.edu>
3832
3838
3833 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3839 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3834 protect ipython from user code which may call directly
3840 protect ipython from user code which may call directly
3835 sys.excepthook (this looks like an ipython crash to the user, even
3841 sys.excepthook (this looks like an ipython crash to the user, even
3836 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3842 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3837 This is especially important to help users of WxWindows, but may
3843 This is especially important to help users of WxWindows, but may
3838 also be useful in other cases.
3844 also be useful in other cases.
3839
3845
3840 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3846 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3841 an optional tb_offset to be specified, and to preserve exception
3847 an optional tb_offset to be specified, and to preserve exception
3842 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3848 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3843
3849
3844 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3850 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3845
3851
3846 2003-05-15 Fernando Perez <fperez@colorado.edu>
3852 2003-05-15 Fernando Perez <fperez@colorado.edu>
3847
3853
3848 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3854 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3849 installing for a new user under Windows.
3855 installing for a new user under Windows.
3850
3856
3851 2003-05-12 Fernando Perez <fperez@colorado.edu>
3857 2003-05-12 Fernando Perez <fperez@colorado.edu>
3852
3858
3853 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3859 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3854 handler for Emacs comint-based lines. Currently it doesn't do
3860 handler for Emacs comint-based lines. Currently it doesn't do
3855 much (but importantly, it doesn't update the history cache). In
3861 much (but importantly, it doesn't update the history cache). In
3856 the future it may be expanded if Alex needs more functionality
3862 the future it may be expanded if Alex needs more functionality
3857 there.
3863 there.
3858
3864
3859 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3865 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3860 info to crash reports.
3866 info to crash reports.
3861
3867
3862 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3868 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3863 just like Python's -c. Also fixed crash with invalid -color
3869 just like Python's -c. Also fixed crash with invalid -color
3864 option value at startup. Thanks to Will French
3870 option value at startup. Thanks to Will French
3865 <wfrench-AT-bestweb.net> for the bug report.
3871 <wfrench-AT-bestweb.net> for the bug report.
3866
3872
3867 2003-05-09 Fernando Perez <fperez@colorado.edu>
3873 2003-05-09 Fernando Perez <fperez@colorado.edu>
3868
3874
3869 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3875 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3870 to EvalDict (it's a mapping, after all) and simplified its code
3876 to EvalDict (it's a mapping, after all) and simplified its code
3871 quite a bit, after a nice discussion on c.l.py where Gustavo
3877 quite a bit, after a nice discussion on c.l.py where Gustavo
3872 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3878 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3873
3879
3874 2003-04-30 Fernando Perez <fperez@colorado.edu>
3880 2003-04-30 Fernando Perez <fperez@colorado.edu>
3875
3881
3876 * IPython/genutils.py (timings_out): modified it to reduce its
3882 * IPython/genutils.py (timings_out): modified it to reduce its
3877 overhead in the common reps==1 case.
3883 overhead in the common reps==1 case.
3878
3884
3879 2003-04-29 Fernando Perez <fperez@colorado.edu>
3885 2003-04-29 Fernando Perez <fperez@colorado.edu>
3880
3886
3881 * IPython/genutils.py (timings_out): Modified to use the resource
3887 * IPython/genutils.py (timings_out): Modified to use the resource
3882 module, which avoids the wraparound problems of time.clock().
3888 module, which avoids the wraparound problems of time.clock().
3883
3889
3884 2003-04-17 *** Released version 0.2.15pre4
3890 2003-04-17 *** Released version 0.2.15pre4
3885
3891
3886 2003-04-17 Fernando Perez <fperez@colorado.edu>
3892 2003-04-17 Fernando Perez <fperez@colorado.edu>
3887
3893
3888 * setup.py (scriptfiles): Split windows-specific stuff over to a
3894 * setup.py (scriptfiles): Split windows-specific stuff over to a
3889 separate file, in an attempt to have a Windows GUI installer.
3895 separate file, in an attempt to have a Windows GUI installer.
3890 That didn't work, but part of the groundwork is done.
3896 That didn't work, but part of the groundwork is done.
3891
3897
3892 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3898 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3893 indent/unindent with 4 spaces. Particularly useful in combination
3899 indent/unindent with 4 spaces. Particularly useful in combination
3894 with the new auto-indent option.
3900 with the new auto-indent option.
3895
3901
3896 2003-04-16 Fernando Perez <fperez@colorado.edu>
3902 2003-04-16 Fernando Perez <fperez@colorado.edu>
3897
3903
3898 * IPython/Magic.py: various replacements of self.rc for
3904 * IPython/Magic.py: various replacements of self.rc for
3899 self.shell.rc. A lot more remains to be done to fully disentangle
3905 self.shell.rc. A lot more remains to be done to fully disentangle
3900 this class from the main Shell class.
3906 this class from the main Shell class.
3901
3907
3902 * IPython/GnuplotRuntime.py: added checks for mouse support so
3908 * IPython/GnuplotRuntime.py: added checks for mouse support so
3903 that we don't try to enable it if the current gnuplot doesn't
3909 that we don't try to enable it if the current gnuplot doesn't
3904 really support it. Also added checks so that we don't try to
3910 really support it. Also added checks so that we don't try to
3905 enable persist under Windows (where Gnuplot doesn't recognize the
3911 enable persist under Windows (where Gnuplot doesn't recognize the
3906 option).
3912 option).
3907
3913
3908 * IPython/iplib.py (InteractiveShell.interact): Added optional
3914 * IPython/iplib.py (InteractiveShell.interact): Added optional
3909 auto-indenting code, after a patch by King C. Shu
3915 auto-indenting code, after a patch by King C. Shu
3910 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3916 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3911 get along well with pasting indented code. If I ever figure out
3917 get along well with pasting indented code. If I ever figure out
3912 how to make that part go well, it will become on by default.
3918 how to make that part go well, it will become on by default.
3913
3919
3914 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3920 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3915 crash ipython if there was an unmatched '%' in the user's prompt
3921 crash ipython if there was an unmatched '%' in the user's prompt
3916 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3922 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3917
3923
3918 * IPython/iplib.py (InteractiveShell.interact): removed the
3924 * IPython/iplib.py (InteractiveShell.interact): removed the
3919 ability to ask the user whether he wants to crash or not at the
3925 ability to ask the user whether he wants to crash or not at the
3920 'last line' exception handler. Calling functions at that point
3926 'last line' exception handler. Calling functions at that point
3921 changes the stack, and the error reports would have incorrect
3927 changes the stack, and the error reports would have incorrect
3922 tracebacks.
3928 tracebacks.
3923
3929
3924 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3930 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3925 pass through a peger a pretty-printed form of any object. After a
3931 pass through a peger a pretty-printed form of any object. After a
3926 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3932 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3927
3933
3928 2003-04-14 Fernando Perez <fperez@colorado.edu>
3934 2003-04-14 Fernando Perez <fperez@colorado.edu>
3929
3935
3930 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3936 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3931 all files in ~ would be modified at first install (instead of
3937 all files in ~ would be modified at first install (instead of
3932 ~/.ipython). This could be potentially disastrous, as the
3938 ~/.ipython). This could be potentially disastrous, as the
3933 modification (make line-endings native) could damage binary files.
3939 modification (make line-endings native) could damage binary files.
3934
3940
3935 2003-04-10 Fernando Perez <fperez@colorado.edu>
3941 2003-04-10 Fernando Perez <fperez@colorado.edu>
3936
3942
3937 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3943 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3938 handle only lines which are invalid python. This now means that
3944 handle only lines which are invalid python. This now means that
3939 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3945 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3940 for the bug report.
3946 for the bug report.
3941
3947
3942 2003-04-01 Fernando Perez <fperez@colorado.edu>
3948 2003-04-01 Fernando Perez <fperez@colorado.edu>
3943
3949
3944 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3950 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3945 where failing to set sys.last_traceback would crash pdb.pm().
3951 where failing to set sys.last_traceback would crash pdb.pm().
3946 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3952 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3947 report.
3953 report.
3948
3954
3949 2003-03-25 Fernando Perez <fperez@colorado.edu>
3955 2003-03-25 Fernando Perez <fperez@colorado.edu>
3950
3956
3951 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3957 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3952 before printing it (it had a lot of spurious blank lines at the
3958 before printing it (it had a lot of spurious blank lines at the
3953 end).
3959 end).
3954
3960
3955 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3961 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3956 output would be sent 21 times! Obviously people don't use this
3962 output would be sent 21 times! Obviously people don't use this
3957 too often, or I would have heard about it.
3963 too often, or I would have heard about it.
3958
3964
3959 2003-03-24 Fernando Perez <fperez@colorado.edu>
3965 2003-03-24 Fernando Perez <fperez@colorado.edu>
3960
3966
3961 * setup.py (scriptfiles): renamed the data_files parameter from
3967 * setup.py (scriptfiles): renamed the data_files parameter from
3962 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3968 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3963 for the patch.
3969 for the patch.
3964
3970
3965 2003-03-20 Fernando Perez <fperez@colorado.edu>
3971 2003-03-20 Fernando Perez <fperez@colorado.edu>
3966
3972
3967 * IPython/genutils.py (error): added error() and fatal()
3973 * IPython/genutils.py (error): added error() and fatal()
3968 functions.
3974 functions.
3969
3975
3970 2003-03-18 *** Released version 0.2.15pre3
3976 2003-03-18 *** Released version 0.2.15pre3
3971
3977
3972 2003-03-18 Fernando Perez <fperez@colorado.edu>
3978 2003-03-18 Fernando Perez <fperez@colorado.edu>
3973
3979
3974 * setupext/install_data_ext.py
3980 * setupext/install_data_ext.py
3975 (install_data_ext.initialize_options): Class contributed by Jack
3981 (install_data_ext.initialize_options): Class contributed by Jack
3976 Moffit for fixing the old distutils hack. He is sending this to
3982 Moffit for fixing the old distutils hack. He is sending this to
3977 the distutils folks so in the future we may not need it as a
3983 the distutils folks so in the future we may not need it as a
3978 private fix.
3984 private fix.
3979
3985
3980 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3986 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3981 changes for Debian packaging. See his patch for full details.
3987 changes for Debian packaging. See his patch for full details.
3982 The old distutils hack of making the ipythonrc* files carry a
3988 The old distutils hack of making the ipythonrc* files carry a
3983 bogus .py extension is gone, at last. Examples were moved to a
3989 bogus .py extension is gone, at last. Examples were moved to a
3984 separate subdir under doc/, and the separate executable scripts
3990 separate subdir under doc/, and the separate executable scripts
3985 now live in their own directory. Overall a great cleanup. The
3991 now live in their own directory. Overall a great cleanup. The
3986 manual was updated to use the new files, and setup.py has been
3992 manual was updated to use the new files, and setup.py has been
3987 fixed for this setup.
3993 fixed for this setup.
3988
3994
3989 * IPython/PyColorize.py (Parser.usage): made non-executable and
3995 * IPython/PyColorize.py (Parser.usage): made non-executable and
3990 created a pycolor wrapper around it to be included as a script.
3996 created a pycolor wrapper around it to be included as a script.
3991
3997
3992 2003-03-12 *** Released version 0.2.15pre2
3998 2003-03-12 *** Released version 0.2.15pre2
3993
3999
3994 2003-03-12 Fernando Perez <fperez@colorado.edu>
4000 2003-03-12 Fernando Perez <fperez@colorado.edu>
3995
4001
3996 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4002 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3997 long-standing problem with garbage characters in some terminals.
4003 long-standing problem with garbage characters in some terminals.
3998 The issue was really that the \001 and \002 escapes must _only_ be
4004 The issue was really that the \001 and \002 escapes must _only_ be
3999 passed to input prompts (which call readline), but _never_ to
4005 passed to input prompts (which call readline), but _never_ to
4000 normal text to be printed on screen. I changed ColorANSI to have
4006 normal text to be printed on screen. I changed ColorANSI to have
4001 two classes: TermColors and InputTermColors, each with the
4007 two classes: TermColors and InputTermColors, each with the
4002 appropriate escapes for input prompts or normal text. The code in
4008 appropriate escapes for input prompts or normal text. The code in
4003 Prompts.py got slightly more complicated, but this very old and
4009 Prompts.py got slightly more complicated, but this very old and
4004 annoying bug is finally fixed.
4010 annoying bug is finally fixed.
4005
4011
4006 All the credit for nailing down the real origin of this problem
4012 All the credit for nailing down the real origin of this problem
4007 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4013 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4008 *Many* thanks to him for spending quite a bit of effort on this.
4014 *Many* thanks to him for spending quite a bit of effort on this.
4009
4015
4010 2003-03-05 *** Released version 0.2.15pre1
4016 2003-03-05 *** Released version 0.2.15pre1
4011
4017
4012 2003-03-03 Fernando Perez <fperez@colorado.edu>
4018 2003-03-03 Fernando Perez <fperez@colorado.edu>
4013
4019
4014 * IPython/FakeModule.py: Moved the former _FakeModule to a
4020 * IPython/FakeModule.py: Moved the former _FakeModule to a
4015 separate file, because it's also needed by Magic (to fix a similar
4021 separate file, because it's also needed by Magic (to fix a similar
4016 pickle-related issue in @run).
4022 pickle-related issue in @run).
4017
4023
4018 2003-03-02 Fernando Perez <fperez@colorado.edu>
4024 2003-03-02 Fernando Perez <fperez@colorado.edu>
4019
4025
4020 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4026 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4021 the autocall option at runtime.
4027 the autocall option at runtime.
4022 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4028 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4023 across Magic.py to start separating Magic from InteractiveShell.
4029 across Magic.py to start separating Magic from InteractiveShell.
4024 (Magic._ofind): Fixed to return proper namespace for dotted
4030 (Magic._ofind): Fixed to return proper namespace for dotted
4025 names. Before, a dotted name would always return 'not currently
4031 names. Before, a dotted name would always return 'not currently
4026 defined', because it would find the 'parent'. s.x would be found,
4032 defined', because it would find the 'parent'. s.x would be found,
4027 but since 'x' isn't defined by itself, it would get confused.
4033 but since 'x' isn't defined by itself, it would get confused.
4028 (Magic.magic_run): Fixed pickling problems reported by Ralf
4034 (Magic.magic_run): Fixed pickling problems reported by Ralf
4029 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4035 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4030 that I'd used when Mike Heeter reported similar issues at the
4036 that I'd used when Mike Heeter reported similar issues at the
4031 top-level, but now for @run. It boils down to injecting the
4037 top-level, but now for @run. It boils down to injecting the
4032 namespace where code is being executed with something that looks
4038 namespace where code is being executed with something that looks
4033 enough like a module to fool pickle.dump(). Since a pickle stores
4039 enough like a module to fool pickle.dump(). Since a pickle stores
4034 a named reference to the importing module, we need this for
4040 a named reference to the importing module, we need this for
4035 pickles to save something sensible.
4041 pickles to save something sensible.
4036
4042
4037 * IPython/ipmaker.py (make_IPython): added an autocall option.
4043 * IPython/ipmaker.py (make_IPython): added an autocall option.
4038
4044
4039 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4045 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4040 the auto-eval code. Now autocalling is an option, and the code is
4046 the auto-eval code. Now autocalling is an option, and the code is
4041 also vastly safer. There is no more eval() involved at all.
4047 also vastly safer. There is no more eval() involved at all.
4042
4048
4043 2003-03-01 Fernando Perez <fperez@colorado.edu>
4049 2003-03-01 Fernando Perez <fperez@colorado.edu>
4044
4050
4045 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4051 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4046 dict with named keys instead of a tuple.
4052 dict with named keys instead of a tuple.
4047
4053
4048 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4054 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4049
4055
4050 * setup.py (make_shortcut): Fixed message about directories
4056 * setup.py (make_shortcut): Fixed message about directories
4051 created during Windows installation (the directories were ok, just
4057 created during Windows installation (the directories were ok, just
4052 the printed message was misleading). Thanks to Chris Liechti
4058 the printed message was misleading). Thanks to Chris Liechti
4053 <cliechti-AT-gmx.net> for the heads up.
4059 <cliechti-AT-gmx.net> for the heads up.
4054
4060
4055 2003-02-21 Fernando Perez <fperez@colorado.edu>
4061 2003-02-21 Fernando Perez <fperez@colorado.edu>
4056
4062
4057 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4063 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4058 of ValueError exception when checking for auto-execution. This
4064 of ValueError exception when checking for auto-execution. This
4059 one is raised by things like Numeric arrays arr.flat when the
4065 one is raised by things like Numeric arrays arr.flat when the
4060 array is non-contiguous.
4066 array is non-contiguous.
4061
4067
4062 2003-01-31 Fernando Perez <fperez@colorado.edu>
4068 2003-01-31 Fernando Perez <fperez@colorado.edu>
4063
4069
4064 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4070 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4065 not return any value at all (even though the command would get
4071 not return any value at all (even though the command would get
4066 executed).
4072 executed).
4067 (xsys): Flush stdout right after printing the command to ensure
4073 (xsys): Flush stdout right after printing the command to ensure
4068 proper ordering of commands and command output in the total
4074 proper ordering of commands and command output in the total
4069 output.
4075 output.
4070 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4076 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4071 system/getoutput as defaults. The old ones are kept for
4077 system/getoutput as defaults. The old ones are kept for
4072 compatibility reasons, so no code which uses this library needs
4078 compatibility reasons, so no code which uses this library needs
4073 changing.
4079 changing.
4074
4080
4075 2003-01-27 *** Released version 0.2.14
4081 2003-01-27 *** Released version 0.2.14
4076
4082
4077 2003-01-25 Fernando Perez <fperez@colorado.edu>
4083 2003-01-25 Fernando Perez <fperez@colorado.edu>
4078
4084
4079 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4085 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4080 functions defined in previous edit sessions could not be re-edited
4086 functions defined in previous edit sessions could not be re-edited
4081 (because the temp files were immediately removed). Now temp files
4087 (because the temp files were immediately removed). Now temp files
4082 are removed only at IPython's exit.
4088 are removed only at IPython's exit.
4083 (Magic.magic_run): Improved @run to perform shell-like expansions
4089 (Magic.magic_run): Improved @run to perform shell-like expansions
4084 on its arguments (~users and $VARS). With this, @run becomes more
4090 on its arguments (~users and $VARS). With this, @run becomes more
4085 like a normal command-line.
4091 like a normal command-line.
4086
4092
4087 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4093 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4088 bugs related to embedding and cleaned up that code. A fairly
4094 bugs related to embedding and cleaned up that code. A fairly
4089 important one was the impossibility to access the global namespace
4095 important one was the impossibility to access the global namespace
4090 through the embedded IPython (only local variables were visible).
4096 through the embedded IPython (only local variables were visible).
4091
4097
4092 2003-01-14 Fernando Perez <fperez@colorado.edu>
4098 2003-01-14 Fernando Perez <fperez@colorado.edu>
4093
4099
4094 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4100 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4095 auto-calling to be a bit more conservative. Now it doesn't get
4101 auto-calling to be a bit more conservative. Now it doesn't get
4096 triggered if any of '!=()<>' are in the rest of the input line, to
4102 triggered if any of '!=()<>' are in the rest of the input line, to
4097 allow comparing callables. Thanks to Alex for the heads up.
4103 allow comparing callables. Thanks to Alex for the heads up.
4098
4104
4099 2003-01-07 Fernando Perez <fperez@colorado.edu>
4105 2003-01-07 Fernando Perez <fperez@colorado.edu>
4100
4106
4101 * IPython/genutils.py (page): fixed estimation of the number of
4107 * IPython/genutils.py (page): fixed estimation of the number of
4102 lines in a string to be paged to simply count newlines. This
4108 lines in a string to be paged to simply count newlines. This
4103 prevents over-guessing due to embedded escape sequences. A better
4109 prevents over-guessing due to embedded escape sequences. A better
4104 long-term solution would involve stripping out the control chars
4110 long-term solution would involve stripping out the control chars
4105 for the count, but it's potentially so expensive I just don't
4111 for the count, but it's potentially so expensive I just don't
4106 think it's worth doing.
4112 think it's worth doing.
4107
4113
4108 2002-12-19 *** Released version 0.2.14pre50
4114 2002-12-19 *** Released version 0.2.14pre50
4109
4115
4110 2002-12-19 Fernando Perez <fperez@colorado.edu>
4116 2002-12-19 Fernando Perez <fperez@colorado.edu>
4111
4117
4112 * tools/release (version): Changed release scripts to inform
4118 * tools/release (version): Changed release scripts to inform
4113 Andrea and build a NEWS file with a list of recent changes.
4119 Andrea and build a NEWS file with a list of recent changes.
4114
4120
4115 * IPython/ColorANSI.py (__all__): changed terminal detection
4121 * IPython/ColorANSI.py (__all__): changed terminal detection
4116 code. Seems to work better for xterms without breaking
4122 code. Seems to work better for xterms without breaking
4117 konsole. Will need more testing to determine if WinXP and Mac OSX
4123 konsole. Will need more testing to determine if WinXP and Mac OSX
4118 also work ok.
4124 also work ok.
4119
4125
4120 2002-12-18 *** Released version 0.2.14pre49
4126 2002-12-18 *** Released version 0.2.14pre49
4121
4127
4122 2002-12-18 Fernando Perez <fperez@colorado.edu>
4128 2002-12-18 Fernando Perez <fperez@colorado.edu>
4123
4129
4124 * Docs: added new info about Mac OSX, from Andrea.
4130 * Docs: added new info about Mac OSX, from Andrea.
4125
4131
4126 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4132 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4127 allow direct plotting of python strings whose format is the same
4133 allow direct plotting of python strings whose format is the same
4128 of gnuplot data files.
4134 of gnuplot data files.
4129
4135
4130 2002-12-16 Fernando Perez <fperez@colorado.edu>
4136 2002-12-16 Fernando Perez <fperez@colorado.edu>
4131
4137
4132 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4138 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4133 value of exit question to be acknowledged.
4139 value of exit question to be acknowledged.
4134
4140
4135 2002-12-03 Fernando Perez <fperez@colorado.edu>
4141 2002-12-03 Fernando Perez <fperez@colorado.edu>
4136
4142
4137 * IPython/ipmaker.py: removed generators, which had been added
4143 * IPython/ipmaker.py: removed generators, which had been added
4138 by mistake in an earlier debugging run. This was causing trouble
4144 by mistake in an earlier debugging run. This was causing trouble
4139 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4145 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4140 for pointing this out.
4146 for pointing this out.
4141
4147
4142 2002-11-17 Fernando Perez <fperez@colorado.edu>
4148 2002-11-17 Fernando Perez <fperez@colorado.edu>
4143
4149
4144 * Manual: updated the Gnuplot section.
4150 * Manual: updated the Gnuplot section.
4145
4151
4146 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4152 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4147 a much better split of what goes in Runtime and what goes in
4153 a much better split of what goes in Runtime and what goes in
4148 Interactive.
4154 Interactive.
4149
4155
4150 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4156 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4151 being imported from iplib.
4157 being imported from iplib.
4152
4158
4153 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4159 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4154 for command-passing. Now the global Gnuplot instance is called
4160 for command-passing. Now the global Gnuplot instance is called
4155 'gp' instead of 'g', which was really a far too fragile and
4161 'gp' instead of 'g', which was really a far too fragile and
4156 common name.
4162 common name.
4157
4163
4158 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4164 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4159 bounding boxes generated by Gnuplot for square plots.
4165 bounding boxes generated by Gnuplot for square plots.
4160
4166
4161 * IPython/genutils.py (popkey): new function added. I should
4167 * IPython/genutils.py (popkey): new function added. I should
4162 suggest this on c.l.py as a dict method, it seems useful.
4168 suggest this on c.l.py as a dict method, it seems useful.
4163
4169
4164 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4170 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4165 to transparently handle PostScript generation. MUCH better than
4171 to transparently handle PostScript generation. MUCH better than
4166 the previous plot_eps/replot_eps (which I removed now). The code
4172 the previous plot_eps/replot_eps (which I removed now). The code
4167 is also fairly clean and well documented now (including
4173 is also fairly clean and well documented now (including
4168 docstrings).
4174 docstrings).
4169
4175
4170 2002-11-13 Fernando Perez <fperez@colorado.edu>
4176 2002-11-13 Fernando Perez <fperez@colorado.edu>
4171
4177
4172 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4178 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4173 (inconsistent with options).
4179 (inconsistent with options).
4174
4180
4175 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4181 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4176 manually disabled, I don't know why. Fixed it.
4182 manually disabled, I don't know why. Fixed it.
4177 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4183 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4178 eps output.
4184 eps output.
4179
4185
4180 2002-11-12 Fernando Perez <fperez@colorado.edu>
4186 2002-11-12 Fernando Perez <fperez@colorado.edu>
4181
4187
4182 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4188 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4183 don't propagate up to caller. Fixes crash reported by François
4189 don't propagate up to caller. Fixes crash reported by François
4184 Pinard.
4190 Pinard.
4185
4191
4186 2002-11-09 Fernando Perez <fperez@colorado.edu>
4192 2002-11-09 Fernando Perez <fperez@colorado.edu>
4187
4193
4188 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4194 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4189 history file for new users.
4195 history file for new users.
4190 (make_IPython): fixed bug where initial install would leave the
4196 (make_IPython): fixed bug where initial install would leave the
4191 user running in the .ipython dir.
4197 user running in the .ipython dir.
4192 (make_IPython): fixed bug where config dir .ipython would be
4198 (make_IPython): fixed bug where config dir .ipython would be
4193 created regardless of the given -ipythondir option. Thanks to Cory
4199 created regardless of the given -ipythondir option. Thanks to Cory
4194 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4200 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4195
4201
4196 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4202 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4197 type confirmations. Will need to use it in all of IPython's code
4203 type confirmations. Will need to use it in all of IPython's code
4198 consistently.
4204 consistently.
4199
4205
4200 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4206 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4201 context to print 31 lines instead of the default 5. This will make
4207 context to print 31 lines instead of the default 5. This will make
4202 the crash reports extremely detailed in case the problem is in
4208 the crash reports extremely detailed in case the problem is in
4203 libraries I don't have access to.
4209 libraries I don't have access to.
4204
4210
4205 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4211 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4206 line of defense' code to still crash, but giving users fair
4212 line of defense' code to still crash, but giving users fair
4207 warning. I don't want internal errors to go unreported: if there's
4213 warning. I don't want internal errors to go unreported: if there's
4208 an internal problem, IPython should crash and generate a full
4214 an internal problem, IPython should crash and generate a full
4209 report.
4215 report.
4210
4216
4211 2002-11-08 Fernando Perez <fperez@colorado.edu>
4217 2002-11-08 Fernando Perez <fperez@colorado.edu>
4212
4218
4213 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4219 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4214 otherwise uncaught exceptions which can appear if people set
4220 otherwise uncaught exceptions which can appear if people set
4215 sys.stdout to something badly broken. Thanks to a crash report
4221 sys.stdout to something badly broken. Thanks to a crash report
4216 from henni-AT-mail.brainbot.com.
4222 from henni-AT-mail.brainbot.com.
4217
4223
4218 2002-11-04 Fernando Perez <fperez@colorado.edu>
4224 2002-11-04 Fernando Perez <fperez@colorado.edu>
4219
4225
4220 * IPython/iplib.py (InteractiveShell.interact): added
4226 * IPython/iplib.py (InteractiveShell.interact): added
4221 __IPYTHON__active to the builtins. It's a flag which goes on when
4227 __IPYTHON__active to the builtins. It's a flag which goes on when
4222 the interaction starts and goes off again when it stops. This
4228 the interaction starts and goes off again when it stops. This
4223 allows embedding code to detect being inside IPython. Before this
4229 allows embedding code to detect being inside IPython. Before this
4224 was done via __IPYTHON__, but that only shows that an IPython
4230 was done via __IPYTHON__, but that only shows that an IPython
4225 instance has been created.
4231 instance has been created.
4226
4232
4227 * IPython/Magic.py (Magic.magic_env): I realized that in a
4233 * IPython/Magic.py (Magic.magic_env): I realized that in a
4228 UserDict, instance.data holds the data as a normal dict. So I
4234 UserDict, instance.data holds the data as a normal dict. So I
4229 modified @env to return os.environ.data instead of rebuilding a
4235 modified @env to return os.environ.data instead of rebuilding a
4230 dict by hand.
4236 dict by hand.
4231
4237
4232 2002-11-02 Fernando Perez <fperez@colorado.edu>
4238 2002-11-02 Fernando Perez <fperez@colorado.edu>
4233
4239
4234 * IPython/genutils.py (warn): changed so that level 1 prints no
4240 * IPython/genutils.py (warn): changed so that level 1 prints no
4235 header. Level 2 is now the default (with 'WARNING' header, as
4241 header. Level 2 is now the default (with 'WARNING' header, as
4236 before). I think I tracked all places where changes were needed in
4242 before). I think I tracked all places where changes were needed in
4237 IPython, but outside code using the old level numbering may have
4243 IPython, but outside code using the old level numbering may have
4238 broken.
4244 broken.
4239
4245
4240 * IPython/iplib.py (InteractiveShell.runcode): added this to
4246 * IPython/iplib.py (InteractiveShell.runcode): added this to
4241 handle the tracebacks in SystemExit traps correctly. The previous
4247 handle the tracebacks in SystemExit traps correctly. The previous
4242 code (through interact) was printing more of the stack than
4248 code (through interact) was printing more of the stack than
4243 necessary, showing IPython internal code to the user.
4249 necessary, showing IPython internal code to the user.
4244
4250
4245 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4251 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4246 default. Now that the default at the confirmation prompt is yes,
4252 default. Now that the default at the confirmation prompt is yes,
4247 it's not so intrusive. François' argument that ipython sessions
4253 it's not so intrusive. François' argument that ipython sessions
4248 tend to be complex enough not to lose them from an accidental C-d,
4254 tend to be complex enough not to lose them from an accidental C-d,
4249 is a valid one.
4255 is a valid one.
4250
4256
4251 * IPython/iplib.py (InteractiveShell.interact): added a
4257 * IPython/iplib.py (InteractiveShell.interact): added a
4252 showtraceback() call to the SystemExit trap, and modified the exit
4258 showtraceback() call to the SystemExit trap, and modified the exit
4253 confirmation to have yes as the default.
4259 confirmation to have yes as the default.
4254
4260
4255 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4261 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4256 this file. It's been gone from the code for a long time, this was
4262 this file. It's been gone from the code for a long time, this was
4257 simply leftover junk.
4263 simply leftover junk.
4258
4264
4259 2002-11-01 Fernando Perez <fperez@colorado.edu>
4265 2002-11-01 Fernando Perez <fperez@colorado.edu>
4260
4266
4261 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4267 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4262 added. If set, IPython now traps EOF and asks for
4268 added. If set, IPython now traps EOF and asks for
4263 confirmation. After a request by François Pinard.
4269 confirmation. After a request by François Pinard.
4264
4270
4265 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4271 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4266 of @abort, and with a new (better) mechanism for handling the
4272 of @abort, and with a new (better) mechanism for handling the
4267 exceptions.
4273 exceptions.
4268
4274
4269 2002-10-27 Fernando Perez <fperez@colorado.edu>
4275 2002-10-27 Fernando Perez <fperez@colorado.edu>
4270
4276
4271 * IPython/usage.py (__doc__): updated the --help information and
4277 * IPython/usage.py (__doc__): updated the --help information and
4272 the ipythonrc file to indicate that -log generates
4278 the ipythonrc file to indicate that -log generates
4273 ./ipython.log. Also fixed the corresponding info in @logstart.
4279 ./ipython.log. Also fixed the corresponding info in @logstart.
4274 This and several other fixes in the manuals thanks to reports by
4280 This and several other fixes in the manuals thanks to reports by
4275 François Pinard <pinard-AT-iro.umontreal.ca>.
4281 François Pinard <pinard-AT-iro.umontreal.ca>.
4276
4282
4277 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4283 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4278 refer to @logstart (instead of @log, which doesn't exist).
4284 refer to @logstart (instead of @log, which doesn't exist).
4279
4285
4280 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4286 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4281 AttributeError crash. Thanks to Christopher Armstrong
4287 AttributeError crash. Thanks to Christopher Armstrong
4282 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4288 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4283 introduced recently (in 0.2.14pre37) with the fix to the eval
4289 introduced recently (in 0.2.14pre37) with the fix to the eval
4284 problem mentioned below.
4290 problem mentioned below.
4285
4291
4286 2002-10-17 Fernando Perez <fperez@colorado.edu>
4292 2002-10-17 Fernando Perez <fperez@colorado.edu>
4287
4293
4288 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4294 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4289 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4295 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4290
4296
4291 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4297 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4292 this function to fix a problem reported by Alex Schmolck. He saw
4298 this function to fix a problem reported by Alex Schmolck. He saw
4293 it with list comprehensions and generators, which were getting
4299 it with list comprehensions and generators, which were getting
4294 called twice. The real problem was an 'eval' call in testing for
4300 called twice. The real problem was an 'eval' call in testing for
4295 automagic which was evaluating the input line silently.
4301 automagic which was evaluating the input line silently.
4296
4302
4297 This is a potentially very nasty bug, if the input has side
4303 This is a potentially very nasty bug, if the input has side
4298 effects which must not be repeated. The code is much cleaner now,
4304 effects which must not be repeated. The code is much cleaner now,
4299 without any blanket 'except' left and with a regexp test for
4305 without any blanket 'except' left and with a regexp test for
4300 actual function names.
4306 actual function names.
4301
4307
4302 But an eval remains, which I'm not fully comfortable with. I just
4308 But an eval remains, which I'm not fully comfortable with. I just
4303 don't know how to find out if an expression could be a callable in
4309 don't know how to find out if an expression could be a callable in
4304 the user's namespace without doing an eval on the string. However
4310 the user's namespace without doing an eval on the string. However
4305 that string is now much more strictly checked so that no code
4311 that string is now much more strictly checked so that no code
4306 slips by, so the eval should only happen for things that can
4312 slips by, so the eval should only happen for things that can
4307 really be only function/method names.
4313 really be only function/method names.
4308
4314
4309 2002-10-15 Fernando Perez <fperez@colorado.edu>
4315 2002-10-15 Fernando Perez <fperez@colorado.edu>
4310
4316
4311 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4317 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4312 OSX information to main manual, removed README_Mac_OSX file from
4318 OSX information to main manual, removed README_Mac_OSX file from
4313 distribution. Also updated credits for recent additions.
4319 distribution. Also updated credits for recent additions.
4314
4320
4315 2002-10-10 Fernando Perez <fperez@colorado.edu>
4321 2002-10-10 Fernando Perez <fperez@colorado.edu>
4316
4322
4317 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4323 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4318 terminal-related issues. Many thanks to Andrea Riciputi
4324 terminal-related issues. Many thanks to Andrea Riciputi
4319 <andrea.riciputi-AT-libero.it> for writing it.
4325 <andrea.riciputi-AT-libero.it> for writing it.
4320
4326
4321 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4327 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4322 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4328 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4323
4329
4324 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4330 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4325 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4331 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4326 <syver-en-AT-online.no> who both submitted patches for this problem.
4332 <syver-en-AT-online.no> who both submitted patches for this problem.
4327
4333
4328 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4334 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4329 global embedding to make sure that things don't overwrite user
4335 global embedding to make sure that things don't overwrite user
4330 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4336 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4331
4337
4332 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4338 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4333 compatibility. Thanks to Hayden Callow
4339 compatibility. Thanks to Hayden Callow
4334 <h.callow-AT-elec.canterbury.ac.nz>
4340 <h.callow-AT-elec.canterbury.ac.nz>
4335
4341
4336 2002-10-04 Fernando Perez <fperez@colorado.edu>
4342 2002-10-04 Fernando Perez <fperez@colorado.edu>
4337
4343
4338 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4344 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4339 Gnuplot.File objects.
4345 Gnuplot.File objects.
4340
4346
4341 2002-07-23 Fernando Perez <fperez@colorado.edu>
4347 2002-07-23 Fernando Perez <fperez@colorado.edu>
4342
4348
4343 * IPython/genutils.py (timing): Added timings() and timing() for
4349 * IPython/genutils.py (timing): Added timings() and timing() for
4344 quick access to the most commonly needed data, the execution
4350 quick access to the most commonly needed data, the execution
4345 times. Old timing() renamed to timings_out().
4351 times. Old timing() renamed to timings_out().
4346
4352
4347 2002-07-18 Fernando Perez <fperez@colorado.edu>
4353 2002-07-18 Fernando Perez <fperez@colorado.edu>
4348
4354
4349 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4355 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4350 bug with nested instances disrupting the parent's tab completion.
4356 bug with nested instances disrupting the parent's tab completion.
4351
4357
4352 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4358 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4353 all_completions code to begin the emacs integration.
4359 all_completions code to begin the emacs integration.
4354
4360
4355 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4361 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4356 argument to allow titling individual arrays when plotting.
4362 argument to allow titling individual arrays when plotting.
4357
4363
4358 2002-07-15 Fernando Perez <fperez@colorado.edu>
4364 2002-07-15 Fernando Perez <fperez@colorado.edu>
4359
4365
4360 * setup.py (make_shortcut): changed to retrieve the value of
4366 * setup.py (make_shortcut): changed to retrieve the value of
4361 'Program Files' directory from the registry (this value changes in
4367 'Program Files' directory from the registry (this value changes in
4362 non-english versions of Windows). Thanks to Thomas Fanslau
4368 non-english versions of Windows). Thanks to Thomas Fanslau
4363 <tfanslau-AT-gmx.de> for the report.
4369 <tfanslau-AT-gmx.de> for the report.
4364
4370
4365 2002-07-10 Fernando Perez <fperez@colorado.edu>
4371 2002-07-10 Fernando Perez <fperez@colorado.edu>
4366
4372
4367 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4373 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4368 a bug in pdb, which crashes if a line with only whitespace is
4374 a bug in pdb, which crashes if a line with only whitespace is
4369 entered. Bug report submitted to sourceforge.
4375 entered. Bug report submitted to sourceforge.
4370
4376
4371 2002-07-09 Fernando Perez <fperez@colorado.edu>
4377 2002-07-09 Fernando Perez <fperez@colorado.edu>
4372
4378
4373 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4379 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4374 reporting exceptions (it's a bug in inspect.py, I just set a
4380 reporting exceptions (it's a bug in inspect.py, I just set a
4375 workaround).
4381 workaround).
4376
4382
4377 2002-07-08 Fernando Perez <fperez@colorado.edu>
4383 2002-07-08 Fernando Perez <fperez@colorado.edu>
4378
4384
4379 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4385 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4380 __IPYTHON__ in __builtins__ to show up in user_ns.
4386 __IPYTHON__ in __builtins__ to show up in user_ns.
4381
4387
4382 2002-07-03 Fernando Perez <fperez@colorado.edu>
4388 2002-07-03 Fernando Perez <fperez@colorado.edu>
4383
4389
4384 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4390 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4385 name from @gp_set_instance to @gp_set_default.
4391 name from @gp_set_instance to @gp_set_default.
4386
4392
4387 * IPython/ipmaker.py (make_IPython): default editor value set to
4393 * IPython/ipmaker.py (make_IPython): default editor value set to
4388 '0' (a string), to match the rc file. Otherwise will crash when
4394 '0' (a string), to match the rc file. Otherwise will crash when
4389 .strip() is called on it.
4395 .strip() is called on it.
4390
4396
4391
4397
4392 2002-06-28 Fernando Perez <fperez@colorado.edu>
4398 2002-06-28 Fernando Perez <fperez@colorado.edu>
4393
4399
4394 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4400 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4395 of files in current directory when a file is executed via
4401 of files in current directory when a file is executed via
4396 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4402 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4397
4403
4398 * setup.py (manfiles): fix for rpm builds, submitted by RA
4404 * setup.py (manfiles): fix for rpm builds, submitted by RA
4399 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4405 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4400
4406
4401 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4407 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4402 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4408 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4403 string!). A. Schmolck caught this one.
4409 string!). A. Schmolck caught this one.
4404
4410
4405 2002-06-27 Fernando Perez <fperez@colorado.edu>
4411 2002-06-27 Fernando Perez <fperez@colorado.edu>
4406
4412
4407 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4413 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4408 defined files at the cmd line. __name__ wasn't being set to
4414 defined files at the cmd line. __name__ wasn't being set to
4409 __main__.
4415 __main__.
4410
4416
4411 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4417 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4412 regular lists and tuples besides Numeric arrays.
4418 regular lists and tuples besides Numeric arrays.
4413
4419
4414 * IPython/Prompts.py (CachedOutput.__call__): Added output
4420 * IPython/Prompts.py (CachedOutput.__call__): Added output
4415 supression for input ending with ';'. Similar to Mathematica and
4421 supression for input ending with ';'. Similar to Mathematica and
4416 Matlab. The _* vars and Out[] list are still updated, just like
4422 Matlab. The _* vars and Out[] list are still updated, just like
4417 Mathematica behaves.
4423 Mathematica behaves.
4418
4424
4419 2002-06-25 Fernando Perez <fperez@colorado.edu>
4425 2002-06-25 Fernando Perez <fperez@colorado.edu>
4420
4426
4421 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4427 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4422 .ini extensions for profiels under Windows.
4428 .ini extensions for profiels under Windows.
4423
4429
4424 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4430 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4425 string form. Fix contributed by Alexander Schmolck
4431 string form. Fix contributed by Alexander Schmolck
4426 <a.schmolck-AT-gmx.net>
4432 <a.schmolck-AT-gmx.net>
4427
4433
4428 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4434 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4429 pre-configured Gnuplot instance.
4435 pre-configured Gnuplot instance.
4430
4436
4431 2002-06-21 Fernando Perez <fperez@colorado.edu>
4437 2002-06-21 Fernando Perez <fperez@colorado.edu>
4432
4438
4433 * IPython/numutils.py (exp_safe): new function, works around the
4439 * IPython/numutils.py (exp_safe): new function, works around the
4434 underflow problems in Numeric.
4440 underflow problems in Numeric.
4435 (log2): New fn. Safe log in base 2: returns exact integer answer
4441 (log2): New fn. Safe log in base 2: returns exact integer answer
4436 for exact integer powers of 2.
4442 for exact integer powers of 2.
4437
4443
4438 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4444 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4439 properly.
4445 properly.
4440
4446
4441 2002-06-20 Fernando Perez <fperez@colorado.edu>
4447 2002-06-20 Fernando Perez <fperez@colorado.edu>
4442
4448
4443 * IPython/genutils.py (timing): new function like
4449 * IPython/genutils.py (timing): new function like
4444 Mathematica's. Similar to time_test, but returns more info.
4450 Mathematica's. Similar to time_test, but returns more info.
4445
4451
4446 2002-06-18 Fernando Perez <fperez@colorado.edu>
4452 2002-06-18 Fernando Perez <fperez@colorado.edu>
4447
4453
4448 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4454 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4449 according to Mike Heeter's suggestions.
4455 according to Mike Heeter's suggestions.
4450
4456
4451 2002-06-16 Fernando Perez <fperez@colorado.edu>
4457 2002-06-16 Fernando Perez <fperez@colorado.edu>
4452
4458
4453 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4459 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4454 system. GnuplotMagic is gone as a user-directory option. New files
4460 system. GnuplotMagic is gone as a user-directory option. New files
4455 make it easier to use all the gnuplot stuff both from external
4461 make it easier to use all the gnuplot stuff both from external
4456 programs as well as from IPython. Had to rewrite part of
4462 programs as well as from IPython. Had to rewrite part of
4457 hardcopy() b/c of a strange bug: often the ps files simply don't
4463 hardcopy() b/c of a strange bug: often the ps files simply don't
4458 get created, and require a repeat of the command (often several
4464 get created, and require a repeat of the command (often several
4459 times).
4465 times).
4460
4466
4461 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4467 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4462 resolve output channel at call time, so that if sys.stderr has
4468 resolve output channel at call time, so that if sys.stderr has
4463 been redirected by user this gets honored.
4469 been redirected by user this gets honored.
4464
4470
4465 2002-06-13 Fernando Perez <fperez@colorado.edu>
4471 2002-06-13 Fernando Perez <fperez@colorado.edu>
4466
4472
4467 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4473 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4468 IPShell. Kept a copy with the old names to avoid breaking people's
4474 IPShell. Kept a copy with the old names to avoid breaking people's
4469 embedded code.
4475 embedded code.
4470
4476
4471 * IPython/ipython: simplified it to the bare minimum after
4477 * IPython/ipython: simplified it to the bare minimum after
4472 Holger's suggestions. Added info about how to use it in
4478 Holger's suggestions. Added info about how to use it in
4473 PYTHONSTARTUP.
4479 PYTHONSTARTUP.
4474
4480
4475 * IPython/Shell.py (IPythonShell): changed the options passing
4481 * IPython/Shell.py (IPythonShell): changed the options passing
4476 from a string with funky %s replacements to a straight list. Maybe
4482 from a string with funky %s replacements to a straight list. Maybe
4477 a bit more typing, but it follows sys.argv conventions, so there's
4483 a bit more typing, but it follows sys.argv conventions, so there's
4478 less special-casing to remember.
4484 less special-casing to remember.
4479
4485
4480 2002-06-12 Fernando Perez <fperez@colorado.edu>
4486 2002-06-12 Fernando Perez <fperez@colorado.edu>
4481
4487
4482 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4488 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4483 command. Thanks to a suggestion by Mike Heeter.
4489 command. Thanks to a suggestion by Mike Heeter.
4484 (Magic.magic_pfile): added behavior to look at filenames if given
4490 (Magic.magic_pfile): added behavior to look at filenames if given
4485 arg is not a defined object.
4491 arg is not a defined object.
4486 (Magic.magic_save): New @save function to save code snippets. Also
4492 (Magic.magic_save): New @save function to save code snippets. Also
4487 a Mike Heeter idea.
4493 a Mike Heeter idea.
4488
4494
4489 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4495 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4490 plot() and replot(). Much more convenient now, especially for
4496 plot() and replot(). Much more convenient now, especially for
4491 interactive use.
4497 interactive use.
4492
4498
4493 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4499 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4494 filenames.
4500 filenames.
4495
4501
4496 2002-06-02 Fernando Perez <fperez@colorado.edu>
4502 2002-06-02 Fernando Perez <fperez@colorado.edu>
4497
4503
4498 * IPython/Struct.py (Struct.__init__): modified to admit
4504 * IPython/Struct.py (Struct.__init__): modified to admit
4499 initialization via another struct.
4505 initialization via another struct.
4500
4506
4501 * IPython/genutils.py (SystemExec.__init__): New stateful
4507 * IPython/genutils.py (SystemExec.__init__): New stateful
4502 interface to xsys and bq. Useful for writing system scripts.
4508 interface to xsys and bq. Useful for writing system scripts.
4503
4509
4504 2002-05-30 Fernando Perez <fperez@colorado.edu>
4510 2002-05-30 Fernando Perez <fperez@colorado.edu>
4505
4511
4506 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4512 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4507 documents. This will make the user download smaller (it's getting
4513 documents. This will make the user download smaller (it's getting
4508 too big).
4514 too big).
4509
4515
4510 2002-05-29 Fernando Perez <fperez@colorado.edu>
4516 2002-05-29 Fernando Perez <fperez@colorado.edu>
4511
4517
4512 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4518 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4513 fix problems with shelve and pickle. Seems to work, but I don't
4519 fix problems with shelve and pickle. Seems to work, but I don't
4514 know if corner cases break it. Thanks to Mike Heeter
4520 know if corner cases break it. Thanks to Mike Heeter
4515 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4521 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4516
4522
4517 2002-05-24 Fernando Perez <fperez@colorado.edu>
4523 2002-05-24 Fernando Perez <fperez@colorado.edu>
4518
4524
4519 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4525 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4520 macros having broken.
4526 macros having broken.
4521
4527
4522 2002-05-21 Fernando Perez <fperez@colorado.edu>
4528 2002-05-21 Fernando Perez <fperez@colorado.edu>
4523
4529
4524 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4530 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4525 introduced logging bug: all history before logging started was
4531 introduced logging bug: all history before logging started was
4526 being written one character per line! This came from the redesign
4532 being written one character per line! This came from the redesign
4527 of the input history as a special list which slices to strings,
4533 of the input history as a special list which slices to strings,
4528 not to lists.
4534 not to lists.
4529
4535
4530 2002-05-20 Fernando Perez <fperez@colorado.edu>
4536 2002-05-20 Fernando Perez <fperez@colorado.edu>
4531
4537
4532 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4538 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4533 be an attribute of all classes in this module. The design of these
4539 be an attribute of all classes in this module. The design of these
4534 classes needs some serious overhauling.
4540 classes needs some serious overhauling.
4535
4541
4536 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4542 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4537 which was ignoring '_' in option names.
4543 which was ignoring '_' in option names.
4538
4544
4539 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4545 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4540 'Verbose_novars' to 'Context' and made it the new default. It's a
4546 'Verbose_novars' to 'Context' and made it the new default. It's a
4541 bit more readable and also safer than verbose.
4547 bit more readable and also safer than verbose.
4542
4548
4543 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4549 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4544 triple-quoted strings.
4550 triple-quoted strings.
4545
4551
4546 * IPython/OInspect.py (__all__): new module exposing the object
4552 * IPython/OInspect.py (__all__): new module exposing the object
4547 introspection facilities. Now the corresponding magics are dummy
4553 introspection facilities. Now the corresponding magics are dummy
4548 wrappers around this. Having this module will make it much easier
4554 wrappers around this. Having this module will make it much easier
4549 to put these functions into our modified pdb.
4555 to put these functions into our modified pdb.
4550 This new object inspector system uses the new colorizing module,
4556 This new object inspector system uses the new colorizing module,
4551 so source code and other things are nicely syntax highlighted.
4557 so source code and other things are nicely syntax highlighted.
4552
4558
4553 2002-05-18 Fernando Perez <fperez@colorado.edu>
4559 2002-05-18 Fernando Perez <fperez@colorado.edu>
4554
4560
4555 * IPython/ColorANSI.py: Split the coloring tools into a separate
4561 * IPython/ColorANSI.py: Split the coloring tools into a separate
4556 module so I can use them in other code easier (they were part of
4562 module so I can use them in other code easier (they were part of
4557 ultraTB).
4563 ultraTB).
4558
4564
4559 2002-05-17 Fernando Perez <fperez@colorado.edu>
4565 2002-05-17 Fernando Perez <fperez@colorado.edu>
4560
4566
4561 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4567 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4562 fixed it to set the global 'g' also to the called instance, as
4568 fixed it to set the global 'g' also to the called instance, as
4563 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4569 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4564 user's 'g' variables).
4570 user's 'g' variables).
4565
4571
4566 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4572 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4567 global variables (aliases to _ih,_oh) so that users which expect
4573 global variables (aliases to _ih,_oh) so that users which expect
4568 In[5] or Out[7] to work aren't unpleasantly surprised.
4574 In[5] or Out[7] to work aren't unpleasantly surprised.
4569 (InputList.__getslice__): new class to allow executing slices of
4575 (InputList.__getslice__): new class to allow executing slices of
4570 input history directly. Very simple class, complements the use of
4576 input history directly. Very simple class, complements the use of
4571 macros.
4577 macros.
4572
4578
4573 2002-05-16 Fernando Perez <fperez@colorado.edu>
4579 2002-05-16 Fernando Perez <fperez@colorado.edu>
4574
4580
4575 * setup.py (docdirbase): make doc directory be just doc/IPython
4581 * setup.py (docdirbase): make doc directory be just doc/IPython
4576 without version numbers, it will reduce clutter for users.
4582 without version numbers, it will reduce clutter for users.
4577
4583
4578 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4584 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4579 execfile call to prevent possible memory leak. See for details:
4585 execfile call to prevent possible memory leak. See for details:
4580 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4586 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4581
4587
4582 2002-05-15 Fernando Perez <fperez@colorado.edu>
4588 2002-05-15 Fernando Perez <fperez@colorado.edu>
4583
4589
4584 * IPython/Magic.py (Magic.magic_psource): made the object
4590 * IPython/Magic.py (Magic.magic_psource): made the object
4585 introspection names be more standard: pdoc, pdef, pfile and
4591 introspection names be more standard: pdoc, pdef, pfile and
4586 psource. They all print/page their output, and it makes
4592 psource. They all print/page their output, and it makes
4587 remembering them easier. Kept old names for compatibility as
4593 remembering them easier. Kept old names for compatibility as
4588 aliases.
4594 aliases.
4589
4595
4590 2002-05-14 Fernando Perez <fperez@colorado.edu>
4596 2002-05-14 Fernando Perez <fperez@colorado.edu>
4591
4597
4592 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4598 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4593 what the mouse problem was. The trick is to use gnuplot with temp
4599 what the mouse problem was. The trick is to use gnuplot with temp
4594 files and NOT with pipes (for data communication), because having
4600 files and NOT with pipes (for data communication), because having
4595 both pipes and the mouse on is bad news.
4601 both pipes and the mouse on is bad news.
4596
4602
4597 2002-05-13 Fernando Perez <fperez@colorado.edu>
4603 2002-05-13 Fernando Perez <fperez@colorado.edu>
4598
4604
4599 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4605 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4600 bug. Information would be reported about builtins even when
4606 bug. Information would be reported about builtins even when
4601 user-defined functions overrode them.
4607 user-defined functions overrode them.
4602
4608
4603 2002-05-11 Fernando Perez <fperez@colorado.edu>
4609 2002-05-11 Fernando Perez <fperez@colorado.edu>
4604
4610
4605 * IPython/__init__.py (__all__): removed FlexCompleter from
4611 * IPython/__init__.py (__all__): removed FlexCompleter from
4606 __all__ so that things don't fail in platforms without readline.
4612 __all__ so that things don't fail in platforms without readline.
4607
4613
4608 2002-05-10 Fernando Perez <fperez@colorado.edu>
4614 2002-05-10 Fernando Perez <fperez@colorado.edu>
4609
4615
4610 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4616 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4611 it requires Numeric, effectively making Numeric a dependency for
4617 it requires Numeric, effectively making Numeric a dependency for
4612 IPython.
4618 IPython.
4613
4619
4614 * Released 0.2.13
4620 * Released 0.2.13
4615
4621
4616 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4622 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4617 profiler interface. Now all the major options from the profiler
4623 profiler interface. Now all the major options from the profiler
4618 module are directly supported in IPython, both for single
4624 module are directly supported in IPython, both for single
4619 expressions (@prun) and for full programs (@run -p).
4625 expressions (@prun) and for full programs (@run -p).
4620
4626
4621 2002-05-09 Fernando Perez <fperez@colorado.edu>
4627 2002-05-09 Fernando Perez <fperez@colorado.edu>
4622
4628
4623 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4629 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4624 magic properly formatted for screen.
4630 magic properly formatted for screen.
4625
4631
4626 * setup.py (make_shortcut): Changed things to put pdf version in
4632 * setup.py (make_shortcut): Changed things to put pdf version in
4627 doc/ instead of doc/manual (had to change lyxport a bit).
4633 doc/ instead of doc/manual (had to change lyxport a bit).
4628
4634
4629 * IPython/Magic.py (Profile.string_stats): made profile runs go
4635 * IPython/Magic.py (Profile.string_stats): made profile runs go
4630 through pager (they are long and a pager allows searching, saving,
4636 through pager (they are long and a pager allows searching, saving,
4631 etc.)
4637 etc.)
4632
4638
4633 2002-05-08 Fernando Perez <fperez@colorado.edu>
4639 2002-05-08 Fernando Perez <fperez@colorado.edu>
4634
4640
4635 * Released 0.2.12
4641 * Released 0.2.12
4636
4642
4637 2002-05-06 Fernando Perez <fperez@colorado.edu>
4643 2002-05-06 Fernando Perez <fperez@colorado.edu>
4638
4644
4639 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4645 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4640 introduced); 'hist n1 n2' was broken.
4646 introduced); 'hist n1 n2' was broken.
4641 (Magic.magic_pdb): added optional on/off arguments to @pdb
4647 (Magic.magic_pdb): added optional on/off arguments to @pdb
4642 (Magic.magic_run): added option -i to @run, which executes code in
4648 (Magic.magic_run): added option -i to @run, which executes code in
4643 the IPython namespace instead of a clean one. Also added @irun as
4649 the IPython namespace instead of a clean one. Also added @irun as
4644 an alias to @run -i.
4650 an alias to @run -i.
4645
4651
4646 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4652 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4647 fixed (it didn't really do anything, the namespaces were wrong).
4653 fixed (it didn't really do anything, the namespaces were wrong).
4648
4654
4649 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4655 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4650
4656
4651 * IPython/__init__.py (__all__): Fixed package namespace, now
4657 * IPython/__init__.py (__all__): Fixed package namespace, now
4652 'import IPython' does give access to IPython.<all> as
4658 'import IPython' does give access to IPython.<all> as
4653 expected. Also renamed __release__ to Release.
4659 expected. Also renamed __release__ to Release.
4654
4660
4655 * IPython/Debugger.py (__license__): created new Pdb class which
4661 * IPython/Debugger.py (__license__): created new Pdb class which
4656 functions like a drop-in for the normal pdb.Pdb but does NOT
4662 functions like a drop-in for the normal pdb.Pdb but does NOT
4657 import readline by default. This way it doesn't muck up IPython's
4663 import readline by default. This way it doesn't muck up IPython's
4658 readline handling, and now tab-completion finally works in the
4664 readline handling, and now tab-completion finally works in the
4659 debugger -- sort of. It completes things globally visible, but the
4665 debugger -- sort of. It completes things globally visible, but the
4660 completer doesn't track the stack as pdb walks it. That's a bit
4666 completer doesn't track the stack as pdb walks it. That's a bit
4661 tricky, and I'll have to implement it later.
4667 tricky, and I'll have to implement it later.
4662
4668
4663 2002-05-05 Fernando Perez <fperez@colorado.edu>
4669 2002-05-05 Fernando Perez <fperez@colorado.edu>
4664
4670
4665 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4671 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4666 magic docstrings when printed via ? (explicit \'s were being
4672 magic docstrings when printed via ? (explicit \'s were being
4667 printed).
4673 printed).
4668
4674
4669 * IPython/ipmaker.py (make_IPython): fixed namespace
4675 * IPython/ipmaker.py (make_IPython): fixed namespace
4670 identification bug. Now variables loaded via logs or command-line
4676 identification bug. Now variables loaded via logs or command-line
4671 files are recognized in the interactive namespace by @who.
4677 files are recognized in the interactive namespace by @who.
4672
4678
4673 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4679 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4674 log replay system stemming from the string form of Structs.
4680 log replay system stemming from the string form of Structs.
4675
4681
4676 * IPython/Magic.py (Macro.__init__): improved macros to properly
4682 * IPython/Magic.py (Macro.__init__): improved macros to properly
4677 handle magic commands in them.
4683 handle magic commands in them.
4678 (Magic.magic_logstart): usernames are now expanded so 'logstart
4684 (Magic.magic_logstart): usernames are now expanded so 'logstart
4679 ~/mylog' now works.
4685 ~/mylog' now works.
4680
4686
4681 * IPython/iplib.py (complete): fixed bug where paths starting with
4687 * IPython/iplib.py (complete): fixed bug where paths starting with
4682 '/' would be completed as magic names.
4688 '/' would be completed as magic names.
4683
4689
4684 2002-05-04 Fernando Perez <fperez@colorado.edu>
4690 2002-05-04 Fernando Perez <fperez@colorado.edu>
4685
4691
4686 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4692 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4687 allow running full programs under the profiler's control.
4693 allow running full programs under the profiler's control.
4688
4694
4689 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4695 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4690 mode to report exceptions verbosely but without formatting
4696 mode to report exceptions verbosely but without formatting
4691 variables. This addresses the issue of ipython 'freezing' (it's
4697 variables. This addresses the issue of ipython 'freezing' (it's
4692 not frozen, but caught in an expensive formatting loop) when huge
4698 not frozen, but caught in an expensive formatting loop) when huge
4693 variables are in the context of an exception.
4699 variables are in the context of an exception.
4694 (VerboseTB.text): Added '--->' markers at line where exception was
4700 (VerboseTB.text): Added '--->' markers at line where exception was
4695 triggered. Much clearer to read, especially in NoColor modes.
4701 triggered. Much clearer to read, especially in NoColor modes.
4696
4702
4697 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4703 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4698 implemented in reverse when changing to the new parse_options().
4704 implemented in reverse when changing to the new parse_options().
4699
4705
4700 2002-05-03 Fernando Perez <fperez@colorado.edu>
4706 2002-05-03 Fernando Perez <fperez@colorado.edu>
4701
4707
4702 * IPython/Magic.py (Magic.parse_options): new function so that
4708 * IPython/Magic.py (Magic.parse_options): new function so that
4703 magics can parse options easier.
4709 magics can parse options easier.
4704 (Magic.magic_prun): new function similar to profile.run(),
4710 (Magic.magic_prun): new function similar to profile.run(),
4705 suggested by Chris Hart.
4711 suggested by Chris Hart.
4706 (Magic.magic_cd): fixed behavior so that it only changes if
4712 (Magic.magic_cd): fixed behavior so that it only changes if
4707 directory actually is in history.
4713 directory actually is in history.
4708
4714
4709 * IPython/usage.py (__doc__): added information about potential
4715 * IPython/usage.py (__doc__): added information about potential
4710 slowness of Verbose exception mode when there are huge data
4716 slowness of Verbose exception mode when there are huge data
4711 structures to be formatted (thanks to Archie Paulson).
4717 structures to be formatted (thanks to Archie Paulson).
4712
4718
4713 * IPython/ipmaker.py (make_IPython): Changed default logging
4719 * IPython/ipmaker.py (make_IPython): Changed default logging
4714 (when simply called with -log) to use curr_dir/ipython.log in
4720 (when simply called with -log) to use curr_dir/ipython.log in
4715 rotate mode. Fixed crash which was occuring with -log before
4721 rotate mode. Fixed crash which was occuring with -log before
4716 (thanks to Jim Boyle).
4722 (thanks to Jim Boyle).
4717
4723
4718 2002-05-01 Fernando Perez <fperez@colorado.edu>
4724 2002-05-01 Fernando Perez <fperez@colorado.edu>
4719
4725
4720 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4726 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4721 was nasty -- though somewhat of a corner case).
4727 was nasty -- though somewhat of a corner case).
4722
4728
4723 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4729 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4724 text (was a bug).
4730 text (was a bug).
4725
4731
4726 2002-04-30 Fernando Perez <fperez@colorado.edu>
4732 2002-04-30 Fernando Perez <fperez@colorado.edu>
4727
4733
4728 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4734 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4729 a print after ^D or ^C from the user so that the In[] prompt
4735 a print after ^D or ^C from the user so that the In[] prompt
4730 doesn't over-run the gnuplot one.
4736 doesn't over-run the gnuplot one.
4731
4737
4732 2002-04-29 Fernando Perez <fperez@colorado.edu>
4738 2002-04-29 Fernando Perez <fperez@colorado.edu>
4733
4739
4734 * Released 0.2.10
4740 * Released 0.2.10
4735
4741
4736 * IPython/__release__.py (version): get date dynamically.
4742 * IPython/__release__.py (version): get date dynamically.
4737
4743
4738 * Misc. documentation updates thanks to Arnd's comments. Also ran
4744 * Misc. documentation updates thanks to Arnd's comments. Also ran
4739 a full spellcheck on the manual (hadn't been done in a while).
4745 a full spellcheck on the manual (hadn't been done in a while).
4740
4746
4741 2002-04-27 Fernando Perez <fperez@colorado.edu>
4747 2002-04-27 Fernando Perez <fperez@colorado.edu>
4742
4748
4743 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4749 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4744 starting a log in mid-session would reset the input history list.
4750 starting a log in mid-session would reset the input history list.
4745
4751
4746 2002-04-26 Fernando Perez <fperez@colorado.edu>
4752 2002-04-26 Fernando Perez <fperez@colorado.edu>
4747
4753
4748 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4754 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4749 all files were being included in an update. Now anything in
4755 all files were being included in an update. Now anything in
4750 UserConfig that matches [A-Za-z]*.py will go (this excludes
4756 UserConfig that matches [A-Za-z]*.py will go (this excludes
4751 __init__.py)
4757 __init__.py)
4752
4758
4753 2002-04-25 Fernando Perez <fperez@colorado.edu>
4759 2002-04-25 Fernando Perez <fperez@colorado.edu>
4754
4760
4755 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4761 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4756 to __builtins__ so that any form of embedded or imported code can
4762 to __builtins__ so that any form of embedded or imported code can
4757 test for being inside IPython.
4763 test for being inside IPython.
4758
4764
4759 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4765 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4760 changed to GnuplotMagic because it's now an importable module,
4766 changed to GnuplotMagic because it's now an importable module,
4761 this makes the name follow that of the standard Gnuplot module.
4767 this makes the name follow that of the standard Gnuplot module.
4762 GnuplotMagic can now be loaded at any time in mid-session.
4768 GnuplotMagic can now be loaded at any time in mid-session.
4763
4769
4764 2002-04-24 Fernando Perez <fperez@colorado.edu>
4770 2002-04-24 Fernando Perez <fperez@colorado.edu>
4765
4771
4766 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4772 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4767 the globals (IPython has its own namespace) and the
4773 the globals (IPython has its own namespace) and the
4768 PhysicalQuantity stuff is much better anyway.
4774 PhysicalQuantity stuff is much better anyway.
4769
4775
4770 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4776 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4771 embedding example to standard user directory for
4777 embedding example to standard user directory for
4772 distribution. Also put it in the manual.
4778 distribution. Also put it in the manual.
4773
4779
4774 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4780 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4775 instance as first argument (so it doesn't rely on some obscure
4781 instance as first argument (so it doesn't rely on some obscure
4776 hidden global).
4782 hidden global).
4777
4783
4778 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4784 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4779 delimiters. While it prevents ().TAB from working, it allows
4785 delimiters. While it prevents ().TAB from working, it allows
4780 completions in open (... expressions. This is by far a more common
4786 completions in open (... expressions. This is by far a more common
4781 case.
4787 case.
4782
4788
4783 2002-04-23 Fernando Perez <fperez@colorado.edu>
4789 2002-04-23 Fernando Perez <fperez@colorado.edu>
4784
4790
4785 * IPython/Extensions/InterpreterPasteInput.py: new
4791 * IPython/Extensions/InterpreterPasteInput.py: new
4786 syntax-processing module for pasting lines with >>> or ... at the
4792 syntax-processing module for pasting lines with >>> or ... at the
4787 start.
4793 start.
4788
4794
4789 * IPython/Extensions/PhysicalQ_Interactive.py
4795 * IPython/Extensions/PhysicalQ_Interactive.py
4790 (PhysicalQuantityInteractive.__int__): fixed to work with either
4796 (PhysicalQuantityInteractive.__int__): fixed to work with either
4791 Numeric or math.
4797 Numeric or math.
4792
4798
4793 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4799 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4794 provided profiles. Now we have:
4800 provided profiles. Now we have:
4795 -math -> math module as * and cmath with its own namespace.
4801 -math -> math module as * and cmath with its own namespace.
4796 -numeric -> Numeric as *, plus gnuplot & grace
4802 -numeric -> Numeric as *, plus gnuplot & grace
4797 -physics -> same as before
4803 -physics -> same as before
4798
4804
4799 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4805 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4800 user-defined magics wouldn't be found by @magic if they were
4806 user-defined magics wouldn't be found by @magic if they were
4801 defined as class methods. Also cleaned up the namespace search
4807 defined as class methods. Also cleaned up the namespace search
4802 logic and the string building (to use %s instead of many repeated
4808 logic and the string building (to use %s instead of many repeated
4803 string adds).
4809 string adds).
4804
4810
4805 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4811 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4806 of user-defined magics to operate with class methods (cleaner, in
4812 of user-defined magics to operate with class methods (cleaner, in
4807 line with the gnuplot code).
4813 line with the gnuplot code).
4808
4814
4809 2002-04-22 Fernando Perez <fperez@colorado.edu>
4815 2002-04-22 Fernando Perez <fperez@colorado.edu>
4810
4816
4811 * setup.py: updated dependency list so that manual is updated when
4817 * setup.py: updated dependency list so that manual is updated when
4812 all included files change.
4818 all included files change.
4813
4819
4814 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4820 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4815 the delimiter removal option (the fix is ugly right now).
4821 the delimiter removal option (the fix is ugly right now).
4816
4822
4817 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4823 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4818 all of the math profile (quicker loading, no conflict between
4824 all of the math profile (quicker loading, no conflict between
4819 g-9.8 and g-gnuplot).
4825 g-9.8 and g-gnuplot).
4820
4826
4821 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4827 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4822 name of post-mortem files to IPython_crash_report.txt.
4828 name of post-mortem files to IPython_crash_report.txt.
4823
4829
4824 * Cleanup/update of the docs. Added all the new readline info and
4830 * Cleanup/update of the docs. Added all the new readline info and
4825 formatted all lists as 'real lists'.
4831 formatted all lists as 'real lists'.
4826
4832
4827 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4833 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4828 tab-completion options, since the full readline parse_and_bind is
4834 tab-completion options, since the full readline parse_and_bind is
4829 now accessible.
4835 now accessible.
4830
4836
4831 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4837 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4832 handling of readline options. Now users can specify any string to
4838 handling of readline options. Now users can specify any string to
4833 be passed to parse_and_bind(), as well as the delimiters to be
4839 be passed to parse_and_bind(), as well as the delimiters to be
4834 removed.
4840 removed.
4835 (InteractiveShell.__init__): Added __name__ to the global
4841 (InteractiveShell.__init__): Added __name__ to the global
4836 namespace so that things like Itpl which rely on its existence
4842 namespace so that things like Itpl which rely on its existence
4837 don't crash.
4843 don't crash.
4838 (InteractiveShell._prefilter): Defined the default with a _ so
4844 (InteractiveShell._prefilter): Defined the default with a _ so
4839 that prefilter() is easier to override, while the default one
4845 that prefilter() is easier to override, while the default one
4840 remains available.
4846 remains available.
4841
4847
4842 2002-04-18 Fernando Perez <fperez@colorado.edu>
4848 2002-04-18 Fernando Perez <fperez@colorado.edu>
4843
4849
4844 * Added information about pdb in the docs.
4850 * Added information about pdb in the docs.
4845
4851
4846 2002-04-17 Fernando Perez <fperez@colorado.edu>
4852 2002-04-17 Fernando Perez <fperez@colorado.edu>
4847
4853
4848 * IPython/ipmaker.py (make_IPython): added rc_override option to
4854 * IPython/ipmaker.py (make_IPython): added rc_override option to
4849 allow passing config options at creation time which may override
4855 allow passing config options at creation time which may override
4850 anything set in the config files or command line. This is
4856 anything set in the config files or command line. This is
4851 particularly useful for configuring embedded instances.
4857 particularly useful for configuring embedded instances.
4852
4858
4853 2002-04-15 Fernando Perez <fperez@colorado.edu>
4859 2002-04-15 Fernando Perez <fperez@colorado.edu>
4854
4860
4855 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4861 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4856 crash embedded instances because of the input cache falling out of
4862 crash embedded instances because of the input cache falling out of
4857 sync with the output counter.
4863 sync with the output counter.
4858
4864
4859 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4865 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4860 mode which calls pdb after an uncaught exception in IPython itself.
4866 mode which calls pdb after an uncaught exception in IPython itself.
4861
4867
4862 2002-04-14 Fernando Perez <fperez@colorado.edu>
4868 2002-04-14 Fernando Perez <fperez@colorado.edu>
4863
4869
4864 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4870 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4865 readline, fix it back after each call.
4871 readline, fix it back after each call.
4866
4872
4867 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4873 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4868 method to force all access via __call__(), which guarantees that
4874 method to force all access via __call__(), which guarantees that
4869 traceback references are properly deleted.
4875 traceback references are properly deleted.
4870
4876
4871 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4877 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4872 improve printing when pprint is in use.
4878 improve printing when pprint is in use.
4873
4879
4874 2002-04-13 Fernando Perez <fperez@colorado.edu>
4880 2002-04-13 Fernando Perez <fperez@colorado.edu>
4875
4881
4876 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4882 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4877 exceptions aren't caught anymore. If the user triggers one, he
4883 exceptions aren't caught anymore. If the user triggers one, he
4878 should know why he's doing it and it should go all the way up,
4884 should know why he's doing it and it should go all the way up,
4879 just like any other exception. So now @abort will fully kill the
4885 just like any other exception. So now @abort will fully kill the
4880 embedded interpreter and the embedding code (unless that happens
4886 embedded interpreter and the embedding code (unless that happens
4881 to catch SystemExit).
4887 to catch SystemExit).
4882
4888
4883 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4889 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4884 and a debugger() method to invoke the interactive pdb debugger
4890 and a debugger() method to invoke the interactive pdb debugger
4885 after printing exception information. Also added the corresponding
4891 after printing exception information. Also added the corresponding
4886 -pdb option and @pdb magic to control this feature, and updated
4892 -pdb option and @pdb magic to control this feature, and updated
4887 the docs. After a suggestion from Christopher Hart
4893 the docs. After a suggestion from Christopher Hart
4888 (hart-AT-caltech.edu).
4894 (hart-AT-caltech.edu).
4889
4895
4890 2002-04-12 Fernando Perez <fperez@colorado.edu>
4896 2002-04-12 Fernando Perez <fperez@colorado.edu>
4891
4897
4892 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4898 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4893 the exception handlers defined by the user (not the CrashHandler)
4899 the exception handlers defined by the user (not the CrashHandler)
4894 so that user exceptions don't trigger an ipython bug report.
4900 so that user exceptions don't trigger an ipython bug report.
4895
4901
4896 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4902 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4897 configurable (it should have always been so).
4903 configurable (it should have always been so).
4898
4904
4899 2002-03-26 Fernando Perez <fperez@colorado.edu>
4905 2002-03-26 Fernando Perez <fperez@colorado.edu>
4900
4906
4901 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4907 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4902 and there to fix embedding namespace issues. This should all be
4908 and there to fix embedding namespace issues. This should all be
4903 done in a more elegant way.
4909 done in a more elegant way.
4904
4910
4905 2002-03-25 Fernando Perez <fperez@colorado.edu>
4911 2002-03-25 Fernando Perez <fperez@colorado.edu>
4906
4912
4907 * IPython/genutils.py (get_home_dir): Try to make it work under
4913 * IPython/genutils.py (get_home_dir): Try to make it work under
4908 win9x also.
4914 win9x also.
4909
4915
4910 2002-03-20 Fernando Perez <fperez@colorado.edu>
4916 2002-03-20 Fernando Perez <fperez@colorado.edu>
4911
4917
4912 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4918 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4913 sys.displayhook untouched upon __init__.
4919 sys.displayhook untouched upon __init__.
4914
4920
4915 2002-03-19 Fernando Perez <fperez@colorado.edu>
4921 2002-03-19 Fernando Perez <fperez@colorado.edu>
4916
4922
4917 * Released 0.2.9 (for embedding bug, basically).
4923 * Released 0.2.9 (for embedding bug, basically).
4918
4924
4919 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4925 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4920 exceptions so that enclosing shell's state can be restored.
4926 exceptions so that enclosing shell's state can be restored.
4921
4927
4922 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4928 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4923 naming conventions in the .ipython/ dir.
4929 naming conventions in the .ipython/ dir.
4924
4930
4925 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4931 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4926 from delimiters list so filenames with - in them get expanded.
4932 from delimiters list so filenames with - in them get expanded.
4927
4933
4928 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4934 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4929 sys.displayhook not being properly restored after an embedded call.
4935 sys.displayhook not being properly restored after an embedded call.
4930
4936
4931 2002-03-18 Fernando Perez <fperez@colorado.edu>
4937 2002-03-18 Fernando Perez <fperez@colorado.edu>
4932
4938
4933 * Released 0.2.8
4939 * Released 0.2.8
4934
4940
4935 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4941 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4936 some files weren't being included in a -upgrade.
4942 some files weren't being included in a -upgrade.
4937 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4943 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4938 on' so that the first tab completes.
4944 on' so that the first tab completes.
4939 (InteractiveShell.handle_magic): fixed bug with spaces around
4945 (InteractiveShell.handle_magic): fixed bug with spaces around
4940 quotes breaking many magic commands.
4946 quotes breaking many magic commands.
4941
4947
4942 * setup.py: added note about ignoring the syntax error messages at
4948 * setup.py: added note about ignoring the syntax error messages at
4943 installation.
4949 installation.
4944
4950
4945 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4951 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4946 streamlining the gnuplot interface, now there's only one magic @gp.
4952 streamlining the gnuplot interface, now there's only one magic @gp.
4947
4953
4948 2002-03-17 Fernando Perez <fperez@colorado.edu>
4954 2002-03-17 Fernando Perez <fperez@colorado.edu>
4949
4955
4950 * IPython/UserConfig/magic_gnuplot.py: new name for the
4956 * IPython/UserConfig/magic_gnuplot.py: new name for the
4951 example-magic_pm.py file. Much enhanced system, now with a shell
4957 example-magic_pm.py file. Much enhanced system, now with a shell
4952 for communicating directly with gnuplot, one command at a time.
4958 for communicating directly with gnuplot, one command at a time.
4953
4959
4954 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4960 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4955 setting __name__=='__main__'.
4961 setting __name__=='__main__'.
4956
4962
4957 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4963 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4958 mini-shell for accessing gnuplot from inside ipython. Should
4964 mini-shell for accessing gnuplot from inside ipython. Should
4959 extend it later for grace access too. Inspired by Arnd's
4965 extend it later for grace access too. Inspired by Arnd's
4960 suggestion.
4966 suggestion.
4961
4967
4962 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4968 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4963 calling magic functions with () in their arguments. Thanks to Arnd
4969 calling magic functions with () in their arguments. Thanks to Arnd
4964 Baecker for pointing this to me.
4970 Baecker for pointing this to me.
4965
4971
4966 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4972 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4967 infinitely for integer or complex arrays (only worked with floats).
4973 infinitely for integer or complex arrays (only worked with floats).
4968
4974
4969 2002-03-16 Fernando Perez <fperez@colorado.edu>
4975 2002-03-16 Fernando Perez <fperez@colorado.edu>
4970
4976
4971 * setup.py: Merged setup and setup_windows into a single script
4977 * setup.py: Merged setup and setup_windows into a single script
4972 which properly handles things for windows users.
4978 which properly handles things for windows users.
4973
4979
4974 2002-03-15 Fernando Perez <fperez@colorado.edu>
4980 2002-03-15 Fernando Perez <fperez@colorado.edu>
4975
4981
4976 * Big change to the manual: now the magics are all automatically
4982 * Big change to the manual: now the magics are all automatically
4977 documented. This information is generated from their docstrings
4983 documented. This information is generated from their docstrings
4978 and put in a latex file included by the manual lyx file. This way
4984 and put in a latex file included by the manual lyx file. This way
4979 we get always up to date information for the magics. The manual
4985 we get always up to date information for the magics. The manual
4980 now also has proper version information, also auto-synced.
4986 now also has proper version information, also auto-synced.
4981
4987
4982 For this to work, an undocumented --magic_docstrings option was added.
4988 For this to work, an undocumented --magic_docstrings option was added.
4983
4989
4984 2002-03-13 Fernando Perez <fperez@colorado.edu>
4990 2002-03-13 Fernando Perez <fperez@colorado.edu>
4985
4991
4986 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4992 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4987 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4993 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4988
4994
4989 2002-03-12 Fernando Perez <fperez@colorado.edu>
4995 2002-03-12 Fernando Perez <fperez@colorado.edu>
4990
4996
4991 * IPython/ultraTB.py (TermColors): changed color escapes again to
4997 * IPython/ultraTB.py (TermColors): changed color escapes again to
4992 fix the (old, reintroduced) line-wrapping bug. Basically, if
4998 fix the (old, reintroduced) line-wrapping bug. Basically, if
4993 \001..\002 aren't given in the color escapes, lines get wrapped
4999 \001..\002 aren't given in the color escapes, lines get wrapped
4994 weirdly. But giving those screws up old xterms and emacs terms. So
5000 weirdly. But giving those screws up old xterms and emacs terms. So
4995 I added some logic for emacs terms to be ok, but I can't identify old
5001 I added some logic for emacs terms to be ok, but I can't identify old
4996 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5002 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4997
5003
4998 2002-03-10 Fernando Perez <fperez@colorado.edu>
5004 2002-03-10 Fernando Perez <fperez@colorado.edu>
4999
5005
5000 * IPython/usage.py (__doc__): Various documentation cleanups and
5006 * IPython/usage.py (__doc__): Various documentation cleanups and
5001 updates, both in usage docstrings and in the manual.
5007 updates, both in usage docstrings and in the manual.
5002
5008
5003 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5009 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5004 handling of caching. Set minimum acceptabe value for having a
5010 handling of caching. Set minimum acceptabe value for having a
5005 cache at 20 values.
5011 cache at 20 values.
5006
5012
5007 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5013 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5008 install_first_time function to a method, renamed it and added an
5014 install_first_time function to a method, renamed it and added an
5009 'upgrade' mode. Now people can update their config directory with
5015 'upgrade' mode. Now people can update their config directory with
5010 a simple command line switch (-upgrade, also new).
5016 a simple command line switch (-upgrade, also new).
5011
5017
5012 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5018 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5013 @file (convenient for automagic users under Python >= 2.2).
5019 @file (convenient for automagic users under Python >= 2.2).
5014 Removed @files (it seemed more like a plural than an abbrev. of
5020 Removed @files (it seemed more like a plural than an abbrev. of
5015 'file show').
5021 'file show').
5016
5022
5017 * IPython/iplib.py (install_first_time): Fixed crash if there were
5023 * IPython/iplib.py (install_first_time): Fixed crash if there were
5018 backup files ('~') in .ipython/ install directory.
5024 backup files ('~') in .ipython/ install directory.
5019
5025
5020 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5026 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5021 system. Things look fine, but these changes are fairly
5027 system. Things look fine, but these changes are fairly
5022 intrusive. Test them for a few days.
5028 intrusive. Test them for a few days.
5023
5029
5024 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5030 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5025 the prompts system. Now all in/out prompt strings are user
5031 the prompts system. Now all in/out prompt strings are user
5026 controllable. This is particularly useful for embedding, as one
5032 controllable. This is particularly useful for embedding, as one
5027 can tag embedded instances with particular prompts.
5033 can tag embedded instances with particular prompts.
5028
5034
5029 Also removed global use of sys.ps1/2, which now allows nested
5035 Also removed global use of sys.ps1/2, which now allows nested
5030 embeddings without any problems. Added command-line options for
5036 embeddings without any problems. Added command-line options for
5031 the prompt strings.
5037 the prompt strings.
5032
5038
5033 2002-03-08 Fernando Perez <fperez@colorado.edu>
5039 2002-03-08 Fernando Perez <fperez@colorado.edu>
5034
5040
5035 * IPython/UserConfig/example-embed-short.py (ipshell): added
5041 * IPython/UserConfig/example-embed-short.py (ipshell): added
5036 example file with the bare minimum code for embedding.
5042 example file with the bare minimum code for embedding.
5037
5043
5038 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5044 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5039 functionality for the embeddable shell to be activated/deactivated
5045 functionality for the embeddable shell to be activated/deactivated
5040 either globally or at each call.
5046 either globally or at each call.
5041
5047
5042 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5048 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5043 rewriting the prompt with '--->' for auto-inputs with proper
5049 rewriting the prompt with '--->' for auto-inputs with proper
5044 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5050 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5045 this is handled by the prompts class itself, as it should.
5051 this is handled by the prompts class itself, as it should.
5046
5052
5047 2002-03-05 Fernando Perez <fperez@colorado.edu>
5053 2002-03-05 Fernando Perez <fperez@colorado.edu>
5048
5054
5049 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5055 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5050 @logstart to avoid name clashes with the math log function.
5056 @logstart to avoid name clashes with the math log function.
5051
5057
5052 * Big updates to X/Emacs section of the manual.
5058 * Big updates to X/Emacs section of the manual.
5053
5059
5054 * Removed ipython_emacs. Milan explained to me how to pass
5060 * Removed ipython_emacs. Milan explained to me how to pass
5055 arguments to ipython through Emacs. Some day I'm going to end up
5061 arguments to ipython through Emacs. Some day I'm going to end up
5056 learning some lisp...
5062 learning some lisp...
5057
5063
5058 2002-03-04 Fernando Perez <fperez@colorado.edu>
5064 2002-03-04 Fernando Perez <fperez@colorado.edu>
5059
5065
5060 * IPython/ipython_emacs: Created script to be used as the
5066 * IPython/ipython_emacs: Created script to be used as the
5061 py-python-command Emacs variable so we can pass IPython
5067 py-python-command Emacs variable so we can pass IPython
5062 parameters. I can't figure out how to tell Emacs directly to pass
5068 parameters. I can't figure out how to tell Emacs directly to pass
5063 parameters to IPython, so a dummy shell script will do it.
5069 parameters to IPython, so a dummy shell script will do it.
5064
5070
5065 Other enhancements made for things to work better under Emacs'
5071 Other enhancements made for things to work better under Emacs'
5066 various types of terminals. Many thanks to Milan Zamazal
5072 various types of terminals. Many thanks to Milan Zamazal
5067 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5073 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5068
5074
5069 2002-03-01 Fernando Perez <fperez@colorado.edu>
5075 2002-03-01 Fernando Perez <fperez@colorado.edu>
5070
5076
5071 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5077 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5072 that loading of readline is now optional. This gives better
5078 that loading of readline is now optional. This gives better
5073 control to emacs users.
5079 control to emacs users.
5074
5080
5075 * IPython/ultraTB.py (__date__): Modified color escape sequences
5081 * IPython/ultraTB.py (__date__): Modified color escape sequences
5076 and now things work fine under xterm and in Emacs' term buffers
5082 and now things work fine under xterm and in Emacs' term buffers
5077 (though not shell ones). Well, in emacs you get colors, but all
5083 (though not shell ones). Well, in emacs you get colors, but all
5078 seem to be 'light' colors (no difference between dark and light
5084 seem to be 'light' colors (no difference between dark and light
5079 ones). But the garbage chars are gone, and also in xterms. It
5085 ones). But the garbage chars are gone, and also in xterms. It
5080 seems that now I'm using 'cleaner' ansi sequences.
5086 seems that now I'm using 'cleaner' ansi sequences.
5081
5087
5082 2002-02-21 Fernando Perez <fperez@colorado.edu>
5088 2002-02-21 Fernando Perez <fperez@colorado.edu>
5083
5089
5084 * Released 0.2.7 (mainly to publish the scoping fix).
5090 * Released 0.2.7 (mainly to publish the scoping fix).
5085
5091
5086 * IPython/Logger.py (Logger.logstate): added. A corresponding
5092 * IPython/Logger.py (Logger.logstate): added. A corresponding
5087 @logstate magic was created.
5093 @logstate magic was created.
5088
5094
5089 * IPython/Magic.py: fixed nested scoping problem under Python
5095 * IPython/Magic.py: fixed nested scoping problem under Python
5090 2.1.x (automagic wasn't working).
5096 2.1.x (automagic wasn't working).
5091
5097
5092 2002-02-20 Fernando Perez <fperez@colorado.edu>
5098 2002-02-20 Fernando Perez <fperez@colorado.edu>
5093
5099
5094 * Released 0.2.6.
5100 * Released 0.2.6.
5095
5101
5096 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5102 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5097 option so that logs can come out without any headers at all.
5103 option so that logs can come out without any headers at all.
5098
5104
5099 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5105 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5100 SciPy.
5106 SciPy.
5101
5107
5102 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5108 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5103 that embedded IPython calls don't require vars() to be explicitly
5109 that embedded IPython calls don't require vars() to be explicitly
5104 passed. Now they are extracted from the caller's frame (code
5110 passed. Now they are extracted from the caller's frame (code
5105 snatched from Eric Jones' weave). Added better documentation to
5111 snatched from Eric Jones' weave). Added better documentation to
5106 the section on embedding and the example file.
5112 the section on embedding and the example file.
5107
5113
5108 * IPython/genutils.py (page): Changed so that under emacs, it just
5114 * IPython/genutils.py (page): Changed so that under emacs, it just
5109 prints the string. You can then page up and down in the emacs
5115 prints the string. You can then page up and down in the emacs
5110 buffer itself. This is how the builtin help() works.
5116 buffer itself. This is how the builtin help() works.
5111
5117
5112 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5118 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5113 macro scoping: macros need to be executed in the user's namespace
5119 macro scoping: macros need to be executed in the user's namespace
5114 to work as if they had been typed by the user.
5120 to work as if they had been typed by the user.
5115
5121
5116 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5122 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5117 execute automatically (no need to type 'exec...'). They then
5123 execute automatically (no need to type 'exec...'). They then
5118 behave like 'true macros'. The printing system was also modified
5124 behave like 'true macros'. The printing system was also modified
5119 for this to work.
5125 for this to work.
5120
5126
5121 2002-02-19 Fernando Perez <fperez@colorado.edu>
5127 2002-02-19 Fernando Perez <fperez@colorado.edu>
5122
5128
5123 * IPython/genutils.py (page_file): new function for paging files
5129 * IPython/genutils.py (page_file): new function for paging files
5124 in an OS-independent way. Also necessary for file viewing to work
5130 in an OS-independent way. Also necessary for file viewing to work
5125 well inside Emacs buffers.
5131 well inside Emacs buffers.
5126 (page): Added checks for being in an emacs buffer.
5132 (page): Added checks for being in an emacs buffer.
5127 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5133 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5128 same bug in iplib.
5134 same bug in iplib.
5129
5135
5130 2002-02-18 Fernando Perez <fperez@colorado.edu>
5136 2002-02-18 Fernando Perez <fperez@colorado.edu>
5131
5137
5132 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5138 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5133 of readline so that IPython can work inside an Emacs buffer.
5139 of readline so that IPython can work inside an Emacs buffer.
5134
5140
5135 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5141 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5136 method signatures (they weren't really bugs, but it looks cleaner
5142 method signatures (they weren't really bugs, but it looks cleaner
5137 and keeps PyChecker happy).
5143 and keeps PyChecker happy).
5138
5144
5139 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5145 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5140 for implementing various user-defined hooks. Currently only
5146 for implementing various user-defined hooks. Currently only
5141 display is done.
5147 display is done.
5142
5148
5143 * IPython/Prompts.py (CachedOutput._display): changed display
5149 * IPython/Prompts.py (CachedOutput._display): changed display
5144 functions so that they can be dynamically changed by users easily.
5150 functions so that they can be dynamically changed by users easily.
5145
5151
5146 * IPython/Extensions/numeric_formats.py (num_display): added an
5152 * IPython/Extensions/numeric_formats.py (num_display): added an
5147 extension for printing NumPy arrays in flexible manners. It
5153 extension for printing NumPy arrays in flexible manners. It
5148 doesn't do anything yet, but all the structure is in
5154 doesn't do anything yet, but all the structure is in
5149 place. Ultimately the plan is to implement output format control
5155 place. Ultimately the plan is to implement output format control
5150 like in Octave.
5156 like in Octave.
5151
5157
5152 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5158 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5153 methods are found at run-time by all the automatic machinery.
5159 methods are found at run-time by all the automatic machinery.
5154
5160
5155 2002-02-17 Fernando Perez <fperez@colorado.edu>
5161 2002-02-17 Fernando Perez <fperez@colorado.edu>
5156
5162
5157 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5163 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5158 whole file a little.
5164 whole file a little.
5159
5165
5160 * ToDo: closed this document. Now there's a new_design.lyx
5166 * ToDo: closed this document. Now there's a new_design.lyx
5161 document for all new ideas. Added making a pdf of it for the
5167 document for all new ideas. Added making a pdf of it for the
5162 end-user distro.
5168 end-user distro.
5163
5169
5164 * IPython/Logger.py (Logger.switch_log): Created this to replace
5170 * IPython/Logger.py (Logger.switch_log): Created this to replace
5165 logon() and logoff(). It also fixes a nasty crash reported by
5171 logon() and logoff(). It also fixes a nasty crash reported by
5166 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5172 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5167
5173
5168 * IPython/iplib.py (complete): got auto-completion to work with
5174 * IPython/iplib.py (complete): got auto-completion to work with
5169 automagic (I had wanted this for a long time).
5175 automagic (I had wanted this for a long time).
5170
5176
5171 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5177 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5172 to @file, since file() is now a builtin and clashes with automagic
5178 to @file, since file() is now a builtin and clashes with automagic
5173 for @file.
5179 for @file.
5174
5180
5175 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5181 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5176 of this was previously in iplib, which had grown to more than 2000
5182 of this was previously in iplib, which had grown to more than 2000
5177 lines, way too long. No new functionality, but it makes managing
5183 lines, way too long. No new functionality, but it makes managing
5178 the code a bit easier.
5184 the code a bit easier.
5179
5185
5180 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5186 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5181 information to crash reports.
5187 information to crash reports.
5182
5188
5183 2002-02-12 Fernando Perez <fperez@colorado.edu>
5189 2002-02-12 Fernando Perez <fperez@colorado.edu>
5184
5190
5185 * Released 0.2.5.
5191 * Released 0.2.5.
5186
5192
5187 2002-02-11 Fernando Perez <fperez@colorado.edu>
5193 2002-02-11 Fernando Perez <fperez@colorado.edu>
5188
5194
5189 * Wrote a relatively complete Windows installer. It puts
5195 * Wrote a relatively complete Windows installer. It puts
5190 everything in place, creates Start Menu entries and fixes the
5196 everything in place, creates Start Menu entries and fixes the
5191 color issues. Nothing fancy, but it works.
5197 color issues. Nothing fancy, but it works.
5192
5198
5193 2002-02-10 Fernando Perez <fperez@colorado.edu>
5199 2002-02-10 Fernando Perez <fperez@colorado.edu>
5194
5200
5195 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5201 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5196 os.path.expanduser() call so that we can type @run ~/myfile.py and
5202 os.path.expanduser() call so that we can type @run ~/myfile.py and
5197 have thigs work as expected.
5203 have thigs work as expected.
5198
5204
5199 * IPython/genutils.py (page): fixed exception handling so things
5205 * IPython/genutils.py (page): fixed exception handling so things
5200 work both in Unix and Windows correctly. Quitting a pager triggers
5206 work both in Unix and Windows correctly. Quitting a pager triggers
5201 an IOError/broken pipe in Unix, and in windows not finding a pager
5207 an IOError/broken pipe in Unix, and in windows not finding a pager
5202 is also an IOError, so I had to actually look at the return value
5208 is also an IOError, so I had to actually look at the return value
5203 of the exception, not just the exception itself. Should be ok now.
5209 of the exception, not just the exception itself. Should be ok now.
5204
5210
5205 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5211 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5206 modified to allow case-insensitive color scheme changes.
5212 modified to allow case-insensitive color scheme changes.
5207
5213
5208 2002-02-09 Fernando Perez <fperez@colorado.edu>
5214 2002-02-09 Fernando Perez <fperez@colorado.edu>
5209
5215
5210 * IPython/genutils.py (native_line_ends): new function to leave
5216 * IPython/genutils.py (native_line_ends): new function to leave
5211 user config files with os-native line-endings.
5217 user config files with os-native line-endings.
5212
5218
5213 * README and manual updates.
5219 * README and manual updates.
5214
5220
5215 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5221 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5216 instead of StringType to catch Unicode strings.
5222 instead of StringType to catch Unicode strings.
5217
5223
5218 * IPython/genutils.py (filefind): fixed bug for paths with
5224 * IPython/genutils.py (filefind): fixed bug for paths with
5219 embedded spaces (very common in Windows).
5225 embedded spaces (very common in Windows).
5220
5226
5221 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5227 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5222 files under Windows, so that they get automatically associated
5228 files under Windows, so that they get automatically associated
5223 with a text editor. Windows makes it a pain to handle
5229 with a text editor. Windows makes it a pain to handle
5224 extension-less files.
5230 extension-less files.
5225
5231
5226 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5232 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5227 warning about readline only occur for Posix. In Windows there's no
5233 warning about readline only occur for Posix. In Windows there's no
5228 way to get readline, so why bother with the warning.
5234 way to get readline, so why bother with the warning.
5229
5235
5230 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5236 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5231 for __str__ instead of dir(self), since dir() changed in 2.2.
5237 for __str__ instead of dir(self), since dir() changed in 2.2.
5232
5238
5233 * Ported to Windows! Tested on XP, I suspect it should work fine
5239 * Ported to Windows! Tested on XP, I suspect it should work fine
5234 on NT/2000, but I don't think it will work on 98 et al. That
5240 on NT/2000, but I don't think it will work on 98 et al. That
5235 series of Windows is such a piece of junk anyway that I won't try
5241 series of Windows is such a piece of junk anyway that I won't try
5236 porting it there. The XP port was straightforward, showed a few
5242 porting it there. The XP port was straightforward, showed a few
5237 bugs here and there (fixed all), in particular some string
5243 bugs here and there (fixed all), in particular some string
5238 handling stuff which required considering Unicode strings (which
5244 handling stuff which required considering Unicode strings (which
5239 Windows uses). This is good, but hasn't been too tested :) No
5245 Windows uses). This is good, but hasn't been too tested :) No
5240 fancy installer yet, I'll put a note in the manual so people at
5246 fancy installer yet, I'll put a note in the manual so people at
5241 least make manually a shortcut.
5247 least make manually a shortcut.
5242
5248
5243 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5249 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5244 into a single one, "colors". This now controls both prompt and
5250 into a single one, "colors". This now controls both prompt and
5245 exception color schemes, and can be changed both at startup
5251 exception color schemes, and can be changed both at startup
5246 (either via command-line switches or via ipythonrc files) and at
5252 (either via command-line switches or via ipythonrc files) and at
5247 runtime, with @colors.
5253 runtime, with @colors.
5248 (Magic.magic_run): renamed @prun to @run and removed the old
5254 (Magic.magic_run): renamed @prun to @run and removed the old
5249 @run. The two were too similar to warrant keeping both.
5255 @run. The two were too similar to warrant keeping both.
5250
5256
5251 2002-02-03 Fernando Perez <fperez@colorado.edu>
5257 2002-02-03 Fernando Perez <fperez@colorado.edu>
5252
5258
5253 * IPython/iplib.py (install_first_time): Added comment on how to
5259 * IPython/iplib.py (install_first_time): Added comment on how to
5254 configure the color options for first-time users. Put a <return>
5260 configure the color options for first-time users. Put a <return>
5255 request at the end so that small-terminal users get a chance to
5261 request at the end so that small-terminal users get a chance to
5256 read the startup info.
5262 read the startup info.
5257
5263
5258 2002-01-23 Fernando Perez <fperez@colorado.edu>
5264 2002-01-23 Fernando Perez <fperez@colorado.edu>
5259
5265
5260 * IPython/iplib.py (CachedOutput.update): Changed output memory
5266 * IPython/iplib.py (CachedOutput.update): Changed output memory
5261 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5267 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5262 input history we still use _i. Did this b/c these variable are
5268 input history we still use _i. Did this b/c these variable are
5263 very commonly used in interactive work, so the less we need to
5269 very commonly used in interactive work, so the less we need to
5264 type the better off we are.
5270 type the better off we are.
5265 (Magic.magic_prun): updated @prun to better handle the namespaces
5271 (Magic.magic_prun): updated @prun to better handle the namespaces
5266 the file will run in, including a fix for __name__ not being set
5272 the file will run in, including a fix for __name__ not being set
5267 before.
5273 before.
5268
5274
5269 2002-01-20 Fernando Perez <fperez@colorado.edu>
5275 2002-01-20 Fernando Perez <fperez@colorado.edu>
5270
5276
5271 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5277 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5272 extra garbage for Python 2.2. Need to look more carefully into
5278 extra garbage for Python 2.2. Need to look more carefully into
5273 this later.
5279 this later.
5274
5280
5275 2002-01-19 Fernando Perez <fperez@colorado.edu>
5281 2002-01-19 Fernando Perez <fperez@colorado.edu>
5276
5282
5277 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5283 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5278 display SyntaxError exceptions properly formatted when they occur
5284 display SyntaxError exceptions properly formatted when they occur
5279 (they can be triggered by imported code).
5285 (they can be triggered by imported code).
5280
5286
5281 2002-01-18 Fernando Perez <fperez@colorado.edu>
5287 2002-01-18 Fernando Perez <fperez@colorado.edu>
5282
5288
5283 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5289 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5284 SyntaxError exceptions are reported nicely formatted, instead of
5290 SyntaxError exceptions are reported nicely formatted, instead of
5285 spitting out only offset information as before.
5291 spitting out only offset information as before.
5286 (Magic.magic_prun): Added the @prun function for executing
5292 (Magic.magic_prun): Added the @prun function for executing
5287 programs with command line args inside IPython.
5293 programs with command line args inside IPython.
5288
5294
5289 2002-01-16 Fernando Perez <fperez@colorado.edu>
5295 2002-01-16 Fernando Perez <fperez@colorado.edu>
5290
5296
5291 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5297 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5292 to *not* include the last item given in a range. This brings their
5298 to *not* include the last item given in a range. This brings their
5293 behavior in line with Python's slicing:
5299 behavior in line with Python's slicing:
5294 a[n1:n2] -> a[n1]...a[n2-1]
5300 a[n1:n2] -> a[n1]...a[n2-1]
5295 It may be a bit less convenient, but I prefer to stick to Python's
5301 It may be a bit less convenient, but I prefer to stick to Python's
5296 conventions *everywhere*, so users never have to wonder.
5302 conventions *everywhere*, so users never have to wonder.
5297 (Magic.magic_macro): Added @macro function to ease the creation of
5303 (Magic.magic_macro): Added @macro function to ease the creation of
5298 macros.
5304 macros.
5299
5305
5300 2002-01-05 Fernando Perez <fperez@colorado.edu>
5306 2002-01-05 Fernando Perez <fperez@colorado.edu>
5301
5307
5302 * Released 0.2.4.
5308 * Released 0.2.4.
5303
5309
5304 * IPython/iplib.py (Magic.magic_pdef):
5310 * IPython/iplib.py (Magic.magic_pdef):
5305 (InteractiveShell.safe_execfile): report magic lines and error
5311 (InteractiveShell.safe_execfile): report magic lines and error
5306 lines without line numbers so one can easily copy/paste them for
5312 lines without line numbers so one can easily copy/paste them for
5307 re-execution.
5313 re-execution.
5308
5314
5309 * Updated manual with recent changes.
5315 * Updated manual with recent changes.
5310
5316
5311 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5317 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5312 docstring printing when class? is called. Very handy for knowing
5318 docstring printing when class? is called. Very handy for knowing
5313 how to create class instances (as long as __init__ is well
5319 how to create class instances (as long as __init__ is well
5314 documented, of course :)
5320 documented, of course :)
5315 (Magic.magic_doc): print both class and constructor docstrings.
5321 (Magic.magic_doc): print both class and constructor docstrings.
5316 (Magic.magic_pdef): give constructor info if passed a class and
5322 (Magic.magic_pdef): give constructor info if passed a class and
5317 __call__ info for callable object instances.
5323 __call__ info for callable object instances.
5318
5324
5319 2002-01-04 Fernando Perez <fperez@colorado.edu>
5325 2002-01-04 Fernando Perez <fperez@colorado.edu>
5320
5326
5321 * Made deep_reload() off by default. It doesn't always work
5327 * Made deep_reload() off by default. It doesn't always work
5322 exactly as intended, so it's probably safer to have it off. It's
5328 exactly as intended, so it's probably safer to have it off. It's
5323 still available as dreload() anyway, so nothing is lost.
5329 still available as dreload() anyway, so nothing is lost.
5324
5330
5325 2002-01-02 Fernando Perez <fperez@colorado.edu>
5331 2002-01-02 Fernando Perez <fperez@colorado.edu>
5326
5332
5327 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5333 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5328 so I wanted an updated release).
5334 so I wanted an updated release).
5329
5335
5330 2001-12-27 Fernando Perez <fperez@colorado.edu>
5336 2001-12-27 Fernando Perez <fperez@colorado.edu>
5331
5337
5332 * IPython/iplib.py (InteractiveShell.interact): Added the original
5338 * IPython/iplib.py (InteractiveShell.interact): Added the original
5333 code from 'code.py' for this module in order to change the
5339 code from 'code.py' for this module in order to change the
5334 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5340 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5335 the history cache would break when the user hit Ctrl-C, and
5341 the history cache would break when the user hit Ctrl-C, and
5336 interact() offers no way to add any hooks to it.
5342 interact() offers no way to add any hooks to it.
5337
5343
5338 2001-12-23 Fernando Perez <fperez@colorado.edu>
5344 2001-12-23 Fernando Perez <fperez@colorado.edu>
5339
5345
5340 * setup.py: added check for 'MANIFEST' before trying to remove
5346 * setup.py: added check for 'MANIFEST' before trying to remove
5341 it. Thanks to Sean Reifschneider.
5347 it. Thanks to Sean Reifschneider.
5342
5348
5343 2001-12-22 Fernando Perez <fperez@colorado.edu>
5349 2001-12-22 Fernando Perez <fperez@colorado.edu>
5344
5350
5345 * Released 0.2.2.
5351 * Released 0.2.2.
5346
5352
5347 * Finished (reasonably) writing the manual. Later will add the
5353 * Finished (reasonably) writing the manual. Later will add the
5348 python-standard navigation stylesheets, but for the time being
5354 python-standard navigation stylesheets, but for the time being
5349 it's fairly complete. Distribution will include html and pdf
5355 it's fairly complete. Distribution will include html and pdf
5350 versions.
5356 versions.
5351
5357
5352 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5358 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5353 (MayaVi author).
5359 (MayaVi author).
5354
5360
5355 2001-12-21 Fernando Perez <fperez@colorado.edu>
5361 2001-12-21 Fernando Perez <fperez@colorado.edu>
5356
5362
5357 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5363 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5358 good public release, I think (with the manual and the distutils
5364 good public release, I think (with the manual and the distutils
5359 installer). The manual can use some work, but that can go
5365 installer). The manual can use some work, but that can go
5360 slowly. Otherwise I think it's quite nice for end users. Next
5366 slowly. Otherwise I think it's quite nice for end users. Next
5361 summer, rewrite the guts of it...
5367 summer, rewrite the guts of it...
5362
5368
5363 * Changed format of ipythonrc files to use whitespace as the
5369 * Changed format of ipythonrc files to use whitespace as the
5364 separator instead of an explicit '='. Cleaner.
5370 separator instead of an explicit '='. Cleaner.
5365
5371
5366 2001-12-20 Fernando Perez <fperez@colorado.edu>
5372 2001-12-20 Fernando Perez <fperez@colorado.edu>
5367
5373
5368 * Started a manual in LyX. For now it's just a quick merge of the
5374 * Started a manual in LyX. For now it's just a quick merge of the
5369 various internal docstrings and READMEs. Later it may grow into a
5375 various internal docstrings and READMEs. Later it may grow into a
5370 nice, full-blown manual.
5376 nice, full-blown manual.
5371
5377
5372 * Set up a distutils based installer. Installation should now be
5378 * Set up a distutils based installer. Installation should now be
5373 trivially simple for end-users.
5379 trivially simple for end-users.
5374
5380
5375 2001-12-11 Fernando Perez <fperez@colorado.edu>
5381 2001-12-11 Fernando Perez <fperez@colorado.edu>
5376
5382
5377 * Released 0.2.0. First public release, announced it at
5383 * Released 0.2.0. First public release, announced it at
5378 comp.lang.python. From now on, just bugfixes...
5384 comp.lang.python. From now on, just bugfixes...
5379
5385
5380 * Went through all the files, set copyright/license notices and
5386 * Went through all the files, set copyright/license notices and
5381 cleaned up things. Ready for release.
5387 cleaned up things. Ready for release.
5382
5388
5383 2001-12-10 Fernando Perez <fperez@colorado.edu>
5389 2001-12-10 Fernando Perez <fperez@colorado.edu>
5384
5390
5385 * Changed the first-time installer not to use tarfiles. It's more
5391 * Changed the first-time installer not to use tarfiles. It's more
5386 robust now and less unix-dependent. Also makes it easier for
5392 robust now and less unix-dependent. Also makes it easier for
5387 people to later upgrade versions.
5393 people to later upgrade versions.
5388
5394
5389 * Changed @exit to @abort to reflect the fact that it's pretty
5395 * Changed @exit to @abort to reflect the fact that it's pretty
5390 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5396 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5391 becomes significant only when IPyhton is embedded: in that case,
5397 becomes significant only when IPyhton is embedded: in that case,
5392 C-D closes IPython only, but @abort kills the enclosing program
5398 C-D closes IPython only, but @abort kills the enclosing program
5393 too (unless it had called IPython inside a try catching
5399 too (unless it had called IPython inside a try catching
5394 SystemExit).
5400 SystemExit).
5395
5401
5396 * Created Shell module which exposes the actuall IPython Shell
5402 * Created Shell module which exposes the actuall IPython Shell
5397 classes, currently the normal and the embeddable one. This at
5403 classes, currently the normal and the embeddable one. This at
5398 least offers a stable interface we won't need to change when
5404 least offers a stable interface we won't need to change when
5399 (later) the internals are rewritten. That rewrite will be confined
5405 (later) the internals are rewritten. That rewrite will be confined
5400 to iplib and ipmaker, but the Shell interface should remain as is.
5406 to iplib and ipmaker, but the Shell interface should remain as is.
5401
5407
5402 * Added embed module which offers an embeddable IPShell object,
5408 * Added embed module which offers an embeddable IPShell object,
5403 useful to fire up IPython *inside* a running program. Great for
5409 useful to fire up IPython *inside* a running program. Great for
5404 debugging or dynamical data analysis.
5410 debugging or dynamical data analysis.
5405
5411
5406 2001-12-08 Fernando Perez <fperez@colorado.edu>
5412 2001-12-08 Fernando Perez <fperez@colorado.edu>
5407
5413
5408 * Fixed small bug preventing seeing info from methods of defined
5414 * Fixed small bug preventing seeing info from methods of defined
5409 objects (incorrect namespace in _ofind()).
5415 objects (incorrect namespace in _ofind()).
5410
5416
5411 * Documentation cleanup. Moved the main usage docstrings to a
5417 * Documentation cleanup. Moved the main usage docstrings to a
5412 separate file, usage.py (cleaner to maintain, and hopefully in the
5418 separate file, usage.py (cleaner to maintain, and hopefully in the
5413 future some perlpod-like way of producing interactive, man and
5419 future some perlpod-like way of producing interactive, man and
5414 html docs out of it will be found).
5420 html docs out of it will be found).
5415
5421
5416 * Added @profile to see your profile at any time.
5422 * Added @profile to see your profile at any time.
5417
5423
5418 * Added @p as an alias for 'print'. It's especially convenient if
5424 * Added @p as an alias for 'print'. It's especially convenient if
5419 using automagic ('p x' prints x).
5425 using automagic ('p x' prints x).
5420
5426
5421 * Small cleanups and fixes after a pychecker run.
5427 * Small cleanups and fixes after a pychecker run.
5422
5428
5423 * Changed the @cd command to handle @cd - and @cd -<n> for
5429 * Changed the @cd command to handle @cd - and @cd -<n> for
5424 visiting any directory in _dh.
5430 visiting any directory in _dh.
5425
5431
5426 * Introduced _dh, a history of visited directories. @dhist prints
5432 * Introduced _dh, a history of visited directories. @dhist prints
5427 it out with numbers.
5433 it out with numbers.
5428
5434
5429 2001-12-07 Fernando Perez <fperez@colorado.edu>
5435 2001-12-07 Fernando Perez <fperez@colorado.edu>
5430
5436
5431 * Released 0.1.22
5437 * Released 0.1.22
5432
5438
5433 * Made initialization a bit more robust against invalid color
5439 * Made initialization a bit more robust against invalid color
5434 options in user input (exit, not traceback-crash).
5440 options in user input (exit, not traceback-crash).
5435
5441
5436 * Changed the bug crash reporter to write the report only in the
5442 * Changed the bug crash reporter to write the report only in the
5437 user's .ipython directory. That way IPython won't litter people's
5443 user's .ipython directory. That way IPython won't litter people's
5438 hard disks with crash files all over the place. Also print on
5444 hard disks with crash files all over the place. Also print on
5439 screen the necessary mail command.
5445 screen the necessary mail command.
5440
5446
5441 * With the new ultraTB, implemented LightBG color scheme for light
5447 * With the new ultraTB, implemented LightBG color scheme for light
5442 background terminals. A lot of people like white backgrounds, so I
5448 background terminals. A lot of people like white backgrounds, so I
5443 guess we should at least give them something readable.
5449 guess we should at least give them something readable.
5444
5450
5445 2001-12-06 Fernando Perez <fperez@colorado.edu>
5451 2001-12-06 Fernando Perez <fperez@colorado.edu>
5446
5452
5447 * Modified the structure of ultraTB. Now there's a proper class
5453 * Modified the structure of ultraTB. Now there's a proper class
5448 for tables of color schemes which allow adding schemes easily and
5454 for tables of color schemes which allow adding schemes easily and
5449 switching the active scheme without creating a new instance every
5455 switching the active scheme without creating a new instance every
5450 time (which was ridiculous). The syntax for creating new schemes
5456 time (which was ridiculous). The syntax for creating new schemes
5451 is also cleaner. I think ultraTB is finally done, with a clean
5457 is also cleaner. I think ultraTB is finally done, with a clean
5452 class structure. Names are also much cleaner (now there's proper
5458 class structure. Names are also much cleaner (now there's proper
5453 color tables, no need for every variable to also have 'color' in
5459 color tables, no need for every variable to also have 'color' in
5454 its name).
5460 its name).
5455
5461
5456 * Broke down genutils into separate files. Now genutils only
5462 * Broke down genutils into separate files. Now genutils only
5457 contains utility functions, and classes have been moved to their
5463 contains utility functions, and classes have been moved to their
5458 own files (they had enough independent functionality to warrant
5464 own files (they had enough independent functionality to warrant
5459 it): ConfigLoader, OutputTrap, Struct.
5465 it): ConfigLoader, OutputTrap, Struct.
5460
5466
5461 2001-12-05 Fernando Perez <fperez@colorado.edu>
5467 2001-12-05 Fernando Perez <fperez@colorado.edu>
5462
5468
5463 * IPython turns 21! Released version 0.1.21, as a candidate for
5469 * IPython turns 21! Released version 0.1.21, as a candidate for
5464 public consumption. If all goes well, release in a few days.
5470 public consumption. If all goes well, release in a few days.
5465
5471
5466 * Fixed path bug (files in Extensions/ directory wouldn't be found
5472 * Fixed path bug (files in Extensions/ directory wouldn't be found
5467 unless IPython/ was explicitly in sys.path).
5473 unless IPython/ was explicitly in sys.path).
5468
5474
5469 * Extended the FlexCompleter class as MagicCompleter to allow
5475 * Extended the FlexCompleter class as MagicCompleter to allow
5470 completion of @-starting lines.
5476 completion of @-starting lines.
5471
5477
5472 * Created __release__.py file as a central repository for release
5478 * Created __release__.py file as a central repository for release
5473 info that other files can read from.
5479 info that other files can read from.
5474
5480
5475 * Fixed small bug in logging: when logging was turned on in
5481 * Fixed small bug in logging: when logging was turned on in
5476 mid-session, old lines with special meanings (!@?) were being
5482 mid-session, old lines with special meanings (!@?) were being
5477 logged without the prepended comment, which is necessary since
5483 logged without the prepended comment, which is necessary since
5478 they are not truly valid python syntax. This should make session
5484 they are not truly valid python syntax. This should make session
5479 restores produce less errors.
5485 restores produce less errors.
5480
5486
5481 * The namespace cleanup forced me to make a FlexCompleter class
5487 * The namespace cleanup forced me to make a FlexCompleter class
5482 which is nothing but a ripoff of rlcompleter, but with selectable
5488 which is nothing but a ripoff of rlcompleter, but with selectable
5483 namespace (rlcompleter only works in __main__.__dict__). I'll try
5489 namespace (rlcompleter only works in __main__.__dict__). I'll try
5484 to submit a note to the authors to see if this change can be
5490 to submit a note to the authors to see if this change can be
5485 incorporated in future rlcompleter releases (Dec.6: done)
5491 incorporated in future rlcompleter releases (Dec.6: done)
5486
5492
5487 * More fixes to namespace handling. It was a mess! Now all
5493 * More fixes to namespace handling. It was a mess! Now all
5488 explicit references to __main__.__dict__ are gone (except when
5494 explicit references to __main__.__dict__ are gone (except when
5489 really needed) and everything is handled through the namespace
5495 really needed) and everything is handled through the namespace
5490 dicts in the IPython instance. We seem to be getting somewhere
5496 dicts in the IPython instance. We seem to be getting somewhere
5491 with this, finally...
5497 with this, finally...
5492
5498
5493 * Small documentation updates.
5499 * Small documentation updates.
5494
5500
5495 * Created the Extensions directory under IPython (with an
5501 * Created the Extensions directory under IPython (with an
5496 __init__.py). Put the PhysicalQ stuff there. This directory should
5502 __init__.py). Put the PhysicalQ stuff there. This directory should
5497 be used for all special-purpose extensions.
5503 be used for all special-purpose extensions.
5498
5504
5499 * File renaming:
5505 * File renaming:
5500 ipythonlib --> ipmaker
5506 ipythonlib --> ipmaker
5501 ipplib --> iplib
5507 ipplib --> iplib
5502 This makes a bit more sense in terms of what these files actually do.
5508 This makes a bit more sense in terms of what these files actually do.
5503
5509
5504 * Moved all the classes and functions in ipythonlib to ipplib, so
5510 * Moved all the classes and functions in ipythonlib to ipplib, so
5505 now ipythonlib only has make_IPython(). This will ease up its
5511 now ipythonlib only has make_IPython(). This will ease up its
5506 splitting in smaller functional chunks later.
5512 splitting in smaller functional chunks later.
5507
5513
5508 * Cleaned up (done, I think) output of @whos. Better column
5514 * Cleaned up (done, I think) output of @whos. Better column
5509 formatting, and now shows str(var) for as much as it can, which is
5515 formatting, and now shows str(var) for as much as it can, which is
5510 typically what one gets with a 'print var'.
5516 typically what one gets with a 'print var'.
5511
5517
5512 2001-12-04 Fernando Perez <fperez@colorado.edu>
5518 2001-12-04 Fernando Perez <fperez@colorado.edu>
5513
5519
5514 * Fixed namespace problems. Now builtin/IPyhton/user names get
5520 * Fixed namespace problems. Now builtin/IPyhton/user names get
5515 properly reported in their namespace. Internal namespace handling
5521 properly reported in their namespace. Internal namespace handling
5516 is finally getting decent (not perfect yet, but much better than
5522 is finally getting decent (not perfect yet, but much better than
5517 the ad-hoc mess we had).
5523 the ad-hoc mess we had).
5518
5524
5519 * Removed -exit option. If people just want to run a python
5525 * Removed -exit option. If people just want to run a python
5520 script, that's what the normal interpreter is for. Less
5526 script, that's what the normal interpreter is for. Less
5521 unnecessary options, less chances for bugs.
5527 unnecessary options, less chances for bugs.
5522
5528
5523 * Added a crash handler which generates a complete post-mortem if
5529 * Added a crash handler which generates a complete post-mortem if
5524 IPython crashes. This will help a lot in tracking bugs down the
5530 IPython crashes. This will help a lot in tracking bugs down the
5525 road.
5531 road.
5526
5532
5527 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5533 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5528 which were boud to functions being reassigned would bypass the
5534 which were boud to functions being reassigned would bypass the
5529 logger, breaking the sync of _il with the prompt counter. This
5535 logger, breaking the sync of _il with the prompt counter. This
5530 would then crash IPython later when a new line was logged.
5536 would then crash IPython later when a new line was logged.
5531
5537
5532 2001-12-02 Fernando Perez <fperez@colorado.edu>
5538 2001-12-02 Fernando Perez <fperez@colorado.edu>
5533
5539
5534 * Made IPython a package. This means people don't have to clutter
5540 * Made IPython a package. This means people don't have to clutter
5535 their sys.path with yet another directory. Changed the INSTALL
5541 their sys.path with yet another directory. Changed the INSTALL
5536 file accordingly.
5542 file accordingly.
5537
5543
5538 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5544 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5539 sorts its output (so @who shows it sorted) and @whos formats the
5545 sorts its output (so @who shows it sorted) and @whos formats the
5540 table according to the width of the first column. Nicer, easier to
5546 table according to the width of the first column. Nicer, easier to
5541 read. Todo: write a generic table_format() which takes a list of
5547 read. Todo: write a generic table_format() which takes a list of
5542 lists and prints it nicely formatted, with optional row/column
5548 lists and prints it nicely formatted, with optional row/column
5543 separators and proper padding and justification.
5549 separators and proper padding and justification.
5544
5550
5545 * Released 0.1.20
5551 * Released 0.1.20
5546
5552
5547 * Fixed bug in @log which would reverse the inputcache list (a
5553 * Fixed bug in @log which would reverse the inputcache list (a
5548 copy operation was missing).
5554 copy operation was missing).
5549
5555
5550 * Code cleanup. @config was changed to use page(). Better, since
5556 * Code cleanup. @config was changed to use page(). Better, since
5551 its output is always quite long.
5557 its output is always quite long.
5552
5558
5553 * Itpl is back as a dependency. I was having too many problems
5559 * Itpl is back as a dependency. I was having too many problems
5554 getting the parametric aliases to work reliably, and it's just
5560 getting the parametric aliases to work reliably, and it's just
5555 easier to code weird string operations with it than playing %()s
5561 easier to code weird string operations with it than playing %()s
5556 games. It's only ~6k, so I don't think it's too big a deal.
5562 games. It's only ~6k, so I don't think it's too big a deal.
5557
5563
5558 * Found (and fixed) a very nasty bug with history. !lines weren't
5564 * Found (and fixed) a very nasty bug with history. !lines weren't
5559 getting cached, and the out of sync caches would crash
5565 getting cached, and the out of sync caches would crash
5560 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5566 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5561 division of labor a bit better. Bug fixed, cleaner structure.
5567 division of labor a bit better. Bug fixed, cleaner structure.
5562
5568
5563 2001-12-01 Fernando Perez <fperez@colorado.edu>
5569 2001-12-01 Fernando Perez <fperez@colorado.edu>
5564
5570
5565 * Released 0.1.19
5571 * Released 0.1.19
5566
5572
5567 * Added option -n to @hist to prevent line number printing. Much
5573 * Added option -n to @hist to prevent line number printing. Much
5568 easier to copy/paste code this way.
5574 easier to copy/paste code this way.
5569
5575
5570 * Created global _il to hold the input list. Allows easy
5576 * Created global _il to hold the input list. Allows easy
5571 re-execution of blocks of code by slicing it (inspired by Janko's
5577 re-execution of blocks of code by slicing it (inspired by Janko's
5572 comment on 'macros').
5578 comment on 'macros').
5573
5579
5574 * Small fixes and doc updates.
5580 * Small fixes and doc updates.
5575
5581
5576 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5582 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5577 much too fragile with automagic. Handles properly multi-line
5583 much too fragile with automagic. Handles properly multi-line
5578 statements and takes parameters.
5584 statements and takes parameters.
5579
5585
5580 2001-11-30 Fernando Perez <fperez@colorado.edu>
5586 2001-11-30 Fernando Perez <fperez@colorado.edu>
5581
5587
5582 * Version 0.1.18 released.
5588 * Version 0.1.18 released.
5583
5589
5584 * Fixed nasty namespace bug in initial module imports.
5590 * Fixed nasty namespace bug in initial module imports.
5585
5591
5586 * Added copyright/license notes to all code files (except
5592 * Added copyright/license notes to all code files (except
5587 DPyGetOpt). For the time being, LGPL. That could change.
5593 DPyGetOpt). For the time being, LGPL. That could change.
5588
5594
5589 * Rewrote a much nicer README, updated INSTALL, cleaned up
5595 * Rewrote a much nicer README, updated INSTALL, cleaned up
5590 ipythonrc-* samples.
5596 ipythonrc-* samples.
5591
5597
5592 * Overall code/documentation cleanup. Basically ready for
5598 * Overall code/documentation cleanup. Basically ready for
5593 release. Only remaining thing: licence decision (LGPL?).
5599 release. Only remaining thing: licence decision (LGPL?).
5594
5600
5595 * Converted load_config to a class, ConfigLoader. Now recursion
5601 * Converted load_config to a class, ConfigLoader. Now recursion
5596 control is better organized. Doesn't include the same file twice.
5602 control is better organized. Doesn't include the same file twice.
5597
5603
5598 2001-11-29 Fernando Perez <fperez@colorado.edu>
5604 2001-11-29 Fernando Perez <fperez@colorado.edu>
5599
5605
5600 * Got input history working. Changed output history variables from
5606 * Got input history working. Changed output history variables from
5601 _p to _o so that _i is for input and _o for output. Just cleaner
5607 _p to _o so that _i is for input and _o for output. Just cleaner
5602 convention.
5608 convention.
5603
5609
5604 * Implemented parametric aliases. This pretty much allows the
5610 * Implemented parametric aliases. This pretty much allows the
5605 alias system to offer full-blown shell convenience, I think.
5611 alias system to offer full-blown shell convenience, I think.
5606
5612
5607 * Version 0.1.17 released, 0.1.18 opened.
5613 * Version 0.1.17 released, 0.1.18 opened.
5608
5614
5609 * dot_ipython/ipythonrc (alias): added documentation.
5615 * dot_ipython/ipythonrc (alias): added documentation.
5610 (xcolor): Fixed small bug (xcolors -> xcolor)
5616 (xcolor): Fixed small bug (xcolors -> xcolor)
5611
5617
5612 * Changed the alias system. Now alias is a magic command to define
5618 * Changed the alias system. Now alias is a magic command to define
5613 aliases just like the shell. Rationale: the builtin magics should
5619 aliases just like the shell. Rationale: the builtin magics should
5614 be there for things deeply connected to IPython's
5620 be there for things deeply connected to IPython's
5615 architecture. And this is a much lighter system for what I think
5621 architecture. And this is a much lighter system for what I think
5616 is the really important feature: allowing users to define quickly
5622 is the really important feature: allowing users to define quickly
5617 magics that will do shell things for them, so they can customize
5623 magics that will do shell things for them, so they can customize
5618 IPython easily to match their work habits. If someone is really
5624 IPython easily to match their work habits. If someone is really
5619 desperate to have another name for a builtin alias, they can
5625 desperate to have another name for a builtin alias, they can
5620 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5626 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5621 works.
5627 works.
5622
5628
5623 2001-11-28 Fernando Perez <fperez@colorado.edu>
5629 2001-11-28 Fernando Perez <fperez@colorado.edu>
5624
5630
5625 * Changed @file so that it opens the source file at the proper
5631 * Changed @file so that it opens the source file at the proper
5626 line. Since it uses less, if your EDITOR environment is
5632 line. Since it uses less, if your EDITOR environment is
5627 configured, typing v will immediately open your editor of choice
5633 configured, typing v will immediately open your editor of choice
5628 right at the line where the object is defined. Not as quick as
5634 right at the line where the object is defined. Not as quick as
5629 having a direct @edit command, but for all intents and purposes it
5635 having a direct @edit command, but for all intents and purposes it
5630 works. And I don't have to worry about writing @edit to deal with
5636 works. And I don't have to worry about writing @edit to deal with
5631 all the editors, less does that.
5637 all the editors, less does that.
5632
5638
5633 * Version 0.1.16 released, 0.1.17 opened.
5639 * Version 0.1.16 released, 0.1.17 opened.
5634
5640
5635 * Fixed some nasty bugs in the page/page_dumb combo that could
5641 * Fixed some nasty bugs in the page/page_dumb combo that could
5636 crash IPython.
5642 crash IPython.
5637
5643
5638 2001-11-27 Fernando Perez <fperez@colorado.edu>
5644 2001-11-27 Fernando Perez <fperez@colorado.edu>
5639
5645
5640 * Version 0.1.15 released, 0.1.16 opened.
5646 * Version 0.1.15 released, 0.1.16 opened.
5641
5647
5642 * Finally got ? and ?? to work for undefined things: now it's
5648 * Finally got ? and ?? to work for undefined things: now it's
5643 possible to type {}.get? and get information about the get method
5649 possible to type {}.get? and get information about the get method
5644 of dicts, or os.path? even if only os is defined (so technically
5650 of dicts, or os.path? even if only os is defined (so technically
5645 os.path isn't). Works at any level. For example, after import os,
5651 os.path isn't). Works at any level. For example, after import os,
5646 os?, os.path?, os.path.abspath? all work. This is great, took some
5652 os?, os.path?, os.path.abspath? all work. This is great, took some
5647 work in _ofind.
5653 work in _ofind.
5648
5654
5649 * Fixed more bugs with logging. The sanest way to do it was to add
5655 * Fixed more bugs with logging. The sanest way to do it was to add
5650 to @log a 'mode' parameter. Killed two in one shot (this mode
5656 to @log a 'mode' parameter. Killed two in one shot (this mode
5651 option was a request of Janko's). I think it's finally clean
5657 option was a request of Janko's). I think it's finally clean
5652 (famous last words).
5658 (famous last words).
5653
5659
5654 * Added a page_dumb() pager which does a decent job of paging on
5660 * Added a page_dumb() pager which does a decent job of paging on
5655 screen, if better things (like less) aren't available. One less
5661 screen, if better things (like less) aren't available. One less
5656 unix dependency (someday maybe somebody will port this to
5662 unix dependency (someday maybe somebody will port this to
5657 windows).
5663 windows).
5658
5664
5659 * Fixed problem in magic_log: would lock of logging out if log
5665 * Fixed problem in magic_log: would lock of logging out if log
5660 creation failed (because it would still think it had succeeded).
5666 creation failed (because it would still think it had succeeded).
5661
5667
5662 * Improved the page() function using curses to auto-detect screen
5668 * Improved the page() function using curses to auto-detect screen
5663 size. Now it can make a much better decision on whether to print
5669 size. Now it can make a much better decision on whether to print
5664 or page a string. Option screen_length was modified: a value 0
5670 or page a string. Option screen_length was modified: a value 0
5665 means auto-detect, and that's the default now.
5671 means auto-detect, and that's the default now.
5666
5672
5667 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5673 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5668 go out. I'll test it for a few days, then talk to Janko about
5674 go out. I'll test it for a few days, then talk to Janko about
5669 licences and announce it.
5675 licences and announce it.
5670
5676
5671 * Fixed the length of the auto-generated ---> prompt which appears
5677 * Fixed the length of the auto-generated ---> prompt which appears
5672 for auto-parens and auto-quotes. Getting this right isn't trivial,
5678 for auto-parens and auto-quotes. Getting this right isn't trivial,
5673 with all the color escapes, different prompt types and optional
5679 with all the color escapes, different prompt types and optional
5674 separators. But it seems to be working in all the combinations.
5680 separators. But it seems to be working in all the combinations.
5675
5681
5676 2001-11-26 Fernando Perez <fperez@colorado.edu>
5682 2001-11-26 Fernando Perez <fperez@colorado.edu>
5677
5683
5678 * Wrote a regexp filter to get option types from the option names
5684 * Wrote a regexp filter to get option types from the option names
5679 string. This eliminates the need to manually keep two duplicate
5685 string. This eliminates the need to manually keep two duplicate
5680 lists.
5686 lists.
5681
5687
5682 * Removed the unneeded check_option_names. Now options are handled
5688 * Removed the unneeded check_option_names. Now options are handled
5683 in a much saner manner and it's easy to visually check that things
5689 in a much saner manner and it's easy to visually check that things
5684 are ok.
5690 are ok.
5685
5691
5686 * Updated version numbers on all files I modified to carry a
5692 * Updated version numbers on all files I modified to carry a
5687 notice so Janko and Nathan have clear version markers.
5693 notice so Janko and Nathan have clear version markers.
5688
5694
5689 * Updated docstring for ultraTB with my changes. I should send
5695 * Updated docstring for ultraTB with my changes. I should send
5690 this to Nathan.
5696 this to Nathan.
5691
5697
5692 * Lots of small fixes. Ran everything through pychecker again.
5698 * Lots of small fixes. Ran everything through pychecker again.
5693
5699
5694 * Made loading of deep_reload an cmd line option. If it's not too
5700 * Made loading of deep_reload an cmd line option. If it's not too
5695 kosher, now people can just disable it. With -nodeep_reload it's
5701 kosher, now people can just disable it. With -nodeep_reload it's
5696 still available as dreload(), it just won't overwrite reload().
5702 still available as dreload(), it just won't overwrite reload().
5697
5703
5698 * Moved many options to the no| form (-opt and -noopt
5704 * Moved many options to the no| form (-opt and -noopt
5699 accepted). Cleaner.
5705 accepted). Cleaner.
5700
5706
5701 * Changed magic_log so that if called with no parameters, it uses
5707 * Changed magic_log so that if called with no parameters, it uses
5702 'rotate' mode. That way auto-generated logs aren't automatically
5708 'rotate' mode. That way auto-generated logs aren't automatically
5703 over-written. For normal logs, now a backup is made if it exists
5709 over-written. For normal logs, now a backup is made if it exists
5704 (only 1 level of backups). A new 'backup' mode was added to the
5710 (only 1 level of backups). A new 'backup' mode was added to the
5705 Logger class to support this. This was a request by Janko.
5711 Logger class to support this. This was a request by Janko.
5706
5712
5707 * Added @logoff/@logon to stop/restart an active log.
5713 * Added @logoff/@logon to stop/restart an active log.
5708
5714
5709 * Fixed a lot of bugs in log saving/replay. It was pretty
5715 * Fixed a lot of bugs in log saving/replay. It was pretty
5710 broken. Now special lines (!@,/) appear properly in the command
5716 broken. Now special lines (!@,/) appear properly in the command
5711 history after a log replay.
5717 history after a log replay.
5712
5718
5713 * Tried and failed to implement full session saving via pickle. My
5719 * Tried and failed to implement full session saving via pickle. My
5714 idea was to pickle __main__.__dict__, but modules can't be
5720 idea was to pickle __main__.__dict__, but modules can't be
5715 pickled. This would be a better alternative to replaying logs, but
5721 pickled. This would be a better alternative to replaying logs, but
5716 seems quite tricky to get to work. Changed -session to be called
5722 seems quite tricky to get to work. Changed -session to be called
5717 -logplay, which more accurately reflects what it does. And if we
5723 -logplay, which more accurately reflects what it does. And if we
5718 ever get real session saving working, -session is now available.
5724 ever get real session saving working, -session is now available.
5719
5725
5720 * Implemented color schemes for prompts also. As for tracebacks,
5726 * Implemented color schemes for prompts also. As for tracebacks,
5721 currently only NoColor and Linux are supported. But now the
5727 currently only NoColor and Linux are supported. But now the
5722 infrastructure is in place, based on a generic ColorScheme
5728 infrastructure is in place, based on a generic ColorScheme
5723 class. So writing and activating new schemes both for the prompts
5729 class. So writing and activating new schemes both for the prompts
5724 and the tracebacks should be straightforward.
5730 and the tracebacks should be straightforward.
5725
5731
5726 * Version 0.1.13 released, 0.1.14 opened.
5732 * Version 0.1.13 released, 0.1.14 opened.
5727
5733
5728 * Changed handling of options for output cache. Now counter is
5734 * Changed handling of options for output cache. Now counter is
5729 hardwired starting at 1 and one specifies the maximum number of
5735 hardwired starting at 1 and one specifies the maximum number of
5730 entries *in the outcache* (not the max prompt counter). This is
5736 entries *in the outcache* (not the max prompt counter). This is
5731 much better, since many statements won't increase the cache
5737 much better, since many statements won't increase the cache
5732 count. It also eliminated some confusing options, now there's only
5738 count. It also eliminated some confusing options, now there's only
5733 one: cache_size.
5739 one: cache_size.
5734
5740
5735 * Added 'alias' magic function and magic_alias option in the
5741 * Added 'alias' magic function and magic_alias option in the
5736 ipythonrc file. Now the user can easily define whatever names he
5742 ipythonrc file. Now the user can easily define whatever names he
5737 wants for the magic functions without having to play weird
5743 wants for the magic functions without having to play weird
5738 namespace games. This gives IPython a real shell-like feel.
5744 namespace games. This gives IPython a real shell-like feel.
5739
5745
5740 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5746 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5741 @ or not).
5747 @ or not).
5742
5748
5743 This was one of the last remaining 'visible' bugs (that I know
5749 This was one of the last remaining 'visible' bugs (that I know
5744 of). I think if I can clean up the session loading so it works
5750 of). I think if I can clean up the session loading so it works
5745 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5751 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5746 about licensing).
5752 about licensing).
5747
5753
5748 2001-11-25 Fernando Perez <fperez@colorado.edu>
5754 2001-11-25 Fernando Perez <fperez@colorado.edu>
5749
5755
5750 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5756 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5751 there's a cleaner distinction between what ? and ?? show.
5757 there's a cleaner distinction between what ? and ?? show.
5752
5758
5753 * Added screen_length option. Now the user can define his own
5759 * Added screen_length option. Now the user can define his own
5754 screen size for page() operations.
5760 screen size for page() operations.
5755
5761
5756 * Implemented magic shell-like functions with automatic code
5762 * Implemented magic shell-like functions with automatic code
5757 generation. Now adding another function is just a matter of adding
5763 generation. Now adding another function is just a matter of adding
5758 an entry to a dict, and the function is dynamically generated at
5764 an entry to a dict, and the function is dynamically generated at
5759 run-time. Python has some really cool features!
5765 run-time. Python has some really cool features!
5760
5766
5761 * Renamed many options to cleanup conventions a little. Now all
5767 * Renamed many options to cleanup conventions a little. Now all
5762 are lowercase, and only underscores where needed. Also in the code
5768 are lowercase, and only underscores where needed. Also in the code
5763 option name tables are clearer.
5769 option name tables are clearer.
5764
5770
5765 * Changed prompts a little. Now input is 'In [n]:' instead of
5771 * Changed prompts a little. Now input is 'In [n]:' instead of
5766 'In[n]:='. This allows it the numbers to be aligned with the
5772 'In[n]:='. This allows it the numbers to be aligned with the
5767 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5773 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5768 Python (it was a Mathematica thing). The '...' continuation prompt
5774 Python (it was a Mathematica thing). The '...' continuation prompt
5769 was also changed a little to align better.
5775 was also changed a little to align better.
5770
5776
5771 * Fixed bug when flushing output cache. Not all _p<n> variables
5777 * Fixed bug when flushing output cache. Not all _p<n> variables
5772 exist, so their deletion needs to be wrapped in a try:
5778 exist, so their deletion needs to be wrapped in a try:
5773
5779
5774 * Figured out how to properly use inspect.formatargspec() (it
5780 * Figured out how to properly use inspect.formatargspec() (it
5775 requires the args preceded by *). So I removed all the code from
5781 requires the args preceded by *). So I removed all the code from
5776 _get_pdef in Magic, which was just replicating that.
5782 _get_pdef in Magic, which was just replicating that.
5777
5783
5778 * Added test to prefilter to allow redefining magic function names
5784 * Added test to prefilter to allow redefining magic function names
5779 as variables. This is ok, since the @ form is always available,
5785 as variables. This is ok, since the @ form is always available,
5780 but whe should allow the user to define a variable called 'ls' if
5786 but whe should allow the user to define a variable called 'ls' if
5781 he needs it.
5787 he needs it.
5782
5788
5783 * Moved the ToDo information from README into a separate ToDo.
5789 * Moved the ToDo information from README into a separate ToDo.
5784
5790
5785 * General code cleanup and small bugfixes. I think it's close to a
5791 * General code cleanup and small bugfixes. I think it's close to a
5786 state where it can be released, obviously with a big 'beta'
5792 state where it can be released, obviously with a big 'beta'
5787 warning on it.
5793 warning on it.
5788
5794
5789 * Got the magic function split to work. Now all magics are defined
5795 * Got the magic function split to work. Now all magics are defined
5790 in a separate class. It just organizes things a bit, and now
5796 in a separate class. It just organizes things a bit, and now
5791 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5797 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5792 was too long).
5798 was too long).
5793
5799
5794 * Changed @clear to @reset to avoid potential confusions with
5800 * Changed @clear to @reset to avoid potential confusions with
5795 the shell command clear. Also renamed @cl to @clear, which does
5801 the shell command clear. Also renamed @cl to @clear, which does
5796 exactly what people expect it to from their shell experience.
5802 exactly what people expect it to from their shell experience.
5797
5803
5798 Added a check to the @reset command (since it's so
5804 Added a check to the @reset command (since it's so
5799 destructive, it's probably a good idea to ask for confirmation).
5805 destructive, it's probably a good idea to ask for confirmation).
5800 But now reset only works for full namespace resetting. Since the
5806 But now reset only works for full namespace resetting. Since the
5801 del keyword is already there for deleting a few specific
5807 del keyword is already there for deleting a few specific
5802 variables, I don't see the point of having a redundant magic
5808 variables, I don't see the point of having a redundant magic
5803 function for the same task.
5809 function for the same task.
5804
5810
5805 2001-11-24 Fernando Perez <fperez@colorado.edu>
5811 2001-11-24 Fernando Perez <fperez@colorado.edu>
5806
5812
5807 * Updated the builtin docs (esp. the ? ones).
5813 * Updated the builtin docs (esp. the ? ones).
5808
5814
5809 * Ran all the code through pychecker. Not terribly impressed with
5815 * Ran all the code through pychecker. Not terribly impressed with
5810 it: lots of spurious warnings and didn't really find anything of
5816 it: lots of spurious warnings and didn't really find anything of
5811 substance (just a few modules being imported and not used).
5817 substance (just a few modules being imported and not used).
5812
5818
5813 * Implemented the new ultraTB functionality into IPython. New
5819 * Implemented the new ultraTB functionality into IPython. New
5814 option: xcolors. This chooses color scheme. xmode now only selects
5820 option: xcolors. This chooses color scheme. xmode now only selects
5815 between Plain and Verbose. Better orthogonality.
5821 between Plain and Verbose. Better orthogonality.
5816
5822
5817 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5823 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5818 mode and color scheme for the exception handlers. Now it's
5824 mode and color scheme for the exception handlers. Now it's
5819 possible to have the verbose traceback with no coloring.
5825 possible to have the verbose traceback with no coloring.
5820
5826
5821 2001-11-23 Fernando Perez <fperez@colorado.edu>
5827 2001-11-23 Fernando Perez <fperez@colorado.edu>
5822
5828
5823 * Version 0.1.12 released, 0.1.13 opened.
5829 * Version 0.1.12 released, 0.1.13 opened.
5824
5830
5825 * Removed option to set auto-quote and auto-paren escapes by
5831 * Removed option to set auto-quote and auto-paren escapes by
5826 user. The chances of breaking valid syntax are just too high. If
5832 user. The chances of breaking valid syntax are just too high. If
5827 someone *really* wants, they can always dig into the code.
5833 someone *really* wants, they can always dig into the code.
5828
5834
5829 * Made prompt separators configurable.
5835 * Made prompt separators configurable.
5830
5836
5831 2001-11-22 Fernando Perez <fperez@colorado.edu>
5837 2001-11-22 Fernando Perez <fperez@colorado.edu>
5832
5838
5833 * Small bugfixes in many places.
5839 * Small bugfixes in many places.
5834
5840
5835 * Removed the MyCompleter class from ipplib. It seemed redundant
5841 * Removed the MyCompleter class from ipplib. It seemed redundant
5836 with the C-p,C-n history search functionality. Less code to
5842 with the C-p,C-n history search functionality. Less code to
5837 maintain.
5843 maintain.
5838
5844
5839 * Moved all the original ipython.py code into ipythonlib.py. Right
5845 * Moved all the original ipython.py code into ipythonlib.py. Right
5840 now it's just one big dump into a function called make_IPython, so
5846 now it's just one big dump into a function called make_IPython, so
5841 no real modularity has been gained. But at least it makes the
5847 no real modularity has been gained. But at least it makes the
5842 wrapper script tiny, and since ipythonlib is a module, it gets
5848 wrapper script tiny, and since ipythonlib is a module, it gets
5843 compiled and startup is much faster.
5849 compiled and startup is much faster.
5844
5850
5845 This is a reasobably 'deep' change, so we should test it for a
5851 This is a reasobably 'deep' change, so we should test it for a
5846 while without messing too much more with the code.
5852 while without messing too much more with the code.
5847
5853
5848 2001-11-21 Fernando Perez <fperez@colorado.edu>
5854 2001-11-21 Fernando Perez <fperez@colorado.edu>
5849
5855
5850 * Version 0.1.11 released, 0.1.12 opened for further work.
5856 * Version 0.1.11 released, 0.1.12 opened for further work.
5851
5857
5852 * Removed dependency on Itpl. It was only needed in one place. It
5858 * Removed dependency on Itpl. It was only needed in one place. It
5853 would be nice if this became part of python, though. It makes life
5859 would be nice if this became part of python, though. It makes life
5854 *a lot* easier in some cases.
5860 *a lot* easier in some cases.
5855
5861
5856 * Simplified the prefilter code a bit. Now all handlers are
5862 * Simplified the prefilter code a bit. Now all handlers are
5857 expected to explicitly return a value (at least a blank string).
5863 expected to explicitly return a value (at least a blank string).
5858
5864
5859 * Heavy edits in ipplib. Removed the help system altogether. Now
5865 * Heavy edits in ipplib. Removed the help system altogether. Now
5860 obj?/?? is used for inspecting objects, a magic @doc prints
5866 obj?/?? is used for inspecting objects, a magic @doc prints
5861 docstrings, and full-blown Python help is accessed via the 'help'
5867 docstrings, and full-blown Python help is accessed via the 'help'
5862 keyword. This cleans up a lot of code (less to maintain) and does
5868 keyword. This cleans up a lot of code (less to maintain) and does
5863 the job. Since 'help' is now a standard Python component, might as
5869 the job. Since 'help' is now a standard Python component, might as
5864 well use it and remove duplicate functionality.
5870 well use it and remove duplicate functionality.
5865
5871
5866 Also removed the option to use ipplib as a standalone program. By
5872 Also removed the option to use ipplib as a standalone program. By
5867 now it's too dependent on other parts of IPython to function alone.
5873 now it's too dependent on other parts of IPython to function alone.
5868
5874
5869 * Fixed bug in genutils.pager. It would crash if the pager was
5875 * Fixed bug in genutils.pager. It would crash if the pager was
5870 exited immediately after opening (broken pipe).
5876 exited immediately after opening (broken pipe).
5871
5877
5872 * Trimmed down the VerboseTB reporting a little. The header is
5878 * Trimmed down the VerboseTB reporting a little. The header is
5873 much shorter now and the repeated exception arguments at the end
5879 much shorter now and the repeated exception arguments at the end
5874 have been removed. For interactive use the old header seemed a bit
5880 have been removed. For interactive use the old header seemed a bit
5875 excessive.
5881 excessive.
5876
5882
5877 * Fixed small bug in output of @whos for variables with multi-word
5883 * Fixed small bug in output of @whos for variables with multi-word
5878 types (only first word was displayed).
5884 types (only first word was displayed).
5879
5885
5880 2001-11-17 Fernando Perez <fperez@colorado.edu>
5886 2001-11-17 Fernando Perez <fperez@colorado.edu>
5881
5887
5882 * Version 0.1.10 released, 0.1.11 opened for further work.
5888 * Version 0.1.10 released, 0.1.11 opened for further work.
5883
5889
5884 * Modified dirs and friends. dirs now *returns* the stack (not
5890 * Modified dirs and friends. dirs now *returns* the stack (not
5885 prints), so one can manipulate it as a variable. Convenient to
5891 prints), so one can manipulate it as a variable. Convenient to
5886 travel along many directories.
5892 travel along many directories.
5887
5893
5888 * Fixed bug in magic_pdef: would only work with functions with
5894 * Fixed bug in magic_pdef: would only work with functions with
5889 arguments with default values.
5895 arguments with default values.
5890
5896
5891 2001-11-14 Fernando Perez <fperez@colorado.edu>
5897 2001-11-14 Fernando Perez <fperez@colorado.edu>
5892
5898
5893 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5899 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5894 example with IPython. Various other minor fixes and cleanups.
5900 example with IPython. Various other minor fixes and cleanups.
5895
5901
5896 * Version 0.1.9 released, 0.1.10 opened for further work.
5902 * Version 0.1.9 released, 0.1.10 opened for further work.
5897
5903
5898 * Added sys.path to the list of directories searched in the
5904 * Added sys.path to the list of directories searched in the
5899 execfile= option. It used to be the current directory and the
5905 execfile= option. It used to be the current directory and the
5900 user's IPYTHONDIR only.
5906 user's IPYTHONDIR only.
5901
5907
5902 2001-11-13 Fernando Perez <fperez@colorado.edu>
5908 2001-11-13 Fernando Perez <fperez@colorado.edu>
5903
5909
5904 * Reinstated the raw_input/prefilter separation that Janko had
5910 * Reinstated the raw_input/prefilter separation that Janko had
5905 initially. This gives a more convenient setup for extending the
5911 initially. This gives a more convenient setup for extending the
5906 pre-processor from the outside: raw_input always gets a string,
5912 pre-processor from the outside: raw_input always gets a string,
5907 and prefilter has to process it. We can then redefine prefilter
5913 and prefilter has to process it. We can then redefine prefilter
5908 from the outside and implement extensions for special
5914 from the outside and implement extensions for special
5909 purposes.
5915 purposes.
5910
5916
5911 Today I got one for inputting PhysicalQuantity objects
5917 Today I got one for inputting PhysicalQuantity objects
5912 (from Scientific) without needing any function calls at
5918 (from Scientific) without needing any function calls at
5913 all. Extremely convenient, and it's all done as a user-level
5919 all. Extremely convenient, and it's all done as a user-level
5914 extension (no IPython code was touched). Now instead of:
5920 extension (no IPython code was touched). Now instead of:
5915 a = PhysicalQuantity(4.2,'m/s**2')
5921 a = PhysicalQuantity(4.2,'m/s**2')
5916 one can simply say
5922 one can simply say
5917 a = 4.2 m/s**2
5923 a = 4.2 m/s**2
5918 or even
5924 or even
5919 a = 4.2 m/s^2
5925 a = 4.2 m/s^2
5920
5926
5921 I use this, but it's also a proof of concept: IPython really is
5927 I use this, but it's also a proof of concept: IPython really is
5922 fully user-extensible, even at the level of the parsing of the
5928 fully user-extensible, even at the level of the parsing of the
5923 command line. It's not trivial, but it's perfectly doable.
5929 command line. It's not trivial, but it's perfectly doable.
5924
5930
5925 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5931 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5926 the problem of modules being loaded in the inverse order in which
5932 the problem of modules being loaded in the inverse order in which
5927 they were defined in
5933 they were defined in
5928
5934
5929 * Version 0.1.8 released, 0.1.9 opened for further work.
5935 * Version 0.1.8 released, 0.1.9 opened for further work.
5930
5936
5931 * Added magics pdef, source and file. They respectively show the
5937 * Added magics pdef, source and file. They respectively show the
5932 definition line ('prototype' in C), source code and full python
5938 definition line ('prototype' in C), source code and full python
5933 file for any callable object. The object inspector oinfo uses
5939 file for any callable object. The object inspector oinfo uses
5934 these to show the same information.
5940 these to show the same information.
5935
5941
5936 * Version 0.1.7 released, 0.1.8 opened for further work.
5942 * Version 0.1.7 released, 0.1.8 opened for further work.
5937
5943
5938 * Separated all the magic functions into a class called Magic. The
5944 * Separated all the magic functions into a class called Magic. The
5939 InteractiveShell class was becoming too big for Xemacs to handle
5945 InteractiveShell class was becoming too big for Xemacs to handle
5940 (de-indenting a line would lock it up for 10 seconds while it
5946 (de-indenting a line would lock it up for 10 seconds while it
5941 backtracked on the whole class!)
5947 backtracked on the whole class!)
5942
5948
5943 FIXME: didn't work. It can be done, but right now namespaces are
5949 FIXME: didn't work. It can be done, but right now namespaces are
5944 all messed up. Do it later (reverted it for now, so at least
5950 all messed up. Do it later (reverted it for now, so at least
5945 everything works as before).
5951 everything works as before).
5946
5952
5947 * Got the object introspection system (magic_oinfo) working! I
5953 * Got the object introspection system (magic_oinfo) working! I
5948 think this is pretty much ready for release to Janko, so he can
5954 think this is pretty much ready for release to Janko, so he can
5949 test it for a while and then announce it. Pretty much 100% of what
5955 test it for a while and then announce it. Pretty much 100% of what
5950 I wanted for the 'phase 1' release is ready. Happy, tired.
5956 I wanted for the 'phase 1' release is ready. Happy, tired.
5951
5957
5952 2001-11-12 Fernando Perez <fperez@colorado.edu>
5958 2001-11-12 Fernando Perez <fperez@colorado.edu>
5953
5959
5954 * Version 0.1.6 released, 0.1.7 opened for further work.
5960 * Version 0.1.6 released, 0.1.7 opened for further work.
5955
5961
5956 * Fixed bug in printing: it used to test for truth before
5962 * Fixed bug in printing: it used to test for truth before
5957 printing, so 0 wouldn't print. Now checks for None.
5963 printing, so 0 wouldn't print. Now checks for None.
5958
5964
5959 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5965 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5960 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5966 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5961 reaches by hand into the outputcache. Think of a better way to do
5967 reaches by hand into the outputcache. Think of a better way to do
5962 this later.
5968 this later.
5963
5969
5964 * Various small fixes thanks to Nathan's comments.
5970 * Various small fixes thanks to Nathan's comments.
5965
5971
5966 * Changed magic_pprint to magic_Pprint. This way it doesn't
5972 * Changed magic_pprint to magic_Pprint. This way it doesn't
5967 collide with pprint() and the name is consistent with the command
5973 collide with pprint() and the name is consistent with the command
5968 line option.
5974 line option.
5969
5975
5970 * Changed prompt counter behavior to be fully like
5976 * Changed prompt counter behavior to be fully like
5971 Mathematica's. That is, even input that doesn't return a result
5977 Mathematica's. That is, even input that doesn't return a result
5972 raises the prompt counter. The old behavior was kind of confusing
5978 raises the prompt counter. The old behavior was kind of confusing
5973 (getting the same prompt number several times if the operation
5979 (getting the same prompt number several times if the operation
5974 didn't return a result).
5980 didn't return a result).
5975
5981
5976 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5982 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5977
5983
5978 * Fixed -Classic mode (wasn't working anymore).
5984 * Fixed -Classic mode (wasn't working anymore).
5979
5985
5980 * Added colored prompts using Nathan's new code. Colors are
5986 * Added colored prompts using Nathan's new code. Colors are
5981 currently hardwired, they can be user-configurable. For
5987 currently hardwired, they can be user-configurable. For
5982 developers, they can be chosen in file ipythonlib.py, at the
5988 developers, they can be chosen in file ipythonlib.py, at the
5983 beginning of the CachedOutput class def.
5989 beginning of the CachedOutput class def.
5984
5990
5985 2001-11-11 Fernando Perez <fperez@colorado.edu>
5991 2001-11-11 Fernando Perez <fperez@colorado.edu>
5986
5992
5987 * Version 0.1.5 released, 0.1.6 opened for further work.
5993 * Version 0.1.5 released, 0.1.6 opened for further work.
5988
5994
5989 * Changed magic_env to *return* the environment as a dict (not to
5995 * Changed magic_env to *return* the environment as a dict (not to
5990 print it). This way it prints, but it can also be processed.
5996 print it). This way it prints, but it can also be processed.
5991
5997
5992 * Added Verbose exception reporting to interactive
5998 * Added Verbose exception reporting to interactive
5993 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5999 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5994 traceback. Had to make some changes to the ultraTB file. This is
6000 traceback. Had to make some changes to the ultraTB file. This is
5995 probably the last 'big' thing in my mental todo list. This ties
6001 probably the last 'big' thing in my mental todo list. This ties
5996 in with the next entry:
6002 in with the next entry:
5997
6003
5998 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6004 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5999 has to specify is Plain, Color or Verbose for all exception
6005 has to specify is Plain, Color or Verbose for all exception
6000 handling.
6006 handling.
6001
6007
6002 * Removed ShellServices option. All this can really be done via
6008 * Removed ShellServices option. All this can really be done via
6003 the magic system. It's easier to extend, cleaner and has automatic
6009 the magic system. It's easier to extend, cleaner and has automatic
6004 namespace protection and documentation.
6010 namespace protection and documentation.
6005
6011
6006 2001-11-09 Fernando Perez <fperez@colorado.edu>
6012 2001-11-09 Fernando Perez <fperez@colorado.edu>
6007
6013
6008 * Fixed bug in output cache flushing (missing parameter to
6014 * Fixed bug in output cache flushing (missing parameter to
6009 __init__). Other small bugs fixed (found using pychecker).
6015 __init__). Other small bugs fixed (found using pychecker).
6010
6016
6011 * Version 0.1.4 opened for bugfixing.
6017 * Version 0.1.4 opened for bugfixing.
6012
6018
6013 2001-11-07 Fernando Perez <fperez@colorado.edu>
6019 2001-11-07 Fernando Perez <fperez@colorado.edu>
6014
6020
6015 * Version 0.1.3 released, mainly because of the raw_input bug.
6021 * Version 0.1.3 released, mainly because of the raw_input bug.
6016
6022
6017 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6023 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6018 and when testing for whether things were callable, a call could
6024 and when testing for whether things were callable, a call could
6019 actually be made to certain functions. They would get called again
6025 actually be made to certain functions. They would get called again
6020 once 'really' executed, with a resulting double call. A disaster
6026 once 'really' executed, with a resulting double call. A disaster
6021 in many cases (list.reverse() would never work!).
6027 in many cases (list.reverse() would never work!).
6022
6028
6023 * Removed prefilter() function, moved its code to raw_input (which
6029 * Removed prefilter() function, moved its code to raw_input (which
6024 after all was just a near-empty caller for prefilter). This saves
6030 after all was just a near-empty caller for prefilter). This saves
6025 a function call on every prompt, and simplifies the class a tiny bit.
6031 a function call on every prompt, and simplifies the class a tiny bit.
6026
6032
6027 * Fix _ip to __ip name in magic example file.
6033 * Fix _ip to __ip name in magic example file.
6028
6034
6029 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6035 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6030 work with non-gnu versions of tar.
6036 work with non-gnu versions of tar.
6031
6037
6032 2001-11-06 Fernando Perez <fperez@colorado.edu>
6038 2001-11-06 Fernando Perez <fperez@colorado.edu>
6033
6039
6034 * Version 0.1.2. Just to keep track of the recent changes.
6040 * Version 0.1.2. Just to keep track of the recent changes.
6035
6041
6036 * Fixed nasty bug in output prompt routine. It used to check 'if
6042 * Fixed nasty bug in output prompt routine. It used to check 'if
6037 arg != None...'. Problem is, this fails if arg implements a
6043 arg != None...'. Problem is, this fails if arg implements a
6038 special comparison (__cmp__) which disallows comparing to
6044 special comparison (__cmp__) which disallows comparing to
6039 None. Found it when trying to use the PhysicalQuantity module from
6045 None. Found it when trying to use the PhysicalQuantity module from
6040 ScientificPython.
6046 ScientificPython.
6041
6047
6042 2001-11-05 Fernando Perez <fperez@colorado.edu>
6048 2001-11-05 Fernando Perez <fperez@colorado.edu>
6043
6049
6044 * Also added dirs. Now the pushd/popd/dirs family functions
6050 * Also added dirs. Now the pushd/popd/dirs family functions
6045 basically like the shell, with the added convenience of going home
6051 basically like the shell, with the added convenience of going home
6046 when called with no args.
6052 when called with no args.
6047
6053
6048 * pushd/popd slightly modified to mimic shell behavior more
6054 * pushd/popd slightly modified to mimic shell behavior more
6049 closely.
6055 closely.
6050
6056
6051 * Added env,pushd,popd from ShellServices as magic functions. I
6057 * Added env,pushd,popd from ShellServices as magic functions. I
6052 think the cleanest will be to port all desired functions from
6058 think the cleanest will be to port all desired functions from
6053 ShellServices as magics and remove ShellServices altogether. This
6059 ShellServices as magics and remove ShellServices altogether. This
6054 will provide a single, clean way of adding functionality
6060 will provide a single, clean way of adding functionality
6055 (shell-type or otherwise) to IP.
6061 (shell-type or otherwise) to IP.
6056
6062
6057 2001-11-04 Fernando Perez <fperez@colorado.edu>
6063 2001-11-04 Fernando Perez <fperez@colorado.edu>
6058
6064
6059 * Added .ipython/ directory to sys.path. This way users can keep
6065 * Added .ipython/ directory to sys.path. This way users can keep
6060 customizations there and access them via import.
6066 customizations there and access them via import.
6061
6067
6062 2001-11-03 Fernando Perez <fperez@colorado.edu>
6068 2001-11-03 Fernando Perez <fperez@colorado.edu>
6063
6069
6064 * Opened version 0.1.1 for new changes.
6070 * Opened version 0.1.1 for new changes.
6065
6071
6066 * Changed version number to 0.1.0: first 'public' release, sent to
6072 * Changed version number to 0.1.0: first 'public' release, sent to
6067 Nathan and Janko.
6073 Nathan and Janko.
6068
6074
6069 * Lots of small fixes and tweaks.
6075 * Lots of small fixes and tweaks.
6070
6076
6071 * Minor changes to whos format. Now strings are shown, snipped if
6077 * Minor changes to whos format. Now strings are shown, snipped if
6072 too long.
6078 too long.
6073
6079
6074 * Changed ShellServices to work on __main__ so they show up in @who
6080 * Changed ShellServices to work on __main__ so they show up in @who
6075
6081
6076 * Help also works with ? at the end of a line:
6082 * Help also works with ? at the end of a line:
6077 ?sin and sin?
6083 ?sin and sin?
6078 both produce the same effect. This is nice, as often I use the
6084 both produce the same effect. This is nice, as often I use the
6079 tab-complete to find the name of a method, but I used to then have
6085 tab-complete to find the name of a method, but I used to then have
6080 to go to the beginning of the line to put a ? if I wanted more
6086 to go to the beginning of the line to put a ? if I wanted more
6081 info. Now I can just add the ? and hit return. Convenient.
6087 info. Now I can just add the ? and hit return. Convenient.
6082
6088
6083 2001-11-02 Fernando Perez <fperez@colorado.edu>
6089 2001-11-02 Fernando Perez <fperez@colorado.edu>
6084
6090
6085 * Python version check (>=2.1) added.
6091 * Python version check (>=2.1) added.
6086
6092
6087 * Added LazyPython documentation. At this point the docs are quite
6093 * Added LazyPython documentation. At this point the docs are quite
6088 a mess. A cleanup is in order.
6094 a mess. A cleanup is in order.
6089
6095
6090 * Auto-installer created. For some bizarre reason, the zipfiles
6096 * Auto-installer created. For some bizarre reason, the zipfiles
6091 module isn't working on my system. So I made a tar version
6097 module isn't working on my system. So I made a tar version
6092 (hopefully the command line options in various systems won't kill
6098 (hopefully the command line options in various systems won't kill
6093 me).
6099 me).
6094
6100
6095 * Fixes to Struct in genutils. Now all dictionary-like methods are
6101 * Fixes to Struct in genutils. Now all dictionary-like methods are
6096 protected (reasonably).
6102 protected (reasonably).
6097
6103
6098 * Added pager function to genutils and changed ? to print usage
6104 * Added pager function to genutils and changed ? to print usage
6099 note through it (it was too long).
6105 note through it (it was too long).
6100
6106
6101 * Added the LazyPython functionality. Works great! I changed the
6107 * Added the LazyPython functionality. Works great! I changed the
6102 auto-quote escape to ';', it's on home row and next to '. But
6108 auto-quote escape to ';', it's on home row and next to '. But
6103 both auto-quote and auto-paren (still /) escapes are command-line
6109 both auto-quote and auto-paren (still /) escapes are command-line
6104 parameters.
6110 parameters.
6105
6111
6106
6112
6107 2001-11-01 Fernando Perez <fperez@colorado.edu>
6113 2001-11-01 Fernando Perez <fperez@colorado.edu>
6108
6114
6109 * Version changed to 0.0.7. Fairly large change: configuration now
6115 * Version changed to 0.0.7. Fairly large change: configuration now
6110 is all stored in a directory, by default .ipython. There, all
6116 is all stored in a directory, by default .ipython. There, all
6111 config files have normal looking names (not .names)
6117 config files have normal looking names (not .names)
6112
6118
6113 * Version 0.0.6 Released first to Lucas and Archie as a test
6119 * Version 0.0.6 Released first to Lucas and Archie as a test
6114 run. Since it's the first 'semi-public' release, change version to
6120 run. Since it's the first 'semi-public' release, change version to
6115 > 0.0.6 for any changes now.
6121 > 0.0.6 for any changes now.
6116
6122
6117 * Stuff I had put in the ipplib.py changelog:
6123 * Stuff I had put in the ipplib.py changelog:
6118
6124
6119 Changes to InteractiveShell:
6125 Changes to InteractiveShell:
6120
6126
6121 - Made the usage message a parameter.
6127 - Made the usage message a parameter.
6122
6128
6123 - Require the name of the shell variable to be given. It's a bit
6129 - Require the name of the shell variable to be given. It's a bit
6124 of a hack, but allows the name 'shell' not to be hardwired in the
6130 of a hack, but allows the name 'shell' not to be hardwired in the
6125 magic (@) handler, which is problematic b/c it requires
6131 magic (@) handler, which is problematic b/c it requires
6126 polluting the global namespace with 'shell'. This in turn is
6132 polluting the global namespace with 'shell'. This in turn is
6127 fragile: if a user redefines a variable called shell, things
6133 fragile: if a user redefines a variable called shell, things
6128 break.
6134 break.
6129
6135
6130 - magic @: all functions available through @ need to be defined
6136 - magic @: all functions available through @ need to be defined
6131 as magic_<name>, even though they can be called simply as
6137 as magic_<name>, even though they can be called simply as
6132 @<name>. This allows the special command @magic to gather
6138 @<name>. This allows the special command @magic to gather
6133 information automatically about all existing magic functions,
6139 information automatically about all existing magic functions,
6134 even if they are run-time user extensions, by parsing the shell
6140 even if they are run-time user extensions, by parsing the shell
6135 instance __dict__ looking for special magic_ names.
6141 instance __dict__ looking for special magic_ names.
6136
6142
6137 - mainloop: added *two* local namespace parameters. This allows
6143 - mainloop: added *two* local namespace parameters. This allows
6138 the class to differentiate between parameters which were there
6144 the class to differentiate between parameters which were there
6139 before and after command line initialization was processed. This
6145 before and after command line initialization was processed. This
6140 way, later @who can show things loaded at startup by the
6146 way, later @who can show things loaded at startup by the
6141 user. This trick was necessary to make session saving/reloading
6147 user. This trick was necessary to make session saving/reloading
6142 really work: ideally after saving/exiting/reloading a session,
6148 really work: ideally after saving/exiting/reloading a session,
6143 *everything* should look the same, including the output of @who. I
6149 *everything* should look the same, including the output of @who. I
6144 was only able to make this work with this double namespace
6150 was only able to make this work with this double namespace
6145 trick.
6151 trick.
6146
6152
6147 - added a header to the logfile which allows (almost) full
6153 - added a header to the logfile which allows (almost) full
6148 session restoring.
6154 session restoring.
6149
6155
6150 - prepend lines beginning with @ or !, with a and log
6156 - prepend lines beginning with @ or !, with a and log
6151 them. Why? !lines: may be useful to know what you did @lines:
6157 them. Why? !lines: may be useful to know what you did @lines:
6152 they may affect session state. So when restoring a session, at
6158 they may affect session state. So when restoring a session, at
6153 least inform the user of their presence. I couldn't quite get
6159 least inform the user of their presence. I couldn't quite get
6154 them to properly re-execute, but at least the user is warned.
6160 them to properly re-execute, but at least the user is warned.
6155
6161
6156 * Started ChangeLog.
6162 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now