##// END OF EJS Templates
Fix http://www.scipy.net/roundup/ipython/issue53, test added (though it must...
fperez -
Show More
@@ -0,0 +1,16 b''
1 """This should be run directly from ipython, and it should NOT crash.
2
3 It can't currently be run via runtests b/c exception handling changes there,
4 and this is precisely testing exception handling problems."""
5
6 ipmagic('xmode verbose')
7
8 src = """
9 class suck(object):
10 def __repr__(self):
11 raise ValueError("who needs repr anyway")
12
13 suck()
14 """
15
16 __IPYTHON__.runlines(src)
@@ -1,857 +1,883 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 1005 2006-01-12 08:39:26Z fperez $"""
63 $Id: ultraTB.py 1154 2006-02-11 23:20:05Z 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 self.color_scheme_table.set_active_scheme(*args,**kw)
208 self.color_scheme_table.set_active_scheme(*args,**kw)
209 # for convenience, set Colors to the active scheme
209 # for convenience, set Colors to the active scheme
210 self.Colors = self.color_scheme_table.active_colors
210 self.Colors = self.color_scheme_table.active_colors
211
211
212 def color_toggle(self):
212 def color_toggle(self):
213 """Toggle between the currently active color scheme and NoColor."""
213 """Toggle between the currently active color scheme and NoColor."""
214
214
215 if self.color_scheme_table.active_scheme_name == 'NoColor':
215 if self.color_scheme_table.active_scheme_name == 'NoColor':
216 self.color_scheme_table.set_active_scheme(self.old_scheme)
216 self.color_scheme_table.set_active_scheme(self.old_scheme)
217 self.Colors = self.color_scheme_table.active_colors
217 self.Colors = self.color_scheme_table.active_colors
218 else:
218 else:
219 self.old_scheme = self.color_scheme_table.active_scheme_name
219 self.old_scheme = self.color_scheme_table.active_scheme_name
220 self.color_scheme_table.set_active_scheme('NoColor')
220 self.color_scheme_table.set_active_scheme('NoColor')
221 self.Colors = self.color_scheme_table.active_colors
221 self.Colors = self.color_scheme_table.active_colors
222
222
223 #---------------------------------------------------------------------------
223 #---------------------------------------------------------------------------
224 class ListTB(TBTools):
224 class ListTB(TBTools):
225 """Print traceback information from a traceback list, with optional color.
225 """Print traceback information from a traceback list, with optional color.
226
226
227 Calling: requires 3 arguments:
227 Calling: requires 3 arguments:
228 (etype, evalue, elist)
228 (etype, evalue, elist)
229 as would be obtained by:
229 as would be obtained by:
230 etype, evalue, tb = sys.exc_info()
230 etype, evalue, tb = sys.exc_info()
231 if tb:
231 if tb:
232 elist = traceback.extract_tb(tb)
232 elist = traceback.extract_tb(tb)
233 else:
233 else:
234 elist = None
234 elist = None
235
235
236 It can thus be used by programs which need to process the traceback before
236 It can thus be used by programs which need to process the traceback before
237 printing (such as console replacements based on the code module from the
237 printing (such as console replacements based on the code module from the
238 standard library).
238 standard library).
239
239
240 Because they are meant to be called without a full traceback (only a
240 Because they are meant to be called without a full traceback (only a
241 list), instances of this class can't call the interactive pdb debugger."""
241 list), instances of this class can't call the interactive pdb debugger."""
242
242
243 def __init__(self,color_scheme = 'NoColor'):
243 def __init__(self,color_scheme = 'NoColor'):
244 TBTools.__init__(self,color_scheme = color_scheme,call_pdb=0)
244 TBTools.__init__(self,color_scheme = color_scheme,call_pdb=0)
245
245
246 def __call__(self, etype, value, elist):
246 def __call__(self, etype, value, elist):
247 print >> Term.cerr, self.text(etype,value,elist)
247 print >> Term.cerr, self.text(etype,value,elist)
248
248
249 def text(self,etype, value, elist,context=5):
249 def text(self,etype, value, elist,context=5):
250 """Return a color formatted string with the traceback info."""
250 """Return a color formatted string with the traceback info."""
251
251
252 Colors = self.Colors
252 Colors = self.Colors
253 out_string = ['%s%s%s\n' % (Colors.topline,'-'*60,Colors.Normal)]
253 out_string = ['%s%s%s\n' % (Colors.topline,'-'*60,Colors.Normal)]
254 if elist:
254 if elist:
255 out_string.append('Traceback %s(most recent call last)%s:' % \
255 out_string.append('Traceback %s(most recent call last)%s:' % \
256 (Colors.normalEm, Colors.Normal) + '\n')
256 (Colors.normalEm, Colors.Normal) + '\n')
257 out_string.extend(self._format_list(elist))
257 out_string.extend(self._format_list(elist))
258 lines = self._format_exception_only(etype, value)
258 lines = self._format_exception_only(etype, value)
259 for line in lines[:-1]:
259 for line in lines[:-1]:
260 out_string.append(" "+line)
260 out_string.append(" "+line)
261 out_string.append(lines[-1])
261 out_string.append(lines[-1])
262 return ''.join(out_string)
262 return ''.join(out_string)
263
263
264 def _format_list(self, extracted_list):
264 def _format_list(self, extracted_list):
265 """Format a list of traceback entry tuples for printing.
265 """Format a list of traceback entry tuples for printing.
266
266
267 Given a list of tuples as returned by extract_tb() or
267 Given a list of tuples as returned by extract_tb() or
268 extract_stack(), return a list of strings ready for printing.
268 extract_stack(), return a list of strings ready for printing.
269 Each string in the resulting list corresponds to the item with the
269 Each string in the resulting list corresponds to the item with the
270 same index in the argument list. Each string ends in a newline;
270 same index in the argument list. Each string ends in a newline;
271 the strings may contain internal newlines as well, for those items
271 the strings may contain internal newlines as well, for those items
272 whose source text line is not None.
272 whose source text line is not None.
273
273
274 Lifted almost verbatim from traceback.py
274 Lifted almost verbatim from traceback.py
275 """
275 """
276
276
277 Colors = self.Colors
277 Colors = self.Colors
278 list = []
278 list = []
279 for filename, lineno, name, line in extracted_list[:-1]:
279 for filename, lineno, name, line in extracted_list[:-1]:
280 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
280 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
281 (Colors.filename, filename, Colors.Normal,
281 (Colors.filename, filename, Colors.Normal,
282 Colors.lineno, lineno, Colors.Normal,
282 Colors.lineno, lineno, Colors.Normal,
283 Colors.name, name, Colors.Normal)
283 Colors.name, name, Colors.Normal)
284 if line:
284 if line:
285 item = item + ' %s\n' % line.strip()
285 item = item + ' %s\n' % line.strip()
286 list.append(item)
286 list.append(item)
287 # Emphasize the last entry
287 # Emphasize the last entry
288 filename, lineno, name, line = extracted_list[-1]
288 filename, lineno, name, line = extracted_list[-1]
289 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
289 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
290 (Colors.normalEm,
290 (Colors.normalEm,
291 Colors.filenameEm, filename, Colors.normalEm,
291 Colors.filenameEm, filename, Colors.normalEm,
292 Colors.linenoEm, lineno, Colors.normalEm,
292 Colors.linenoEm, lineno, Colors.normalEm,
293 Colors.nameEm, name, Colors.normalEm,
293 Colors.nameEm, name, Colors.normalEm,
294 Colors.Normal)
294 Colors.Normal)
295 if line:
295 if line:
296 item = item + '%s %s%s\n' % (Colors.line, line.strip(),
296 item = item + '%s %s%s\n' % (Colors.line, line.strip(),
297 Colors.Normal)
297 Colors.Normal)
298 list.append(item)
298 list.append(item)
299 return list
299 return list
300
300
301 def _format_exception_only(self, etype, value):
301 def _format_exception_only(self, etype, value):
302 """Format the exception part of a traceback.
302 """Format the exception part of a traceback.
303
303
304 The arguments are the exception type and value such as given by
304 The arguments are the exception type and value such as given by
305 sys.exc_info()[:2]. The return value is a list of strings, each ending
305 sys.exc_info()[:2]. The return value is a list of strings, each ending
306 in a newline. Normally, the list contains a single string; however,
306 in a newline. Normally, the list contains a single string; however,
307 for SyntaxError exceptions, it contains several lines that (when
307 for SyntaxError exceptions, it contains several lines that (when
308 printed) display detailed information about where the syntax error
308 printed) display detailed information about where the syntax error
309 occurred. The message indicating which exception occurred is the
309 occurred. The message indicating which exception occurred is the
310 always last string in the list.
310 always last string in the list.
311
311
312 Also lifted nearly verbatim from traceback.py
312 Also lifted nearly verbatim from traceback.py
313 """
313 """
314
314
315 Colors = self.Colors
315 Colors = self.Colors
316 list = []
316 list = []
317 if type(etype) == types.ClassType:
317 if type(etype) == types.ClassType:
318 stype = Colors.excName + etype.__name__ + Colors.Normal
318 stype = Colors.excName + etype.__name__ + Colors.Normal
319 else:
319 else:
320 stype = etype # String exceptions don't get special coloring
320 stype = etype # String exceptions don't get special coloring
321 if value is None:
321 if value is None:
322 list.append( str(stype) + '\n')
322 list.append( str(stype) + '\n')
323 else:
323 else:
324 if etype is SyntaxError:
324 if etype is SyntaxError:
325 try:
325 try:
326 msg, (filename, lineno, offset, line) = value
326 msg, (filename, lineno, offset, line) = value
327 except:
327 except:
328 pass
328 pass
329 else:
329 else:
330 #print 'filename is',filename # dbg
330 #print 'filename is',filename # dbg
331 if not filename: filename = "<string>"
331 if not filename: filename = "<string>"
332 list.append('%s File %s"%s"%s, line %s%d%s\n' % \
332 list.append('%s File %s"%s"%s, line %s%d%s\n' % \
333 (Colors.normalEm,
333 (Colors.normalEm,
334 Colors.filenameEm, filename, Colors.normalEm,
334 Colors.filenameEm, filename, Colors.normalEm,
335 Colors.linenoEm, lineno, Colors.Normal ))
335 Colors.linenoEm, lineno, Colors.Normal ))
336 if line is not None:
336 if line is not None:
337 i = 0
337 i = 0
338 while i < len(line) and line[i].isspace():
338 while i < len(line) and line[i].isspace():
339 i = i+1
339 i = i+1
340 list.append('%s %s%s\n' % (Colors.line,
340 list.append('%s %s%s\n' % (Colors.line,
341 line.strip(),
341 line.strip(),
342 Colors.Normal))
342 Colors.Normal))
343 if offset is not None:
343 if offset is not None:
344 s = ' '
344 s = ' '
345 for c in line[i:offset-1]:
345 for c in line[i:offset-1]:
346 if c.isspace():
346 if c.isspace():
347 s = s + c
347 s = s + c
348 else:
348 else:
349 s = s + ' '
349 s = s + ' '
350 list.append('%s%s^%s\n' % (Colors.caret, s,
350 list.append('%s%s^%s\n' % (Colors.caret, s,
351 Colors.Normal) )
351 Colors.Normal) )
352 value = msg
352 value = msg
353 s = self._some_str(value)
353 s = self._some_str(value)
354 if s:
354 if s:
355 list.append('%s%s:%s %s\n' % (str(stype), Colors.excName,
355 list.append('%s%s:%s %s\n' % (str(stype), Colors.excName,
356 Colors.Normal, s))
356 Colors.Normal, s))
357 else:
357 else:
358 list.append('%s\n' % str(stype))
358 list.append('%s\n' % str(stype))
359 return list
359 return list
360
360
361 def _some_str(self, value):
361 def _some_str(self, value):
362 # Lifted from traceback.py
362 # Lifted from traceback.py
363 try:
363 try:
364 return str(value)
364 return str(value)
365 except:
365 except:
366 return '<unprintable %s object>' % type(value).__name__
366 return '<unprintable %s object>' % type(value).__name__
367
367
368 #----------------------------------------------------------------------------
368 #----------------------------------------------------------------------------
369 class VerboseTB(TBTools):
369 class VerboseTB(TBTools):
370 """A port of Ka-Ping Yee's cgitb.py module that outputs color text instead
370 """A port of Ka-Ping Yee's cgitb.py module that outputs color text instead
371 of HTML. Requires inspect and pydoc. Crazy, man.
371 of HTML. Requires inspect and pydoc. Crazy, man.
372
372
373 Modified version which optionally strips the topmost entries from the
373 Modified version which optionally strips the topmost entries from the
374 traceback, to be used with alternate interpreters (because their own code
374 traceback, to be used with alternate interpreters (because their own code
375 would appear in the traceback)."""
375 would appear in the traceback)."""
376
376
377 def __init__(self,color_scheme = 'Linux',tb_offset=0,long_header=0,
377 def __init__(self,color_scheme = 'Linux',tb_offset=0,long_header=0,
378 call_pdb = 0, include_vars=1):
378 call_pdb = 0, include_vars=1):
379 """Specify traceback offset, headers and color scheme.
379 """Specify traceback offset, headers and color scheme.
380
380
381 Define how many frames to drop from the tracebacks. Calling it with
381 Define how many frames to drop from the tracebacks. Calling it with
382 tb_offset=1 allows use of this handler in interpreters which will have
382 tb_offset=1 allows use of this handler in interpreters which will have
383 their own code at the top of the traceback (VerboseTB will first
383 their own code at the top of the traceback (VerboseTB will first
384 remove that frame before printing the traceback info)."""
384 remove that frame before printing the traceback info)."""
385 TBTools.__init__(self,color_scheme=color_scheme,call_pdb=call_pdb)
385 TBTools.__init__(self,color_scheme=color_scheme,call_pdb=call_pdb)
386 self.tb_offset = tb_offset
386 self.tb_offset = tb_offset
387 self.long_header = long_header
387 self.long_header = long_header
388 self.include_vars = include_vars
388 self.include_vars = include_vars
389
389
390 def text(self, etype, evalue, etb, context=5):
390 def text(self, etype, evalue, etb, context=5):
391 """Return a nice text document describing the traceback."""
391 """Return a nice text document describing the traceback."""
392
392
393 # some locals
393 # some locals
394 Colors = self.Colors # just a shorthand + quicker name lookup
394 Colors = self.Colors # just a shorthand + quicker name lookup
395 ColorsNormal = Colors.Normal # used a lot
395 ColorsNormal = Colors.Normal # used a lot
396 indent = ' '*INDENT_SIZE
396 indent = ' '*INDENT_SIZE
397 text_repr = pydoc.text.repr
398 exc = '%s%s%s' % (Colors.excName, str(etype), ColorsNormal)
397 exc = '%s%s%s' % (Colors.excName, str(etype), ColorsNormal)
399 em_normal = '%s\n%s%s' % (Colors.valEm, indent,ColorsNormal)
398 em_normal = '%s\n%s%s' % (Colors.valEm, indent,ColorsNormal)
400 undefined = '%sundefined%s' % (Colors.em, ColorsNormal)
399 undefined = '%sundefined%s' % (Colors.em, ColorsNormal)
401
400
402 # some internal-use functions
401 # some internal-use functions
402 def text_repr(value):
403 """Hopefully pretty robust repr equivalent."""
404 # this is pretty horrible but should always return *something*
405 try:
406 return pydoc.text.repr(value)
407 except KeyboardInterrupt:
408 raise
409 except:
410 try:
411 return repr(value)
412 except KeyboardInterrupt:
413 raise
414 except:
415 try:
416 # all still in an except block so we catch
417 # getattr raising
418 name = getattr(value, '__name__', None)
419 if name:
420 # ick, recursion
421 return text_repr(name)
422 klass = getattr(value, '__class__', None)
423 if klass:
424 return '%s instance' % text_repr(klass)
425 except KeyboardInterrupt:
426 raise
427 except:
428 return 'UNRECOVERABLE REPR FAILURE'
403 def eqrepr(value, repr=text_repr): return '=%s' % repr(value)
429 def eqrepr(value, repr=text_repr): return '=%s' % repr(value)
404 def nullrepr(value, repr=text_repr): return ''
430 def nullrepr(value, repr=text_repr): return ''
405
431
406 # meat of the code begins
432 # meat of the code begins
407 if type(etype) is types.ClassType:
433 if type(etype) is types.ClassType:
408 etype = etype.__name__
434 etype = etype.__name__
409
435
410 if self.long_header:
436 if self.long_header:
411 # Header with the exception type, python version, and date
437 # Header with the exception type, python version, and date
412 pyver = 'Python ' + string.split(sys.version)[0] + ': ' + sys.executable
438 pyver = 'Python ' + string.split(sys.version)[0] + ': ' + sys.executable
413 date = time.ctime(time.time())
439 date = time.ctime(time.time())
414
440
415 head = '%s%s%s\n%s%s%s\n%s' % (Colors.topline, '-'*75, ColorsNormal,
441 head = '%s%s%s\n%s%s%s\n%s' % (Colors.topline, '-'*75, ColorsNormal,
416 exc, ' '*(75-len(str(etype))-len(pyver)),
442 exc, ' '*(75-len(str(etype))-len(pyver)),
417 pyver, string.rjust(date, 75) )
443 pyver, string.rjust(date, 75) )
418 head += "\nA problem occured executing Python code. Here is the sequence of function"\
444 head += "\nA problem occured executing Python code. Here is the sequence of function"\
419 "\ncalls leading up to the error, with the most recent (innermost) call last."
445 "\ncalls leading up to the error, with the most recent (innermost) call last."
420 else:
446 else:
421 # Simplified header
447 # Simplified header
422 head = '%s%s%s\n%s%s' % (Colors.topline, '-'*75, ColorsNormal,exc,
448 head = '%s%s%s\n%s%s' % (Colors.topline, '-'*75, ColorsNormal,exc,
423 string.rjust('Traceback (most recent call last)',
449 string.rjust('Traceback (most recent call last)',
424 75 - len(str(etype)) ) )
450 75 - len(str(etype)) ) )
425 frames = []
451 frames = []
426 # Flush cache before calling inspect. This helps alleviate some of the
452 # Flush cache before calling inspect. This helps alleviate some of the
427 # problems with python 2.3's inspect.py.
453 # problems with python 2.3's inspect.py.
428 linecache.checkcache()
454 linecache.checkcache()
429 # Drop topmost frames if requested
455 # Drop topmost frames if requested
430 try:
456 try:
431 # Try the default getinnerframes and Alex's: Alex's fixes some
457 # Try the default getinnerframes and Alex's: Alex's fixes some
432 # problems, but it generates empty tracebacks for console errors
458 # problems, but it generates empty tracebacks for console errors
433 # (5 blanks lines) where none should be returned.
459 # (5 blanks lines) where none should be returned.
434 #records = inspect.getinnerframes(etb, context)[self.tb_offset:]
460 #records = inspect.getinnerframes(etb, context)[self.tb_offset:]
435 #print 'python records:', records # dbg
461 #print 'python records:', records # dbg
436 records = _fixed_getinnerframes(etb, context,self.tb_offset)
462 records = _fixed_getinnerframes(etb, context,self.tb_offset)
437 #print 'alex records:', records # dbg
463 #print 'alex records:', records # dbg
438 except:
464 except:
439
465
440 # FIXME: I've been getting many crash reports from python 2.3
466 # FIXME: I've been getting many crash reports from python 2.3
441 # users, traceable to inspect.py. If I can find a small test-case
467 # users, traceable to inspect.py. If I can find a small test-case
442 # to reproduce this, I should either write a better workaround or
468 # to reproduce this, I should either write a better workaround or
443 # file a bug report against inspect (if that's the real problem).
469 # file a bug report against inspect (if that's the real problem).
444 # So far, I haven't been able to find an isolated example to
470 # So far, I haven't been able to find an isolated example to
445 # reproduce the problem.
471 # reproduce the problem.
446 inspect_error()
472 inspect_error()
447 traceback.print_exc(file=Term.cerr)
473 traceback.print_exc(file=Term.cerr)
448 info('\nUnfortunately, your original traceback can not be constructed.\n')
474 info('\nUnfortunately, your original traceback can not be constructed.\n')
449 return ''
475 return ''
450
476
451 # build some color string templates outside these nested loops
477 # build some color string templates outside these nested loops
452 tpl_link = '%s%%s%s' % (Colors.filenameEm,ColorsNormal)
478 tpl_link = '%s%%s%s' % (Colors.filenameEm,ColorsNormal)
453 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
479 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
454 ColorsNormal)
480 ColorsNormal)
455 tpl_call_fail = 'in %s%%s%s(***failed resolving arguments***)%s' % \
481 tpl_call_fail = 'in %s%%s%s(***failed resolving arguments***)%s' % \
456 (Colors.vName, Colors.valEm, ColorsNormal)
482 (Colors.vName, Colors.valEm, ColorsNormal)
457 tpl_local_var = '%s%%s%s' % (Colors.vName, ColorsNormal)
483 tpl_local_var = '%s%%s%s' % (Colors.vName, ColorsNormal)
458 tpl_global_var = '%sglobal%s %s%%s%s' % (Colors.em, ColorsNormal,
484 tpl_global_var = '%sglobal%s %s%%s%s' % (Colors.em, ColorsNormal,
459 Colors.vName, ColorsNormal)
485 Colors.vName, ColorsNormal)
460 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
486 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
461 tpl_line = '%s%%s%s %%s' % (Colors.lineno, ColorsNormal)
487 tpl_line = '%s%%s%s %%s' % (Colors.lineno, ColorsNormal)
462 tpl_line_em = '%s%%s%s %%s%s' % (Colors.linenoEm,Colors.line,
488 tpl_line_em = '%s%%s%s %%s%s' % (Colors.linenoEm,Colors.line,
463 ColorsNormal)
489 ColorsNormal)
464
490
465 # now, loop over all records printing context and info
491 # now, loop over all records printing context and info
466 abspath = os.path.abspath
492 abspath = os.path.abspath
467 for frame, file, lnum, func, lines, index in records:
493 for frame, file, lnum, func, lines, index in records:
468 #print '*** record:',file,lnum,func,lines,index # dbg
494 #print '*** record:',file,lnum,func,lines,index # dbg
469 try:
495 try:
470 file = file and abspath(file) or '?'
496 file = file and abspath(file) or '?'
471 except OSError:
497 except OSError:
472 # if file is '<console>' or something not in the filesystem,
498 # if file is '<console>' or something not in the filesystem,
473 # the abspath call will throw an OSError. Just ignore it and
499 # the abspath call will throw an OSError. Just ignore it and
474 # keep the original file string.
500 # keep the original file string.
475 pass
501 pass
476 link = tpl_link % file
502 link = tpl_link % file
477 try:
503 try:
478 args, varargs, varkw, locals = inspect.getargvalues(frame)
504 args, varargs, varkw, locals = inspect.getargvalues(frame)
479 except:
505 except:
480 # This can happen due to a bug in python2.3. We should be
506 # This can happen due to a bug in python2.3. We should be
481 # able to remove this try/except when 2.4 becomes a
507 # able to remove this try/except when 2.4 becomes a
482 # requirement. Bug details at http://python.org/sf/1005466
508 # requirement. Bug details at http://python.org/sf/1005466
483 inspect_error()
509 inspect_error()
484 traceback.print_exc(file=Term.cerr)
510 traceback.print_exc(file=Term.cerr)
485 info("\nIPython's exception reporting continues...\n")
511 info("\nIPython's exception reporting continues...\n")
486
512
487 if func == '?':
513 if func == '?':
488 call = ''
514 call = ''
489 else:
515 else:
490 # Decide whether to include variable details or not
516 # Decide whether to include variable details or not
491 var_repr = self.include_vars and eqrepr or nullrepr
517 var_repr = self.include_vars and eqrepr or nullrepr
492 try:
518 try:
493 call = tpl_call % (func,inspect.formatargvalues(args,
519 call = tpl_call % (func,inspect.formatargvalues(args,
494 varargs, varkw,
520 varargs, varkw,
495 locals,formatvalue=var_repr))
521 locals,formatvalue=var_repr))
496 except KeyError:
522 except KeyError:
497 # Very odd crash from inspect.formatargvalues(). The
523 # Very odd crash from inspect.formatargvalues(). The
498 # scenario under which it appeared was a call to
524 # scenario under which it appeared was a call to
499 # view(array,scale) in NumTut.view.view(), where scale had
525 # view(array,scale) in NumTut.view.view(), where scale had
500 # been defined as a scalar (it should be a tuple). Somehow
526 # been defined as a scalar (it should be a tuple). Somehow
501 # inspect messes up resolving the argument list of view()
527 # inspect messes up resolving the argument list of view()
502 # and barfs out. At some point I should dig into this one
528 # and barfs out. At some point I should dig into this one
503 # and file a bug report about it.
529 # and file a bug report about it.
504 inspect_error()
530 inspect_error()
505 traceback.print_exc(file=Term.cerr)
531 traceback.print_exc(file=Term.cerr)
506 info("\nIPython's exception reporting continues...\n")
532 info("\nIPython's exception reporting continues...\n")
507 call = tpl_call_fail % func
533 call = tpl_call_fail % func
508
534
509 # Initialize a list of names on the current line, which the
535 # Initialize a list of names on the current line, which the
510 # tokenizer below will populate.
536 # tokenizer below will populate.
511 names = []
537 names = []
512
538
513 def tokeneater(token_type, token, start, end, line):
539 def tokeneater(token_type, token, start, end, line):
514 """Stateful tokeneater which builds dotted names.
540 """Stateful tokeneater which builds dotted names.
515
541
516 The list of names it appends to (from the enclosing scope) can
542 The list of names it appends to (from the enclosing scope) can
517 contain repeated composite names. This is unavoidable, since
543 contain repeated composite names. This is unavoidable, since
518 there is no way to disambguate partial dotted structures until
544 there is no way to disambguate partial dotted structures until
519 the full list is known. The caller is responsible for pruning
545 the full list is known. The caller is responsible for pruning
520 the final list of duplicates before using it."""
546 the final list of duplicates before using it."""
521
547
522 # build composite names
548 # build composite names
523 if token == '.':
549 if token == '.':
524 try:
550 try:
525 names[-1] += '.'
551 names[-1] += '.'
526 # store state so the next token is added for x.y.z names
552 # store state so the next token is added for x.y.z names
527 tokeneater.name_cont = True
553 tokeneater.name_cont = True
528 return
554 return
529 except IndexError:
555 except IndexError:
530 pass
556 pass
531 if token_type == tokenize.NAME and token not in keyword.kwlist:
557 if token_type == tokenize.NAME and token not in keyword.kwlist:
532 if tokeneater.name_cont:
558 if tokeneater.name_cont:
533 # Dotted names
559 # Dotted names
534 names[-1] += token
560 names[-1] += token
535 tokeneater.name_cont = False
561 tokeneater.name_cont = False
536 else:
562 else:
537 # Regular new names. We append everything, the caller
563 # Regular new names. We append everything, the caller
538 # will be responsible for pruning the list later. It's
564 # will be responsible for pruning the list later. It's
539 # very tricky to try to prune as we go, b/c composite
565 # very tricky to try to prune as we go, b/c composite
540 # names can fool us. The pruning at the end is easy
566 # names can fool us. The pruning at the end is easy
541 # to do (or the caller can print a list with repeated
567 # to do (or the caller can print a list with repeated
542 # names if so desired.
568 # names if so desired.
543 names.append(token)
569 names.append(token)
544 elif token_type == tokenize.NEWLINE:
570 elif token_type == tokenize.NEWLINE:
545 raise IndexError
571 raise IndexError
546 # we need to store a bit of state in the tokenizer to build
572 # we need to store a bit of state in the tokenizer to build
547 # dotted names
573 # dotted names
548 tokeneater.name_cont = False
574 tokeneater.name_cont = False
549
575
550 def linereader(file=file, lnum=[lnum], getline=linecache.getline):
576 def linereader(file=file, lnum=[lnum], getline=linecache.getline):
551 line = getline(file, lnum[0])
577 line = getline(file, lnum[0])
552 lnum[0] += 1
578 lnum[0] += 1
553 return line
579 return line
554
580
555 # Build the list of names on this line of code where the exception
581 # Build the list of names on this line of code where the exception
556 # occurred.
582 # occurred.
557 try:
583 try:
558 # This builds the names list in-place by capturing it from the
584 # This builds the names list in-place by capturing it from the
559 # enclosing scope.
585 # enclosing scope.
560 tokenize.tokenize(linereader, tokeneater)
586 tokenize.tokenize(linereader, tokeneater)
561 except IndexError:
587 except IndexError:
562 # signals exit of tokenizer
588 # signals exit of tokenizer
563 pass
589 pass
564 except tokenize.TokenError,msg:
590 except tokenize.TokenError,msg:
565 _m = ("An unexpected error occurred while tokenizing input\n"
591 _m = ("An unexpected error occurred while tokenizing input\n"
566 "The following traceback may be corrupted or invalid\n"
592 "The following traceback may be corrupted or invalid\n"
567 "The error message is: %s\n" % msg)
593 "The error message is: %s\n" % msg)
568 error(_m)
594 error(_m)
569
595
570 # prune names list of duplicates, but keep the right order
596 # prune names list of duplicates, but keep the right order
571 unique_names = uniq_stable(names)
597 unique_names = uniq_stable(names)
572
598
573 # Start loop over vars
599 # Start loop over vars
574 lvals = []
600 lvals = []
575 if self.include_vars:
601 if self.include_vars:
576 for name_full in unique_names:
602 for name_full in unique_names:
577 name_base = name_full.split('.',1)[0]
603 name_base = name_full.split('.',1)[0]
578 if name_base in frame.f_code.co_varnames:
604 if name_base in frame.f_code.co_varnames:
579 if locals.has_key(name_base):
605 if locals.has_key(name_base):
580 try:
606 try:
581 value = repr(eval(name_full,locals))
607 value = repr(eval(name_full,locals))
582 except:
608 except:
583 value = undefined
609 value = undefined
584 else:
610 else:
585 value = undefined
611 value = undefined
586 name = tpl_local_var % name_full
612 name = tpl_local_var % name_full
587 else:
613 else:
588 if frame.f_globals.has_key(name_base):
614 if frame.f_globals.has_key(name_base):
589 try:
615 try:
590 value = repr(eval(name_full,frame.f_globals))
616 value = repr(eval(name_full,frame.f_globals))
591 except:
617 except:
592 value = undefined
618 value = undefined
593 else:
619 else:
594 value = undefined
620 value = undefined
595 name = tpl_global_var % name_full
621 name = tpl_global_var % name_full
596 lvals.append(tpl_name_val % (name,value))
622 lvals.append(tpl_name_val % (name,value))
597 if lvals:
623 if lvals:
598 lvals = '%s%s' % (indent,em_normal.join(lvals))
624 lvals = '%s%s' % (indent,em_normal.join(lvals))
599 else:
625 else:
600 lvals = ''
626 lvals = ''
601
627
602 level = '%s %s\n' % (link,call)
628 level = '%s %s\n' % (link,call)
603
629
604 if index is None:
630 if index is None:
605 frames.append(level)
631 frames.append(level)
606 else:
632 else:
607 frames.append('%s%s' % (level,''.join(
633 frames.append('%s%s' % (level,''.join(
608 _formatTracebackLines(lnum,index,lines,self.Colors,lvals))))
634 _formatTracebackLines(lnum,index,lines,self.Colors,lvals))))
609
635
610 # Get (safely) a string form of the exception info
636 # Get (safely) a string form of the exception info
611 try:
637 try:
612 etype_str,evalue_str = map(str,(etype,evalue))
638 etype_str,evalue_str = map(str,(etype,evalue))
613 except:
639 except:
614 # User exception is improperly defined.
640 # User exception is improperly defined.
615 etype,evalue = str,sys.exc_info()[:2]
641 etype,evalue = str,sys.exc_info()[:2]
616 etype_str,evalue_str = map(str,(etype,evalue))
642 etype_str,evalue_str = map(str,(etype,evalue))
617 # ... and format it
643 # ... and format it
618 exception = ['%s%s%s: %s' % (Colors.excName, etype_str,
644 exception = ['%s%s%s: %s' % (Colors.excName, etype_str,
619 ColorsNormal, evalue_str)]
645 ColorsNormal, evalue_str)]
620 if type(evalue) is types.InstanceType:
646 if type(evalue) is types.InstanceType:
621 try:
647 try:
622 names = [w for w in dir(evalue) if isinstance(w, basestring)]
648 names = [w for w in dir(evalue) if isinstance(w, basestring)]
623 except:
649 except:
624 # Every now and then, an object with funny inernals blows up
650 # Every now and then, an object with funny inernals blows up
625 # when dir() is called on it. We do the best we can to report
651 # when dir() is called on it. We do the best we can to report
626 # the problem and continue
652 # the problem and continue
627 _m = '%sException reporting error (object with broken dir())%s:'
653 _m = '%sException reporting error (object with broken dir())%s:'
628 exception.append(_m % (Colors.excName,ColorsNormal))
654 exception.append(_m % (Colors.excName,ColorsNormal))
629 etype_str,evalue_str = map(str,sys.exc_info()[:2])
655 etype_str,evalue_str = map(str,sys.exc_info()[:2])
630 exception.append('%s%s%s: %s' % (Colors.excName,etype_str,
656 exception.append('%s%s%s: %s' % (Colors.excName,etype_str,
631 ColorsNormal, evalue_str))
657 ColorsNormal, evalue_str))
632 names = []
658 names = []
633 for name in names:
659 for name in names:
634 value = text_repr(getattr(evalue, name))
660 value = text_repr(getattr(evalue, name))
635 exception.append('\n%s%s = %s' % (indent, name, value))
661 exception.append('\n%s%s = %s' % (indent, name, value))
636 # return all our info assembled as a single string
662 # return all our info assembled as a single string
637 return '%s\n\n%s\n%s' % (head,'\n'.join(frames),''.join(exception[0]) )
663 return '%s\n\n%s\n%s' % (head,'\n'.join(frames),''.join(exception[0]) )
638
664
639 def debugger(self):
665 def debugger(self):
640 """Call up the pdb debugger if desired, always clean up the tb reference.
666 """Call up the pdb debugger if desired, always clean up the tb reference.
641
667
642 If the call_pdb flag is set, the pdb interactive debugger is
668 If the call_pdb flag is set, the pdb interactive debugger is
643 invoked. In all cases, the self.tb reference to the current traceback
669 invoked. In all cases, the self.tb reference to the current traceback
644 is deleted to prevent lingering references which hamper memory
670 is deleted to prevent lingering references which hamper memory
645 management.
671 management.
646
672
647 Note that each call to pdb() does an 'import readline', so if your app
673 Note that each call to pdb() does an 'import readline', so if your app
648 requires a special setup for the readline completers, you'll have to
674 requires a special setup for the readline completers, you'll have to
649 fix that by hand after invoking the exception handler."""
675 fix that by hand after invoking the exception handler."""
650
676
651 if self.call_pdb:
677 if self.call_pdb:
652 if self.pdb is None:
678 if self.pdb is None:
653 self.pdb = Debugger.Pdb(
679 self.pdb = Debugger.Pdb(
654 self.color_scheme_table.active_scheme_name)
680 self.color_scheme_table.active_scheme_name)
655 # the system displayhook may have changed, restore the original
681 # the system displayhook may have changed, restore the original
656 # for pdb
682 # for pdb
657 dhook = sys.displayhook
683 dhook = sys.displayhook
658 sys.displayhook = sys.__displayhook__
684 sys.displayhook = sys.__displayhook__
659 self.pdb.reset()
685 self.pdb.reset()
660 # Find the right frame so we don't pop up inside ipython itself
686 # Find the right frame so we don't pop up inside ipython itself
661 etb = self.tb
687 etb = self.tb
662 while self.tb.tb_next is not None:
688 while self.tb.tb_next is not None:
663 self.tb = self.tb.tb_next
689 self.tb = self.tb.tb_next
664 try:
690 try:
665 if etb and etb.tb_next:
691 if etb and etb.tb_next:
666 etb = etb.tb_next
692 etb = etb.tb_next
667 self.pdb.botframe = etb.tb_frame
693 self.pdb.botframe = etb.tb_frame
668 self.pdb.interaction(self.tb.tb_frame, self.tb)
694 self.pdb.interaction(self.tb.tb_frame, self.tb)
669 except:
695 except:
670 print '*** ERROR ***'
696 print '*** ERROR ***'
671 print 'This version of pdb has a bug and crashed.'
697 print 'This version of pdb has a bug and crashed.'
672 print 'Returning to IPython...'
698 print 'Returning to IPython...'
673 sys.displayhook = dhook
699 sys.displayhook = dhook
674 del self.tb
700 del self.tb
675
701
676 def handler(self, info=None):
702 def handler(self, info=None):
677 (etype, evalue, etb) = info or sys.exc_info()
703 (etype, evalue, etb) = info or sys.exc_info()
678 self.tb = etb
704 self.tb = etb
679 print >> Term.cerr, self.text(etype, evalue, etb)
705 print >> Term.cerr, self.text(etype, evalue, etb)
680
706
681 # Changed so an instance can just be called as VerboseTB_inst() and print
707 # Changed so an instance can just be called as VerboseTB_inst() and print
682 # out the right info on its own.
708 # out the right info on its own.
683 def __call__(self, etype=None, evalue=None, etb=None):
709 def __call__(self, etype=None, evalue=None, etb=None):
684 """This hook can replace sys.excepthook (for Python 2.1 or higher)."""
710 """This hook can replace sys.excepthook (for Python 2.1 or higher)."""
685 if etb is None:
711 if etb is None:
686 self.handler()
712 self.handler()
687 else:
713 else:
688 self.handler((etype, evalue, etb))
714 self.handler((etype, evalue, etb))
689 self.debugger()
715 self.debugger()
690
716
691 #----------------------------------------------------------------------------
717 #----------------------------------------------------------------------------
692 class FormattedTB(VerboseTB,ListTB):
718 class FormattedTB(VerboseTB,ListTB):
693 """Subclass ListTB but allow calling with a traceback.
719 """Subclass ListTB but allow calling with a traceback.
694
720
695 It can thus be used as a sys.excepthook for Python > 2.1.
721 It can thus be used as a sys.excepthook for Python > 2.1.
696
722
697 Also adds 'Context' and 'Verbose' modes, not available in ListTB.
723 Also adds 'Context' and 'Verbose' modes, not available in ListTB.
698
724
699 Allows a tb_offset to be specified. This is useful for situations where
725 Allows a tb_offset to be specified. This is useful for situations where
700 one needs to remove a number of topmost frames from the traceback (such as
726 one needs to remove a number of topmost frames from the traceback (such as
701 occurs with python programs that themselves execute other python code,
727 occurs with python programs that themselves execute other python code,
702 like Python shells). """
728 like Python shells). """
703
729
704 def __init__(self, mode = 'Plain', color_scheme='Linux',
730 def __init__(self, mode = 'Plain', color_scheme='Linux',
705 tb_offset = 0,long_header=0,call_pdb=0,include_vars=0):
731 tb_offset = 0,long_header=0,call_pdb=0,include_vars=0):
706
732
707 # NEVER change the order of this list. Put new modes at the end:
733 # NEVER change the order of this list. Put new modes at the end:
708 self.valid_modes = ['Plain','Context','Verbose']
734 self.valid_modes = ['Plain','Context','Verbose']
709 self.verbose_modes = self.valid_modes[1:3]
735 self.verbose_modes = self.valid_modes[1:3]
710
736
711 VerboseTB.__init__(self,color_scheme,tb_offset,long_header,
737 VerboseTB.__init__(self,color_scheme,tb_offset,long_header,
712 call_pdb=call_pdb,include_vars=include_vars)
738 call_pdb=call_pdb,include_vars=include_vars)
713 self.set_mode(mode)
739 self.set_mode(mode)
714
740
715 def _extract_tb(self,tb):
741 def _extract_tb(self,tb):
716 if tb:
742 if tb:
717 return traceback.extract_tb(tb)
743 return traceback.extract_tb(tb)
718 else:
744 else:
719 return None
745 return None
720
746
721 def text(self, etype, value, tb,context=5,mode=None):
747 def text(self, etype, value, tb,context=5,mode=None):
722 """Return formatted traceback.
748 """Return formatted traceback.
723
749
724 If the optional mode parameter is given, it overrides the current
750 If the optional mode parameter is given, it overrides the current
725 mode."""
751 mode."""
726
752
727 if mode is None:
753 if mode is None:
728 mode = self.mode
754 mode = self.mode
729 if mode in self.verbose_modes:
755 if mode in self.verbose_modes:
730 # verbose modes need a full traceback
756 # verbose modes need a full traceback
731 return VerboseTB.text(self,etype, value, tb,context=5)
757 return VerboseTB.text(self,etype, value, tb,context=5)
732 else:
758 else:
733 # We must check the source cache because otherwise we can print
759 # We must check the source cache because otherwise we can print
734 # out-of-date source code.
760 # out-of-date source code.
735 linecache.checkcache()
761 linecache.checkcache()
736 # Now we can extract and format the exception
762 # Now we can extract and format the exception
737 elist = self._extract_tb(tb)
763 elist = self._extract_tb(tb)
738 if len(elist) > self.tb_offset:
764 if len(elist) > self.tb_offset:
739 del elist[:self.tb_offset]
765 del elist[:self.tb_offset]
740 return ListTB.text(self,etype,value,elist)
766 return ListTB.text(self,etype,value,elist)
741
767
742 def set_mode(self,mode=None):
768 def set_mode(self,mode=None):
743 """Switch to the desired mode.
769 """Switch to the desired mode.
744
770
745 If mode is not specified, cycles through the available modes."""
771 If mode is not specified, cycles through the available modes."""
746
772
747 if not mode:
773 if not mode:
748 new_idx = ( self.valid_modes.index(self.mode) + 1 ) % \
774 new_idx = ( self.valid_modes.index(self.mode) + 1 ) % \
749 len(self.valid_modes)
775 len(self.valid_modes)
750 self.mode = self.valid_modes[new_idx]
776 self.mode = self.valid_modes[new_idx]
751 elif mode not in self.valid_modes:
777 elif mode not in self.valid_modes:
752 raise ValueError, 'Unrecognized mode in FormattedTB: <'+mode+'>\n'\
778 raise ValueError, 'Unrecognized mode in FormattedTB: <'+mode+'>\n'\
753 'Valid modes: '+str(self.valid_modes)
779 'Valid modes: '+str(self.valid_modes)
754 else:
780 else:
755 self.mode = mode
781 self.mode = mode
756 # include variable details only in 'Verbose' mode
782 # include variable details only in 'Verbose' mode
757 self.include_vars = (self.mode == self.valid_modes[2])
783 self.include_vars = (self.mode == self.valid_modes[2])
758
784
759 # some convenient shorcuts
785 # some convenient shorcuts
760 def plain(self):
786 def plain(self):
761 self.set_mode(self.valid_modes[0])
787 self.set_mode(self.valid_modes[0])
762
788
763 def context(self):
789 def context(self):
764 self.set_mode(self.valid_modes[1])
790 self.set_mode(self.valid_modes[1])
765
791
766 def verbose(self):
792 def verbose(self):
767 self.set_mode(self.valid_modes[2])
793 self.set_mode(self.valid_modes[2])
768
794
769 #----------------------------------------------------------------------------
795 #----------------------------------------------------------------------------
770 class AutoFormattedTB(FormattedTB):
796 class AutoFormattedTB(FormattedTB):
771 """A traceback printer which can be called on the fly.
797 """A traceback printer which can be called on the fly.
772
798
773 It will find out about exceptions by itself.
799 It will find out about exceptions by itself.
774
800
775 A brief example:
801 A brief example:
776
802
777 AutoTB = AutoFormattedTB(mode = 'Verbose',color_scheme='Linux')
803 AutoTB = AutoFormattedTB(mode = 'Verbose',color_scheme='Linux')
778 try:
804 try:
779 ...
805 ...
780 except:
806 except:
781 AutoTB() # or AutoTB(out=logfile) where logfile is an open file object
807 AutoTB() # or AutoTB(out=logfile) where logfile is an open file object
782 """
808 """
783 def __call__(self,etype=None,evalue=None,etb=None,
809 def __call__(self,etype=None,evalue=None,etb=None,
784 out=None,tb_offset=None):
810 out=None,tb_offset=None):
785 """Print out a formatted exception traceback.
811 """Print out a formatted exception traceback.
786
812
787 Optional arguments:
813 Optional arguments:
788 - out: an open file-like object to direct output to.
814 - out: an open file-like object to direct output to.
789
815
790 - tb_offset: the number of frames to skip over in the stack, on a
816 - tb_offset: the number of frames to skip over in the stack, on a
791 per-call basis (this overrides temporarily the instance's tb_offset
817 per-call basis (this overrides temporarily the instance's tb_offset
792 given at initialization time. """
818 given at initialization time. """
793
819
794 if out is None:
820 if out is None:
795 out = Term.cerr
821 out = Term.cerr
796 if tb_offset is not None:
822 if tb_offset is not None:
797 tb_offset, self.tb_offset = self.tb_offset, tb_offset
823 tb_offset, self.tb_offset = self.tb_offset, tb_offset
798 print >> out, self.text(etype, evalue, etb)
824 print >> out, self.text(etype, evalue, etb)
799 self.tb_offset = tb_offset
825 self.tb_offset = tb_offset
800 else:
826 else:
801 print >> out, self.text(etype, evalue, etb)
827 print >> out, self.text(etype, evalue, etb)
802 self.debugger()
828 self.debugger()
803
829
804 def text(self,etype=None,value=None,tb=None,context=5,mode=None):
830 def text(self,etype=None,value=None,tb=None,context=5,mode=None):
805 if etype is None:
831 if etype is None:
806 etype,value,tb = sys.exc_info()
832 etype,value,tb = sys.exc_info()
807 self.tb = tb
833 self.tb = tb
808 return FormattedTB.text(self,etype,value,tb,context=5,mode=mode)
834 return FormattedTB.text(self,etype,value,tb,context=5,mode=mode)
809
835
810 #---------------------------------------------------------------------------
836 #---------------------------------------------------------------------------
811 # A simple class to preserve Nathan's original functionality.
837 # A simple class to preserve Nathan's original functionality.
812 class ColorTB(FormattedTB):
838 class ColorTB(FormattedTB):
813 """Shorthand to initialize a FormattedTB in Linux colors mode."""
839 """Shorthand to initialize a FormattedTB in Linux colors mode."""
814 def __init__(self,color_scheme='Linux',call_pdb=0):
840 def __init__(self,color_scheme='Linux',call_pdb=0):
815 FormattedTB.__init__(self,color_scheme=color_scheme,
841 FormattedTB.__init__(self,color_scheme=color_scheme,
816 call_pdb=call_pdb)
842 call_pdb=call_pdb)
817
843
818 #----------------------------------------------------------------------------
844 #----------------------------------------------------------------------------
819 # module testing (minimal)
845 # module testing (minimal)
820 if __name__ == "__main__":
846 if __name__ == "__main__":
821 def spam(c, (d, e)):
847 def spam(c, (d, e)):
822 x = c + d
848 x = c + d
823 y = c * d
849 y = c * d
824 foo(x, y)
850 foo(x, y)
825
851
826 def foo(a, b, bar=1):
852 def foo(a, b, bar=1):
827 eggs(a, b + bar)
853 eggs(a, b + bar)
828
854
829 def eggs(f, g, z=globals()):
855 def eggs(f, g, z=globals()):
830 h = f + g
856 h = f + g
831 i = f - g
857 i = f - g
832 return h / i
858 return h / i
833
859
834 print ''
860 print ''
835 print '*** Before ***'
861 print '*** Before ***'
836 try:
862 try:
837 print spam(1, (2, 3))
863 print spam(1, (2, 3))
838 except:
864 except:
839 traceback.print_exc()
865 traceback.print_exc()
840 print ''
866 print ''
841
867
842 handler = ColorTB()
868 handler = ColorTB()
843 print '*** ColorTB ***'
869 print '*** ColorTB ***'
844 try:
870 try:
845 print spam(1, (2, 3))
871 print spam(1, (2, 3))
846 except:
872 except:
847 apply(handler, sys.exc_info() )
873 apply(handler, sys.exc_info() )
848 print ''
874 print ''
849
875
850 handler = VerboseTB()
876 handler = VerboseTB()
851 print '*** VerboseTB ***'
877 print '*** VerboseTB ***'
852 try:
878 try:
853 print spam(1, (2, 3))
879 print spam(1, (2, 3))
854 except:
880 except:
855 apply(handler, sys.exc_info() )
881 apply(handler, sys.exc_info() )
856 print ''
882 print ''
857
883
@@ -1,5198 +1,5204 b''
1 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
4 contributed by marienz to close
5 http://www.scipy.net/roundup/ipython/issue53.
6
1 2006-02-10 Ville Vainio <vivainio@gmail.com>
7 2006-02-10 Ville Vainio <vivainio@gmail.com>
2
8
3 * genutils.py: getoutput now works in win32 too
9 * genutils.py: getoutput now works in win32 too
4
10
5 * completer.py: alias and magic completion only invoked
11 * completer.py: alias and magic completion only invoked
6 at the first "item" in the line, to avoid "cd %store"
12 at the first "item" in the line, to avoid "cd %store"
7 nonsense.
13 nonsense.
8
14
9 2006-02-09 Ville Vainio <vivainio@gmail.com>
15 2006-02-09 Ville Vainio <vivainio@gmail.com>
10
16
11 * test/*: Added a unit testing framework (finally).
17 * test/*: Added a unit testing framework (finally).
12 '%run runtests.py' to run test_*.
18 '%run runtests.py' to run test_*.
13
19
14 * ipapi.py: Exposed runlines and set_custom_exc
20 * ipapi.py: Exposed runlines and set_custom_exc
15
21
16 2006-02-07 Ville Vainio <vivainio@gmail.com>
22 2006-02-07 Ville Vainio <vivainio@gmail.com>
17
23
18 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
24 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
19 instead use "f(1 2)" as before.
25 instead use "f(1 2)" as before.
20
26
21 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
27 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
22
28
23 * IPython/demo.py (IPythonDemo): Add new classes to the demo
29 * IPython/demo.py (IPythonDemo): Add new classes to the demo
24 facilities, for demos processed by the IPython input filter
30 facilities, for demos processed by the IPython input filter
25 (IPythonDemo), and for running a script one-line-at-a-time as a
31 (IPythonDemo), and for running a script one-line-at-a-time as a
26 demo, both for pure Python (LineDemo) and for IPython-processed
32 demo, both for pure Python (LineDemo) and for IPython-processed
27 input (IPythonLineDemo). After a request by Dave Kohel, from the
33 input (IPythonLineDemo). After a request by Dave Kohel, from the
28 SAGE team.
34 SAGE team.
29 (Demo.edit): added and edit() method to the demo objects, to edit
35 (Demo.edit): added and edit() method to the demo objects, to edit
30 the in-memory copy of the last executed block.
36 the in-memory copy of the last executed block.
31
37
32 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
38 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
33 processing to %edit, %macro and %save. These commands can now be
39 processing to %edit, %macro and %save. These commands can now be
34 invoked on the unprocessed input as it was typed by the user
40 invoked on the unprocessed input as it was typed by the user
35 (without any prefilters applied). After requests by the SAGE team
41 (without any prefilters applied). After requests by the SAGE team
36 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
42 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
37
43
38 2006-02-01 Ville Vainio <vivainio@gmail.com>
44 2006-02-01 Ville Vainio <vivainio@gmail.com>
39
45
40 * setup.py, eggsetup.py: easy_install ipython==dev works
46 * setup.py, eggsetup.py: easy_install ipython==dev works
41 correctly now (on Linux)
47 correctly now (on Linux)
42
48
43 * ipy_user_conf,ipmaker: user config changes, removed spurious
49 * ipy_user_conf,ipmaker: user config changes, removed spurious
44 warnings
50 warnings
45
51
46 * iplib: if rc.banner is string, use it as is.
52 * iplib: if rc.banner is string, use it as is.
47
53
48 * Magic: %pycat accepts a string argument and pages it's contents.
54 * Magic: %pycat accepts a string argument and pages it's contents.
49
55
50
56
51 2006-01-30 Ville Vainio <vivainio@gmail.com>
57 2006-01-30 Ville Vainio <vivainio@gmail.com>
52
58
53 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
59 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
54 Now %store and bookmarks work through PickleShare, meaning that
60 Now %store and bookmarks work through PickleShare, meaning that
55 concurrent access is possible and all ipython sessions see the
61 concurrent access is possible and all ipython sessions see the
56 same database situation all the time, instead of snapshot of
62 same database situation all the time, instead of snapshot of
57 the situation when the session was started. Hence, %bookmark
63 the situation when the session was started. Hence, %bookmark
58 results are immediately accessible from othes sessions. The database
64 results are immediately accessible from othes sessions. The database
59 is also available for use by user extensions. See:
65 is also available for use by user extensions. See:
60 http://www.python.org/pypi/pickleshare
66 http://www.python.org/pypi/pickleshare
61
67
62 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
68 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
63
69
64 * aliases can now be %store'd
70 * aliases can now be %store'd
65
71
66 * path.py move to Extensions so that pickleshare does not need
72 * path.py move to Extensions so that pickleshare does not need
67 IPython-specific import. Extensions added to pythonpath right
73 IPython-specific import. Extensions added to pythonpath right
68 at __init__.
74 at __init__.
69
75
70 * iplib.py: ipalias deprecated/redundant; aliases are converted and
76 * iplib.py: ipalias deprecated/redundant; aliases are converted and
71 called with _ip.system and the pre-transformed command string.
77 called with _ip.system and the pre-transformed command string.
72
78
73 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
79 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
74
80
75 * IPython/iplib.py (interact): Fix that we were not catching
81 * IPython/iplib.py (interact): Fix that we were not catching
76 KeyboardInterrupt exceptions properly. I'm not quite sure why the
82 KeyboardInterrupt exceptions properly. I'm not quite sure why the
77 logic here had to change, but it's fixed now.
83 logic here had to change, but it's fixed now.
78
84
79 2006-01-29 Ville Vainio <vivainio@gmail.com>
85 2006-01-29 Ville Vainio <vivainio@gmail.com>
80
86
81 * iplib.py: Try to import pyreadline on Windows.
87 * iplib.py: Try to import pyreadline on Windows.
82
88
83 2006-01-27 Ville Vainio <vivainio@gmail.com>
89 2006-01-27 Ville Vainio <vivainio@gmail.com>
84
90
85 * iplib.py: Expose ipapi as _ip in builtin namespace.
91 * iplib.py: Expose ipapi as _ip in builtin namespace.
86 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
92 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
87 and ip_set_hook (-> _ip.set_hook) redundant. % and !
93 and ip_set_hook (-> _ip.set_hook) redundant. % and !
88 syntax now produce _ip.* variant of the commands.
94 syntax now produce _ip.* variant of the commands.
89
95
90 * "_ip.options().autoedit_syntax = 2" automatically throws
96 * "_ip.options().autoedit_syntax = 2" automatically throws
91 user to editor for syntax error correction without prompting.
97 user to editor for syntax error correction without prompting.
92
98
93 2006-01-27 Ville Vainio <vivainio@gmail.com>
99 2006-01-27 Ville Vainio <vivainio@gmail.com>
94
100
95 * ipmaker.py: Give "realistic" sys.argv for scripts (without
101 * ipmaker.py: Give "realistic" sys.argv for scripts (without
96 'ipython' at argv[0]) executed through command line.
102 'ipython' at argv[0]) executed through command line.
97 NOTE: this DEPRECATES calling ipython with multiple scripts
103 NOTE: this DEPRECATES calling ipython with multiple scripts
98 ("ipython a.py b.py c.py")
104 ("ipython a.py b.py c.py")
99
105
100 * iplib.py, hooks.py: Added configurable input prefilter,
106 * iplib.py, hooks.py: Added configurable input prefilter,
101 named 'input_prefilter'. See ext_rescapture.py for example
107 named 'input_prefilter'. See ext_rescapture.py for example
102 usage.
108 usage.
103
109
104 * ext_rescapture.py, Magic.py: Better system command output capture
110 * ext_rescapture.py, Magic.py: Better system command output capture
105 through 'var = !ls' (deprecates user-visible %sc). Same notation
111 through 'var = !ls' (deprecates user-visible %sc). Same notation
106 applies for magics, 'var = %alias' assigns alias list to var.
112 applies for magics, 'var = %alias' assigns alias list to var.
107
113
108 * ipapi.py: added meta() for accessing extension-usable data store.
114 * ipapi.py: added meta() for accessing extension-usable data store.
109
115
110 * iplib.py: added InteractiveShell.getapi(). New magics should be
116 * iplib.py: added InteractiveShell.getapi(). New magics should be
111 written doing self.getapi() instead of using the shell directly.
117 written doing self.getapi() instead of using the shell directly.
112
118
113 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
119 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
114 %store foo >> ~/myfoo.txt to store variables to files (in clean
120 %store foo >> ~/myfoo.txt to store variables to files (in clean
115 textual form, not a restorable pickle).
121 textual form, not a restorable pickle).
116
122
117 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
123 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
118
124
119 * usage.py, Magic.py: added %quickref
125 * usage.py, Magic.py: added %quickref
120
126
121 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
127 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
122
128
123 * GetoptErrors when invoking magics etc. with wrong args
129 * GetoptErrors when invoking magics etc. with wrong args
124 are now more helpful:
130 are now more helpful:
125 GetoptError: option -l not recognized (allowed: "qb" )
131 GetoptError: option -l not recognized (allowed: "qb" )
126
132
127 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
133 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
128
134
129 * IPython/demo.py (Demo.show): Flush stdout after each block, so
135 * IPython/demo.py (Demo.show): Flush stdout after each block, so
130 computationally intensive blocks don't appear to stall the demo.
136 computationally intensive blocks don't appear to stall the demo.
131
137
132 2006-01-24 Ville Vainio <vivainio@gmail.com>
138 2006-01-24 Ville Vainio <vivainio@gmail.com>
133
139
134 * iplib.py, hooks.py: 'result_display' hook can return a non-None
140 * iplib.py, hooks.py: 'result_display' hook can return a non-None
135 value to manipulate resulting history entry.
141 value to manipulate resulting history entry.
136
142
137 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
143 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
138 to instance methods of IPApi class, to make extending an embedded
144 to instance methods of IPApi class, to make extending an embedded
139 IPython feasible. See ext_rehashdir.py for example usage.
145 IPython feasible. See ext_rehashdir.py for example usage.
140
146
141 * Merged 1071-1076 from banches/0.7.1
147 * Merged 1071-1076 from banches/0.7.1
142
148
143
149
144 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
150 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
145
151
146 * tools/release (daystamp): Fix build tools to use the new
152 * tools/release (daystamp): Fix build tools to use the new
147 eggsetup.py script to build lightweight eggs.
153 eggsetup.py script to build lightweight eggs.
148
154
149 * Applied changesets 1062 and 1064 before 0.7.1 release.
155 * Applied changesets 1062 and 1064 before 0.7.1 release.
150
156
151 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
157 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
152 see the raw input history (without conversions like %ls ->
158 see the raw input history (without conversions like %ls ->
153 ipmagic("ls")). After a request from W. Stein, SAGE
159 ipmagic("ls")). After a request from W. Stein, SAGE
154 (http://modular.ucsd.edu/sage) developer. This information is
160 (http://modular.ucsd.edu/sage) developer. This information is
155 stored in the input_hist_raw attribute of the IPython instance, so
161 stored in the input_hist_raw attribute of the IPython instance, so
156 developers can access it if needed (it's an InputList instance).
162 developers can access it if needed (it's an InputList instance).
157
163
158 * Versionstring = 0.7.2.svn
164 * Versionstring = 0.7.2.svn
159
165
160 * eggsetup.py: A separate script for constructing eggs, creates
166 * eggsetup.py: A separate script for constructing eggs, creates
161 proper launch scripts even on Windows (an .exe file in
167 proper launch scripts even on Windows (an .exe file in
162 \python24\scripts).
168 \python24\scripts).
163
169
164 * ipapi.py: launch_new_instance, launch entry point needed for the
170 * ipapi.py: launch_new_instance, launch entry point needed for the
165 egg.
171 egg.
166
172
167 2006-01-23 Ville Vainio <vivainio@gmail.com>
173 2006-01-23 Ville Vainio <vivainio@gmail.com>
168
174
169 * Added %cpaste magic for pasting python code
175 * Added %cpaste magic for pasting python code
170
176
171 2006-01-22 Ville Vainio <vivainio@gmail.com>
177 2006-01-22 Ville Vainio <vivainio@gmail.com>
172
178
173 * Merge from branches/0.7.1 into trunk, revs 1052-1057
179 * Merge from branches/0.7.1 into trunk, revs 1052-1057
174
180
175 * Versionstring = 0.7.2.svn
181 * Versionstring = 0.7.2.svn
176
182
177 * eggsetup.py: A separate script for constructing eggs, creates
183 * eggsetup.py: A separate script for constructing eggs, creates
178 proper launch scripts even on Windows (an .exe file in
184 proper launch scripts even on Windows (an .exe file in
179 \python24\scripts).
185 \python24\scripts).
180
186
181 * ipapi.py: launch_new_instance, launch entry point needed for the
187 * ipapi.py: launch_new_instance, launch entry point needed for the
182 egg.
188 egg.
183
189
184 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
190 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
185
191
186 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
192 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
187 %pfile foo would print the file for foo even if it was a binary.
193 %pfile foo would print the file for foo even if it was a binary.
188 Now, extensions '.so' and '.dll' are skipped.
194 Now, extensions '.so' and '.dll' are skipped.
189
195
190 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
196 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
191 bug, where macros would fail in all threaded modes. I'm not 100%
197 bug, where macros would fail in all threaded modes. I'm not 100%
192 sure, so I'm going to put out an rc instead of making a release
198 sure, so I'm going to put out an rc instead of making a release
193 today, and wait for feedback for at least a few days.
199 today, and wait for feedback for at least a few days.
194
200
195 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
201 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
196 it...) the handling of pasting external code with autoindent on.
202 it...) the handling of pasting external code with autoindent on.
197 To get out of a multiline input, the rule will appear for most
203 To get out of a multiline input, the rule will appear for most
198 users unchanged: two blank lines or change the indent level
204 users unchanged: two blank lines or change the indent level
199 proposed by IPython. But there is a twist now: you can
205 proposed by IPython. But there is a twist now: you can
200 add/subtract only *one or two spaces*. If you add/subtract three
206 add/subtract only *one or two spaces*. If you add/subtract three
201 or more (unless you completely delete the line), IPython will
207 or more (unless you completely delete the line), IPython will
202 accept that line, and you'll need to enter a second one of pure
208 accept that line, and you'll need to enter a second one of pure
203 whitespace. I know it sounds complicated, but I can't find a
209 whitespace. I know it sounds complicated, but I can't find a
204 different solution that covers all the cases, with the right
210 different solution that covers all the cases, with the right
205 heuristics. Hopefully in actual use, nobody will really notice
211 heuristics. Hopefully in actual use, nobody will really notice
206 all these strange rules and things will 'just work'.
212 all these strange rules and things will 'just work'.
207
213
208 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
214 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
209
215
210 * IPython/iplib.py (interact): catch exceptions which can be
216 * IPython/iplib.py (interact): catch exceptions which can be
211 triggered asynchronously by signal handlers. Thanks to an
217 triggered asynchronously by signal handlers. Thanks to an
212 automatic crash report, submitted by Colin Kingsley
218 automatic crash report, submitted by Colin Kingsley
213 <tercel-AT-gentoo.org>.
219 <tercel-AT-gentoo.org>.
214
220
215 2006-01-20 Ville Vainio <vivainio@gmail.com>
221 2006-01-20 Ville Vainio <vivainio@gmail.com>
216
222
217 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
223 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
218 (%rehashdir, very useful, try it out) of how to extend ipython
224 (%rehashdir, very useful, try it out) of how to extend ipython
219 with new magics. Also added Extensions dir to pythonpath to make
225 with new magics. Also added Extensions dir to pythonpath to make
220 importing extensions easy.
226 importing extensions easy.
221
227
222 * %store now complains when trying to store interactively declared
228 * %store now complains when trying to store interactively declared
223 classes / instances of those classes.
229 classes / instances of those classes.
224
230
225 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
231 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
226 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
232 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
227 if they exist, and ipy_user_conf.py with some defaults is created for
233 if they exist, and ipy_user_conf.py with some defaults is created for
228 the user.
234 the user.
229
235
230 * Startup rehashing done by the config file, not InterpreterExec.
236 * Startup rehashing done by the config file, not InterpreterExec.
231 This means system commands are available even without selecting the
237 This means system commands are available even without selecting the
232 pysh profile. It's the sensible default after all.
238 pysh profile. It's the sensible default after all.
233
239
234 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
240 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
235
241
236 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
242 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
237 multiline code with autoindent on working. But I am really not
243 multiline code with autoindent on working. But I am really not
238 sure, so this needs more testing. Will commit a debug-enabled
244 sure, so this needs more testing. Will commit a debug-enabled
239 version for now, while I test it some more, so that Ville and
245 version for now, while I test it some more, so that Ville and
240 others may also catch any problems. Also made
246 others may also catch any problems. Also made
241 self.indent_current_str() a method, to ensure that there's no
247 self.indent_current_str() a method, to ensure that there's no
242 chance of the indent space count and the corresponding string
248 chance of the indent space count and the corresponding string
243 falling out of sync. All code needing the string should just call
249 falling out of sync. All code needing the string should just call
244 the method.
250 the method.
245
251
246 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
252 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
247
253
248 * IPython/Magic.py (magic_edit): fix check for when users don't
254 * IPython/Magic.py (magic_edit): fix check for when users don't
249 save their output files, the try/except was in the wrong section.
255 save their output files, the try/except was in the wrong section.
250
256
251 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
257 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
252
258
253 * IPython/Magic.py (magic_run): fix __file__ global missing from
259 * IPython/Magic.py (magic_run): fix __file__ global missing from
254 script's namespace when executed via %run. After a report by
260 script's namespace when executed via %run. After a report by
255 Vivian.
261 Vivian.
256
262
257 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
263 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
258 when using python 2.4. The parent constructor changed in 2.4, and
264 when using python 2.4. The parent constructor changed in 2.4, and
259 we need to track it directly (we can't call it, as it messes up
265 we need to track it directly (we can't call it, as it messes up
260 readline and tab-completion inside our pdb would stop working).
266 readline and tab-completion inside our pdb would stop working).
261 After a bug report by R. Bernstein <rocky-AT-panix.com>.
267 After a bug report by R. Bernstein <rocky-AT-panix.com>.
262
268
263 2006-01-16 Ville Vainio <vivainio@gmail.com>
269 2006-01-16 Ville Vainio <vivainio@gmail.com>
264
270
265 * Ipython/magic.py:Reverted back to old %edit functionality
271 * Ipython/magic.py:Reverted back to old %edit functionality
266 that returns file contents on exit.
272 that returns file contents on exit.
267
273
268 * IPython/path.py: Added Jason Orendorff's "path" module to
274 * IPython/path.py: Added Jason Orendorff's "path" module to
269 IPython tree, http://www.jorendorff.com/articles/python/path/.
275 IPython tree, http://www.jorendorff.com/articles/python/path/.
270 You can get path objects conveniently through %sc, and !!, e.g.:
276 You can get path objects conveniently through %sc, and !!, e.g.:
271 sc files=ls
277 sc files=ls
272 for p in files.paths: # or files.p
278 for p in files.paths: # or files.p
273 print p,p.mtime
279 print p,p.mtime
274
280
275 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
281 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
276 now work again without considering the exclusion regexp -
282 now work again without considering the exclusion regexp -
277 hence, things like ',foo my/path' turn to 'foo("my/path")'
283 hence, things like ',foo my/path' turn to 'foo("my/path")'
278 instead of syntax error.
284 instead of syntax error.
279
285
280
286
281 2006-01-14 Ville Vainio <vivainio@gmail.com>
287 2006-01-14 Ville Vainio <vivainio@gmail.com>
282
288
283 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
289 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
284 ipapi decorators for python 2.4 users, options() provides access to rc
290 ipapi decorators for python 2.4 users, options() provides access to rc
285 data.
291 data.
286
292
287 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
293 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
288 as path separators (even on Linux ;-). Space character after
294 as path separators (even on Linux ;-). Space character after
289 backslash (as yielded by tab completer) is still space;
295 backslash (as yielded by tab completer) is still space;
290 "%cd long\ name" works as expected.
296 "%cd long\ name" works as expected.
291
297
292 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
298 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
293 as "chain of command", with priority. API stays the same,
299 as "chain of command", with priority. API stays the same,
294 TryNext exception raised by a hook function signals that
300 TryNext exception raised by a hook function signals that
295 current hook failed and next hook should try handling it, as
301 current hook failed and next hook should try handling it, as
296 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
302 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
297 requested configurable display hook, which is now implemented.
303 requested configurable display hook, which is now implemented.
298
304
299 2006-01-13 Ville Vainio <vivainio@gmail.com>
305 2006-01-13 Ville Vainio <vivainio@gmail.com>
300
306
301 * IPython/platutils*.py: platform specific utility functions,
307 * IPython/platutils*.py: platform specific utility functions,
302 so far only set_term_title is implemented (change terminal
308 so far only set_term_title is implemented (change terminal
303 label in windowing systems). %cd now changes the title to
309 label in windowing systems). %cd now changes the title to
304 current dir.
310 current dir.
305
311
306 * IPython/Release.py: Added myself to "authors" list,
312 * IPython/Release.py: Added myself to "authors" list,
307 had to create new files.
313 had to create new files.
308
314
309 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
315 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
310 shell escape; not a known bug but had potential to be one in the
316 shell escape; not a known bug but had potential to be one in the
311 future.
317 future.
312
318
313 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
319 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
314 extension API for IPython! See the module for usage example. Fix
320 extension API for IPython! See the module for usage example. Fix
315 OInspect for docstring-less magic functions.
321 OInspect for docstring-less magic functions.
316
322
317
323
318 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
324 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
319
325
320 * IPython/iplib.py (raw_input): temporarily deactivate all
326 * IPython/iplib.py (raw_input): temporarily deactivate all
321 attempts at allowing pasting of code with autoindent on. It
327 attempts at allowing pasting of code with autoindent on. It
322 introduced bugs (reported by Prabhu) and I can't seem to find a
328 introduced bugs (reported by Prabhu) and I can't seem to find a
323 robust combination which works in all cases. Will have to revisit
329 robust combination which works in all cases. Will have to revisit
324 later.
330 later.
325
331
326 * IPython/genutils.py: remove isspace() function. We've dropped
332 * IPython/genutils.py: remove isspace() function. We've dropped
327 2.2 compatibility, so it's OK to use the string method.
333 2.2 compatibility, so it's OK to use the string method.
328
334
329 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
335 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
330
336
331 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
337 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
332 matching what NOT to autocall on, to include all python binary
338 matching what NOT to autocall on, to include all python binary
333 operators (including things like 'and', 'or', 'is' and 'in').
339 operators (including things like 'and', 'or', 'is' and 'in').
334 Prompted by a bug report on 'foo & bar', but I realized we had
340 Prompted by a bug report on 'foo & bar', but I realized we had
335 many more potential bug cases with other operators. The regexp is
341 many more potential bug cases with other operators. The regexp is
336 self.re_exclude_auto, it's fairly commented.
342 self.re_exclude_auto, it's fairly commented.
337
343
338 2006-01-12 Ville Vainio <vivainio@gmail.com>
344 2006-01-12 Ville Vainio <vivainio@gmail.com>
339
345
340 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
346 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
341 Prettified and hardened string/backslash quoting with ipsystem(),
347 Prettified and hardened string/backslash quoting with ipsystem(),
342 ipalias() and ipmagic(). Now even \ characters are passed to
348 ipalias() and ipmagic(). Now even \ characters are passed to
343 %magics, !shell escapes and aliases exactly as they are in the
349 %magics, !shell escapes and aliases exactly as they are in the
344 ipython command line. Should improve backslash experience,
350 ipython command line. Should improve backslash experience,
345 particularly in Windows (path delimiter for some commands that
351 particularly in Windows (path delimiter for some commands that
346 won't understand '/'), but Unix benefits as well (regexps). %cd
352 won't understand '/'), but Unix benefits as well (regexps). %cd
347 magic still doesn't support backslash path delimiters, though. Also
353 magic still doesn't support backslash path delimiters, though. Also
348 deleted all pretense of supporting multiline command strings in
354 deleted all pretense of supporting multiline command strings in
349 !system or %magic commands. Thanks to Jerry McRae for suggestions.
355 !system or %magic commands. Thanks to Jerry McRae for suggestions.
350
356
351 * doc/build_doc_instructions.txt added. Documentation on how to
357 * doc/build_doc_instructions.txt added. Documentation on how to
352 use doc/update_manual.py, added yesterday. Both files contributed
358 use doc/update_manual.py, added yesterday. Both files contributed
353 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
359 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
354 doc/*.sh for deprecation at a later date.
360 doc/*.sh for deprecation at a later date.
355
361
356 * /ipython.py Added ipython.py to root directory for
362 * /ipython.py Added ipython.py to root directory for
357 zero-installation (tar xzvf ipython.tgz; cd ipython; python
363 zero-installation (tar xzvf ipython.tgz; cd ipython; python
358 ipython.py) and development convenience (no need to kee doing
364 ipython.py) and development convenience (no need to kee doing
359 "setup.py install" between changes).
365 "setup.py install" between changes).
360
366
361 * Made ! and !! shell escapes work (again) in multiline expressions:
367 * Made ! and !! shell escapes work (again) in multiline expressions:
362 if 1:
368 if 1:
363 !ls
369 !ls
364 !!ls
370 !!ls
365
371
366 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
372 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
367
373
368 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
374 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
369 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
375 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
370 module in case-insensitive installation. Was causing crashes
376 module in case-insensitive installation. Was causing crashes
371 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
377 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
372
378
373 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
379 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
374 <marienz-AT-gentoo.org>, closes
380 <marienz-AT-gentoo.org>, closes
375 http://www.scipy.net/roundup/ipython/issue51.
381 http://www.scipy.net/roundup/ipython/issue51.
376
382
377 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
383 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
378
384
379 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
385 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
380 problem of excessive CPU usage under *nix and keyboard lag under
386 problem of excessive CPU usage under *nix and keyboard lag under
381 win32.
387 win32.
382
388
383 2006-01-10 *** Released version 0.7.0
389 2006-01-10 *** Released version 0.7.0
384
390
385 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
391 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
386
392
387 * IPython/Release.py (revision): tag version number to 0.7.0,
393 * IPython/Release.py (revision): tag version number to 0.7.0,
388 ready for release.
394 ready for release.
389
395
390 * IPython/Magic.py (magic_edit): Add print statement to %edit so
396 * IPython/Magic.py (magic_edit): Add print statement to %edit so
391 it informs the user of the name of the temp. file used. This can
397 it informs the user of the name of the temp. file used. This can
392 help if you decide later to reuse that same file, so you know
398 help if you decide later to reuse that same file, so you know
393 where to copy the info from.
399 where to copy the info from.
394
400
395 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
401 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
396
402
397 * setup_bdist_egg.py: little script to build an egg. Added
403 * setup_bdist_egg.py: little script to build an egg. Added
398 support in the release tools as well.
404 support in the release tools as well.
399
405
400 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
406 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
401
407
402 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
408 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
403 version selection (new -wxversion command line and ipythonrc
409 version selection (new -wxversion command line and ipythonrc
404 parameter). Patch contributed by Arnd Baecker
410 parameter). Patch contributed by Arnd Baecker
405 <arnd.baecker-AT-web.de>.
411 <arnd.baecker-AT-web.de>.
406
412
407 * IPython/iplib.py (embed_mainloop): fix tab-completion in
413 * IPython/iplib.py (embed_mainloop): fix tab-completion in
408 embedded instances, for variables defined at the interactive
414 embedded instances, for variables defined at the interactive
409 prompt of the embedded ipython. Reported by Arnd.
415 prompt of the embedded ipython. Reported by Arnd.
410
416
411 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
417 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
412 it can be used as a (stateful) toggle, or with a direct parameter.
418 it can be used as a (stateful) toggle, or with a direct parameter.
413
419
414 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
420 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
415 could be triggered in certain cases and cause the traceback
421 could be triggered in certain cases and cause the traceback
416 printer not to work.
422 printer not to work.
417
423
418 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
424 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
419
425
420 * IPython/iplib.py (_should_recompile): Small fix, closes
426 * IPython/iplib.py (_should_recompile): Small fix, closes
421 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
427 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
422
428
423 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
429 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
424
430
425 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
431 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
426 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
432 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
427 Moad for help with tracking it down.
433 Moad for help with tracking it down.
428
434
429 * IPython/iplib.py (handle_auto): fix autocall handling for
435 * IPython/iplib.py (handle_auto): fix autocall handling for
430 objects which support BOTH __getitem__ and __call__ (so that f [x]
436 objects which support BOTH __getitem__ and __call__ (so that f [x]
431 is left alone, instead of becoming f([x]) automatically).
437 is left alone, instead of becoming f([x]) automatically).
432
438
433 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
439 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
434 Ville's patch.
440 Ville's patch.
435
441
436 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
442 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
437
443
438 * IPython/iplib.py (handle_auto): changed autocall semantics to
444 * IPython/iplib.py (handle_auto): changed autocall semantics to
439 include 'smart' mode, where the autocall transformation is NOT
445 include 'smart' mode, where the autocall transformation is NOT
440 applied if there are no arguments on the line. This allows you to
446 applied if there are no arguments on the line. This allows you to
441 just type 'foo' if foo is a callable to see its internal form,
447 just type 'foo' if foo is a callable to see its internal form,
442 instead of having it called with no arguments (typically a
448 instead of having it called with no arguments (typically a
443 mistake). The old 'full' autocall still exists: for that, you
449 mistake). The old 'full' autocall still exists: for that, you
444 need to set the 'autocall' parameter to 2 in your ipythonrc file.
450 need to set the 'autocall' parameter to 2 in your ipythonrc file.
445
451
446 * IPython/completer.py (Completer.attr_matches): add
452 * IPython/completer.py (Completer.attr_matches): add
447 tab-completion support for Enthoughts' traits. After a report by
453 tab-completion support for Enthoughts' traits. After a report by
448 Arnd and a patch by Prabhu.
454 Arnd and a patch by Prabhu.
449
455
450 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
456 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
451
457
452 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
458 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
453 Schmolck's patch to fix inspect.getinnerframes().
459 Schmolck's patch to fix inspect.getinnerframes().
454
460
455 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
461 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
456 for embedded instances, regarding handling of namespaces and items
462 for embedded instances, regarding handling of namespaces and items
457 added to the __builtin__ one. Multiple embedded instances and
463 added to the __builtin__ one. Multiple embedded instances and
458 recursive embeddings should work better now (though I'm not sure
464 recursive embeddings should work better now (though I'm not sure
459 I've got all the corner cases fixed, that code is a bit of a brain
465 I've got all the corner cases fixed, that code is a bit of a brain
460 twister).
466 twister).
461
467
462 * IPython/Magic.py (magic_edit): added support to edit in-memory
468 * IPython/Magic.py (magic_edit): added support to edit in-memory
463 macros (automatically creates the necessary temp files). %edit
469 macros (automatically creates the necessary temp files). %edit
464 also doesn't return the file contents anymore, it's just noise.
470 also doesn't return the file contents anymore, it's just noise.
465
471
466 * IPython/completer.py (Completer.attr_matches): revert change to
472 * IPython/completer.py (Completer.attr_matches): revert change to
467 complete only on attributes listed in __all__. I realized it
473 complete only on attributes listed in __all__. I realized it
468 cripples the tab-completion system as a tool for exploring the
474 cripples the tab-completion system as a tool for exploring the
469 internals of unknown libraries (it renders any non-__all__
475 internals of unknown libraries (it renders any non-__all__
470 attribute off-limits). I got bit by this when trying to see
476 attribute off-limits). I got bit by this when trying to see
471 something inside the dis module.
477 something inside the dis module.
472
478
473 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
479 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
474
480
475 * IPython/iplib.py (InteractiveShell.__init__): add .meta
481 * IPython/iplib.py (InteractiveShell.__init__): add .meta
476 namespace for users and extension writers to hold data in. This
482 namespace for users and extension writers to hold data in. This
477 follows the discussion in
483 follows the discussion in
478 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
484 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
479
485
480 * IPython/completer.py (IPCompleter.complete): small patch to help
486 * IPython/completer.py (IPCompleter.complete): small patch to help
481 tab-completion under Emacs, after a suggestion by John Barnard
487 tab-completion under Emacs, after a suggestion by John Barnard
482 <barnarj-AT-ccf.org>.
488 <barnarj-AT-ccf.org>.
483
489
484 * IPython/Magic.py (Magic.extract_input_slices): added support for
490 * IPython/Magic.py (Magic.extract_input_slices): added support for
485 the slice notation in magics to use N-M to represent numbers N...M
491 the slice notation in magics to use N-M to represent numbers N...M
486 (closed endpoints). This is used by %macro and %save.
492 (closed endpoints). This is used by %macro and %save.
487
493
488 * IPython/completer.py (Completer.attr_matches): for modules which
494 * IPython/completer.py (Completer.attr_matches): for modules which
489 define __all__, complete only on those. After a patch by Jeffrey
495 define __all__, complete only on those. After a patch by Jeffrey
490 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
496 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
491 speed up this routine.
497 speed up this routine.
492
498
493 * IPython/Logger.py (Logger.log): fix a history handling bug. I
499 * IPython/Logger.py (Logger.log): fix a history handling bug. I
494 don't know if this is the end of it, but the behavior now is
500 don't know if this is the end of it, but the behavior now is
495 certainly much more correct. Note that coupled with macros,
501 certainly much more correct. Note that coupled with macros,
496 slightly surprising (at first) behavior may occur: a macro will in
502 slightly surprising (at first) behavior may occur: a macro will in
497 general expand to multiple lines of input, so upon exiting, the
503 general expand to multiple lines of input, so upon exiting, the
498 in/out counters will both be bumped by the corresponding amount
504 in/out counters will both be bumped by the corresponding amount
499 (as if the macro's contents had been typed interactively). Typing
505 (as if the macro's contents had been typed interactively). Typing
500 %hist will reveal the intermediate (silently processed) lines.
506 %hist will reveal the intermediate (silently processed) lines.
501
507
502 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
508 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
503 pickle to fail (%run was overwriting __main__ and not restoring
509 pickle to fail (%run was overwriting __main__ and not restoring
504 it, but pickle relies on __main__ to operate).
510 it, but pickle relies on __main__ to operate).
505
511
506 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
512 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
507 using properties, but forgot to make the main InteractiveShell
513 using properties, but forgot to make the main InteractiveShell
508 class a new-style class. Properties fail silently, and
514 class a new-style class. Properties fail silently, and
509 misteriously, with old-style class (getters work, but
515 misteriously, with old-style class (getters work, but
510 setters don't do anything).
516 setters don't do anything).
511
517
512 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
518 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
513
519
514 * IPython/Magic.py (magic_history): fix history reporting bug (I
520 * IPython/Magic.py (magic_history): fix history reporting bug (I
515 know some nasties are still there, I just can't seem to find a
521 know some nasties are still there, I just can't seem to find a
516 reproducible test case to track them down; the input history is
522 reproducible test case to track them down; the input history is
517 falling out of sync...)
523 falling out of sync...)
518
524
519 * IPython/iplib.py (handle_shell_escape): fix bug where both
525 * IPython/iplib.py (handle_shell_escape): fix bug where both
520 aliases and system accesses where broken for indented code (such
526 aliases and system accesses where broken for indented code (such
521 as loops).
527 as loops).
522
528
523 * IPython/genutils.py (shell): fix small but critical bug for
529 * IPython/genutils.py (shell): fix small but critical bug for
524 win32 system access.
530 win32 system access.
525
531
526 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
532 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
527
533
528 * IPython/iplib.py (showtraceback): remove use of the
534 * IPython/iplib.py (showtraceback): remove use of the
529 sys.last_{type/value/traceback} structures, which are non
535 sys.last_{type/value/traceback} structures, which are non
530 thread-safe.
536 thread-safe.
531 (_prefilter): change control flow to ensure that we NEVER
537 (_prefilter): change control flow to ensure that we NEVER
532 introspect objects when autocall is off. This will guarantee that
538 introspect objects when autocall is off. This will guarantee that
533 having an input line of the form 'x.y', where access to attribute
539 having an input line of the form 'x.y', where access to attribute
534 'y' has side effects, doesn't trigger the side effect TWICE. It
540 'y' has side effects, doesn't trigger the side effect TWICE. It
535 is important to note that, with autocall on, these side effects
541 is important to note that, with autocall on, these side effects
536 can still happen.
542 can still happen.
537 (ipsystem): new builtin, to complete the ip{magic/alias/system}
543 (ipsystem): new builtin, to complete the ip{magic/alias/system}
538 trio. IPython offers these three kinds of special calls which are
544 trio. IPython offers these three kinds of special calls which are
539 not python code, and it's a good thing to have their call method
545 not python code, and it's a good thing to have their call method
540 be accessible as pure python functions (not just special syntax at
546 be accessible as pure python functions (not just special syntax at
541 the command line). It gives us a better internal implementation
547 the command line). It gives us a better internal implementation
542 structure, as well as exposing these for user scripting more
548 structure, as well as exposing these for user scripting more
543 cleanly.
549 cleanly.
544
550
545 * IPython/macro.py (Macro.__init__): moved macros to a standalone
551 * IPython/macro.py (Macro.__init__): moved macros to a standalone
546 file. Now that they'll be more likely to be used with the
552 file. Now that they'll be more likely to be used with the
547 persistance system (%store), I want to make sure their module path
553 persistance system (%store), I want to make sure their module path
548 doesn't change in the future, so that we don't break things for
554 doesn't change in the future, so that we don't break things for
549 users' persisted data.
555 users' persisted data.
550
556
551 * IPython/iplib.py (autoindent_update): move indentation
557 * IPython/iplib.py (autoindent_update): move indentation
552 management into the _text_ processing loop, not the keyboard
558 management into the _text_ processing loop, not the keyboard
553 interactive one. This is necessary to correctly process non-typed
559 interactive one. This is necessary to correctly process non-typed
554 multiline input (such as macros).
560 multiline input (such as macros).
555
561
556 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
562 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
557 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
563 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
558 which was producing problems in the resulting manual.
564 which was producing problems in the resulting manual.
559 (magic_whos): improve reporting of instances (show their class,
565 (magic_whos): improve reporting of instances (show their class,
560 instead of simply printing 'instance' which isn't terribly
566 instead of simply printing 'instance' which isn't terribly
561 informative).
567 informative).
562
568
563 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
569 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
564 (minor mods) to support network shares under win32.
570 (minor mods) to support network shares under win32.
565
571
566 * IPython/winconsole.py (get_console_size): add new winconsole
572 * IPython/winconsole.py (get_console_size): add new winconsole
567 module and fixes to page_dumb() to improve its behavior under
573 module and fixes to page_dumb() to improve its behavior under
568 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
574 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
569
575
570 * IPython/Magic.py (Macro): simplified Macro class to just
576 * IPython/Magic.py (Macro): simplified Macro class to just
571 subclass list. We've had only 2.2 compatibility for a very long
577 subclass list. We've had only 2.2 compatibility for a very long
572 time, yet I was still avoiding subclassing the builtin types. No
578 time, yet I was still avoiding subclassing the builtin types. No
573 more (I'm also starting to use properties, though I won't shift to
579 more (I'm also starting to use properties, though I won't shift to
574 2.3-specific features quite yet).
580 2.3-specific features quite yet).
575 (magic_store): added Ville's patch for lightweight variable
581 (magic_store): added Ville's patch for lightweight variable
576 persistence, after a request on the user list by Matt Wilkie
582 persistence, after a request on the user list by Matt Wilkie
577 <maphew-AT-gmail.com>. The new %store magic's docstring has full
583 <maphew-AT-gmail.com>. The new %store magic's docstring has full
578 details.
584 details.
579
585
580 * IPython/iplib.py (InteractiveShell.post_config_initialization):
586 * IPython/iplib.py (InteractiveShell.post_config_initialization):
581 changed the default logfile name from 'ipython.log' to
587 changed the default logfile name from 'ipython.log' to
582 'ipython_log.py'. These logs are real python files, and now that
588 'ipython_log.py'. These logs are real python files, and now that
583 we have much better multiline support, people are more likely to
589 we have much better multiline support, people are more likely to
584 want to use them as such. Might as well name them correctly.
590 want to use them as such. Might as well name them correctly.
585
591
586 * IPython/Magic.py: substantial cleanup. While we can't stop
592 * IPython/Magic.py: substantial cleanup. While we can't stop
587 using magics as mixins, due to the existing customizations 'out
593 using magics as mixins, due to the existing customizations 'out
588 there' which rely on the mixin naming conventions, at least I
594 there' which rely on the mixin naming conventions, at least I
589 cleaned out all cross-class name usage. So once we are OK with
595 cleaned out all cross-class name usage. So once we are OK with
590 breaking compatibility, the two systems can be separated.
596 breaking compatibility, the two systems can be separated.
591
597
592 * IPython/Logger.py: major cleanup. This one is NOT a mixin
598 * IPython/Logger.py: major cleanup. This one is NOT a mixin
593 anymore, and the class is a fair bit less hideous as well. New
599 anymore, and the class is a fair bit less hideous as well. New
594 features were also introduced: timestamping of input, and logging
600 features were also introduced: timestamping of input, and logging
595 of output results. These are user-visible with the -t and -o
601 of output results. These are user-visible with the -t and -o
596 options to %logstart. Closes
602 options to %logstart. Closes
597 http://www.scipy.net/roundup/ipython/issue11 and a request by
603 http://www.scipy.net/roundup/ipython/issue11 and a request by
598 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
604 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
599
605
600 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
606 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
601
607
602 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
608 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
603 better hadnle backslashes in paths. See the thread 'More Windows
609 better hadnle backslashes in paths. See the thread 'More Windows
604 questions part 2 - \/ characters revisited' on the iypthon user
610 questions part 2 - \/ characters revisited' on the iypthon user
605 list:
611 list:
606 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
612 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
607
613
608 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
614 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
609
615
610 (InteractiveShell.__init__): change threaded shells to not use the
616 (InteractiveShell.__init__): change threaded shells to not use the
611 ipython crash handler. This was causing more problems than not,
617 ipython crash handler. This was causing more problems than not,
612 as exceptions in the main thread (GUI code, typically) would
618 as exceptions in the main thread (GUI code, typically) would
613 always show up as a 'crash', when they really weren't.
619 always show up as a 'crash', when they really weren't.
614
620
615 The colors and exception mode commands (%colors/%xmode) have been
621 The colors and exception mode commands (%colors/%xmode) have been
616 synchronized to also take this into account, so users can get
622 synchronized to also take this into account, so users can get
617 verbose exceptions for their threaded code as well. I also added
623 verbose exceptions for their threaded code as well. I also added
618 support for activating pdb inside this exception handler as well,
624 support for activating pdb inside this exception handler as well,
619 so now GUI authors can use IPython's enhanced pdb at runtime.
625 so now GUI authors can use IPython's enhanced pdb at runtime.
620
626
621 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
627 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
622 true by default, and add it to the shipped ipythonrc file. Since
628 true by default, and add it to the shipped ipythonrc file. Since
623 this asks the user before proceeding, I think it's OK to make it
629 this asks the user before proceeding, I think it's OK to make it
624 true by default.
630 true by default.
625
631
626 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
632 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
627 of the previous special-casing of input in the eval loop. I think
633 of the previous special-casing of input in the eval loop. I think
628 this is cleaner, as they really are commands and shouldn't have
634 this is cleaner, as they really are commands and shouldn't have
629 a special role in the middle of the core code.
635 a special role in the middle of the core code.
630
636
631 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
637 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
632
638
633 * IPython/iplib.py (edit_syntax_error): added support for
639 * IPython/iplib.py (edit_syntax_error): added support for
634 automatically reopening the editor if the file had a syntax error
640 automatically reopening the editor if the file had a syntax error
635 in it. Thanks to scottt who provided the patch at:
641 in it. Thanks to scottt who provided the patch at:
636 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
642 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
637 version committed).
643 version committed).
638
644
639 * IPython/iplib.py (handle_normal): add suport for multi-line
645 * IPython/iplib.py (handle_normal): add suport for multi-line
640 input with emtpy lines. This fixes
646 input with emtpy lines. This fixes
641 http://www.scipy.net/roundup/ipython/issue43 and a similar
647 http://www.scipy.net/roundup/ipython/issue43 and a similar
642 discussion on the user list.
648 discussion on the user list.
643
649
644 WARNING: a behavior change is necessarily introduced to support
650 WARNING: a behavior change is necessarily introduced to support
645 blank lines: now a single blank line with whitespace does NOT
651 blank lines: now a single blank line with whitespace does NOT
646 break the input loop, which means that when autoindent is on, by
652 break the input loop, which means that when autoindent is on, by
647 default hitting return on the next (indented) line does NOT exit.
653 default hitting return on the next (indented) line does NOT exit.
648
654
649 Instead, to exit a multiline input you can either have:
655 Instead, to exit a multiline input you can either have:
650
656
651 - TWO whitespace lines (just hit return again), or
657 - TWO whitespace lines (just hit return again), or
652 - a single whitespace line of a different length than provided
658 - a single whitespace line of a different length than provided
653 by the autoindent (add or remove a space).
659 by the autoindent (add or remove a space).
654
660
655 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
661 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
656 module to better organize all readline-related functionality.
662 module to better organize all readline-related functionality.
657 I've deleted FlexCompleter and put all completion clases here.
663 I've deleted FlexCompleter and put all completion clases here.
658
664
659 * IPython/iplib.py (raw_input): improve indentation management.
665 * IPython/iplib.py (raw_input): improve indentation management.
660 It is now possible to paste indented code with autoindent on, and
666 It is now possible to paste indented code with autoindent on, and
661 the code is interpreted correctly (though it still looks bad on
667 the code is interpreted correctly (though it still looks bad on
662 screen, due to the line-oriented nature of ipython).
668 screen, due to the line-oriented nature of ipython).
663 (MagicCompleter.complete): change behavior so that a TAB key on an
669 (MagicCompleter.complete): change behavior so that a TAB key on an
664 otherwise empty line actually inserts a tab, instead of completing
670 otherwise empty line actually inserts a tab, instead of completing
665 on the entire global namespace. This makes it easier to use the
671 on the entire global namespace. This makes it easier to use the
666 TAB key for indentation. After a request by Hans Meine
672 TAB key for indentation. After a request by Hans Meine
667 <hans_meine-AT-gmx.net>
673 <hans_meine-AT-gmx.net>
668 (_prefilter): add support so that typing plain 'exit' or 'quit'
674 (_prefilter): add support so that typing plain 'exit' or 'quit'
669 does a sensible thing. Originally I tried to deviate as little as
675 does a sensible thing. Originally I tried to deviate as little as
670 possible from the default python behavior, but even that one may
676 possible from the default python behavior, but even that one may
671 change in this direction (thread on python-dev to that effect).
677 change in this direction (thread on python-dev to that effect).
672 Regardless, ipython should do the right thing even if CPython's
678 Regardless, ipython should do the right thing even if CPython's
673 '>>>' prompt doesn't.
679 '>>>' prompt doesn't.
674 (InteractiveShell): removed subclassing code.InteractiveConsole
680 (InteractiveShell): removed subclassing code.InteractiveConsole
675 class. By now we'd overridden just about all of its methods: I've
681 class. By now we'd overridden just about all of its methods: I've
676 copied the remaining two over, and now ipython is a standalone
682 copied the remaining two over, and now ipython is a standalone
677 class. This will provide a clearer picture for the chainsaw
683 class. This will provide a clearer picture for the chainsaw
678 branch refactoring.
684 branch refactoring.
679
685
680 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
686 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
681
687
682 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
688 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
683 failures for objects which break when dir() is called on them.
689 failures for objects which break when dir() is called on them.
684
690
685 * IPython/FlexCompleter.py (Completer.__init__): Added support for
691 * IPython/FlexCompleter.py (Completer.__init__): Added support for
686 distinct local and global namespaces in the completer API. This
692 distinct local and global namespaces in the completer API. This
687 change allows us top properly handle completion with distinct
693 change allows us top properly handle completion with distinct
688 scopes, including in embedded instances (this had never really
694 scopes, including in embedded instances (this had never really
689 worked correctly).
695 worked correctly).
690
696
691 Note: this introduces a change in the constructor for
697 Note: this introduces a change in the constructor for
692 MagicCompleter, as a new global_namespace parameter is now the
698 MagicCompleter, as a new global_namespace parameter is now the
693 second argument (the others were bumped one position).
699 second argument (the others were bumped one position).
694
700
695 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
701 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
696
702
697 * IPython/iplib.py (embed_mainloop): fix tab-completion in
703 * IPython/iplib.py (embed_mainloop): fix tab-completion in
698 embedded instances (which can be done now thanks to Vivian's
704 embedded instances (which can be done now thanks to Vivian's
699 frame-handling fixes for pdb).
705 frame-handling fixes for pdb).
700 (InteractiveShell.__init__): Fix namespace handling problem in
706 (InteractiveShell.__init__): Fix namespace handling problem in
701 embedded instances. We were overwriting __main__ unconditionally,
707 embedded instances. We were overwriting __main__ unconditionally,
702 and this should only be done for 'full' (non-embedded) IPython;
708 and this should only be done for 'full' (non-embedded) IPython;
703 embedded instances must respect the caller's __main__. Thanks to
709 embedded instances must respect the caller's __main__. Thanks to
704 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
710 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
705
711
706 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
712 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
707
713
708 * setup.py: added download_url to setup(). This registers the
714 * setup.py: added download_url to setup(). This registers the
709 download address at PyPI, which is not only useful to humans
715 download address at PyPI, which is not only useful to humans
710 browsing the site, but is also picked up by setuptools (the Eggs
716 browsing the site, but is also picked up by setuptools (the Eggs
711 machinery). Thanks to Ville and R. Kern for the info/discussion
717 machinery). Thanks to Ville and R. Kern for the info/discussion
712 on this.
718 on this.
713
719
714 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
720 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
715
721
716 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
722 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
717 This brings a lot of nice functionality to the pdb mode, which now
723 This brings a lot of nice functionality to the pdb mode, which now
718 has tab-completion, syntax highlighting, and better stack handling
724 has tab-completion, syntax highlighting, and better stack handling
719 than before. Many thanks to Vivian De Smedt
725 than before. Many thanks to Vivian De Smedt
720 <vivian-AT-vdesmedt.com> for the original patches.
726 <vivian-AT-vdesmedt.com> for the original patches.
721
727
722 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
728 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
723
729
724 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
730 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
725 sequence to consistently accept the banner argument. The
731 sequence to consistently accept the banner argument. The
726 inconsistency was tripping SAGE, thanks to Gary Zablackis
732 inconsistency was tripping SAGE, thanks to Gary Zablackis
727 <gzabl-AT-yahoo.com> for the report.
733 <gzabl-AT-yahoo.com> for the report.
728
734
729 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
735 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
730
736
731 * IPython/iplib.py (InteractiveShell.post_config_initialization):
737 * IPython/iplib.py (InteractiveShell.post_config_initialization):
732 Fix bug where a naked 'alias' call in the ipythonrc file would
738 Fix bug where a naked 'alias' call in the ipythonrc file would
733 cause a crash. Bug reported by Jorgen Stenarson.
739 cause a crash. Bug reported by Jorgen Stenarson.
734
740
735 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
741 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
736
742
737 * IPython/ipmaker.py (make_IPython): cleanups which should improve
743 * IPython/ipmaker.py (make_IPython): cleanups which should improve
738 startup time.
744 startup time.
739
745
740 * IPython/iplib.py (runcode): my globals 'fix' for embedded
746 * IPython/iplib.py (runcode): my globals 'fix' for embedded
741 instances had introduced a bug with globals in normal code. Now
747 instances had introduced a bug with globals in normal code. Now
742 it's working in all cases.
748 it's working in all cases.
743
749
744 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
750 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
745 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
751 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
746 has been introduced to set the default case sensitivity of the
752 has been introduced to set the default case sensitivity of the
747 searches. Users can still select either mode at runtime on a
753 searches. Users can still select either mode at runtime on a
748 per-search basis.
754 per-search basis.
749
755
750 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
756 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
751
757
752 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
758 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
753 attributes in wildcard searches for subclasses. Modified version
759 attributes in wildcard searches for subclasses. Modified version
754 of a patch by Jorgen.
760 of a patch by Jorgen.
755
761
756 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
762 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
757
763
758 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
764 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
759 embedded instances. I added a user_global_ns attribute to the
765 embedded instances. I added a user_global_ns attribute to the
760 InteractiveShell class to handle this.
766 InteractiveShell class to handle this.
761
767
762 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
768 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
763
769
764 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
770 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
765 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
771 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
766 (reported under win32, but may happen also in other platforms).
772 (reported under win32, but may happen also in other platforms).
767 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
773 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
768
774
769 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
775 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
770
776
771 * IPython/Magic.py (magic_psearch): new support for wildcard
777 * IPython/Magic.py (magic_psearch): new support for wildcard
772 patterns. Now, typing ?a*b will list all names which begin with a
778 patterns. Now, typing ?a*b will list all names which begin with a
773 and end in b, for example. The %psearch magic has full
779 and end in b, for example. The %psearch magic has full
774 docstrings. Many thanks to JΓΆrgen Stenarson
780 docstrings. Many thanks to JΓΆrgen Stenarson
775 <jorgen.stenarson-AT-bostream.nu>, author of the patches
781 <jorgen.stenarson-AT-bostream.nu>, author of the patches
776 implementing this functionality.
782 implementing this functionality.
777
783
778 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
784 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
779
785
780 * Manual: fixed long-standing annoyance of double-dashes (as in
786 * Manual: fixed long-standing annoyance of double-dashes (as in
781 --prefix=~, for example) being stripped in the HTML version. This
787 --prefix=~, for example) being stripped in the HTML version. This
782 is a latex2html bug, but a workaround was provided. Many thanks
788 is a latex2html bug, but a workaround was provided. Many thanks
783 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
789 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
784 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
790 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
785 rolling. This seemingly small issue had tripped a number of users
791 rolling. This seemingly small issue had tripped a number of users
786 when first installing, so I'm glad to see it gone.
792 when first installing, so I'm glad to see it gone.
787
793
788 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
794 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
789
795
790 * IPython/Extensions/numeric_formats.py: fix missing import,
796 * IPython/Extensions/numeric_formats.py: fix missing import,
791 reported by Stephen Walton.
797 reported by Stephen Walton.
792
798
793 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
799 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
794
800
795 * IPython/demo.py: finish demo module, fully documented now.
801 * IPython/demo.py: finish demo module, fully documented now.
796
802
797 * IPython/genutils.py (file_read): simple little utility to read a
803 * IPython/genutils.py (file_read): simple little utility to read a
798 file and ensure it's closed afterwards.
804 file and ensure it's closed afterwards.
799
805
800 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
806 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
801
807
802 * IPython/demo.py (Demo.__init__): added support for individually
808 * IPython/demo.py (Demo.__init__): added support for individually
803 tagging blocks for automatic execution.
809 tagging blocks for automatic execution.
804
810
805 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
811 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
806 syntax-highlighted python sources, requested by John.
812 syntax-highlighted python sources, requested by John.
807
813
808 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
814 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
809
815
810 * IPython/demo.py (Demo.again): fix bug where again() blocks after
816 * IPython/demo.py (Demo.again): fix bug where again() blocks after
811 finishing.
817 finishing.
812
818
813 * IPython/genutils.py (shlex_split): moved from Magic to here,
819 * IPython/genutils.py (shlex_split): moved from Magic to here,
814 where all 2.2 compatibility stuff lives. I needed it for demo.py.
820 where all 2.2 compatibility stuff lives. I needed it for demo.py.
815
821
816 * IPython/demo.py (Demo.__init__): added support for silent
822 * IPython/demo.py (Demo.__init__): added support for silent
817 blocks, improved marks as regexps, docstrings written.
823 blocks, improved marks as regexps, docstrings written.
818 (Demo.__init__): better docstring, added support for sys.argv.
824 (Demo.__init__): better docstring, added support for sys.argv.
819
825
820 * IPython/genutils.py (marquee): little utility used by the demo
826 * IPython/genutils.py (marquee): little utility used by the demo
821 code, handy in general.
827 code, handy in general.
822
828
823 * IPython/demo.py (Demo.__init__): new class for interactive
829 * IPython/demo.py (Demo.__init__): new class for interactive
824 demos. Not documented yet, I just wrote it in a hurry for
830 demos. Not documented yet, I just wrote it in a hurry for
825 scipy'05. Will docstring later.
831 scipy'05. Will docstring later.
826
832
827 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
833 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
828
834
829 * IPython/Shell.py (sigint_handler): Drastic simplification which
835 * IPython/Shell.py (sigint_handler): Drastic simplification which
830 also seems to make Ctrl-C work correctly across threads! This is
836 also seems to make Ctrl-C work correctly across threads! This is
831 so simple, that I can't beleive I'd missed it before. Needs more
837 so simple, that I can't beleive I'd missed it before. Needs more
832 testing, though.
838 testing, though.
833 (KBINT): Never mind, revert changes. I'm sure I'd tried something
839 (KBINT): Never mind, revert changes. I'm sure I'd tried something
834 like this before...
840 like this before...
835
841
836 * IPython/genutils.py (get_home_dir): add protection against
842 * IPython/genutils.py (get_home_dir): add protection against
837 non-dirs in win32 registry.
843 non-dirs in win32 registry.
838
844
839 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
845 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
840 bug where dict was mutated while iterating (pysh crash).
846 bug where dict was mutated while iterating (pysh crash).
841
847
842 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
848 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
843
849
844 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
850 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
845 spurious newlines added by this routine. After a report by
851 spurious newlines added by this routine. After a report by
846 F. Mantegazza.
852 F. Mantegazza.
847
853
848 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
854 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
849
855
850 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
856 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
851 calls. These were a leftover from the GTK 1.x days, and can cause
857 calls. These were a leftover from the GTK 1.x days, and can cause
852 problems in certain cases (after a report by John Hunter).
858 problems in certain cases (after a report by John Hunter).
853
859
854 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
860 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
855 os.getcwd() fails at init time. Thanks to patch from David Remahl
861 os.getcwd() fails at init time. Thanks to patch from David Remahl
856 <chmod007-AT-mac.com>.
862 <chmod007-AT-mac.com>.
857 (InteractiveShell.__init__): prevent certain special magics from
863 (InteractiveShell.__init__): prevent certain special magics from
858 being shadowed by aliases. Closes
864 being shadowed by aliases. Closes
859 http://www.scipy.net/roundup/ipython/issue41.
865 http://www.scipy.net/roundup/ipython/issue41.
860
866
861 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
867 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
862
868
863 * IPython/iplib.py (InteractiveShell.complete): Added new
869 * IPython/iplib.py (InteractiveShell.complete): Added new
864 top-level completion method to expose the completion mechanism
870 top-level completion method to expose the completion mechanism
865 beyond readline-based environments.
871 beyond readline-based environments.
866
872
867 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
873 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
868
874
869 * tools/ipsvnc (svnversion): fix svnversion capture.
875 * tools/ipsvnc (svnversion): fix svnversion capture.
870
876
871 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
877 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
872 attribute to self, which was missing. Before, it was set by a
878 attribute to self, which was missing. Before, it was set by a
873 routine which in certain cases wasn't being called, so the
879 routine which in certain cases wasn't being called, so the
874 instance could end up missing the attribute. This caused a crash.
880 instance could end up missing the attribute. This caused a crash.
875 Closes http://www.scipy.net/roundup/ipython/issue40.
881 Closes http://www.scipy.net/roundup/ipython/issue40.
876
882
877 2005-08-16 Fernando Perez <fperez@colorado.edu>
883 2005-08-16 Fernando Perez <fperez@colorado.edu>
878
884
879 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
885 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
880 contains non-string attribute. Closes
886 contains non-string attribute. Closes
881 http://www.scipy.net/roundup/ipython/issue38.
887 http://www.scipy.net/roundup/ipython/issue38.
882
888
883 2005-08-14 Fernando Perez <fperez@colorado.edu>
889 2005-08-14 Fernando Perez <fperez@colorado.edu>
884
890
885 * tools/ipsvnc: Minor improvements, to add changeset info.
891 * tools/ipsvnc: Minor improvements, to add changeset info.
886
892
887 2005-08-12 Fernando Perez <fperez@colorado.edu>
893 2005-08-12 Fernando Perez <fperez@colorado.edu>
888
894
889 * IPython/iplib.py (runsource): remove self.code_to_run_src
895 * IPython/iplib.py (runsource): remove self.code_to_run_src
890 attribute. I realized this is nothing more than
896 attribute. I realized this is nothing more than
891 '\n'.join(self.buffer), and having the same data in two different
897 '\n'.join(self.buffer), and having the same data in two different
892 places is just asking for synchronization bugs. This may impact
898 places is just asking for synchronization bugs. This may impact
893 people who have custom exception handlers, so I need to warn
899 people who have custom exception handlers, so I need to warn
894 ipython-dev about it (F. Mantegazza may use them).
900 ipython-dev about it (F. Mantegazza may use them).
895
901
896 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
902 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
897
903
898 * IPython/genutils.py: fix 2.2 compatibility (generators)
904 * IPython/genutils.py: fix 2.2 compatibility (generators)
899
905
900 2005-07-18 Fernando Perez <fperez@colorado.edu>
906 2005-07-18 Fernando Perez <fperez@colorado.edu>
901
907
902 * IPython/genutils.py (get_home_dir): fix to help users with
908 * IPython/genutils.py (get_home_dir): fix to help users with
903 invalid $HOME under win32.
909 invalid $HOME under win32.
904
910
905 2005-07-17 Fernando Perez <fperez@colorado.edu>
911 2005-07-17 Fernando Perez <fperez@colorado.edu>
906
912
907 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
913 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
908 some old hacks and clean up a bit other routines; code should be
914 some old hacks and clean up a bit other routines; code should be
909 simpler and a bit faster.
915 simpler and a bit faster.
910
916
911 * IPython/iplib.py (interact): removed some last-resort attempts
917 * IPython/iplib.py (interact): removed some last-resort attempts
912 to survive broken stdout/stderr. That code was only making it
918 to survive broken stdout/stderr. That code was only making it
913 harder to abstract out the i/o (necessary for gui integration),
919 harder to abstract out the i/o (necessary for gui integration),
914 and the crashes it could prevent were extremely rare in practice
920 and the crashes it could prevent were extremely rare in practice
915 (besides being fully user-induced in a pretty violent manner).
921 (besides being fully user-induced in a pretty violent manner).
916
922
917 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
923 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
918 Nothing major yet, but the code is simpler to read; this should
924 Nothing major yet, but the code is simpler to read; this should
919 make it easier to do more serious modifications in the future.
925 make it easier to do more serious modifications in the future.
920
926
921 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
927 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
922 which broke in .15 (thanks to a report by Ville).
928 which broke in .15 (thanks to a report by Ville).
923
929
924 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
930 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
925 be quite correct, I know next to nothing about unicode). This
931 be quite correct, I know next to nothing about unicode). This
926 will allow unicode strings to be used in prompts, amongst other
932 will allow unicode strings to be used in prompts, amongst other
927 cases. It also will prevent ipython from crashing when unicode
933 cases. It also will prevent ipython from crashing when unicode
928 shows up unexpectedly in many places. If ascii encoding fails, we
934 shows up unexpectedly in many places. If ascii encoding fails, we
929 assume utf_8. Currently the encoding is not a user-visible
935 assume utf_8. Currently the encoding is not a user-visible
930 setting, though it could be made so if there is demand for it.
936 setting, though it could be made so if there is demand for it.
931
937
932 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
938 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
933
939
934 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
940 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
935
941
936 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
942 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
937
943
938 * IPython/genutils.py: Add 2.2 compatibility here, so all other
944 * IPython/genutils.py: Add 2.2 compatibility here, so all other
939 code can work transparently for 2.2/2.3.
945 code can work transparently for 2.2/2.3.
940
946
941 2005-07-16 Fernando Perez <fperez@colorado.edu>
947 2005-07-16 Fernando Perez <fperez@colorado.edu>
942
948
943 * IPython/ultraTB.py (ExceptionColors): Make a global variable
949 * IPython/ultraTB.py (ExceptionColors): Make a global variable
944 out of the color scheme table used for coloring exception
950 out of the color scheme table used for coloring exception
945 tracebacks. This allows user code to add new schemes at runtime.
951 tracebacks. This allows user code to add new schemes at runtime.
946 This is a minimally modified version of the patch at
952 This is a minimally modified version of the patch at
947 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
953 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
948 for the contribution.
954 for the contribution.
949
955
950 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
956 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
951 slightly modified version of the patch in
957 slightly modified version of the patch in
952 http://www.scipy.net/roundup/ipython/issue34, which also allows me
958 http://www.scipy.net/roundup/ipython/issue34, which also allows me
953 to remove the previous try/except solution (which was costlier).
959 to remove the previous try/except solution (which was costlier).
954 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
960 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
955
961
956 2005-06-08 Fernando Perez <fperez@colorado.edu>
962 2005-06-08 Fernando Perez <fperez@colorado.edu>
957
963
958 * IPython/iplib.py (write/write_err): Add methods to abstract all
964 * IPython/iplib.py (write/write_err): Add methods to abstract all
959 I/O a bit more.
965 I/O a bit more.
960
966
961 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
967 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
962 warning, reported by Aric Hagberg, fix by JD Hunter.
968 warning, reported by Aric Hagberg, fix by JD Hunter.
963
969
964 2005-06-02 *** Released version 0.6.15
970 2005-06-02 *** Released version 0.6.15
965
971
966 2005-06-01 Fernando Perez <fperez@colorado.edu>
972 2005-06-01 Fernando Perez <fperez@colorado.edu>
967
973
968 * IPython/iplib.py (MagicCompleter.file_matches): Fix
974 * IPython/iplib.py (MagicCompleter.file_matches): Fix
969 tab-completion of filenames within open-quoted strings. Note that
975 tab-completion of filenames within open-quoted strings. Note that
970 this requires that in ~/.ipython/ipythonrc, users change the
976 this requires that in ~/.ipython/ipythonrc, users change the
971 readline delimiters configuration to read:
977 readline delimiters configuration to read:
972
978
973 readline_remove_delims -/~
979 readline_remove_delims -/~
974
980
975
981
976 2005-05-31 *** Released version 0.6.14
982 2005-05-31 *** Released version 0.6.14
977
983
978 2005-05-29 Fernando Perez <fperez@colorado.edu>
984 2005-05-29 Fernando Perez <fperez@colorado.edu>
979
985
980 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
986 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
981 with files not on the filesystem. Reported by Eliyahu Sandler
987 with files not on the filesystem. Reported by Eliyahu Sandler
982 <eli@gondolin.net>
988 <eli@gondolin.net>
983
989
984 2005-05-22 Fernando Perez <fperez@colorado.edu>
990 2005-05-22 Fernando Perez <fperez@colorado.edu>
985
991
986 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
992 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
987 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
993 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
988
994
989 2005-05-19 Fernando Perez <fperez@colorado.edu>
995 2005-05-19 Fernando Perez <fperez@colorado.edu>
990
996
991 * IPython/iplib.py (safe_execfile): close a file which could be
997 * IPython/iplib.py (safe_execfile): close a file which could be
992 left open (causing problems in win32, which locks open files).
998 left open (causing problems in win32, which locks open files).
993 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
999 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
994
1000
995 2005-05-18 Fernando Perez <fperez@colorado.edu>
1001 2005-05-18 Fernando Perez <fperez@colorado.edu>
996
1002
997 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1003 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
998 keyword arguments correctly to safe_execfile().
1004 keyword arguments correctly to safe_execfile().
999
1005
1000 2005-05-13 Fernando Perez <fperez@colorado.edu>
1006 2005-05-13 Fernando Perez <fperez@colorado.edu>
1001
1007
1002 * ipython.1: Added info about Qt to manpage, and threads warning
1008 * ipython.1: Added info about Qt to manpage, and threads warning
1003 to usage page (invoked with --help).
1009 to usage page (invoked with --help).
1004
1010
1005 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1011 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1006 new matcher (it goes at the end of the priority list) to do
1012 new matcher (it goes at the end of the priority list) to do
1007 tab-completion on named function arguments. Submitted by George
1013 tab-completion on named function arguments. Submitted by George
1008 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1014 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1009 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1015 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1010 for more details.
1016 for more details.
1011
1017
1012 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1018 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1013 SystemExit exceptions in the script being run. Thanks to a report
1019 SystemExit exceptions in the script being run. Thanks to a report
1014 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1020 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1015 producing very annoying behavior when running unit tests.
1021 producing very annoying behavior when running unit tests.
1016
1022
1017 2005-05-12 Fernando Perez <fperez@colorado.edu>
1023 2005-05-12 Fernando Perez <fperez@colorado.edu>
1018
1024
1019 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1025 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1020 which I'd broken (again) due to a changed regexp. In the process,
1026 which I'd broken (again) due to a changed regexp. In the process,
1021 added ';' as an escape to auto-quote the whole line without
1027 added ';' as an escape to auto-quote the whole line without
1022 splitting its arguments. Thanks to a report by Jerry McRae
1028 splitting its arguments. Thanks to a report by Jerry McRae
1023 <qrs0xyc02-AT-sneakemail.com>.
1029 <qrs0xyc02-AT-sneakemail.com>.
1024
1030
1025 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1031 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1026 possible crashes caused by a TokenError. Reported by Ed Schofield
1032 possible crashes caused by a TokenError. Reported by Ed Schofield
1027 <schofield-AT-ftw.at>.
1033 <schofield-AT-ftw.at>.
1028
1034
1029 2005-05-06 Fernando Perez <fperez@colorado.edu>
1035 2005-05-06 Fernando Perez <fperez@colorado.edu>
1030
1036
1031 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1037 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1032
1038
1033 2005-04-29 Fernando Perez <fperez@colorado.edu>
1039 2005-04-29 Fernando Perez <fperez@colorado.edu>
1034
1040
1035 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1041 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1036 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1042 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1037 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1043 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1038 which provides support for Qt interactive usage (similar to the
1044 which provides support for Qt interactive usage (similar to the
1039 existing one for WX and GTK). This had been often requested.
1045 existing one for WX and GTK). This had been often requested.
1040
1046
1041 2005-04-14 *** Released version 0.6.13
1047 2005-04-14 *** Released version 0.6.13
1042
1048
1043 2005-04-08 Fernando Perez <fperez@colorado.edu>
1049 2005-04-08 Fernando Perez <fperez@colorado.edu>
1044
1050
1045 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1051 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1046 from _ofind, which gets called on almost every input line. Now,
1052 from _ofind, which gets called on almost every input line. Now,
1047 we only try to get docstrings if they are actually going to be
1053 we only try to get docstrings if they are actually going to be
1048 used (the overhead of fetching unnecessary docstrings can be
1054 used (the overhead of fetching unnecessary docstrings can be
1049 noticeable for certain objects, such as Pyro proxies).
1055 noticeable for certain objects, such as Pyro proxies).
1050
1056
1051 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1057 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1052 for completers. For some reason I had been passing them the state
1058 for completers. For some reason I had been passing them the state
1053 variable, which completers never actually need, and was in
1059 variable, which completers never actually need, and was in
1054 conflict with the rlcompleter API. Custom completers ONLY need to
1060 conflict with the rlcompleter API. Custom completers ONLY need to
1055 take the text parameter.
1061 take the text parameter.
1056
1062
1057 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1063 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1058 work correctly in pysh. I've also moved all the logic which used
1064 work correctly in pysh. I've also moved all the logic which used
1059 to be in pysh.py here, which will prevent problems with future
1065 to be in pysh.py here, which will prevent problems with future
1060 upgrades. However, this time I must warn users to update their
1066 upgrades. However, this time I must warn users to update their
1061 pysh profile to include the line
1067 pysh profile to include the line
1062
1068
1063 import_all IPython.Extensions.InterpreterExec
1069 import_all IPython.Extensions.InterpreterExec
1064
1070
1065 because otherwise things won't work for them. They MUST also
1071 because otherwise things won't work for them. They MUST also
1066 delete pysh.py and the line
1072 delete pysh.py and the line
1067
1073
1068 execfile pysh.py
1074 execfile pysh.py
1069
1075
1070 from their ipythonrc-pysh.
1076 from their ipythonrc-pysh.
1071
1077
1072 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1078 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1073 robust in the face of objects whose dir() returns non-strings
1079 robust in the face of objects whose dir() returns non-strings
1074 (which it shouldn't, but some broken libs like ITK do). Thanks to
1080 (which it shouldn't, but some broken libs like ITK do). Thanks to
1075 a patch by John Hunter (implemented differently, though). Also
1081 a patch by John Hunter (implemented differently, though). Also
1076 minor improvements by using .extend instead of + on lists.
1082 minor improvements by using .extend instead of + on lists.
1077
1083
1078 * pysh.py:
1084 * pysh.py:
1079
1085
1080 2005-04-06 Fernando Perez <fperez@colorado.edu>
1086 2005-04-06 Fernando Perez <fperez@colorado.edu>
1081
1087
1082 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1088 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1083 by default, so that all users benefit from it. Those who don't
1089 by default, so that all users benefit from it. Those who don't
1084 want it can still turn it off.
1090 want it can still turn it off.
1085
1091
1086 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1092 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1087 config file, I'd forgotten about this, so users were getting it
1093 config file, I'd forgotten about this, so users were getting it
1088 off by default.
1094 off by default.
1089
1095
1090 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1096 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1091 consistency. Now magics can be called in multiline statements,
1097 consistency. Now magics can be called in multiline statements,
1092 and python variables can be expanded in magic calls via $var.
1098 and python variables can be expanded in magic calls via $var.
1093 This makes the magic system behave just like aliases or !system
1099 This makes the magic system behave just like aliases or !system
1094 calls.
1100 calls.
1095
1101
1096 2005-03-28 Fernando Perez <fperez@colorado.edu>
1102 2005-03-28 Fernando Perez <fperez@colorado.edu>
1097
1103
1098 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1104 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1099 expensive string additions for building command. Add support for
1105 expensive string additions for building command. Add support for
1100 trailing ';' when autocall is used.
1106 trailing ';' when autocall is used.
1101
1107
1102 2005-03-26 Fernando Perez <fperez@colorado.edu>
1108 2005-03-26 Fernando Perez <fperez@colorado.edu>
1103
1109
1104 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1110 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1105 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1111 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1106 ipython.el robust against prompts with any number of spaces
1112 ipython.el robust against prompts with any number of spaces
1107 (including 0) after the ':' character.
1113 (including 0) after the ':' character.
1108
1114
1109 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1115 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1110 continuation prompt, which misled users to think the line was
1116 continuation prompt, which misled users to think the line was
1111 already indented. Closes debian Bug#300847, reported to me by
1117 already indented. Closes debian Bug#300847, reported to me by
1112 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1118 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1113
1119
1114 2005-03-23 Fernando Perez <fperez@colorado.edu>
1120 2005-03-23 Fernando Perez <fperez@colorado.edu>
1115
1121
1116 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1122 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1117 properly aligned if they have embedded newlines.
1123 properly aligned if they have embedded newlines.
1118
1124
1119 * IPython/iplib.py (runlines): Add a public method to expose
1125 * IPython/iplib.py (runlines): Add a public method to expose
1120 IPython's code execution machinery, so that users can run strings
1126 IPython's code execution machinery, so that users can run strings
1121 as if they had been typed at the prompt interactively.
1127 as if they had been typed at the prompt interactively.
1122 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1128 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1123 methods which can call the system shell, but with python variable
1129 methods which can call the system shell, but with python variable
1124 expansion. The three such methods are: __IPYTHON__.system,
1130 expansion. The three such methods are: __IPYTHON__.system,
1125 .getoutput and .getoutputerror. These need to be documented in a
1131 .getoutput and .getoutputerror. These need to be documented in a
1126 'public API' section (to be written) of the manual.
1132 'public API' section (to be written) of the manual.
1127
1133
1128 2005-03-20 Fernando Perez <fperez@colorado.edu>
1134 2005-03-20 Fernando Perez <fperez@colorado.edu>
1129
1135
1130 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1136 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1131 for custom exception handling. This is quite powerful, and it
1137 for custom exception handling. This is quite powerful, and it
1132 allows for user-installable exception handlers which can trap
1138 allows for user-installable exception handlers which can trap
1133 custom exceptions at runtime and treat them separately from
1139 custom exceptions at runtime and treat them separately from
1134 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1140 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1135 Mantegazza <mantegazza-AT-ill.fr>.
1141 Mantegazza <mantegazza-AT-ill.fr>.
1136 (InteractiveShell.set_custom_completer): public API function to
1142 (InteractiveShell.set_custom_completer): public API function to
1137 add new completers at runtime.
1143 add new completers at runtime.
1138
1144
1139 2005-03-19 Fernando Perez <fperez@colorado.edu>
1145 2005-03-19 Fernando Perez <fperez@colorado.edu>
1140
1146
1141 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1147 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1142 allow objects which provide their docstrings via non-standard
1148 allow objects which provide their docstrings via non-standard
1143 mechanisms (like Pyro proxies) to still be inspected by ipython's
1149 mechanisms (like Pyro proxies) to still be inspected by ipython's
1144 ? system.
1150 ? system.
1145
1151
1146 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1152 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1147 automatic capture system. I tried quite hard to make it work
1153 automatic capture system. I tried quite hard to make it work
1148 reliably, and simply failed. I tried many combinations with the
1154 reliably, and simply failed. I tried many combinations with the
1149 subprocess module, but eventually nothing worked in all needed
1155 subprocess module, but eventually nothing worked in all needed
1150 cases (not blocking stdin for the child, duplicating stdout
1156 cases (not blocking stdin for the child, duplicating stdout
1151 without blocking, etc). The new %sc/%sx still do capture to these
1157 without blocking, etc). The new %sc/%sx still do capture to these
1152 magical list/string objects which make shell use much more
1158 magical list/string objects which make shell use much more
1153 conveninent, so not all is lost.
1159 conveninent, so not all is lost.
1154
1160
1155 XXX - FIX MANUAL for the change above!
1161 XXX - FIX MANUAL for the change above!
1156
1162
1157 (runsource): I copied code.py's runsource() into ipython to modify
1163 (runsource): I copied code.py's runsource() into ipython to modify
1158 it a bit. Now the code object and source to be executed are
1164 it a bit. Now the code object and source to be executed are
1159 stored in ipython. This makes this info accessible to third-party
1165 stored in ipython. This makes this info accessible to third-party
1160 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1166 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1161 Mantegazza <mantegazza-AT-ill.fr>.
1167 Mantegazza <mantegazza-AT-ill.fr>.
1162
1168
1163 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1169 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1164 history-search via readline (like C-p/C-n). I'd wanted this for a
1170 history-search via readline (like C-p/C-n). I'd wanted this for a
1165 long time, but only recently found out how to do it. For users
1171 long time, but only recently found out how to do it. For users
1166 who already have their ipythonrc files made and want this, just
1172 who already have their ipythonrc files made and want this, just
1167 add:
1173 add:
1168
1174
1169 readline_parse_and_bind "\e[A": history-search-backward
1175 readline_parse_and_bind "\e[A": history-search-backward
1170 readline_parse_and_bind "\e[B": history-search-forward
1176 readline_parse_and_bind "\e[B": history-search-forward
1171
1177
1172 2005-03-18 Fernando Perez <fperez@colorado.edu>
1178 2005-03-18 Fernando Perez <fperez@colorado.edu>
1173
1179
1174 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1180 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1175 LSString and SList classes which allow transparent conversions
1181 LSString and SList classes which allow transparent conversions
1176 between list mode and whitespace-separated string.
1182 between list mode and whitespace-separated string.
1177 (magic_r): Fix recursion problem in %r.
1183 (magic_r): Fix recursion problem in %r.
1178
1184
1179 * IPython/genutils.py (LSString): New class to be used for
1185 * IPython/genutils.py (LSString): New class to be used for
1180 automatic storage of the results of all alias/system calls in _o
1186 automatic storage of the results of all alias/system calls in _o
1181 and _e (stdout/err). These provide a .l/.list attribute which
1187 and _e (stdout/err). These provide a .l/.list attribute which
1182 does automatic splitting on newlines. This means that for most
1188 does automatic splitting on newlines. This means that for most
1183 uses, you'll never need to do capturing of output with %sc/%sx
1189 uses, you'll never need to do capturing of output with %sc/%sx
1184 anymore, since ipython keeps this always done for you. Note that
1190 anymore, since ipython keeps this always done for you. Note that
1185 only the LAST results are stored, the _o/e variables are
1191 only the LAST results are stored, the _o/e variables are
1186 overwritten on each call. If you need to save their contents
1192 overwritten on each call. If you need to save their contents
1187 further, simply bind them to any other name.
1193 further, simply bind them to any other name.
1188
1194
1189 2005-03-17 Fernando Perez <fperez@colorado.edu>
1195 2005-03-17 Fernando Perez <fperez@colorado.edu>
1190
1196
1191 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1197 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1192 prompt namespace handling.
1198 prompt namespace handling.
1193
1199
1194 2005-03-16 Fernando Perez <fperez@colorado.edu>
1200 2005-03-16 Fernando Perez <fperez@colorado.edu>
1195
1201
1196 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1202 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1197 classic prompts to be '>>> ' (final space was missing, and it
1203 classic prompts to be '>>> ' (final space was missing, and it
1198 trips the emacs python mode).
1204 trips the emacs python mode).
1199 (BasePrompt.__str__): Added safe support for dynamic prompt
1205 (BasePrompt.__str__): Added safe support for dynamic prompt
1200 strings. Now you can set your prompt string to be '$x', and the
1206 strings. Now you can set your prompt string to be '$x', and the
1201 value of x will be printed from your interactive namespace. The
1207 value of x will be printed from your interactive namespace. The
1202 interpolation syntax includes the full Itpl support, so
1208 interpolation syntax includes the full Itpl support, so
1203 ${foo()+x+bar()} is a valid prompt string now, and the function
1209 ${foo()+x+bar()} is a valid prompt string now, and the function
1204 calls will be made at runtime.
1210 calls will be made at runtime.
1205
1211
1206 2005-03-15 Fernando Perez <fperez@colorado.edu>
1212 2005-03-15 Fernando Perez <fperez@colorado.edu>
1207
1213
1208 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1214 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1209 avoid name clashes in pylab. %hist still works, it just forwards
1215 avoid name clashes in pylab. %hist still works, it just forwards
1210 the call to %history.
1216 the call to %history.
1211
1217
1212 2005-03-02 *** Released version 0.6.12
1218 2005-03-02 *** Released version 0.6.12
1213
1219
1214 2005-03-02 Fernando Perez <fperez@colorado.edu>
1220 2005-03-02 Fernando Perez <fperez@colorado.edu>
1215
1221
1216 * IPython/iplib.py (handle_magic): log magic calls properly as
1222 * IPython/iplib.py (handle_magic): log magic calls properly as
1217 ipmagic() function calls.
1223 ipmagic() function calls.
1218
1224
1219 * IPython/Magic.py (magic_time): Improved %time to support
1225 * IPython/Magic.py (magic_time): Improved %time to support
1220 statements and provide wall-clock as well as CPU time.
1226 statements and provide wall-clock as well as CPU time.
1221
1227
1222 2005-02-27 Fernando Perez <fperez@colorado.edu>
1228 2005-02-27 Fernando Perez <fperez@colorado.edu>
1223
1229
1224 * IPython/hooks.py: New hooks module, to expose user-modifiable
1230 * IPython/hooks.py: New hooks module, to expose user-modifiable
1225 IPython functionality in a clean manner. For now only the editor
1231 IPython functionality in a clean manner. For now only the editor
1226 hook is actually written, and other thigns which I intend to turn
1232 hook is actually written, and other thigns which I intend to turn
1227 into proper hooks aren't yet there. The display and prefilter
1233 into proper hooks aren't yet there. The display and prefilter
1228 stuff, for example, should be hooks. But at least now the
1234 stuff, for example, should be hooks. But at least now the
1229 framework is in place, and the rest can be moved here with more
1235 framework is in place, and the rest can be moved here with more
1230 time later. IPython had had a .hooks variable for a long time for
1236 time later. IPython had had a .hooks variable for a long time for
1231 this purpose, but I'd never actually used it for anything.
1237 this purpose, but I'd never actually used it for anything.
1232
1238
1233 2005-02-26 Fernando Perez <fperez@colorado.edu>
1239 2005-02-26 Fernando Perez <fperez@colorado.edu>
1234
1240
1235 * IPython/ipmaker.py (make_IPython): make the default ipython
1241 * IPython/ipmaker.py (make_IPython): make the default ipython
1236 directory be called _ipython under win32, to follow more the
1242 directory be called _ipython under win32, to follow more the
1237 naming peculiarities of that platform (where buggy software like
1243 naming peculiarities of that platform (where buggy software like
1238 Visual Sourcesafe breaks with .named directories). Reported by
1244 Visual Sourcesafe breaks with .named directories). Reported by
1239 Ville Vainio.
1245 Ville Vainio.
1240
1246
1241 2005-02-23 Fernando Perez <fperez@colorado.edu>
1247 2005-02-23 Fernando Perez <fperez@colorado.edu>
1242
1248
1243 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1249 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1244 auto_aliases for win32 which were causing problems. Users can
1250 auto_aliases for win32 which were causing problems. Users can
1245 define the ones they personally like.
1251 define the ones they personally like.
1246
1252
1247 2005-02-21 Fernando Perez <fperez@colorado.edu>
1253 2005-02-21 Fernando Perez <fperez@colorado.edu>
1248
1254
1249 * IPython/Magic.py (magic_time): new magic to time execution of
1255 * IPython/Magic.py (magic_time): new magic to time execution of
1250 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1256 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1251
1257
1252 2005-02-19 Fernando Perez <fperez@colorado.edu>
1258 2005-02-19 Fernando Perez <fperez@colorado.edu>
1253
1259
1254 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1260 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1255 into keys (for prompts, for example).
1261 into keys (for prompts, for example).
1256
1262
1257 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1263 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1258 prompts in case users want them. This introduces a small behavior
1264 prompts in case users want them. This introduces a small behavior
1259 change: ipython does not automatically add a space to all prompts
1265 change: ipython does not automatically add a space to all prompts
1260 anymore. To get the old prompts with a space, users should add it
1266 anymore. To get the old prompts with a space, users should add it
1261 manually to their ipythonrc file, so for example prompt_in1 should
1267 manually to their ipythonrc file, so for example prompt_in1 should
1262 now read 'In [\#]: ' instead of 'In [\#]:'.
1268 now read 'In [\#]: ' instead of 'In [\#]:'.
1263 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1269 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1264 file) to control left-padding of secondary prompts.
1270 file) to control left-padding of secondary prompts.
1265
1271
1266 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1272 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1267 the profiler can't be imported. Fix for Debian, which removed
1273 the profiler can't be imported. Fix for Debian, which removed
1268 profile.py because of License issues. I applied a slightly
1274 profile.py because of License issues. I applied a slightly
1269 modified version of the original Debian patch at
1275 modified version of the original Debian patch at
1270 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1276 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1271
1277
1272 2005-02-17 Fernando Perez <fperez@colorado.edu>
1278 2005-02-17 Fernando Perez <fperez@colorado.edu>
1273
1279
1274 * IPython/genutils.py (native_line_ends): Fix bug which would
1280 * IPython/genutils.py (native_line_ends): Fix bug which would
1275 cause improper line-ends under win32 b/c I was not opening files
1281 cause improper line-ends under win32 b/c I was not opening files
1276 in binary mode. Bug report and fix thanks to Ville.
1282 in binary mode. Bug report and fix thanks to Ville.
1277
1283
1278 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1284 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1279 trying to catch spurious foo[1] autocalls. My fix actually broke
1285 trying to catch spurious foo[1] autocalls. My fix actually broke
1280 ',/' autoquote/call with explicit escape (bad regexp).
1286 ',/' autoquote/call with explicit escape (bad regexp).
1281
1287
1282 2005-02-15 *** Released version 0.6.11
1288 2005-02-15 *** Released version 0.6.11
1283
1289
1284 2005-02-14 Fernando Perez <fperez@colorado.edu>
1290 2005-02-14 Fernando Perez <fperez@colorado.edu>
1285
1291
1286 * IPython/background_jobs.py: New background job management
1292 * IPython/background_jobs.py: New background job management
1287 subsystem. This is implemented via a new set of classes, and
1293 subsystem. This is implemented via a new set of classes, and
1288 IPython now provides a builtin 'jobs' object for background job
1294 IPython now provides a builtin 'jobs' object for background job
1289 execution. A convenience %bg magic serves as a lightweight
1295 execution. A convenience %bg magic serves as a lightweight
1290 frontend for starting the more common type of calls. This was
1296 frontend for starting the more common type of calls. This was
1291 inspired by discussions with B. Granger and the BackgroundCommand
1297 inspired by discussions with B. Granger and the BackgroundCommand
1292 class described in the book Python Scripting for Computational
1298 class described in the book Python Scripting for Computational
1293 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1299 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1294 (although ultimately no code from this text was used, as IPython's
1300 (although ultimately no code from this text was used, as IPython's
1295 system is a separate implementation).
1301 system is a separate implementation).
1296
1302
1297 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1303 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1298 to control the completion of single/double underscore names
1304 to control the completion of single/double underscore names
1299 separately. As documented in the example ipytonrc file, the
1305 separately. As documented in the example ipytonrc file, the
1300 readline_omit__names variable can now be set to 2, to omit even
1306 readline_omit__names variable can now be set to 2, to omit even
1301 single underscore names. Thanks to a patch by Brian Wong
1307 single underscore names. Thanks to a patch by Brian Wong
1302 <BrianWong-AT-AirgoNetworks.Com>.
1308 <BrianWong-AT-AirgoNetworks.Com>.
1303 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1309 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1304 be autocalled as foo([1]) if foo were callable. A problem for
1310 be autocalled as foo([1]) if foo were callable. A problem for
1305 things which are both callable and implement __getitem__.
1311 things which are both callable and implement __getitem__.
1306 (init_readline): Fix autoindentation for win32. Thanks to a patch
1312 (init_readline): Fix autoindentation for win32. Thanks to a patch
1307 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1313 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1308
1314
1309 2005-02-12 Fernando Perez <fperez@colorado.edu>
1315 2005-02-12 Fernando Perez <fperez@colorado.edu>
1310
1316
1311 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1317 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1312 which I had written long ago to sort out user error messages which
1318 which I had written long ago to sort out user error messages which
1313 may occur during startup. This seemed like a good idea initially,
1319 may occur during startup. This seemed like a good idea initially,
1314 but it has proven a disaster in retrospect. I don't want to
1320 but it has proven a disaster in retrospect. I don't want to
1315 change much code for now, so my fix is to set the internal 'debug'
1321 change much code for now, so my fix is to set the internal 'debug'
1316 flag to true everywhere, whose only job was precisely to control
1322 flag to true everywhere, whose only job was precisely to control
1317 this subsystem. This closes issue 28 (as well as avoiding all
1323 this subsystem. This closes issue 28 (as well as avoiding all
1318 sorts of strange hangups which occur from time to time).
1324 sorts of strange hangups which occur from time to time).
1319
1325
1320 2005-02-07 Fernando Perez <fperez@colorado.edu>
1326 2005-02-07 Fernando Perez <fperez@colorado.edu>
1321
1327
1322 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1328 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1323 previous call produced a syntax error.
1329 previous call produced a syntax error.
1324
1330
1325 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1331 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1326 classes without constructor.
1332 classes without constructor.
1327
1333
1328 2005-02-06 Fernando Perez <fperez@colorado.edu>
1334 2005-02-06 Fernando Perez <fperez@colorado.edu>
1329
1335
1330 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1336 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1331 completions with the results of each matcher, so we return results
1337 completions with the results of each matcher, so we return results
1332 to the user from all namespaces. This breaks with ipython
1338 to the user from all namespaces. This breaks with ipython
1333 tradition, but I think it's a nicer behavior. Now you get all
1339 tradition, but I think it's a nicer behavior. Now you get all
1334 possible completions listed, from all possible namespaces (python,
1340 possible completions listed, from all possible namespaces (python,
1335 filesystem, magics...) After a request by John Hunter
1341 filesystem, magics...) After a request by John Hunter
1336 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1342 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1337
1343
1338 2005-02-05 Fernando Perez <fperez@colorado.edu>
1344 2005-02-05 Fernando Perez <fperez@colorado.edu>
1339
1345
1340 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1346 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1341 the call had quote characters in it (the quotes were stripped).
1347 the call had quote characters in it (the quotes were stripped).
1342
1348
1343 2005-01-31 Fernando Perez <fperez@colorado.edu>
1349 2005-01-31 Fernando Perez <fperez@colorado.edu>
1344
1350
1345 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1351 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1346 Itpl.itpl() to make the code more robust against psyco
1352 Itpl.itpl() to make the code more robust against psyco
1347 optimizations.
1353 optimizations.
1348
1354
1349 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1355 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1350 of causing an exception. Quicker, cleaner.
1356 of causing an exception. Quicker, cleaner.
1351
1357
1352 2005-01-28 Fernando Perez <fperez@colorado.edu>
1358 2005-01-28 Fernando Perez <fperez@colorado.edu>
1353
1359
1354 * scripts/ipython_win_post_install.py (install): hardcode
1360 * scripts/ipython_win_post_install.py (install): hardcode
1355 sys.prefix+'python.exe' as the executable path. It turns out that
1361 sys.prefix+'python.exe' as the executable path. It turns out that
1356 during the post-installation run, sys.executable resolves to the
1362 during the post-installation run, sys.executable resolves to the
1357 name of the binary installer! I should report this as a distutils
1363 name of the binary installer! I should report this as a distutils
1358 bug, I think. I updated the .10 release with this tiny fix, to
1364 bug, I think. I updated the .10 release with this tiny fix, to
1359 avoid annoying the lists further.
1365 avoid annoying the lists further.
1360
1366
1361 2005-01-27 *** Released version 0.6.10
1367 2005-01-27 *** Released version 0.6.10
1362
1368
1363 2005-01-27 Fernando Perez <fperez@colorado.edu>
1369 2005-01-27 Fernando Perez <fperez@colorado.edu>
1364
1370
1365 * IPython/numutils.py (norm): Added 'inf' as optional name for
1371 * IPython/numutils.py (norm): Added 'inf' as optional name for
1366 L-infinity norm, included references to mathworld.com for vector
1372 L-infinity norm, included references to mathworld.com for vector
1367 norm definitions.
1373 norm definitions.
1368 (amin/amax): added amin/amax for array min/max. Similar to what
1374 (amin/amax): added amin/amax for array min/max. Similar to what
1369 pylab ships with after the recent reorganization of names.
1375 pylab ships with after the recent reorganization of names.
1370 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1376 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1371
1377
1372 * ipython.el: committed Alex's recent fixes and improvements.
1378 * ipython.el: committed Alex's recent fixes and improvements.
1373 Tested with python-mode from CVS, and it looks excellent. Since
1379 Tested with python-mode from CVS, and it looks excellent. Since
1374 python-mode hasn't released anything in a while, I'm temporarily
1380 python-mode hasn't released anything in a while, I'm temporarily
1375 putting a copy of today's CVS (v 4.70) of python-mode in:
1381 putting a copy of today's CVS (v 4.70) of python-mode in:
1376 http://ipython.scipy.org/tmp/python-mode.el
1382 http://ipython.scipy.org/tmp/python-mode.el
1377
1383
1378 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1384 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1379 sys.executable for the executable name, instead of assuming it's
1385 sys.executable for the executable name, instead of assuming it's
1380 called 'python.exe' (the post-installer would have produced broken
1386 called 'python.exe' (the post-installer would have produced broken
1381 setups on systems with a differently named python binary).
1387 setups on systems with a differently named python binary).
1382
1388
1383 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1389 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1384 references to os.linesep, to make the code more
1390 references to os.linesep, to make the code more
1385 platform-independent. This is also part of the win32 coloring
1391 platform-independent. This is also part of the win32 coloring
1386 fixes.
1392 fixes.
1387
1393
1388 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1394 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1389 lines, which actually cause coloring bugs because the length of
1395 lines, which actually cause coloring bugs because the length of
1390 the line is very difficult to correctly compute with embedded
1396 the line is very difficult to correctly compute with embedded
1391 escapes. This was the source of all the coloring problems under
1397 escapes. This was the source of all the coloring problems under
1392 Win32. I think that _finally_, Win32 users have a properly
1398 Win32. I think that _finally_, Win32 users have a properly
1393 working ipython in all respects. This would never have happened
1399 working ipython in all respects. This would never have happened
1394 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1400 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1395
1401
1396 2005-01-26 *** Released version 0.6.9
1402 2005-01-26 *** Released version 0.6.9
1397
1403
1398 2005-01-25 Fernando Perez <fperez@colorado.edu>
1404 2005-01-25 Fernando Perez <fperez@colorado.edu>
1399
1405
1400 * setup.py: finally, we have a true Windows installer, thanks to
1406 * setup.py: finally, we have a true Windows installer, thanks to
1401 the excellent work of Viktor Ransmayr
1407 the excellent work of Viktor Ransmayr
1402 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1408 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1403 Windows users. The setup routine is quite a bit cleaner thanks to
1409 Windows users. The setup routine is quite a bit cleaner thanks to
1404 this, and the post-install script uses the proper functions to
1410 this, and the post-install script uses the proper functions to
1405 allow a clean de-installation using the standard Windows Control
1411 allow a clean de-installation using the standard Windows Control
1406 Panel.
1412 Panel.
1407
1413
1408 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1414 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1409 environment variable under all OSes (including win32) if
1415 environment variable under all OSes (including win32) if
1410 available. This will give consistency to win32 users who have set
1416 available. This will give consistency to win32 users who have set
1411 this variable for any reason. If os.environ['HOME'] fails, the
1417 this variable for any reason. If os.environ['HOME'] fails, the
1412 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1418 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1413
1419
1414 2005-01-24 Fernando Perez <fperez@colorado.edu>
1420 2005-01-24 Fernando Perez <fperez@colorado.edu>
1415
1421
1416 * IPython/numutils.py (empty_like): add empty_like(), similar to
1422 * IPython/numutils.py (empty_like): add empty_like(), similar to
1417 zeros_like() but taking advantage of the new empty() Numeric routine.
1423 zeros_like() but taking advantage of the new empty() Numeric routine.
1418
1424
1419 2005-01-23 *** Released version 0.6.8
1425 2005-01-23 *** Released version 0.6.8
1420
1426
1421 2005-01-22 Fernando Perez <fperez@colorado.edu>
1427 2005-01-22 Fernando Perez <fperez@colorado.edu>
1422
1428
1423 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1429 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1424 automatic show() calls. After discussing things with JDH, it
1430 automatic show() calls. After discussing things with JDH, it
1425 turns out there are too many corner cases where this can go wrong.
1431 turns out there are too many corner cases where this can go wrong.
1426 It's best not to try to be 'too smart', and simply have ipython
1432 It's best not to try to be 'too smart', and simply have ipython
1427 reproduce as much as possible the default behavior of a normal
1433 reproduce as much as possible the default behavior of a normal
1428 python shell.
1434 python shell.
1429
1435
1430 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1436 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1431 line-splitting regexp and _prefilter() to avoid calling getattr()
1437 line-splitting regexp and _prefilter() to avoid calling getattr()
1432 on assignments. This closes
1438 on assignments. This closes
1433 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1439 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1434 readline uses getattr(), so a simple <TAB> keypress is still
1440 readline uses getattr(), so a simple <TAB> keypress is still
1435 enough to trigger getattr() calls on an object.
1441 enough to trigger getattr() calls on an object.
1436
1442
1437 2005-01-21 Fernando Perez <fperez@colorado.edu>
1443 2005-01-21 Fernando Perez <fperez@colorado.edu>
1438
1444
1439 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1445 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1440 docstring under pylab so it doesn't mask the original.
1446 docstring under pylab so it doesn't mask the original.
1441
1447
1442 2005-01-21 *** Released version 0.6.7
1448 2005-01-21 *** Released version 0.6.7
1443
1449
1444 2005-01-21 Fernando Perez <fperez@colorado.edu>
1450 2005-01-21 Fernando Perez <fperez@colorado.edu>
1445
1451
1446 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1452 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1447 signal handling for win32 users in multithreaded mode.
1453 signal handling for win32 users in multithreaded mode.
1448
1454
1449 2005-01-17 Fernando Perez <fperez@colorado.edu>
1455 2005-01-17 Fernando Perez <fperez@colorado.edu>
1450
1456
1451 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1457 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1452 instances with no __init__. After a crash report by Norbert Nemec
1458 instances with no __init__. After a crash report by Norbert Nemec
1453 <Norbert-AT-nemec-online.de>.
1459 <Norbert-AT-nemec-online.de>.
1454
1460
1455 2005-01-14 Fernando Perez <fperez@colorado.edu>
1461 2005-01-14 Fernando Perez <fperez@colorado.edu>
1456
1462
1457 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1463 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1458 names for verbose exceptions, when multiple dotted names and the
1464 names for verbose exceptions, when multiple dotted names and the
1459 'parent' object were present on the same line.
1465 'parent' object were present on the same line.
1460
1466
1461 2005-01-11 Fernando Perez <fperez@colorado.edu>
1467 2005-01-11 Fernando Perez <fperez@colorado.edu>
1462
1468
1463 * IPython/genutils.py (flag_calls): new utility to trap and flag
1469 * IPython/genutils.py (flag_calls): new utility to trap and flag
1464 calls in functions. I need it to clean up matplotlib support.
1470 calls in functions. I need it to clean up matplotlib support.
1465 Also removed some deprecated code in genutils.
1471 Also removed some deprecated code in genutils.
1466
1472
1467 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1473 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1468 that matplotlib scripts called with %run, which don't call show()
1474 that matplotlib scripts called with %run, which don't call show()
1469 themselves, still have their plotting windows open.
1475 themselves, still have their plotting windows open.
1470
1476
1471 2005-01-05 Fernando Perez <fperez@colorado.edu>
1477 2005-01-05 Fernando Perez <fperez@colorado.edu>
1472
1478
1473 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1479 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1474 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1480 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1475
1481
1476 2004-12-19 Fernando Perez <fperez@colorado.edu>
1482 2004-12-19 Fernando Perez <fperez@colorado.edu>
1477
1483
1478 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1484 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1479 parent_runcode, which was an eyesore. The same result can be
1485 parent_runcode, which was an eyesore. The same result can be
1480 obtained with Python's regular superclass mechanisms.
1486 obtained with Python's regular superclass mechanisms.
1481
1487
1482 2004-12-17 Fernando Perez <fperez@colorado.edu>
1488 2004-12-17 Fernando Perez <fperez@colorado.edu>
1483
1489
1484 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1490 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1485 reported by Prabhu.
1491 reported by Prabhu.
1486 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1492 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1487 sys.stderr) instead of explicitly calling sys.stderr. This helps
1493 sys.stderr) instead of explicitly calling sys.stderr. This helps
1488 maintain our I/O abstractions clean, for future GUI embeddings.
1494 maintain our I/O abstractions clean, for future GUI embeddings.
1489
1495
1490 * IPython/genutils.py (info): added new utility for sys.stderr
1496 * IPython/genutils.py (info): added new utility for sys.stderr
1491 unified info message handling (thin wrapper around warn()).
1497 unified info message handling (thin wrapper around warn()).
1492
1498
1493 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1499 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1494 composite (dotted) names on verbose exceptions.
1500 composite (dotted) names on verbose exceptions.
1495 (VerboseTB.nullrepr): harden against another kind of errors which
1501 (VerboseTB.nullrepr): harden against another kind of errors which
1496 Python's inspect module can trigger, and which were crashing
1502 Python's inspect module can trigger, and which were crashing
1497 IPython. Thanks to a report by Marco Lombardi
1503 IPython. Thanks to a report by Marco Lombardi
1498 <mlombard-AT-ma010192.hq.eso.org>.
1504 <mlombard-AT-ma010192.hq.eso.org>.
1499
1505
1500 2004-12-13 *** Released version 0.6.6
1506 2004-12-13 *** Released version 0.6.6
1501
1507
1502 2004-12-12 Fernando Perez <fperez@colorado.edu>
1508 2004-12-12 Fernando Perez <fperez@colorado.edu>
1503
1509
1504 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1510 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1505 generated by pygtk upon initialization if it was built without
1511 generated by pygtk upon initialization if it was built without
1506 threads (for matplotlib users). After a crash reported by
1512 threads (for matplotlib users). After a crash reported by
1507 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1513 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1508
1514
1509 * IPython/ipmaker.py (make_IPython): fix small bug in the
1515 * IPython/ipmaker.py (make_IPython): fix small bug in the
1510 import_some parameter for multiple imports.
1516 import_some parameter for multiple imports.
1511
1517
1512 * IPython/iplib.py (ipmagic): simplified the interface of
1518 * IPython/iplib.py (ipmagic): simplified the interface of
1513 ipmagic() to take a single string argument, just as it would be
1519 ipmagic() to take a single string argument, just as it would be
1514 typed at the IPython cmd line.
1520 typed at the IPython cmd line.
1515 (ipalias): Added new ipalias() with an interface identical to
1521 (ipalias): Added new ipalias() with an interface identical to
1516 ipmagic(). This completes exposing a pure python interface to the
1522 ipmagic(). This completes exposing a pure python interface to the
1517 alias and magic system, which can be used in loops or more complex
1523 alias and magic system, which can be used in loops or more complex
1518 code where IPython's automatic line mangling is not active.
1524 code where IPython's automatic line mangling is not active.
1519
1525
1520 * IPython/genutils.py (timing): changed interface of timing to
1526 * IPython/genutils.py (timing): changed interface of timing to
1521 simply run code once, which is the most common case. timings()
1527 simply run code once, which is the most common case. timings()
1522 remains unchanged, for the cases where you want multiple runs.
1528 remains unchanged, for the cases where you want multiple runs.
1523
1529
1524 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1530 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1525 bug where Python2.2 crashes with exec'ing code which does not end
1531 bug where Python2.2 crashes with exec'ing code which does not end
1526 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1532 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1527 before.
1533 before.
1528
1534
1529 2004-12-10 Fernando Perez <fperez@colorado.edu>
1535 2004-12-10 Fernando Perez <fperez@colorado.edu>
1530
1536
1531 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1537 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1532 -t to -T, to accomodate the new -t flag in %run (the %run and
1538 -t to -T, to accomodate the new -t flag in %run (the %run and
1533 %prun options are kind of intermixed, and it's not easy to change
1539 %prun options are kind of intermixed, and it's not easy to change
1534 this with the limitations of python's getopt).
1540 this with the limitations of python's getopt).
1535
1541
1536 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1542 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1537 the execution of scripts. It's not as fine-tuned as timeit.py,
1543 the execution of scripts. It's not as fine-tuned as timeit.py,
1538 but it works from inside ipython (and under 2.2, which lacks
1544 but it works from inside ipython (and under 2.2, which lacks
1539 timeit.py). Optionally a number of runs > 1 can be given for
1545 timeit.py). Optionally a number of runs > 1 can be given for
1540 timing very short-running code.
1546 timing very short-running code.
1541
1547
1542 * IPython/genutils.py (uniq_stable): new routine which returns a
1548 * IPython/genutils.py (uniq_stable): new routine which returns a
1543 list of unique elements in any iterable, but in stable order of
1549 list of unique elements in any iterable, but in stable order of
1544 appearance. I needed this for the ultraTB fixes, and it's a handy
1550 appearance. I needed this for the ultraTB fixes, and it's a handy
1545 utility.
1551 utility.
1546
1552
1547 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1553 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1548 dotted names in Verbose exceptions. This had been broken since
1554 dotted names in Verbose exceptions. This had been broken since
1549 the very start, now x.y will properly be printed in a Verbose
1555 the very start, now x.y will properly be printed in a Verbose
1550 traceback, instead of x being shown and y appearing always as an
1556 traceback, instead of x being shown and y appearing always as an
1551 'undefined global'. Getting this to work was a bit tricky,
1557 'undefined global'. Getting this to work was a bit tricky,
1552 because by default python tokenizers are stateless. Saved by
1558 because by default python tokenizers are stateless. Saved by
1553 python's ability to easily add a bit of state to an arbitrary
1559 python's ability to easily add a bit of state to an arbitrary
1554 function (without needing to build a full-blown callable object).
1560 function (without needing to build a full-blown callable object).
1555
1561
1556 Also big cleanup of this code, which had horrendous runtime
1562 Also big cleanup of this code, which had horrendous runtime
1557 lookups of zillions of attributes for colorization. Moved all
1563 lookups of zillions of attributes for colorization. Moved all
1558 this code into a few templates, which make it cleaner and quicker.
1564 this code into a few templates, which make it cleaner and quicker.
1559
1565
1560 Printout quality was also improved for Verbose exceptions: one
1566 Printout quality was also improved for Verbose exceptions: one
1561 variable per line, and memory addresses are printed (this can be
1567 variable per line, and memory addresses are printed (this can be
1562 quite handy in nasty debugging situations, which is what Verbose
1568 quite handy in nasty debugging situations, which is what Verbose
1563 is for).
1569 is for).
1564
1570
1565 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1571 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1566 the command line as scripts to be loaded by embedded instances.
1572 the command line as scripts to be loaded by embedded instances.
1567 Doing so has the potential for an infinite recursion if there are
1573 Doing so has the potential for an infinite recursion if there are
1568 exceptions thrown in the process. This fixes a strange crash
1574 exceptions thrown in the process. This fixes a strange crash
1569 reported by Philippe MULLER <muller-AT-irit.fr>.
1575 reported by Philippe MULLER <muller-AT-irit.fr>.
1570
1576
1571 2004-12-09 Fernando Perez <fperez@colorado.edu>
1577 2004-12-09 Fernando Perez <fperez@colorado.edu>
1572
1578
1573 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1579 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1574 to reflect new names in matplotlib, which now expose the
1580 to reflect new names in matplotlib, which now expose the
1575 matlab-compatible interface via a pylab module instead of the
1581 matlab-compatible interface via a pylab module instead of the
1576 'matlab' name. The new code is backwards compatible, so users of
1582 'matlab' name. The new code is backwards compatible, so users of
1577 all matplotlib versions are OK. Patch by J. Hunter.
1583 all matplotlib versions are OK. Patch by J. Hunter.
1578
1584
1579 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1585 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1580 of __init__ docstrings for instances (class docstrings are already
1586 of __init__ docstrings for instances (class docstrings are already
1581 automatically printed). Instances with customized docstrings
1587 automatically printed). Instances with customized docstrings
1582 (indep. of the class) are also recognized and all 3 separate
1588 (indep. of the class) are also recognized and all 3 separate
1583 docstrings are printed (instance, class, constructor). After some
1589 docstrings are printed (instance, class, constructor). After some
1584 comments/suggestions by J. Hunter.
1590 comments/suggestions by J. Hunter.
1585
1591
1586 2004-12-05 Fernando Perez <fperez@colorado.edu>
1592 2004-12-05 Fernando Perez <fperez@colorado.edu>
1587
1593
1588 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1594 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1589 warnings when tab-completion fails and triggers an exception.
1595 warnings when tab-completion fails and triggers an exception.
1590
1596
1591 2004-12-03 Fernando Perez <fperez@colorado.edu>
1597 2004-12-03 Fernando Perez <fperez@colorado.edu>
1592
1598
1593 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1599 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1594 be triggered when using 'run -p'. An incorrect option flag was
1600 be triggered when using 'run -p'. An incorrect option flag was
1595 being set ('d' instead of 'D').
1601 being set ('d' instead of 'D').
1596 (manpage): fix missing escaped \- sign.
1602 (manpage): fix missing escaped \- sign.
1597
1603
1598 2004-11-30 *** Released version 0.6.5
1604 2004-11-30 *** Released version 0.6.5
1599
1605
1600 2004-11-30 Fernando Perez <fperez@colorado.edu>
1606 2004-11-30 Fernando Perez <fperez@colorado.edu>
1601
1607
1602 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1608 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1603 setting with -d option.
1609 setting with -d option.
1604
1610
1605 * setup.py (docfiles): Fix problem where the doc glob I was using
1611 * setup.py (docfiles): Fix problem where the doc glob I was using
1606 was COMPLETELY BROKEN. It was giving the right files by pure
1612 was COMPLETELY BROKEN. It was giving the right files by pure
1607 accident, but failed once I tried to include ipython.el. Note:
1613 accident, but failed once I tried to include ipython.el. Note:
1608 glob() does NOT allow you to do exclusion on multiple endings!
1614 glob() does NOT allow you to do exclusion on multiple endings!
1609
1615
1610 2004-11-29 Fernando Perez <fperez@colorado.edu>
1616 2004-11-29 Fernando Perez <fperez@colorado.edu>
1611
1617
1612 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1618 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1613 the manpage as the source. Better formatting & consistency.
1619 the manpage as the source. Better formatting & consistency.
1614
1620
1615 * IPython/Magic.py (magic_run): Added new -d option, to run
1621 * IPython/Magic.py (magic_run): Added new -d option, to run
1616 scripts under the control of the python pdb debugger. Note that
1622 scripts under the control of the python pdb debugger. Note that
1617 this required changing the %prun option -d to -D, to avoid a clash
1623 this required changing the %prun option -d to -D, to avoid a clash
1618 (since %run must pass options to %prun, and getopt is too dumb to
1624 (since %run must pass options to %prun, and getopt is too dumb to
1619 handle options with string values with embedded spaces). Thanks
1625 handle options with string values with embedded spaces). Thanks
1620 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1626 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1621 (magic_who_ls): added type matching to %who and %whos, so that one
1627 (magic_who_ls): added type matching to %who and %whos, so that one
1622 can filter their output to only include variables of certain
1628 can filter their output to only include variables of certain
1623 types. Another suggestion by Matthew.
1629 types. Another suggestion by Matthew.
1624 (magic_whos): Added memory summaries in kb and Mb for arrays.
1630 (magic_whos): Added memory summaries in kb and Mb for arrays.
1625 (magic_who): Improve formatting (break lines every 9 vars).
1631 (magic_who): Improve formatting (break lines every 9 vars).
1626
1632
1627 2004-11-28 Fernando Perez <fperez@colorado.edu>
1633 2004-11-28 Fernando Perez <fperez@colorado.edu>
1628
1634
1629 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1635 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1630 cache when empty lines were present.
1636 cache when empty lines were present.
1631
1637
1632 2004-11-24 Fernando Perez <fperez@colorado.edu>
1638 2004-11-24 Fernando Perez <fperez@colorado.edu>
1633
1639
1634 * IPython/usage.py (__doc__): document the re-activated threading
1640 * IPython/usage.py (__doc__): document the re-activated threading
1635 options for WX and GTK.
1641 options for WX and GTK.
1636
1642
1637 2004-11-23 Fernando Perez <fperez@colorado.edu>
1643 2004-11-23 Fernando Perez <fperez@colorado.edu>
1638
1644
1639 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1645 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1640 the -wthread and -gthread options, along with a new -tk one to try
1646 the -wthread and -gthread options, along with a new -tk one to try
1641 and coordinate Tk threading with wx/gtk. The tk support is very
1647 and coordinate Tk threading with wx/gtk. The tk support is very
1642 platform dependent, since it seems to require Tcl and Tk to be
1648 platform dependent, since it seems to require Tcl and Tk to be
1643 built with threads (Fedora1/2 appears NOT to have it, but in
1649 built with threads (Fedora1/2 appears NOT to have it, but in
1644 Prabhu's Debian boxes it works OK). But even with some Tk
1650 Prabhu's Debian boxes it works OK). But even with some Tk
1645 limitations, this is a great improvement.
1651 limitations, this is a great improvement.
1646
1652
1647 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1653 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1648 info in user prompts. Patch by Prabhu.
1654 info in user prompts. Patch by Prabhu.
1649
1655
1650 2004-11-18 Fernando Perez <fperez@colorado.edu>
1656 2004-11-18 Fernando Perez <fperez@colorado.edu>
1651
1657
1652 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1658 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1653 EOFErrors and bail, to avoid infinite loops if a non-terminating
1659 EOFErrors and bail, to avoid infinite loops if a non-terminating
1654 file is fed into ipython. Patch submitted in issue 19 by user,
1660 file is fed into ipython. Patch submitted in issue 19 by user,
1655 many thanks.
1661 many thanks.
1656
1662
1657 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1663 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1658 autoquote/parens in continuation prompts, which can cause lots of
1664 autoquote/parens in continuation prompts, which can cause lots of
1659 problems. Closes roundup issue 20.
1665 problems. Closes roundup issue 20.
1660
1666
1661 2004-11-17 Fernando Perez <fperez@colorado.edu>
1667 2004-11-17 Fernando Perez <fperez@colorado.edu>
1662
1668
1663 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1669 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1664 reported as debian bug #280505. I'm not sure my local changelog
1670 reported as debian bug #280505. I'm not sure my local changelog
1665 entry has the proper debian format (Jack?).
1671 entry has the proper debian format (Jack?).
1666
1672
1667 2004-11-08 *** Released version 0.6.4
1673 2004-11-08 *** Released version 0.6.4
1668
1674
1669 2004-11-08 Fernando Perez <fperez@colorado.edu>
1675 2004-11-08 Fernando Perez <fperez@colorado.edu>
1670
1676
1671 * IPython/iplib.py (init_readline): Fix exit message for Windows
1677 * IPython/iplib.py (init_readline): Fix exit message for Windows
1672 when readline is active. Thanks to a report by Eric Jones
1678 when readline is active. Thanks to a report by Eric Jones
1673 <eric-AT-enthought.com>.
1679 <eric-AT-enthought.com>.
1674
1680
1675 2004-11-07 Fernando Perez <fperez@colorado.edu>
1681 2004-11-07 Fernando Perez <fperez@colorado.edu>
1676
1682
1677 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1683 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1678 sometimes seen by win2k/cygwin users.
1684 sometimes seen by win2k/cygwin users.
1679
1685
1680 2004-11-06 Fernando Perez <fperez@colorado.edu>
1686 2004-11-06 Fernando Perez <fperez@colorado.edu>
1681
1687
1682 * IPython/iplib.py (interact): Change the handling of %Exit from
1688 * IPython/iplib.py (interact): Change the handling of %Exit from
1683 trying to propagate a SystemExit to an internal ipython flag.
1689 trying to propagate a SystemExit to an internal ipython flag.
1684 This is less elegant than using Python's exception mechanism, but
1690 This is less elegant than using Python's exception mechanism, but
1685 I can't get that to work reliably with threads, so under -pylab
1691 I can't get that to work reliably with threads, so under -pylab
1686 %Exit was hanging IPython. Cross-thread exception handling is
1692 %Exit was hanging IPython. Cross-thread exception handling is
1687 really a bitch. Thaks to a bug report by Stephen Walton
1693 really a bitch. Thaks to a bug report by Stephen Walton
1688 <stephen.walton-AT-csun.edu>.
1694 <stephen.walton-AT-csun.edu>.
1689
1695
1690 2004-11-04 Fernando Perez <fperez@colorado.edu>
1696 2004-11-04 Fernando Perez <fperez@colorado.edu>
1691
1697
1692 * IPython/iplib.py (raw_input_original): store a pointer to the
1698 * IPython/iplib.py (raw_input_original): store a pointer to the
1693 true raw_input to harden against code which can modify it
1699 true raw_input to harden against code which can modify it
1694 (wx.py.PyShell does this and would otherwise crash ipython).
1700 (wx.py.PyShell does this and would otherwise crash ipython).
1695 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1701 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1696
1702
1697 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1703 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1698 Ctrl-C problem, which does not mess up the input line.
1704 Ctrl-C problem, which does not mess up the input line.
1699
1705
1700 2004-11-03 Fernando Perez <fperez@colorado.edu>
1706 2004-11-03 Fernando Perez <fperez@colorado.edu>
1701
1707
1702 * IPython/Release.py: Changed licensing to BSD, in all files.
1708 * IPython/Release.py: Changed licensing to BSD, in all files.
1703 (name): lowercase name for tarball/RPM release.
1709 (name): lowercase name for tarball/RPM release.
1704
1710
1705 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1711 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1706 use throughout ipython.
1712 use throughout ipython.
1707
1713
1708 * IPython/Magic.py (Magic._ofind): Switch to using the new
1714 * IPython/Magic.py (Magic._ofind): Switch to using the new
1709 OInspect.getdoc() function.
1715 OInspect.getdoc() function.
1710
1716
1711 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1717 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1712 of the line currently being canceled via Ctrl-C. It's extremely
1718 of the line currently being canceled via Ctrl-C. It's extremely
1713 ugly, but I don't know how to do it better (the problem is one of
1719 ugly, but I don't know how to do it better (the problem is one of
1714 handling cross-thread exceptions).
1720 handling cross-thread exceptions).
1715
1721
1716 2004-10-28 Fernando Perez <fperez@colorado.edu>
1722 2004-10-28 Fernando Perez <fperez@colorado.edu>
1717
1723
1718 * IPython/Shell.py (signal_handler): add signal handlers to trap
1724 * IPython/Shell.py (signal_handler): add signal handlers to trap
1719 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1725 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1720 report by Francesc Alted.
1726 report by Francesc Alted.
1721
1727
1722 2004-10-21 Fernando Perez <fperez@colorado.edu>
1728 2004-10-21 Fernando Perez <fperez@colorado.edu>
1723
1729
1724 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1730 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1725 to % for pysh syntax extensions.
1731 to % for pysh syntax extensions.
1726
1732
1727 2004-10-09 Fernando Perez <fperez@colorado.edu>
1733 2004-10-09 Fernando Perez <fperez@colorado.edu>
1728
1734
1729 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1735 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1730 arrays to print a more useful summary, without calling str(arr).
1736 arrays to print a more useful summary, without calling str(arr).
1731 This avoids the problem of extremely lengthy computations which
1737 This avoids the problem of extremely lengthy computations which
1732 occur if arr is large, and appear to the user as a system lockup
1738 occur if arr is large, and appear to the user as a system lockup
1733 with 100% cpu activity. After a suggestion by Kristian Sandberg
1739 with 100% cpu activity. After a suggestion by Kristian Sandberg
1734 <Kristian.Sandberg@colorado.edu>.
1740 <Kristian.Sandberg@colorado.edu>.
1735 (Magic.__init__): fix bug in global magic escapes not being
1741 (Magic.__init__): fix bug in global magic escapes not being
1736 correctly set.
1742 correctly set.
1737
1743
1738 2004-10-08 Fernando Perez <fperez@colorado.edu>
1744 2004-10-08 Fernando Perez <fperez@colorado.edu>
1739
1745
1740 * IPython/Magic.py (__license__): change to absolute imports of
1746 * IPython/Magic.py (__license__): change to absolute imports of
1741 ipython's own internal packages, to start adapting to the absolute
1747 ipython's own internal packages, to start adapting to the absolute
1742 import requirement of PEP-328.
1748 import requirement of PEP-328.
1743
1749
1744 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1750 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1745 files, and standardize author/license marks through the Release
1751 files, and standardize author/license marks through the Release
1746 module instead of having per/file stuff (except for files with
1752 module instead of having per/file stuff (except for files with
1747 particular licenses, like the MIT/PSF-licensed codes).
1753 particular licenses, like the MIT/PSF-licensed codes).
1748
1754
1749 * IPython/Debugger.py: remove dead code for python 2.1
1755 * IPython/Debugger.py: remove dead code for python 2.1
1750
1756
1751 2004-10-04 Fernando Perez <fperez@colorado.edu>
1757 2004-10-04 Fernando Perez <fperez@colorado.edu>
1752
1758
1753 * IPython/iplib.py (ipmagic): New function for accessing magics
1759 * IPython/iplib.py (ipmagic): New function for accessing magics
1754 via a normal python function call.
1760 via a normal python function call.
1755
1761
1756 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1762 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1757 from '@' to '%', to accomodate the new @decorator syntax of python
1763 from '@' to '%', to accomodate the new @decorator syntax of python
1758 2.4.
1764 2.4.
1759
1765
1760 2004-09-29 Fernando Perez <fperez@colorado.edu>
1766 2004-09-29 Fernando Perez <fperez@colorado.edu>
1761
1767
1762 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1768 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1763 matplotlib.use to prevent running scripts which try to switch
1769 matplotlib.use to prevent running scripts which try to switch
1764 interactive backends from within ipython. This will just crash
1770 interactive backends from within ipython. This will just crash
1765 the python interpreter, so we can't allow it (but a detailed error
1771 the python interpreter, so we can't allow it (but a detailed error
1766 is given to the user).
1772 is given to the user).
1767
1773
1768 2004-09-28 Fernando Perez <fperez@colorado.edu>
1774 2004-09-28 Fernando Perez <fperez@colorado.edu>
1769
1775
1770 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1776 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1771 matplotlib-related fixes so that using @run with non-matplotlib
1777 matplotlib-related fixes so that using @run with non-matplotlib
1772 scripts doesn't pop up spurious plot windows. This requires
1778 scripts doesn't pop up spurious plot windows. This requires
1773 matplotlib >= 0.63, where I had to make some changes as well.
1779 matplotlib >= 0.63, where I had to make some changes as well.
1774
1780
1775 * IPython/ipmaker.py (make_IPython): update version requirement to
1781 * IPython/ipmaker.py (make_IPython): update version requirement to
1776 python 2.2.
1782 python 2.2.
1777
1783
1778 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1784 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1779 banner arg for embedded customization.
1785 banner arg for embedded customization.
1780
1786
1781 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1787 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1782 explicit uses of __IP as the IPython's instance name. Now things
1788 explicit uses of __IP as the IPython's instance name. Now things
1783 are properly handled via the shell.name value. The actual code
1789 are properly handled via the shell.name value. The actual code
1784 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1790 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1785 is much better than before. I'll clean things completely when the
1791 is much better than before. I'll clean things completely when the
1786 magic stuff gets a real overhaul.
1792 magic stuff gets a real overhaul.
1787
1793
1788 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1794 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1789 minor changes to debian dir.
1795 minor changes to debian dir.
1790
1796
1791 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1797 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1792 pointer to the shell itself in the interactive namespace even when
1798 pointer to the shell itself in the interactive namespace even when
1793 a user-supplied dict is provided. This is needed for embedding
1799 a user-supplied dict is provided. This is needed for embedding
1794 purposes (found by tests with Michel Sanner).
1800 purposes (found by tests with Michel Sanner).
1795
1801
1796 2004-09-27 Fernando Perez <fperez@colorado.edu>
1802 2004-09-27 Fernando Perez <fperez@colorado.edu>
1797
1803
1798 * IPython/UserConfig/ipythonrc: remove []{} from
1804 * IPython/UserConfig/ipythonrc: remove []{} from
1799 readline_remove_delims, so that things like [modname.<TAB> do
1805 readline_remove_delims, so that things like [modname.<TAB> do
1800 proper completion. This disables [].TAB, but that's a less common
1806 proper completion. This disables [].TAB, but that's a less common
1801 case than module names in list comprehensions, for example.
1807 case than module names in list comprehensions, for example.
1802 Thanks to a report by Andrea Riciputi.
1808 Thanks to a report by Andrea Riciputi.
1803
1809
1804 2004-09-09 Fernando Perez <fperez@colorado.edu>
1810 2004-09-09 Fernando Perez <fperez@colorado.edu>
1805
1811
1806 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1812 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1807 blocking problems in win32 and osx. Fix by John.
1813 blocking problems in win32 and osx. Fix by John.
1808
1814
1809 2004-09-08 Fernando Perez <fperez@colorado.edu>
1815 2004-09-08 Fernando Perez <fperez@colorado.edu>
1810
1816
1811 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1817 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1812 for Win32 and OSX. Fix by John Hunter.
1818 for Win32 and OSX. Fix by John Hunter.
1813
1819
1814 2004-08-30 *** Released version 0.6.3
1820 2004-08-30 *** Released version 0.6.3
1815
1821
1816 2004-08-30 Fernando Perez <fperez@colorado.edu>
1822 2004-08-30 Fernando Perez <fperez@colorado.edu>
1817
1823
1818 * setup.py (isfile): Add manpages to list of dependent files to be
1824 * setup.py (isfile): Add manpages to list of dependent files to be
1819 updated.
1825 updated.
1820
1826
1821 2004-08-27 Fernando Perez <fperez@colorado.edu>
1827 2004-08-27 Fernando Perez <fperez@colorado.edu>
1822
1828
1823 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1829 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1824 for now. They don't really work with standalone WX/GTK code
1830 for now. They don't really work with standalone WX/GTK code
1825 (though matplotlib IS working fine with both of those backends).
1831 (though matplotlib IS working fine with both of those backends).
1826 This will neeed much more testing. I disabled most things with
1832 This will neeed much more testing. I disabled most things with
1827 comments, so turning it back on later should be pretty easy.
1833 comments, so turning it back on later should be pretty easy.
1828
1834
1829 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1835 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1830 autocalling of expressions like r'foo', by modifying the line
1836 autocalling of expressions like r'foo', by modifying the line
1831 split regexp. Closes
1837 split regexp. Closes
1832 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1838 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1833 Riley <ipythonbugs-AT-sabi.net>.
1839 Riley <ipythonbugs-AT-sabi.net>.
1834 (InteractiveShell.mainloop): honor --nobanner with banner
1840 (InteractiveShell.mainloop): honor --nobanner with banner
1835 extensions.
1841 extensions.
1836
1842
1837 * IPython/Shell.py: Significant refactoring of all classes, so
1843 * IPython/Shell.py: Significant refactoring of all classes, so
1838 that we can really support ALL matplotlib backends and threading
1844 that we can really support ALL matplotlib backends and threading
1839 models (John spotted a bug with Tk which required this). Now we
1845 models (John spotted a bug with Tk which required this). Now we
1840 should support single-threaded, WX-threads and GTK-threads, both
1846 should support single-threaded, WX-threads and GTK-threads, both
1841 for generic code and for matplotlib.
1847 for generic code and for matplotlib.
1842
1848
1843 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1849 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1844 -pylab, to simplify things for users. Will also remove the pylab
1850 -pylab, to simplify things for users. Will also remove the pylab
1845 profile, since now all of matplotlib configuration is directly
1851 profile, since now all of matplotlib configuration is directly
1846 handled here. This also reduces startup time.
1852 handled here. This also reduces startup time.
1847
1853
1848 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1854 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1849 shell wasn't being correctly called. Also in IPShellWX.
1855 shell wasn't being correctly called. Also in IPShellWX.
1850
1856
1851 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1857 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1852 fine-tune banner.
1858 fine-tune banner.
1853
1859
1854 * IPython/numutils.py (spike): Deprecate these spike functions,
1860 * IPython/numutils.py (spike): Deprecate these spike functions,
1855 delete (long deprecated) gnuplot_exec handler.
1861 delete (long deprecated) gnuplot_exec handler.
1856
1862
1857 2004-08-26 Fernando Perez <fperez@colorado.edu>
1863 2004-08-26 Fernando Perez <fperez@colorado.edu>
1858
1864
1859 * ipython.1: Update for threading options, plus some others which
1865 * ipython.1: Update for threading options, plus some others which
1860 were missing.
1866 were missing.
1861
1867
1862 * IPython/ipmaker.py (__call__): Added -wthread option for
1868 * IPython/ipmaker.py (__call__): Added -wthread option for
1863 wxpython thread handling. Make sure threading options are only
1869 wxpython thread handling. Make sure threading options are only
1864 valid at the command line.
1870 valid at the command line.
1865
1871
1866 * scripts/ipython: moved shell selection into a factory function
1872 * scripts/ipython: moved shell selection into a factory function
1867 in Shell.py, to keep the starter script to a minimum.
1873 in Shell.py, to keep the starter script to a minimum.
1868
1874
1869 2004-08-25 Fernando Perez <fperez@colorado.edu>
1875 2004-08-25 Fernando Perez <fperez@colorado.edu>
1870
1876
1871 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1877 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1872 John. Along with some recent changes he made to matplotlib, the
1878 John. Along with some recent changes he made to matplotlib, the
1873 next versions of both systems should work very well together.
1879 next versions of both systems should work very well together.
1874
1880
1875 2004-08-24 Fernando Perez <fperez@colorado.edu>
1881 2004-08-24 Fernando Perez <fperez@colorado.edu>
1876
1882
1877 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1883 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1878 tried to switch the profiling to using hotshot, but I'm getting
1884 tried to switch the profiling to using hotshot, but I'm getting
1879 strange errors from prof.runctx() there. I may be misreading the
1885 strange errors from prof.runctx() there. I may be misreading the
1880 docs, but it looks weird. For now the profiling code will
1886 docs, but it looks weird. For now the profiling code will
1881 continue to use the standard profiler.
1887 continue to use the standard profiler.
1882
1888
1883 2004-08-23 Fernando Perez <fperez@colorado.edu>
1889 2004-08-23 Fernando Perez <fperez@colorado.edu>
1884
1890
1885 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1891 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1886 threaded shell, by John Hunter. It's not quite ready yet, but
1892 threaded shell, by John Hunter. It's not quite ready yet, but
1887 close.
1893 close.
1888
1894
1889 2004-08-22 Fernando Perez <fperez@colorado.edu>
1895 2004-08-22 Fernando Perez <fperez@colorado.edu>
1890
1896
1891 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1897 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1892 in Magic and ultraTB.
1898 in Magic and ultraTB.
1893
1899
1894 * ipython.1: document threading options in manpage.
1900 * ipython.1: document threading options in manpage.
1895
1901
1896 * scripts/ipython: Changed name of -thread option to -gthread,
1902 * scripts/ipython: Changed name of -thread option to -gthread,
1897 since this is GTK specific. I want to leave the door open for a
1903 since this is GTK specific. I want to leave the door open for a
1898 -wthread option for WX, which will most likely be necessary. This
1904 -wthread option for WX, which will most likely be necessary. This
1899 change affects usage and ipmaker as well.
1905 change affects usage and ipmaker as well.
1900
1906
1901 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1907 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1902 handle the matplotlib shell issues. Code by John Hunter
1908 handle the matplotlib shell issues. Code by John Hunter
1903 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1909 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1904 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1910 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1905 broken (and disabled for end users) for now, but it puts the
1911 broken (and disabled for end users) for now, but it puts the
1906 infrastructure in place.
1912 infrastructure in place.
1907
1913
1908 2004-08-21 Fernando Perez <fperez@colorado.edu>
1914 2004-08-21 Fernando Perez <fperez@colorado.edu>
1909
1915
1910 * ipythonrc-pylab: Add matplotlib support.
1916 * ipythonrc-pylab: Add matplotlib support.
1911
1917
1912 * matplotlib_config.py: new files for matplotlib support, part of
1918 * matplotlib_config.py: new files for matplotlib support, part of
1913 the pylab profile.
1919 the pylab profile.
1914
1920
1915 * IPython/usage.py (__doc__): documented the threading options.
1921 * IPython/usage.py (__doc__): documented the threading options.
1916
1922
1917 2004-08-20 Fernando Perez <fperez@colorado.edu>
1923 2004-08-20 Fernando Perez <fperez@colorado.edu>
1918
1924
1919 * ipython: Modified the main calling routine to handle the -thread
1925 * ipython: Modified the main calling routine to handle the -thread
1920 and -mpthread options. This needs to be done as a top-level hack,
1926 and -mpthread options. This needs to be done as a top-level hack,
1921 because it determines which class to instantiate for IPython
1927 because it determines which class to instantiate for IPython
1922 itself.
1928 itself.
1923
1929
1924 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1930 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1925 classes to support multithreaded GTK operation without blocking,
1931 classes to support multithreaded GTK operation without blocking,
1926 and matplotlib with all backends. This is a lot of still very
1932 and matplotlib with all backends. This is a lot of still very
1927 experimental code, and threads are tricky. So it may still have a
1933 experimental code, and threads are tricky. So it may still have a
1928 few rough edges... This code owes a lot to
1934 few rough edges... This code owes a lot to
1929 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1935 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1930 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1936 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1931 to John Hunter for all the matplotlib work.
1937 to John Hunter for all the matplotlib work.
1932
1938
1933 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1939 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1934 options for gtk thread and matplotlib support.
1940 options for gtk thread and matplotlib support.
1935
1941
1936 2004-08-16 Fernando Perez <fperez@colorado.edu>
1942 2004-08-16 Fernando Perez <fperez@colorado.edu>
1937
1943
1938 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1944 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1939 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1945 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1940 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1946 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1941
1947
1942 2004-08-11 Fernando Perez <fperez@colorado.edu>
1948 2004-08-11 Fernando Perez <fperez@colorado.edu>
1943
1949
1944 * setup.py (isfile): Fix build so documentation gets updated for
1950 * setup.py (isfile): Fix build so documentation gets updated for
1945 rpms (it was only done for .tgz builds).
1951 rpms (it was only done for .tgz builds).
1946
1952
1947 2004-08-10 Fernando Perez <fperez@colorado.edu>
1953 2004-08-10 Fernando Perez <fperez@colorado.edu>
1948
1954
1949 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1955 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1950
1956
1951 * iplib.py : Silence syntax error exceptions in tab-completion.
1957 * iplib.py : Silence syntax error exceptions in tab-completion.
1952
1958
1953 2004-08-05 Fernando Perez <fperez@colorado.edu>
1959 2004-08-05 Fernando Perez <fperez@colorado.edu>
1954
1960
1955 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1961 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1956 'color off' mark for continuation prompts. This was causing long
1962 'color off' mark for continuation prompts. This was causing long
1957 continuation lines to mis-wrap.
1963 continuation lines to mis-wrap.
1958
1964
1959 2004-08-01 Fernando Perez <fperez@colorado.edu>
1965 2004-08-01 Fernando Perez <fperez@colorado.edu>
1960
1966
1961 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1967 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1962 for building ipython to be a parameter. All this is necessary
1968 for building ipython to be a parameter. All this is necessary
1963 right now to have a multithreaded version, but this insane
1969 right now to have a multithreaded version, but this insane
1964 non-design will be cleaned up soon. For now, it's a hack that
1970 non-design will be cleaned up soon. For now, it's a hack that
1965 works.
1971 works.
1966
1972
1967 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1973 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1968 args in various places. No bugs so far, but it's a dangerous
1974 args in various places. No bugs so far, but it's a dangerous
1969 practice.
1975 practice.
1970
1976
1971 2004-07-31 Fernando Perez <fperez@colorado.edu>
1977 2004-07-31 Fernando Perez <fperez@colorado.edu>
1972
1978
1973 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1979 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1974 fix completion of files with dots in their names under most
1980 fix completion of files with dots in their names under most
1975 profiles (pysh was OK because the completion order is different).
1981 profiles (pysh was OK because the completion order is different).
1976
1982
1977 2004-07-27 Fernando Perez <fperez@colorado.edu>
1983 2004-07-27 Fernando Perez <fperez@colorado.edu>
1978
1984
1979 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1985 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1980 keywords manually, b/c the one in keyword.py was removed in python
1986 keywords manually, b/c the one in keyword.py was removed in python
1981 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1987 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1982 This is NOT a bug under python 2.3 and earlier.
1988 This is NOT a bug under python 2.3 and earlier.
1983
1989
1984 2004-07-26 Fernando Perez <fperez@colorado.edu>
1990 2004-07-26 Fernando Perez <fperez@colorado.edu>
1985
1991
1986 * IPython/ultraTB.py (VerboseTB.text): Add another
1992 * IPython/ultraTB.py (VerboseTB.text): Add another
1987 linecache.checkcache() call to try to prevent inspect.py from
1993 linecache.checkcache() call to try to prevent inspect.py from
1988 crashing under python 2.3. I think this fixes
1994 crashing under python 2.3. I think this fixes
1989 http://www.scipy.net/roundup/ipython/issue17.
1995 http://www.scipy.net/roundup/ipython/issue17.
1990
1996
1991 2004-07-26 *** Released version 0.6.2
1997 2004-07-26 *** Released version 0.6.2
1992
1998
1993 2004-07-26 Fernando Perez <fperez@colorado.edu>
1999 2004-07-26 Fernando Perez <fperez@colorado.edu>
1994
2000
1995 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2001 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1996 fail for any number.
2002 fail for any number.
1997 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2003 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1998 empty bookmarks.
2004 empty bookmarks.
1999
2005
2000 2004-07-26 *** Released version 0.6.1
2006 2004-07-26 *** Released version 0.6.1
2001
2007
2002 2004-07-26 Fernando Perez <fperez@colorado.edu>
2008 2004-07-26 Fernando Perez <fperez@colorado.edu>
2003
2009
2004 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2010 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2005
2011
2006 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2012 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2007 escaping '()[]{}' in filenames.
2013 escaping '()[]{}' in filenames.
2008
2014
2009 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2015 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2010 Python 2.2 users who lack a proper shlex.split.
2016 Python 2.2 users who lack a proper shlex.split.
2011
2017
2012 2004-07-19 Fernando Perez <fperez@colorado.edu>
2018 2004-07-19 Fernando Perez <fperez@colorado.edu>
2013
2019
2014 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2020 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2015 for reading readline's init file. I follow the normal chain:
2021 for reading readline's init file. I follow the normal chain:
2016 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2022 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2017 report by Mike Heeter. This closes
2023 report by Mike Heeter. This closes
2018 http://www.scipy.net/roundup/ipython/issue16.
2024 http://www.scipy.net/roundup/ipython/issue16.
2019
2025
2020 2004-07-18 Fernando Perez <fperez@colorado.edu>
2026 2004-07-18 Fernando Perez <fperez@colorado.edu>
2021
2027
2022 * IPython/iplib.py (__init__): Add better handling of '\' under
2028 * IPython/iplib.py (__init__): Add better handling of '\' under
2023 Win32 for filenames. After a patch by Ville.
2029 Win32 for filenames. After a patch by Ville.
2024
2030
2025 2004-07-17 Fernando Perez <fperez@colorado.edu>
2031 2004-07-17 Fernando Perez <fperez@colorado.edu>
2026
2032
2027 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2033 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2028 autocalling would be triggered for 'foo is bar' if foo is
2034 autocalling would be triggered for 'foo is bar' if foo is
2029 callable. I also cleaned up the autocall detection code to use a
2035 callable. I also cleaned up the autocall detection code to use a
2030 regexp, which is faster. Bug reported by Alexander Schmolck.
2036 regexp, which is faster. Bug reported by Alexander Schmolck.
2031
2037
2032 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2038 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2033 '?' in them would confuse the help system. Reported by Alex
2039 '?' in them would confuse the help system. Reported by Alex
2034 Schmolck.
2040 Schmolck.
2035
2041
2036 2004-07-16 Fernando Perez <fperez@colorado.edu>
2042 2004-07-16 Fernando Perez <fperez@colorado.edu>
2037
2043
2038 * IPython/GnuplotInteractive.py (__all__): added plot2.
2044 * IPython/GnuplotInteractive.py (__all__): added plot2.
2039
2045
2040 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2046 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2041 plotting dictionaries, lists or tuples of 1d arrays.
2047 plotting dictionaries, lists or tuples of 1d arrays.
2042
2048
2043 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2049 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2044 optimizations.
2050 optimizations.
2045
2051
2046 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2052 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2047 the information which was there from Janko's original IPP code:
2053 the information which was there from Janko's original IPP code:
2048
2054
2049 03.05.99 20:53 porto.ifm.uni-kiel.de
2055 03.05.99 20:53 porto.ifm.uni-kiel.de
2050 --Started changelog.
2056 --Started changelog.
2051 --make clear do what it say it does
2057 --make clear do what it say it does
2052 --added pretty output of lines from inputcache
2058 --added pretty output of lines from inputcache
2053 --Made Logger a mixin class, simplifies handling of switches
2059 --Made Logger a mixin class, simplifies handling of switches
2054 --Added own completer class. .string<TAB> expands to last history
2060 --Added own completer class. .string<TAB> expands to last history
2055 line which starts with string. The new expansion is also present
2061 line which starts with string. The new expansion is also present
2056 with Ctrl-r from the readline library. But this shows, who this
2062 with Ctrl-r from the readline library. But this shows, who this
2057 can be done for other cases.
2063 can be done for other cases.
2058 --Added convention that all shell functions should accept a
2064 --Added convention that all shell functions should accept a
2059 parameter_string This opens the door for different behaviour for
2065 parameter_string This opens the door for different behaviour for
2060 each function. @cd is a good example of this.
2066 each function. @cd is a good example of this.
2061
2067
2062 04.05.99 12:12 porto.ifm.uni-kiel.de
2068 04.05.99 12:12 porto.ifm.uni-kiel.de
2063 --added logfile rotation
2069 --added logfile rotation
2064 --added new mainloop method which freezes first the namespace
2070 --added new mainloop method which freezes first the namespace
2065
2071
2066 07.05.99 21:24 porto.ifm.uni-kiel.de
2072 07.05.99 21:24 porto.ifm.uni-kiel.de
2067 --added the docreader classes. Now there is a help system.
2073 --added the docreader classes. Now there is a help system.
2068 -This is only a first try. Currently it's not easy to put new
2074 -This is only a first try. Currently it's not easy to put new
2069 stuff in the indices. But this is the way to go. Info would be
2075 stuff in the indices. But this is the way to go. Info would be
2070 better, but HTML is every where and not everybody has an info
2076 better, but HTML is every where and not everybody has an info
2071 system installed and it's not so easy to change html-docs to info.
2077 system installed and it's not so easy to change html-docs to info.
2072 --added global logfile option
2078 --added global logfile option
2073 --there is now a hook for object inspection method pinfo needs to
2079 --there is now a hook for object inspection method pinfo needs to
2074 be provided for this. Can be reached by two '??'.
2080 be provided for this. Can be reached by two '??'.
2075
2081
2076 08.05.99 20:51 porto.ifm.uni-kiel.de
2082 08.05.99 20:51 porto.ifm.uni-kiel.de
2077 --added a README
2083 --added a README
2078 --bug in rc file. Something has changed so functions in the rc
2084 --bug in rc file. Something has changed so functions in the rc
2079 file need to reference the shell and not self. Not clear if it's a
2085 file need to reference the shell and not self. Not clear if it's a
2080 bug or feature.
2086 bug or feature.
2081 --changed rc file for new behavior
2087 --changed rc file for new behavior
2082
2088
2083 2004-07-15 Fernando Perez <fperez@colorado.edu>
2089 2004-07-15 Fernando Perez <fperez@colorado.edu>
2084
2090
2085 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2091 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2086 cache was falling out of sync in bizarre manners when multi-line
2092 cache was falling out of sync in bizarre manners when multi-line
2087 input was present. Minor optimizations and cleanup.
2093 input was present. Minor optimizations and cleanup.
2088
2094
2089 (Logger): Remove old Changelog info for cleanup. This is the
2095 (Logger): Remove old Changelog info for cleanup. This is the
2090 information which was there from Janko's original code:
2096 information which was there from Janko's original code:
2091
2097
2092 Changes to Logger: - made the default log filename a parameter
2098 Changes to Logger: - made the default log filename a parameter
2093
2099
2094 - put a check for lines beginning with !@? in log(). Needed
2100 - put a check for lines beginning with !@? in log(). Needed
2095 (even if the handlers properly log their lines) for mid-session
2101 (even if the handlers properly log their lines) for mid-session
2096 logging activation to work properly. Without this, lines logged
2102 logging activation to work properly. Without this, lines logged
2097 in mid session, which get read from the cache, would end up
2103 in mid session, which get read from the cache, would end up
2098 'bare' (with !@? in the open) in the log. Now they are caught
2104 'bare' (with !@? in the open) in the log. Now they are caught
2099 and prepended with a #.
2105 and prepended with a #.
2100
2106
2101 * IPython/iplib.py (InteractiveShell.init_readline): added check
2107 * IPython/iplib.py (InteractiveShell.init_readline): added check
2102 in case MagicCompleter fails to be defined, so we don't crash.
2108 in case MagicCompleter fails to be defined, so we don't crash.
2103
2109
2104 2004-07-13 Fernando Perez <fperez@colorado.edu>
2110 2004-07-13 Fernando Perez <fperez@colorado.edu>
2105
2111
2106 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2112 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2107 of EPS if the requested filename ends in '.eps'.
2113 of EPS if the requested filename ends in '.eps'.
2108
2114
2109 2004-07-04 Fernando Perez <fperez@colorado.edu>
2115 2004-07-04 Fernando Perez <fperez@colorado.edu>
2110
2116
2111 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2117 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2112 escaping of quotes when calling the shell.
2118 escaping of quotes when calling the shell.
2113
2119
2114 2004-07-02 Fernando Perez <fperez@colorado.edu>
2120 2004-07-02 Fernando Perez <fperez@colorado.edu>
2115
2121
2116 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2122 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2117 gettext not working because we were clobbering '_'. Fixes
2123 gettext not working because we were clobbering '_'. Fixes
2118 http://www.scipy.net/roundup/ipython/issue6.
2124 http://www.scipy.net/roundup/ipython/issue6.
2119
2125
2120 2004-07-01 Fernando Perez <fperez@colorado.edu>
2126 2004-07-01 Fernando Perez <fperez@colorado.edu>
2121
2127
2122 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2128 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2123 into @cd. Patch by Ville.
2129 into @cd. Patch by Ville.
2124
2130
2125 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2131 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2126 new function to store things after ipmaker runs. Patch by Ville.
2132 new function to store things after ipmaker runs. Patch by Ville.
2127 Eventually this will go away once ipmaker is removed and the class
2133 Eventually this will go away once ipmaker is removed and the class
2128 gets cleaned up, but for now it's ok. Key functionality here is
2134 gets cleaned up, but for now it's ok. Key functionality here is
2129 the addition of the persistent storage mechanism, a dict for
2135 the addition of the persistent storage mechanism, a dict for
2130 keeping data across sessions (for now just bookmarks, but more can
2136 keeping data across sessions (for now just bookmarks, but more can
2131 be implemented later).
2137 be implemented later).
2132
2138
2133 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2139 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2134 persistent across sections. Patch by Ville, I modified it
2140 persistent across sections. Patch by Ville, I modified it
2135 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2141 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2136 added a '-l' option to list all bookmarks.
2142 added a '-l' option to list all bookmarks.
2137
2143
2138 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2144 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2139 center for cleanup. Registered with atexit.register(). I moved
2145 center for cleanup. Registered with atexit.register(). I moved
2140 here the old exit_cleanup(). After a patch by Ville.
2146 here the old exit_cleanup(). After a patch by Ville.
2141
2147
2142 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2148 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2143 characters in the hacked shlex_split for python 2.2.
2149 characters in the hacked shlex_split for python 2.2.
2144
2150
2145 * IPython/iplib.py (file_matches): more fixes to filenames with
2151 * IPython/iplib.py (file_matches): more fixes to filenames with
2146 whitespace in them. It's not perfect, but limitations in python's
2152 whitespace in them. It's not perfect, but limitations in python's
2147 readline make it impossible to go further.
2153 readline make it impossible to go further.
2148
2154
2149 2004-06-29 Fernando Perez <fperez@colorado.edu>
2155 2004-06-29 Fernando Perez <fperez@colorado.edu>
2150
2156
2151 * IPython/iplib.py (file_matches): escape whitespace correctly in
2157 * IPython/iplib.py (file_matches): escape whitespace correctly in
2152 filename completions. Bug reported by Ville.
2158 filename completions. Bug reported by Ville.
2153
2159
2154 2004-06-28 Fernando Perez <fperez@colorado.edu>
2160 2004-06-28 Fernando Perez <fperez@colorado.edu>
2155
2161
2156 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2162 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2157 the history file will be called 'history-PROFNAME' (or just
2163 the history file will be called 'history-PROFNAME' (or just
2158 'history' if no profile is loaded). I was getting annoyed at
2164 'history' if no profile is loaded). I was getting annoyed at
2159 getting my Numerical work history clobbered by pysh sessions.
2165 getting my Numerical work history clobbered by pysh sessions.
2160
2166
2161 * IPython/iplib.py (InteractiveShell.__init__): Internal
2167 * IPython/iplib.py (InteractiveShell.__init__): Internal
2162 getoutputerror() function so that we can honor the system_verbose
2168 getoutputerror() function so that we can honor the system_verbose
2163 flag for _all_ system calls. I also added escaping of #
2169 flag for _all_ system calls. I also added escaping of #
2164 characters here to avoid confusing Itpl.
2170 characters here to avoid confusing Itpl.
2165
2171
2166 * IPython/Magic.py (shlex_split): removed call to shell in
2172 * IPython/Magic.py (shlex_split): removed call to shell in
2167 parse_options and replaced it with shlex.split(). The annoying
2173 parse_options and replaced it with shlex.split(). The annoying
2168 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2174 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2169 to backport it from 2.3, with several frail hacks (the shlex
2175 to backport it from 2.3, with several frail hacks (the shlex
2170 module is rather limited in 2.2). Thanks to a suggestion by Ville
2176 module is rather limited in 2.2). Thanks to a suggestion by Ville
2171 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2177 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2172 problem.
2178 problem.
2173
2179
2174 (Magic.magic_system_verbose): new toggle to print the actual
2180 (Magic.magic_system_verbose): new toggle to print the actual
2175 system calls made by ipython. Mainly for debugging purposes.
2181 system calls made by ipython. Mainly for debugging purposes.
2176
2182
2177 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2183 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2178 doesn't support persistence. Reported (and fix suggested) by
2184 doesn't support persistence. Reported (and fix suggested) by
2179 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2185 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2180
2186
2181 2004-06-26 Fernando Perez <fperez@colorado.edu>
2187 2004-06-26 Fernando Perez <fperez@colorado.edu>
2182
2188
2183 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2189 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2184 continue prompts.
2190 continue prompts.
2185
2191
2186 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2192 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2187 function (basically a big docstring) and a few more things here to
2193 function (basically a big docstring) and a few more things here to
2188 speedup startup. pysh.py is now very lightweight. We want because
2194 speedup startup. pysh.py is now very lightweight. We want because
2189 it gets execfile'd, while InterpreterExec gets imported, so
2195 it gets execfile'd, while InterpreterExec gets imported, so
2190 byte-compilation saves time.
2196 byte-compilation saves time.
2191
2197
2192 2004-06-25 Fernando Perez <fperez@colorado.edu>
2198 2004-06-25 Fernando Perez <fperez@colorado.edu>
2193
2199
2194 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2200 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2195 -NUM', which was recently broken.
2201 -NUM', which was recently broken.
2196
2202
2197 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2203 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2198 in multi-line input (but not !!, which doesn't make sense there).
2204 in multi-line input (but not !!, which doesn't make sense there).
2199
2205
2200 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2206 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2201 It's just too useful, and people can turn it off in the less
2207 It's just too useful, and people can turn it off in the less
2202 common cases where it's a problem.
2208 common cases where it's a problem.
2203
2209
2204 2004-06-24 Fernando Perez <fperez@colorado.edu>
2210 2004-06-24 Fernando Perez <fperez@colorado.edu>
2205
2211
2206 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2212 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2207 special syntaxes (like alias calling) is now allied in multi-line
2213 special syntaxes (like alias calling) is now allied in multi-line
2208 input. This is still _very_ experimental, but it's necessary for
2214 input. This is still _very_ experimental, but it's necessary for
2209 efficient shell usage combining python looping syntax with system
2215 efficient shell usage combining python looping syntax with system
2210 calls. For now it's restricted to aliases, I don't think it
2216 calls. For now it's restricted to aliases, I don't think it
2211 really even makes sense to have this for magics.
2217 really even makes sense to have this for magics.
2212
2218
2213 2004-06-23 Fernando Perez <fperez@colorado.edu>
2219 2004-06-23 Fernando Perez <fperez@colorado.edu>
2214
2220
2215 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2221 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2216 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2222 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2217
2223
2218 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2224 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2219 extensions under Windows (after code sent by Gary Bishop). The
2225 extensions under Windows (after code sent by Gary Bishop). The
2220 extensions considered 'executable' are stored in IPython's rc
2226 extensions considered 'executable' are stored in IPython's rc
2221 structure as win_exec_ext.
2227 structure as win_exec_ext.
2222
2228
2223 * IPython/genutils.py (shell): new function, like system() but
2229 * IPython/genutils.py (shell): new function, like system() but
2224 without return value. Very useful for interactive shell work.
2230 without return value. Very useful for interactive shell work.
2225
2231
2226 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2232 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2227 delete aliases.
2233 delete aliases.
2228
2234
2229 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2235 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2230 sure that the alias table doesn't contain python keywords.
2236 sure that the alias table doesn't contain python keywords.
2231
2237
2232 2004-06-21 Fernando Perez <fperez@colorado.edu>
2238 2004-06-21 Fernando Perez <fperez@colorado.edu>
2233
2239
2234 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2240 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2235 non-existent items are found in $PATH. Reported by Thorsten.
2241 non-existent items are found in $PATH. Reported by Thorsten.
2236
2242
2237 2004-06-20 Fernando Perez <fperez@colorado.edu>
2243 2004-06-20 Fernando Perez <fperez@colorado.edu>
2238
2244
2239 * IPython/iplib.py (complete): modified the completer so that the
2245 * IPython/iplib.py (complete): modified the completer so that the
2240 order of priorities can be easily changed at runtime.
2246 order of priorities can be easily changed at runtime.
2241
2247
2242 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2248 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2243 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2249 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2244
2250
2245 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2251 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2246 expand Python variables prepended with $ in all system calls. The
2252 expand Python variables prepended with $ in all system calls. The
2247 same was done to InteractiveShell.handle_shell_escape. Now all
2253 same was done to InteractiveShell.handle_shell_escape. Now all
2248 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2254 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2249 expansion of python variables and expressions according to the
2255 expansion of python variables and expressions according to the
2250 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2256 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2251
2257
2252 Though PEP-215 has been rejected, a similar (but simpler) one
2258 Though PEP-215 has been rejected, a similar (but simpler) one
2253 seems like it will go into Python 2.4, PEP-292 -
2259 seems like it will go into Python 2.4, PEP-292 -
2254 http://www.python.org/peps/pep-0292.html.
2260 http://www.python.org/peps/pep-0292.html.
2255
2261
2256 I'll keep the full syntax of PEP-215, since IPython has since the
2262 I'll keep the full syntax of PEP-215, since IPython has since the
2257 start used Ka-Ping Yee's reference implementation discussed there
2263 start used Ka-Ping Yee's reference implementation discussed there
2258 (Itpl), and I actually like the powerful semantics it offers.
2264 (Itpl), and I actually like the powerful semantics it offers.
2259
2265
2260 In order to access normal shell variables, the $ has to be escaped
2266 In order to access normal shell variables, the $ has to be escaped
2261 via an extra $. For example:
2267 via an extra $. For example:
2262
2268
2263 In [7]: PATH='a python variable'
2269 In [7]: PATH='a python variable'
2264
2270
2265 In [8]: !echo $PATH
2271 In [8]: !echo $PATH
2266 a python variable
2272 a python variable
2267
2273
2268 In [9]: !echo $$PATH
2274 In [9]: !echo $$PATH
2269 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2275 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2270
2276
2271 (Magic.parse_options): escape $ so the shell doesn't evaluate
2277 (Magic.parse_options): escape $ so the shell doesn't evaluate
2272 things prematurely.
2278 things prematurely.
2273
2279
2274 * IPython/iplib.py (InteractiveShell.call_alias): added the
2280 * IPython/iplib.py (InteractiveShell.call_alias): added the
2275 ability for aliases to expand python variables via $.
2281 ability for aliases to expand python variables via $.
2276
2282
2277 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2283 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2278 system, now there's a @rehash/@rehashx pair of magics. These work
2284 system, now there's a @rehash/@rehashx pair of magics. These work
2279 like the csh rehash command, and can be invoked at any time. They
2285 like the csh rehash command, and can be invoked at any time. They
2280 build a table of aliases to everything in the user's $PATH
2286 build a table of aliases to everything in the user's $PATH
2281 (@rehash uses everything, @rehashx is slower but only adds
2287 (@rehash uses everything, @rehashx is slower but only adds
2282 executable files). With this, the pysh.py-based shell profile can
2288 executable files). With this, the pysh.py-based shell profile can
2283 now simply call rehash upon startup, and full access to all
2289 now simply call rehash upon startup, and full access to all
2284 programs in the user's path is obtained.
2290 programs in the user's path is obtained.
2285
2291
2286 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2292 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2287 functionality is now fully in place. I removed the old dynamic
2293 functionality is now fully in place. I removed the old dynamic
2288 code generation based approach, in favor of a much lighter one
2294 code generation based approach, in favor of a much lighter one
2289 based on a simple dict. The advantage is that this allows me to
2295 based on a simple dict. The advantage is that this allows me to
2290 now have thousands of aliases with negligible cost (unthinkable
2296 now have thousands of aliases with negligible cost (unthinkable
2291 with the old system).
2297 with the old system).
2292
2298
2293 2004-06-19 Fernando Perez <fperez@colorado.edu>
2299 2004-06-19 Fernando Perez <fperez@colorado.edu>
2294
2300
2295 * IPython/iplib.py (__init__): extended MagicCompleter class to
2301 * IPython/iplib.py (__init__): extended MagicCompleter class to
2296 also complete (last in priority) on user aliases.
2302 also complete (last in priority) on user aliases.
2297
2303
2298 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2304 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2299 call to eval.
2305 call to eval.
2300 (ItplNS.__init__): Added a new class which functions like Itpl,
2306 (ItplNS.__init__): Added a new class which functions like Itpl,
2301 but allows configuring the namespace for the evaluation to occur
2307 but allows configuring the namespace for the evaluation to occur
2302 in.
2308 in.
2303
2309
2304 2004-06-18 Fernando Perez <fperez@colorado.edu>
2310 2004-06-18 Fernando Perez <fperez@colorado.edu>
2305
2311
2306 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2312 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2307 better message when 'exit' or 'quit' are typed (a common newbie
2313 better message when 'exit' or 'quit' are typed (a common newbie
2308 confusion).
2314 confusion).
2309
2315
2310 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2316 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2311 check for Windows users.
2317 check for Windows users.
2312
2318
2313 * IPython/iplib.py (InteractiveShell.user_setup): removed
2319 * IPython/iplib.py (InteractiveShell.user_setup): removed
2314 disabling of colors for Windows. I'll test at runtime and issue a
2320 disabling of colors for Windows. I'll test at runtime and issue a
2315 warning if Gary's readline isn't found, as to nudge users to
2321 warning if Gary's readline isn't found, as to nudge users to
2316 download it.
2322 download it.
2317
2323
2318 2004-06-16 Fernando Perez <fperez@colorado.edu>
2324 2004-06-16 Fernando Perez <fperez@colorado.edu>
2319
2325
2320 * IPython/genutils.py (Stream.__init__): changed to print errors
2326 * IPython/genutils.py (Stream.__init__): changed to print errors
2321 to sys.stderr. I had a circular dependency here. Now it's
2327 to sys.stderr. I had a circular dependency here. Now it's
2322 possible to run ipython as IDLE's shell (consider this pre-alpha,
2328 possible to run ipython as IDLE's shell (consider this pre-alpha,
2323 since true stdout things end up in the starting terminal instead
2329 since true stdout things end up in the starting terminal instead
2324 of IDLE's out).
2330 of IDLE's out).
2325
2331
2326 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2332 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2327 users who haven't # updated their prompt_in2 definitions. Remove
2333 users who haven't # updated their prompt_in2 definitions. Remove
2328 eventually.
2334 eventually.
2329 (multiple_replace): added credit to original ASPN recipe.
2335 (multiple_replace): added credit to original ASPN recipe.
2330
2336
2331 2004-06-15 Fernando Perez <fperez@colorado.edu>
2337 2004-06-15 Fernando Perez <fperez@colorado.edu>
2332
2338
2333 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2339 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2334 list of auto-defined aliases.
2340 list of auto-defined aliases.
2335
2341
2336 2004-06-13 Fernando Perez <fperez@colorado.edu>
2342 2004-06-13 Fernando Perez <fperez@colorado.edu>
2337
2343
2338 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2344 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2339 install was really requested (so setup.py can be used for other
2345 install was really requested (so setup.py can be used for other
2340 things under Windows).
2346 things under Windows).
2341
2347
2342 2004-06-10 Fernando Perez <fperez@colorado.edu>
2348 2004-06-10 Fernando Perez <fperez@colorado.edu>
2343
2349
2344 * IPython/Logger.py (Logger.create_log): Manually remove any old
2350 * IPython/Logger.py (Logger.create_log): Manually remove any old
2345 backup, since os.remove may fail under Windows. Fixes bug
2351 backup, since os.remove may fail under Windows. Fixes bug
2346 reported by Thorsten.
2352 reported by Thorsten.
2347
2353
2348 2004-06-09 Fernando Perez <fperez@colorado.edu>
2354 2004-06-09 Fernando Perez <fperez@colorado.edu>
2349
2355
2350 * examples/example-embed.py: fixed all references to %n (replaced
2356 * examples/example-embed.py: fixed all references to %n (replaced
2351 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2357 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2352 for all examples and the manual as well.
2358 for all examples and the manual as well.
2353
2359
2354 2004-06-08 Fernando Perez <fperez@colorado.edu>
2360 2004-06-08 Fernando Perez <fperez@colorado.edu>
2355
2361
2356 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2362 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2357 alignment and color management. All 3 prompt subsystems now
2363 alignment and color management. All 3 prompt subsystems now
2358 inherit from BasePrompt.
2364 inherit from BasePrompt.
2359
2365
2360 * tools/release: updates for windows installer build and tag rpms
2366 * tools/release: updates for windows installer build and tag rpms
2361 with python version (since paths are fixed).
2367 with python version (since paths are fixed).
2362
2368
2363 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2369 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2364 which will become eventually obsolete. Also fixed the default
2370 which will become eventually obsolete. Also fixed the default
2365 prompt_in2 to use \D, so at least new users start with the correct
2371 prompt_in2 to use \D, so at least new users start with the correct
2366 defaults.
2372 defaults.
2367 WARNING: Users with existing ipythonrc files will need to apply
2373 WARNING: Users with existing ipythonrc files will need to apply
2368 this fix manually!
2374 this fix manually!
2369
2375
2370 * setup.py: make windows installer (.exe). This is finally the
2376 * setup.py: make windows installer (.exe). This is finally the
2371 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2377 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2372 which I hadn't included because it required Python 2.3 (or recent
2378 which I hadn't included because it required Python 2.3 (or recent
2373 distutils).
2379 distutils).
2374
2380
2375 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2381 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2376 usage of new '\D' escape.
2382 usage of new '\D' escape.
2377
2383
2378 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2384 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2379 lacks os.getuid())
2385 lacks os.getuid())
2380 (CachedOutput.set_colors): Added the ability to turn coloring
2386 (CachedOutput.set_colors): Added the ability to turn coloring
2381 on/off with @colors even for manually defined prompt colors. It
2387 on/off with @colors even for manually defined prompt colors. It
2382 uses a nasty global, but it works safely and via the generic color
2388 uses a nasty global, but it works safely and via the generic color
2383 handling mechanism.
2389 handling mechanism.
2384 (Prompt2.__init__): Introduced new escape '\D' for continuation
2390 (Prompt2.__init__): Introduced new escape '\D' for continuation
2385 prompts. It represents the counter ('\#') as dots.
2391 prompts. It represents the counter ('\#') as dots.
2386 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2392 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2387 need to update their ipythonrc files and replace '%n' with '\D' in
2393 need to update their ipythonrc files and replace '%n' with '\D' in
2388 their prompt_in2 settings everywhere. Sorry, but there's
2394 their prompt_in2 settings everywhere. Sorry, but there's
2389 otherwise no clean way to get all prompts to properly align. The
2395 otherwise no clean way to get all prompts to properly align. The
2390 ipythonrc shipped with IPython has been updated.
2396 ipythonrc shipped with IPython has been updated.
2391
2397
2392 2004-06-07 Fernando Perez <fperez@colorado.edu>
2398 2004-06-07 Fernando Perez <fperez@colorado.edu>
2393
2399
2394 * setup.py (isfile): Pass local_icons option to latex2html, so the
2400 * setup.py (isfile): Pass local_icons option to latex2html, so the
2395 resulting HTML file is self-contained. Thanks to
2401 resulting HTML file is self-contained. Thanks to
2396 dryice-AT-liu.com.cn for the tip.
2402 dryice-AT-liu.com.cn for the tip.
2397
2403
2398 * pysh.py: I created a new profile 'shell', which implements a
2404 * pysh.py: I created a new profile 'shell', which implements a
2399 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2405 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2400 system shell, nor will it become one anytime soon. It's mainly
2406 system shell, nor will it become one anytime soon. It's mainly
2401 meant to illustrate the use of the new flexible bash-like prompts.
2407 meant to illustrate the use of the new flexible bash-like prompts.
2402 I guess it could be used by hardy souls for true shell management,
2408 I guess it could be used by hardy souls for true shell management,
2403 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2409 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2404 profile. This uses the InterpreterExec extension provided by
2410 profile. This uses the InterpreterExec extension provided by
2405 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2411 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2406
2412
2407 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2413 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2408 auto-align itself with the length of the previous input prompt
2414 auto-align itself with the length of the previous input prompt
2409 (taking into account the invisible color escapes).
2415 (taking into account the invisible color escapes).
2410 (CachedOutput.__init__): Large restructuring of this class. Now
2416 (CachedOutput.__init__): Large restructuring of this class. Now
2411 all three prompts (primary1, primary2, output) are proper objects,
2417 all three prompts (primary1, primary2, output) are proper objects,
2412 managed by the 'parent' CachedOutput class. The code is still a
2418 managed by the 'parent' CachedOutput class. The code is still a
2413 bit hackish (all prompts share state via a pointer to the cache),
2419 bit hackish (all prompts share state via a pointer to the cache),
2414 but it's overall far cleaner than before.
2420 but it's overall far cleaner than before.
2415
2421
2416 * IPython/genutils.py (getoutputerror): modified to add verbose,
2422 * IPython/genutils.py (getoutputerror): modified to add verbose,
2417 debug and header options. This makes the interface of all getout*
2423 debug and header options. This makes the interface of all getout*
2418 functions uniform.
2424 functions uniform.
2419 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2425 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2420
2426
2421 * IPython/Magic.py (Magic.default_option): added a function to
2427 * IPython/Magic.py (Magic.default_option): added a function to
2422 allow registering default options for any magic command. This
2428 allow registering default options for any magic command. This
2423 makes it easy to have profiles which customize the magics globally
2429 makes it easy to have profiles which customize the magics globally
2424 for a certain use. The values set through this function are
2430 for a certain use. The values set through this function are
2425 picked up by the parse_options() method, which all magics should
2431 picked up by the parse_options() method, which all magics should
2426 use to parse their options.
2432 use to parse their options.
2427
2433
2428 * IPython/genutils.py (warn): modified the warnings framework to
2434 * IPython/genutils.py (warn): modified the warnings framework to
2429 use the Term I/O class. I'm trying to slowly unify all of
2435 use the Term I/O class. I'm trying to slowly unify all of
2430 IPython's I/O operations to pass through Term.
2436 IPython's I/O operations to pass through Term.
2431
2437
2432 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2438 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2433 the secondary prompt to correctly match the length of the primary
2439 the secondary prompt to correctly match the length of the primary
2434 one for any prompt. Now multi-line code will properly line up
2440 one for any prompt. Now multi-line code will properly line up
2435 even for path dependent prompts, such as the new ones available
2441 even for path dependent prompts, such as the new ones available
2436 via the prompt_specials.
2442 via the prompt_specials.
2437
2443
2438 2004-06-06 Fernando Perez <fperez@colorado.edu>
2444 2004-06-06 Fernando Perez <fperez@colorado.edu>
2439
2445
2440 * IPython/Prompts.py (prompt_specials): Added the ability to have
2446 * IPython/Prompts.py (prompt_specials): Added the ability to have
2441 bash-like special sequences in the prompts, which get
2447 bash-like special sequences in the prompts, which get
2442 automatically expanded. Things like hostname, current working
2448 automatically expanded. Things like hostname, current working
2443 directory and username are implemented already, but it's easy to
2449 directory and username are implemented already, but it's easy to
2444 add more in the future. Thanks to a patch by W.J. van der Laan
2450 add more in the future. Thanks to a patch by W.J. van der Laan
2445 <gnufnork-AT-hetdigitalegat.nl>
2451 <gnufnork-AT-hetdigitalegat.nl>
2446 (prompt_specials): Added color support for prompt strings, so
2452 (prompt_specials): Added color support for prompt strings, so
2447 users can define arbitrary color setups for their prompts.
2453 users can define arbitrary color setups for their prompts.
2448
2454
2449 2004-06-05 Fernando Perez <fperez@colorado.edu>
2455 2004-06-05 Fernando Perez <fperez@colorado.edu>
2450
2456
2451 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2457 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2452 code to load Gary Bishop's readline and configure it
2458 code to load Gary Bishop's readline and configure it
2453 automatically. Thanks to Gary for help on this.
2459 automatically. Thanks to Gary for help on this.
2454
2460
2455 2004-06-01 Fernando Perez <fperez@colorado.edu>
2461 2004-06-01 Fernando Perez <fperez@colorado.edu>
2456
2462
2457 * IPython/Logger.py (Logger.create_log): fix bug for logging
2463 * IPython/Logger.py (Logger.create_log): fix bug for logging
2458 with no filename (previous fix was incomplete).
2464 with no filename (previous fix was incomplete).
2459
2465
2460 2004-05-25 Fernando Perez <fperez@colorado.edu>
2466 2004-05-25 Fernando Perez <fperez@colorado.edu>
2461
2467
2462 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2468 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2463 parens would get passed to the shell.
2469 parens would get passed to the shell.
2464
2470
2465 2004-05-20 Fernando Perez <fperez@colorado.edu>
2471 2004-05-20 Fernando Perez <fperez@colorado.edu>
2466
2472
2467 * IPython/Magic.py (Magic.magic_prun): changed default profile
2473 * IPython/Magic.py (Magic.magic_prun): changed default profile
2468 sort order to 'time' (the more common profiling need).
2474 sort order to 'time' (the more common profiling need).
2469
2475
2470 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2476 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2471 so that source code shown is guaranteed in sync with the file on
2477 so that source code shown is guaranteed in sync with the file on
2472 disk (also changed in psource). Similar fix to the one for
2478 disk (also changed in psource). Similar fix to the one for
2473 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2479 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2474 <yann.ledu-AT-noos.fr>.
2480 <yann.ledu-AT-noos.fr>.
2475
2481
2476 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2482 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2477 with a single option would not be correctly parsed. Closes
2483 with a single option would not be correctly parsed. Closes
2478 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2484 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2479 introduced in 0.6.0 (on 2004-05-06).
2485 introduced in 0.6.0 (on 2004-05-06).
2480
2486
2481 2004-05-13 *** Released version 0.6.0
2487 2004-05-13 *** Released version 0.6.0
2482
2488
2483 2004-05-13 Fernando Perez <fperez@colorado.edu>
2489 2004-05-13 Fernando Perez <fperez@colorado.edu>
2484
2490
2485 * debian/: Added debian/ directory to CVS, so that debian support
2491 * debian/: Added debian/ directory to CVS, so that debian support
2486 is publicly accessible. The debian package is maintained by Jack
2492 is publicly accessible. The debian package is maintained by Jack
2487 Moffit <jack-AT-xiph.org>.
2493 Moffit <jack-AT-xiph.org>.
2488
2494
2489 * Documentation: included the notes about an ipython-based system
2495 * Documentation: included the notes about an ipython-based system
2490 shell (the hypothetical 'pysh') into the new_design.pdf document,
2496 shell (the hypothetical 'pysh') into the new_design.pdf document,
2491 so that these ideas get distributed to users along with the
2497 so that these ideas get distributed to users along with the
2492 official documentation.
2498 official documentation.
2493
2499
2494 2004-05-10 Fernando Perez <fperez@colorado.edu>
2500 2004-05-10 Fernando Perez <fperez@colorado.edu>
2495
2501
2496 * IPython/Logger.py (Logger.create_log): fix recently introduced
2502 * IPython/Logger.py (Logger.create_log): fix recently introduced
2497 bug (misindented line) where logstart would fail when not given an
2503 bug (misindented line) where logstart would fail when not given an
2498 explicit filename.
2504 explicit filename.
2499
2505
2500 2004-05-09 Fernando Perez <fperez@colorado.edu>
2506 2004-05-09 Fernando Perez <fperez@colorado.edu>
2501
2507
2502 * IPython/Magic.py (Magic.parse_options): skip system call when
2508 * IPython/Magic.py (Magic.parse_options): skip system call when
2503 there are no options to look for. Faster, cleaner for the common
2509 there are no options to look for. Faster, cleaner for the common
2504 case.
2510 case.
2505
2511
2506 * Documentation: many updates to the manual: describing Windows
2512 * Documentation: many updates to the manual: describing Windows
2507 support better, Gnuplot updates, credits, misc small stuff. Also
2513 support better, Gnuplot updates, credits, misc small stuff. Also
2508 updated the new_design doc a bit.
2514 updated the new_design doc a bit.
2509
2515
2510 2004-05-06 *** Released version 0.6.0.rc1
2516 2004-05-06 *** Released version 0.6.0.rc1
2511
2517
2512 2004-05-06 Fernando Perez <fperez@colorado.edu>
2518 2004-05-06 Fernando Perez <fperez@colorado.edu>
2513
2519
2514 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2520 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2515 operations to use the vastly more efficient list/''.join() method.
2521 operations to use the vastly more efficient list/''.join() method.
2516 (FormattedTB.text): Fix
2522 (FormattedTB.text): Fix
2517 http://www.scipy.net/roundup/ipython/issue12 - exception source
2523 http://www.scipy.net/roundup/ipython/issue12 - exception source
2518 extract not updated after reload. Thanks to Mike Salib
2524 extract not updated after reload. Thanks to Mike Salib
2519 <msalib-AT-mit.edu> for pinning the source of the problem.
2525 <msalib-AT-mit.edu> for pinning the source of the problem.
2520 Fortunately, the solution works inside ipython and doesn't require
2526 Fortunately, the solution works inside ipython and doesn't require
2521 any changes to python proper.
2527 any changes to python proper.
2522
2528
2523 * IPython/Magic.py (Magic.parse_options): Improved to process the
2529 * IPython/Magic.py (Magic.parse_options): Improved to process the
2524 argument list as a true shell would (by actually using the
2530 argument list as a true shell would (by actually using the
2525 underlying system shell). This way, all @magics automatically get
2531 underlying system shell). This way, all @magics automatically get
2526 shell expansion for variables. Thanks to a comment by Alex
2532 shell expansion for variables. Thanks to a comment by Alex
2527 Schmolck.
2533 Schmolck.
2528
2534
2529 2004-04-04 Fernando Perez <fperez@colorado.edu>
2535 2004-04-04 Fernando Perez <fperez@colorado.edu>
2530
2536
2531 * IPython/iplib.py (InteractiveShell.interact): Added a special
2537 * IPython/iplib.py (InteractiveShell.interact): Added a special
2532 trap for a debugger quit exception, which is basically impossible
2538 trap for a debugger quit exception, which is basically impossible
2533 to handle by normal mechanisms, given what pdb does to the stack.
2539 to handle by normal mechanisms, given what pdb does to the stack.
2534 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2540 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2535
2541
2536 2004-04-03 Fernando Perez <fperez@colorado.edu>
2542 2004-04-03 Fernando Perez <fperez@colorado.edu>
2537
2543
2538 * IPython/genutils.py (Term): Standardized the names of the Term
2544 * IPython/genutils.py (Term): Standardized the names of the Term
2539 class streams to cin/cout/cerr, following C++ naming conventions
2545 class streams to cin/cout/cerr, following C++ naming conventions
2540 (I can't use in/out/err because 'in' is not a valid attribute
2546 (I can't use in/out/err because 'in' is not a valid attribute
2541 name).
2547 name).
2542
2548
2543 * IPython/iplib.py (InteractiveShell.interact): don't increment
2549 * IPython/iplib.py (InteractiveShell.interact): don't increment
2544 the prompt if there's no user input. By Daniel 'Dang' Griffith
2550 the prompt if there's no user input. By Daniel 'Dang' Griffith
2545 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2551 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2546 Francois Pinard.
2552 Francois Pinard.
2547
2553
2548 2004-04-02 Fernando Perez <fperez@colorado.edu>
2554 2004-04-02 Fernando Perez <fperez@colorado.edu>
2549
2555
2550 * IPython/genutils.py (Stream.__init__): Modified to survive at
2556 * IPython/genutils.py (Stream.__init__): Modified to survive at
2551 least importing in contexts where stdin/out/err aren't true file
2557 least importing in contexts where stdin/out/err aren't true file
2552 objects, such as PyCrust (they lack fileno() and mode). However,
2558 objects, such as PyCrust (they lack fileno() and mode). However,
2553 the recovery facilities which rely on these things existing will
2559 the recovery facilities which rely on these things existing will
2554 not work.
2560 not work.
2555
2561
2556 2004-04-01 Fernando Perez <fperez@colorado.edu>
2562 2004-04-01 Fernando Perez <fperez@colorado.edu>
2557
2563
2558 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2564 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2559 use the new getoutputerror() function, so it properly
2565 use the new getoutputerror() function, so it properly
2560 distinguishes stdout/err.
2566 distinguishes stdout/err.
2561
2567
2562 * IPython/genutils.py (getoutputerror): added a function to
2568 * IPython/genutils.py (getoutputerror): added a function to
2563 capture separately the standard output and error of a command.
2569 capture separately the standard output and error of a command.
2564 After a comment from dang on the mailing lists. This code is
2570 After a comment from dang on the mailing lists. This code is
2565 basically a modified version of commands.getstatusoutput(), from
2571 basically a modified version of commands.getstatusoutput(), from
2566 the standard library.
2572 the standard library.
2567
2573
2568 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2574 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2569 '!!' as a special syntax (shorthand) to access @sx.
2575 '!!' as a special syntax (shorthand) to access @sx.
2570
2576
2571 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2577 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2572 command and return its output as a list split on '\n'.
2578 command and return its output as a list split on '\n'.
2573
2579
2574 2004-03-31 Fernando Perez <fperez@colorado.edu>
2580 2004-03-31 Fernando Perez <fperez@colorado.edu>
2575
2581
2576 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2582 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2577 method to dictionaries used as FakeModule instances if they lack
2583 method to dictionaries used as FakeModule instances if they lack
2578 it. At least pydoc in python2.3 breaks for runtime-defined
2584 it. At least pydoc in python2.3 breaks for runtime-defined
2579 functions without this hack. At some point I need to _really_
2585 functions without this hack. At some point I need to _really_
2580 understand what FakeModule is doing, because it's a gross hack.
2586 understand what FakeModule is doing, because it's a gross hack.
2581 But it solves Arnd's problem for now...
2587 But it solves Arnd's problem for now...
2582
2588
2583 2004-02-27 Fernando Perez <fperez@colorado.edu>
2589 2004-02-27 Fernando Perez <fperez@colorado.edu>
2584
2590
2585 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2591 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2586 mode would behave erratically. Also increased the number of
2592 mode would behave erratically. Also increased the number of
2587 possible logs in rotate mod to 999. Thanks to Rod Holland
2593 possible logs in rotate mod to 999. Thanks to Rod Holland
2588 <rhh@StructureLABS.com> for the report and fixes.
2594 <rhh@StructureLABS.com> for the report and fixes.
2589
2595
2590 2004-02-26 Fernando Perez <fperez@colorado.edu>
2596 2004-02-26 Fernando Perez <fperez@colorado.edu>
2591
2597
2592 * IPython/genutils.py (page): Check that the curses module really
2598 * IPython/genutils.py (page): Check that the curses module really
2593 has the initscr attribute before trying to use it. For some
2599 has the initscr attribute before trying to use it. For some
2594 reason, the Solaris curses module is missing this. I think this
2600 reason, the Solaris curses module is missing this. I think this
2595 should be considered a Solaris python bug, but I'm not sure.
2601 should be considered a Solaris python bug, but I'm not sure.
2596
2602
2597 2004-01-17 Fernando Perez <fperez@colorado.edu>
2603 2004-01-17 Fernando Perez <fperez@colorado.edu>
2598
2604
2599 * IPython/genutils.py (Stream.__init__): Changes to try to make
2605 * IPython/genutils.py (Stream.__init__): Changes to try to make
2600 ipython robust against stdin/out/err being closed by the user.
2606 ipython robust against stdin/out/err being closed by the user.
2601 This is 'user error' (and blocks a normal python session, at least
2607 This is 'user error' (and blocks a normal python session, at least
2602 the stdout case). However, Ipython should be able to survive such
2608 the stdout case). However, Ipython should be able to survive such
2603 instances of abuse as gracefully as possible. To simplify the
2609 instances of abuse as gracefully as possible. To simplify the
2604 coding and maintain compatibility with Gary Bishop's Term
2610 coding and maintain compatibility with Gary Bishop's Term
2605 contributions, I've made use of classmethods for this. I think
2611 contributions, I've made use of classmethods for this. I think
2606 this introduces a dependency on python 2.2.
2612 this introduces a dependency on python 2.2.
2607
2613
2608 2004-01-13 Fernando Perez <fperez@colorado.edu>
2614 2004-01-13 Fernando Perez <fperez@colorado.edu>
2609
2615
2610 * IPython/numutils.py (exp_safe): simplified the code a bit and
2616 * IPython/numutils.py (exp_safe): simplified the code a bit and
2611 removed the need for importing the kinds module altogether.
2617 removed the need for importing the kinds module altogether.
2612
2618
2613 2004-01-06 Fernando Perez <fperez@colorado.edu>
2619 2004-01-06 Fernando Perez <fperez@colorado.edu>
2614
2620
2615 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2621 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2616 a magic function instead, after some community feedback. No
2622 a magic function instead, after some community feedback. No
2617 special syntax will exist for it, but its name is deliberately
2623 special syntax will exist for it, but its name is deliberately
2618 very short.
2624 very short.
2619
2625
2620 2003-12-20 Fernando Perez <fperez@colorado.edu>
2626 2003-12-20 Fernando Perez <fperez@colorado.edu>
2621
2627
2622 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2628 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2623 new functionality, to automagically assign the result of a shell
2629 new functionality, to automagically assign the result of a shell
2624 command to a variable. I'll solicit some community feedback on
2630 command to a variable. I'll solicit some community feedback on
2625 this before making it permanent.
2631 this before making it permanent.
2626
2632
2627 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2633 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2628 requested about callables for which inspect couldn't obtain a
2634 requested about callables for which inspect couldn't obtain a
2629 proper argspec. Thanks to a crash report sent by Etienne
2635 proper argspec. Thanks to a crash report sent by Etienne
2630 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2636 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2631
2637
2632 2003-12-09 Fernando Perez <fperez@colorado.edu>
2638 2003-12-09 Fernando Perez <fperez@colorado.edu>
2633
2639
2634 * IPython/genutils.py (page): patch for the pager to work across
2640 * IPython/genutils.py (page): patch for the pager to work across
2635 various versions of Windows. By Gary Bishop.
2641 various versions of Windows. By Gary Bishop.
2636
2642
2637 2003-12-04 Fernando Perez <fperez@colorado.edu>
2643 2003-12-04 Fernando Perez <fperez@colorado.edu>
2638
2644
2639 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2645 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2640 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2646 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2641 While I tested this and it looks ok, there may still be corner
2647 While I tested this and it looks ok, there may still be corner
2642 cases I've missed.
2648 cases I've missed.
2643
2649
2644 2003-12-01 Fernando Perez <fperez@colorado.edu>
2650 2003-12-01 Fernando Perez <fperez@colorado.edu>
2645
2651
2646 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2652 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2647 where a line like 'p,q=1,2' would fail because the automagic
2653 where a line like 'p,q=1,2' would fail because the automagic
2648 system would be triggered for @p.
2654 system would be triggered for @p.
2649
2655
2650 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2656 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2651 cleanups, code unmodified.
2657 cleanups, code unmodified.
2652
2658
2653 * IPython/genutils.py (Term): added a class for IPython to handle
2659 * IPython/genutils.py (Term): added a class for IPython to handle
2654 output. In most cases it will just be a proxy for stdout/err, but
2660 output. In most cases it will just be a proxy for stdout/err, but
2655 having this allows modifications to be made for some platforms,
2661 having this allows modifications to be made for some platforms,
2656 such as handling color escapes under Windows. All of this code
2662 such as handling color escapes under Windows. All of this code
2657 was contributed by Gary Bishop, with minor modifications by me.
2663 was contributed by Gary Bishop, with minor modifications by me.
2658 The actual changes affect many files.
2664 The actual changes affect many files.
2659
2665
2660 2003-11-30 Fernando Perez <fperez@colorado.edu>
2666 2003-11-30 Fernando Perez <fperez@colorado.edu>
2661
2667
2662 * IPython/iplib.py (file_matches): new completion code, courtesy
2668 * IPython/iplib.py (file_matches): new completion code, courtesy
2663 of Jeff Collins. This enables filename completion again under
2669 of Jeff Collins. This enables filename completion again under
2664 python 2.3, which disabled it at the C level.
2670 python 2.3, which disabled it at the C level.
2665
2671
2666 2003-11-11 Fernando Perez <fperez@colorado.edu>
2672 2003-11-11 Fernando Perez <fperez@colorado.edu>
2667
2673
2668 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2674 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2669 for Numeric.array(map(...)), but often convenient.
2675 for Numeric.array(map(...)), but often convenient.
2670
2676
2671 2003-11-05 Fernando Perez <fperez@colorado.edu>
2677 2003-11-05 Fernando Perez <fperez@colorado.edu>
2672
2678
2673 * IPython/numutils.py (frange): Changed a call from int() to
2679 * IPython/numutils.py (frange): Changed a call from int() to
2674 int(round()) to prevent a problem reported with arange() in the
2680 int(round()) to prevent a problem reported with arange() in the
2675 numpy list.
2681 numpy list.
2676
2682
2677 2003-10-06 Fernando Perez <fperez@colorado.edu>
2683 2003-10-06 Fernando Perez <fperez@colorado.edu>
2678
2684
2679 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2685 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2680 prevent crashes if sys lacks an argv attribute (it happens with
2686 prevent crashes if sys lacks an argv attribute (it happens with
2681 embedded interpreters which build a bare-bones sys module).
2687 embedded interpreters which build a bare-bones sys module).
2682 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2688 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2683
2689
2684 2003-09-24 Fernando Perez <fperez@colorado.edu>
2690 2003-09-24 Fernando Perez <fperez@colorado.edu>
2685
2691
2686 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2692 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2687 to protect against poorly written user objects where __getattr__
2693 to protect against poorly written user objects where __getattr__
2688 raises exceptions other than AttributeError. Thanks to a bug
2694 raises exceptions other than AttributeError. Thanks to a bug
2689 report by Oliver Sander <osander-AT-gmx.de>.
2695 report by Oliver Sander <osander-AT-gmx.de>.
2690
2696
2691 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2697 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2692 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2698 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2693
2699
2694 2003-09-09 Fernando Perez <fperez@colorado.edu>
2700 2003-09-09 Fernando Perez <fperez@colorado.edu>
2695
2701
2696 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2702 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2697 unpacking a list whith a callable as first element would
2703 unpacking a list whith a callable as first element would
2698 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2704 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2699 Collins.
2705 Collins.
2700
2706
2701 2003-08-25 *** Released version 0.5.0
2707 2003-08-25 *** Released version 0.5.0
2702
2708
2703 2003-08-22 Fernando Perez <fperez@colorado.edu>
2709 2003-08-22 Fernando Perez <fperez@colorado.edu>
2704
2710
2705 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2711 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2706 improperly defined user exceptions. Thanks to feedback from Mark
2712 improperly defined user exceptions. Thanks to feedback from Mark
2707 Russell <mrussell-AT-verio.net>.
2713 Russell <mrussell-AT-verio.net>.
2708
2714
2709 2003-08-20 Fernando Perez <fperez@colorado.edu>
2715 2003-08-20 Fernando Perez <fperez@colorado.edu>
2710
2716
2711 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2717 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2712 printing so that it would print multi-line string forms starting
2718 printing so that it would print multi-line string forms starting
2713 with a new line. This way the formatting is better respected for
2719 with a new line. This way the formatting is better respected for
2714 objects which work hard to make nice string forms.
2720 objects which work hard to make nice string forms.
2715
2721
2716 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2722 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2717 autocall would overtake data access for objects with both
2723 autocall would overtake data access for objects with both
2718 __getitem__ and __call__.
2724 __getitem__ and __call__.
2719
2725
2720 2003-08-19 *** Released version 0.5.0-rc1
2726 2003-08-19 *** Released version 0.5.0-rc1
2721
2727
2722 2003-08-19 Fernando Perez <fperez@colorado.edu>
2728 2003-08-19 Fernando Perez <fperez@colorado.edu>
2723
2729
2724 * IPython/deep_reload.py (load_tail): single tiny change here
2730 * IPython/deep_reload.py (load_tail): single tiny change here
2725 seems to fix the long-standing bug of dreload() failing to work
2731 seems to fix the long-standing bug of dreload() failing to work
2726 for dotted names. But this module is pretty tricky, so I may have
2732 for dotted names. But this module is pretty tricky, so I may have
2727 missed some subtlety. Needs more testing!.
2733 missed some subtlety. Needs more testing!.
2728
2734
2729 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2735 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2730 exceptions which have badly implemented __str__ methods.
2736 exceptions which have badly implemented __str__ methods.
2731 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2737 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2732 which I've been getting reports about from Python 2.3 users. I
2738 which I've been getting reports about from Python 2.3 users. I
2733 wish I had a simple test case to reproduce the problem, so I could
2739 wish I had a simple test case to reproduce the problem, so I could
2734 either write a cleaner workaround or file a bug report if
2740 either write a cleaner workaround or file a bug report if
2735 necessary.
2741 necessary.
2736
2742
2737 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2743 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2738 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2744 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2739 a bug report by Tjabo Kloppenburg.
2745 a bug report by Tjabo Kloppenburg.
2740
2746
2741 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2747 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2742 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2748 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2743 seems rather unstable. Thanks to a bug report by Tjabo
2749 seems rather unstable. Thanks to a bug report by Tjabo
2744 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2750 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2745
2751
2746 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2752 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2747 this out soon because of the critical fixes in the inner loop for
2753 this out soon because of the critical fixes in the inner loop for
2748 generators.
2754 generators.
2749
2755
2750 * IPython/Magic.py (Magic.getargspec): removed. This (and
2756 * IPython/Magic.py (Magic.getargspec): removed. This (and
2751 _get_def) have been obsoleted by OInspect for a long time, I
2757 _get_def) have been obsoleted by OInspect for a long time, I
2752 hadn't noticed that they were dead code.
2758 hadn't noticed that they were dead code.
2753 (Magic._ofind): restored _ofind functionality for a few literals
2759 (Magic._ofind): restored _ofind functionality for a few literals
2754 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2760 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2755 for things like "hello".capitalize?, since that would require a
2761 for things like "hello".capitalize?, since that would require a
2756 potentially dangerous eval() again.
2762 potentially dangerous eval() again.
2757
2763
2758 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2764 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2759 logic a bit more to clean up the escapes handling and minimize the
2765 logic a bit more to clean up the escapes handling and minimize the
2760 use of _ofind to only necessary cases. The interactive 'feel' of
2766 use of _ofind to only necessary cases. The interactive 'feel' of
2761 IPython should have improved quite a bit with the changes in
2767 IPython should have improved quite a bit with the changes in
2762 _prefilter and _ofind (besides being far safer than before).
2768 _prefilter and _ofind (besides being far safer than before).
2763
2769
2764 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2770 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2765 obscure, never reported). Edit would fail to find the object to
2771 obscure, never reported). Edit would fail to find the object to
2766 edit under some circumstances.
2772 edit under some circumstances.
2767 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2773 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2768 which were causing double-calling of generators. Those eval calls
2774 which were causing double-calling of generators. Those eval calls
2769 were _very_ dangerous, since code with side effects could be
2775 were _very_ dangerous, since code with side effects could be
2770 triggered. As they say, 'eval is evil'... These were the
2776 triggered. As they say, 'eval is evil'... These were the
2771 nastiest evals in IPython. Besides, _ofind is now far simpler,
2777 nastiest evals in IPython. Besides, _ofind is now far simpler,
2772 and it should also be quite a bit faster. Its use of inspect is
2778 and it should also be quite a bit faster. Its use of inspect is
2773 also safer, so perhaps some of the inspect-related crashes I've
2779 also safer, so perhaps some of the inspect-related crashes I've
2774 seen lately with Python 2.3 might be taken care of. That will
2780 seen lately with Python 2.3 might be taken care of. That will
2775 need more testing.
2781 need more testing.
2776
2782
2777 2003-08-17 Fernando Perez <fperez@colorado.edu>
2783 2003-08-17 Fernando Perez <fperez@colorado.edu>
2778
2784
2779 * IPython/iplib.py (InteractiveShell._prefilter): significant
2785 * IPython/iplib.py (InteractiveShell._prefilter): significant
2780 simplifications to the logic for handling user escapes. Faster
2786 simplifications to the logic for handling user escapes. Faster
2781 and simpler code.
2787 and simpler code.
2782
2788
2783 2003-08-14 Fernando Perez <fperez@colorado.edu>
2789 2003-08-14 Fernando Perez <fperez@colorado.edu>
2784
2790
2785 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2791 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2786 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2792 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2787 but it should be quite a bit faster. And the recursive version
2793 but it should be quite a bit faster. And the recursive version
2788 generated O(log N) intermediate storage for all rank>1 arrays,
2794 generated O(log N) intermediate storage for all rank>1 arrays,
2789 even if they were contiguous.
2795 even if they were contiguous.
2790 (l1norm): Added this function.
2796 (l1norm): Added this function.
2791 (norm): Added this function for arbitrary norms (including
2797 (norm): Added this function for arbitrary norms (including
2792 l-infinity). l1 and l2 are still special cases for convenience
2798 l-infinity). l1 and l2 are still special cases for convenience
2793 and speed.
2799 and speed.
2794
2800
2795 2003-08-03 Fernando Perez <fperez@colorado.edu>
2801 2003-08-03 Fernando Perez <fperez@colorado.edu>
2796
2802
2797 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2803 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2798 exceptions, which now raise PendingDeprecationWarnings in Python
2804 exceptions, which now raise PendingDeprecationWarnings in Python
2799 2.3. There were some in Magic and some in Gnuplot2.
2805 2.3. There were some in Magic and some in Gnuplot2.
2800
2806
2801 2003-06-30 Fernando Perez <fperez@colorado.edu>
2807 2003-06-30 Fernando Perez <fperez@colorado.edu>
2802
2808
2803 * IPython/genutils.py (page): modified to call curses only for
2809 * IPython/genutils.py (page): modified to call curses only for
2804 terminals where TERM=='xterm'. After problems under many other
2810 terminals where TERM=='xterm'. After problems under many other
2805 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2811 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2806
2812
2807 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2813 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2808 would be triggered when readline was absent. This was just an old
2814 would be triggered when readline was absent. This was just an old
2809 debugging statement I'd forgotten to take out.
2815 debugging statement I'd forgotten to take out.
2810
2816
2811 2003-06-20 Fernando Perez <fperez@colorado.edu>
2817 2003-06-20 Fernando Perez <fperez@colorado.edu>
2812
2818
2813 * IPython/genutils.py (clock): modified to return only user time
2819 * IPython/genutils.py (clock): modified to return only user time
2814 (not counting system time), after a discussion on scipy. While
2820 (not counting system time), after a discussion on scipy. While
2815 system time may be a useful quantity occasionally, it may much
2821 system time may be a useful quantity occasionally, it may much
2816 more easily be skewed by occasional swapping or other similar
2822 more easily be skewed by occasional swapping or other similar
2817 activity.
2823 activity.
2818
2824
2819 2003-06-05 Fernando Perez <fperez@colorado.edu>
2825 2003-06-05 Fernando Perez <fperez@colorado.edu>
2820
2826
2821 * IPython/numutils.py (identity): new function, for building
2827 * IPython/numutils.py (identity): new function, for building
2822 arbitrary rank Kronecker deltas (mostly backwards compatible with
2828 arbitrary rank Kronecker deltas (mostly backwards compatible with
2823 Numeric.identity)
2829 Numeric.identity)
2824
2830
2825 2003-06-03 Fernando Perez <fperez@colorado.edu>
2831 2003-06-03 Fernando Perez <fperez@colorado.edu>
2826
2832
2827 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2833 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2828 arguments passed to magics with spaces, to allow trailing '\' to
2834 arguments passed to magics with spaces, to allow trailing '\' to
2829 work normally (mainly for Windows users).
2835 work normally (mainly for Windows users).
2830
2836
2831 2003-05-29 Fernando Perez <fperez@colorado.edu>
2837 2003-05-29 Fernando Perez <fperez@colorado.edu>
2832
2838
2833 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2839 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2834 instead of pydoc.help. This fixes a bizarre behavior where
2840 instead of pydoc.help. This fixes a bizarre behavior where
2835 printing '%s' % locals() would trigger the help system. Now
2841 printing '%s' % locals() would trigger the help system. Now
2836 ipython behaves like normal python does.
2842 ipython behaves like normal python does.
2837
2843
2838 Note that if one does 'from pydoc import help', the bizarre
2844 Note that if one does 'from pydoc import help', the bizarre
2839 behavior returns, but this will also happen in normal python, so
2845 behavior returns, but this will also happen in normal python, so
2840 it's not an ipython bug anymore (it has to do with how pydoc.help
2846 it's not an ipython bug anymore (it has to do with how pydoc.help
2841 is implemented).
2847 is implemented).
2842
2848
2843 2003-05-22 Fernando Perez <fperez@colorado.edu>
2849 2003-05-22 Fernando Perez <fperez@colorado.edu>
2844
2850
2845 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2851 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2846 return [] instead of None when nothing matches, also match to end
2852 return [] instead of None when nothing matches, also match to end
2847 of line. Patch by Gary Bishop.
2853 of line. Patch by Gary Bishop.
2848
2854
2849 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2855 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2850 protection as before, for files passed on the command line. This
2856 protection as before, for files passed on the command line. This
2851 prevents the CrashHandler from kicking in if user files call into
2857 prevents the CrashHandler from kicking in if user files call into
2852 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2858 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2853 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2859 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2854
2860
2855 2003-05-20 *** Released version 0.4.0
2861 2003-05-20 *** Released version 0.4.0
2856
2862
2857 2003-05-20 Fernando Perez <fperez@colorado.edu>
2863 2003-05-20 Fernando Perez <fperez@colorado.edu>
2858
2864
2859 * setup.py: added support for manpages. It's a bit hackish b/c of
2865 * setup.py: added support for manpages. It's a bit hackish b/c of
2860 a bug in the way the bdist_rpm distutils target handles gzipped
2866 a bug in the way the bdist_rpm distutils target handles gzipped
2861 manpages, but it works. After a patch by Jack.
2867 manpages, but it works. After a patch by Jack.
2862
2868
2863 2003-05-19 Fernando Perez <fperez@colorado.edu>
2869 2003-05-19 Fernando Perez <fperez@colorado.edu>
2864
2870
2865 * IPython/numutils.py: added a mockup of the kinds module, since
2871 * IPython/numutils.py: added a mockup of the kinds module, since
2866 it was recently removed from Numeric. This way, numutils will
2872 it was recently removed from Numeric. This way, numutils will
2867 work for all users even if they are missing kinds.
2873 work for all users even if they are missing kinds.
2868
2874
2869 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2875 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2870 failure, which can occur with SWIG-wrapped extensions. After a
2876 failure, which can occur with SWIG-wrapped extensions. After a
2871 crash report from Prabhu.
2877 crash report from Prabhu.
2872
2878
2873 2003-05-16 Fernando Perez <fperez@colorado.edu>
2879 2003-05-16 Fernando Perez <fperez@colorado.edu>
2874
2880
2875 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2881 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2876 protect ipython from user code which may call directly
2882 protect ipython from user code which may call directly
2877 sys.excepthook (this looks like an ipython crash to the user, even
2883 sys.excepthook (this looks like an ipython crash to the user, even
2878 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2884 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2879 This is especially important to help users of WxWindows, but may
2885 This is especially important to help users of WxWindows, but may
2880 also be useful in other cases.
2886 also be useful in other cases.
2881
2887
2882 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2888 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2883 an optional tb_offset to be specified, and to preserve exception
2889 an optional tb_offset to be specified, and to preserve exception
2884 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2890 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2885
2891
2886 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2892 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2887
2893
2888 2003-05-15 Fernando Perez <fperez@colorado.edu>
2894 2003-05-15 Fernando Perez <fperez@colorado.edu>
2889
2895
2890 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2896 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2891 installing for a new user under Windows.
2897 installing for a new user under Windows.
2892
2898
2893 2003-05-12 Fernando Perez <fperez@colorado.edu>
2899 2003-05-12 Fernando Perez <fperez@colorado.edu>
2894
2900
2895 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2901 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2896 handler for Emacs comint-based lines. Currently it doesn't do
2902 handler for Emacs comint-based lines. Currently it doesn't do
2897 much (but importantly, it doesn't update the history cache). In
2903 much (but importantly, it doesn't update the history cache). In
2898 the future it may be expanded if Alex needs more functionality
2904 the future it may be expanded if Alex needs more functionality
2899 there.
2905 there.
2900
2906
2901 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2907 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2902 info to crash reports.
2908 info to crash reports.
2903
2909
2904 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2910 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2905 just like Python's -c. Also fixed crash with invalid -color
2911 just like Python's -c. Also fixed crash with invalid -color
2906 option value at startup. Thanks to Will French
2912 option value at startup. Thanks to Will French
2907 <wfrench-AT-bestweb.net> for the bug report.
2913 <wfrench-AT-bestweb.net> for the bug report.
2908
2914
2909 2003-05-09 Fernando Perez <fperez@colorado.edu>
2915 2003-05-09 Fernando Perez <fperez@colorado.edu>
2910
2916
2911 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2917 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2912 to EvalDict (it's a mapping, after all) and simplified its code
2918 to EvalDict (it's a mapping, after all) and simplified its code
2913 quite a bit, after a nice discussion on c.l.py where Gustavo
2919 quite a bit, after a nice discussion on c.l.py where Gustavo
2914 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2920 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2915
2921
2916 2003-04-30 Fernando Perez <fperez@colorado.edu>
2922 2003-04-30 Fernando Perez <fperez@colorado.edu>
2917
2923
2918 * IPython/genutils.py (timings_out): modified it to reduce its
2924 * IPython/genutils.py (timings_out): modified it to reduce its
2919 overhead in the common reps==1 case.
2925 overhead in the common reps==1 case.
2920
2926
2921 2003-04-29 Fernando Perez <fperez@colorado.edu>
2927 2003-04-29 Fernando Perez <fperez@colorado.edu>
2922
2928
2923 * IPython/genutils.py (timings_out): Modified to use the resource
2929 * IPython/genutils.py (timings_out): Modified to use the resource
2924 module, which avoids the wraparound problems of time.clock().
2930 module, which avoids the wraparound problems of time.clock().
2925
2931
2926 2003-04-17 *** Released version 0.2.15pre4
2932 2003-04-17 *** Released version 0.2.15pre4
2927
2933
2928 2003-04-17 Fernando Perez <fperez@colorado.edu>
2934 2003-04-17 Fernando Perez <fperez@colorado.edu>
2929
2935
2930 * setup.py (scriptfiles): Split windows-specific stuff over to a
2936 * setup.py (scriptfiles): Split windows-specific stuff over to a
2931 separate file, in an attempt to have a Windows GUI installer.
2937 separate file, in an attempt to have a Windows GUI installer.
2932 That didn't work, but part of the groundwork is done.
2938 That didn't work, but part of the groundwork is done.
2933
2939
2934 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2940 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2935 indent/unindent with 4 spaces. Particularly useful in combination
2941 indent/unindent with 4 spaces. Particularly useful in combination
2936 with the new auto-indent option.
2942 with the new auto-indent option.
2937
2943
2938 2003-04-16 Fernando Perez <fperez@colorado.edu>
2944 2003-04-16 Fernando Perez <fperez@colorado.edu>
2939
2945
2940 * IPython/Magic.py: various replacements of self.rc for
2946 * IPython/Magic.py: various replacements of self.rc for
2941 self.shell.rc. A lot more remains to be done to fully disentangle
2947 self.shell.rc. A lot more remains to be done to fully disentangle
2942 this class from the main Shell class.
2948 this class from the main Shell class.
2943
2949
2944 * IPython/GnuplotRuntime.py: added checks for mouse support so
2950 * IPython/GnuplotRuntime.py: added checks for mouse support so
2945 that we don't try to enable it if the current gnuplot doesn't
2951 that we don't try to enable it if the current gnuplot doesn't
2946 really support it. Also added checks so that we don't try to
2952 really support it. Also added checks so that we don't try to
2947 enable persist under Windows (where Gnuplot doesn't recognize the
2953 enable persist under Windows (where Gnuplot doesn't recognize the
2948 option).
2954 option).
2949
2955
2950 * IPython/iplib.py (InteractiveShell.interact): Added optional
2956 * IPython/iplib.py (InteractiveShell.interact): Added optional
2951 auto-indenting code, after a patch by King C. Shu
2957 auto-indenting code, after a patch by King C. Shu
2952 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2958 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2953 get along well with pasting indented code. If I ever figure out
2959 get along well with pasting indented code. If I ever figure out
2954 how to make that part go well, it will become on by default.
2960 how to make that part go well, it will become on by default.
2955
2961
2956 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2962 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2957 crash ipython if there was an unmatched '%' in the user's prompt
2963 crash ipython if there was an unmatched '%' in the user's prompt
2958 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2964 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2959
2965
2960 * IPython/iplib.py (InteractiveShell.interact): removed the
2966 * IPython/iplib.py (InteractiveShell.interact): removed the
2961 ability to ask the user whether he wants to crash or not at the
2967 ability to ask the user whether he wants to crash or not at the
2962 'last line' exception handler. Calling functions at that point
2968 'last line' exception handler. Calling functions at that point
2963 changes the stack, and the error reports would have incorrect
2969 changes the stack, and the error reports would have incorrect
2964 tracebacks.
2970 tracebacks.
2965
2971
2966 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2972 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2967 pass through a peger a pretty-printed form of any object. After a
2973 pass through a peger a pretty-printed form of any object. After a
2968 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2974 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2969
2975
2970 2003-04-14 Fernando Perez <fperez@colorado.edu>
2976 2003-04-14 Fernando Perez <fperez@colorado.edu>
2971
2977
2972 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2978 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2973 all files in ~ would be modified at first install (instead of
2979 all files in ~ would be modified at first install (instead of
2974 ~/.ipython). This could be potentially disastrous, as the
2980 ~/.ipython). This could be potentially disastrous, as the
2975 modification (make line-endings native) could damage binary files.
2981 modification (make line-endings native) could damage binary files.
2976
2982
2977 2003-04-10 Fernando Perez <fperez@colorado.edu>
2983 2003-04-10 Fernando Perez <fperez@colorado.edu>
2978
2984
2979 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2985 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2980 handle only lines which are invalid python. This now means that
2986 handle only lines which are invalid python. This now means that
2981 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2987 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2982 for the bug report.
2988 for the bug report.
2983
2989
2984 2003-04-01 Fernando Perez <fperez@colorado.edu>
2990 2003-04-01 Fernando Perez <fperez@colorado.edu>
2985
2991
2986 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2992 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2987 where failing to set sys.last_traceback would crash pdb.pm().
2993 where failing to set sys.last_traceback would crash pdb.pm().
2988 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2994 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2989 report.
2995 report.
2990
2996
2991 2003-03-25 Fernando Perez <fperez@colorado.edu>
2997 2003-03-25 Fernando Perez <fperez@colorado.edu>
2992
2998
2993 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2999 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2994 before printing it (it had a lot of spurious blank lines at the
3000 before printing it (it had a lot of spurious blank lines at the
2995 end).
3001 end).
2996
3002
2997 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3003 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2998 output would be sent 21 times! Obviously people don't use this
3004 output would be sent 21 times! Obviously people don't use this
2999 too often, or I would have heard about it.
3005 too often, or I would have heard about it.
3000
3006
3001 2003-03-24 Fernando Perez <fperez@colorado.edu>
3007 2003-03-24 Fernando Perez <fperez@colorado.edu>
3002
3008
3003 * setup.py (scriptfiles): renamed the data_files parameter from
3009 * setup.py (scriptfiles): renamed the data_files parameter from
3004 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3010 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3005 for the patch.
3011 for the patch.
3006
3012
3007 2003-03-20 Fernando Perez <fperez@colorado.edu>
3013 2003-03-20 Fernando Perez <fperez@colorado.edu>
3008
3014
3009 * IPython/genutils.py (error): added error() and fatal()
3015 * IPython/genutils.py (error): added error() and fatal()
3010 functions.
3016 functions.
3011
3017
3012 2003-03-18 *** Released version 0.2.15pre3
3018 2003-03-18 *** Released version 0.2.15pre3
3013
3019
3014 2003-03-18 Fernando Perez <fperez@colorado.edu>
3020 2003-03-18 Fernando Perez <fperez@colorado.edu>
3015
3021
3016 * setupext/install_data_ext.py
3022 * setupext/install_data_ext.py
3017 (install_data_ext.initialize_options): Class contributed by Jack
3023 (install_data_ext.initialize_options): Class contributed by Jack
3018 Moffit for fixing the old distutils hack. He is sending this to
3024 Moffit for fixing the old distutils hack. He is sending this to
3019 the distutils folks so in the future we may not need it as a
3025 the distutils folks so in the future we may not need it as a
3020 private fix.
3026 private fix.
3021
3027
3022 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3028 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3023 changes for Debian packaging. See his patch for full details.
3029 changes for Debian packaging. See his patch for full details.
3024 The old distutils hack of making the ipythonrc* files carry a
3030 The old distutils hack of making the ipythonrc* files carry a
3025 bogus .py extension is gone, at last. Examples were moved to a
3031 bogus .py extension is gone, at last. Examples were moved to a
3026 separate subdir under doc/, and the separate executable scripts
3032 separate subdir under doc/, and the separate executable scripts
3027 now live in their own directory. Overall a great cleanup. The
3033 now live in their own directory. Overall a great cleanup. The
3028 manual was updated to use the new files, and setup.py has been
3034 manual was updated to use the new files, and setup.py has been
3029 fixed for this setup.
3035 fixed for this setup.
3030
3036
3031 * IPython/PyColorize.py (Parser.usage): made non-executable and
3037 * IPython/PyColorize.py (Parser.usage): made non-executable and
3032 created a pycolor wrapper around it to be included as a script.
3038 created a pycolor wrapper around it to be included as a script.
3033
3039
3034 2003-03-12 *** Released version 0.2.15pre2
3040 2003-03-12 *** Released version 0.2.15pre2
3035
3041
3036 2003-03-12 Fernando Perez <fperez@colorado.edu>
3042 2003-03-12 Fernando Perez <fperez@colorado.edu>
3037
3043
3038 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3044 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3039 long-standing problem with garbage characters in some terminals.
3045 long-standing problem with garbage characters in some terminals.
3040 The issue was really that the \001 and \002 escapes must _only_ be
3046 The issue was really that the \001 and \002 escapes must _only_ be
3041 passed to input prompts (which call readline), but _never_ to
3047 passed to input prompts (which call readline), but _never_ to
3042 normal text to be printed on screen. I changed ColorANSI to have
3048 normal text to be printed on screen. I changed ColorANSI to have
3043 two classes: TermColors and InputTermColors, each with the
3049 two classes: TermColors and InputTermColors, each with the
3044 appropriate escapes for input prompts or normal text. The code in
3050 appropriate escapes for input prompts or normal text. The code in
3045 Prompts.py got slightly more complicated, but this very old and
3051 Prompts.py got slightly more complicated, but this very old and
3046 annoying bug is finally fixed.
3052 annoying bug is finally fixed.
3047
3053
3048 All the credit for nailing down the real origin of this problem
3054 All the credit for nailing down the real origin of this problem
3049 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3055 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3050 *Many* thanks to him for spending quite a bit of effort on this.
3056 *Many* thanks to him for spending quite a bit of effort on this.
3051
3057
3052 2003-03-05 *** Released version 0.2.15pre1
3058 2003-03-05 *** Released version 0.2.15pre1
3053
3059
3054 2003-03-03 Fernando Perez <fperez@colorado.edu>
3060 2003-03-03 Fernando Perez <fperez@colorado.edu>
3055
3061
3056 * IPython/FakeModule.py: Moved the former _FakeModule to a
3062 * IPython/FakeModule.py: Moved the former _FakeModule to a
3057 separate file, because it's also needed by Magic (to fix a similar
3063 separate file, because it's also needed by Magic (to fix a similar
3058 pickle-related issue in @run).
3064 pickle-related issue in @run).
3059
3065
3060 2003-03-02 Fernando Perez <fperez@colorado.edu>
3066 2003-03-02 Fernando Perez <fperez@colorado.edu>
3061
3067
3062 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3068 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3063 the autocall option at runtime.
3069 the autocall option at runtime.
3064 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3070 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3065 across Magic.py to start separating Magic from InteractiveShell.
3071 across Magic.py to start separating Magic from InteractiveShell.
3066 (Magic._ofind): Fixed to return proper namespace for dotted
3072 (Magic._ofind): Fixed to return proper namespace for dotted
3067 names. Before, a dotted name would always return 'not currently
3073 names. Before, a dotted name would always return 'not currently
3068 defined', because it would find the 'parent'. s.x would be found,
3074 defined', because it would find the 'parent'. s.x would be found,
3069 but since 'x' isn't defined by itself, it would get confused.
3075 but since 'x' isn't defined by itself, it would get confused.
3070 (Magic.magic_run): Fixed pickling problems reported by Ralf
3076 (Magic.magic_run): Fixed pickling problems reported by Ralf
3071 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3077 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3072 that I'd used when Mike Heeter reported similar issues at the
3078 that I'd used when Mike Heeter reported similar issues at the
3073 top-level, but now for @run. It boils down to injecting the
3079 top-level, but now for @run. It boils down to injecting the
3074 namespace where code is being executed with something that looks
3080 namespace where code is being executed with something that looks
3075 enough like a module to fool pickle.dump(). Since a pickle stores
3081 enough like a module to fool pickle.dump(). Since a pickle stores
3076 a named reference to the importing module, we need this for
3082 a named reference to the importing module, we need this for
3077 pickles to save something sensible.
3083 pickles to save something sensible.
3078
3084
3079 * IPython/ipmaker.py (make_IPython): added an autocall option.
3085 * IPython/ipmaker.py (make_IPython): added an autocall option.
3080
3086
3081 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3087 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3082 the auto-eval code. Now autocalling is an option, and the code is
3088 the auto-eval code. Now autocalling is an option, and the code is
3083 also vastly safer. There is no more eval() involved at all.
3089 also vastly safer. There is no more eval() involved at all.
3084
3090
3085 2003-03-01 Fernando Perez <fperez@colorado.edu>
3091 2003-03-01 Fernando Perez <fperez@colorado.edu>
3086
3092
3087 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3093 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3088 dict with named keys instead of a tuple.
3094 dict with named keys instead of a tuple.
3089
3095
3090 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3096 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3091
3097
3092 * setup.py (make_shortcut): Fixed message about directories
3098 * setup.py (make_shortcut): Fixed message about directories
3093 created during Windows installation (the directories were ok, just
3099 created during Windows installation (the directories were ok, just
3094 the printed message was misleading). Thanks to Chris Liechti
3100 the printed message was misleading). Thanks to Chris Liechti
3095 <cliechti-AT-gmx.net> for the heads up.
3101 <cliechti-AT-gmx.net> for the heads up.
3096
3102
3097 2003-02-21 Fernando Perez <fperez@colorado.edu>
3103 2003-02-21 Fernando Perez <fperez@colorado.edu>
3098
3104
3099 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3105 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3100 of ValueError exception when checking for auto-execution. This
3106 of ValueError exception when checking for auto-execution. This
3101 one is raised by things like Numeric arrays arr.flat when the
3107 one is raised by things like Numeric arrays arr.flat when the
3102 array is non-contiguous.
3108 array is non-contiguous.
3103
3109
3104 2003-01-31 Fernando Perez <fperez@colorado.edu>
3110 2003-01-31 Fernando Perez <fperez@colorado.edu>
3105
3111
3106 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3112 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3107 not return any value at all (even though the command would get
3113 not return any value at all (even though the command would get
3108 executed).
3114 executed).
3109 (xsys): Flush stdout right after printing the command to ensure
3115 (xsys): Flush stdout right after printing the command to ensure
3110 proper ordering of commands and command output in the total
3116 proper ordering of commands and command output in the total
3111 output.
3117 output.
3112 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3118 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3113 system/getoutput as defaults. The old ones are kept for
3119 system/getoutput as defaults. The old ones are kept for
3114 compatibility reasons, so no code which uses this library needs
3120 compatibility reasons, so no code which uses this library needs
3115 changing.
3121 changing.
3116
3122
3117 2003-01-27 *** Released version 0.2.14
3123 2003-01-27 *** Released version 0.2.14
3118
3124
3119 2003-01-25 Fernando Perez <fperez@colorado.edu>
3125 2003-01-25 Fernando Perez <fperez@colorado.edu>
3120
3126
3121 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3127 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3122 functions defined in previous edit sessions could not be re-edited
3128 functions defined in previous edit sessions could not be re-edited
3123 (because the temp files were immediately removed). Now temp files
3129 (because the temp files were immediately removed). Now temp files
3124 are removed only at IPython's exit.
3130 are removed only at IPython's exit.
3125 (Magic.magic_run): Improved @run to perform shell-like expansions
3131 (Magic.magic_run): Improved @run to perform shell-like expansions
3126 on its arguments (~users and $VARS). With this, @run becomes more
3132 on its arguments (~users and $VARS). With this, @run becomes more
3127 like a normal command-line.
3133 like a normal command-line.
3128
3134
3129 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3135 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3130 bugs related to embedding and cleaned up that code. A fairly
3136 bugs related to embedding and cleaned up that code. A fairly
3131 important one was the impossibility to access the global namespace
3137 important one was the impossibility to access the global namespace
3132 through the embedded IPython (only local variables were visible).
3138 through the embedded IPython (only local variables were visible).
3133
3139
3134 2003-01-14 Fernando Perez <fperez@colorado.edu>
3140 2003-01-14 Fernando Perez <fperez@colorado.edu>
3135
3141
3136 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3142 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3137 auto-calling to be a bit more conservative. Now it doesn't get
3143 auto-calling to be a bit more conservative. Now it doesn't get
3138 triggered if any of '!=()<>' are in the rest of the input line, to
3144 triggered if any of '!=()<>' are in the rest of the input line, to
3139 allow comparing callables. Thanks to Alex for the heads up.
3145 allow comparing callables. Thanks to Alex for the heads up.
3140
3146
3141 2003-01-07 Fernando Perez <fperez@colorado.edu>
3147 2003-01-07 Fernando Perez <fperez@colorado.edu>
3142
3148
3143 * IPython/genutils.py (page): fixed estimation of the number of
3149 * IPython/genutils.py (page): fixed estimation of the number of
3144 lines in a string to be paged to simply count newlines. This
3150 lines in a string to be paged to simply count newlines. This
3145 prevents over-guessing due to embedded escape sequences. A better
3151 prevents over-guessing due to embedded escape sequences. A better
3146 long-term solution would involve stripping out the control chars
3152 long-term solution would involve stripping out the control chars
3147 for the count, but it's potentially so expensive I just don't
3153 for the count, but it's potentially so expensive I just don't
3148 think it's worth doing.
3154 think it's worth doing.
3149
3155
3150 2002-12-19 *** Released version 0.2.14pre50
3156 2002-12-19 *** Released version 0.2.14pre50
3151
3157
3152 2002-12-19 Fernando Perez <fperez@colorado.edu>
3158 2002-12-19 Fernando Perez <fperez@colorado.edu>
3153
3159
3154 * tools/release (version): Changed release scripts to inform
3160 * tools/release (version): Changed release scripts to inform
3155 Andrea and build a NEWS file with a list of recent changes.
3161 Andrea and build a NEWS file with a list of recent changes.
3156
3162
3157 * IPython/ColorANSI.py (__all__): changed terminal detection
3163 * IPython/ColorANSI.py (__all__): changed terminal detection
3158 code. Seems to work better for xterms without breaking
3164 code. Seems to work better for xterms without breaking
3159 konsole. Will need more testing to determine if WinXP and Mac OSX
3165 konsole. Will need more testing to determine if WinXP and Mac OSX
3160 also work ok.
3166 also work ok.
3161
3167
3162 2002-12-18 *** Released version 0.2.14pre49
3168 2002-12-18 *** Released version 0.2.14pre49
3163
3169
3164 2002-12-18 Fernando Perez <fperez@colorado.edu>
3170 2002-12-18 Fernando Perez <fperez@colorado.edu>
3165
3171
3166 * Docs: added new info about Mac OSX, from Andrea.
3172 * Docs: added new info about Mac OSX, from Andrea.
3167
3173
3168 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3174 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3169 allow direct plotting of python strings whose format is the same
3175 allow direct plotting of python strings whose format is the same
3170 of gnuplot data files.
3176 of gnuplot data files.
3171
3177
3172 2002-12-16 Fernando Perez <fperez@colorado.edu>
3178 2002-12-16 Fernando Perez <fperez@colorado.edu>
3173
3179
3174 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3180 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3175 value of exit question to be acknowledged.
3181 value of exit question to be acknowledged.
3176
3182
3177 2002-12-03 Fernando Perez <fperez@colorado.edu>
3183 2002-12-03 Fernando Perez <fperez@colorado.edu>
3178
3184
3179 * IPython/ipmaker.py: removed generators, which had been added
3185 * IPython/ipmaker.py: removed generators, which had been added
3180 by mistake in an earlier debugging run. This was causing trouble
3186 by mistake in an earlier debugging run. This was causing trouble
3181 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3187 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3182 for pointing this out.
3188 for pointing this out.
3183
3189
3184 2002-11-17 Fernando Perez <fperez@colorado.edu>
3190 2002-11-17 Fernando Perez <fperez@colorado.edu>
3185
3191
3186 * Manual: updated the Gnuplot section.
3192 * Manual: updated the Gnuplot section.
3187
3193
3188 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3194 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3189 a much better split of what goes in Runtime and what goes in
3195 a much better split of what goes in Runtime and what goes in
3190 Interactive.
3196 Interactive.
3191
3197
3192 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3198 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3193 being imported from iplib.
3199 being imported from iplib.
3194
3200
3195 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3201 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3196 for command-passing. Now the global Gnuplot instance is called
3202 for command-passing. Now the global Gnuplot instance is called
3197 'gp' instead of 'g', which was really a far too fragile and
3203 'gp' instead of 'g', which was really a far too fragile and
3198 common name.
3204 common name.
3199
3205
3200 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3206 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3201 bounding boxes generated by Gnuplot for square plots.
3207 bounding boxes generated by Gnuplot for square plots.
3202
3208
3203 * IPython/genutils.py (popkey): new function added. I should
3209 * IPython/genutils.py (popkey): new function added. I should
3204 suggest this on c.l.py as a dict method, it seems useful.
3210 suggest this on c.l.py as a dict method, it seems useful.
3205
3211
3206 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3212 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3207 to transparently handle PostScript generation. MUCH better than
3213 to transparently handle PostScript generation. MUCH better than
3208 the previous plot_eps/replot_eps (which I removed now). The code
3214 the previous plot_eps/replot_eps (which I removed now). The code
3209 is also fairly clean and well documented now (including
3215 is also fairly clean and well documented now (including
3210 docstrings).
3216 docstrings).
3211
3217
3212 2002-11-13 Fernando Perez <fperez@colorado.edu>
3218 2002-11-13 Fernando Perez <fperez@colorado.edu>
3213
3219
3214 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3220 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3215 (inconsistent with options).
3221 (inconsistent with options).
3216
3222
3217 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3223 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3218 manually disabled, I don't know why. Fixed it.
3224 manually disabled, I don't know why. Fixed it.
3219 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3225 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3220 eps output.
3226 eps output.
3221
3227
3222 2002-11-12 Fernando Perez <fperez@colorado.edu>
3228 2002-11-12 Fernando Perez <fperez@colorado.edu>
3223
3229
3224 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3230 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3225 don't propagate up to caller. Fixes crash reported by François
3231 don't propagate up to caller. Fixes crash reported by François
3226 Pinard.
3232 Pinard.
3227
3233
3228 2002-11-09 Fernando Perez <fperez@colorado.edu>
3234 2002-11-09 Fernando Perez <fperez@colorado.edu>
3229
3235
3230 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3236 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3231 history file for new users.
3237 history file for new users.
3232 (make_IPython): fixed bug where initial install would leave the
3238 (make_IPython): fixed bug where initial install would leave the
3233 user running in the .ipython dir.
3239 user running in the .ipython dir.
3234 (make_IPython): fixed bug where config dir .ipython would be
3240 (make_IPython): fixed bug where config dir .ipython would be
3235 created regardless of the given -ipythondir option. Thanks to Cory
3241 created regardless of the given -ipythondir option. Thanks to Cory
3236 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3242 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3237
3243
3238 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3244 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3239 type confirmations. Will need to use it in all of IPython's code
3245 type confirmations. Will need to use it in all of IPython's code
3240 consistently.
3246 consistently.
3241
3247
3242 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3248 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3243 context to print 31 lines instead of the default 5. This will make
3249 context to print 31 lines instead of the default 5. This will make
3244 the crash reports extremely detailed in case the problem is in
3250 the crash reports extremely detailed in case the problem is in
3245 libraries I don't have access to.
3251 libraries I don't have access to.
3246
3252
3247 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3253 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3248 line of defense' code to still crash, but giving users fair
3254 line of defense' code to still crash, but giving users fair
3249 warning. I don't want internal errors to go unreported: if there's
3255 warning. I don't want internal errors to go unreported: if there's
3250 an internal problem, IPython should crash and generate a full
3256 an internal problem, IPython should crash and generate a full
3251 report.
3257 report.
3252
3258
3253 2002-11-08 Fernando Perez <fperez@colorado.edu>
3259 2002-11-08 Fernando Perez <fperez@colorado.edu>
3254
3260
3255 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3261 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3256 otherwise uncaught exceptions which can appear if people set
3262 otherwise uncaught exceptions which can appear if people set
3257 sys.stdout to something badly broken. Thanks to a crash report
3263 sys.stdout to something badly broken. Thanks to a crash report
3258 from henni-AT-mail.brainbot.com.
3264 from henni-AT-mail.brainbot.com.
3259
3265
3260 2002-11-04 Fernando Perez <fperez@colorado.edu>
3266 2002-11-04 Fernando Perez <fperez@colorado.edu>
3261
3267
3262 * IPython/iplib.py (InteractiveShell.interact): added
3268 * IPython/iplib.py (InteractiveShell.interact): added
3263 __IPYTHON__active to the builtins. It's a flag which goes on when
3269 __IPYTHON__active to the builtins. It's a flag which goes on when
3264 the interaction starts and goes off again when it stops. This
3270 the interaction starts and goes off again when it stops. This
3265 allows embedding code to detect being inside IPython. Before this
3271 allows embedding code to detect being inside IPython. Before this
3266 was done via __IPYTHON__, but that only shows that an IPython
3272 was done via __IPYTHON__, but that only shows that an IPython
3267 instance has been created.
3273 instance has been created.
3268
3274
3269 * IPython/Magic.py (Magic.magic_env): I realized that in a
3275 * IPython/Magic.py (Magic.magic_env): I realized that in a
3270 UserDict, instance.data holds the data as a normal dict. So I
3276 UserDict, instance.data holds the data as a normal dict. So I
3271 modified @env to return os.environ.data instead of rebuilding a
3277 modified @env to return os.environ.data instead of rebuilding a
3272 dict by hand.
3278 dict by hand.
3273
3279
3274 2002-11-02 Fernando Perez <fperez@colorado.edu>
3280 2002-11-02 Fernando Perez <fperez@colorado.edu>
3275
3281
3276 * IPython/genutils.py (warn): changed so that level 1 prints no
3282 * IPython/genutils.py (warn): changed so that level 1 prints no
3277 header. Level 2 is now the default (with 'WARNING' header, as
3283 header. Level 2 is now the default (with 'WARNING' header, as
3278 before). I think I tracked all places where changes were needed in
3284 before). I think I tracked all places where changes were needed in
3279 IPython, but outside code using the old level numbering may have
3285 IPython, but outside code using the old level numbering may have
3280 broken.
3286 broken.
3281
3287
3282 * IPython/iplib.py (InteractiveShell.runcode): added this to
3288 * IPython/iplib.py (InteractiveShell.runcode): added this to
3283 handle the tracebacks in SystemExit traps correctly. The previous
3289 handle the tracebacks in SystemExit traps correctly. The previous
3284 code (through interact) was printing more of the stack than
3290 code (through interact) was printing more of the stack than
3285 necessary, showing IPython internal code to the user.
3291 necessary, showing IPython internal code to the user.
3286
3292
3287 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3293 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3288 default. Now that the default at the confirmation prompt is yes,
3294 default. Now that the default at the confirmation prompt is yes,
3289 it's not so intrusive. François' argument that ipython sessions
3295 it's not so intrusive. François' argument that ipython sessions
3290 tend to be complex enough not to lose them from an accidental C-d,
3296 tend to be complex enough not to lose them from an accidental C-d,
3291 is a valid one.
3297 is a valid one.
3292
3298
3293 * IPython/iplib.py (InteractiveShell.interact): added a
3299 * IPython/iplib.py (InteractiveShell.interact): added a
3294 showtraceback() call to the SystemExit trap, and modified the exit
3300 showtraceback() call to the SystemExit trap, and modified the exit
3295 confirmation to have yes as the default.
3301 confirmation to have yes as the default.
3296
3302
3297 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3303 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3298 this file. It's been gone from the code for a long time, this was
3304 this file. It's been gone from the code for a long time, this was
3299 simply leftover junk.
3305 simply leftover junk.
3300
3306
3301 2002-11-01 Fernando Perez <fperez@colorado.edu>
3307 2002-11-01 Fernando Perez <fperez@colorado.edu>
3302
3308
3303 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3309 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3304 added. If set, IPython now traps EOF and asks for
3310 added. If set, IPython now traps EOF and asks for
3305 confirmation. After a request by François Pinard.
3311 confirmation. After a request by François Pinard.
3306
3312
3307 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3313 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3308 of @abort, and with a new (better) mechanism for handling the
3314 of @abort, and with a new (better) mechanism for handling the
3309 exceptions.
3315 exceptions.
3310
3316
3311 2002-10-27 Fernando Perez <fperez@colorado.edu>
3317 2002-10-27 Fernando Perez <fperez@colorado.edu>
3312
3318
3313 * IPython/usage.py (__doc__): updated the --help information and
3319 * IPython/usage.py (__doc__): updated the --help information and
3314 the ipythonrc file to indicate that -log generates
3320 the ipythonrc file to indicate that -log generates
3315 ./ipython.log. Also fixed the corresponding info in @logstart.
3321 ./ipython.log. Also fixed the corresponding info in @logstart.
3316 This and several other fixes in the manuals thanks to reports by
3322 This and several other fixes in the manuals thanks to reports by
3317 François Pinard <pinard-AT-iro.umontreal.ca>.
3323 François Pinard <pinard-AT-iro.umontreal.ca>.
3318
3324
3319 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3325 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3320 refer to @logstart (instead of @log, which doesn't exist).
3326 refer to @logstart (instead of @log, which doesn't exist).
3321
3327
3322 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3328 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3323 AttributeError crash. Thanks to Christopher Armstrong
3329 AttributeError crash. Thanks to Christopher Armstrong
3324 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3330 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3325 introduced recently (in 0.2.14pre37) with the fix to the eval
3331 introduced recently (in 0.2.14pre37) with the fix to the eval
3326 problem mentioned below.
3332 problem mentioned below.
3327
3333
3328 2002-10-17 Fernando Perez <fperez@colorado.edu>
3334 2002-10-17 Fernando Perez <fperez@colorado.edu>
3329
3335
3330 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3336 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3331 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3337 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3332
3338
3333 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3339 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3334 this function to fix a problem reported by Alex Schmolck. He saw
3340 this function to fix a problem reported by Alex Schmolck. He saw
3335 it with list comprehensions and generators, which were getting
3341 it with list comprehensions and generators, which were getting
3336 called twice. The real problem was an 'eval' call in testing for
3342 called twice. The real problem was an 'eval' call in testing for
3337 automagic which was evaluating the input line silently.
3343 automagic which was evaluating the input line silently.
3338
3344
3339 This is a potentially very nasty bug, if the input has side
3345 This is a potentially very nasty bug, if the input has side
3340 effects which must not be repeated. The code is much cleaner now,
3346 effects which must not be repeated. The code is much cleaner now,
3341 without any blanket 'except' left and with a regexp test for
3347 without any blanket 'except' left and with a regexp test for
3342 actual function names.
3348 actual function names.
3343
3349
3344 But an eval remains, which I'm not fully comfortable with. I just
3350 But an eval remains, which I'm not fully comfortable with. I just
3345 don't know how to find out if an expression could be a callable in
3351 don't know how to find out if an expression could be a callable in
3346 the user's namespace without doing an eval on the string. However
3352 the user's namespace without doing an eval on the string. However
3347 that string is now much more strictly checked so that no code
3353 that string is now much more strictly checked so that no code
3348 slips by, so the eval should only happen for things that can
3354 slips by, so the eval should only happen for things that can
3349 really be only function/method names.
3355 really be only function/method names.
3350
3356
3351 2002-10-15 Fernando Perez <fperez@colorado.edu>
3357 2002-10-15 Fernando Perez <fperez@colorado.edu>
3352
3358
3353 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3359 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3354 OSX information to main manual, removed README_Mac_OSX file from
3360 OSX information to main manual, removed README_Mac_OSX file from
3355 distribution. Also updated credits for recent additions.
3361 distribution. Also updated credits for recent additions.
3356
3362
3357 2002-10-10 Fernando Perez <fperez@colorado.edu>
3363 2002-10-10 Fernando Perez <fperez@colorado.edu>
3358
3364
3359 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3365 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3360 terminal-related issues. Many thanks to Andrea Riciputi
3366 terminal-related issues. Many thanks to Andrea Riciputi
3361 <andrea.riciputi-AT-libero.it> for writing it.
3367 <andrea.riciputi-AT-libero.it> for writing it.
3362
3368
3363 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3369 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3364 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3370 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3365
3371
3366 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3372 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3367 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3373 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3368 <syver-en-AT-online.no> who both submitted patches for this problem.
3374 <syver-en-AT-online.no> who both submitted patches for this problem.
3369
3375
3370 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3376 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3371 global embedding to make sure that things don't overwrite user
3377 global embedding to make sure that things don't overwrite user
3372 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3378 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3373
3379
3374 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3380 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3375 compatibility. Thanks to Hayden Callow
3381 compatibility. Thanks to Hayden Callow
3376 <h.callow-AT-elec.canterbury.ac.nz>
3382 <h.callow-AT-elec.canterbury.ac.nz>
3377
3383
3378 2002-10-04 Fernando Perez <fperez@colorado.edu>
3384 2002-10-04 Fernando Perez <fperez@colorado.edu>
3379
3385
3380 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3386 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3381 Gnuplot.File objects.
3387 Gnuplot.File objects.
3382
3388
3383 2002-07-23 Fernando Perez <fperez@colorado.edu>
3389 2002-07-23 Fernando Perez <fperez@colorado.edu>
3384
3390
3385 * IPython/genutils.py (timing): Added timings() and timing() for
3391 * IPython/genutils.py (timing): Added timings() and timing() for
3386 quick access to the most commonly needed data, the execution
3392 quick access to the most commonly needed data, the execution
3387 times. Old timing() renamed to timings_out().
3393 times. Old timing() renamed to timings_out().
3388
3394
3389 2002-07-18 Fernando Perez <fperez@colorado.edu>
3395 2002-07-18 Fernando Perez <fperez@colorado.edu>
3390
3396
3391 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3397 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3392 bug with nested instances disrupting the parent's tab completion.
3398 bug with nested instances disrupting the parent's tab completion.
3393
3399
3394 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3400 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3395 all_completions code to begin the emacs integration.
3401 all_completions code to begin the emacs integration.
3396
3402
3397 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3403 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3398 argument to allow titling individual arrays when plotting.
3404 argument to allow titling individual arrays when plotting.
3399
3405
3400 2002-07-15 Fernando Perez <fperez@colorado.edu>
3406 2002-07-15 Fernando Perez <fperez@colorado.edu>
3401
3407
3402 * setup.py (make_shortcut): changed to retrieve the value of
3408 * setup.py (make_shortcut): changed to retrieve the value of
3403 'Program Files' directory from the registry (this value changes in
3409 'Program Files' directory from the registry (this value changes in
3404 non-english versions of Windows). Thanks to Thomas Fanslau
3410 non-english versions of Windows). Thanks to Thomas Fanslau
3405 <tfanslau-AT-gmx.de> for the report.
3411 <tfanslau-AT-gmx.de> for the report.
3406
3412
3407 2002-07-10 Fernando Perez <fperez@colorado.edu>
3413 2002-07-10 Fernando Perez <fperez@colorado.edu>
3408
3414
3409 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3415 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3410 a bug in pdb, which crashes if a line with only whitespace is
3416 a bug in pdb, which crashes if a line with only whitespace is
3411 entered. Bug report submitted to sourceforge.
3417 entered. Bug report submitted to sourceforge.
3412
3418
3413 2002-07-09 Fernando Perez <fperez@colorado.edu>
3419 2002-07-09 Fernando Perez <fperez@colorado.edu>
3414
3420
3415 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3421 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3416 reporting exceptions (it's a bug in inspect.py, I just set a
3422 reporting exceptions (it's a bug in inspect.py, I just set a
3417 workaround).
3423 workaround).
3418
3424
3419 2002-07-08 Fernando Perez <fperez@colorado.edu>
3425 2002-07-08 Fernando Perez <fperez@colorado.edu>
3420
3426
3421 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3427 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3422 __IPYTHON__ in __builtins__ to show up in user_ns.
3428 __IPYTHON__ in __builtins__ to show up in user_ns.
3423
3429
3424 2002-07-03 Fernando Perez <fperez@colorado.edu>
3430 2002-07-03 Fernando Perez <fperez@colorado.edu>
3425
3431
3426 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3432 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3427 name from @gp_set_instance to @gp_set_default.
3433 name from @gp_set_instance to @gp_set_default.
3428
3434
3429 * IPython/ipmaker.py (make_IPython): default editor value set to
3435 * IPython/ipmaker.py (make_IPython): default editor value set to
3430 '0' (a string), to match the rc file. Otherwise will crash when
3436 '0' (a string), to match the rc file. Otherwise will crash when
3431 .strip() is called on it.
3437 .strip() is called on it.
3432
3438
3433
3439
3434 2002-06-28 Fernando Perez <fperez@colorado.edu>
3440 2002-06-28 Fernando Perez <fperez@colorado.edu>
3435
3441
3436 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3442 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3437 of files in current directory when a file is executed via
3443 of files in current directory when a file is executed via
3438 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3444 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3439
3445
3440 * setup.py (manfiles): fix for rpm builds, submitted by RA
3446 * setup.py (manfiles): fix for rpm builds, submitted by RA
3441 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3447 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3442
3448
3443 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3449 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3444 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3450 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3445 string!). A. Schmolck caught this one.
3451 string!). A. Schmolck caught this one.
3446
3452
3447 2002-06-27 Fernando Perez <fperez@colorado.edu>
3453 2002-06-27 Fernando Perez <fperez@colorado.edu>
3448
3454
3449 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3455 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3450 defined files at the cmd line. __name__ wasn't being set to
3456 defined files at the cmd line. __name__ wasn't being set to
3451 __main__.
3457 __main__.
3452
3458
3453 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3459 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3454 regular lists and tuples besides Numeric arrays.
3460 regular lists and tuples besides Numeric arrays.
3455
3461
3456 * IPython/Prompts.py (CachedOutput.__call__): Added output
3462 * IPython/Prompts.py (CachedOutput.__call__): Added output
3457 supression for input ending with ';'. Similar to Mathematica and
3463 supression for input ending with ';'. Similar to Mathematica and
3458 Matlab. The _* vars and Out[] list are still updated, just like
3464 Matlab. The _* vars and Out[] list are still updated, just like
3459 Mathematica behaves.
3465 Mathematica behaves.
3460
3466
3461 2002-06-25 Fernando Perez <fperez@colorado.edu>
3467 2002-06-25 Fernando Perez <fperez@colorado.edu>
3462
3468
3463 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3469 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3464 .ini extensions for profiels under Windows.
3470 .ini extensions for profiels under Windows.
3465
3471
3466 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3472 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3467 string form. Fix contributed by Alexander Schmolck
3473 string form. Fix contributed by Alexander Schmolck
3468 <a.schmolck-AT-gmx.net>
3474 <a.schmolck-AT-gmx.net>
3469
3475
3470 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3476 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3471 pre-configured Gnuplot instance.
3477 pre-configured Gnuplot instance.
3472
3478
3473 2002-06-21 Fernando Perez <fperez@colorado.edu>
3479 2002-06-21 Fernando Perez <fperez@colorado.edu>
3474
3480
3475 * IPython/numutils.py (exp_safe): new function, works around the
3481 * IPython/numutils.py (exp_safe): new function, works around the
3476 underflow problems in Numeric.
3482 underflow problems in Numeric.
3477 (log2): New fn. Safe log in base 2: returns exact integer answer
3483 (log2): New fn. Safe log in base 2: returns exact integer answer
3478 for exact integer powers of 2.
3484 for exact integer powers of 2.
3479
3485
3480 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3486 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3481 properly.
3487 properly.
3482
3488
3483 2002-06-20 Fernando Perez <fperez@colorado.edu>
3489 2002-06-20 Fernando Perez <fperez@colorado.edu>
3484
3490
3485 * IPython/genutils.py (timing): new function like
3491 * IPython/genutils.py (timing): new function like
3486 Mathematica's. Similar to time_test, but returns more info.
3492 Mathematica's. Similar to time_test, but returns more info.
3487
3493
3488 2002-06-18 Fernando Perez <fperez@colorado.edu>
3494 2002-06-18 Fernando Perez <fperez@colorado.edu>
3489
3495
3490 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3496 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3491 according to Mike Heeter's suggestions.
3497 according to Mike Heeter's suggestions.
3492
3498
3493 2002-06-16 Fernando Perez <fperez@colorado.edu>
3499 2002-06-16 Fernando Perez <fperez@colorado.edu>
3494
3500
3495 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3501 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3496 system. GnuplotMagic is gone as a user-directory option. New files
3502 system. GnuplotMagic is gone as a user-directory option. New files
3497 make it easier to use all the gnuplot stuff both from external
3503 make it easier to use all the gnuplot stuff both from external
3498 programs as well as from IPython. Had to rewrite part of
3504 programs as well as from IPython. Had to rewrite part of
3499 hardcopy() b/c of a strange bug: often the ps files simply don't
3505 hardcopy() b/c of a strange bug: often the ps files simply don't
3500 get created, and require a repeat of the command (often several
3506 get created, and require a repeat of the command (often several
3501 times).
3507 times).
3502
3508
3503 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3509 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3504 resolve output channel at call time, so that if sys.stderr has
3510 resolve output channel at call time, so that if sys.stderr has
3505 been redirected by user this gets honored.
3511 been redirected by user this gets honored.
3506
3512
3507 2002-06-13 Fernando Perez <fperez@colorado.edu>
3513 2002-06-13 Fernando Perez <fperez@colorado.edu>
3508
3514
3509 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3515 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3510 IPShell. Kept a copy with the old names to avoid breaking people's
3516 IPShell. Kept a copy with the old names to avoid breaking people's
3511 embedded code.
3517 embedded code.
3512
3518
3513 * IPython/ipython: simplified it to the bare minimum after
3519 * IPython/ipython: simplified it to the bare minimum after
3514 Holger's suggestions. Added info about how to use it in
3520 Holger's suggestions. Added info about how to use it in
3515 PYTHONSTARTUP.
3521 PYTHONSTARTUP.
3516
3522
3517 * IPython/Shell.py (IPythonShell): changed the options passing
3523 * IPython/Shell.py (IPythonShell): changed the options passing
3518 from a string with funky %s replacements to a straight list. Maybe
3524 from a string with funky %s replacements to a straight list. Maybe
3519 a bit more typing, but it follows sys.argv conventions, so there's
3525 a bit more typing, but it follows sys.argv conventions, so there's
3520 less special-casing to remember.
3526 less special-casing to remember.
3521
3527
3522 2002-06-12 Fernando Perez <fperez@colorado.edu>
3528 2002-06-12 Fernando Perez <fperez@colorado.edu>
3523
3529
3524 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3530 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3525 command. Thanks to a suggestion by Mike Heeter.
3531 command. Thanks to a suggestion by Mike Heeter.
3526 (Magic.magic_pfile): added behavior to look at filenames if given
3532 (Magic.magic_pfile): added behavior to look at filenames if given
3527 arg is not a defined object.
3533 arg is not a defined object.
3528 (Magic.magic_save): New @save function to save code snippets. Also
3534 (Magic.magic_save): New @save function to save code snippets. Also
3529 a Mike Heeter idea.
3535 a Mike Heeter idea.
3530
3536
3531 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3537 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3532 plot() and replot(). Much more convenient now, especially for
3538 plot() and replot(). Much more convenient now, especially for
3533 interactive use.
3539 interactive use.
3534
3540
3535 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3541 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3536 filenames.
3542 filenames.
3537
3543
3538 2002-06-02 Fernando Perez <fperez@colorado.edu>
3544 2002-06-02 Fernando Perez <fperez@colorado.edu>
3539
3545
3540 * IPython/Struct.py (Struct.__init__): modified to admit
3546 * IPython/Struct.py (Struct.__init__): modified to admit
3541 initialization via another struct.
3547 initialization via another struct.
3542
3548
3543 * IPython/genutils.py (SystemExec.__init__): New stateful
3549 * IPython/genutils.py (SystemExec.__init__): New stateful
3544 interface to xsys and bq. Useful for writing system scripts.
3550 interface to xsys and bq. Useful for writing system scripts.
3545
3551
3546 2002-05-30 Fernando Perez <fperez@colorado.edu>
3552 2002-05-30 Fernando Perez <fperez@colorado.edu>
3547
3553
3548 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3554 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3549 documents. This will make the user download smaller (it's getting
3555 documents. This will make the user download smaller (it's getting
3550 too big).
3556 too big).
3551
3557
3552 2002-05-29 Fernando Perez <fperez@colorado.edu>
3558 2002-05-29 Fernando Perez <fperez@colorado.edu>
3553
3559
3554 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3560 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3555 fix problems with shelve and pickle. Seems to work, but I don't
3561 fix problems with shelve and pickle. Seems to work, but I don't
3556 know if corner cases break it. Thanks to Mike Heeter
3562 know if corner cases break it. Thanks to Mike Heeter
3557 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3563 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3558
3564
3559 2002-05-24 Fernando Perez <fperez@colorado.edu>
3565 2002-05-24 Fernando Perez <fperez@colorado.edu>
3560
3566
3561 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3567 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3562 macros having broken.
3568 macros having broken.
3563
3569
3564 2002-05-21 Fernando Perez <fperez@colorado.edu>
3570 2002-05-21 Fernando Perez <fperez@colorado.edu>
3565
3571
3566 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3572 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3567 introduced logging bug: all history before logging started was
3573 introduced logging bug: all history before logging started was
3568 being written one character per line! This came from the redesign
3574 being written one character per line! This came from the redesign
3569 of the input history as a special list which slices to strings,
3575 of the input history as a special list which slices to strings,
3570 not to lists.
3576 not to lists.
3571
3577
3572 2002-05-20 Fernando Perez <fperez@colorado.edu>
3578 2002-05-20 Fernando Perez <fperez@colorado.edu>
3573
3579
3574 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3580 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3575 be an attribute of all classes in this module. The design of these
3581 be an attribute of all classes in this module. The design of these
3576 classes needs some serious overhauling.
3582 classes needs some serious overhauling.
3577
3583
3578 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3584 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3579 which was ignoring '_' in option names.
3585 which was ignoring '_' in option names.
3580
3586
3581 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3587 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3582 'Verbose_novars' to 'Context' and made it the new default. It's a
3588 'Verbose_novars' to 'Context' and made it the new default. It's a
3583 bit more readable and also safer than verbose.
3589 bit more readable and also safer than verbose.
3584
3590
3585 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3591 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3586 triple-quoted strings.
3592 triple-quoted strings.
3587
3593
3588 * IPython/OInspect.py (__all__): new module exposing the object
3594 * IPython/OInspect.py (__all__): new module exposing the object
3589 introspection facilities. Now the corresponding magics are dummy
3595 introspection facilities. Now the corresponding magics are dummy
3590 wrappers around this. Having this module will make it much easier
3596 wrappers around this. Having this module will make it much easier
3591 to put these functions into our modified pdb.
3597 to put these functions into our modified pdb.
3592 This new object inspector system uses the new colorizing module,
3598 This new object inspector system uses the new colorizing module,
3593 so source code and other things are nicely syntax highlighted.
3599 so source code and other things are nicely syntax highlighted.
3594
3600
3595 2002-05-18 Fernando Perez <fperez@colorado.edu>
3601 2002-05-18 Fernando Perez <fperez@colorado.edu>
3596
3602
3597 * IPython/ColorANSI.py: Split the coloring tools into a separate
3603 * IPython/ColorANSI.py: Split the coloring tools into a separate
3598 module so I can use them in other code easier (they were part of
3604 module so I can use them in other code easier (they were part of
3599 ultraTB).
3605 ultraTB).
3600
3606
3601 2002-05-17 Fernando Perez <fperez@colorado.edu>
3607 2002-05-17 Fernando Perez <fperez@colorado.edu>
3602
3608
3603 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3609 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3604 fixed it to set the global 'g' also to the called instance, as
3610 fixed it to set the global 'g' also to the called instance, as
3605 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3611 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3606 user's 'g' variables).
3612 user's 'g' variables).
3607
3613
3608 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3614 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3609 global variables (aliases to _ih,_oh) so that users which expect
3615 global variables (aliases to _ih,_oh) so that users which expect
3610 In[5] or Out[7] to work aren't unpleasantly surprised.
3616 In[5] or Out[7] to work aren't unpleasantly surprised.
3611 (InputList.__getslice__): new class to allow executing slices of
3617 (InputList.__getslice__): new class to allow executing slices of
3612 input history directly. Very simple class, complements the use of
3618 input history directly. Very simple class, complements the use of
3613 macros.
3619 macros.
3614
3620
3615 2002-05-16 Fernando Perez <fperez@colorado.edu>
3621 2002-05-16 Fernando Perez <fperez@colorado.edu>
3616
3622
3617 * setup.py (docdirbase): make doc directory be just doc/IPython
3623 * setup.py (docdirbase): make doc directory be just doc/IPython
3618 without version numbers, it will reduce clutter for users.
3624 without version numbers, it will reduce clutter for users.
3619
3625
3620 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3626 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3621 execfile call to prevent possible memory leak. See for details:
3627 execfile call to prevent possible memory leak. See for details:
3622 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3628 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3623
3629
3624 2002-05-15 Fernando Perez <fperez@colorado.edu>
3630 2002-05-15 Fernando Perez <fperez@colorado.edu>
3625
3631
3626 * IPython/Magic.py (Magic.magic_psource): made the object
3632 * IPython/Magic.py (Magic.magic_psource): made the object
3627 introspection names be more standard: pdoc, pdef, pfile and
3633 introspection names be more standard: pdoc, pdef, pfile and
3628 psource. They all print/page their output, and it makes
3634 psource. They all print/page their output, and it makes
3629 remembering them easier. Kept old names for compatibility as
3635 remembering them easier. Kept old names for compatibility as
3630 aliases.
3636 aliases.
3631
3637
3632 2002-05-14 Fernando Perez <fperez@colorado.edu>
3638 2002-05-14 Fernando Perez <fperez@colorado.edu>
3633
3639
3634 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3640 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3635 what the mouse problem was. The trick is to use gnuplot with temp
3641 what the mouse problem was. The trick is to use gnuplot with temp
3636 files and NOT with pipes (for data communication), because having
3642 files and NOT with pipes (for data communication), because having
3637 both pipes and the mouse on is bad news.
3643 both pipes and the mouse on is bad news.
3638
3644
3639 2002-05-13 Fernando Perez <fperez@colorado.edu>
3645 2002-05-13 Fernando Perez <fperez@colorado.edu>
3640
3646
3641 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3647 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3642 bug. Information would be reported about builtins even when
3648 bug. Information would be reported about builtins even when
3643 user-defined functions overrode them.
3649 user-defined functions overrode them.
3644
3650
3645 2002-05-11 Fernando Perez <fperez@colorado.edu>
3651 2002-05-11 Fernando Perez <fperez@colorado.edu>
3646
3652
3647 * IPython/__init__.py (__all__): removed FlexCompleter from
3653 * IPython/__init__.py (__all__): removed FlexCompleter from
3648 __all__ so that things don't fail in platforms without readline.
3654 __all__ so that things don't fail in platforms without readline.
3649
3655
3650 2002-05-10 Fernando Perez <fperez@colorado.edu>
3656 2002-05-10 Fernando Perez <fperez@colorado.edu>
3651
3657
3652 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3658 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3653 it requires Numeric, effectively making Numeric a dependency for
3659 it requires Numeric, effectively making Numeric a dependency for
3654 IPython.
3660 IPython.
3655
3661
3656 * Released 0.2.13
3662 * Released 0.2.13
3657
3663
3658 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3664 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3659 profiler interface. Now all the major options from the profiler
3665 profiler interface. Now all the major options from the profiler
3660 module are directly supported in IPython, both for single
3666 module are directly supported in IPython, both for single
3661 expressions (@prun) and for full programs (@run -p).
3667 expressions (@prun) and for full programs (@run -p).
3662
3668
3663 2002-05-09 Fernando Perez <fperez@colorado.edu>
3669 2002-05-09 Fernando Perez <fperez@colorado.edu>
3664
3670
3665 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3671 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3666 magic properly formatted for screen.
3672 magic properly formatted for screen.
3667
3673
3668 * setup.py (make_shortcut): Changed things to put pdf version in
3674 * setup.py (make_shortcut): Changed things to put pdf version in
3669 doc/ instead of doc/manual (had to change lyxport a bit).
3675 doc/ instead of doc/manual (had to change lyxport a bit).
3670
3676
3671 * IPython/Magic.py (Profile.string_stats): made profile runs go
3677 * IPython/Magic.py (Profile.string_stats): made profile runs go
3672 through pager (they are long and a pager allows searching, saving,
3678 through pager (they are long and a pager allows searching, saving,
3673 etc.)
3679 etc.)
3674
3680
3675 2002-05-08 Fernando Perez <fperez@colorado.edu>
3681 2002-05-08 Fernando Perez <fperez@colorado.edu>
3676
3682
3677 * Released 0.2.12
3683 * Released 0.2.12
3678
3684
3679 2002-05-06 Fernando Perez <fperez@colorado.edu>
3685 2002-05-06 Fernando Perez <fperez@colorado.edu>
3680
3686
3681 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3687 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3682 introduced); 'hist n1 n2' was broken.
3688 introduced); 'hist n1 n2' was broken.
3683 (Magic.magic_pdb): added optional on/off arguments to @pdb
3689 (Magic.magic_pdb): added optional on/off arguments to @pdb
3684 (Magic.magic_run): added option -i to @run, which executes code in
3690 (Magic.magic_run): added option -i to @run, which executes code in
3685 the IPython namespace instead of a clean one. Also added @irun as
3691 the IPython namespace instead of a clean one. Also added @irun as
3686 an alias to @run -i.
3692 an alias to @run -i.
3687
3693
3688 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3694 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3689 fixed (it didn't really do anything, the namespaces were wrong).
3695 fixed (it didn't really do anything, the namespaces were wrong).
3690
3696
3691 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3697 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3692
3698
3693 * IPython/__init__.py (__all__): Fixed package namespace, now
3699 * IPython/__init__.py (__all__): Fixed package namespace, now
3694 'import IPython' does give access to IPython.<all> as
3700 'import IPython' does give access to IPython.<all> as
3695 expected. Also renamed __release__ to Release.
3701 expected. Also renamed __release__ to Release.
3696
3702
3697 * IPython/Debugger.py (__license__): created new Pdb class which
3703 * IPython/Debugger.py (__license__): created new Pdb class which
3698 functions like a drop-in for the normal pdb.Pdb but does NOT
3704 functions like a drop-in for the normal pdb.Pdb but does NOT
3699 import readline by default. This way it doesn't muck up IPython's
3705 import readline by default. This way it doesn't muck up IPython's
3700 readline handling, and now tab-completion finally works in the
3706 readline handling, and now tab-completion finally works in the
3701 debugger -- sort of. It completes things globally visible, but the
3707 debugger -- sort of. It completes things globally visible, but the
3702 completer doesn't track the stack as pdb walks it. That's a bit
3708 completer doesn't track the stack as pdb walks it. That's a bit
3703 tricky, and I'll have to implement it later.
3709 tricky, and I'll have to implement it later.
3704
3710
3705 2002-05-05 Fernando Perez <fperez@colorado.edu>
3711 2002-05-05 Fernando Perez <fperez@colorado.edu>
3706
3712
3707 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3713 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3708 magic docstrings when printed via ? (explicit \'s were being
3714 magic docstrings when printed via ? (explicit \'s were being
3709 printed).
3715 printed).
3710
3716
3711 * IPython/ipmaker.py (make_IPython): fixed namespace
3717 * IPython/ipmaker.py (make_IPython): fixed namespace
3712 identification bug. Now variables loaded via logs or command-line
3718 identification bug. Now variables loaded via logs or command-line
3713 files are recognized in the interactive namespace by @who.
3719 files are recognized in the interactive namespace by @who.
3714
3720
3715 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3721 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3716 log replay system stemming from the string form of Structs.
3722 log replay system stemming from the string form of Structs.
3717
3723
3718 * IPython/Magic.py (Macro.__init__): improved macros to properly
3724 * IPython/Magic.py (Macro.__init__): improved macros to properly
3719 handle magic commands in them.
3725 handle magic commands in them.
3720 (Magic.magic_logstart): usernames are now expanded so 'logstart
3726 (Magic.magic_logstart): usernames are now expanded so 'logstart
3721 ~/mylog' now works.
3727 ~/mylog' now works.
3722
3728
3723 * IPython/iplib.py (complete): fixed bug where paths starting with
3729 * IPython/iplib.py (complete): fixed bug where paths starting with
3724 '/' would be completed as magic names.
3730 '/' would be completed as magic names.
3725
3731
3726 2002-05-04 Fernando Perez <fperez@colorado.edu>
3732 2002-05-04 Fernando Perez <fperez@colorado.edu>
3727
3733
3728 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3734 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3729 allow running full programs under the profiler's control.
3735 allow running full programs under the profiler's control.
3730
3736
3731 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3737 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3732 mode to report exceptions verbosely but without formatting
3738 mode to report exceptions verbosely but without formatting
3733 variables. This addresses the issue of ipython 'freezing' (it's
3739 variables. This addresses the issue of ipython 'freezing' (it's
3734 not frozen, but caught in an expensive formatting loop) when huge
3740 not frozen, but caught in an expensive formatting loop) when huge
3735 variables are in the context of an exception.
3741 variables are in the context of an exception.
3736 (VerboseTB.text): Added '--->' markers at line where exception was
3742 (VerboseTB.text): Added '--->' markers at line where exception was
3737 triggered. Much clearer to read, especially in NoColor modes.
3743 triggered. Much clearer to read, especially in NoColor modes.
3738
3744
3739 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3745 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3740 implemented in reverse when changing to the new parse_options().
3746 implemented in reverse when changing to the new parse_options().
3741
3747
3742 2002-05-03 Fernando Perez <fperez@colorado.edu>
3748 2002-05-03 Fernando Perez <fperez@colorado.edu>
3743
3749
3744 * IPython/Magic.py (Magic.parse_options): new function so that
3750 * IPython/Magic.py (Magic.parse_options): new function so that
3745 magics can parse options easier.
3751 magics can parse options easier.
3746 (Magic.magic_prun): new function similar to profile.run(),
3752 (Magic.magic_prun): new function similar to profile.run(),
3747 suggested by Chris Hart.
3753 suggested by Chris Hart.
3748 (Magic.magic_cd): fixed behavior so that it only changes if
3754 (Magic.magic_cd): fixed behavior so that it only changes if
3749 directory actually is in history.
3755 directory actually is in history.
3750
3756
3751 * IPython/usage.py (__doc__): added information about potential
3757 * IPython/usage.py (__doc__): added information about potential
3752 slowness of Verbose exception mode when there are huge data
3758 slowness of Verbose exception mode when there are huge data
3753 structures to be formatted (thanks to Archie Paulson).
3759 structures to be formatted (thanks to Archie Paulson).
3754
3760
3755 * IPython/ipmaker.py (make_IPython): Changed default logging
3761 * IPython/ipmaker.py (make_IPython): Changed default logging
3756 (when simply called with -log) to use curr_dir/ipython.log in
3762 (when simply called with -log) to use curr_dir/ipython.log in
3757 rotate mode. Fixed crash which was occuring with -log before
3763 rotate mode. Fixed crash which was occuring with -log before
3758 (thanks to Jim Boyle).
3764 (thanks to Jim Boyle).
3759
3765
3760 2002-05-01 Fernando Perez <fperez@colorado.edu>
3766 2002-05-01 Fernando Perez <fperez@colorado.edu>
3761
3767
3762 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3768 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3763 was nasty -- though somewhat of a corner case).
3769 was nasty -- though somewhat of a corner case).
3764
3770
3765 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3771 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3766 text (was a bug).
3772 text (was a bug).
3767
3773
3768 2002-04-30 Fernando Perez <fperez@colorado.edu>
3774 2002-04-30 Fernando Perez <fperez@colorado.edu>
3769
3775
3770 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3776 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3771 a print after ^D or ^C from the user so that the In[] prompt
3777 a print after ^D or ^C from the user so that the In[] prompt
3772 doesn't over-run the gnuplot one.
3778 doesn't over-run the gnuplot one.
3773
3779
3774 2002-04-29 Fernando Perez <fperez@colorado.edu>
3780 2002-04-29 Fernando Perez <fperez@colorado.edu>
3775
3781
3776 * Released 0.2.10
3782 * Released 0.2.10
3777
3783
3778 * IPython/__release__.py (version): get date dynamically.
3784 * IPython/__release__.py (version): get date dynamically.
3779
3785
3780 * Misc. documentation updates thanks to Arnd's comments. Also ran
3786 * Misc. documentation updates thanks to Arnd's comments. Also ran
3781 a full spellcheck on the manual (hadn't been done in a while).
3787 a full spellcheck on the manual (hadn't been done in a while).
3782
3788
3783 2002-04-27 Fernando Perez <fperez@colorado.edu>
3789 2002-04-27 Fernando Perez <fperez@colorado.edu>
3784
3790
3785 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3791 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3786 starting a log in mid-session would reset the input history list.
3792 starting a log in mid-session would reset the input history list.
3787
3793
3788 2002-04-26 Fernando Perez <fperez@colorado.edu>
3794 2002-04-26 Fernando Perez <fperez@colorado.edu>
3789
3795
3790 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3796 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3791 all files were being included in an update. Now anything in
3797 all files were being included in an update. Now anything in
3792 UserConfig that matches [A-Za-z]*.py will go (this excludes
3798 UserConfig that matches [A-Za-z]*.py will go (this excludes
3793 __init__.py)
3799 __init__.py)
3794
3800
3795 2002-04-25 Fernando Perez <fperez@colorado.edu>
3801 2002-04-25 Fernando Perez <fperez@colorado.edu>
3796
3802
3797 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3803 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3798 to __builtins__ so that any form of embedded or imported code can
3804 to __builtins__ so that any form of embedded or imported code can
3799 test for being inside IPython.
3805 test for being inside IPython.
3800
3806
3801 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3807 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3802 changed to GnuplotMagic because it's now an importable module,
3808 changed to GnuplotMagic because it's now an importable module,
3803 this makes the name follow that of the standard Gnuplot module.
3809 this makes the name follow that of the standard Gnuplot module.
3804 GnuplotMagic can now be loaded at any time in mid-session.
3810 GnuplotMagic can now be loaded at any time in mid-session.
3805
3811
3806 2002-04-24 Fernando Perez <fperez@colorado.edu>
3812 2002-04-24 Fernando Perez <fperez@colorado.edu>
3807
3813
3808 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3814 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3809 the globals (IPython has its own namespace) and the
3815 the globals (IPython has its own namespace) and the
3810 PhysicalQuantity stuff is much better anyway.
3816 PhysicalQuantity stuff is much better anyway.
3811
3817
3812 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3818 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3813 embedding example to standard user directory for
3819 embedding example to standard user directory for
3814 distribution. Also put it in the manual.
3820 distribution. Also put it in the manual.
3815
3821
3816 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3822 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3817 instance as first argument (so it doesn't rely on some obscure
3823 instance as first argument (so it doesn't rely on some obscure
3818 hidden global).
3824 hidden global).
3819
3825
3820 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3826 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3821 delimiters. While it prevents ().TAB from working, it allows
3827 delimiters. While it prevents ().TAB from working, it allows
3822 completions in open (... expressions. This is by far a more common
3828 completions in open (... expressions. This is by far a more common
3823 case.
3829 case.
3824
3830
3825 2002-04-23 Fernando Perez <fperez@colorado.edu>
3831 2002-04-23 Fernando Perez <fperez@colorado.edu>
3826
3832
3827 * IPython/Extensions/InterpreterPasteInput.py: new
3833 * IPython/Extensions/InterpreterPasteInput.py: new
3828 syntax-processing module for pasting lines with >>> or ... at the
3834 syntax-processing module for pasting lines with >>> or ... at the
3829 start.
3835 start.
3830
3836
3831 * IPython/Extensions/PhysicalQ_Interactive.py
3837 * IPython/Extensions/PhysicalQ_Interactive.py
3832 (PhysicalQuantityInteractive.__int__): fixed to work with either
3838 (PhysicalQuantityInteractive.__int__): fixed to work with either
3833 Numeric or math.
3839 Numeric or math.
3834
3840
3835 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3841 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3836 provided profiles. Now we have:
3842 provided profiles. Now we have:
3837 -math -> math module as * and cmath with its own namespace.
3843 -math -> math module as * and cmath with its own namespace.
3838 -numeric -> Numeric as *, plus gnuplot & grace
3844 -numeric -> Numeric as *, plus gnuplot & grace
3839 -physics -> same as before
3845 -physics -> same as before
3840
3846
3841 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3847 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3842 user-defined magics wouldn't be found by @magic if they were
3848 user-defined magics wouldn't be found by @magic if they were
3843 defined as class methods. Also cleaned up the namespace search
3849 defined as class methods. Also cleaned up the namespace search
3844 logic and the string building (to use %s instead of many repeated
3850 logic and the string building (to use %s instead of many repeated
3845 string adds).
3851 string adds).
3846
3852
3847 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3853 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3848 of user-defined magics to operate with class methods (cleaner, in
3854 of user-defined magics to operate with class methods (cleaner, in
3849 line with the gnuplot code).
3855 line with the gnuplot code).
3850
3856
3851 2002-04-22 Fernando Perez <fperez@colorado.edu>
3857 2002-04-22 Fernando Perez <fperez@colorado.edu>
3852
3858
3853 * setup.py: updated dependency list so that manual is updated when
3859 * setup.py: updated dependency list so that manual is updated when
3854 all included files change.
3860 all included files change.
3855
3861
3856 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3862 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3857 the delimiter removal option (the fix is ugly right now).
3863 the delimiter removal option (the fix is ugly right now).
3858
3864
3859 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3865 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3860 all of the math profile (quicker loading, no conflict between
3866 all of the math profile (quicker loading, no conflict between
3861 g-9.8 and g-gnuplot).
3867 g-9.8 and g-gnuplot).
3862
3868
3863 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3869 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3864 name of post-mortem files to IPython_crash_report.txt.
3870 name of post-mortem files to IPython_crash_report.txt.
3865
3871
3866 * Cleanup/update of the docs. Added all the new readline info and
3872 * Cleanup/update of the docs. Added all the new readline info and
3867 formatted all lists as 'real lists'.
3873 formatted all lists as 'real lists'.
3868
3874
3869 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3875 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3870 tab-completion options, since the full readline parse_and_bind is
3876 tab-completion options, since the full readline parse_and_bind is
3871 now accessible.
3877 now accessible.
3872
3878
3873 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3879 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3874 handling of readline options. Now users can specify any string to
3880 handling of readline options. Now users can specify any string to
3875 be passed to parse_and_bind(), as well as the delimiters to be
3881 be passed to parse_and_bind(), as well as the delimiters to be
3876 removed.
3882 removed.
3877 (InteractiveShell.__init__): Added __name__ to the global
3883 (InteractiveShell.__init__): Added __name__ to the global
3878 namespace so that things like Itpl which rely on its existence
3884 namespace so that things like Itpl which rely on its existence
3879 don't crash.
3885 don't crash.
3880 (InteractiveShell._prefilter): Defined the default with a _ so
3886 (InteractiveShell._prefilter): Defined the default with a _ so
3881 that prefilter() is easier to override, while the default one
3887 that prefilter() is easier to override, while the default one
3882 remains available.
3888 remains available.
3883
3889
3884 2002-04-18 Fernando Perez <fperez@colorado.edu>
3890 2002-04-18 Fernando Perez <fperez@colorado.edu>
3885
3891
3886 * Added information about pdb in the docs.
3892 * Added information about pdb in the docs.
3887
3893
3888 2002-04-17 Fernando Perez <fperez@colorado.edu>
3894 2002-04-17 Fernando Perez <fperez@colorado.edu>
3889
3895
3890 * IPython/ipmaker.py (make_IPython): added rc_override option to
3896 * IPython/ipmaker.py (make_IPython): added rc_override option to
3891 allow passing config options at creation time which may override
3897 allow passing config options at creation time which may override
3892 anything set in the config files or command line. This is
3898 anything set in the config files or command line. This is
3893 particularly useful for configuring embedded instances.
3899 particularly useful for configuring embedded instances.
3894
3900
3895 2002-04-15 Fernando Perez <fperez@colorado.edu>
3901 2002-04-15 Fernando Perez <fperez@colorado.edu>
3896
3902
3897 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3903 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3898 crash embedded instances because of the input cache falling out of
3904 crash embedded instances because of the input cache falling out of
3899 sync with the output counter.
3905 sync with the output counter.
3900
3906
3901 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3907 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3902 mode which calls pdb after an uncaught exception in IPython itself.
3908 mode which calls pdb after an uncaught exception in IPython itself.
3903
3909
3904 2002-04-14 Fernando Perez <fperez@colorado.edu>
3910 2002-04-14 Fernando Perez <fperez@colorado.edu>
3905
3911
3906 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3912 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3907 readline, fix it back after each call.
3913 readline, fix it back after each call.
3908
3914
3909 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3915 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3910 method to force all access via __call__(), which guarantees that
3916 method to force all access via __call__(), which guarantees that
3911 traceback references are properly deleted.
3917 traceback references are properly deleted.
3912
3918
3913 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3919 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3914 improve printing when pprint is in use.
3920 improve printing when pprint is in use.
3915
3921
3916 2002-04-13 Fernando Perez <fperez@colorado.edu>
3922 2002-04-13 Fernando Perez <fperez@colorado.edu>
3917
3923
3918 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3924 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3919 exceptions aren't caught anymore. If the user triggers one, he
3925 exceptions aren't caught anymore. If the user triggers one, he
3920 should know why he's doing it and it should go all the way up,
3926 should know why he's doing it and it should go all the way up,
3921 just like any other exception. So now @abort will fully kill the
3927 just like any other exception. So now @abort will fully kill the
3922 embedded interpreter and the embedding code (unless that happens
3928 embedded interpreter and the embedding code (unless that happens
3923 to catch SystemExit).
3929 to catch SystemExit).
3924
3930
3925 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3931 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3926 and a debugger() method to invoke the interactive pdb debugger
3932 and a debugger() method to invoke the interactive pdb debugger
3927 after printing exception information. Also added the corresponding
3933 after printing exception information. Also added the corresponding
3928 -pdb option and @pdb magic to control this feature, and updated
3934 -pdb option and @pdb magic to control this feature, and updated
3929 the docs. After a suggestion from Christopher Hart
3935 the docs. After a suggestion from Christopher Hart
3930 (hart-AT-caltech.edu).
3936 (hart-AT-caltech.edu).
3931
3937
3932 2002-04-12 Fernando Perez <fperez@colorado.edu>
3938 2002-04-12 Fernando Perez <fperez@colorado.edu>
3933
3939
3934 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3940 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3935 the exception handlers defined by the user (not the CrashHandler)
3941 the exception handlers defined by the user (not the CrashHandler)
3936 so that user exceptions don't trigger an ipython bug report.
3942 so that user exceptions don't trigger an ipython bug report.
3937
3943
3938 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3944 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3939 configurable (it should have always been so).
3945 configurable (it should have always been so).
3940
3946
3941 2002-03-26 Fernando Perez <fperez@colorado.edu>
3947 2002-03-26 Fernando Perez <fperez@colorado.edu>
3942
3948
3943 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3949 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3944 and there to fix embedding namespace issues. This should all be
3950 and there to fix embedding namespace issues. This should all be
3945 done in a more elegant way.
3951 done in a more elegant way.
3946
3952
3947 2002-03-25 Fernando Perez <fperez@colorado.edu>
3953 2002-03-25 Fernando Perez <fperez@colorado.edu>
3948
3954
3949 * IPython/genutils.py (get_home_dir): Try to make it work under
3955 * IPython/genutils.py (get_home_dir): Try to make it work under
3950 win9x also.
3956 win9x also.
3951
3957
3952 2002-03-20 Fernando Perez <fperez@colorado.edu>
3958 2002-03-20 Fernando Perez <fperez@colorado.edu>
3953
3959
3954 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3960 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3955 sys.displayhook untouched upon __init__.
3961 sys.displayhook untouched upon __init__.
3956
3962
3957 2002-03-19 Fernando Perez <fperez@colorado.edu>
3963 2002-03-19 Fernando Perez <fperez@colorado.edu>
3958
3964
3959 * Released 0.2.9 (for embedding bug, basically).
3965 * Released 0.2.9 (for embedding bug, basically).
3960
3966
3961 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3967 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3962 exceptions so that enclosing shell's state can be restored.
3968 exceptions so that enclosing shell's state can be restored.
3963
3969
3964 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3970 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3965 naming conventions in the .ipython/ dir.
3971 naming conventions in the .ipython/ dir.
3966
3972
3967 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3973 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3968 from delimiters list so filenames with - in them get expanded.
3974 from delimiters list so filenames with - in them get expanded.
3969
3975
3970 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3976 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3971 sys.displayhook not being properly restored after an embedded call.
3977 sys.displayhook not being properly restored after an embedded call.
3972
3978
3973 2002-03-18 Fernando Perez <fperez@colorado.edu>
3979 2002-03-18 Fernando Perez <fperez@colorado.edu>
3974
3980
3975 * Released 0.2.8
3981 * Released 0.2.8
3976
3982
3977 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3983 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3978 some files weren't being included in a -upgrade.
3984 some files weren't being included in a -upgrade.
3979 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3985 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3980 on' so that the first tab completes.
3986 on' so that the first tab completes.
3981 (InteractiveShell.handle_magic): fixed bug with spaces around
3987 (InteractiveShell.handle_magic): fixed bug with spaces around
3982 quotes breaking many magic commands.
3988 quotes breaking many magic commands.
3983
3989
3984 * setup.py: added note about ignoring the syntax error messages at
3990 * setup.py: added note about ignoring the syntax error messages at
3985 installation.
3991 installation.
3986
3992
3987 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3993 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3988 streamlining the gnuplot interface, now there's only one magic @gp.
3994 streamlining the gnuplot interface, now there's only one magic @gp.
3989
3995
3990 2002-03-17 Fernando Perez <fperez@colorado.edu>
3996 2002-03-17 Fernando Perez <fperez@colorado.edu>
3991
3997
3992 * IPython/UserConfig/magic_gnuplot.py: new name for the
3998 * IPython/UserConfig/magic_gnuplot.py: new name for the
3993 example-magic_pm.py file. Much enhanced system, now with a shell
3999 example-magic_pm.py file. Much enhanced system, now with a shell
3994 for communicating directly with gnuplot, one command at a time.
4000 for communicating directly with gnuplot, one command at a time.
3995
4001
3996 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4002 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3997 setting __name__=='__main__'.
4003 setting __name__=='__main__'.
3998
4004
3999 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4005 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4000 mini-shell for accessing gnuplot from inside ipython. Should
4006 mini-shell for accessing gnuplot from inside ipython. Should
4001 extend it later for grace access too. Inspired by Arnd's
4007 extend it later for grace access too. Inspired by Arnd's
4002 suggestion.
4008 suggestion.
4003
4009
4004 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4010 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4005 calling magic functions with () in their arguments. Thanks to Arnd
4011 calling magic functions with () in their arguments. Thanks to Arnd
4006 Baecker for pointing this to me.
4012 Baecker for pointing this to me.
4007
4013
4008 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4014 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4009 infinitely for integer or complex arrays (only worked with floats).
4015 infinitely for integer or complex arrays (only worked with floats).
4010
4016
4011 2002-03-16 Fernando Perez <fperez@colorado.edu>
4017 2002-03-16 Fernando Perez <fperez@colorado.edu>
4012
4018
4013 * setup.py: Merged setup and setup_windows into a single script
4019 * setup.py: Merged setup and setup_windows into a single script
4014 which properly handles things for windows users.
4020 which properly handles things for windows users.
4015
4021
4016 2002-03-15 Fernando Perez <fperez@colorado.edu>
4022 2002-03-15 Fernando Perez <fperez@colorado.edu>
4017
4023
4018 * Big change to the manual: now the magics are all automatically
4024 * Big change to the manual: now the magics are all automatically
4019 documented. This information is generated from their docstrings
4025 documented. This information is generated from their docstrings
4020 and put in a latex file included by the manual lyx file. This way
4026 and put in a latex file included by the manual lyx file. This way
4021 we get always up to date information for the magics. The manual
4027 we get always up to date information for the magics. The manual
4022 now also has proper version information, also auto-synced.
4028 now also has proper version information, also auto-synced.
4023
4029
4024 For this to work, an undocumented --magic_docstrings option was added.
4030 For this to work, an undocumented --magic_docstrings option was added.
4025
4031
4026 2002-03-13 Fernando Perez <fperez@colorado.edu>
4032 2002-03-13 Fernando Perez <fperez@colorado.edu>
4027
4033
4028 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4034 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4029 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4035 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4030
4036
4031 2002-03-12 Fernando Perez <fperez@colorado.edu>
4037 2002-03-12 Fernando Perez <fperez@colorado.edu>
4032
4038
4033 * IPython/ultraTB.py (TermColors): changed color escapes again to
4039 * IPython/ultraTB.py (TermColors): changed color escapes again to
4034 fix the (old, reintroduced) line-wrapping bug. Basically, if
4040 fix the (old, reintroduced) line-wrapping bug. Basically, if
4035 \001..\002 aren't given in the color escapes, lines get wrapped
4041 \001..\002 aren't given in the color escapes, lines get wrapped
4036 weirdly. But giving those screws up old xterms and emacs terms. So
4042 weirdly. But giving those screws up old xterms and emacs terms. So
4037 I added some logic for emacs terms to be ok, but I can't identify old
4043 I added some logic for emacs terms to be ok, but I can't identify old
4038 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4044 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4039
4045
4040 2002-03-10 Fernando Perez <fperez@colorado.edu>
4046 2002-03-10 Fernando Perez <fperez@colorado.edu>
4041
4047
4042 * IPython/usage.py (__doc__): Various documentation cleanups and
4048 * IPython/usage.py (__doc__): Various documentation cleanups and
4043 updates, both in usage docstrings and in the manual.
4049 updates, both in usage docstrings and in the manual.
4044
4050
4045 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4051 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4046 handling of caching. Set minimum acceptabe value for having a
4052 handling of caching. Set minimum acceptabe value for having a
4047 cache at 20 values.
4053 cache at 20 values.
4048
4054
4049 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4055 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4050 install_first_time function to a method, renamed it and added an
4056 install_first_time function to a method, renamed it and added an
4051 'upgrade' mode. Now people can update their config directory with
4057 'upgrade' mode. Now people can update their config directory with
4052 a simple command line switch (-upgrade, also new).
4058 a simple command line switch (-upgrade, also new).
4053
4059
4054 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4060 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4055 @file (convenient for automagic users under Python >= 2.2).
4061 @file (convenient for automagic users under Python >= 2.2).
4056 Removed @files (it seemed more like a plural than an abbrev. of
4062 Removed @files (it seemed more like a plural than an abbrev. of
4057 'file show').
4063 'file show').
4058
4064
4059 * IPython/iplib.py (install_first_time): Fixed crash if there were
4065 * IPython/iplib.py (install_first_time): Fixed crash if there were
4060 backup files ('~') in .ipython/ install directory.
4066 backup files ('~') in .ipython/ install directory.
4061
4067
4062 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4068 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4063 system. Things look fine, but these changes are fairly
4069 system. Things look fine, but these changes are fairly
4064 intrusive. Test them for a few days.
4070 intrusive. Test them for a few days.
4065
4071
4066 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4072 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4067 the prompts system. Now all in/out prompt strings are user
4073 the prompts system. Now all in/out prompt strings are user
4068 controllable. This is particularly useful for embedding, as one
4074 controllable. This is particularly useful for embedding, as one
4069 can tag embedded instances with particular prompts.
4075 can tag embedded instances with particular prompts.
4070
4076
4071 Also removed global use of sys.ps1/2, which now allows nested
4077 Also removed global use of sys.ps1/2, which now allows nested
4072 embeddings without any problems. Added command-line options for
4078 embeddings without any problems. Added command-line options for
4073 the prompt strings.
4079 the prompt strings.
4074
4080
4075 2002-03-08 Fernando Perez <fperez@colorado.edu>
4081 2002-03-08 Fernando Perez <fperez@colorado.edu>
4076
4082
4077 * IPython/UserConfig/example-embed-short.py (ipshell): added
4083 * IPython/UserConfig/example-embed-short.py (ipshell): added
4078 example file with the bare minimum code for embedding.
4084 example file with the bare minimum code for embedding.
4079
4085
4080 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4086 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4081 functionality for the embeddable shell to be activated/deactivated
4087 functionality for the embeddable shell to be activated/deactivated
4082 either globally or at each call.
4088 either globally or at each call.
4083
4089
4084 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4090 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4085 rewriting the prompt with '--->' for auto-inputs with proper
4091 rewriting the prompt with '--->' for auto-inputs with proper
4086 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4092 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4087 this is handled by the prompts class itself, as it should.
4093 this is handled by the prompts class itself, as it should.
4088
4094
4089 2002-03-05 Fernando Perez <fperez@colorado.edu>
4095 2002-03-05 Fernando Perez <fperez@colorado.edu>
4090
4096
4091 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4097 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4092 @logstart to avoid name clashes with the math log function.
4098 @logstart to avoid name clashes with the math log function.
4093
4099
4094 * Big updates to X/Emacs section of the manual.
4100 * Big updates to X/Emacs section of the manual.
4095
4101
4096 * Removed ipython_emacs. Milan explained to me how to pass
4102 * Removed ipython_emacs. Milan explained to me how to pass
4097 arguments to ipython through Emacs. Some day I'm going to end up
4103 arguments to ipython through Emacs. Some day I'm going to end up
4098 learning some lisp...
4104 learning some lisp...
4099
4105
4100 2002-03-04 Fernando Perez <fperez@colorado.edu>
4106 2002-03-04 Fernando Perez <fperez@colorado.edu>
4101
4107
4102 * IPython/ipython_emacs: Created script to be used as the
4108 * IPython/ipython_emacs: Created script to be used as the
4103 py-python-command Emacs variable so we can pass IPython
4109 py-python-command Emacs variable so we can pass IPython
4104 parameters. I can't figure out how to tell Emacs directly to pass
4110 parameters. I can't figure out how to tell Emacs directly to pass
4105 parameters to IPython, so a dummy shell script will do it.
4111 parameters to IPython, so a dummy shell script will do it.
4106
4112
4107 Other enhancements made for things to work better under Emacs'
4113 Other enhancements made for things to work better under Emacs'
4108 various types of terminals. Many thanks to Milan Zamazal
4114 various types of terminals. Many thanks to Milan Zamazal
4109 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4115 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4110
4116
4111 2002-03-01 Fernando Perez <fperez@colorado.edu>
4117 2002-03-01 Fernando Perez <fperez@colorado.edu>
4112
4118
4113 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4119 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4114 that loading of readline is now optional. This gives better
4120 that loading of readline is now optional. This gives better
4115 control to emacs users.
4121 control to emacs users.
4116
4122
4117 * IPython/ultraTB.py (__date__): Modified color escape sequences
4123 * IPython/ultraTB.py (__date__): Modified color escape sequences
4118 and now things work fine under xterm and in Emacs' term buffers
4124 and now things work fine under xterm and in Emacs' term buffers
4119 (though not shell ones). Well, in emacs you get colors, but all
4125 (though not shell ones). Well, in emacs you get colors, but all
4120 seem to be 'light' colors (no difference between dark and light
4126 seem to be 'light' colors (no difference between dark and light
4121 ones). But the garbage chars are gone, and also in xterms. It
4127 ones). But the garbage chars are gone, and also in xterms. It
4122 seems that now I'm using 'cleaner' ansi sequences.
4128 seems that now I'm using 'cleaner' ansi sequences.
4123
4129
4124 2002-02-21 Fernando Perez <fperez@colorado.edu>
4130 2002-02-21 Fernando Perez <fperez@colorado.edu>
4125
4131
4126 * Released 0.2.7 (mainly to publish the scoping fix).
4132 * Released 0.2.7 (mainly to publish the scoping fix).
4127
4133
4128 * IPython/Logger.py (Logger.logstate): added. A corresponding
4134 * IPython/Logger.py (Logger.logstate): added. A corresponding
4129 @logstate magic was created.
4135 @logstate magic was created.
4130
4136
4131 * IPython/Magic.py: fixed nested scoping problem under Python
4137 * IPython/Magic.py: fixed nested scoping problem under Python
4132 2.1.x (automagic wasn't working).
4138 2.1.x (automagic wasn't working).
4133
4139
4134 2002-02-20 Fernando Perez <fperez@colorado.edu>
4140 2002-02-20 Fernando Perez <fperez@colorado.edu>
4135
4141
4136 * Released 0.2.6.
4142 * Released 0.2.6.
4137
4143
4138 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4144 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4139 option so that logs can come out without any headers at all.
4145 option so that logs can come out without any headers at all.
4140
4146
4141 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4147 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4142 SciPy.
4148 SciPy.
4143
4149
4144 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4150 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4145 that embedded IPython calls don't require vars() to be explicitly
4151 that embedded IPython calls don't require vars() to be explicitly
4146 passed. Now they are extracted from the caller's frame (code
4152 passed. Now they are extracted from the caller's frame (code
4147 snatched from Eric Jones' weave). Added better documentation to
4153 snatched from Eric Jones' weave). Added better documentation to
4148 the section on embedding and the example file.
4154 the section on embedding and the example file.
4149
4155
4150 * IPython/genutils.py (page): Changed so that under emacs, it just
4156 * IPython/genutils.py (page): Changed so that under emacs, it just
4151 prints the string. You can then page up and down in the emacs
4157 prints the string. You can then page up and down in the emacs
4152 buffer itself. This is how the builtin help() works.
4158 buffer itself. This is how the builtin help() works.
4153
4159
4154 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4160 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4155 macro scoping: macros need to be executed in the user's namespace
4161 macro scoping: macros need to be executed in the user's namespace
4156 to work as if they had been typed by the user.
4162 to work as if they had been typed by the user.
4157
4163
4158 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4164 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4159 execute automatically (no need to type 'exec...'). They then
4165 execute automatically (no need to type 'exec...'). They then
4160 behave like 'true macros'. The printing system was also modified
4166 behave like 'true macros'. The printing system was also modified
4161 for this to work.
4167 for this to work.
4162
4168
4163 2002-02-19 Fernando Perez <fperez@colorado.edu>
4169 2002-02-19 Fernando Perez <fperez@colorado.edu>
4164
4170
4165 * IPython/genutils.py (page_file): new function for paging files
4171 * IPython/genutils.py (page_file): new function for paging files
4166 in an OS-independent way. Also necessary for file viewing to work
4172 in an OS-independent way. Also necessary for file viewing to work
4167 well inside Emacs buffers.
4173 well inside Emacs buffers.
4168 (page): Added checks for being in an emacs buffer.
4174 (page): Added checks for being in an emacs buffer.
4169 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4175 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4170 same bug in iplib.
4176 same bug in iplib.
4171
4177
4172 2002-02-18 Fernando Perez <fperez@colorado.edu>
4178 2002-02-18 Fernando Perez <fperez@colorado.edu>
4173
4179
4174 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4180 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4175 of readline so that IPython can work inside an Emacs buffer.
4181 of readline so that IPython can work inside an Emacs buffer.
4176
4182
4177 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4183 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4178 method signatures (they weren't really bugs, but it looks cleaner
4184 method signatures (they weren't really bugs, but it looks cleaner
4179 and keeps PyChecker happy).
4185 and keeps PyChecker happy).
4180
4186
4181 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4187 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4182 for implementing various user-defined hooks. Currently only
4188 for implementing various user-defined hooks. Currently only
4183 display is done.
4189 display is done.
4184
4190
4185 * IPython/Prompts.py (CachedOutput._display): changed display
4191 * IPython/Prompts.py (CachedOutput._display): changed display
4186 functions so that they can be dynamically changed by users easily.
4192 functions so that they can be dynamically changed by users easily.
4187
4193
4188 * IPython/Extensions/numeric_formats.py (num_display): added an
4194 * IPython/Extensions/numeric_formats.py (num_display): added an
4189 extension for printing NumPy arrays in flexible manners. It
4195 extension for printing NumPy arrays in flexible manners. It
4190 doesn't do anything yet, but all the structure is in
4196 doesn't do anything yet, but all the structure is in
4191 place. Ultimately the plan is to implement output format control
4197 place. Ultimately the plan is to implement output format control
4192 like in Octave.
4198 like in Octave.
4193
4199
4194 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4200 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4195 methods are found at run-time by all the automatic machinery.
4201 methods are found at run-time by all the automatic machinery.
4196
4202
4197 2002-02-17 Fernando Perez <fperez@colorado.edu>
4203 2002-02-17 Fernando Perez <fperez@colorado.edu>
4198
4204
4199 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4205 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4200 whole file a little.
4206 whole file a little.
4201
4207
4202 * ToDo: closed this document. Now there's a new_design.lyx
4208 * ToDo: closed this document. Now there's a new_design.lyx
4203 document for all new ideas. Added making a pdf of it for the
4209 document for all new ideas. Added making a pdf of it for the
4204 end-user distro.
4210 end-user distro.
4205
4211
4206 * IPython/Logger.py (Logger.switch_log): Created this to replace
4212 * IPython/Logger.py (Logger.switch_log): Created this to replace
4207 logon() and logoff(). It also fixes a nasty crash reported by
4213 logon() and logoff(). It also fixes a nasty crash reported by
4208 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4214 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4209
4215
4210 * IPython/iplib.py (complete): got auto-completion to work with
4216 * IPython/iplib.py (complete): got auto-completion to work with
4211 automagic (I had wanted this for a long time).
4217 automagic (I had wanted this for a long time).
4212
4218
4213 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4219 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4214 to @file, since file() is now a builtin and clashes with automagic
4220 to @file, since file() is now a builtin and clashes with automagic
4215 for @file.
4221 for @file.
4216
4222
4217 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4223 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4218 of this was previously in iplib, which had grown to more than 2000
4224 of this was previously in iplib, which had grown to more than 2000
4219 lines, way too long. No new functionality, but it makes managing
4225 lines, way too long. No new functionality, but it makes managing
4220 the code a bit easier.
4226 the code a bit easier.
4221
4227
4222 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4228 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4223 information to crash reports.
4229 information to crash reports.
4224
4230
4225 2002-02-12 Fernando Perez <fperez@colorado.edu>
4231 2002-02-12 Fernando Perez <fperez@colorado.edu>
4226
4232
4227 * Released 0.2.5.
4233 * Released 0.2.5.
4228
4234
4229 2002-02-11 Fernando Perez <fperez@colorado.edu>
4235 2002-02-11 Fernando Perez <fperez@colorado.edu>
4230
4236
4231 * Wrote a relatively complete Windows installer. It puts
4237 * Wrote a relatively complete Windows installer. It puts
4232 everything in place, creates Start Menu entries and fixes the
4238 everything in place, creates Start Menu entries and fixes the
4233 color issues. Nothing fancy, but it works.
4239 color issues. Nothing fancy, but it works.
4234
4240
4235 2002-02-10 Fernando Perez <fperez@colorado.edu>
4241 2002-02-10 Fernando Perez <fperez@colorado.edu>
4236
4242
4237 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4243 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4238 os.path.expanduser() call so that we can type @run ~/myfile.py and
4244 os.path.expanduser() call so that we can type @run ~/myfile.py and
4239 have thigs work as expected.
4245 have thigs work as expected.
4240
4246
4241 * IPython/genutils.py (page): fixed exception handling so things
4247 * IPython/genutils.py (page): fixed exception handling so things
4242 work both in Unix and Windows correctly. Quitting a pager triggers
4248 work both in Unix and Windows correctly. Quitting a pager triggers
4243 an IOError/broken pipe in Unix, and in windows not finding a pager
4249 an IOError/broken pipe in Unix, and in windows not finding a pager
4244 is also an IOError, so I had to actually look at the return value
4250 is also an IOError, so I had to actually look at the return value
4245 of the exception, not just the exception itself. Should be ok now.
4251 of the exception, not just the exception itself. Should be ok now.
4246
4252
4247 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4253 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4248 modified to allow case-insensitive color scheme changes.
4254 modified to allow case-insensitive color scheme changes.
4249
4255
4250 2002-02-09 Fernando Perez <fperez@colorado.edu>
4256 2002-02-09 Fernando Perez <fperez@colorado.edu>
4251
4257
4252 * IPython/genutils.py (native_line_ends): new function to leave
4258 * IPython/genutils.py (native_line_ends): new function to leave
4253 user config files with os-native line-endings.
4259 user config files with os-native line-endings.
4254
4260
4255 * README and manual updates.
4261 * README and manual updates.
4256
4262
4257 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4263 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4258 instead of StringType to catch Unicode strings.
4264 instead of StringType to catch Unicode strings.
4259
4265
4260 * IPython/genutils.py (filefind): fixed bug for paths with
4266 * IPython/genutils.py (filefind): fixed bug for paths with
4261 embedded spaces (very common in Windows).
4267 embedded spaces (very common in Windows).
4262
4268
4263 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4269 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4264 files under Windows, so that they get automatically associated
4270 files under Windows, so that they get automatically associated
4265 with a text editor. Windows makes it a pain to handle
4271 with a text editor. Windows makes it a pain to handle
4266 extension-less files.
4272 extension-less files.
4267
4273
4268 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4274 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4269 warning about readline only occur for Posix. In Windows there's no
4275 warning about readline only occur for Posix. In Windows there's no
4270 way to get readline, so why bother with the warning.
4276 way to get readline, so why bother with the warning.
4271
4277
4272 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4278 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4273 for __str__ instead of dir(self), since dir() changed in 2.2.
4279 for __str__ instead of dir(self), since dir() changed in 2.2.
4274
4280
4275 * Ported to Windows! Tested on XP, I suspect it should work fine
4281 * Ported to Windows! Tested on XP, I suspect it should work fine
4276 on NT/2000, but I don't think it will work on 98 et al. That
4282 on NT/2000, but I don't think it will work on 98 et al. That
4277 series of Windows is such a piece of junk anyway that I won't try
4283 series of Windows is such a piece of junk anyway that I won't try
4278 porting it there. The XP port was straightforward, showed a few
4284 porting it there. The XP port was straightforward, showed a few
4279 bugs here and there (fixed all), in particular some string
4285 bugs here and there (fixed all), in particular some string
4280 handling stuff which required considering Unicode strings (which
4286 handling stuff which required considering Unicode strings (which
4281 Windows uses). This is good, but hasn't been too tested :) No
4287 Windows uses). This is good, but hasn't been too tested :) No
4282 fancy installer yet, I'll put a note in the manual so people at
4288 fancy installer yet, I'll put a note in the manual so people at
4283 least make manually a shortcut.
4289 least make manually a shortcut.
4284
4290
4285 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4291 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4286 into a single one, "colors". This now controls both prompt and
4292 into a single one, "colors". This now controls both prompt and
4287 exception color schemes, and can be changed both at startup
4293 exception color schemes, and can be changed both at startup
4288 (either via command-line switches or via ipythonrc files) and at
4294 (either via command-line switches or via ipythonrc files) and at
4289 runtime, with @colors.
4295 runtime, with @colors.
4290 (Magic.magic_run): renamed @prun to @run and removed the old
4296 (Magic.magic_run): renamed @prun to @run and removed the old
4291 @run. The two were too similar to warrant keeping both.
4297 @run. The two were too similar to warrant keeping both.
4292
4298
4293 2002-02-03 Fernando Perez <fperez@colorado.edu>
4299 2002-02-03 Fernando Perez <fperez@colorado.edu>
4294
4300
4295 * IPython/iplib.py (install_first_time): Added comment on how to
4301 * IPython/iplib.py (install_first_time): Added comment on how to
4296 configure the color options for first-time users. Put a <return>
4302 configure the color options for first-time users. Put a <return>
4297 request at the end so that small-terminal users get a chance to
4303 request at the end so that small-terminal users get a chance to
4298 read the startup info.
4304 read the startup info.
4299
4305
4300 2002-01-23 Fernando Perez <fperez@colorado.edu>
4306 2002-01-23 Fernando Perez <fperez@colorado.edu>
4301
4307
4302 * IPython/iplib.py (CachedOutput.update): Changed output memory
4308 * IPython/iplib.py (CachedOutput.update): Changed output memory
4303 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4309 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4304 input history we still use _i. Did this b/c these variable are
4310 input history we still use _i. Did this b/c these variable are
4305 very commonly used in interactive work, so the less we need to
4311 very commonly used in interactive work, so the less we need to
4306 type the better off we are.
4312 type the better off we are.
4307 (Magic.magic_prun): updated @prun to better handle the namespaces
4313 (Magic.magic_prun): updated @prun to better handle the namespaces
4308 the file will run in, including a fix for __name__ not being set
4314 the file will run in, including a fix for __name__ not being set
4309 before.
4315 before.
4310
4316
4311 2002-01-20 Fernando Perez <fperez@colorado.edu>
4317 2002-01-20 Fernando Perez <fperez@colorado.edu>
4312
4318
4313 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4319 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4314 extra garbage for Python 2.2. Need to look more carefully into
4320 extra garbage for Python 2.2. Need to look more carefully into
4315 this later.
4321 this later.
4316
4322
4317 2002-01-19 Fernando Perez <fperez@colorado.edu>
4323 2002-01-19 Fernando Perez <fperez@colorado.edu>
4318
4324
4319 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4325 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4320 display SyntaxError exceptions properly formatted when they occur
4326 display SyntaxError exceptions properly formatted when they occur
4321 (they can be triggered by imported code).
4327 (they can be triggered by imported code).
4322
4328
4323 2002-01-18 Fernando Perez <fperez@colorado.edu>
4329 2002-01-18 Fernando Perez <fperez@colorado.edu>
4324
4330
4325 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4331 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4326 SyntaxError exceptions are reported nicely formatted, instead of
4332 SyntaxError exceptions are reported nicely formatted, instead of
4327 spitting out only offset information as before.
4333 spitting out only offset information as before.
4328 (Magic.magic_prun): Added the @prun function for executing
4334 (Magic.magic_prun): Added the @prun function for executing
4329 programs with command line args inside IPython.
4335 programs with command line args inside IPython.
4330
4336
4331 2002-01-16 Fernando Perez <fperez@colorado.edu>
4337 2002-01-16 Fernando Perez <fperez@colorado.edu>
4332
4338
4333 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4339 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4334 to *not* include the last item given in a range. This brings their
4340 to *not* include the last item given in a range. This brings their
4335 behavior in line with Python's slicing:
4341 behavior in line with Python's slicing:
4336 a[n1:n2] -> a[n1]...a[n2-1]
4342 a[n1:n2] -> a[n1]...a[n2-1]
4337 It may be a bit less convenient, but I prefer to stick to Python's
4343 It may be a bit less convenient, but I prefer to stick to Python's
4338 conventions *everywhere*, so users never have to wonder.
4344 conventions *everywhere*, so users never have to wonder.
4339 (Magic.magic_macro): Added @macro function to ease the creation of
4345 (Magic.magic_macro): Added @macro function to ease the creation of
4340 macros.
4346 macros.
4341
4347
4342 2002-01-05 Fernando Perez <fperez@colorado.edu>
4348 2002-01-05 Fernando Perez <fperez@colorado.edu>
4343
4349
4344 * Released 0.2.4.
4350 * Released 0.2.4.
4345
4351
4346 * IPython/iplib.py (Magic.magic_pdef):
4352 * IPython/iplib.py (Magic.magic_pdef):
4347 (InteractiveShell.safe_execfile): report magic lines and error
4353 (InteractiveShell.safe_execfile): report magic lines and error
4348 lines without line numbers so one can easily copy/paste them for
4354 lines without line numbers so one can easily copy/paste them for
4349 re-execution.
4355 re-execution.
4350
4356
4351 * Updated manual with recent changes.
4357 * Updated manual with recent changes.
4352
4358
4353 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4359 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4354 docstring printing when class? is called. Very handy for knowing
4360 docstring printing when class? is called. Very handy for knowing
4355 how to create class instances (as long as __init__ is well
4361 how to create class instances (as long as __init__ is well
4356 documented, of course :)
4362 documented, of course :)
4357 (Magic.magic_doc): print both class and constructor docstrings.
4363 (Magic.magic_doc): print both class and constructor docstrings.
4358 (Magic.magic_pdef): give constructor info if passed a class and
4364 (Magic.magic_pdef): give constructor info if passed a class and
4359 __call__ info for callable object instances.
4365 __call__ info for callable object instances.
4360
4366
4361 2002-01-04 Fernando Perez <fperez@colorado.edu>
4367 2002-01-04 Fernando Perez <fperez@colorado.edu>
4362
4368
4363 * Made deep_reload() off by default. It doesn't always work
4369 * Made deep_reload() off by default. It doesn't always work
4364 exactly as intended, so it's probably safer to have it off. It's
4370 exactly as intended, so it's probably safer to have it off. It's
4365 still available as dreload() anyway, so nothing is lost.
4371 still available as dreload() anyway, so nothing is lost.
4366
4372
4367 2002-01-02 Fernando Perez <fperez@colorado.edu>
4373 2002-01-02 Fernando Perez <fperez@colorado.edu>
4368
4374
4369 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4375 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4370 so I wanted an updated release).
4376 so I wanted an updated release).
4371
4377
4372 2001-12-27 Fernando Perez <fperez@colorado.edu>
4378 2001-12-27 Fernando Perez <fperez@colorado.edu>
4373
4379
4374 * IPython/iplib.py (InteractiveShell.interact): Added the original
4380 * IPython/iplib.py (InteractiveShell.interact): Added the original
4375 code from 'code.py' for this module in order to change the
4381 code from 'code.py' for this module in order to change the
4376 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4382 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4377 the history cache would break when the user hit Ctrl-C, and
4383 the history cache would break when the user hit Ctrl-C, and
4378 interact() offers no way to add any hooks to it.
4384 interact() offers no way to add any hooks to it.
4379
4385
4380 2001-12-23 Fernando Perez <fperez@colorado.edu>
4386 2001-12-23 Fernando Perez <fperez@colorado.edu>
4381
4387
4382 * setup.py: added check for 'MANIFEST' before trying to remove
4388 * setup.py: added check for 'MANIFEST' before trying to remove
4383 it. Thanks to Sean Reifschneider.
4389 it. Thanks to Sean Reifschneider.
4384
4390
4385 2001-12-22 Fernando Perez <fperez@colorado.edu>
4391 2001-12-22 Fernando Perez <fperez@colorado.edu>
4386
4392
4387 * Released 0.2.2.
4393 * Released 0.2.2.
4388
4394
4389 * Finished (reasonably) writing the manual. Later will add the
4395 * Finished (reasonably) writing the manual. Later will add the
4390 python-standard navigation stylesheets, but for the time being
4396 python-standard navigation stylesheets, but for the time being
4391 it's fairly complete. Distribution will include html and pdf
4397 it's fairly complete. Distribution will include html and pdf
4392 versions.
4398 versions.
4393
4399
4394 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4400 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4395 (MayaVi author).
4401 (MayaVi author).
4396
4402
4397 2001-12-21 Fernando Perez <fperez@colorado.edu>
4403 2001-12-21 Fernando Perez <fperez@colorado.edu>
4398
4404
4399 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4405 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4400 good public release, I think (with the manual and the distutils
4406 good public release, I think (with the manual and the distutils
4401 installer). The manual can use some work, but that can go
4407 installer). The manual can use some work, but that can go
4402 slowly. Otherwise I think it's quite nice for end users. Next
4408 slowly. Otherwise I think it's quite nice for end users. Next
4403 summer, rewrite the guts of it...
4409 summer, rewrite the guts of it...
4404
4410
4405 * Changed format of ipythonrc files to use whitespace as the
4411 * Changed format of ipythonrc files to use whitespace as the
4406 separator instead of an explicit '='. Cleaner.
4412 separator instead of an explicit '='. Cleaner.
4407
4413
4408 2001-12-20 Fernando Perez <fperez@colorado.edu>
4414 2001-12-20 Fernando Perez <fperez@colorado.edu>
4409
4415
4410 * Started a manual in LyX. For now it's just a quick merge of the
4416 * Started a manual in LyX. For now it's just a quick merge of the
4411 various internal docstrings and READMEs. Later it may grow into a
4417 various internal docstrings and READMEs. Later it may grow into a
4412 nice, full-blown manual.
4418 nice, full-blown manual.
4413
4419
4414 * Set up a distutils based installer. Installation should now be
4420 * Set up a distutils based installer. Installation should now be
4415 trivially simple for end-users.
4421 trivially simple for end-users.
4416
4422
4417 2001-12-11 Fernando Perez <fperez@colorado.edu>
4423 2001-12-11 Fernando Perez <fperez@colorado.edu>
4418
4424
4419 * Released 0.2.0. First public release, announced it at
4425 * Released 0.2.0. First public release, announced it at
4420 comp.lang.python. From now on, just bugfixes...
4426 comp.lang.python. From now on, just bugfixes...
4421
4427
4422 * Went through all the files, set copyright/license notices and
4428 * Went through all the files, set copyright/license notices and
4423 cleaned up things. Ready for release.
4429 cleaned up things. Ready for release.
4424
4430
4425 2001-12-10 Fernando Perez <fperez@colorado.edu>
4431 2001-12-10 Fernando Perez <fperez@colorado.edu>
4426
4432
4427 * Changed the first-time installer not to use tarfiles. It's more
4433 * Changed the first-time installer not to use tarfiles. It's more
4428 robust now and less unix-dependent. Also makes it easier for
4434 robust now and less unix-dependent. Also makes it easier for
4429 people to later upgrade versions.
4435 people to later upgrade versions.
4430
4436
4431 * Changed @exit to @abort to reflect the fact that it's pretty
4437 * Changed @exit to @abort to reflect the fact that it's pretty
4432 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4438 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4433 becomes significant only when IPyhton is embedded: in that case,
4439 becomes significant only when IPyhton is embedded: in that case,
4434 C-D closes IPython only, but @abort kills the enclosing program
4440 C-D closes IPython only, but @abort kills the enclosing program
4435 too (unless it had called IPython inside a try catching
4441 too (unless it had called IPython inside a try catching
4436 SystemExit).
4442 SystemExit).
4437
4443
4438 * Created Shell module which exposes the actuall IPython Shell
4444 * Created Shell module which exposes the actuall IPython Shell
4439 classes, currently the normal and the embeddable one. This at
4445 classes, currently the normal and the embeddable one. This at
4440 least offers a stable interface we won't need to change when
4446 least offers a stable interface we won't need to change when
4441 (later) the internals are rewritten. That rewrite will be confined
4447 (later) the internals are rewritten. That rewrite will be confined
4442 to iplib and ipmaker, but the Shell interface should remain as is.
4448 to iplib and ipmaker, but the Shell interface should remain as is.
4443
4449
4444 * Added embed module which offers an embeddable IPShell object,
4450 * Added embed module which offers an embeddable IPShell object,
4445 useful to fire up IPython *inside* a running program. Great for
4451 useful to fire up IPython *inside* a running program. Great for
4446 debugging or dynamical data analysis.
4452 debugging or dynamical data analysis.
4447
4453
4448 2001-12-08 Fernando Perez <fperez@colorado.edu>
4454 2001-12-08 Fernando Perez <fperez@colorado.edu>
4449
4455
4450 * Fixed small bug preventing seeing info from methods of defined
4456 * Fixed small bug preventing seeing info from methods of defined
4451 objects (incorrect namespace in _ofind()).
4457 objects (incorrect namespace in _ofind()).
4452
4458
4453 * Documentation cleanup. Moved the main usage docstrings to a
4459 * Documentation cleanup. Moved the main usage docstrings to a
4454 separate file, usage.py (cleaner to maintain, and hopefully in the
4460 separate file, usage.py (cleaner to maintain, and hopefully in the
4455 future some perlpod-like way of producing interactive, man and
4461 future some perlpod-like way of producing interactive, man and
4456 html docs out of it will be found).
4462 html docs out of it will be found).
4457
4463
4458 * Added @profile to see your profile at any time.
4464 * Added @profile to see your profile at any time.
4459
4465
4460 * Added @p as an alias for 'print'. It's especially convenient if
4466 * Added @p as an alias for 'print'. It's especially convenient if
4461 using automagic ('p x' prints x).
4467 using automagic ('p x' prints x).
4462
4468
4463 * Small cleanups and fixes after a pychecker run.
4469 * Small cleanups and fixes after a pychecker run.
4464
4470
4465 * Changed the @cd command to handle @cd - and @cd -<n> for
4471 * Changed the @cd command to handle @cd - and @cd -<n> for
4466 visiting any directory in _dh.
4472 visiting any directory in _dh.
4467
4473
4468 * Introduced _dh, a history of visited directories. @dhist prints
4474 * Introduced _dh, a history of visited directories. @dhist prints
4469 it out with numbers.
4475 it out with numbers.
4470
4476
4471 2001-12-07 Fernando Perez <fperez@colorado.edu>
4477 2001-12-07 Fernando Perez <fperez@colorado.edu>
4472
4478
4473 * Released 0.1.22
4479 * Released 0.1.22
4474
4480
4475 * Made initialization a bit more robust against invalid color
4481 * Made initialization a bit more robust against invalid color
4476 options in user input (exit, not traceback-crash).
4482 options in user input (exit, not traceback-crash).
4477
4483
4478 * Changed the bug crash reporter to write the report only in the
4484 * Changed the bug crash reporter to write the report only in the
4479 user's .ipython directory. That way IPython won't litter people's
4485 user's .ipython directory. That way IPython won't litter people's
4480 hard disks with crash files all over the place. Also print on
4486 hard disks with crash files all over the place. Also print on
4481 screen the necessary mail command.
4487 screen the necessary mail command.
4482
4488
4483 * With the new ultraTB, implemented LightBG color scheme for light
4489 * With the new ultraTB, implemented LightBG color scheme for light
4484 background terminals. A lot of people like white backgrounds, so I
4490 background terminals. A lot of people like white backgrounds, so I
4485 guess we should at least give them something readable.
4491 guess we should at least give them something readable.
4486
4492
4487 2001-12-06 Fernando Perez <fperez@colorado.edu>
4493 2001-12-06 Fernando Perez <fperez@colorado.edu>
4488
4494
4489 * Modified the structure of ultraTB. Now there's a proper class
4495 * Modified the structure of ultraTB. Now there's a proper class
4490 for tables of color schemes which allow adding schemes easily and
4496 for tables of color schemes which allow adding schemes easily and
4491 switching the active scheme without creating a new instance every
4497 switching the active scheme without creating a new instance every
4492 time (which was ridiculous). The syntax for creating new schemes
4498 time (which was ridiculous). The syntax for creating new schemes
4493 is also cleaner. I think ultraTB is finally done, with a clean
4499 is also cleaner. I think ultraTB is finally done, with a clean
4494 class structure. Names are also much cleaner (now there's proper
4500 class structure. Names are also much cleaner (now there's proper
4495 color tables, no need for every variable to also have 'color' in
4501 color tables, no need for every variable to also have 'color' in
4496 its name).
4502 its name).
4497
4503
4498 * Broke down genutils into separate files. Now genutils only
4504 * Broke down genutils into separate files. Now genutils only
4499 contains utility functions, and classes have been moved to their
4505 contains utility functions, and classes have been moved to their
4500 own files (they had enough independent functionality to warrant
4506 own files (they had enough independent functionality to warrant
4501 it): ConfigLoader, OutputTrap, Struct.
4507 it): ConfigLoader, OutputTrap, Struct.
4502
4508
4503 2001-12-05 Fernando Perez <fperez@colorado.edu>
4509 2001-12-05 Fernando Perez <fperez@colorado.edu>
4504
4510
4505 * IPython turns 21! Released version 0.1.21, as a candidate for
4511 * IPython turns 21! Released version 0.1.21, as a candidate for
4506 public consumption. If all goes well, release in a few days.
4512 public consumption. If all goes well, release in a few days.
4507
4513
4508 * Fixed path bug (files in Extensions/ directory wouldn't be found
4514 * Fixed path bug (files in Extensions/ directory wouldn't be found
4509 unless IPython/ was explicitly in sys.path).
4515 unless IPython/ was explicitly in sys.path).
4510
4516
4511 * Extended the FlexCompleter class as MagicCompleter to allow
4517 * Extended the FlexCompleter class as MagicCompleter to allow
4512 completion of @-starting lines.
4518 completion of @-starting lines.
4513
4519
4514 * Created __release__.py file as a central repository for release
4520 * Created __release__.py file as a central repository for release
4515 info that other files can read from.
4521 info that other files can read from.
4516
4522
4517 * Fixed small bug in logging: when logging was turned on in
4523 * Fixed small bug in logging: when logging was turned on in
4518 mid-session, old lines with special meanings (!@?) were being
4524 mid-session, old lines with special meanings (!@?) were being
4519 logged without the prepended comment, which is necessary since
4525 logged without the prepended comment, which is necessary since
4520 they are not truly valid python syntax. This should make session
4526 they are not truly valid python syntax. This should make session
4521 restores produce less errors.
4527 restores produce less errors.
4522
4528
4523 * The namespace cleanup forced me to make a FlexCompleter class
4529 * The namespace cleanup forced me to make a FlexCompleter class
4524 which is nothing but a ripoff of rlcompleter, but with selectable
4530 which is nothing but a ripoff of rlcompleter, but with selectable
4525 namespace (rlcompleter only works in __main__.__dict__). I'll try
4531 namespace (rlcompleter only works in __main__.__dict__). I'll try
4526 to submit a note to the authors to see if this change can be
4532 to submit a note to the authors to see if this change can be
4527 incorporated in future rlcompleter releases (Dec.6: done)
4533 incorporated in future rlcompleter releases (Dec.6: done)
4528
4534
4529 * More fixes to namespace handling. It was a mess! Now all
4535 * More fixes to namespace handling. It was a mess! Now all
4530 explicit references to __main__.__dict__ are gone (except when
4536 explicit references to __main__.__dict__ are gone (except when
4531 really needed) and everything is handled through the namespace
4537 really needed) and everything is handled through the namespace
4532 dicts in the IPython instance. We seem to be getting somewhere
4538 dicts in the IPython instance. We seem to be getting somewhere
4533 with this, finally...
4539 with this, finally...
4534
4540
4535 * Small documentation updates.
4541 * Small documentation updates.
4536
4542
4537 * Created the Extensions directory under IPython (with an
4543 * Created the Extensions directory under IPython (with an
4538 __init__.py). Put the PhysicalQ stuff there. This directory should
4544 __init__.py). Put the PhysicalQ stuff there. This directory should
4539 be used for all special-purpose extensions.
4545 be used for all special-purpose extensions.
4540
4546
4541 * File renaming:
4547 * File renaming:
4542 ipythonlib --> ipmaker
4548 ipythonlib --> ipmaker
4543 ipplib --> iplib
4549 ipplib --> iplib
4544 This makes a bit more sense in terms of what these files actually do.
4550 This makes a bit more sense in terms of what these files actually do.
4545
4551
4546 * Moved all the classes and functions in ipythonlib to ipplib, so
4552 * Moved all the classes and functions in ipythonlib to ipplib, so
4547 now ipythonlib only has make_IPython(). This will ease up its
4553 now ipythonlib only has make_IPython(). This will ease up its
4548 splitting in smaller functional chunks later.
4554 splitting in smaller functional chunks later.
4549
4555
4550 * Cleaned up (done, I think) output of @whos. Better column
4556 * Cleaned up (done, I think) output of @whos. Better column
4551 formatting, and now shows str(var) for as much as it can, which is
4557 formatting, and now shows str(var) for as much as it can, which is
4552 typically what one gets with a 'print var'.
4558 typically what one gets with a 'print var'.
4553
4559
4554 2001-12-04 Fernando Perez <fperez@colorado.edu>
4560 2001-12-04 Fernando Perez <fperez@colorado.edu>
4555
4561
4556 * Fixed namespace problems. Now builtin/IPyhton/user names get
4562 * Fixed namespace problems. Now builtin/IPyhton/user names get
4557 properly reported in their namespace. Internal namespace handling
4563 properly reported in their namespace. Internal namespace handling
4558 is finally getting decent (not perfect yet, but much better than
4564 is finally getting decent (not perfect yet, but much better than
4559 the ad-hoc mess we had).
4565 the ad-hoc mess we had).
4560
4566
4561 * Removed -exit option. If people just want to run a python
4567 * Removed -exit option. If people just want to run a python
4562 script, that's what the normal interpreter is for. Less
4568 script, that's what the normal interpreter is for. Less
4563 unnecessary options, less chances for bugs.
4569 unnecessary options, less chances for bugs.
4564
4570
4565 * Added a crash handler which generates a complete post-mortem if
4571 * Added a crash handler which generates a complete post-mortem if
4566 IPython crashes. This will help a lot in tracking bugs down the
4572 IPython crashes. This will help a lot in tracking bugs down the
4567 road.
4573 road.
4568
4574
4569 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4575 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4570 which were boud to functions being reassigned would bypass the
4576 which were boud to functions being reassigned would bypass the
4571 logger, breaking the sync of _il with the prompt counter. This
4577 logger, breaking the sync of _il with the prompt counter. This
4572 would then crash IPython later when a new line was logged.
4578 would then crash IPython later when a new line was logged.
4573
4579
4574 2001-12-02 Fernando Perez <fperez@colorado.edu>
4580 2001-12-02 Fernando Perez <fperez@colorado.edu>
4575
4581
4576 * Made IPython a package. This means people don't have to clutter
4582 * Made IPython a package. This means people don't have to clutter
4577 their sys.path with yet another directory. Changed the INSTALL
4583 their sys.path with yet another directory. Changed the INSTALL
4578 file accordingly.
4584 file accordingly.
4579
4585
4580 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4586 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4581 sorts its output (so @who shows it sorted) and @whos formats the
4587 sorts its output (so @who shows it sorted) and @whos formats the
4582 table according to the width of the first column. Nicer, easier to
4588 table according to the width of the first column. Nicer, easier to
4583 read. Todo: write a generic table_format() which takes a list of
4589 read. Todo: write a generic table_format() which takes a list of
4584 lists and prints it nicely formatted, with optional row/column
4590 lists and prints it nicely formatted, with optional row/column
4585 separators and proper padding and justification.
4591 separators and proper padding and justification.
4586
4592
4587 * Released 0.1.20
4593 * Released 0.1.20
4588
4594
4589 * Fixed bug in @log which would reverse the inputcache list (a
4595 * Fixed bug in @log which would reverse the inputcache list (a
4590 copy operation was missing).
4596 copy operation was missing).
4591
4597
4592 * Code cleanup. @config was changed to use page(). Better, since
4598 * Code cleanup. @config was changed to use page(). Better, since
4593 its output is always quite long.
4599 its output is always quite long.
4594
4600
4595 * Itpl is back as a dependency. I was having too many problems
4601 * Itpl is back as a dependency. I was having too many problems
4596 getting the parametric aliases to work reliably, and it's just
4602 getting the parametric aliases to work reliably, and it's just
4597 easier to code weird string operations with it than playing %()s
4603 easier to code weird string operations with it than playing %()s
4598 games. It's only ~6k, so I don't think it's too big a deal.
4604 games. It's only ~6k, so I don't think it's too big a deal.
4599
4605
4600 * Found (and fixed) a very nasty bug with history. !lines weren't
4606 * Found (and fixed) a very nasty bug with history. !lines weren't
4601 getting cached, and the out of sync caches would crash
4607 getting cached, and the out of sync caches would crash
4602 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4608 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4603 division of labor a bit better. Bug fixed, cleaner structure.
4609 division of labor a bit better. Bug fixed, cleaner structure.
4604
4610
4605 2001-12-01 Fernando Perez <fperez@colorado.edu>
4611 2001-12-01 Fernando Perez <fperez@colorado.edu>
4606
4612
4607 * Released 0.1.19
4613 * Released 0.1.19
4608
4614
4609 * Added option -n to @hist to prevent line number printing. Much
4615 * Added option -n to @hist to prevent line number printing. Much
4610 easier to copy/paste code this way.
4616 easier to copy/paste code this way.
4611
4617
4612 * Created global _il to hold the input list. Allows easy
4618 * Created global _il to hold the input list. Allows easy
4613 re-execution of blocks of code by slicing it (inspired by Janko's
4619 re-execution of blocks of code by slicing it (inspired by Janko's
4614 comment on 'macros').
4620 comment on 'macros').
4615
4621
4616 * Small fixes and doc updates.
4622 * Small fixes and doc updates.
4617
4623
4618 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4624 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4619 much too fragile with automagic. Handles properly multi-line
4625 much too fragile with automagic. Handles properly multi-line
4620 statements and takes parameters.
4626 statements and takes parameters.
4621
4627
4622 2001-11-30 Fernando Perez <fperez@colorado.edu>
4628 2001-11-30 Fernando Perez <fperez@colorado.edu>
4623
4629
4624 * Version 0.1.18 released.
4630 * Version 0.1.18 released.
4625
4631
4626 * Fixed nasty namespace bug in initial module imports.
4632 * Fixed nasty namespace bug in initial module imports.
4627
4633
4628 * Added copyright/license notes to all code files (except
4634 * Added copyright/license notes to all code files (except
4629 DPyGetOpt). For the time being, LGPL. That could change.
4635 DPyGetOpt). For the time being, LGPL. That could change.
4630
4636
4631 * Rewrote a much nicer README, updated INSTALL, cleaned up
4637 * Rewrote a much nicer README, updated INSTALL, cleaned up
4632 ipythonrc-* samples.
4638 ipythonrc-* samples.
4633
4639
4634 * Overall code/documentation cleanup. Basically ready for
4640 * Overall code/documentation cleanup. Basically ready for
4635 release. Only remaining thing: licence decision (LGPL?).
4641 release. Only remaining thing: licence decision (LGPL?).
4636
4642
4637 * Converted load_config to a class, ConfigLoader. Now recursion
4643 * Converted load_config to a class, ConfigLoader. Now recursion
4638 control is better organized. Doesn't include the same file twice.
4644 control is better organized. Doesn't include the same file twice.
4639
4645
4640 2001-11-29 Fernando Perez <fperez@colorado.edu>
4646 2001-11-29 Fernando Perez <fperez@colorado.edu>
4641
4647
4642 * Got input history working. Changed output history variables from
4648 * Got input history working. Changed output history variables from
4643 _p to _o so that _i is for input and _o for output. Just cleaner
4649 _p to _o so that _i is for input and _o for output. Just cleaner
4644 convention.
4650 convention.
4645
4651
4646 * Implemented parametric aliases. This pretty much allows the
4652 * Implemented parametric aliases. This pretty much allows the
4647 alias system to offer full-blown shell convenience, I think.
4653 alias system to offer full-blown shell convenience, I think.
4648
4654
4649 * Version 0.1.17 released, 0.1.18 opened.
4655 * Version 0.1.17 released, 0.1.18 opened.
4650
4656
4651 * dot_ipython/ipythonrc (alias): added documentation.
4657 * dot_ipython/ipythonrc (alias): added documentation.
4652 (xcolor): Fixed small bug (xcolors -> xcolor)
4658 (xcolor): Fixed small bug (xcolors -> xcolor)
4653
4659
4654 * Changed the alias system. Now alias is a magic command to define
4660 * Changed the alias system. Now alias is a magic command to define
4655 aliases just like the shell. Rationale: the builtin magics should
4661 aliases just like the shell. Rationale: the builtin magics should
4656 be there for things deeply connected to IPython's
4662 be there for things deeply connected to IPython's
4657 architecture. And this is a much lighter system for what I think
4663 architecture. And this is a much lighter system for what I think
4658 is the really important feature: allowing users to define quickly
4664 is the really important feature: allowing users to define quickly
4659 magics that will do shell things for them, so they can customize
4665 magics that will do shell things for them, so they can customize
4660 IPython easily to match their work habits. If someone is really
4666 IPython easily to match their work habits. If someone is really
4661 desperate to have another name for a builtin alias, they can
4667 desperate to have another name for a builtin alias, they can
4662 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4668 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4663 works.
4669 works.
4664
4670
4665 2001-11-28 Fernando Perez <fperez@colorado.edu>
4671 2001-11-28 Fernando Perez <fperez@colorado.edu>
4666
4672
4667 * Changed @file so that it opens the source file at the proper
4673 * Changed @file so that it opens the source file at the proper
4668 line. Since it uses less, if your EDITOR environment is
4674 line. Since it uses less, if your EDITOR environment is
4669 configured, typing v will immediately open your editor of choice
4675 configured, typing v will immediately open your editor of choice
4670 right at the line where the object is defined. Not as quick as
4676 right at the line where the object is defined. Not as quick as
4671 having a direct @edit command, but for all intents and purposes it
4677 having a direct @edit command, but for all intents and purposes it
4672 works. And I don't have to worry about writing @edit to deal with
4678 works. And I don't have to worry about writing @edit to deal with
4673 all the editors, less does that.
4679 all the editors, less does that.
4674
4680
4675 * Version 0.1.16 released, 0.1.17 opened.
4681 * Version 0.1.16 released, 0.1.17 opened.
4676
4682
4677 * Fixed some nasty bugs in the page/page_dumb combo that could
4683 * Fixed some nasty bugs in the page/page_dumb combo that could
4678 crash IPython.
4684 crash IPython.
4679
4685
4680 2001-11-27 Fernando Perez <fperez@colorado.edu>
4686 2001-11-27 Fernando Perez <fperez@colorado.edu>
4681
4687
4682 * Version 0.1.15 released, 0.1.16 opened.
4688 * Version 0.1.15 released, 0.1.16 opened.
4683
4689
4684 * Finally got ? and ?? to work for undefined things: now it's
4690 * Finally got ? and ?? to work for undefined things: now it's
4685 possible to type {}.get? and get information about the get method
4691 possible to type {}.get? and get information about the get method
4686 of dicts, or os.path? even if only os is defined (so technically
4692 of dicts, or os.path? even if only os is defined (so technically
4687 os.path isn't). Works at any level. For example, after import os,
4693 os.path isn't). Works at any level. For example, after import os,
4688 os?, os.path?, os.path.abspath? all work. This is great, took some
4694 os?, os.path?, os.path.abspath? all work. This is great, took some
4689 work in _ofind.
4695 work in _ofind.
4690
4696
4691 * Fixed more bugs with logging. The sanest way to do it was to add
4697 * Fixed more bugs with logging. The sanest way to do it was to add
4692 to @log a 'mode' parameter. Killed two in one shot (this mode
4698 to @log a 'mode' parameter. Killed two in one shot (this mode
4693 option was a request of Janko's). I think it's finally clean
4699 option was a request of Janko's). I think it's finally clean
4694 (famous last words).
4700 (famous last words).
4695
4701
4696 * Added a page_dumb() pager which does a decent job of paging on
4702 * Added a page_dumb() pager which does a decent job of paging on
4697 screen, if better things (like less) aren't available. One less
4703 screen, if better things (like less) aren't available. One less
4698 unix dependency (someday maybe somebody will port this to
4704 unix dependency (someday maybe somebody will port this to
4699 windows).
4705 windows).
4700
4706
4701 * Fixed problem in magic_log: would lock of logging out if log
4707 * Fixed problem in magic_log: would lock of logging out if log
4702 creation failed (because it would still think it had succeeded).
4708 creation failed (because it would still think it had succeeded).
4703
4709
4704 * Improved the page() function using curses to auto-detect screen
4710 * Improved the page() function using curses to auto-detect screen
4705 size. Now it can make a much better decision on whether to print
4711 size. Now it can make a much better decision on whether to print
4706 or page a string. Option screen_length was modified: a value 0
4712 or page a string. Option screen_length was modified: a value 0
4707 means auto-detect, and that's the default now.
4713 means auto-detect, and that's the default now.
4708
4714
4709 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4715 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4710 go out. I'll test it for a few days, then talk to Janko about
4716 go out. I'll test it for a few days, then talk to Janko about
4711 licences and announce it.
4717 licences and announce it.
4712
4718
4713 * Fixed the length of the auto-generated ---> prompt which appears
4719 * Fixed the length of the auto-generated ---> prompt which appears
4714 for auto-parens and auto-quotes. Getting this right isn't trivial,
4720 for auto-parens and auto-quotes. Getting this right isn't trivial,
4715 with all the color escapes, different prompt types and optional
4721 with all the color escapes, different prompt types and optional
4716 separators. But it seems to be working in all the combinations.
4722 separators. But it seems to be working in all the combinations.
4717
4723
4718 2001-11-26 Fernando Perez <fperez@colorado.edu>
4724 2001-11-26 Fernando Perez <fperez@colorado.edu>
4719
4725
4720 * Wrote a regexp filter to get option types from the option names
4726 * Wrote a regexp filter to get option types from the option names
4721 string. This eliminates the need to manually keep two duplicate
4727 string. This eliminates the need to manually keep two duplicate
4722 lists.
4728 lists.
4723
4729
4724 * Removed the unneeded check_option_names. Now options are handled
4730 * Removed the unneeded check_option_names. Now options are handled
4725 in a much saner manner and it's easy to visually check that things
4731 in a much saner manner and it's easy to visually check that things
4726 are ok.
4732 are ok.
4727
4733
4728 * Updated version numbers on all files I modified to carry a
4734 * Updated version numbers on all files I modified to carry a
4729 notice so Janko and Nathan have clear version markers.
4735 notice so Janko and Nathan have clear version markers.
4730
4736
4731 * Updated docstring for ultraTB with my changes. I should send
4737 * Updated docstring for ultraTB with my changes. I should send
4732 this to Nathan.
4738 this to Nathan.
4733
4739
4734 * Lots of small fixes. Ran everything through pychecker again.
4740 * Lots of small fixes. Ran everything through pychecker again.
4735
4741
4736 * Made loading of deep_reload an cmd line option. If it's not too
4742 * Made loading of deep_reload an cmd line option. If it's not too
4737 kosher, now people can just disable it. With -nodeep_reload it's
4743 kosher, now people can just disable it. With -nodeep_reload it's
4738 still available as dreload(), it just won't overwrite reload().
4744 still available as dreload(), it just won't overwrite reload().
4739
4745
4740 * Moved many options to the no| form (-opt and -noopt
4746 * Moved many options to the no| form (-opt and -noopt
4741 accepted). Cleaner.
4747 accepted). Cleaner.
4742
4748
4743 * Changed magic_log so that if called with no parameters, it uses
4749 * Changed magic_log so that if called with no parameters, it uses
4744 'rotate' mode. That way auto-generated logs aren't automatically
4750 'rotate' mode. That way auto-generated logs aren't automatically
4745 over-written. For normal logs, now a backup is made if it exists
4751 over-written. For normal logs, now a backup is made if it exists
4746 (only 1 level of backups). A new 'backup' mode was added to the
4752 (only 1 level of backups). A new 'backup' mode was added to the
4747 Logger class to support this. This was a request by Janko.
4753 Logger class to support this. This was a request by Janko.
4748
4754
4749 * Added @logoff/@logon to stop/restart an active log.
4755 * Added @logoff/@logon to stop/restart an active log.
4750
4756
4751 * Fixed a lot of bugs in log saving/replay. It was pretty
4757 * Fixed a lot of bugs in log saving/replay. It was pretty
4752 broken. Now special lines (!@,/) appear properly in the command
4758 broken. Now special lines (!@,/) appear properly in the command
4753 history after a log replay.
4759 history after a log replay.
4754
4760
4755 * Tried and failed to implement full session saving via pickle. My
4761 * Tried and failed to implement full session saving via pickle. My
4756 idea was to pickle __main__.__dict__, but modules can't be
4762 idea was to pickle __main__.__dict__, but modules can't be
4757 pickled. This would be a better alternative to replaying logs, but
4763 pickled. This would be a better alternative to replaying logs, but
4758 seems quite tricky to get to work. Changed -session to be called
4764 seems quite tricky to get to work. Changed -session to be called
4759 -logplay, which more accurately reflects what it does. And if we
4765 -logplay, which more accurately reflects what it does. And if we
4760 ever get real session saving working, -session is now available.
4766 ever get real session saving working, -session is now available.
4761
4767
4762 * Implemented color schemes for prompts also. As for tracebacks,
4768 * Implemented color schemes for prompts also. As for tracebacks,
4763 currently only NoColor and Linux are supported. But now the
4769 currently only NoColor and Linux are supported. But now the
4764 infrastructure is in place, based on a generic ColorScheme
4770 infrastructure is in place, based on a generic ColorScheme
4765 class. So writing and activating new schemes both for the prompts
4771 class. So writing and activating new schemes both for the prompts
4766 and the tracebacks should be straightforward.
4772 and the tracebacks should be straightforward.
4767
4773
4768 * Version 0.1.13 released, 0.1.14 opened.
4774 * Version 0.1.13 released, 0.1.14 opened.
4769
4775
4770 * Changed handling of options for output cache. Now counter is
4776 * Changed handling of options for output cache. Now counter is
4771 hardwired starting at 1 and one specifies the maximum number of
4777 hardwired starting at 1 and one specifies the maximum number of
4772 entries *in the outcache* (not the max prompt counter). This is
4778 entries *in the outcache* (not the max prompt counter). This is
4773 much better, since many statements won't increase the cache
4779 much better, since many statements won't increase the cache
4774 count. It also eliminated some confusing options, now there's only
4780 count. It also eliminated some confusing options, now there's only
4775 one: cache_size.
4781 one: cache_size.
4776
4782
4777 * Added 'alias' magic function and magic_alias option in the
4783 * Added 'alias' magic function and magic_alias option in the
4778 ipythonrc file. Now the user can easily define whatever names he
4784 ipythonrc file. Now the user can easily define whatever names he
4779 wants for the magic functions without having to play weird
4785 wants for the magic functions without having to play weird
4780 namespace games. This gives IPython a real shell-like feel.
4786 namespace games. This gives IPython a real shell-like feel.
4781
4787
4782 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4788 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4783 @ or not).
4789 @ or not).
4784
4790
4785 This was one of the last remaining 'visible' bugs (that I know
4791 This was one of the last remaining 'visible' bugs (that I know
4786 of). I think if I can clean up the session loading so it works
4792 of). I think if I can clean up the session loading so it works
4787 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4793 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4788 about licensing).
4794 about licensing).
4789
4795
4790 2001-11-25 Fernando Perez <fperez@colorado.edu>
4796 2001-11-25 Fernando Perez <fperez@colorado.edu>
4791
4797
4792 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4798 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4793 there's a cleaner distinction between what ? and ?? show.
4799 there's a cleaner distinction between what ? and ?? show.
4794
4800
4795 * Added screen_length option. Now the user can define his own
4801 * Added screen_length option. Now the user can define his own
4796 screen size for page() operations.
4802 screen size for page() operations.
4797
4803
4798 * Implemented magic shell-like functions with automatic code
4804 * Implemented magic shell-like functions with automatic code
4799 generation. Now adding another function is just a matter of adding
4805 generation. Now adding another function is just a matter of adding
4800 an entry to a dict, and the function is dynamically generated at
4806 an entry to a dict, and the function is dynamically generated at
4801 run-time. Python has some really cool features!
4807 run-time. Python has some really cool features!
4802
4808
4803 * Renamed many options to cleanup conventions a little. Now all
4809 * Renamed many options to cleanup conventions a little. Now all
4804 are lowercase, and only underscores where needed. Also in the code
4810 are lowercase, and only underscores where needed. Also in the code
4805 option name tables are clearer.
4811 option name tables are clearer.
4806
4812
4807 * Changed prompts a little. Now input is 'In [n]:' instead of
4813 * Changed prompts a little. Now input is 'In [n]:' instead of
4808 'In[n]:='. This allows it the numbers to be aligned with the
4814 'In[n]:='. This allows it the numbers to be aligned with the
4809 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4815 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4810 Python (it was a Mathematica thing). The '...' continuation prompt
4816 Python (it was a Mathematica thing). The '...' continuation prompt
4811 was also changed a little to align better.
4817 was also changed a little to align better.
4812
4818
4813 * Fixed bug when flushing output cache. Not all _p<n> variables
4819 * Fixed bug when flushing output cache. Not all _p<n> variables
4814 exist, so their deletion needs to be wrapped in a try:
4820 exist, so their deletion needs to be wrapped in a try:
4815
4821
4816 * Figured out how to properly use inspect.formatargspec() (it
4822 * Figured out how to properly use inspect.formatargspec() (it
4817 requires the args preceded by *). So I removed all the code from
4823 requires the args preceded by *). So I removed all the code from
4818 _get_pdef in Magic, which was just replicating that.
4824 _get_pdef in Magic, which was just replicating that.
4819
4825
4820 * Added test to prefilter to allow redefining magic function names
4826 * Added test to prefilter to allow redefining magic function names
4821 as variables. This is ok, since the @ form is always available,
4827 as variables. This is ok, since the @ form is always available,
4822 but whe should allow the user to define a variable called 'ls' if
4828 but whe should allow the user to define a variable called 'ls' if
4823 he needs it.
4829 he needs it.
4824
4830
4825 * Moved the ToDo information from README into a separate ToDo.
4831 * Moved the ToDo information from README into a separate ToDo.
4826
4832
4827 * General code cleanup and small bugfixes. I think it's close to a
4833 * General code cleanup and small bugfixes. I think it's close to a
4828 state where it can be released, obviously with a big 'beta'
4834 state where it can be released, obviously with a big 'beta'
4829 warning on it.
4835 warning on it.
4830
4836
4831 * Got the magic function split to work. Now all magics are defined
4837 * Got the magic function split to work. Now all magics are defined
4832 in a separate class. It just organizes things a bit, and now
4838 in a separate class. It just organizes things a bit, and now
4833 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4839 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4834 was too long).
4840 was too long).
4835
4841
4836 * Changed @clear to @reset to avoid potential confusions with
4842 * Changed @clear to @reset to avoid potential confusions with
4837 the shell command clear. Also renamed @cl to @clear, which does
4843 the shell command clear. Also renamed @cl to @clear, which does
4838 exactly what people expect it to from their shell experience.
4844 exactly what people expect it to from their shell experience.
4839
4845
4840 Added a check to the @reset command (since it's so
4846 Added a check to the @reset command (since it's so
4841 destructive, it's probably a good idea to ask for confirmation).
4847 destructive, it's probably a good idea to ask for confirmation).
4842 But now reset only works for full namespace resetting. Since the
4848 But now reset only works for full namespace resetting. Since the
4843 del keyword is already there for deleting a few specific
4849 del keyword is already there for deleting a few specific
4844 variables, I don't see the point of having a redundant magic
4850 variables, I don't see the point of having a redundant magic
4845 function for the same task.
4851 function for the same task.
4846
4852
4847 2001-11-24 Fernando Perez <fperez@colorado.edu>
4853 2001-11-24 Fernando Perez <fperez@colorado.edu>
4848
4854
4849 * Updated the builtin docs (esp. the ? ones).
4855 * Updated the builtin docs (esp. the ? ones).
4850
4856
4851 * Ran all the code through pychecker. Not terribly impressed with
4857 * Ran all the code through pychecker. Not terribly impressed with
4852 it: lots of spurious warnings and didn't really find anything of
4858 it: lots of spurious warnings and didn't really find anything of
4853 substance (just a few modules being imported and not used).
4859 substance (just a few modules being imported and not used).
4854
4860
4855 * Implemented the new ultraTB functionality into IPython. New
4861 * Implemented the new ultraTB functionality into IPython. New
4856 option: xcolors. This chooses color scheme. xmode now only selects
4862 option: xcolors. This chooses color scheme. xmode now only selects
4857 between Plain and Verbose. Better orthogonality.
4863 between Plain and Verbose. Better orthogonality.
4858
4864
4859 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4865 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4860 mode and color scheme for the exception handlers. Now it's
4866 mode and color scheme for the exception handlers. Now it's
4861 possible to have the verbose traceback with no coloring.
4867 possible to have the verbose traceback with no coloring.
4862
4868
4863 2001-11-23 Fernando Perez <fperez@colorado.edu>
4869 2001-11-23 Fernando Perez <fperez@colorado.edu>
4864
4870
4865 * Version 0.1.12 released, 0.1.13 opened.
4871 * Version 0.1.12 released, 0.1.13 opened.
4866
4872
4867 * Removed option to set auto-quote and auto-paren escapes by
4873 * Removed option to set auto-quote and auto-paren escapes by
4868 user. The chances of breaking valid syntax are just too high. If
4874 user. The chances of breaking valid syntax are just too high. If
4869 someone *really* wants, they can always dig into the code.
4875 someone *really* wants, they can always dig into the code.
4870
4876
4871 * Made prompt separators configurable.
4877 * Made prompt separators configurable.
4872
4878
4873 2001-11-22 Fernando Perez <fperez@colorado.edu>
4879 2001-11-22 Fernando Perez <fperez@colorado.edu>
4874
4880
4875 * Small bugfixes in many places.
4881 * Small bugfixes in many places.
4876
4882
4877 * Removed the MyCompleter class from ipplib. It seemed redundant
4883 * Removed the MyCompleter class from ipplib. It seemed redundant
4878 with the C-p,C-n history search functionality. Less code to
4884 with the C-p,C-n history search functionality. Less code to
4879 maintain.
4885 maintain.
4880
4886
4881 * Moved all the original ipython.py code into ipythonlib.py. Right
4887 * Moved all the original ipython.py code into ipythonlib.py. Right
4882 now it's just one big dump into a function called make_IPython, so
4888 now it's just one big dump into a function called make_IPython, so
4883 no real modularity has been gained. But at least it makes the
4889 no real modularity has been gained. But at least it makes the
4884 wrapper script tiny, and since ipythonlib is a module, it gets
4890 wrapper script tiny, and since ipythonlib is a module, it gets
4885 compiled and startup is much faster.
4891 compiled and startup is much faster.
4886
4892
4887 This is a reasobably 'deep' change, so we should test it for a
4893 This is a reasobably 'deep' change, so we should test it for a
4888 while without messing too much more with the code.
4894 while without messing too much more with the code.
4889
4895
4890 2001-11-21 Fernando Perez <fperez@colorado.edu>
4896 2001-11-21 Fernando Perez <fperez@colorado.edu>
4891
4897
4892 * Version 0.1.11 released, 0.1.12 opened for further work.
4898 * Version 0.1.11 released, 0.1.12 opened for further work.
4893
4899
4894 * Removed dependency on Itpl. It was only needed in one place. It
4900 * Removed dependency on Itpl. It was only needed in one place. It
4895 would be nice if this became part of python, though. It makes life
4901 would be nice if this became part of python, though. It makes life
4896 *a lot* easier in some cases.
4902 *a lot* easier in some cases.
4897
4903
4898 * Simplified the prefilter code a bit. Now all handlers are
4904 * Simplified the prefilter code a bit. Now all handlers are
4899 expected to explicitly return a value (at least a blank string).
4905 expected to explicitly return a value (at least a blank string).
4900
4906
4901 * Heavy edits in ipplib. Removed the help system altogether. Now
4907 * Heavy edits in ipplib. Removed the help system altogether. Now
4902 obj?/?? is used for inspecting objects, a magic @doc prints
4908 obj?/?? is used for inspecting objects, a magic @doc prints
4903 docstrings, and full-blown Python help is accessed via the 'help'
4909 docstrings, and full-blown Python help is accessed via the 'help'
4904 keyword. This cleans up a lot of code (less to maintain) and does
4910 keyword. This cleans up a lot of code (less to maintain) and does
4905 the job. Since 'help' is now a standard Python component, might as
4911 the job. Since 'help' is now a standard Python component, might as
4906 well use it and remove duplicate functionality.
4912 well use it and remove duplicate functionality.
4907
4913
4908 Also removed the option to use ipplib as a standalone program. By
4914 Also removed the option to use ipplib as a standalone program. By
4909 now it's too dependent on other parts of IPython to function alone.
4915 now it's too dependent on other parts of IPython to function alone.
4910
4916
4911 * Fixed bug in genutils.pager. It would crash if the pager was
4917 * Fixed bug in genutils.pager. It would crash if the pager was
4912 exited immediately after opening (broken pipe).
4918 exited immediately after opening (broken pipe).
4913
4919
4914 * Trimmed down the VerboseTB reporting a little. The header is
4920 * Trimmed down the VerboseTB reporting a little. The header is
4915 much shorter now and the repeated exception arguments at the end
4921 much shorter now and the repeated exception arguments at the end
4916 have been removed. For interactive use the old header seemed a bit
4922 have been removed. For interactive use the old header seemed a bit
4917 excessive.
4923 excessive.
4918
4924
4919 * Fixed small bug in output of @whos for variables with multi-word
4925 * Fixed small bug in output of @whos for variables with multi-word
4920 types (only first word was displayed).
4926 types (only first word was displayed).
4921
4927
4922 2001-11-17 Fernando Perez <fperez@colorado.edu>
4928 2001-11-17 Fernando Perez <fperez@colorado.edu>
4923
4929
4924 * Version 0.1.10 released, 0.1.11 opened for further work.
4930 * Version 0.1.10 released, 0.1.11 opened for further work.
4925
4931
4926 * Modified dirs and friends. dirs now *returns* the stack (not
4932 * Modified dirs and friends. dirs now *returns* the stack (not
4927 prints), so one can manipulate it as a variable. Convenient to
4933 prints), so one can manipulate it as a variable. Convenient to
4928 travel along many directories.
4934 travel along many directories.
4929
4935
4930 * Fixed bug in magic_pdef: would only work with functions with
4936 * Fixed bug in magic_pdef: would only work with functions with
4931 arguments with default values.
4937 arguments with default values.
4932
4938
4933 2001-11-14 Fernando Perez <fperez@colorado.edu>
4939 2001-11-14 Fernando Perez <fperez@colorado.edu>
4934
4940
4935 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4941 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4936 example with IPython. Various other minor fixes and cleanups.
4942 example with IPython. Various other minor fixes and cleanups.
4937
4943
4938 * Version 0.1.9 released, 0.1.10 opened for further work.
4944 * Version 0.1.9 released, 0.1.10 opened for further work.
4939
4945
4940 * Added sys.path to the list of directories searched in the
4946 * Added sys.path to the list of directories searched in the
4941 execfile= option. It used to be the current directory and the
4947 execfile= option. It used to be the current directory and the
4942 user's IPYTHONDIR only.
4948 user's IPYTHONDIR only.
4943
4949
4944 2001-11-13 Fernando Perez <fperez@colorado.edu>
4950 2001-11-13 Fernando Perez <fperez@colorado.edu>
4945
4951
4946 * Reinstated the raw_input/prefilter separation that Janko had
4952 * Reinstated the raw_input/prefilter separation that Janko had
4947 initially. This gives a more convenient setup for extending the
4953 initially. This gives a more convenient setup for extending the
4948 pre-processor from the outside: raw_input always gets a string,
4954 pre-processor from the outside: raw_input always gets a string,
4949 and prefilter has to process it. We can then redefine prefilter
4955 and prefilter has to process it. We can then redefine prefilter
4950 from the outside and implement extensions for special
4956 from the outside and implement extensions for special
4951 purposes.
4957 purposes.
4952
4958
4953 Today I got one for inputting PhysicalQuantity objects
4959 Today I got one for inputting PhysicalQuantity objects
4954 (from Scientific) without needing any function calls at
4960 (from Scientific) without needing any function calls at
4955 all. Extremely convenient, and it's all done as a user-level
4961 all. Extremely convenient, and it's all done as a user-level
4956 extension (no IPython code was touched). Now instead of:
4962 extension (no IPython code was touched). Now instead of:
4957 a = PhysicalQuantity(4.2,'m/s**2')
4963 a = PhysicalQuantity(4.2,'m/s**2')
4958 one can simply say
4964 one can simply say
4959 a = 4.2 m/s**2
4965 a = 4.2 m/s**2
4960 or even
4966 or even
4961 a = 4.2 m/s^2
4967 a = 4.2 m/s^2
4962
4968
4963 I use this, but it's also a proof of concept: IPython really is
4969 I use this, but it's also a proof of concept: IPython really is
4964 fully user-extensible, even at the level of the parsing of the
4970 fully user-extensible, even at the level of the parsing of the
4965 command line. It's not trivial, but it's perfectly doable.
4971 command line. It's not trivial, but it's perfectly doable.
4966
4972
4967 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4973 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4968 the problem of modules being loaded in the inverse order in which
4974 the problem of modules being loaded in the inverse order in which
4969 they were defined in
4975 they were defined in
4970
4976
4971 * Version 0.1.8 released, 0.1.9 opened for further work.
4977 * Version 0.1.8 released, 0.1.9 opened for further work.
4972
4978
4973 * Added magics pdef, source and file. They respectively show the
4979 * Added magics pdef, source and file. They respectively show the
4974 definition line ('prototype' in C), source code and full python
4980 definition line ('prototype' in C), source code and full python
4975 file for any callable object. The object inspector oinfo uses
4981 file for any callable object. The object inspector oinfo uses
4976 these to show the same information.
4982 these to show the same information.
4977
4983
4978 * Version 0.1.7 released, 0.1.8 opened for further work.
4984 * Version 0.1.7 released, 0.1.8 opened for further work.
4979
4985
4980 * Separated all the magic functions into a class called Magic. The
4986 * Separated all the magic functions into a class called Magic. The
4981 InteractiveShell class was becoming too big for Xemacs to handle
4987 InteractiveShell class was becoming too big for Xemacs to handle
4982 (de-indenting a line would lock it up for 10 seconds while it
4988 (de-indenting a line would lock it up for 10 seconds while it
4983 backtracked on the whole class!)
4989 backtracked on the whole class!)
4984
4990
4985 FIXME: didn't work. It can be done, but right now namespaces are
4991 FIXME: didn't work. It can be done, but right now namespaces are
4986 all messed up. Do it later (reverted it for now, so at least
4992 all messed up. Do it later (reverted it for now, so at least
4987 everything works as before).
4993 everything works as before).
4988
4994
4989 * Got the object introspection system (magic_oinfo) working! I
4995 * Got the object introspection system (magic_oinfo) working! I
4990 think this is pretty much ready for release to Janko, so he can
4996 think this is pretty much ready for release to Janko, so he can
4991 test it for a while and then announce it. Pretty much 100% of what
4997 test it for a while and then announce it. Pretty much 100% of what
4992 I wanted for the 'phase 1' release is ready. Happy, tired.
4998 I wanted for the 'phase 1' release is ready. Happy, tired.
4993
4999
4994 2001-11-12 Fernando Perez <fperez@colorado.edu>
5000 2001-11-12 Fernando Perez <fperez@colorado.edu>
4995
5001
4996 * Version 0.1.6 released, 0.1.7 opened for further work.
5002 * Version 0.1.6 released, 0.1.7 opened for further work.
4997
5003
4998 * Fixed bug in printing: it used to test for truth before
5004 * Fixed bug in printing: it used to test for truth before
4999 printing, so 0 wouldn't print. Now checks for None.
5005 printing, so 0 wouldn't print. Now checks for None.
5000
5006
5001 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5007 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5002 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5008 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5003 reaches by hand into the outputcache. Think of a better way to do
5009 reaches by hand into the outputcache. Think of a better way to do
5004 this later.
5010 this later.
5005
5011
5006 * Various small fixes thanks to Nathan's comments.
5012 * Various small fixes thanks to Nathan's comments.
5007
5013
5008 * Changed magic_pprint to magic_Pprint. This way it doesn't
5014 * Changed magic_pprint to magic_Pprint. This way it doesn't
5009 collide with pprint() and the name is consistent with the command
5015 collide with pprint() and the name is consistent with the command
5010 line option.
5016 line option.
5011
5017
5012 * Changed prompt counter behavior to be fully like
5018 * Changed prompt counter behavior to be fully like
5013 Mathematica's. That is, even input that doesn't return a result
5019 Mathematica's. That is, even input that doesn't return a result
5014 raises the prompt counter. The old behavior was kind of confusing
5020 raises the prompt counter. The old behavior was kind of confusing
5015 (getting the same prompt number several times if the operation
5021 (getting the same prompt number several times if the operation
5016 didn't return a result).
5022 didn't return a result).
5017
5023
5018 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5024 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5019
5025
5020 * Fixed -Classic mode (wasn't working anymore).
5026 * Fixed -Classic mode (wasn't working anymore).
5021
5027
5022 * Added colored prompts using Nathan's new code. Colors are
5028 * Added colored prompts using Nathan's new code. Colors are
5023 currently hardwired, they can be user-configurable. For
5029 currently hardwired, they can be user-configurable. For
5024 developers, they can be chosen in file ipythonlib.py, at the
5030 developers, they can be chosen in file ipythonlib.py, at the
5025 beginning of the CachedOutput class def.
5031 beginning of the CachedOutput class def.
5026
5032
5027 2001-11-11 Fernando Perez <fperez@colorado.edu>
5033 2001-11-11 Fernando Perez <fperez@colorado.edu>
5028
5034
5029 * Version 0.1.5 released, 0.1.6 opened for further work.
5035 * Version 0.1.5 released, 0.1.6 opened for further work.
5030
5036
5031 * Changed magic_env to *return* the environment as a dict (not to
5037 * Changed magic_env to *return* the environment as a dict (not to
5032 print it). This way it prints, but it can also be processed.
5038 print it). This way it prints, but it can also be processed.
5033
5039
5034 * Added Verbose exception reporting to interactive
5040 * Added Verbose exception reporting to interactive
5035 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5041 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5036 traceback. Had to make some changes to the ultraTB file. This is
5042 traceback. Had to make some changes to the ultraTB file. This is
5037 probably the last 'big' thing in my mental todo list. This ties
5043 probably the last 'big' thing in my mental todo list. This ties
5038 in with the next entry:
5044 in with the next entry:
5039
5045
5040 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5046 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5041 has to specify is Plain, Color or Verbose for all exception
5047 has to specify is Plain, Color or Verbose for all exception
5042 handling.
5048 handling.
5043
5049
5044 * Removed ShellServices option. All this can really be done via
5050 * Removed ShellServices option. All this can really be done via
5045 the magic system. It's easier to extend, cleaner and has automatic
5051 the magic system. It's easier to extend, cleaner and has automatic
5046 namespace protection and documentation.
5052 namespace protection and documentation.
5047
5053
5048 2001-11-09 Fernando Perez <fperez@colorado.edu>
5054 2001-11-09 Fernando Perez <fperez@colorado.edu>
5049
5055
5050 * Fixed bug in output cache flushing (missing parameter to
5056 * Fixed bug in output cache flushing (missing parameter to
5051 __init__). Other small bugs fixed (found using pychecker).
5057 __init__). Other small bugs fixed (found using pychecker).
5052
5058
5053 * Version 0.1.4 opened for bugfixing.
5059 * Version 0.1.4 opened for bugfixing.
5054
5060
5055 2001-11-07 Fernando Perez <fperez@colorado.edu>
5061 2001-11-07 Fernando Perez <fperez@colorado.edu>
5056
5062
5057 * Version 0.1.3 released, mainly because of the raw_input bug.
5063 * Version 0.1.3 released, mainly because of the raw_input bug.
5058
5064
5059 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5065 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5060 and when testing for whether things were callable, a call could
5066 and when testing for whether things were callable, a call could
5061 actually be made to certain functions. They would get called again
5067 actually be made to certain functions. They would get called again
5062 once 'really' executed, with a resulting double call. A disaster
5068 once 'really' executed, with a resulting double call. A disaster
5063 in many cases (list.reverse() would never work!).
5069 in many cases (list.reverse() would never work!).
5064
5070
5065 * Removed prefilter() function, moved its code to raw_input (which
5071 * Removed prefilter() function, moved its code to raw_input (which
5066 after all was just a near-empty caller for prefilter). This saves
5072 after all was just a near-empty caller for prefilter). This saves
5067 a function call on every prompt, and simplifies the class a tiny bit.
5073 a function call on every prompt, and simplifies the class a tiny bit.
5068
5074
5069 * Fix _ip to __ip name in magic example file.
5075 * Fix _ip to __ip name in magic example file.
5070
5076
5071 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5077 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5072 work with non-gnu versions of tar.
5078 work with non-gnu versions of tar.
5073
5079
5074 2001-11-06 Fernando Perez <fperez@colorado.edu>
5080 2001-11-06 Fernando Perez <fperez@colorado.edu>
5075
5081
5076 * Version 0.1.2. Just to keep track of the recent changes.
5082 * Version 0.1.2. Just to keep track of the recent changes.
5077
5083
5078 * Fixed nasty bug in output prompt routine. It used to check 'if
5084 * Fixed nasty bug in output prompt routine. It used to check 'if
5079 arg != None...'. Problem is, this fails if arg implements a
5085 arg != None...'. Problem is, this fails if arg implements a
5080 special comparison (__cmp__) which disallows comparing to
5086 special comparison (__cmp__) which disallows comparing to
5081 None. Found it when trying to use the PhysicalQuantity module from
5087 None. Found it when trying to use the PhysicalQuantity module from
5082 ScientificPython.
5088 ScientificPython.
5083
5089
5084 2001-11-05 Fernando Perez <fperez@colorado.edu>
5090 2001-11-05 Fernando Perez <fperez@colorado.edu>
5085
5091
5086 * Also added dirs. Now the pushd/popd/dirs family functions
5092 * Also added dirs. Now the pushd/popd/dirs family functions
5087 basically like the shell, with the added convenience of going home
5093 basically like the shell, with the added convenience of going home
5088 when called with no args.
5094 when called with no args.
5089
5095
5090 * pushd/popd slightly modified to mimic shell behavior more
5096 * pushd/popd slightly modified to mimic shell behavior more
5091 closely.
5097 closely.
5092
5098
5093 * Added env,pushd,popd from ShellServices as magic functions. I
5099 * Added env,pushd,popd from ShellServices as magic functions. I
5094 think the cleanest will be to port all desired functions from
5100 think the cleanest will be to port all desired functions from
5095 ShellServices as magics and remove ShellServices altogether. This
5101 ShellServices as magics and remove ShellServices altogether. This
5096 will provide a single, clean way of adding functionality
5102 will provide a single, clean way of adding functionality
5097 (shell-type or otherwise) to IP.
5103 (shell-type or otherwise) to IP.
5098
5104
5099 2001-11-04 Fernando Perez <fperez@colorado.edu>
5105 2001-11-04 Fernando Perez <fperez@colorado.edu>
5100
5106
5101 * Added .ipython/ directory to sys.path. This way users can keep
5107 * Added .ipython/ directory to sys.path. This way users can keep
5102 customizations there and access them via import.
5108 customizations there and access them via import.
5103
5109
5104 2001-11-03 Fernando Perez <fperez@colorado.edu>
5110 2001-11-03 Fernando Perez <fperez@colorado.edu>
5105
5111
5106 * Opened version 0.1.1 for new changes.
5112 * Opened version 0.1.1 for new changes.
5107
5113
5108 * Changed version number to 0.1.0: first 'public' release, sent to
5114 * Changed version number to 0.1.0: first 'public' release, sent to
5109 Nathan and Janko.
5115 Nathan and Janko.
5110
5116
5111 * Lots of small fixes and tweaks.
5117 * Lots of small fixes and tweaks.
5112
5118
5113 * Minor changes to whos format. Now strings are shown, snipped if
5119 * Minor changes to whos format. Now strings are shown, snipped if
5114 too long.
5120 too long.
5115
5121
5116 * Changed ShellServices to work on __main__ so they show up in @who
5122 * Changed ShellServices to work on __main__ so they show up in @who
5117
5123
5118 * Help also works with ? at the end of a line:
5124 * Help also works with ? at the end of a line:
5119 ?sin and sin?
5125 ?sin and sin?
5120 both produce the same effect. This is nice, as often I use the
5126 both produce the same effect. This is nice, as often I use the
5121 tab-complete to find the name of a method, but I used to then have
5127 tab-complete to find the name of a method, but I used to then have
5122 to go to the beginning of the line to put a ? if I wanted more
5128 to go to the beginning of the line to put a ? if I wanted more
5123 info. Now I can just add the ? and hit return. Convenient.
5129 info. Now I can just add the ? and hit return. Convenient.
5124
5130
5125 2001-11-02 Fernando Perez <fperez@colorado.edu>
5131 2001-11-02 Fernando Perez <fperez@colorado.edu>
5126
5132
5127 * Python version check (>=2.1) added.
5133 * Python version check (>=2.1) added.
5128
5134
5129 * Added LazyPython documentation. At this point the docs are quite
5135 * Added LazyPython documentation. At this point the docs are quite
5130 a mess. A cleanup is in order.
5136 a mess. A cleanup is in order.
5131
5137
5132 * Auto-installer created. For some bizarre reason, the zipfiles
5138 * Auto-installer created. For some bizarre reason, the zipfiles
5133 module isn't working on my system. So I made a tar version
5139 module isn't working on my system. So I made a tar version
5134 (hopefully the command line options in various systems won't kill
5140 (hopefully the command line options in various systems won't kill
5135 me).
5141 me).
5136
5142
5137 * Fixes to Struct in genutils. Now all dictionary-like methods are
5143 * Fixes to Struct in genutils. Now all dictionary-like methods are
5138 protected (reasonably).
5144 protected (reasonably).
5139
5145
5140 * Added pager function to genutils and changed ? to print usage
5146 * Added pager function to genutils and changed ? to print usage
5141 note through it (it was too long).
5147 note through it (it was too long).
5142
5148
5143 * Added the LazyPython functionality. Works great! I changed the
5149 * Added the LazyPython functionality. Works great! I changed the
5144 auto-quote escape to ';', it's on home row and next to '. But
5150 auto-quote escape to ';', it's on home row and next to '. But
5145 both auto-quote and auto-paren (still /) escapes are command-line
5151 both auto-quote and auto-paren (still /) escapes are command-line
5146 parameters.
5152 parameters.
5147
5153
5148
5154
5149 2001-11-01 Fernando Perez <fperez@colorado.edu>
5155 2001-11-01 Fernando Perez <fperez@colorado.edu>
5150
5156
5151 * Version changed to 0.0.7. Fairly large change: configuration now
5157 * Version changed to 0.0.7. Fairly large change: configuration now
5152 is all stored in a directory, by default .ipython. There, all
5158 is all stored in a directory, by default .ipython. There, all
5153 config files have normal looking names (not .names)
5159 config files have normal looking names (not .names)
5154
5160
5155 * Version 0.0.6 Released first to Lucas and Archie as a test
5161 * Version 0.0.6 Released first to Lucas and Archie as a test
5156 run. Since it's the first 'semi-public' release, change version to
5162 run. Since it's the first 'semi-public' release, change version to
5157 > 0.0.6 for any changes now.
5163 > 0.0.6 for any changes now.
5158
5164
5159 * Stuff I had put in the ipplib.py changelog:
5165 * Stuff I had put in the ipplib.py changelog:
5160
5166
5161 Changes to InteractiveShell:
5167 Changes to InteractiveShell:
5162
5168
5163 - Made the usage message a parameter.
5169 - Made the usage message a parameter.
5164
5170
5165 - Require the name of the shell variable to be given. It's a bit
5171 - Require the name of the shell variable to be given. It's a bit
5166 of a hack, but allows the name 'shell' not to be hardwire in the
5172 of a hack, but allows the name 'shell' not to be hardwire in the
5167 magic (@) handler, which is problematic b/c it requires
5173 magic (@) handler, which is problematic b/c it requires
5168 polluting the global namespace with 'shell'. This in turn is
5174 polluting the global namespace with 'shell'. This in turn is
5169 fragile: if a user redefines a variable called shell, things
5175 fragile: if a user redefines a variable called shell, things
5170 break.
5176 break.
5171
5177
5172 - magic @: all functions available through @ need to be defined
5178 - magic @: all functions available through @ need to be defined
5173 as magic_<name>, even though they can be called simply as
5179 as magic_<name>, even though they can be called simply as
5174 @<name>. This allows the special command @magic to gather
5180 @<name>. This allows the special command @magic to gather
5175 information automatically about all existing magic functions,
5181 information automatically about all existing magic functions,
5176 even if they are run-time user extensions, by parsing the shell
5182 even if they are run-time user extensions, by parsing the shell
5177 instance __dict__ looking for special magic_ names.
5183 instance __dict__ looking for special magic_ names.
5178
5184
5179 - mainloop: added *two* local namespace parameters. This allows
5185 - mainloop: added *two* local namespace parameters. This allows
5180 the class to differentiate between parameters which were there
5186 the class to differentiate between parameters which were there
5181 before and after command line initialization was processed. This
5187 before and after command line initialization was processed. This
5182 way, later @who can show things loaded at startup by the
5188 way, later @who can show things loaded at startup by the
5183 user. This trick was necessary to make session saving/reloading
5189 user. This trick was necessary to make session saving/reloading
5184 really work: ideally after saving/exiting/reloading a session,
5190 really work: ideally after saving/exiting/reloading a session,
5185 *everythin* should look the same, including the output of @who. I
5191 *everythin* should look the same, including the output of @who. I
5186 was only able to make this work with this double namespace
5192 was only able to make this work with this double namespace
5187 trick.
5193 trick.
5188
5194
5189 - added a header to the logfile which allows (almost) full
5195 - added a header to the logfile which allows (almost) full
5190 session restoring.
5196 session restoring.
5191
5197
5192 - prepend lines beginning with @ or !, with a and log
5198 - prepend lines beginning with @ or !, with a and log
5193 them. Why? !lines: may be useful to know what you did @lines:
5199 them. Why? !lines: may be useful to know what you did @lines:
5194 they may affect session state. So when restoring a session, at
5200 they may affect session state. So when restoring a session, at
5195 least inform the user of their presence. I couldn't quite get
5201 least inform the user of their presence. I couldn't quite get
5196 them to properly re-execute, but at least the user is warned.
5202 them to properly re-execute, but at least the user is warned.
5197
5203
5198 * Started ChangeLog.
5204 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now