##// END OF EJS Templates
Incorporate html help into the module, so we don't have to search for the file.
walter.doerwald -
Show More
@@ -1,825 +1,914 b''
1 # -*- coding: iso-8859-1 -*-
1 # -*- coding: iso-8859-1 -*-
2
2
3 import ipipe, os, webbrowser, urllib
3 import ipipe, os, webbrowser, urllib
4 import wx
4 import wx
5 import wx.grid, wx.html
5 import wx.grid, wx.html
6
6
7 try:
7 try:
8 sorted
8 sorted
9 except NameError:
9 except NameError:
10 from ipipe import sorted
10 from ipipe import sorted
11
11
12
12
13 __all__ = ["igrid"]
13 __all__ = ["igrid"]
14
14
15
15
16 help = """
17 <?xml version='1.0' encoding='iso-8859-1'?>
18 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
19 <html>
20 <head>
21 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
22 <link rel="stylesheet" href="igrid_help.css" type="text/css" />
23 <title>igrid help</title>
24 </head>
25 <body>
26 <h1>igrid help</h1>
27
28
29 <h2>Commands</h2>
30
31
32 <h3>pick (P)</h3>
33 <p>Pick the whole row (object is available as "_")</p>
34
35 <h3>pickattr (Shift-P)</h3>
36 <p>Pick the attribute under the cursor</p>
37
38 <h3>pickallattrs (Shift-C)</h3>
39 <p>Pick' the complete column under the cursor (i.e. the attribute under the
40 cursor) from all currently fetched objects. These attributes will be returned
41 as a list.</p>
42
43 <h3>enter (E)</h3>
44 <p>Enter the object under the cursor. (what this mean depends on the object
45 itself, i.e. how it implements iteration). This opens a new browser 'level'.</p>
46
47 <h3>enterattr (Shift-E)</h3>
48 <p>Enter the attribute under the cursor.</p>
49
50 <h3>detail (D)</h3>
51 <p>Show a detail view of the object under the cursor. This shows the name,
52 type, doc string and value of the object attributes (and it might show more
53 attributes than in the list view, depending on the object).</p>
54
55 <h3>detailattr (Shift-D)</h3>
56 <p>Show a detail view of the attribute under the cursor.</p>
57
58 <h3>pickrows (M)</h3>
59 <p>Pick multiple selected rows (M)</p>
60
61 <h3>pickrowsattr (CTRL-M)</h3>
62 <p>From multiple selected rows pick the cells matching the attribute the cursor is in (CTRL-M)</p>
63
64 <h3>find (CTRL-F)</h3>
65 <p>Find text</p>
66
67 <h3>find_next (F3)</h3>
68 <p>Find next occurrence of the searchtext</p>
69
70 <h3>find_previous (Shift-F3)</h3>
71 <p>Find previous occurrence of the searchtext </p>
72
73 <h3>sortattrasc (V)</h3>
74 <p>Sort the objects (in ascending order) using the attribute under the cursor as the sort key.</p>
75
76 <h3>sortattrdesc (Shift-V)</h3>
77 <p>Sort the objects (in descending order) using the attribute under the cursor as the sort key.</p>
78
79 <h3>leave (Backspace, DEL, X)</h3>
80 <p>Close current tab (and all the tabs to the right of the current one).</h3>
81
82 <h3>quit (ESC,Q)</h3>
83 <p>Quit igrid and return to the IPython prompt.</p>
84
85
86 <h2>Navigation</h2>
87
88
89 <h3>Jump to the last column of the current row (END, CTRL-E, CTRL-Right)</h3>
90
91 <h3>Jump to the first column of the current row (HOME, CTRL-A, CTRL-Left)</h3>
92
93 <h3>Move the cursor one column to the left (&lt;)</h3>
94
95 <h3>Move the cursor one column to the right (&gt;)</h3>
96
97 <h3>Jump to the first row in the current column (CTRL-Up)</h3>
98
99 <h3>Jump to the last row in the current column (CTRL-Down)</h3>
100
101 </body>
102 </html>
103 """
104
105
16 class IGridRenderer(wx.grid.PyGridCellRenderer):
106 class IGridRenderer(wx.grid.PyGridCellRenderer):
17 """
107 """
18 This is a custom renderer for our IGridGrid
108 This is a custom renderer for our IGridGrid
19 """
109 """
20 def __init__(self, table):
110 def __init__(self, table):
21 self.maxchars = 200
111 self.maxchars = 200
22 self.table = table
112 self.table = table
23 self.colormap = (
113 self.colormap = (
24 ( 0, 0, 0),
114 ( 0, 0, 0),
25 (174, 0, 0),
115 (174, 0, 0),
26 ( 0, 174, 0),
116 ( 0, 174, 0),
27 (174, 174, 0),
117 (174, 174, 0),
28 ( 0, 0, 174),
118 ( 0, 0, 174),
29 (174, 0, 174),
119 (174, 0, 174),
30 ( 0, 174, 174),
120 ( 0, 174, 174),
31 ( 64, 64, 64)
121 ( 64, 64, 64)
32 )
122 )
33
123
34 wx.grid.PyGridCellRenderer.__init__(self)
124 wx.grid.PyGridCellRenderer.__init__(self)
35
125
36 def _getvalue(self, row, col):
126 def _getvalue(self, row, col):
37 try:
127 try:
38 value = self.table._displayattrs[col].value(self.table.items[row])
128 value = self.table._displayattrs[col].value(self.table.items[row])
39 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
129 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
40 except Exception, exc:
130 except Exception, exc:
41 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
131 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
42 return (align, text)
132 return (align, text)
43
133
44 def GetBestSize(self, grid, attr, dc, row, col):
134 def GetBestSize(self, grid, attr, dc, row, col):
45 text = grid.GetCellValue(row, col)
135 text = grid.GetCellValue(row, col)
46 (align, text) = self._getvalue(row, col)
136 (align, text) = self._getvalue(row, col)
47 dc.SetFont(attr.GetFont())
137 dc.SetFont(attr.GetFont())
48 (w, h) = dc.GetTextExtent(str(text))
138 (w, h) = dc.GetTextExtent(str(text))
49 return wx.Size(min(w+2, 600), h+2) # add border
139 return wx.Size(min(w+2, 600), h+2) # add border
50
140
51 def Draw(self, grid, attr, dc, rect, row, col, isSelected):
141 def Draw(self, grid, attr, dc, rect, row, col, isSelected):
52 """
142 """
53 Takes care of drawing everything in the cell; aligns the text
143 Takes care of drawing everything in the cell; aligns the text
54 """
144 """
55 text = grid.GetCellValue(row, col)
145 text = grid.GetCellValue(row, col)
56 (align, text) = self._getvalue(row, col)
146 (align, text) = self._getvalue(row, col)
57 if isSelected:
147 if isSelected:
58 bg = grid.GetSelectionBackground()
148 bg = grid.GetSelectionBackground()
59 else:
149 else:
60 bg = ["white", (240, 240, 240)][row%2]
150 bg = ["white", (240, 240, 240)][row%2]
61 dc.SetTextBackground(bg)
151 dc.SetTextBackground(bg)
62 dc.SetBrush(wx.Brush(bg, wx.SOLID))
152 dc.SetBrush(wx.Brush(bg, wx.SOLID))
63 dc.SetPen(wx.TRANSPARENT_PEN)
153 dc.SetPen(wx.TRANSPARENT_PEN)
64 dc.SetFont(attr.GetFont())
154 dc.SetFont(attr.GetFont())
65 dc.DrawRectangleRect(rect)
155 dc.DrawRectangleRect(rect)
66 dc.SetClippingRect(rect)
156 dc.SetClippingRect(rect)
67 # Format the text
157 # Format the text
68 if align == -1: # left alignment
158 if align == -1: # left alignment
69 (width, height) = dc.GetTextExtent(str(text))
159 (width, height) = dc.GetTextExtent(str(text))
70 x = rect[0]+1
160 x = rect[0]+1
71 y = rect[1]+0.5*(rect[3]-height)
161 y = rect[1]+0.5*(rect[3]-height)
72
162
73 for (style, part) in text:
163 for (style, part) in text:
74 if isSelected:
164 if isSelected:
75 fg = grid.GetSelectionForeground()
165 fg = grid.GetSelectionForeground()
76 else:
166 else:
77 fg = self.colormap[style.fg]
167 fg = self.colormap[style.fg]
78 dc.SetTextForeground(fg)
168 dc.SetTextForeground(fg)
79 (w, h) = dc.GetTextExtent(part)
169 (w, h) = dc.GetTextExtent(part)
80 dc.DrawText(part, x, y)
170 dc.DrawText(part, x, y)
81 x += w
171 x += w
82 elif align == 0: # center alignment
172 elif align == 0: # center alignment
83 (width, height) = dc.GetTextExtent(str(text))
173 (width, height) = dc.GetTextExtent(str(text))
84 x = rect[0]+0.5*(rect[2]-width)
174 x = rect[0]+0.5*(rect[2]-width)
85 y = rect[1]+0.5*(rect[3]-height)
175 y = rect[1]+0.5*(rect[3]-height)
86 for (style, part) in text:
176 for (style, part) in text:
87 if isSelected:
177 if isSelected:
88 fg = grid.GetSelectionForeground()
178 fg = grid.GetSelectionForeground()
89 else:
179 else:
90 fg = self.colormap[style.fg]
180 fg = self.colormap[style.fg]
91 dc.SetTextForeground(fg)
181 dc.SetTextForeground(fg)
92 (w, h) = dc.GetTextExtent(part)
182 (w, h) = dc.GetTextExtent(part)
93 dc.DrawText(part, x, y)
183 dc.DrawText(part, x, y)
94 x += w
184 x += w
95 else: # right alignment
185 else: # right alignment
96 (width, height) = dc.GetTextExtent(str(text))
186 (width, height) = dc.GetTextExtent(str(text))
97 x = rect[0]+rect[2]-1
187 x = rect[0]+rect[2]-1
98 y = rect[1]+0.5*(rect[3]-height)
188 y = rect[1]+0.5*(rect[3]-height)
99 for (style, part) in reversed(text):
189 for (style, part) in reversed(text):
100 (w, h) = dc.GetTextExtent(part)
190 (w, h) = dc.GetTextExtent(part)
101 x -= w
191 x -= w
102 if isSelected:
192 if isSelected:
103 fg = grid.GetSelectionForeground()
193 fg = grid.GetSelectionForeground()
104 else:
194 else:
105 fg = self.colormap[style.fg]
195 fg = self.colormap[style.fg]
106 dc.SetTextForeground(fg)
196 dc.SetTextForeground(fg)
107 dc.DrawText(part, x, y)
197 dc.DrawText(part, x, y)
108 dc.DestroyClippingRegion()
198 dc.DestroyClippingRegion()
109
199
110 def Clone(self):
200 def Clone(self):
111 return IGridRenderer(self.table)
201 return IGridRenderer(self.table)
112
202
113
203
114 class IGridTable(wx.grid.PyGridTableBase):
204 class IGridTable(wx.grid.PyGridTableBase):
115 # The data table for the ``IGridGrid``. Some dirty tricks were used here:
205 # The data table for the ``IGridGrid``. Some dirty tricks were used here:
116 # ``GetValue()`` does not get any values (or at least it does not return
206 # ``GetValue()`` does not get any values (or at least it does not return
117 # anything, accessing the values is done by the renderer)
207 # anything, accessing the values is done by the renderer)
118 # but rather tries to fetch the objects which were requested into the table.
208 # but rather tries to fetch the objects which were requested into the table.
119 # General behaviour is: Fetch the first X objects. If the user scrolls down
209 # General behaviour is: Fetch the first X objects. If the user scrolls down
120 # to the last object another bunch of X objects is fetched (if possible)
210 # to the last object another bunch of X objects is fetched (if possible)
121 def __init__(self, input, fontsize, *attrs):
211 def __init__(self, input, fontsize, *attrs):
122 wx.grid.PyGridTableBase.__init__(self)
212 wx.grid.PyGridTableBase.__init__(self)
123 self.input = input
213 self.input = input
124 self.iterator = ipipe.xiter(input)
214 self.iterator = ipipe.xiter(input)
125 self.items = []
215 self.items = []
126 self.attrs = [ipipe.upgradexattr(attr) for attr in attrs]
216 self.attrs = [ipipe.upgradexattr(attr) for attr in attrs]
127 self._displayattrs = self.attrs[:]
217 self._displayattrs = self.attrs[:]
128 self._displayattrset = set(self.attrs)
218 self._displayattrset = set(self.attrs)
129 self._sizing = False
219 self._sizing = False
130 self.fontsize = fontsize
220 self.fontsize = fontsize
131 self._fetch(1)
221 self._fetch(1)
132
222
133 def GetAttr(self, *args):
223 def GetAttr(self, *args):
134 attr = wx.grid.GridCellAttr()
224 attr = wx.grid.GridCellAttr()
135 attr.SetFont(wx.Font(self.fontsize, wx.TELETYPE, wx.NORMAL, wx.NORMAL))
225 attr.SetFont(wx.Font(self.fontsize, wx.TELETYPE, wx.NORMAL, wx.NORMAL))
136 return attr
226 return attr
137
227
138 def GetNumberRows(self):
228 def GetNumberRows(self):
139 return len(self.items)
229 return len(self.items)
140
230
141 def GetNumberCols(self):
231 def GetNumberCols(self):
142 return len(self._displayattrs)
232 return len(self._displayattrs)
143
233
144 def GetColLabelValue(self, col):
234 def GetColLabelValue(self, col):
145 if col < len(self._displayattrs):
235 if col < len(self._displayattrs):
146 return self._displayattrs[col].name()
236 return self._displayattrs[col].name()
147 else:
237 else:
148 return ""
238 return ""
149
239
150 def GetRowLabelValue(self, row):
240 def GetRowLabelValue(self, row):
151 return str(row)
241 return str(row)
152
242
153 def IsEmptyCell(self, row, col):
243 def IsEmptyCell(self, row, col):
154 return False
244 return False
155
245
156 def _append(self, item):
246 def _append(self, item):
157 self.items.append(item)
247 self.items.append(item)
158 # Nothing to do if the set of attributes has been fixed by the user
248 # Nothing to do if the set of attributes has been fixed by the user
159 if not self.attrs:
249 if not self.attrs:
160 for attr in ipipe.xattrs(item):
250 for attr in ipipe.xattrs(item):
161 attr = ipipe.upgradexattr(attr)
251 attr = ipipe.upgradexattr(attr)
162 if attr not in self._displayattrset:
252 if attr not in self._displayattrset:
163 self._displayattrs.append(attr)
253 self._displayattrs.append(attr)
164 self._displayattrset.add(attr)
254 self._displayattrset.add(attr)
165
255
166 def _fetch(self, count):
256 def _fetch(self, count):
167 # Try to fill ``self.items`` with at least ``count`` objects.
257 # Try to fill ``self.items`` with at least ``count`` objects.
168 have = len(self.items)
258 have = len(self.items)
169 while self.iterator is not None and have < count:
259 while self.iterator is not None and have < count:
170 try:
260 try:
171 item = self.iterator.next()
261 item = self.iterator.next()
172 except StopIteration:
262 except StopIteration:
173 self.iterator = None
263 self.iterator = None
174 break
264 break
175 except (KeyboardInterrupt, SystemExit):
265 except (KeyboardInterrupt, SystemExit):
176 raise
266 raise
177 except Exception, exc:
267 except Exception, exc:
178 have += 1
268 have += 1
179 self._append(exc)
269 self._append(exc)
180 self.iterator = None
270 self.iterator = None
181 break
271 break
182 else:
272 else:
183 have += 1
273 have += 1
184 self._append(item)
274 self._append(item)
185
275
186 def GetValue(self, row, col):
276 def GetValue(self, row, col):
187 # some kind of dummy-function: does not return anything but "";
277 # some kind of dummy-function: does not return anything but "";
188 # (The value isn't use anyway)
278 # (The value isn't use anyway)
189 # its main task is to trigger the fetch of new objects
279 # its main task is to trigger the fetch of new objects
190 had_cols = self._displayattrs[:]
280 had_cols = self._displayattrs[:]
191 had_rows = len(self.items)
281 had_rows = len(self.items)
192 if row == had_rows - 1 and self.iterator is not None and not self._sizing:
282 if row == had_rows - 1 and self.iterator is not None and not self._sizing:
193 self._fetch(row + 20)
283 self._fetch(row + 20)
194 have_rows = len(self.items)
284 have_rows = len(self.items)
195 have_cols = len(self._displayattrs)
285 have_cols = len(self._displayattrs)
196 if have_rows > had_rows:
286 if have_rows > had_rows:
197 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, have_rows - had_rows)
287 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, have_rows - had_rows)
198 self.GetView().ProcessTableMessage(msg)
288 self.GetView().ProcessTableMessage(msg)
199 self._sizing = True
289 self._sizing = True
200 self.GetView().AutoSizeColumns(False)
290 self.GetView().AutoSizeColumns(False)
201 self._sizing = False
291 self._sizing = False
202 if row >= have_rows:
292 if row >= have_rows:
203 return ""
293 return ""
204 if self._displayattrs != had_cols:
294 if self._displayattrs != had_cols:
205 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED, have_cols - len(had_cols))
295 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED, have_cols - len(had_cols))
206 self.GetView().ProcessTableMessage(msg)
296 self.GetView().ProcessTableMessage(msg)
207 return ""
297 return ""
208
298
209 def SetValue(self, row, col, value):
299 def SetValue(self, row, col, value):
210 pass
300 pass
211
301
212
302
213 class IGridGrid(wx.grid.Grid):
303 class IGridGrid(wx.grid.Grid):
214 # The actual grid
304 # The actual grid
215 # all methods for selecting/sorting/picking/... data are implemented here
305 # all methods for selecting/sorting/picking/... data are implemented here
216 def __init__(self, panel, input, *attrs):
306 def __init__(self, panel, input, *attrs):
217 wx.grid.Grid.__init__(self, panel)
307 wx.grid.Grid.__init__(self, panel)
218 fontsize = 9
308 fontsize = 9
219 self.input = input
309 self.input = input
220 self.table = IGridTable(self.input, fontsize, *attrs)
310 self.table = IGridTable(self.input, fontsize, *attrs)
221 self.SetTable(self.table, True)
311 self.SetTable(self.table, True)
222 self.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
312 self.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
223 self.SetDefaultRenderer(IGridRenderer(self.table))
313 self.SetDefaultRenderer(IGridRenderer(self.table))
224 self.EnableEditing(False)
314 self.EnableEditing(False)
225 self.Bind(wx.EVT_KEY_DOWN, self.key_pressed)
315 self.Bind(wx.EVT_KEY_DOWN, self.key_pressed)
226 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.cell_doubleclicked)
316 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.cell_doubleclicked)
227 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.cell_leftclicked)
317 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.cell_leftclicked)
228 self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_DCLICK, self.label_doubleclicked)
318 self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_DCLICK, self.label_doubleclicked)
229 self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_CLICK, self.on_label_leftclick)
319 self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_CLICK, self.on_label_leftclick)
230 self.Bind(wx.grid.EVT_GRID_RANGE_SELECT, self._on_selected_range)
320 self.Bind(wx.grid.EVT_GRID_RANGE_SELECT, self._on_selected_range)
231 self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self._on_selected_cell)
321 self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self._on_selected_cell)
232 self.current_selection = set()
322 self.current_selection = set()
233 self.maxchars = 200
323 self.maxchars = 200
234
324
235 def on_label_leftclick(self, event):
325 def on_label_leftclick(self, event):
236 event.Skip()
326 event.Skip()
237
327
238 def error_output(self, text):
328 def error_output(self, text):
239 wx.Bell()
329 wx.Bell()
240 frame = self.GetParent().GetParent().GetParent()
330 frame = self.GetParent().GetParent().GetParent()
241 frame.SetStatusText(text)
331 frame.SetStatusText(text)
242
332
243 def _on_selected_range(self, event):
333 def _on_selected_range(self, event):
244 # Internal update to the selection tracking lists
334 # Internal update to the selection tracking lists
245 if event.Selecting():
335 if event.Selecting():
246 # adding to the list...
336 # adding to the list...
247 self.current_selection.update(xrange(event.GetTopRow(), event.GetBottomRow()+1))
337 self.current_selection.update(xrange(event.GetTopRow(), event.GetBottomRow()+1))
248 else:
338 else:
249 # removal from list
339 # removal from list
250 for index in xrange( event.GetTopRow(), event.GetBottomRow()+1):
340 for index in xrange( event.GetTopRow(), event.GetBottomRow()+1):
251 self.current_selection.discard(index)
341 self.current_selection.discard(index)
252 event.Skip()
342 event.Skip()
253
343
254 def _on_selected_cell(self, event):
344 def _on_selected_cell(self, event):
255 # Internal update to the selection tracking list
345 # Internal update to the selection tracking list
256 self.current_selection = set([event.GetRow()])
346 self.current_selection = set([event.GetRow()])
257 event.Skip()
347 event.Skip()
258
348
259 def sort(self, key, reverse=False):
349 def sort(self, key, reverse=False):
260 """
350 """
261 Sort the current list of items using the key function ``key``. If
351 Sort the current list of items using the key function ``key``. If
262 ``reverse`` is true the sort order is reversed.
352 ``reverse`` is true the sort order is reversed.
263 """
353 """
264 row = self.GetGridCursorRow()
354 row = self.GetGridCursorRow()
265 col = self.GetGridCursorCol()
355 col = self.GetGridCursorCol()
266 curitem = self.table.items[row] # Remember where the cursor is now
356 curitem = self.table.items[row] # Remember where the cursor is now
267 # Sort items
357 # Sort items
268 def realkey(item):
358 def realkey(item):
269 try:
359 try:
270 return key(item)
360 return key(item)
271 except (KeyboardInterrupt, SystemExit):
361 except (KeyboardInterrupt, SystemExit):
272 raise
362 raise
273 except Exception:
363 except Exception:
274 return None
364 return None
275 try:
365 try:
276 self.table.items = ipipe.deque(sorted(self.table.items, key=realkey, reverse=reverse))
366 self.table.items = ipipe.deque(sorted(self.table.items, key=realkey, reverse=reverse))
277 except TypeError, exc:
367 except TypeError, exc:
278 self.error_output("Exception encountered: %s" % exc)
368 self.error_output("Exception encountered: %s" % exc)
279 return
369 return
280 # Find out where the object under the cursor went
370 # Find out where the object under the cursor went
281 for (i, item) in enumerate(self.table.items):
371 for (i, item) in enumerate(self.table.items):
282 if item is curitem:
372 if item is curitem:
283 self.SetGridCursor(i,col)
373 self.SetGridCursor(i,col)
284 self.MakeCellVisible(i,col)
374 self.MakeCellVisible(i,col)
285 self.Refresh()
375 self.Refresh()
286
376
287 def sortattrasc(self):
377 def sortattrasc(self):
288 """
378 """
289 Sort in ascending order; sorting criteria is the current attribute
379 Sort in ascending order; sorting criteria is the current attribute
290 """
380 """
291 col = self.GetGridCursorCol()
381 col = self.GetGridCursorCol()
292 attr = self.table._displayattrs[col]
382 attr = self.table._displayattrs[col]
293 frame = self.GetParent().GetParent().GetParent()
383 frame = self.GetParent().GetParent().GetParent()
294 if attr is ipipe.noitem:
384 if attr is ipipe.noitem:
295 self.error_output("no column under cursor")
385 self.error_output("no column under cursor")
296 return
386 return
297 frame.SetStatusText("sort by %s (ascending)" % attr.name())
387 frame.SetStatusText("sort by %s (ascending)" % attr.name())
298 def key(item):
388 def key(item):
299 try:
389 try:
300 return attr.value(item)
390 return attr.value(item)
301 except (KeyboardInterrupt, SystemExit):
391 except (KeyboardInterrupt, SystemExit):
302 raise
392 raise
303 except Exception:
393 except Exception:
304 return None
394 return None
305 self.sort(key)
395 self.sort(key)
306
396
307 def sortattrdesc(self):
397 def sortattrdesc(self):
308 """
398 """
309 Sort in descending order; sorting criteria is the current attribute
399 Sort in descending order; sorting criteria is the current attribute
310 """
400 """
311 col = self.GetGridCursorCol()
401 col = self.GetGridCursorCol()
312 attr = self.table._displayattrs[col]
402 attr = self.table._displayattrs[col]
313 frame = self.GetParent().GetParent().GetParent()
403 frame = self.GetParent().GetParent().GetParent()
314 if attr is ipipe.noitem:
404 if attr is ipipe.noitem:
315 self.error_output("no column under cursor")
405 self.error_output("no column under cursor")
316 return
406 return
317 frame.SetStatusText("sort by %s (descending)" % attr.name())
407 frame.SetStatusText("sort by %s (descending)" % attr.name())
318 def key(item):
408 def key(item):
319 try:
409 try:
320 return attr.value(item)
410 return attr.value(item)
321 except (KeyboardInterrupt, SystemExit):
411 except (KeyboardInterrupt, SystemExit):
322 raise
412 raise
323 except Exception:
413 except Exception:
324 return None
414 return None
325 self.sort(key, reverse=True)
415 self.sort(key, reverse=True)
326
416
327 def label_doubleclicked(self, event):
417 def label_doubleclicked(self, event):
328 row = event.GetRow()
418 row = event.GetRow()
329 col = event.GetCol()
419 col = event.GetCol()
330 if col == -1:
420 if col == -1:
331 self.enter(row)
421 self.enter(row)
332
422
333 def _getvalue(self, row, col):
423 def _getvalue(self, row, col):
334 """
424 """
335 Gets the text which is displayed at ``(row, col)``
425 Gets the text which is displayed at ``(row, col)``
336 """
426 """
337 try:
427 try:
338 value = self.table._displayattrs[col].value(self.table.items[row])
428 value = self.table._displayattrs[col].value(self.table.items[row])
339 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
429 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
340 except IndexError:
430 except IndexError:
341 raise IndexError
431 raise IndexError
342 except Exception, exc:
432 except Exception, exc:
343 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
433 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
344 return text
434 return text
345
435
346 def search(self, searchtext, startrow=0, startcol=0, search_forward=True):
436 def search(self, searchtext, startrow=0, startcol=0, search_forward=True):
347 """
437 """
348 search for ``searchtext``, starting in ``(startrow, startcol)``;
438 search for ``searchtext``, starting in ``(startrow, startcol)``;
349 if ``search_forward`` is true the direction is "forward"
439 if ``search_forward`` is true the direction is "forward"
350 """
440 """
351 row = startrow
441 row = startrow
352 searchtext = searchtext.lower()
442 searchtext = searchtext.lower()
353 if search_forward:
443 if search_forward:
354 while True:
444 while True:
355 for col in xrange(startcol, self.table.GetNumberCols()):
445 for col in xrange(startcol, self.table.GetNumberCols()):
356 try:
446 try:
357 foo = self.table.GetValue(row, col)
447 foo = self.table.GetValue(row, col)
358 text = self._getvalue(row, col)
448 text = self._getvalue(row, col)
359 if searchtext in text.string().lower():
449 if searchtext in text.string().lower():
360 self.SetGridCursor(row, col)
450 self.SetGridCursor(row, col)
361 self.MakeCellVisible(row, col)
451 self.MakeCellVisible(row, col)
362 return
452 return
363 except IndexError:
453 except IndexError:
364 return
454 return
365 startcol = 0
455 startcol = 0
366 row += 1
456 row += 1
367 else:
457 else:
368 while True:
458 while True:
369 for col in xrange(startcol, -1, -1):
459 for col in xrange(startcol, -1, -1):
370 try:
460 try:
371 foo = self.table.GetValue(row, col)
461 foo = self.table.GetValue(row, col)
372 text = self._getvalue(row, col)
462 text = self._getvalue(row, col)
373 if searchtext in text.string().lower():
463 if searchtext in text.string().lower():
374 self.SetGridCursor(row, col)
464 self.SetGridCursor(row, col)
375 self.MakeCellVisible(row, col)
465 self.MakeCellVisible(row, col)
376 return
466 return
377 except IndexError:
467 except IndexError:
378 return
468 return
379 startcol = self.table.GetNumberCols()-1
469 startcol = self.table.GetNumberCols()-1
380 row -= 1
470 row -= 1
381
471
382 def key_pressed(self, event):
472 def key_pressed(self, event):
383 """
473 """
384 Maps pressed keys to functions
474 Maps pressed keys to functions
385 """
475 """
386 frame = self.GetParent().GetParent().GetParent()
476 frame = self.GetParent().GetParent().GetParent()
387 frame.SetStatusText("")
477 frame.SetStatusText("")
388 sh = event.ShiftDown()
478 sh = event.ShiftDown()
389 ctrl = event.ControlDown()
479 ctrl = event.ControlDown()
390
480
391 keycode = event.GetKeyCode()
481 keycode = event.GetKeyCode()
392 if keycode == ord("P"):
482 if keycode == ord("P"):
393 row = self.GetGridCursorRow()
483 row = self.GetGridCursorRow()
394 if sh:
484 if sh:
395 col = self.GetGridCursorCol()
485 col = self.GetGridCursorCol()
396 self.pickattr(row, col)
486 self.pickattr(row, col)
397 else:
487 else:
398 self.pick(row)
488 self.pick(row)
399 elif keycode == ord("M"):
489 elif keycode == ord("M"):
400 if ctrl:
490 if ctrl:
401 col = self.GetGridCursorCol()
491 col = self.GetGridCursorCol()
402 self.pickrowsattr(sorted(self.current_selection), col)
492 self.pickrowsattr(sorted(self.current_selection), col)
403 else:
493 else:
404 self.pickrows(sorted(self.current_selection))
494 self.pickrows(sorted(self.current_selection))
405 elif keycode in (wx.WXK_BACK, wx.WXK_DELETE, ord("X")) and not (ctrl or sh):
495 elif keycode in (wx.WXK_BACK, wx.WXK_DELETE, ord("X")) and not (ctrl or sh):
406 self.delete_current_notebook()
496 self.delete_current_notebook()
407 elif keycode in (ord("E"), ord("\r")):
497 elif keycode in (ord("E"), ord("\r")):
408 row = self.GetGridCursorRow()
498 row = self.GetGridCursorRow()
409 if sh:
499 if sh:
410 col = self.GetGridCursorCol()
500 col = self.GetGridCursorCol()
411 self.enterattr(row, col)
501 self.enterattr(row, col)
412 else:
502 else:
413 self.enter(row)
503 self.enter(row)
414 elif keycode == ord("E") and ctrl:
504 elif keycode == ord("E") and ctrl:
415 row = self.GetGridCursorRow()
505 row = self.GetGridCursorRow()
416 self.SetGridCursor(row, self.GetNumberCols()-1)
506 self.SetGridCursor(row, self.GetNumberCols()-1)
417 elif keycode == wx.WXK_HOME or (keycode == ord("A") and ctrl):
507 elif keycode == wx.WXK_HOME or (keycode == ord("A") and ctrl):
418 row = self.GetGridCursorRow()
508 row = self.GetGridCursorRow()
419 self.SetGridCursor(row, 0)
509 self.SetGridCursor(row, 0)
420 elif keycode == ord("C") and sh:
510 elif keycode == ord("C") and sh:
421 col = self.GetGridCursorCol()
511 col = self.GetGridCursorCol()
422 attr = self.table._displayattrs[col]
512 attr = self.table._displayattrs[col]
423 result = []
513 result = []
424 for i in xrange(self.GetNumberRows()):
514 for i in xrange(self.GetNumberRows()):
425 result.append(self.table._displayattrs[col].value(self.table.items[i]))
515 result.append(self.table._displayattrs[col].value(self.table.items[i]))
426 self.quit(result)
516 self.quit(result)
427 elif keycode in (wx.WXK_ESCAPE, ord("Q")) and not (ctrl or sh):
517 elif keycode in (wx.WXK_ESCAPE, ord("Q")) and not (ctrl or sh):
428 self.quit()
518 self.quit()
429 elif keycode == ord("<"):
519 elif keycode == ord("<"):
430 row = self.GetGridCursorRow()
520 row = self.GetGridCursorRow()
431 col = self.GetGridCursorCol()
521 col = self.GetGridCursorCol()
432 if not event.ShiftDown():
522 if not event.ShiftDown():
433 newcol = col - 1
523 newcol = col - 1
434 if newcol >= 0:
524 if newcol >= 0:
435 self.SetGridCursor(row, col - 1)
525 self.SetGridCursor(row, col - 1)
436 else:
526 else:
437 newcol = col + 1
527 newcol = col + 1
438 if newcol < self.GetNumberCols():
528 if newcol < self.GetNumberCols():
439 self.SetGridCursor(row, col + 1)
529 self.SetGridCursor(row, col + 1)
440 elif keycode == ord("D"):
530 elif keycode == ord("D"):
441 col = self.GetGridCursorCol()
531 col = self.GetGridCursorCol()
442 row = self.GetGridCursorRow()
532 row = self.GetGridCursorRow()
443 if not sh:
533 if not sh:
444 self.detail(row, col)
534 self.detail(row, col)
445 else:
535 else:
446 self.detail_attr(row, col)
536 self.detail_attr(row, col)
447 elif keycode == ord("F") and ctrl:
537 elif keycode == ord("F") and ctrl:
448 frame.enter_searchtext(event)
538 frame.enter_searchtext(event)
449 elif keycode == wx.WXK_F3:
539 elif keycode == wx.WXK_F3:
450 if sh:
540 if sh:
451 frame.find_previous(event)
541 frame.find_previous(event)
452 else:
542 else:
453 frame.find_next(event)
543 frame.find_next(event)
454 elif keycode == ord("V"):
544 elif keycode == ord("V"):
455 if sh:
545 if sh:
456 self.sortattrdesc()
546 self.sortattrdesc()
457 else:
547 else:
458 self.sortattrasc()
548 self.sortattrasc()
459 elif keycode == wx.WXK_DOWN:
549 elif keycode == wx.WXK_DOWN:
460 row = self.GetGridCursorRow()
550 row = self.GetGridCursorRow()
461 try:
551 try:
462 item = self.table.items[row+1]
552 item = self.table.items[row+1]
463 except IndexError:
553 except IndexError:
464 item = self.table.items[row]
554 item = self.table.items[row]
465 self.set_footer(item)
555 self.set_footer(item)
466 event.Skip()
556 event.Skip()
467 elif keycode == wx.WXK_UP:
557 elif keycode == wx.WXK_UP:
468 row = self.GetGridCursorRow()
558 row = self.GetGridCursorRow()
469 if row >= 1:
559 if row >= 1:
470 item = self.table.items[row-1]
560 item = self.table.items[row-1]
471 else:
561 else:
472 item = self.table.items[row]
562 item = self.table.items[row]
473 self.set_footer(item)
563 self.set_footer(item)
474 event.Skip()
564 event.Skip()
475 elif keycode == wx.WXK_RIGHT:
565 elif keycode == wx.WXK_RIGHT:
476 row = self.GetGridCursorRow()
566 row = self.GetGridCursorRow()
477 item = self.table.items[row]
567 item = self.table.items[row]
478 self.set_footer(item)
568 self.set_footer(item)
479 event.Skip()
569 event.Skip()
480 elif keycode == wx.WXK_LEFT:
570 elif keycode == wx.WXK_LEFT:
481 row = self.GetGridCursorRow()
571 row = self.GetGridCursorRow()
482 item = self.table.items[row]
572 item = self.table.items[row]
483 self.set_footer(item)
573 self.set_footer(item)
484 event.Skip()
574 event.Skip()
485 else:
575 else:
486 event.Skip()
576 event.Skip()
487
577
488 def delete_current_notebook(self):
578 def delete_current_notebook(self):
489 """
579 """
490 deletes the current notebook tab
580 deletes the current notebook tab
491 """
581 """
492 panel = self.GetParent()
582 panel = self.GetParent()
493 nb = panel.GetParent()
583 nb = panel.GetParent()
494 current = nb.GetSelection()
584 current = nb.GetSelection()
495 count = nb.GetPageCount()
585 count = nb.GetPageCount()
496 if count > 1:
586 if count > 1:
497 for i in xrange(count-1, current-1, -1):
587 for i in xrange(count-1, current-1, -1):
498 nb.DeletePage(i)
588 nb.DeletePage(i)
499 nb.GetCurrentPage().grid.SetFocus()
589 nb.GetCurrentPage().grid.SetFocus()
500 else:
590 else:
501 frame = nb.GetParent()
591 frame = nb.GetParent()
502 frame.SetStatusText("This is the last level!")
592 frame.SetStatusText("This is the last level!")
503
593
504 def _doenter(self, value, *attrs):
594 def _doenter(self, value, *attrs):
505 """
595 """
506 "enter" a special item resulting in a new notebook tab
596 "enter" a special item resulting in a new notebook tab
507 """
597 """
508 panel = self.GetParent()
598 panel = self.GetParent()
509 nb = panel.GetParent()
599 nb = panel.GetParent()
510 frame = nb.GetParent()
600 frame = nb.GetParent()
511 current = nb.GetSelection()
601 current = nb.GetSelection()
512 count = nb.GetPageCount()
602 count = nb.GetPageCount()
513 try: # if we want to enter something non-iterable, e.g. a function
603 try: # if we want to enter something non-iterable, e.g. a function
514 if current + 1 == count and value is not self.input: # we have an event in the last tab
604 if current + 1 == count and value is not self.input: # we have an event in the last tab
515 frame._add_notebook(value, *attrs)
605 frame._add_notebook(value, *attrs)
516 elif value != self.input: # we have to delete all tabs newer than [panel] first
606 elif value != self.input: # we have to delete all tabs newer than [panel] first
517 for i in xrange(count-1, current, -1): # some tabs don't close if we don't close in *reverse* order
607 for i in xrange(count-1, current, -1): # some tabs don't close if we don't close in *reverse* order
518 nb.DeletePage(i)
608 nb.DeletePage(i)
519 frame._add_notebook(value)
609 frame._add_notebook(value)
520 except TypeError, exc:
610 except TypeError, exc:
521 if exc.__class__.__module__ == "exceptions":
611 if exc.__class__.__module__ == "exceptions":
522 msg = "%s: %s" % (exc.__class__.__name__, exc)
612 msg = "%s: %s" % (exc.__class__.__name__, exc)
523 else:
613 else:
524 msg = "%s.%s: %s" % (exc.__class__.__module__, exc.__class__.__name__, exc)
614 msg = "%s.%s: %s" % (exc.__class__.__module__, exc.__class__.__name__, exc)
525 frame.SetStatusText(msg)
615 frame.SetStatusText(msg)
526
616
527 def enterattr(self, row, col):
617 def enterattr(self, row, col):
528 try:
618 try:
529 attr = self.table._displayattrs[col]
619 attr = self.table._displayattrs[col]
530 value = attr.value(self.table.items[row])
620 value = attr.value(self.table.items[row])
531 except Exception, exc:
621 except Exception, exc:
532 self.error_output(str(exc))
622 self.error_output(str(exc))
533 else:
623 else:
534 self._doenter(value)
624 self._doenter(value)
535
625
536 def set_footer(self, item):
626 def set_footer(self, item):
537 frame = self.GetParent().GetParent().GetParent()
627 frame = self.GetParent().GetParent().GetParent()
538 frame.SetStatusText(" ".join([str(text) for (style, text) in ipipe.xformat(item, "footer", 20)[2]]))
628 frame.SetStatusText(" ".join([str(text) for (style, text) in ipipe.xformat(item, "footer", 20)[2]]))
539
629
540 def enter(self, row):
630 def enter(self, row):
541 try:
631 try:
542 value = self.table.items[row]
632 value = self.table.items[row]
543 except Exception, exc:
633 except Exception, exc:
544 self.error_output(str(exc))
634 self.error_output(str(exc))
545 else:
635 else:
546 self._doenter(value)
636 self._doenter(value)
547
637
548 def detail(self, row, col):
638 def detail(self, row, col):
549 """
639 """
550 shows a detail-view of the current cell
640 shows a detail-view of the current cell
551 """
641 """
552 try:
642 try:
553 attr = self.table._displayattrs[col]
643 attr = self.table._displayattrs[col]
554 item = self.table.items[row]
644 item = self.table.items[row]
555 except Exception, exc:
645 except Exception, exc:
556 self.error_output(str(exc))
646 self.error_output(str(exc))
557 else:
647 else:
558 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
648 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
559 self._doenter(attrs)
649 self._doenter(attrs)
560
650
561 def detail_attr(self, row, col):
651 def detail_attr(self, row, col):
562 try:
652 try:
563 attr = self.table._displayattrs[col]
653 attr = self.table._displayattrs[col]
564 item = attr.value(self.table.items[row])
654 item = attr.value(self.table.items[row])
565 except Exception, exc:
655 except Exception, exc:
566 self.error_output(str(exc))
656 self.error_output(str(exc))
567 else:
657 else:
568 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
658 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
569 self._doenter(attrs)
659 self._doenter(attrs)
570
660
571 def quit(self, result=None):
661 def quit(self, result=None):
572 """
662 """
573 quit
663 quit
574 """
664 """
575 frame = self.GetParent().GetParent().GetParent()
665 frame = self.GetParent().GetParent().GetParent()
576 if frame.helpdialog:
666 if frame.helpdialog:
577 frame.helpdialog.Destroy()
667 frame.helpdialog.Destroy()
578 app = frame.parent
668 app = frame.parent
579 if app is not None:
669 if app is not None:
580 app.result = result
670 app.result = result
581 frame.Close()
671 frame.Close()
582 frame.Destroy()
672 frame.Destroy()
583
673
584 def cell_doubleclicked(self, event):
674 def cell_doubleclicked(self, event):
585 self.enterattr(event.GetRow(), event.GetCol())
675 self.enterattr(event.GetRow(), event.GetCol())
586 event.Skip()
676 event.Skip()
587
677
588 def cell_leftclicked(self, event):
678 def cell_leftclicked(self, event):
589 row = event.GetRow()
679 row = event.GetRow()
590 item = self.table.items[row]
680 item = self.table.items[row]
591 self.set_footer(item)
681 self.set_footer(item)
592 event.Skip()
682 event.Skip()
593
683
594 def pick(self, row):
684 def pick(self, row):
595 """
685 """
596 pick a single row and return to the IPython prompt
686 pick a single row and return to the IPython prompt
597 """
687 """
598 try:
688 try:
599 value = self.table.items[row]
689 value = self.table.items[row]
600 except Exception, exc:
690 except Exception, exc:
601 self.error_output(str(exc))
691 self.error_output(str(exc))
602 else:
692 else:
603 self.quit(value)
693 self.quit(value)
604
694
605 def pickrows(self, rows):
695 def pickrows(self, rows):
606 """
696 """
607 pick multiple rows and return to the IPython prompt
697 pick multiple rows and return to the IPython prompt
608 """
698 """
609 try:
699 try:
610 value = [self.table.items[row] for row in rows]
700 value = [self.table.items[row] for row in rows]
611 except Exception, exc:
701 except Exception, exc:
612 self.error_output(str(exc))
702 self.error_output(str(exc))
613 else:
703 else:
614 self.quit(value)
704 self.quit(value)
615
705
616 def pickrowsattr(self, rows, col):
706 def pickrowsattr(self, rows, col):
617 """"
707 """"
618 pick one column from multiple rows
708 pick one column from multiple rows
619 """
709 """
620 values = []
710 values = []
621 try:
711 try:
622 attr = self.table._displayattrs[col]
712 attr = self.table._displayattrs[col]
623 for row in rows:
713 for row in rows:
624 try:
714 try:
625 values.append(attr.value(self.table.items[row]))
715 values.append(attr.value(self.table.items[row]))
626 except (SystemExit, KeyboardInterrupt):
716 except (SystemExit, KeyboardInterrupt):
627 raise
717 raise
628 except Exception:
718 except Exception:
629 raise #pass
719 raise #pass
630 except Exception, exc:
720 except Exception, exc:
631 self.error_output(str(exc))
721 self.error_output(str(exc))
632 else:
722 else:
633 self.quit(values)
723 self.quit(values)
634
724
635 def pickattr(self, row, col):
725 def pickattr(self, row, col):
636 try:
726 try:
637 attr = self.table._displayattrs[col]
727 attr = self.table._displayattrs[col]
638 value = attr.value(self.table.items[row])
728 value = attr.value(self.table.items[row])
639 except Exception, exc:
729 except Exception, exc:
640 self.error_output(str(exc))
730 self.error_output(str(exc))
641 else:
731 else:
642 self.quit(value)
732 self.quit(value)
643
733
644
734
645 class IGridPanel(wx.Panel):
735 class IGridPanel(wx.Panel):
646 # Each IGridPanel contains an IGridGrid
736 # Each IGridPanel contains an IGridGrid
647 def __init__(self, parent, input, *attrs):
737 def __init__(self, parent, input, *attrs):
648 wx.Panel.__init__(self, parent, -1)
738 wx.Panel.__init__(self, parent, -1)
649 self.grid = IGridGrid(self, input, *attrs)
739 self.grid = IGridGrid(self, input, *attrs)
650 sizer = wx.BoxSizer(wx.VERTICAL)
740 sizer = wx.BoxSizer(wx.VERTICAL)
651 sizer.Add(self.grid, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
741 sizer.Add(self.grid, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
652 self.SetSizer(sizer)
742 self.SetSizer(sizer)
653 sizer.Fit(self)
743 sizer.Fit(self)
654 sizer.SetSizeHints(self)
744 sizer.SetSizeHints(self)
655
745
656
746
657 class IGridHTMLHelp(wx.Frame):
747 class IGridHTMLHelp(wx.Frame):
658 def __init__(self, parent, title, filename, size):
748 def __init__(self, parent, title, size):
659 wx.Frame.__init__(self, parent, -1, title, size=size)
749 wx.Frame.__init__(self, parent, -1, title, size=size)
660 html = wx.html.HtmlWindow(self)
750 html = wx.html.HtmlWindow(self)
661 if "gtk2" in wx.PlatformInfo:
751 if "gtk2" in wx.PlatformInfo:
662 html.SetStandardFonts()
752 html.SetStandardFonts()
663 html.LoadFile(filename)
753 html.SetPage(help)
664
754
665
755
666 class IGridFrame(wx.Frame):
756 class IGridFrame(wx.Frame):
667 maxtitlelen = 30
757 maxtitlelen = 30
668
758
669 def __init__(self, parent, input):
759 def __init__(self, parent, input):
670 title = " ".join([str(text) for (style, text) in ipipe.xformat(input, "header", 20)[2]])
760 title = " ".join([str(text) for (style, text) in ipipe.xformat(input, "header", 20)[2]])
671 wx.Frame.__init__(self, None, title=title, size=(640, 480))
761 wx.Frame.__init__(self, None, title=title, size=(640, 480))
672 self.menubar = wx.MenuBar()
762 self.menubar = wx.MenuBar()
673 self.menucounter = 100
763 self.menucounter = 100
674 self.m_help = wx.Menu()
764 self.m_help = wx.Menu()
675 self.m_search = wx.Menu()
765 self.m_search = wx.Menu()
676 self.m_sort = wx.Menu()
766 self.m_sort = wx.Menu()
677 self.notebook = wx.Notebook(self, -1, style=0)
767 self.notebook = wx.Notebook(self, -1, style=0)
678 self.statusbar = self.CreateStatusBar(1, wx.ST_SIZEGRIP)
768 self.statusbar = self.CreateStatusBar(1, wx.ST_SIZEGRIP)
679 self.parent = parent
769 self.parent = parent
680 self._add_notebook(input)
770 self._add_notebook(input)
681 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
771 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
682 self.makemenu(self.m_sort, "&Sort (asc)", "Sort ascending", self.sortasc)
772 self.makemenu(self.m_sort, "&Sort (asc)", "Sort ascending", self.sortasc)
683 self.makemenu(self.m_sort, "Sort (&desc)", "Sort descending", self.sortdesc)
773 self.makemenu(self.m_sort, "Sort (&desc)", "Sort descending", self.sortdesc)
684 self.makemenu(self.m_help, "&Help", "Help", self.display_help)
774 self.makemenu(self.m_help, "&Help", "Help", self.display_help)
685 self.makemenu(self.m_help, "&Show help in browser", "Show help in browser", self.display_help_in_browser)
775 self.makemenu(self.m_help, "&Show help in browser", "Show help in browser", self.display_help_in_browser)
686 self.makemenu(self.m_search, "&Find text", "Find text", self.enter_searchtext)
776 self.makemenu(self.m_search, "&Find text", "Find text", self.enter_searchtext)
687 self.makemenu(self.m_search, "Find by &expression", "Find by expression", self.enter_searchexpression)
777 self.makemenu(self.m_search, "Find by &expression", "Find by expression", self.enter_searchexpression)
688 self.makemenu(self.m_search, "Find &next", "Find next", self.find_next)
778 self.makemenu(self.m_search, "Find &next", "Find next", self.find_next)
689 self.makemenu(self.m_search, "Find &previous", "Find previous", self.find_previous)
779 self.makemenu(self.m_search, "Find &previous", "Find previous", self.find_previous)
690 self.menubar.Append(self.m_search, "&Find")
780 self.menubar.Append(self.m_search, "&Find")
691 self.menubar.Append(self.m_sort, "&Sort")
781 self.menubar.Append(self.m_sort, "&Sort")
692 self.menubar.Append(self.m_help, "&Help")
782 self.menubar.Append(self.m_help, "&Help")
693 self.SetMenuBar(self.menubar)
783 self.SetMenuBar(self.menubar)
694 self.searchtext = ""
784 self.searchtext = ""
695 self.helpdialog = None
785 self.helpdialog = None
696
786
697 def sortasc(self, event):
787 def sortasc(self, event):
698 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
788 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
699 grid.sortattrasc()
789 grid.sortattrasc()
700
790
701 def sortdesc(self, event):
791 def sortdesc(self, event):
702 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
792 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
703 grid.sortattrdesc()
793 grid.sortattrdesc()
704
794
705 def find_previous(self, event):
795 def find_previous(self, event):
706 """
796 """
707 find previous occurrences
797 find previous occurrences
708 """
798 """
709 if self.searchtext:
799 if self.searchtext:
710 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
800 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
711 row = grid.GetGridCursorRow()
801 row = grid.GetGridCursorRow()
712 col = grid.GetGridCursorCol()
802 col = grid.GetGridCursorCol()
713 if col-1 >= 0:
803 if col-1 >= 0:
714 grid.search(self.searchtext, row, col-1, False)
804 grid.search(self.searchtext, row, col-1, False)
715 else:
805 else:
716 grid.search(self.searchtext, row-1, grid.table.GetNumberCols()-1, False)
806 grid.search(self.searchtext, row-1, grid.table.GetNumberCols()-1, False)
717 else:
807 else:
718 self.enter_searchtext(event)
808 self.enter_searchtext(event)
719
809
720 def find_next(self, event):
810 def find_next(self, event):
721 """
811 """
722 find the next occurrence
812 find the next occurrence
723 """
813 """
724 if self.searchtext:
814 if self.searchtext:
725 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
815 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
726 row = grid.GetGridCursorRow()
816 row = grid.GetGridCursorRow()
727 col = grid.GetGridCursorCol()
817 col = grid.GetGridCursorCol()
728 if col+1 < grid.table.GetNumberCols():
818 if col+1 < grid.table.GetNumberCols():
729 grid.search(self.searchtext, row, col+1)
819 grid.search(self.searchtext, row, col+1)
730 else:
820 else:
731 grid.search(self.searchtext, row+1, 0)
821 grid.search(self.searchtext, row+1, 0)
732 else:
822 else:
733 self.enter_searchtext(event)
823 self.enter_searchtext(event)
734
824
735 def display_help(self, event):
825 def display_help(self, event):
736 """
826 """
737 Display a help dialog
827 Display a help dialog
738 """
828 """
739 if self.helpdialog:
829 if self.helpdialog:
740 self.helpdialog.Destroy()
830 self.helpdialog.Destroy()
741 filename = os.path.join(os.path.dirname(__file__), "igrid_help.html")
831 self.helpdialog = IGridHTMLHelp(None, title="Help", size=wx.Size(600,400))
742 self.helpdialog = IGridHTMLHelp(None, title="Help", filename=filename, size=wx.Size(600,400))
743 self.helpdialog.Show()
832 self.helpdialog.Show()
744
833
745 def display_help_in_browser(self, event):
834 def display_help_in_browser(self, event):
746 """
835 """
747 Show the help-HTML in a browser (as a ``HtmlWindow`` does not understand
836 Show the help-HTML in a browser (as a ``HtmlWindow`` does not understand
748 CSS this looks better)
837 CSS this looks better)
749 """
838 """
750 filename = urllib.pathname2url(os.path.abspath(os.path.join(os.path.dirname(__file__), "igrid_help.html")))
839 filename = urllib.pathname2url(os.path.abspath(os.path.join(os.path.dirname(__file__), "igrid_help.html")))
751 if not filename.startswith("file"):
840 if not filename.startswith("file"):
752 filename = "file:" + filename
841 filename = "file:" + filename
753 webbrowser.open(filename, new=1, autoraise=True)
842 webbrowser.open(filename, new=1, autoraise=True)
754
843
755 def enter_searchexpression(self, event):
844 def enter_searchexpression(self, event):
756 pass
845 pass
757
846
758 def makemenu(self, menu, label, help, cmd):
847 def makemenu(self, menu, label, help, cmd):
759 menu.Append(self.menucounter, label, help)
848 menu.Append(self.menucounter, label, help)
760 self.Bind(wx.EVT_MENU, cmd, id=self.menucounter)
849 self.Bind(wx.EVT_MENU, cmd, id=self.menucounter)
761 self.menucounter += 1
850 self.menucounter += 1
762
851
763 def _add_notebook(self, input, *attrs):
852 def _add_notebook(self, input, *attrs):
764 # Adds another notebook which has the starting object ``input``
853 # Adds another notebook which has the starting object ``input``
765 panel = IGridPanel(self.notebook, input, *attrs)
854 panel = IGridPanel(self.notebook, input, *attrs)
766 text = str(ipipe.xformat(input, "header", self.maxtitlelen)[2])
855 text = str(ipipe.xformat(input, "header", self.maxtitlelen)[2])
767 if len(text) >= self.maxtitlelen:
856 if len(text) >= self.maxtitlelen:
768 text = text[:self.maxtitlelen].rstrip(".") + "..."
857 text = text[:self.maxtitlelen].rstrip(".") + "..."
769 self.notebook.AddPage(panel, text, True)
858 self.notebook.AddPage(panel, text, True)
770 panel.grid.SetFocus()
859 panel.grid.SetFocus()
771 self.Layout()
860 self.Layout()
772
861
773 def OnCloseWindow(self, event):
862 def OnCloseWindow(self, event):
774 self.Destroy()
863 self.Destroy()
775
864
776 def enter_searchtext(self, event):
865 def enter_searchtext(self, event):
777 # Displays a dialog asking for the searchtext
866 # Displays a dialog asking for the searchtext
778 dlg = wx.TextEntryDialog(self, "Find:", "Find in list")
867 dlg = wx.TextEntryDialog(self, "Find:", "Find in list")
779 if dlg.ShowModal() == wx.ID_OK:
868 if dlg.ShowModal() == wx.ID_OK:
780 self.searchtext = dlg.GetValue()
869 self.searchtext = dlg.GetValue()
781 self.notebook.GetPage(self.notebook.GetSelection()).grid.search(self.searchtext, 0, 0)
870 self.notebook.GetPage(self.notebook.GetSelection()).grid.search(self.searchtext, 0, 0)
782 dlg.Destroy()
871 dlg.Destroy()
783
872
784
873
785 class App(wx.App):
874 class App(wx.App):
786 def __init__(self, input):
875 def __init__(self, input):
787 self.input = input
876 self.input = input
788 self.result = None # Result to be returned to IPython. Set by quit().
877 self.result = None # Result to be returned to IPython. Set by quit().
789 wx.App.__init__(self)
878 wx.App.__init__(self)
790
879
791 def OnInit(self):
880 def OnInit(self):
792 frame = IGridFrame(self, self.input)
881 frame = IGridFrame(self, self.input)
793 frame.Show()
882 frame.Show()
794 self.SetTopWindow(frame)
883 self.SetTopWindow(frame)
795 frame.Raise()
884 frame.Raise()
796 return True
885 return True
797
886
798
887
799 class igrid(ipipe.Display):
888 class igrid(ipipe.Display):
800 """
889 """
801 This is a wx-based display object that can be used instead of ``ibrowse``
890 This is a wx-based display object that can be used instead of ``ibrowse``
802 (which is curses-based) or ``idump`` (which simply does a print).
891 (which is curses-based) or ``idump`` (which simply does a print).
803 """
892 """
804 if wx.VERSION < (2, 7):
893 if wx.VERSION < (2, 7):
805 def display(self):
894 def display(self):
806 try:
895 try:
807 # Try to create a "standalone" from. If this works we're probably
896 # Try to create a "standalone" from. If this works we're probably
808 # running with -wthread.
897 # running with -wthread.
809 # Note that this sets the parent of the frame to None, but we can't
898 # Note that this sets the parent of the frame to None, but we can't
810 # pass a result object back to the shell anyway.
899 # pass a result object back to the shell anyway.
811 frame = IGridFrame(None, self.input)
900 frame = IGridFrame(None, self.input)
812 frame.Show()
901 frame.Show()
813 frame.Raise()
902 frame.Raise()
814 except wx.PyNoAppError:
903 except wx.PyNoAppError:
815 # There's no wx application yet => create one.
904 # There's no wx application yet => create one.
816 app = App(self.input)
905 app = App(self.input)
817 app.MainLoop()
906 app.MainLoop()
818 return app.result
907 return app.result
819 else:
908 else:
820 # With wx 2.7 it gets simpler.
909 # With wx 2.7 it gets simpler.
821 def display(self):
910 def display(self):
822 app = App(self.input)
911 app = App(self.input)
823 app.MainLoop()
912 app.MainLoop()
824 return app.result
913 return app.result
825
914
@@ -1,6635 +1,6640 b''
1 2007-05-10 Walter Doerwald <walter@livinglogic.de>
2
3 * IPython/Extensions/igrid.py: Incorporate html help into
4 the module, so we don't have to search for the file.
5
1 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
6 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
2
7
3 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
8 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
4
9
5 2007-04-30 Ville Vainio <vivainio@gmail.com>
10 2007-04-30 Ville Vainio <vivainio@gmail.com>
6
11
7 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
12 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
8 user has illegal (non-ascii) home directory name
13 user has illegal (non-ascii) home directory name
9
14
10 2007-04-27 Ville Vainio <vivainio@gmail.com>
15 2007-04-27 Ville Vainio <vivainio@gmail.com>
11
16
12 * platutils_win32.py: implement set_term_title for windows
17 * platutils_win32.py: implement set_term_title for windows
13
18
14 * Update version number
19 * Update version number
15
20
16 * ipy_profile_sh.py: more informative prompt (2 dir levels)
21 * ipy_profile_sh.py: more informative prompt (2 dir levels)
17
22
18 2007-04-26 Walter Doerwald <walter@livinglogic.de>
23 2007-04-26 Walter Doerwald <walter@livinglogic.de>
19
24
20 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
25 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
21 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
26 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
22 bug discovered by Ville).
27 bug discovered by Ville).
23
28
24 2007-04-26 Ville Vainio <vivainio@gmail.com>
29 2007-04-26 Ville Vainio <vivainio@gmail.com>
25
30
26 * Extensions/ipy_completers.py: Olivier's module completer now
31 * Extensions/ipy_completers.py: Olivier's module completer now
27 saves the list of root modules if it takes > 4 secs on the first run.
32 saves the list of root modules if it takes > 4 secs on the first run.
28
33
29 * Magic.py (%rehashx): %rehashx now clears the completer cache
34 * Magic.py (%rehashx): %rehashx now clears the completer cache
30
35
31
36
32 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
37 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
33
38
34 * ipython.el: fix incorrect color scheme, reported by Stefan.
39 * ipython.el: fix incorrect color scheme, reported by Stefan.
35 Closes #149.
40 Closes #149.
36
41
37 * IPython/PyColorize.py (Parser.format2): fix state-handling
42 * IPython/PyColorize.py (Parser.format2): fix state-handling
38 logic. I still don't like how that code handles state, but at
43 logic. I still don't like how that code handles state, but at
39 least now it should be correct, if inelegant. Closes #146.
44 least now it should be correct, if inelegant. Closes #146.
40
45
41 2007-04-25 Ville Vainio <vivainio@gmail.com>
46 2007-04-25 Ville Vainio <vivainio@gmail.com>
42
47
43 * Extensions/ipy_which.py: added extension for %which magic, works
48 * Extensions/ipy_which.py: added extension for %which magic, works
44 a lot like unix 'which' but also finds and expands aliases, and
49 a lot like unix 'which' but also finds and expands aliases, and
45 allows wildcards.
50 allows wildcards.
46
51
47 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
52 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
48 as opposed to returning nothing.
53 as opposed to returning nothing.
49
54
50 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
55 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
51 ipy_stock_completers on default profile, do import on sh profile.
56 ipy_stock_completers on default profile, do import on sh profile.
52
57
53 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
58 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
54
59
55 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
60 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
56 like ipython.py foo.py which raised a IndexError.
61 like ipython.py foo.py which raised a IndexError.
57
62
58 2007-04-21 Ville Vainio <vivainio@gmail.com>
63 2007-04-21 Ville Vainio <vivainio@gmail.com>
59
64
60 * Extensions/ipy_extutil.py: added extension to manage other ipython
65 * Extensions/ipy_extutil.py: added extension to manage other ipython
61 extensions. Now only supports 'ls' == list extensions.
66 extensions. Now only supports 'ls' == list extensions.
62
67
63 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
68 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
64
69
65 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
70 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
66 would prevent use of the exception system outside of a running
71 would prevent use of the exception system outside of a running
67 IPython instance.
72 IPython instance.
68
73
69 2007-04-20 Ville Vainio <vivainio@gmail.com>
74 2007-04-20 Ville Vainio <vivainio@gmail.com>
70
75
71 * Extensions/ipy_render.py: added extension for easy
76 * Extensions/ipy_render.py: added extension for easy
72 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
77 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
73 'Iptl' template notation,
78 'Iptl' template notation,
74
79
75 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
80 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
76 safer & faster 'import' completer.
81 safer & faster 'import' completer.
77
82
78 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
83 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
79 and _ip.defalias(name, command).
84 and _ip.defalias(name, command).
80
85
81 * Extensions/ipy_exportdb.py: New extension for exporting all the
86 * Extensions/ipy_exportdb.py: New extension for exporting all the
82 %store'd data in a portable format (normal ipapi calls like
87 %store'd data in a portable format (normal ipapi calls like
83 defmacro() etc.)
88 defmacro() etc.)
84
89
85 2007-04-19 Ville Vainio <vivainio@gmail.com>
90 2007-04-19 Ville Vainio <vivainio@gmail.com>
86
91
87 * upgrade_dir.py: skip junk files like *.pyc
92 * upgrade_dir.py: skip junk files like *.pyc
88
93
89 * Release.py: version number to 0.8.1
94 * Release.py: version number to 0.8.1
90
95
91 2007-04-18 Ville Vainio <vivainio@gmail.com>
96 2007-04-18 Ville Vainio <vivainio@gmail.com>
92
97
93 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
98 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
94 and later on win32.
99 and later on win32.
95
100
96 2007-04-16 Ville Vainio <vivainio@gmail.com>
101 2007-04-16 Ville Vainio <vivainio@gmail.com>
97
102
98 * iplib.py (showtraceback): Do not crash when running w/o readline.
103 * iplib.py (showtraceback): Do not crash when running w/o readline.
99
104
100 2007-04-12 Walter Doerwald <walter@livinglogic.de>
105 2007-04-12 Walter Doerwald <walter@livinglogic.de>
101
106
102 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
107 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
103 sorted (case sensitive with files and dirs mixed).
108 sorted (case sensitive with files and dirs mixed).
104
109
105 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
110 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
106
111
107 * IPython/Release.py (version): Open trunk for 0.8.1 development.
112 * IPython/Release.py (version): Open trunk for 0.8.1 development.
108
113
109 2007-04-10 *** Released version 0.8.0
114 2007-04-10 *** Released version 0.8.0
110
115
111 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
116 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
112
117
113 * Tag 0.8.0 for release.
118 * Tag 0.8.0 for release.
114
119
115 * IPython/iplib.py (reloadhist): add API function to cleanly
120 * IPython/iplib.py (reloadhist): add API function to cleanly
116 reload the readline history, which was growing inappropriately on
121 reload the readline history, which was growing inappropriately on
117 every %run call.
122 every %run call.
118
123
119 * win32_manual_post_install.py (run): apply last part of Nicolas
124 * win32_manual_post_install.py (run): apply last part of Nicolas
120 Pernetty's patch (I'd accidentally applied it in a different
125 Pernetty's patch (I'd accidentally applied it in a different
121 directory and this particular file didn't get patched).
126 directory and this particular file didn't get patched).
122
127
123 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
128 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
124
129
125 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
130 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
126 find the main thread id and use the proper API call. Thanks to
131 find the main thread id and use the proper API call. Thanks to
127 Stefan for the fix.
132 Stefan for the fix.
128
133
129 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
134 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
130 unit tests to reflect fixed ticket #52, and add more tests sent by
135 unit tests to reflect fixed ticket #52, and add more tests sent by
131 him.
136 him.
132
137
133 * IPython/iplib.py (raw_input): restore the readline completer
138 * IPython/iplib.py (raw_input): restore the readline completer
134 state on every input, in case third-party code messed it up.
139 state on every input, in case third-party code messed it up.
135 (_prefilter): revert recent addition of early-escape checks which
140 (_prefilter): revert recent addition of early-escape checks which
136 prevent many valid alias calls from working.
141 prevent many valid alias calls from working.
137
142
138 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
143 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
139 flag for sigint handler so we don't run a full signal() call on
144 flag for sigint handler so we don't run a full signal() call on
140 each runcode access.
145 each runcode access.
141
146
142 * IPython/Magic.py (magic_whos): small improvement to diagnostic
147 * IPython/Magic.py (magic_whos): small improvement to diagnostic
143 message.
148 message.
144
149
145 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
150 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
146
151
147 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
152 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
148 asynchronous exceptions working, i.e., Ctrl-C can actually
153 asynchronous exceptions working, i.e., Ctrl-C can actually
149 interrupt long-running code in the multithreaded shells.
154 interrupt long-running code in the multithreaded shells.
150
155
151 This is using Tomer Filiba's great ctypes-based trick:
156 This is using Tomer Filiba's great ctypes-based trick:
152 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
157 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
153 this in the past, but hadn't been able to make it work before. So
158 this in the past, but hadn't been able to make it work before. So
154 far it looks like it's actually running, but this needs more
159 far it looks like it's actually running, but this needs more
155 testing. If it really works, I'll be *very* happy, and we'll owe
160 testing. If it really works, I'll be *very* happy, and we'll owe
156 a huge thank you to Tomer. My current implementation is ugly,
161 a huge thank you to Tomer. My current implementation is ugly,
157 hackish and uses nasty globals, but I don't want to try and clean
162 hackish and uses nasty globals, but I don't want to try and clean
158 anything up until we know if it actually works.
163 anything up until we know if it actually works.
159
164
160 NOTE: this feature needs ctypes to work. ctypes is included in
165 NOTE: this feature needs ctypes to work. ctypes is included in
161 Python2.5, but 2.4 users will need to manually install it. This
166 Python2.5, but 2.4 users will need to manually install it. This
162 feature makes multi-threaded shells so much more usable that it's
167 feature makes multi-threaded shells so much more usable that it's
163 a minor price to pay (ctypes is very easy to install, already a
168 a minor price to pay (ctypes is very easy to install, already a
164 requirement for win32 and available in major linux distros).
169 requirement for win32 and available in major linux distros).
165
170
166 2007-04-04 Ville Vainio <vivainio@gmail.com>
171 2007-04-04 Ville Vainio <vivainio@gmail.com>
167
172
168 * Extensions/ipy_completers.py, ipy_stock_completers.py:
173 * Extensions/ipy_completers.py, ipy_stock_completers.py:
169 Moved implementations of 'bundled' completers to ipy_completers.py,
174 Moved implementations of 'bundled' completers to ipy_completers.py,
170 they are only enabled in ipy_stock_completers.py.
175 they are only enabled in ipy_stock_completers.py.
171
176
172 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
177 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
173
178
174 * IPython/PyColorize.py (Parser.format2): Fix identation of
179 * IPython/PyColorize.py (Parser.format2): Fix identation of
175 colorzied output and return early if color scheme is NoColor, to
180 colorzied output and return early if color scheme is NoColor, to
176 avoid unnecessary and expensive tokenization. Closes #131.
181 avoid unnecessary and expensive tokenization. Closes #131.
177
182
178 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
183 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
179
184
180 * IPython/Debugger.py: disable the use of pydb version 1.17. It
185 * IPython/Debugger.py: disable the use of pydb version 1.17. It
181 has a critical bug (a missing import that makes post-mortem not
186 has a critical bug (a missing import that makes post-mortem not
182 work at all). Unfortunately as of this time, this is the version
187 work at all). Unfortunately as of this time, this is the version
183 shipped with Ubuntu Edgy, so quite a few people have this one. I
188 shipped with Ubuntu Edgy, so quite a few people have this one. I
184 hope Edgy will update to a more recent package.
189 hope Edgy will update to a more recent package.
185
190
186 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
191 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
187
192
188 * IPython/iplib.py (_prefilter): close #52, second part of a patch
193 * IPython/iplib.py (_prefilter): close #52, second part of a patch
189 set by Stefan (only the first part had been applied before).
194 set by Stefan (only the first part had been applied before).
190
195
191 * IPython/Extensions/ipy_stock_completers.py (module_completer):
196 * IPython/Extensions/ipy_stock_completers.py (module_completer):
192 remove usage of the dangerous pkgutil.walk_packages(). See
197 remove usage of the dangerous pkgutil.walk_packages(). See
193 details in comments left in the code.
198 details in comments left in the code.
194
199
195 * IPython/Magic.py (magic_whos): add support for numpy arrays
200 * IPython/Magic.py (magic_whos): add support for numpy arrays
196 similar to what we had for Numeric.
201 similar to what we had for Numeric.
197
202
198 * IPython/completer.py (IPCompleter.complete): extend the
203 * IPython/completer.py (IPCompleter.complete): extend the
199 complete() call API to support completions by other mechanisms
204 complete() call API to support completions by other mechanisms
200 than readline. Closes #109.
205 than readline. Closes #109.
201
206
202 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
207 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
203 protect against a bug in Python's execfile(). Closes #123.
208 protect against a bug in Python's execfile(). Closes #123.
204
209
205 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
210 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
206
211
207 * IPython/iplib.py (split_user_input): ensure that when splitting
212 * IPython/iplib.py (split_user_input): ensure that when splitting
208 user input, the part that can be treated as a python name is pure
213 user input, the part that can be treated as a python name is pure
209 ascii (Python identifiers MUST be pure ascii). Part of the
214 ascii (Python identifiers MUST be pure ascii). Part of the
210 ongoing Unicode support work.
215 ongoing Unicode support work.
211
216
212 * IPython/Prompts.py (prompt_specials_color): Add \N for the
217 * IPython/Prompts.py (prompt_specials_color): Add \N for the
213 actual prompt number, without any coloring. This allows users to
218 actual prompt number, without any coloring. This allows users to
214 produce numbered prompts with their own colors. Added after a
219 produce numbered prompts with their own colors. Added after a
215 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
220 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
216
221
217 2007-03-31 Walter Doerwald <walter@livinglogic.de>
222 2007-03-31 Walter Doerwald <walter@livinglogic.de>
218
223
219 * IPython/Extensions/igrid.py: Map the return key
224 * IPython/Extensions/igrid.py: Map the return key
220 to enter() and shift-return to enterattr().
225 to enter() and shift-return to enterattr().
221
226
222 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
227 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
223
228
224 * IPython/Magic.py (magic_psearch): add unicode support by
229 * IPython/Magic.py (magic_psearch): add unicode support by
225 encoding to ascii the input, since this routine also only deals
230 encoding to ascii the input, since this routine also only deals
226 with valid Python names. Fixes a bug reported by Stefan.
231 with valid Python names. Fixes a bug reported by Stefan.
227
232
228 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
233 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
229
234
230 * IPython/Magic.py (_inspect): convert unicode input into ascii
235 * IPython/Magic.py (_inspect): convert unicode input into ascii
231 before trying to evaluate it as a Python identifier. This fixes a
236 before trying to evaluate it as a Python identifier. This fixes a
232 problem that the new unicode support had introduced when analyzing
237 problem that the new unicode support had introduced when analyzing
233 long definition lines for functions.
238 long definition lines for functions.
234
239
235 2007-03-24 Walter Doerwald <walter@livinglogic.de>
240 2007-03-24 Walter Doerwald <walter@livinglogic.de>
236
241
237 * IPython/Extensions/igrid.py: Fix picking. Using
242 * IPython/Extensions/igrid.py: Fix picking. Using
238 igrid with wxPython 2.6 and -wthread should work now.
243 igrid with wxPython 2.6 and -wthread should work now.
239 igrid.display() simply tries to create a frame without
244 igrid.display() simply tries to create a frame without
240 an application. Only if this fails an application is created.
245 an application. Only if this fails an application is created.
241
246
242 2007-03-23 Walter Doerwald <walter@livinglogic.de>
247 2007-03-23 Walter Doerwald <walter@livinglogic.de>
243
248
244 * IPython/Extensions/path.py: Updated to version 2.2.
249 * IPython/Extensions/path.py: Updated to version 2.2.
245
250
246 2007-03-23 Ville Vainio <vivainio@gmail.com>
251 2007-03-23 Ville Vainio <vivainio@gmail.com>
247
252
248 * iplib.py: recursive alias expansion now works better, so that
253 * iplib.py: recursive alias expansion now works better, so that
249 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
254 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
250 doesn't trip up the process, if 'd' has been aliased to 'ls'.
255 doesn't trip up the process, if 'd' has been aliased to 'ls'.
251
256
252 * Extensions/ipy_gnuglobal.py added, provides %global magic
257 * Extensions/ipy_gnuglobal.py added, provides %global magic
253 for users of http://www.gnu.org/software/global
258 for users of http://www.gnu.org/software/global
254
259
255 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
260 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
256 Closes #52. Patch by Stefan van der Walt.
261 Closes #52. Patch by Stefan van der Walt.
257
262
258 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
263 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
259
264
260 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
265 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
261 respect the __file__ attribute when using %run. Thanks to a bug
266 respect the __file__ attribute when using %run. Thanks to a bug
262 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
267 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
263
268
264 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
269 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
265
270
266 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
271 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
267 input. Patch sent by Stefan.
272 input. Patch sent by Stefan.
268
273
269 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
274 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
270 * IPython/Extensions/ipy_stock_completer.py
275 * IPython/Extensions/ipy_stock_completer.py
271 shlex_split, fix bug in shlex_split. len function
276 shlex_split, fix bug in shlex_split. len function
272 call was missing an if statement. Caused shlex_split to
277 call was missing an if statement. Caused shlex_split to
273 sometimes return "" as last element.
278 sometimes return "" as last element.
274
279
275 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
280 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
276
281
277 * IPython/completer.py
282 * IPython/completer.py
278 (IPCompleter.file_matches.single_dir_expand): fix a problem
283 (IPCompleter.file_matches.single_dir_expand): fix a problem
279 reported by Stefan, where directories containign a single subdir
284 reported by Stefan, where directories containign a single subdir
280 would be completed too early.
285 would be completed too early.
281
286
282 * IPython/Shell.py (_load_pylab): Make the execution of 'from
287 * IPython/Shell.py (_load_pylab): Make the execution of 'from
283 pylab import *' when -pylab is given be optional. A new flag,
288 pylab import *' when -pylab is given be optional. A new flag,
284 pylab_import_all controls this behavior, the default is True for
289 pylab_import_all controls this behavior, the default is True for
285 backwards compatibility.
290 backwards compatibility.
286
291
287 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
292 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
288 modified) R. Bernstein's patch for fully syntax highlighted
293 modified) R. Bernstein's patch for fully syntax highlighted
289 tracebacks. The functionality is also available under ultraTB for
294 tracebacks. The functionality is also available under ultraTB for
290 non-ipython users (someone using ultraTB but outside an ipython
295 non-ipython users (someone using ultraTB but outside an ipython
291 session). They can select the color scheme by setting the
296 session). They can select the color scheme by setting the
292 module-level global DEFAULT_SCHEME. The highlight functionality
297 module-level global DEFAULT_SCHEME. The highlight functionality
293 also works when debugging.
298 also works when debugging.
294
299
295 * IPython/genutils.py (IOStream.close): small patch by
300 * IPython/genutils.py (IOStream.close): small patch by
296 R. Bernstein for improved pydb support.
301 R. Bernstein for improved pydb support.
297
302
298 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
303 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
299 DaveS <davls@telus.net> to improve support of debugging under
304 DaveS <davls@telus.net> to improve support of debugging under
300 NTEmacs, including improved pydb behavior.
305 NTEmacs, including improved pydb behavior.
301
306
302 * IPython/Magic.py (magic_prun): Fix saving of profile info for
307 * IPython/Magic.py (magic_prun): Fix saving of profile info for
303 Python 2.5, where the stats object API changed a little. Thanks
308 Python 2.5, where the stats object API changed a little. Thanks
304 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
309 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
305
310
306 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
311 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
307 Pernetty's patch to improve support for (X)Emacs under Win32.
312 Pernetty's patch to improve support for (X)Emacs under Win32.
308
313
309 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
314 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
310
315
311 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
316 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
312 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
317 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
313 a report by Nik Tautenhahn.
318 a report by Nik Tautenhahn.
314
319
315 2007-03-16 Walter Doerwald <walter@livinglogic.de>
320 2007-03-16 Walter Doerwald <walter@livinglogic.de>
316
321
317 * setup.py: Add the igrid help files to the list of data files
322 * setup.py: Add the igrid help files to the list of data files
318 to be installed alongside igrid.
323 to be installed alongside igrid.
319 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
324 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
320 Show the input object of the igrid browser as the window tile.
325 Show the input object of the igrid browser as the window tile.
321 Show the object the cursor is on in the statusbar.
326 Show the object the cursor is on in the statusbar.
322
327
323 2007-03-15 Ville Vainio <vivainio@gmail.com>
328 2007-03-15 Ville Vainio <vivainio@gmail.com>
324
329
325 * Extensions/ipy_stock_completers.py: Fixed exception
330 * Extensions/ipy_stock_completers.py: Fixed exception
326 on mismatching quotes in %run completer. Patch by
331 on mismatching quotes in %run completer. Patch by
327 JοΏ½rgen Stenarson. Closes #127.
332 JοΏ½rgen Stenarson. Closes #127.
328
333
329 2007-03-14 Ville Vainio <vivainio@gmail.com>
334 2007-03-14 Ville Vainio <vivainio@gmail.com>
330
335
331 * Extensions/ext_rehashdir.py: Do not do auto_alias
336 * Extensions/ext_rehashdir.py: Do not do auto_alias
332 in %rehashdir, it clobbers %store'd aliases.
337 in %rehashdir, it clobbers %store'd aliases.
333
338
334 * UserConfig/ipy_profile_sh.py: envpersist.py extension
339 * UserConfig/ipy_profile_sh.py: envpersist.py extension
335 (beefed up %env) imported for sh profile.
340 (beefed up %env) imported for sh profile.
336
341
337 2007-03-10 Walter Doerwald <walter@livinglogic.de>
342 2007-03-10 Walter Doerwald <walter@livinglogic.de>
338
343
339 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
344 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
340 as the default browser.
345 as the default browser.
341 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
346 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
342 As igrid displays all attributes it ever encounters, fetch() (which has
347 As igrid displays all attributes it ever encounters, fetch() (which has
343 been renamed to _fetch()) doesn't have to recalculate the display attributes
348 been renamed to _fetch()) doesn't have to recalculate the display attributes
344 every time a new item is fetched. This should speed up scrolling.
349 every time a new item is fetched. This should speed up scrolling.
345
350
346 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
351 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
347
352
348 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
353 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
349 Schmolck's recently reported tab-completion bug (my previous one
354 Schmolck's recently reported tab-completion bug (my previous one
350 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
355 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
351
356
352 2007-03-09 Walter Doerwald <walter@livinglogic.de>
357 2007-03-09 Walter Doerwald <walter@livinglogic.de>
353
358
354 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
359 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
355 Close help window if exiting igrid.
360 Close help window if exiting igrid.
356
361
357 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
362 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
358
363
359 * IPython/Extensions/ipy_defaults.py: Check if readline is available
364 * IPython/Extensions/ipy_defaults.py: Check if readline is available
360 before calling functions from readline.
365 before calling functions from readline.
361
366
362 2007-03-02 Walter Doerwald <walter@livinglogic.de>
367 2007-03-02 Walter Doerwald <walter@livinglogic.de>
363
368
364 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
369 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
365 igrid is a wxPython-based display object for ipipe. If your system has
370 igrid is a wxPython-based display object for ipipe. If your system has
366 wx installed igrid will be the default display. Without wx ipipe falls
371 wx installed igrid will be the default display. Without wx ipipe falls
367 back to ibrowse (which needs curses). If no curses is installed ipipe
372 back to ibrowse (which needs curses). If no curses is installed ipipe
368 falls back to idump.
373 falls back to idump.
369
374
370 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
375 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
371
376
372 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
377 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
373 my changes from yesterday, they introduced bugs. Will reactivate
378 my changes from yesterday, they introduced bugs. Will reactivate
374 once I get a correct solution, which will be much easier thanks to
379 once I get a correct solution, which will be much easier thanks to
375 Dan Milstein's new prefilter test suite.
380 Dan Milstein's new prefilter test suite.
376
381
377 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
382 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
378
383
379 * IPython/iplib.py (split_user_input): fix input splitting so we
384 * IPython/iplib.py (split_user_input): fix input splitting so we
380 don't attempt attribute accesses on things that can't possibly be
385 don't attempt attribute accesses on things that can't possibly be
381 valid Python attributes. After a bug report by Alex Schmolck.
386 valid Python attributes. After a bug report by Alex Schmolck.
382 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
387 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
383 %magic with explicit % prefix.
388 %magic with explicit % prefix.
384
389
385 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
390 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
386
391
387 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
392 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
388 avoid a DeprecationWarning from GTK.
393 avoid a DeprecationWarning from GTK.
389
394
390 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
395 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
391
396
392 * IPython/genutils.py (clock): I modified clock() to return total
397 * IPython/genutils.py (clock): I modified clock() to return total
393 time, user+system. This is a more commonly needed metric. I also
398 time, user+system. This is a more commonly needed metric. I also
394 introduced the new clocku/clocks to get only user/system time if
399 introduced the new clocku/clocks to get only user/system time if
395 one wants those instead.
400 one wants those instead.
396
401
397 ***WARNING: API CHANGE*** clock() used to return only user time,
402 ***WARNING: API CHANGE*** clock() used to return only user time,
398 so if you want exactly the same results as before, use clocku
403 so if you want exactly the same results as before, use clocku
399 instead.
404 instead.
400
405
401 2007-02-22 Ville Vainio <vivainio@gmail.com>
406 2007-02-22 Ville Vainio <vivainio@gmail.com>
402
407
403 * IPython/Extensions/ipy_p4.py: Extension for improved
408 * IPython/Extensions/ipy_p4.py: Extension for improved
404 p4 (perforce version control system) experience.
409 p4 (perforce version control system) experience.
405 Adds %p4 magic with p4 command completion and
410 Adds %p4 magic with p4 command completion and
406 automatic -G argument (marshall output as python dict)
411 automatic -G argument (marshall output as python dict)
407
412
408 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
413 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
409
414
410 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
415 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
411 stop marks.
416 stop marks.
412 (ClearingMixin): a simple mixin to easily make a Demo class clear
417 (ClearingMixin): a simple mixin to easily make a Demo class clear
413 the screen in between blocks and have empty marquees. The
418 the screen in between blocks and have empty marquees. The
414 ClearDemo and ClearIPDemo classes that use it are included.
419 ClearDemo and ClearIPDemo classes that use it are included.
415
420
416 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
421 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
417
422
418 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
423 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
419 protect against exceptions at Python shutdown time. Patch
424 protect against exceptions at Python shutdown time. Patch
420 sumbmitted to upstream.
425 sumbmitted to upstream.
421
426
422 2007-02-14 Walter Doerwald <walter@livinglogic.de>
427 2007-02-14 Walter Doerwald <walter@livinglogic.de>
423
428
424 * IPython/Extensions/ibrowse.py: If entering the first object level
429 * IPython/Extensions/ibrowse.py: If entering the first object level
425 (i.e. the object for which the browser has been started) fails,
430 (i.e. the object for which the browser has been started) fails,
426 now the error is raised directly (aborting the browser) instead of
431 now the error is raised directly (aborting the browser) instead of
427 running into an empty levels list later.
432 running into an empty levels list later.
428
433
429 2007-02-03 Walter Doerwald <walter@livinglogic.de>
434 2007-02-03 Walter Doerwald <walter@livinglogic.de>
430
435
431 * IPython/Extensions/ipipe.py: Add an xrepr implementation
436 * IPython/Extensions/ipipe.py: Add an xrepr implementation
432 for the noitem object.
437 for the noitem object.
433
438
434 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
439 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
435
440
436 * IPython/completer.py (Completer.attr_matches): Fix small
441 * IPython/completer.py (Completer.attr_matches): Fix small
437 tab-completion bug with Enthought Traits objects with units.
442 tab-completion bug with Enthought Traits objects with units.
438 Thanks to a bug report by Tom Denniston
443 Thanks to a bug report by Tom Denniston
439 <tom.denniston-AT-alum.dartmouth.org>.
444 <tom.denniston-AT-alum.dartmouth.org>.
440
445
441 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
446 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
442
447
443 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
448 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
444 bug where only .ipy or .py would be completed. Once the first
449 bug where only .ipy or .py would be completed. Once the first
445 argument to %run has been given, all completions are valid because
450 argument to %run has been given, all completions are valid because
446 they are the arguments to the script, which may well be non-python
451 they are the arguments to the script, which may well be non-python
447 filenames.
452 filenames.
448
453
449 * IPython/irunner.py (InteractiveRunner.run_source): major updates
454 * IPython/irunner.py (InteractiveRunner.run_source): major updates
450 to irunner to allow it to correctly support real doctesting of
455 to irunner to allow it to correctly support real doctesting of
451 out-of-process ipython code.
456 out-of-process ipython code.
452
457
453 * IPython/Magic.py (magic_cd): Make the setting of the terminal
458 * IPython/Magic.py (magic_cd): Make the setting of the terminal
454 title an option (-noterm_title) because it completely breaks
459 title an option (-noterm_title) because it completely breaks
455 doctesting.
460 doctesting.
456
461
457 * IPython/demo.py: fix IPythonDemo class that was not actually working.
462 * IPython/demo.py: fix IPythonDemo class that was not actually working.
458
463
459 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
464 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
460
465
461 * IPython/irunner.py (main): fix small bug where extensions were
466 * IPython/irunner.py (main): fix small bug where extensions were
462 not being correctly recognized.
467 not being correctly recognized.
463
468
464 2007-01-23 Walter Doerwald <walter@livinglogic.de>
469 2007-01-23 Walter Doerwald <walter@livinglogic.de>
465
470
466 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
471 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
467 a string containing a single line yields the string itself as the
472 a string containing a single line yields the string itself as the
468 only item.
473 only item.
469
474
470 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
475 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
471 object if it's the same as the one on the last level (This avoids
476 object if it's the same as the one on the last level (This avoids
472 infinite recursion for one line strings).
477 infinite recursion for one line strings).
473
478
474 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
479 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
475
480
476 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
481 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
477 all output streams before printing tracebacks. This ensures that
482 all output streams before printing tracebacks. This ensures that
478 user output doesn't end up interleaved with traceback output.
483 user output doesn't end up interleaved with traceback output.
479
484
480 2007-01-10 Ville Vainio <vivainio@gmail.com>
485 2007-01-10 Ville Vainio <vivainio@gmail.com>
481
486
482 * Extensions/envpersist.py: Turbocharged %env that remembers
487 * Extensions/envpersist.py: Turbocharged %env that remembers
483 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
488 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
484 "%env VISUAL=jed".
489 "%env VISUAL=jed".
485
490
486 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
491 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
487
492
488 * IPython/iplib.py (showtraceback): ensure that we correctly call
493 * IPython/iplib.py (showtraceback): ensure that we correctly call
489 custom handlers in all cases (some with pdb were slipping through,
494 custom handlers in all cases (some with pdb were slipping through,
490 but I'm not exactly sure why).
495 but I'm not exactly sure why).
491
496
492 * IPython/Debugger.py (Tracer.__init__): added new class to
497 * IPython/Debugger.py (Tracer.__init__): added new class to
493 support set_trace-like usage of IPython's enhanced debugger.
498 support set_trace-like usage of IPython's enhanced debugger.
494
499
495 2006-12-24 Ville Vainio <vivainio@gmail.com>
500 2006-12-24 Ville Vainio <vivainio@gmail.com>
496
501
497 * ipmaker.py: more informative message when ipy_user_conf
502 * ipmaker.py: more informative message when ipy_user_conf
498 import fails (suggest running %upgrade).
503 import fails (suggest running %upgrade).
499
504
500 * tools/run_ipy_in_profiler.py: Utility to see where
505 * tools/run_ipy_in_profiler.py: Utility to see where
501 the time during IPython startup is spent.
506 the time during IPython startup is spent.
502
507
503 2006-12-20 Ville Vainio <vivainio@gmail.com>
508 2006-12-20 Ville Vainio <vivainio@gmail.com>
504
509
505 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
510 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
506
511
507 * ipapi.py: Add new ipapi method, expand_alias.
512 * ipapi.py: Add new ipapi method, expand_alias.
508
513
509 * Release.py: Bump up version to 0.7.4.svn
514 * Release.py: Bump up version to 0.7.4.svn
510
515
511 2006-12-17 Ville Vainio <vivainio@gmail.com>
516 2006-12-17 Ville Vainio <vivainio@gmail.com>
512
517
513 * Extensions/jobctrl.py: Fixed &cmd arg arg...
518 * Extensions/jobctrl.py: Fixed &cmd arg arg...
514 to work properly on posix too
519 to work properly on posix too
515
520
516 * Release.py: Update revnum (version is still just 0.7.3).
521 * Release.py: Update revnum (version is still just 0.7.3).
517
522
518 2006-12-15 Ville Vainio <vivainio@gmail.com>
523 2006-12-15 Ville Vainio <vivainio@gmail.com>
519
524
520 * scripts/ipython_win_post_install: create ipython.py in
525 * scripts/ipython_win_post_install: create ipython.py in
521 prefix + "/scripts".
526 prefix + "/scripts".
522
527
523 * Release.py: Update version to 0.7.3.
528 * Release.py: Update version to 0.7.3.
524
529
525 2006-12-14 Ville Vainio <vivainio@gmail.com>
530 2006-12-14 Ville Vainio <vivainio@gmail.com>
526
531
527 * scripts/ipython_win_post_install: Overwrite old shortcuts
532 * scripts/ipython_win_post_install: Overwrite old shortcuts
528 if they already exist
533 if they already exist
529
534
530 * Release.py: release 0.7.3rc2
535 * Release.py: release 0.7.3rc2
531
536
532 2006-12-13 Ville Vainio <vivainio@gmail.com>
537 2006-12-13 Ville Vainio <vivainio@gmail.com>
533
538
534 * Branch and update Release.py for 0.7.3rc1
539 * Branch and update Release.py for 0.7.3rc1
535
540
536 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
541 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
537
542
538 * IPython/Shell.py (IPShellWX): update for current WX naming
543 * IPython/Shell.py (IPShellWX): update for current WX naming
539 conventions, to avoid a deprecation warning with current WX
544 conventions, to avoid a deprecation warning with current WX
540 versions. Thanks to a report by Danny Shevitz.
545 versions. Thanks to a report by Danny Shevitz.
541
546
542 2006-12-12 Ville Vainio <vivainio@gmail.com>
547 2006-12-12 Ville Vainio <vivainio@gmail.com>
543
548
544 * ipmaker.py: apply david cournapeau's patch to make
549 * ipmaker.py: apply david cournapeau's patch to make
545 import_some work properly even when ipythonrc does
550 import_some work properly even when ipythonrc does
546 import_some on empty list (it was an old bug!).
551 import_some on empty list (it was an old bug!).
547
552
548 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
553 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
549 Add deprecation note to ipythonrc and a url to wiki
554 Add deprecation note to ipythonrc and a url to wiki
550 in ipy_user_conf.py
555 in ipy_user_conf.py
551
556
552
557
553 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
558 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
554 as if it was typed on IPython command prompt, i.e.
559 as if it was typed on IPython command prompt, i.e.
555 as IPython script.
560 as IPython script.
556
561
557 * example-magic.py, magic_grepl.py: remove outdated examples
562 * example-magic.py, magic_grepl.py: remove outdated examples
558
563
559 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
564 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
560
565
561 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
566 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
562 is called before any exception has occurred.
567 is called before any exception has occurred.
563
568
564 2006-12-08 Ville Vainio <vivainio@gmail.com>
569 2006-12-08 Ville Vainio <vivainio@gmail.com>
565
570
566 * Extensions/ipy_stock_completers.py: fix cd completer
571 * Extensions/ipy_stock_completers.py: fix cd completer
567 to translate /'s to \'s again.
572 to translate /'s to \'s again.
568
573
569 * completer.py: prevent traceback on file completions w/
574 * completer.py: prevent traceback on file completions w/
570 backslash.
575 backslash.
571
576
572 * Release.py: Update release number to 0.7.3b3 for release
577 * Release.py: Update release number to 0.7.3b3 for release
573
578
574 2006-12-07 Ville Vainio <vivainio@gmail.com>
579 2006-12-07 Ville Vainio <vivainio@gmail.com>
575
580
576 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
581 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
577 while executing external code. Provides more shell-like behaviour
582 while executing external code. Provides more shell-like behaviour
578 and overall better response to ctrl + C / ctrl + break.
583 and overall better response to ctrl + C / ctrl + break.
579
584
580 * tools/make_tarball.py: new script to create tarball straight from svn
585 * tools/make_tarball.py: new script to create tarball straight from svn
581 (setup.py sdist doesn't work on win32).
586 (setup.py sdist doesn't work on win32).
582
587
583 * Extensions/ipy_stock_completers.py: fix cd completer to give up
588 * Extensions/ipy_stock_completers.py: fix cd completer to give up
584 on dirnames with spaces and use the default completer instead.
589 on dirnames with spaces and use the default completer instead.
585
590
586 * Revision.py: Change version to 0.7.3b2 for release.
591 * Revision.py: Change version to 0.7.3b2 for release.
587
592
588 2006-12-05 Ville Vainio <vivainio@gmail.com>
593 2006-12-05 Ville Vainio <vivainio@gmail.com>
589
594
590 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
595 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
591 pydb patch 4 (rm debug printing, py 2.5 checking)
596 pydb patch 4 (rm debug printing, py 2.5 checking)
592
597
593 2006-11-30 Walter Doerwald <walter@livinglogic.de>
598 2006-11-30 Walter Doerwald <walter@livinglogic.de>
594 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
599 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
595 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
600 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
596 "refreshfind" (mapped to "R") does the same but tries to go back to the same
601 "refreshfind" (mapped to "R") does the same but tries to go back to the same
597 object the cursor was on before the refresh. The command "markrange" is
602 object the cursor was on before the refresh. The command "markrange" is
598 mapped to "%" now.
603 mapped to "%" now.
599 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
604 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
600
605
601 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
606 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
602
607
603 * IPython/Magic.py (magic_debug): new %debug magic to activate the
608 * IPython/Magic.py (magic_debug): new %debug magic to activate the
604 interactive debugger on the last traceback, without having to call
609 interactive debugger on the last traceback, without having to call
605 %pdb and rerun your code. Made minor changes in various modules,
610 %pdb and rerun your code. Made minor changes in various modules,
606 should automatically recognize pydb if available.
611 should automatically recognize pydb if available.
607
612
608 2006-11-28 Ville Vainio <vivainio@gmail.com>
613 2006-11-28 Ville Vainio <vivainio@gmail.com>
609
614
610 * completer.py: If the text start with !, show file completions
615 * completer.py: If the text start with !, show file completions
611 properly. This helps when trying to complete command name
616 properly. This helps when trying to complete command name
612 for shell escapes.
617 for shell escapes.
613
618
614 2006-11-27 Ville Vainio <vivainio@gmail.com>
619 2006-11-27 Ville Vainio <vivainio@gmail.com>
615
620
616 * ipy_stock_completers.py: bzr completer submitted by Stefan van
621 * ipy_stock_completers.py: bzr completer submitted by Stefan van
617 der Walt. Clean up svn and hg completers by using a common
622 der Walt. Clean up svn and hg completers by using a common
618 vcs_completer.
623 vcs_completer.
619
624
620 2006-11-26 Ville Vainio <vivainio@gmail.com>
625 2006-11-26 Ville Vainio <vivainio@gmail.com>
621
626
622 * Remove ipconfig and %config; you should use _ip.options structure
627 * Remove ipconfig and %config; you should use _ip.options structure
623 directly instead!
628 directly instead!
624
629
625 * genutils.py: add wrap_deprecated function for deprecating callables
630 * genutils.py: add wrap_deprecated function for deprecating callables
626
631
627 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
632 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
628 _ip.system instead. ipalias is redundant.
633 _ip.system instead. ipalias is redundant.
629
634
630 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
635 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
631 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
636 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
632 explicit.
637 explicit.
633
638
634 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
639 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
635 completer. Try it by entering 'hg ' and pressing tab.
640 completer. Try it by entering 'hg ' and pressing tab.
636
641
637 * macro.py: Give Macro a useful __repr__ method
642 * macro.py: Give Macro a useful __repr__ method
638
643
639 * Magic.py: %whos abbreviates the typename of Macro for brevity.
644 * Magic.py: %whos abbreviates the typename of Macro for brevity.
640
645
641 2006-11-24 Walter Doerwald <walter@livinglogic.de>
646 2006-11-24 Walter Doerwald <walter@livinglogic.de>
642 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
647 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
643 we don't get a duplicate ipipe module, where registration of the xrepr
648 we don't get a duplicate ipipe module, where registration of the xrepr
644 implementation for Text is useless.
649 implementation for Text is useless.
645
650
646 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
651 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
647
652
648 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
653 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
649
654
650 2006-11-24 Ville Vainio <vivainio@gmail.com>
655 2006-11-24 Ville Vainio <vivainio@gmail.com>
651
656
652 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
657 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
653 try to use "cProfile" instead of the slower pure python
658 try to use "cProfile" instead of the slower pure python
654 "profile"
659 "profile"
655
660
656 2006-11-23 Ville Vainio <vivainio@gmail.com>
661 2006-11-23 Ville Vainio <vivainio@gmail.com>
657
662
658 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
663 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
659 Qt+IPython+Designer link in documentation.
664 Qt+IPython+Designer link in documentation.
660
665
661 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
666 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
662 correct Pdb object to %pydb.
667 correct Pdb object to %pydb.
663
668
664
669
665 2006-11-22 Walter Doerwald <walter@livinglogic.de>
670 2006-11-22 Walter Doerwald <walter@livinglogic.de>
666 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
671 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
667 generic xrepr(), otherwise the list implementation would kick in.
672 generic xrepr(), otherwise the list implementation would kick in.
668
673
669 2006-11-21 Ville Vainio <vivainio@gmail.com>
674 2006-11-21 Ville Vainio <vivainio@gmail.com>
670
675
671 * upgrade_dir.py: Now actually overwrites a nonmodified user file
676 * upgrade_dir.py: Now actually overwrites a nonmodified user file
672 with one from UserConfig.
677 with one from UserConfig.
673
678
674 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
679 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
675 it was missing which broke the sh profile.
680 it was missing which broke the sh profile.
676
681
677 * completer.py: file completer now uses explicit '/' instead
682 * completer.py: file completer now uses explicit '/' instead
678 of os.path.join, expansion of 'foo' was broken on win32
683 of os.path.join, expansion of 'foo' was broken on win32
679 if there was one directory with name 'foobar'.
684 if there was one directory with name 'foobar'.
680
685
681 * A bunch of patches from Kirill Smelkov:
686 * A bunch of patches from Kirill Smelkov:
682
687
683 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
688 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
684
689
685 * [patch 7/9] Implement %page -r (page in raw mode) -
690 * [patch 7/9] Implement %page -r (page in raw mode) -
686
691
687 * [patch 5/9] ScientificPython webpage has moved
692 * [patch 5/9] ScientificPython webpage has moved
688
693
689 * [patch 4/9] The manual mentions %ds, should be %dhist
694 * [patch 4/9] The manual mentions %ds, should be %dhist
690
695
691 * [patch 3/9] Kill old bits from %prun doc.
696 * [patch 3/9] Kill old bits from %prun doc.
692
697
693 * [patch 1/9] Fix typos here and there.
698 * [patch 1/9] Fix typos here and there.
694
699
695 2006-11-08 Ville Vainio <vivainio@gmail.com>
700 2006-11-08 Ville Vainio <vivainio@gmail.com>
696
701
697 * completer.py (attr_matches): catch all exceptions raised
702 * completer.py (attr_matches): catch all exceptions raised
698 by eval of expr with dots.
703 by eval of expr with dots.
699
704
700 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
705 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
701
706
702 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
707 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
703 input if it starts with whitespace. This allows you to paste
708 input if it starts with whitespace. This allows you to paste
704 indented input from any editor without manually having to type in
709 indented input from any editor without manually having to type in
705 the 'if 1:', which is convenient when working interactively.
710 the 'if 1:', which is convenient when working interactively.
706 Slightly modifed version of a patch by Bo Peng
711 Slightly modifed version of a patch by Bo Peng
707 <bpeng-AT-rice.edu>.
712 <bpeng-AT-rice.edu>.
708
713
709 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
714 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
710
715
711 * IPython/irunner.py (main): modified irunner so it automatically
716 * IPython/irunner.py (main): modified irunner so it automatically
712 recognizes the right runner to use based on the extension (.py for
717 recognizes the right runner to use based on the extension (.py for
713 python, .ipy for ipython and .sage for sage).
718 python, .ipy for ipython and .sage for sage).
714
719
715 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
720 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
716 visible in ipapi as ip.config(), to programatically control the
721 visible in ipapi as ip.config(), to programatically control the
717 internal rc object. There's an accompanying %config magic for
722 internal rc object. There's an accompanying %config magic for
718 interactive use, which has been enhanced to match the
723 interactive use, which has been enhanced to match the
719 funtionality in ipconfig.
724 funtionality in ipconfig.
720
725
721 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
726 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
722 so it's not just a toggle, it now takes an argument. Add support
727 so it's not just a toggle, it now takes an argument. Add support
723 for a customizable header when making system calls, as the new
728 for a customizable header when making system calls, as the new
724 system_header variable in the ipythonrc file.
729 system_header variable in the ipythonrc file.
725
730
726 2006-11-03 Walter Doerwald <walter@livinglogic.de>
731 2006-11-03 Walter Doerwald <walter@livinglogic.de>
727
732
728 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
733 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
729 generic functions (using Philip J. Eby's simplegeneric package).
734 generic functions (using Philip J. Eby's simplegeneric package).
730 This makes it possible to customize the display of third-party classes
735 This makes it possible to customize the display of third-party classes
731 without having to monkeypatch them. xiter() no longer supports a mode
736 without having to monkeypatch them. xiter() no longer supports a mode
732 argument and the XMode class has been removed. The same functionality can
737 argument and the XMode class has been removed. The same functionality can
733 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
738 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
734 One consequence of the switch to generic functions is that xrepr() and
739 One consequence of the switch to generic functions is that xrepr() and
735 xattrs() implementation must define the default value for the mode
740 xattrs() implementation must define the default value for the mode
736 argument themselves and xattrs() implementations must return real
741 argument themselves and xattrs() implementations must return real
737 descriptors.
742 descriptors.
738
743
739 * IPython/external: This new subpackage will contain all third-party
744 * IPython/external: This new subpackage will contain all third-party
740 packages that are bundled with IPython. (The first one is simplegeneric).
745 packages that are bundled with IPython. (The first one is simplegeneric).
741
746
742 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
747 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
743 directory which as been dropped in r1703.
748 directory which as been dropped in r1703.
744
749
745 * IPython/Extensions/ipipe.py (iless): Fixed.
750 * IPython/Extensions/ipipe.py (iless): Fixed.
746
751
747 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
752 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
748
753
749 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
754 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
750
755
751 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
756 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
752 handling in variable expansion so that shells and magics recognize
757 handling in variable expansion so that shells and magics recognize
753 function local scopes correctly. Bug reported by Brian.
758 function local scopes correctly. Bug reported by Brian.
754
759
755 * scripts/ipython: remove the very first entry in sys.path which
760 * scripts/ipython: remove the very first entry in sys.path which
756 Python auto-inserts for scripts, so that sys.path under IPython is
761 Python auto-inserts for scripts, so that sys.path under IPython is
757 as similar as possible to that under plain Python.
762 as similar as possible to that under plain Python.
758
763
759 * IPython/completer.py (IPCompleter.file_matches): Fix
764 * IPython/completer.py (IPCompleter.file_matches): Fix
760 tab-completion so that quotes are not closed unless the completion
765 tab-completion so that quotes are not closed unless the completion
761 is unambiguous. After a request by Stefan. Minor cleanups in
766 is unambiguous. After a request by Stefan. Minor cleanups in
762 ipy_stock_completers.
767 ipy_stock_completers.
763
768
764 2006-11-02 Ville Vainio <vivainio@gmail.com>
769 2006-11-02 Ville Vainio <vivainio@gmail.com>
765
770
766 * ipy_stock_completers.py: Add %run and %cd completers.
771 * ipy_stock_completers.py: Add %run and %cd completers.
767
772
768 * completer.py: Try running custom completer for both
773 * completer.py: Try running custom completer for both
769 "foo" and "%foo" if the command is just "foo". Ignore case
774 "foo" and "%foo" if the command is just "foo". Ignore case
770 when filtering possible completions.
775 when filtering possible completions.
771
776
772 * UserConfig/ipy_user_conf.py: install stock completers as default
777 * UserConfig/ipy_user_conf.py: install stock completers as default
773
778
774 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
779 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
775 simplified readline history save / restore through a wrapper
780 simplified readline history save / restore through a wrapper
776 function
781 function
777
782
778
783
779 2006-10-31 Ville Vainio <vivainio@gmail.com>
784 2006-10-31 Ville Vainio <vivainio@gmail.com>
780
785
781 * strdispatch.py, completer.py, ipy_stock_completers.py:
786 * strdispatch.py, completer.py, ipy_stock_completers.py:
782 Allow str_key ("command") in completer hooks. Implement
787 Allow str_key ("command") in completer hooks. Implement
783 trivial completer for 'import' (stdlib modules only). Rename
788 trivial completer for 'import' (stdlib modules only). Rename
784 ipy_linux_package_managers.py to ipy_stock_completers.py.
789 ipy_linux_package_managers.py to ipy_stock_completers.py.
785 SVN completer.
790 SVN completer.
786
791
787 * Extensions/ledit.py: %magic line editor for easily and
792 * Extensions/ledit.py: %magic line editor for easily and
788 incrementally manipulating lists of strings. The magic command
793 incrementally manipulating lists of strings. The magic command
789 name is %led.
794 name is %led.
790
795
791 2006-10-30 Ville Vainio <vivainio@gmail.com>
796 2006-10-30 Ville Vainio <vivainio@gmail.com>
792
797
793 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
798 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
794 Bernsteins's patches for pydb integration.
799 Bernsteins's patches for pydb integration.
795 http://bashdb.sourceforge.net/pydb/
800 http://bashdb.sourceforge.net/pydb/
796
801
797 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
802 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
798 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
803 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
799 custom completer hook to allow the users to implement their own
804 custom completer hook to allow the users to implement their own
800 completers. See ipy_linux_package_managers.py for example. The
805 completers. See ipy_linux_package_managers.py for example. The
801 hook name is 'complete_command'.
806 hook name is 'complete_command'.
802
807
803 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
808 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
804
809
805 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
810 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
806 Numeric leftovers.
811 Numeric leftovers.
807
812
808 * ipython.el (py-execute-region): apply Stefan's patch to fix
813 * ipython.el (py-execute-region): apply Stefan's patch to fix
809 garbled results if the python shell hasn't been previously started.
814 garbled results if the python shell hasn't been previously started.
810
815
811 * IPython/genutils.py (arg_split): moved to genutils, since it's a
816 * IPython/genutils.py (arg_split): moved to genutils, since it's a
812 pretty generic function and useful for other things.
817 pretty generic function and useful for other things.
813
818
814 * IPython/OInspect.py (getsource): Add customizable source
819 * IPython/OInspect.py (getsource): Add customizable source
815 extractor. After a request/patch form W. Stein (SAGE).
820 extractor. After a request/patch form W. Stein (SAGE).
816
821
817 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
822 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
818 window size to a more reasonable value from what pexpect does,
823 window size to a more reasonable value from what pexpect does,
819 since their choice causes wrapping bugs with long input lines.
824 since their choice causes wrapping bugs with long input lines.
820
825
821 2006-10-28 Ville Vainio <vivainio@gmail.com>
826 2006-10-28 Ville Vainio <vivainio@gmail.com>
822
827
823 * Magic.py (%run): Save and restore the readline history from
828 * Magic.py (%run): Save and restore the readline history from
824 file around %run commands to prevent side effects from
829 file around %run commands to prevent side effects from
825 %runned programs that might use readline (e.g. pydb).
830 %runned programs that might use readline (e.g. pydb).
826
831
827 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
832 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
828 invoking the pydb enhanced debugger.
833 invoking the pydb enhanced debugger.
829
834
830 2006-10-23 Walter Doerwald <walter@livinglogic.de>
835 2006-10-23 Walter Doerwald <walter@livinglogic.de>
831
836
832 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
837 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
833 call the base class method and propagate the return value to
838 call the base class method and propagate the return value to
834 ifile. This is now done by path itself.
839 ifile. This is now done by path itself.
835
840
836 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
841 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
837
842
838 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
843 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
839 api: set_crash_handler(), to expose the ability to change the
844 api: set_crash_handler(), to expose the ability to change the
840 internal crash handler.
845 internal crash handler.
841
846
842 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
847 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
843 the various parameters of the crash handler so that apps using
848 the various parameters of the crash handler so that apps using
844 IPython as their engine can customize crash handling. Ipmlemented
849 IPython as their engine can customize crash handling. Ipmlemented
845 at the request of SAGE.
850 at the request of SAGE.
846
851
847 2006-10-14 Ville Vainio <vivainio@gmail.com>
852 2006-10-14 Ville Vainio <vivainio@gmail.com>
848
853
849 * Magic.py, ipython.el: applied first "safe" part of Rocky
854 * Magic.py, ipython.el: applied first "safe" part of Rocky
850 Bernstein's patch set for pydb integration.
855 Bernstein's patch set for pydb integration.
851
856
852 * Magic.py (%unalias, %alias): %store'd aliases can now be
857 * Magic.py (%unalias, %alias): %store'd aliases can now be
853 removed with '%unalias'. %alias w/o args now shows most
858 removed with '%unalias'. %alias w/o args now shows most
854 interesting (stored / manually defined) aliases last
859 interesting (stored / manually defined) aliases last
855 where they catch the eye w/o scrolling.
860 where they catch the eye w/o scrolling.
856
861
857 * Magic.py (%rehashx), ext_rehashdir.py: files with
862 * Magic.py (%rehashx), ext_rehashdir.py: files with
858 'py' extension are always considered executable, even
863 'py' extension are always considered executable, even
859 when not in PATHEXT environment variable.
864 when not in PATHEXT environment variable.
860
865
861 2006-10-12 Ville Vainio <vivainio@gmail.com>
866 2006-10-12 Ville Vainio <vivainio@gmail.com>
862
867
863 * jobctrl.py: Add new "jobctrl" extension for spawning background
868 * jobctrl.py: Add new "jobctrl" extension for spawning background
864 processes with "&find /". 'import jobctrl' to try it out. Requires
869 processes with "&find /". 'import jobctrl' to try it out. Requires
865 'subprocess' module, standard in python 2.4+.
870 'subprocess' module, standard in python 2.4+.
866
871
867 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
872 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
868 so if foo -> bar and bar -> baz, then foo -> baz.
873 so if foo -> bar and bar -> baz, then foo -> baz.
869
874
870 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
875 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
871
876
872 * IPython/Magic.py (Magic.parse_options): add a new posix option
877 * IPython/Magic.py (Magic.parse_options): add a new posix option
873 to allow parsing of input args in magics that doesn't strip quotes
878 to allow parsing of input args in magics that doesn't strip quotes
874 (if posix=False). This also closes %timeit bug reported by
879 (if posix=False). This also closes %timeit bug reported by
875 Stefan.
880 Stefan.
876
881
877 2006-10-03 Ville Vainio <vivainio@gmail.com>
882 2006-10-03 Ville Vainio <vivainio@gmail.com>
878
883
879 * iplib.py (raw_input, interact): Return ValueError catching for
884 * iplib.py (raw_input, interact): Return ValueError catching for
880 raw_input. Fixes infinite loop for sys.stdin.close() or
885 raw_input. Fixes infinite loop for sys.stdin.close() or
881 sys.stdout.close().
886 sys.stdout.close().
882
887
883 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
888 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
884
889
885 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
890 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
886 to help in handling doctests. irunner is now pretty useful for
891 to help in handling doctests. irunner is now pretty useful for
887 running standalone scripts and simulate a full interactive session
892 running standalone scripts and simulate a full interactive session
888 in a format that can be then pasted as a doctest.
893 in a format that can be then pasted as a doctest.
889
894
890 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
895 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
891 on top of the default (useless) ones. This also fixes the nasty
896 on top of the default (useless) ones. This also fixes the nasty
892 way in which 2.5's Quitter() exits (reverted [1785]).
897 way in which 2.5's Quitter() exits (reverted [1785]).
893
898
894 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
899 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
895 2.5.
900 2.5.
896
901
897 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
902 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
898 color scheme is updated as well when color scheme is changed
903 color scheme is updated as well when color scheme is changed
899 interactively.
904 interactively.
900
905
901 2006-09-27 Ville Vainio <vivainio@gmail.com>
906 2006-09-27 Ville Vainio <vivainio@gmail.com>
902
907
903 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
908 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
904 infinite loop and just exit. It's a hack, but will do for a while.
909 infinite loop and just exit. It's a hack, but will do for a while.
905
910
906 2006-08-25 Walter Doerwald <walter@livinglogic.de>
911 2006-08-25 Walter Doerwald <walter@livinglogic.de>
907
912
908 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
913 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
909 the constructor, this makes it possible to get a list of only directories
914 the constructor, this makes it possible to get a list of only directories
910 or only files.
915 or only files.
911
916
912 2006-08-12 Ville Vainio <vivainio@gmail.com>
917 2006-08-12 Ville Vainio <vivainio@gmail.com>
913
918
914 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
919 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
915 they broke unittest
920 they broke unittest
916
921
917 2006-08-11 Ville Vainio <vivainio@gmail.com>
922 2006-08-11 Ville Vainio <vivainio@gmail.com>
918
923
919 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
924 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
920 by resolving issue properly, i.e. by inheriting FakeModule
925 by resolving issue properly, i.e. by inheriting FakeModule
921 from types.ModuleType. Pickling ipython interactive data
926 from types.ModuleType. Pickling ipython interactive data
922 should still work as usual (testing appreciated).
927 should still work as usual (testing appreciated).
923
928
924 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
929 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
925
930
926 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
931 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
927 running under python 2.3 with code from 2.4 to fix a bug with
932 running under python 2.3 with code from 2.4 to fix a bug with
928 help(). Reported by the Debian maintainers, Norbert Tretkowski
933 help(). Reported by the Debian maintainers, Norbert Tretkowski
929 <norbert-AT-tretkowski.de> and Alexandre Fayolle
934 <norbert-AT-tretkowski.de> and Alexandre Fayolle
930 <afayolle-AT-debian.org>.
935 <afayolle-AT-debian.org>.
931
936
932 2006-08-04 Walter Doerwald <walter@livinglogic.de>
937 2006-08-04 Walter Doerwald <walter@livinglogic.de>
933
938
934 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
939 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
935 (which was displaying "quit" twice).
940 (which was displaying "quit" twice).
936
941
937 2006-07-28 Walter Doerwald <walter@livinglogic.de>
942 2006-07-28 Walter Doerwald <walter@livinglogic.de>
938
943
939 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
944 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
940 the mode argument).
945 the mode argument).
941
946
942 2006-07-27 Walter Doerwald <walter@livinglogic.de>
947 2006-07-27 Walter Doerwald <walter@livinglogic.de>
943
948
944 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
949 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
945 not running under IPython.
950 not running under IPython.
946
951
947 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
952 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
948 and make it iterable (iterating over the attribute itself). Add two new
953 and make it iterable (iterating over the attribute itself). Add two new
949 magic strings for __xattrs__(): If the string starts with "-", the attribute
954 magic strings for __xattrs__(): If the string starts with "-", the attribute
950 will not be displayed in ibrowse's detail view (but it can still be
955 will not be displayed in ibrowse's detail view (but it can still be
951 iterated over). This makes it possible to add attributes that are large
956 iterated over). This makes it possible to add attributes that are large
952 lists or generator methods to the detail view. Replace magic attribute names
957 lists or generator methods to the detail view. Replace magic attribute names
953 and _attrname() and _getattr() with "descriptors": For each type of magic
958 and _attrname() and _getattr() with "descriptors": For each type of magic
954 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
959 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
955 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
960 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
956 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
961 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
957 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
962 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
958 are still supported.
963 are still supported.
959
964
960 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
965 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
961 fails in ibrowse.fetch(), the exception object is added as the last item
966 fails in ibrowse.fetch(), the exception object is added as the last item
962 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
967 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
963 a generator throws an exception midway through execution.
968 a generator throws an exception midway through execution.
964
969
965 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
970 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
966 encoding into methods.
971 encoding into methods.
967
972
968 2006-07-26 Ville Vainio <vivainio@gmail.com>
973 2006-07-26 Ville Vainio <vivainio@gmail.com>
969
974
970 * iplib.py: history now stores multiline input as single
975 * iplib.py: history now stores multiline input as single
971 history entries. Patch by Jorgen Cederlof.
976 history entries. Patch by Jorgen Cederlof.
972
977
973 2006-07-18 Walter Doerwald <walter@livinglogic.de>
978 2006-07-18 Walter Doerwald <walter@livinglogic.de>
974
979
975 * IPython/Extensions/ibrowse.py: Make cursor visible over
980 * IPython/Extensions/ibrowse.py: Make cursor visible over
976 non existing attributes.
981 non existing attributes.
977
982
978 2006-07-14 Walter Doerwald <walter@livinglogic.de>
983 2006-07-14 Walter Doerwald <walter@livinglogic.de>
979
984
980 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
985 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
981 error output of the running command doesn't mess up the screen.
986 error output of the running command doesn't mess up the screen.
982
987
983 2006-07-13 Walter Doerwald <walter@livinglogic.de>
988 2006-07-13 Walter Doerwald <walter@livinglogic.de>
984
989
985 * IPython/Extensions/ipipe.py (isort): Make isort usable without
990 * IPython/Extensions/ipipe.py (isort): Make isort usable without
986 argument. This sorts the items themselves.
991 argument. This sorts the items themselves.
987
992
988 2006-07-12 Walter Doerwald <walter@livinglogic.de>
993 2006-07-12 Walter Doerwald <walter@livinglogic.de>
989
994
990 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
995 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
991 Compile expression strings into code objects. This should speed
996 Compile expression strings into code objects. This should speed
992 up ifilter and friends somewhat.
997 up ifilter and friends somewhat.
993
998
994 2006-07-08 Ville Vainio <vivainio@gmail.com>
999 2006-07-08 Ville Vainio <vivainio@gmail.com>
995
1000
996 * Magic.py: %cpaste now strips > from the beginning of lines
1001 * Magic.py: %cpaste now strips > from the beginning of lines
997 to ease pasting quoted code from emails. Contributed by
1002 to ease pasting quoted code from emails. Contributed by
998 Stefan van der Walt.
1003 Stefan van der Walt.
999
1004
1000 2006-06-29 Ville Vainio <vivainio@gmail.com>
1005 2006-06-29 Ville Vainio <vivainio@gmail.com>
1001
1006
1002 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1007 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1003 mode, patch contributed by Darren Dale. NEEDS TESTING!
1008 mode, patch contributed by Darren Dale. NEEDS TESTING!
1004
1009
1005 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1010 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1006
1011
1007 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1012 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1008 a blue background. Fix fetching new display rows when the browser
1013 a blue background. Fix fetching new display rows when the browser
1009 scrolls more than a screenful (e.g. by using the goto command).
1014 scrolls more than a screenful (e.g. by using the goto command).
1010
1015
1011 2006-06-27 Ville Vainio <vivainio@gmail.com>
1016 2006-06-27 Ville Vainio <vivainio@gmail.com>
1012
1017
1013 * Magic.py (_inspect, _ofind) Apply David Huard's
1018 * Magic.py (_inspect, _ofind) Apply David Huard's
1014 patch for displaying the correct docstring for 'property'
1019 patch for displaying the correct docstring for 'property'
1015 attributes.
1020 attributes.
1016
1021
1017 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1022 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1018
1023
1019 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1024 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1020 commands into the methods implementing them.
1025 commands into the methods implementing them.
1021
1026
1022 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1027 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1023
1028
1024 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1029 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1025 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1030 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1026 autoindent support was authored by Jin Liu.
1031 autoindent support was authored by Jin Liu.
1027
1032
1028 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1033 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1029
1034
1030 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1035 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1031 for keymaps with a custom class that simplifies handling.
1036 for keymaps with a custom class that simplifies handling.
1032
1037
1033 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1038 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1034
1039
1035 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1040 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1036 resizing. This requires Python 2.5 to work.
1041 resizing. This requires Python 2.5 to work.
1037
1042
1038 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1043 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1039
1044
1040 * IPython/Extensions/ibrowse.py: Add two new commands to
1045 * IPython/Extensions/ibrowse.py: Add two new commands to
1041 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1046 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1042 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1047 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1043 attributes again. Remapped the help command to "?". Display
1048 attributes again. Remapped the help command to "?". Display
1044 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1049 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1045 as keys for the "home" and "end" commands. Add three new commands
1050 as keys for the "home" and "end" commands. Add three new commands
1046 to the input mode for "find" and friends: "delend" (CTRL-K)
1051 to the input mode for "find" and friends: "delend" (CTRL-K)
1047 deletes to the end of line. "incsearchup" searches upwards in the
1052 deletes to the end of line. "incsearchup" searches upwards in the
1048 command history for an input that starts with the text before the cursor.
1053 command history for an input that starts with the text before the cursor.
1049 "incsearchdown" does the same downwards. Removed a bogus mapping of
1054 "incsearchdown" does the same downwards. Removed a bogus mapping of
1050 the x key to "delete".
1055 the x key to "delete".
1051
1056
1052 2006-06-15 Ville Vainio <vivainio@gmail.com>
1057 2006-06-15 Ville Vainio <vivainio@gmail.com>
1053
1058
1054 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1059 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1055 used to create prompts dynamically, instead of the "old" way of
1060 used to create prompts dynamically, instead of the "old" way of
1056 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1061 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1057 way still works (it's invoked by the default hook), of course.
1062 way still works (it's invoked by the default hook), of course.
1058
1063
1059 * Prompts.py: added generate_output_prompt hook for altering output
1064 * Prompts.py: added generate_output_prompt hook for altering output
1060 prompt
1065 prompt
1061
1066
1062 * Release.py: Changed version string to 0.7.3.svn.
1067 * Release.py: Changed version string to 0.7.3.svn.
1063
1068
1064 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1069 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1065
1070
1066 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1071 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1067 the call to fetch() always tries to fetch enough data for at least one
1072 the call to fetch() always tries to fetch enough data for at least one
1068 full screen. This makes it possible to simply call moveto(0,0,True) in
1073 full screen. This makes it possible to simply call moveto(0,0,True) in
1069 the constructor. Fix typos and removed the obsolete goto attribute.
1074 the constructor. Fix typos and removed the obsolete goto attribute.
1070
1075
1071 2006-06-12 Ville Vainio <vivainio@gmail.com>
1076 2006-06-12 Ville Vainio <vivainio@gmail.com>
1072
1077
1073 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1078 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1074 allowing $variable interpolation within multiline statements,
1079 allowing $variable interpolation within multiline statements,
1075 though so far only with "sh" profile for a testing period.
1080 though so far only with "sh" profile for a testing period.
1076 The patch also enables splitting long commands with \ but it
1081 The patch also enables splitting long commands with \ but it
1077 doesn't work properly yet.
1082 doesn't work properly yet.
1078
1083
1079 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1084 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1080
1085
1081 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1086 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1082 input history and the position of the cursor in the input history for
1087 input history and the position of the cursor in the input history for
1083 the find, findbackwards and goto command.
1088 the find, findbackwards and goto command.
1084
1089
1085 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1090 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1086
1091
1087 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1092 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1088 implements the basic functionality of browser commands that require
1093 implements the basic functionality of browser commands that require
1089 input. Reimplement the goto, find and findbackwards commands as
1094 input. Reimplement the goto, find and findbackwards commands as
1090 subclasses of _CommandInput. Add an input history and keymaps to those
1095 subclasses of _CommandInput. Add an input history and keymaps to those
1091 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1096 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1092 execute commands.
1097 execute commands.
1093
1098
1094 2006-06-07 Ville Vainio <vivainio@gmail.com>
1099 2006-06-07 Ville Vainio <vivainio@gmail.com>
1095
1100
1096 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1101 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1097 running the batch files instead of leaving the session open.
1102 running the batch files instead of leaving the session open.
1098
1103
1099 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1104 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1100
1105
1101 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1106 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1102 the original fix was incomplete. Patch submitted by W. Maier.
1107 the original fix was incomplete. Patch submitted by W. Maier.
1103
1108
1104 2006-06-07 Ville Vainio <vivainio@gmail.com>
1109 2006-06-07 Ville Vainio <vivainio@gmail.com>
1105
1110
1106 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1111 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1107 Confirmation prompts can be supressed by 'quiet' option.
1112 Confirmation prompts can be supressed by 'quiet' option.
1108 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1113 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1109
1114
1110 2006-06-06 *** Released version 0.7.2
1115 2006-06-06 *** Released version 0.7.2
1111
1116
1112 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1117 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1113
1118
1114 * IPython/Release.py (version): Made 0.7.2 final for release.
1119 * IPython/Release.py (version): Made 0.7.2 final for release.
1115 Repo tagged and release cut.
1120 Repo tagged and release cut.
1116
1121
1117 2006-06-05 Ville Vainio <vivainio@gmail.com>
1122 2006-06-05 Ville Vainio <vivainio@gmail.com>
1118
1123
1119 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1124 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1120 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1125 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1121
1126
1122 * upgrade_dir.py: try import 'path' module a bit harder
1127 * upgrade_dir.py: try import 'path' module a bit harder
1123 (for %upgrade)
1128 (for %upgrade)
1124
1129
1125 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1130 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1126
1131
1127 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1132 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1128 instead of looping 20 times.
1133 instead of looping 20 times.
1129
1134
1130 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1135 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1131 correctly at initialization time. Bug reported by Krishna Mohan
1136 correctly at initialization time. Bug reported by Krishna Mohan
1132 Gundu <gkmohan-AT-gmail.com> on the user list.
1137 Gundu <gkmohan-AT-gmail.com> on the user list.
1133
1138
1134 * IPython/Release.py (version): Mark 0.7.2 version to start
1139 * IPython/Release.py (version): Mark 0.7.2 version to start
1135 testing for release on 06/06.
1140 testing for release on 06/06.
1136
1141
1137 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1142 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1138
1143
1139 * scripts/irunner: thin script interface so users don't have to
1144 * scripts/irunner: thin script interface so users don't have to
1140 find the module and call it as an executable, since modules rarely
1145 find the module and call it as an executable, since modules rarely
1141 live in people's PATH.
1146 live in people's PATH.
1142
1147
1143 * IPython/irunner.py (InteractiveRunner.__init__): added
1148 * IPython/irunner.py (InteractiveRunner.__init__): added
1144 delaybeforesend attribute to control delays with newer versions of
1149 delaybeforesend attribute to control delays with newer versions of
1145 pexpect. Thanks to detailed help from pexpect's author, Noah
1150 pexpect. Thanks to detailed help from pexpect's author, Noah
1146 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1151 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1147 correctly (it works in NoColor mode).
1152 correctly (it works in NoColor mode).
1148
1153
1149 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1154 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1150 SAGE list, from improper log() calls.
1155 SAGE list, from improper log() calls.
1151
1156
1152 2006-05-31 Ville Vainio <vivainio@gmail.com>
1157 2006-05-31 Ville Vainio <vivainio@gmail.com>
1153
1158
1154 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1159 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1155 with args in parens to work correctly with dirs that have spaces.
1160 with args in parens to work correctly with dirs that have spaces.
1156
1161
1157 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1162 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1158
1163
1159 * IPython/Logger.py (Logger.logstart): add option to log raw input
1164 * IPython/Logger.py (Logger.logstart): add option to log raw input
1160 instead of the processed one. A -r flag was added to the
1165 instead of the processed one. A -r flag was added to the
1161 %logstart magic used for controlling logging.
1166 %logstart magic used for controlling logging.
1162
1167
1163 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1168 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1164
1169
1165 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1170 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1166 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1171 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1167 recognize the option. After a bug report by Will Maier. This
1172 recognize the option. After a bug report by Will Maier. This
1168 closes #64 (will do it after confirmation from W. Maier).
1173 closes #64 (will do it after confirmation from W. Maier).
1169
1174
1170 * IPython/irunner.py: New module to run scripts as if manually
1175 * IPython/irunner.py: New module to run scripts as if manually
1171 typed into an interactive environment, based on pexpect. After a
1176 typed into an interactive environment, based on pexpect. After a
1172 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1177 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1173 ipython-user list. Simple unittests in the tests/ directory.
1178 ipython-user list. Simple unittests in the tests/ directory.
1174
1179
1175 * tools/release: add Will Maier, OpenBSD port maintainer, to
1180 * tools/release: add Will Maier, OpenBSD port maintainer, to
1176 recepients list. We are now officially part of the OpenBSD ports:
1181 recepients list. We are now officially part of the OpenBSD ports:
1177 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1182 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1178 work.
1183 work.
1179
1184
1180 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1185 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1181
1186
1182 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1187 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1183 so that it doesn't break tkinter apps.
1188 so that it doesn't break tkinter apps.
1184
1189
1185 * IPython/iplib.py (_prefilter): fix bug where aliases would
1190 * IPython/iplib.py (_prefilter): fix bug where aliases would
1186 shadow variables when autocall was fully off. Reported by SAGE
1191 shadow variables when autocall was fully off. Reported by SAGE
1187 author William Stein.
1192 author William Stein.
1188
1193
1189 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1194 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1190 at what detail level strings are computed when foo? is requested.
1195 at what detail level strings are computed when foo? is requested.
1191 This allows users to ask for example that the string form of an
1196 This allows users to ask for example that the string form of an
1192 object is only computed when foo?? is called, or even never, by
1197 object is only computed when foo?? is called, or even never, by
1193 setting the object_info_string_level >= 2 in the configuration
1198 setting the object_info_string_level >= 2 in the configuration
1194 file. This new option has been added and documented. After a
1199 file. This new option has been added and documented. After a
1195 request by SAGE to be able to control the printing of very large
1200 request by SAGE to be able to control the printing of very large
1196 objects more easily.
1201 objects more easily.
1197
1202
1198 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1203 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1199
1204
1200 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1205 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1201 from sys.argv, to be 100% consistent with how Python itself works
1206 from sys.argv, to be 100% consistent with how Python itself works
1202 (as seen for example with python -i file.py). After a bug report
1207 (as seen for example with python -i file.py). After a bug report
1203 by Jeffrey Collins.
1208 by Jeffrey Collins.
1204
1209
1205 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1210 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1206 nasty bug which was preventing custom namespaces with -pylab,
1211 nasty bug which was preventing custom namespaces with -pylab,
1207 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1212 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1208 compatibility (long gone from mpl).
1213 compatibility (long gone from mpl).
1209
1214
1210 * IPython/ipapi.py (make_session): name change: create->make. We
1215 * IPython/ipapi.py (make_session): name change: create->make. We
1211 use make in other places (ipmaker,...), it's shorter and easier to
1216 use make in other places (ipmaker,...), it's shorter and easier to
1212 type and say, etc. I'm trying to clean things before 0.7.2 so
1217 type and say, etc. I'm trying to clean things before 0.7.2 so
1213 that I can keep things stable wrt to ipapi in the chainsaw branch.
1218 that I can keep things stable wrt to ipapi in the chainsaw branch.
1214
1219
1215 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1220 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1216 python-mode recognizes our debugger mode. Add support for
1221 python-mode recognizes our debugger mode. Add support for
1217 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1222 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1218 <m.liu.jin-AT-gmail.com> originally written by
1223 <m.liu.jin-AT-gmail.com> originally written by
1219 doxgen-AT-newsmth.net (with minor modifications for xemacs
1224 doxgen-AT-newsmth.net (with minor modifications for xemacs
1220 compatibility)
1225 compatibility)
1221
1226
1222 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1227 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1223 tracebacks when walking the stack so that the stack tracking system
1228 tracebacks when walking the stack so that the stack tracking system
1224 in emacs' python-mode can identify the frames correctly.
1229 in emacs' python-mode can identify the frames correctly.
1225
1230
1226 * IPython/ipmaker.py (make_IPython): make the internal (and
1231 * IPython/ipmaker.py (make_IPython): make the internal (and
1227 default config) autoedit_syntax value false by default. Too many
1232 default config) autoedit_syntax value false by default. Too many
1228 users have complained to me (both on and off-list) about problems
1233 users have complained to me (both on and off-list) about problems
1229 with this option being on by default, so I'm making it default to
1234 with this option being on by default, so I'm making it default to
1230 off. It can still be enabled by anyone via the usual mechanisms.
1235 off. It can still be enabled by anyone via the usual mechanisms.
1231
1236
1232 * IPython/completer.py (Completer.attr_matches): add support for
1237 * IPython/completer.py (Completer.attr_matches): add support for
1233 PyCrust-style _getAttributeNames magic method. Patch contributed
1238 PyCrust-style _getAttributeNames magic method. Patch contributed
1234 by <mscott-AT-goldenspud.com>. Closes #50.
1239 by <mscott-AT-goldenspud.com>. Closes #50.
1235
1240
1236 * IPython/iplib.py (InteractiveShell.__init__): remove the
1241 * IPython/iplib.py (InteractiveShell.__init__): remove the
1237 deletion of exit/quit from __builtin__, which can break
1242 deletion of exit/quit from __builtin__, which can break
1238 third-party tools like the Zope debugging console. The
1243 third-party tools like the Zope debugging console. The
1239 %exit/%quit magics remain. In general, it's probably a good idea
1244 %exit/%quit magics remain. In general, it's probably a good idea
1240 not to delete anything from __builtin__, since we never know what
1245 not to delete anything from __builtin__, since we never know what
1241 that will break. In any case, python now (for 2.5) will support
1246 that will break. In any case, python now (for 2.5) will support
1242 'real' exit/quit, so this issue is moot. Closes #55.
1247 'real' exit/quit, so this issue is moot. Closes #55.
1243
1248
1244 * IPython/genutils.py (with_obj): rename the 'with' function to
1249 * IPython/genutils.py (with_obj): rename the 'with' function to
1245 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1250 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1246 becomes a language keyword. Closes #53.
1251 becomes a language keyword. Closes #53.
1247
1252
1248 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1253 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1249 __file__ attribute to this so it fools more things into thinking
1254 __file__ attribute to this so it fools more things into thinking
1250 it is a real module. Closes #59.
1255 it is a real module. Closes #59.
1251
1256
1252 * IPython/Magic.py (magic_edit): add -n option to open the editor
1257 * IPython/Magic.py (magic_edit): add -n option to open the editor
1253 at a specific line number. After a patch by Stefan van der Walt.
1258 at a specific line number. After a patch by Stefan van der Walt.
1254
1259
1255 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1260 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1256
1261
1257 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1262 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1258 reason the file could not be opened. After automatic crash
1263 reason the file could not be opened. After automatic crash
1259 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1264 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1260 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1265 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1261 (_should_recompile): Don't fire editor if using %bg, since there
1266 (_should_recompile): Don't fire editor if using %bg, since there
1262 is no file in the first place. From the same report as above.
1267 is no file in the first place. From the same report as above.
1263 (raw_input): protect against faulty third-party prefilters. After
1268 (raw_input): protect against faulty third-party prefilters. After
1264 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1269 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1265 while running under SAGE.
1270 while running under SAGE.
1266
1271
1267 2006-05-23 Ville Vainio <vivainio@gmail.com>
1272 2006-05-23 Ville Vainio <vivainio@gmail.com>
1268
1273
1269 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1274 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1270 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1275 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1271 now returns None (again), unless dummy is specifically allowed by
1276 now returns None (again), unless dummy is specifically allowed by
1272 ipapi.get(allow_dummy=True).
1277 ipapi.get(allow_dummy=True).
1273
1278
1274 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1279 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1275
1280
1276 * IPython: remove all 2.2-compatibility objects and hacks from
1281 * IPython: remove all 2.2-compatibility objects and hacks from
1277 everywhere, since we only support 2.3 at this point. Docs
1282 everywhere, since we only support 2.3 at this point. Docs
1278 updated.
1283 updated.
1279
1284
1280 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1285 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1281 Anything requiring extra validation can be turned into a Python
1286 Anything requiring extra validation can be turned into a Python
1282 property in the future. I used a property for the db one b/c
1287 property in the future. I used a property for the db one b/c
1283 there was a nasty circularity problem with the initialization
1288 there was a nasty circularity problem with the initialization
1284 order, which right now I don't have time to clean up.
1289 order, which right now I don't have time to clean up.
1285
1290
1286 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1291 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1287 another locking bug reported by Jorgen. I'm not 100% sure though,
1292 another locking bug reported by Jorgen. I'm not 100% sure though,
1288 so more testing is needed...
1293 so more testing is needed...
1289
1294
1290 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1295 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1291
1296
1292 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1297 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1293 local variables from any routine in user code (typically executed
1298 local variables from any routine in user code (typically executed
1294 with %run) directly into the interactive namespace. Very useful
1299 with %run) directly into the interactive namespace. Very useful
1295 when doing complex debugging.
1300 when doing complex debugging.
1296 (IPythonNotRunning): Changed the default None object to a dummy
1301 (IPythonNotRunning): Changed the default None object to a dummy
1297 whose attributes can be queried as well as called without
1302 whose attributes can be queried as well as called without
1298 exploding, to ease writing code which works transparently both in
1303 exploding, to ease writing code which works transparently both in
1299 and out of ipython and uses some of this API.
1304 and out of ipython and uses some of this API.
1300
1305
1301 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1306 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1302
1307
1303 * IPython/hooks.py (result_display): Fix the fact that our display
1308 * IPython/hooks.py (result_display): Fix the fact that our display
1304 hook was using str() instead of repr(), as the default python
1309 hook was using str() instead of repr(), as the default python
1305 console does. This had gone unnoticed b/c it only happened if
1310 console does. This had gone unnoticed b/c it only happened if
1306 %Pprint was off, but the inconsistency was there.
1311 %Pprint was off, but the inconsistency was there.
1307
1312
1308 2006-05-15 Ville Vainio <vivainio@gmail.com>
1313 2006-05-15 Ville Vainio <vivainio@gmail.com>
1309
1314
1310 * Oinspect.py: Only show docstring for nonexisting/binary files
1315 * Oinspect.py: Only show docstring for nonexisting/binary files
1311 when doing object??, closing ticket #62
1316 when doing object??, closing ticket #62
1312
1317
1313 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1318 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1314
1319
1315 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1320 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1316 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1321 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1317 was being released in a routine which hadn't checked if it had
1322 was being released in a routine which hadn't checked if it had
1318 been the one to acquire it.
1323 been the one to acquire it.
1319
1324
1320 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1325 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1321
1326
1322 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1327 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1323
1328
1324 2006-04-11 Ville Vainio <vivainio@gmail.com>
1329 2006-04-11 Ville Vainio <vivainio@gmail.com>
1325
1330
1326 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1331 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1327 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1332 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1328 prefilters, allowing stuff like magics and aliases in the file.
1333 prefilters, allowing stuff like magics and aliases in the file.
1329
1334
1330 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1335 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1331 added. Supported now are "%clear in" and "%clear out" (clear input and
1336 added. Supported now are "%clear in" and "%clear out" (clear input and
1332 output history, respectively). Also fixed CachedOutput.flush to
1337 output history, respectively). Also fixed CachedOutput.flush to
1333 properly flush the output cache.
1338 properly flush the output cache.
1334
1339
1335 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1340 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1336 half-success (and fail explicitly).
1341 half-success (and fail explicitly).
1337
1342
1338 2006-03-28 Ville Vainio <vivainio@gmail.com>
1343 2006-03-28 Ville Vainio <vivainio@gmail.com>
1339
1344
1340 * iplib.py: Fix quoting of aliases so that only argless ones
1345 * iplib.py: Fix quoting of aliases so that only argless ones
1341 are quoted
1346 are quoted
1342
1347
1343 2006-03-28 Ville Vainio <vivainio@gmail.com>
1348 2006-03-28 Ville Vainio <vivainio@gmail.com>
1344
1349
1345 * iplib.py: Quote aliases with spaces in the name.
1350 * iplib.py: Quote aliases with spaces in the name.
1346 "c:\program files\blah\bin" is now legal alias target.
1351 "c:\program files\blah\bin" is now legal alias target.
1347
1352
1348 * ext_rehashdir.py: Space no longer allowed as arg
1353 * ext_rehashdir.py: Space no longer allowed as arg
1349 separator, since space is legal in path names.
1354 separator, since space is legal in path names.
1350
1355
1351 2006-03-16 Ville Vainio <vivainio@gmail.com>
1356 2006-03-16 Ville Vainio <vivainio@gmail.com>
1352
1357
1353 * upgrade_dir.py: Take path.py from Extensions, correcting
1358 * upgrade_dir.py: Take path.py from Extensions, correcting
1354 %upgrade magic
1359 %upgrade magic
1355
1360
1356 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1361 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1357
1362
1358 * hooks.py: Only enclose editor binary in quotes if legal and
1363 * hooks.py: Only enclose editor binary in quotes if legal and
1359 necessary (space in the name, and is an existing file). Fixes a bug
1364 necessary (space in the name, and is an existing file). Fixes a bug
1360 reported by Zachary Pincus.
1365 reported by Zachary Pincus.
1361
1366
1362 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1367 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1363
1368
1364 * Manual: thanks to a tip on proper color handling for Emacs, by
1369 * Manual: thanks to a tip on proper color handling for Emacs, by
1365 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1370 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1366
1371
1367 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1372 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1368 by applying the provided patch. Thanks to Liu Jin
1373 by applying the provided patch. Thanks to Liu Jin
1369 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1374 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1370 XEmacs/Linux, I'm trusting the submitter that it actually helps
1375 XEmacs/Linux, I'm trusting the submitter that it actually helps
1371 under win32/GNU Emacs. Will revisit if any problems are reported.
1376 under win32/GNU Emacs. Will revisit if any problems are reported.
1372
1377
1373 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1378 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1374
1379
1375 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1380 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1376 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1381 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1377
1382
1378 2006-03-12 Ville Vainio <vivainio@gmail.com>
1383 2006-03-12 Ville Vainio <vivainio@gmail.com>
1379
1384
1380 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1385 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1381 Torsten Marek.
1386 Torsten Marek.
1382
1387
1383 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1388 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1384
1389
1385 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1390 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1386 line ranges works again.
1391 line ranges works again.
1387
1392
1388 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1393 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1389
1394
1390 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1395 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1391 and friends, after a discussion with Zach Pincus on ipython-user.
1396 and friends, after a discussion with Zach Pincus on ipython-user.
1392 I'm not 100% sure, but after thinking about it quite a bit, it may
1397 I'm not 100% sure, but after thinking about it quite a bit, it may
1393 be OK. Testing with the multithreaded shells didn't reveal any
1398 be OK. Testing with the multithreaded shells didn't reveal any
1394 problems, but let's keep an eye out.
1399 problems, but let's keep an eye out.
1395
1400
1396 In the process, I fixed a few things which were calling
1401 In the process, I fixed a few things which were calling
1397 self.InteractiveTB() directly (like safe_execfile), which is a
1402 self.InteractiveTB() directly (like safe_execfile), which is a
1398 mistake: ALL exception reporting should be done by calling
1403 mistake: ALL exception reporting should be done by calling
1399 self.showtraceback(), which handles state and tab-completion and
1404 self.showtraceback(), which handles state and tab-completion and
1400 more.
1405 more.
1401
1406
1402 2006-03-01 Ville Vainio <vivainio@gmail.com>
1407 2006-03-01 Ville Vainio <vivainio@gmail.com>
1403
1408
1404 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1409 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1405 To use, do "from ipipe import *".
1410 To use, do "from ipipe import *".
1406
1411
1407 2006-02-24 Ville Vainio <vivainio@gmail.com>
1412 2006-02-24 Ville Vainio <vivainio@gmail.com>
1408
1413
1409 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1414 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1410 "cleanly" and safely than the older upgrade mechanism.
1415 "cleanly" and safely than the older upgrade mechanism.
1411
1416
1412 2006-02-21 Ville Vainio <vivainio@gmail.com>
1417 2006-02-21 Ville Vainio <vivainio@gmail.com>
1413
1418
1414 * Magic.py: %save works again.
1419 * Magic.py: %save works again.
1415
1420
1416 2006-02-15 Ville Vainio <vivainio@gmail.com>
1421 2006-02-15 Ville Vainio <vivainio@gmail.com>
1417
1422
1418 * Magic.py: %Pprint works again
1423 * Magic.py: %Pprint works again
1419
1424
1420 * Extensions/ipy_sane_defaults.py: Provide everything provided
1425 * Extensions/ipy_sane_defaults.py: Provide everything provided
1421 in default ipythonrc, to make it possible to have a completely empty
1426 in default ipythonrc, to make it possible to have a completely empty
1422 ipythonrc (and thus completely rc-file free configuration)
1427 ipythonrc (and thus completely rc-file free configuration)
1423
1428
1424 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1429 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1425
1430
1426 * IPython/hooks.py (editor): quote the call to the editor command,
1431 * IPython/hooks.py (editor): quote the call to the editor command,
1427 to allow commands with spaces in them. Problem noted by watching
1432 to allow commands with spaces in them. Problem noted by watching
1428 Ian Oswald's video about textpad under win32 at
1433 Ian Oswald's video about textpad under win32 at
1429 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1434 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1430
1435
1431 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1436 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1432 describing magics (we haven't used @ for a loong time).
1437 describing magics (we haven't used @ for a loong time).
1433
1438
1434 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1439 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1435 contributed by marienz to close
1440 contributed by marienz to close
1436 http://www.scipy.net/roundup/ipython/issue53.
1441 http://www.scipy.net/roundup/ipython/issue53.
1437
1442
1438 2006-02-10 Ville Vainio <vivainio@gmail.com>
1443 2006-02-10 Ville Vainio <vivainio@gmail.com>
1439
1444
1440 * genutils.py: getoutput now works in win32 too
1445 * genutils.py: getoutput now works in win32 too
1441
1446
1442 * completer.py: alias and magic completion only invoked
1447 * completer.py: alias and magic completion only invoked
1443 at the first "item" in the line, to avoid "cd %store"
1448 at the first "item" in the line, to avoid "cd %store"
1444 nonsense.
1449 nonsense.
1445
1450
1446 2006-02-09 Ville Vainio <vivainio@gmail.com>
1451 2006-02-09 Ville Vainio <vivainio@gmail.com>
1447
1452
1448 * test/*: Added a unit testing framework (finally).
1453 * test/*: Added a unit testing framework (finally).
1449 '%run runtests.py' to run test_*.
1454 '%run runtests.py' to run test_*.
1450
1455
1451 * ipapi.py: Exposed runlines and set_custom_exc
1456 * ipapi.py: Exposed runlines and set_custom_exc
1452
1457
1453 2006-02-07 Ville Vainio <vivainio@gmail.com>
1458 2006-02-07 Ville Vainio <vivainio@gmail.com>
1454
1459
1455 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1460 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1456 instead use "f(1 2)" as before.
1461 instead use "f(1 2)" as before.
1457
1462
1458 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1463 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1459
1464
1460 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1465 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1461 facilities, for demos processed by the IPython input filter
1466 facilities, for demos processed by the IPython input filter
1462 (IPythonDemo), and for running a script one-line-at-a-time as a
1467 (IPythonDemo), and for running a script one-line-at-a-time as a
1463 demo, both for pure Python (LineDemo) and for IPython-processed
1468 demo, both for pure Python (LineDemo) and for IPython-processed
1464 input (IPythonLineDemo). After a request by Dave Kohel, from the
1469 input (IPythonLineDemo). After a request by Dave Kohel, from the
1465 SAGE team.
1470 SAGE team.
1466 (Demo.edit): added an edit() method to the demo objects, to edit
1471 (Demo.edit): added an edit() method to the demo objects, to edit
1467 the in-memory copy of the last executed block.
1472 the in-memory copy of the last executed block.
1468
1473
1469 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1474 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1470 processing to %edit, %macro and %save. These commands can now be
1475 processing to %edit, %macro and %save. These commands can now be
1471 invoked on the unprocessed input as it was typed by the user
1476 invoked on the unprocessed input as it was typed by the user
1472 (without any prefilters applied). After requests by the SAGE team
1477 (without any prefilters applied). After requests by the SAGE team
1473 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1478 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1474
1479
1475 2006-02-01 Ville Vainio <vivainio@gmail.com>
1480 2006-02-01 Ville Vainio <vivainio@gmail.com>
1476
1481
1477 * setup.py, eggsetup.py: easy_install ipython==dev works
1482 * setup.py, eggsetup.py: easy_install ipython==dev works
1478 correctly now (on Linux)
1483 correctly now (on Linux)
1479
1484
1480 * ipy_user_conf,ipmaker: user config changes, removed spurious
1485 * ipy_user_conf,ipmaker: user config changes, removed spurious
1481 warnings
1486 warnings
1482
1487
1483 * iplib: if rc.banner is string, use it as is.
1488 * iplib: if rc.banner is string, use it as is.
1484
1489
1485 * Magic: %pycat accepts a string argument and pages it's contents.
1490 * Magic: %pycat accepts a string argument and pages it's contents.
1486
1491
1487
1492
1488 2006-01-30 Ville Vainio <vivainio@gmail.com>
1493 2006-01-30 Ville Vainio <vivainio@gmail.com>
1489
1494
1490 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1495 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1491 Now %store and bookmarks work through PickleShare, meaning that
1496 Now %store and bookmarks work through PickleShare, meaning that
1492 concurrent access is possible and all ipython sessions see the
1497 concurrent access is possible and all ipython sessions see the
1493 same database situation all the time, instead of snapshot of
1498 same database situation all the time, instead of snapshot of
1494 the situation when the session was started. Hence, %bookmark
1499 the situation when the session was started. Hence, %bookmark
1495 results are immediately accessible from othes sessions. The database
1500 results are immediately accessible from othes sessions. The database
1496 is also available for use by user extensions. See:
1501 is also available for use by user extensions. See:
1497 http://www.python.org/pypi/pickleshare
1502 http://www.python.org/pypi/pickleshare
1498
1503
1499 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1504 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1500
1505
1501 * aliases can now be %store'd
1506 * aliases can now be %store'd
1502
1507
1503 * path.py moved to Extensions so that pickleshare does not need
1508 * path.py moved to Extensions so that pickleshare does not need
1504 IPython-specific import. Extensions added to pythonpath right
1509 IPython-specific import. Extensions added to pythonpath right
1505 at __init__.
1510 at __init__.
1506
1511
1507 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1512 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1508 called with _ip.system and the pre-transformed command string.
1513 called with _ip.system and the pre-transformed command string.
1509
1514
1510 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1515 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1511
1516
1512 * IPython/iplib.py (interact): Fix that we were not catching
1517 * IPython/iplib.py (interact): Fix that we were not catching
1513 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1518 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1514 logic here had to change, but it's fixed now.
1519 logic here had to change, but it's fixed now.
1515
1520
1516 2006-01-29 Ville Vainio <vivainio@gmail.com>
1521 2006-01-29 Ville Vainio <vivainio@gmail.com>
1517
1522
1518 * iplib.py: Try to import pyreadline on Windows.
1523 * iplib.py: Try to import pyreadline on Windows.
1519
1524
1520 2006-01-27 Ville Vainio <vivainio@gmail.com>
1525 2006-01-27 Ville Vainio <vivainio@gmail.com>
1521
1526
1522 * iplib.py: Expose ipapi as _ip in builtin namespace.
1527 * iplib.py: Expose ipapi as _ip in builtin namespace.
1523 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1528 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1524 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1529 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1525 syntax now produce _ip.* variant of the commands.
1530 syntax now produce _ip.* variant of the commands.
1526
1531
1527 * "_ip.options().autoedit_syntax = 2" automatically throws
1532 * "_ip.options().autoedit_syntax = 2" automatically throws
1528 user to editor for syntax error correction without prompting.
1533 user to editor for syntax error correction without prompting.
1529
1534
1530 2006-01-27 Ville Vainio <vivainio@gmail.com>
1535 2006-01-27 Ville Vainio <vivainio@gmail.com>
1531
1536
1532 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1537 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1533 'ipython' at argv[0]) executed through command line.
1538 'ipython' at argv[0]) executed through command line.
1534 NOTE: this DEPRECATES calling ipython with multiple scripts
1539 NOTE: this DEPRECATES calling ipython with multiple scripts
1535 ("ipython a.py b.py c.py")
1540 ("ipython a.py b.py c.py")
1536
1541
1537 * iplib.py, hooks.py: Added configurable input prefilter,
1542 * iplib.py, hooks.py: Added configurable input prefilter,
1538 named 'input_prefilter'. See ext_rescapture.py for example
1543 named 'input_prefilter'. See ext_rescapture.py for example
1539 usage.
1544 usage.
1540
1545
1541 * ext_rescapture.py, Magic.py: Better system command output capture
1546 * ext_rescapture.py, Magic.py: Better system command output capture
1542 through 'var = !ls' (deprecates user-visible %sc). Same notation
1547 through 'var = !ls' (deprecates user-visible %sc). Same notation
1543 applies for magics, 'var = %alias' assigns alias list to var.
1548 applies for magics, 'var = %alias' assigns alias list to var.
1544
1549
1545 * ipapi.py: added meta() for accessing extension-usable data store.
1550 * ipapi.py: added meta() for accessing extension-usable data store.
1546
1551
1547 * iplib.py: added InteractiveShell.getapi(). New magics should be
1552 * iplib.py: added InteractiveShell.getapi(). New magics should be
1548 written doing self.getapi() instead of using the shell directly.
1553 written doing self.getapi() instead of using the shell directly.
1549
1554
1550 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1555 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1551 %store foo >> ~/myfoo.txt to store variables to files (in clean
1556 %store foo >> ~/myfoo.txt to store variables to files (in clean
1552 textual form, not a restorable pickle).
1557 textual form, not a restorable pickle).
1553
1558
1554 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1559 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1555
1560
1556 * usage.py, Magic.py: added %quickref
1561 * usage.py, Magic.py: added %quickref
1557
1562
1558 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1563 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1559
1564
1560 * GetoptErrors when invoking magics etc. with wrong args
1565 * GetoptErrors when invoking magics etc. with wrong args
1561 are now more helpful:
1566 are now more helpful:
1562 GetoptError: option -l not recognized (allowed: "qb" )
1567 GetoptError: option -l not recognized (allowed: "qb" )
1563
1568
1564 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1569 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1565
1570
1566 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1571 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1567 computationally intensive blocks don't appear to stall the demo.
1572 computationally intensive blocks don't appear to stall the demo.
1568
1573
1569 2006-01-24 Ville Vainio <vivainio@gmail.com>
1574 2006-01-24 Ville Vainio <vivainio@gmail.com>
1570
1575
1571 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1576 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1572 value to manipulate resulting history entry.
1577 value to manipulate resulting history entry.
1573
1578
1574 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1579 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1575 to instance methods of IPApi class, to make extending an embedded
1580 to instance methods of IPApi class, to make extending an embedded
1576 IPython feasible. See ext_rehashdir.py for example usage.
1581 IPython feasible. See ext_rehashdir.py for example usage.
1577
1582
1578 * Merged 1071-1076 from branches/0.7.1
1583 * Merged 1071-1076 from branches/0.7.1
1579
1584
1580
1585
1581 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1586 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1582
1587
1583 * tools/release (daystamp): Fix build tools to use the new
1588 * tools/release (daystamp): Fix build tools to use the new
1584 eggsetup.py script to build lightweight eggs.
1589 eggsetup.py script to build lightweight eggs.
1585
1590
1586 * Applied changesets 1062 and 1064 before 0.7.1 release.
1591 * Applied changesets 1062 and 1064 before 0.7.1 release.
1587
1592
1588 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1593 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1589 see the raw input history (without conversions like %ls ->
1594 see the raw input history (without conversions like %ls ->
1590 ipmagic("ls")). After a request from W. Stein, SAGE
1595 ipmagic("ls")). After a request from W. Stein, SAGE
1591 (http://modular.ucsd.edu/sage) developer. This information is
1596 (http://modular.ucsd.edu/sage) developer. This information is
1592 stored in the input_hist_raw attribute of the IPython instance, so
1597 stored in the input_hist_raw attribute of the IPython instance, so
1593 developers can access it if needed (it's an InputList instance).
1598 developers can access it if needed (it's an InputList instance).
1594
1599
1595 * Versionstring = 0.7.2.svn
1600 * Versionstring = 0.7.2.svn
1596
1601
1597 * eggsetup.py: A separate script for constructing eggs, creates
1602 * eggsetup.py: A separate script for constructing eggs, creates
1598 proper launch scripts even on Windows (an .exe file in
1603 proper launch scripts even on Windows (an .exe file in
1599 \python24\scripts).
1604 \python24\scripts).
1600
1605
1601 * ipapi.py: launch_new_instance, launch entry point needed for the
1606 * ipapi.py: launch_new_instance, launch entry point needed for the
1602 egg.
1607 egg.
1603
1608
1604 2006-01-23 Ville Vainio <vivainio@gmail.com>
1609 2006-01-23 Ville Vainio <vivainio@gmail.com>
1605
1610
1606 * Added %cpaste magic for pasting python code
1611 * Added %cpaste magic for pasting python code
1607
1612
1608 2006-01-22 Ville Vainio <vivainio@gmail.com>
1613 2006-01-22 Ville Vainio <vivainio@gmail.com>
1609
1614
1610 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1615 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1611
1616
1612 * Versionstring = 0.7.2.svn
1617 * Versionstring = 0.7.2.svn
1613
1618
1614 * eggsetup.py: A separate script for constructing eggs, creates
1619 * eggsetup.py: A separate script for constructing eggs, creates
1615 proper launch scripts even on Windows (an .exe file in
1620 proper launch scripts even on Windows (an .exe file in
1616 \python24\scripts).
1621 \python24\scripts).
1617
1622
1618 * ipapi.py: launch_new_instance, launch entry point needed for the
1623 * ipapi.py: launch_new_instance, launch entry point needed for the
1619 egg.
1624 egg.
1620
1625
1621 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1626 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1622
1627
1623 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1628 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1624 %pfile foo would print the file for foo even if it was a binary.
1629 %pfile foo would print the file for foo even if it was a binary.
1625 Now, extensions '.so' and '.dll' are skipped.
1630 Now, extensions '.so' and '.dll' are skipped.
1626
1631
1627 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1632 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1628 bug, where macros would fail in all threaded modes. I'm not 100%
1633 bug, where macros would fail in all threaded modes. I'm not 100%
1629 sure, so I'm going to put out an rc instead of making a release
1634 sure, so I'm going to put out an rc instead of making a release
1630 today, and wait for feedback for at least a few days.
1635 today, and wait for feedback for at least a few days.
1631
1636
1632 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1637 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1633 it...) the handling of pasting external code with autoindent on.
1638 it...) the handling of pasting external code with autoindent on.
1634 To get out of a multiline input, the rule will appear for most
1639 To get out of a multiline input, the rule will appear for most
1635 users unchanged: two blank lines or change the indent level
1640 users unchanged: two blank lines or change the indent level
1636 proposed by IPython. But there is a twist now: you can
1641 proposed by IPython. But there is a twist now: you can
1637 add/subtract only *one or two spaces*. If you add/subtract three
1642 add/subtract only *one or two spaces*. If you add/subtract three
1638 or more (unless you completely delete the line), IPython will
1643 or more (unless you completely delete the line), IPython will
1639 accept that line, and you'll need to enter a second one of pure
1644 accept that line, and you'll need to enter a second one of pure
1640 whitespace. I know it sounds complicated, but I can't find a
1645 whitespace. I know it sounds complicated, but I can't find a
1641 different solution that covers all the cases, with the right
1646 different solution that covers all the cases, with the right
1642 heuristics. Hopefully in actual use, nobody will really notice
1647 heuristics. Hopefully in actual use, nobody will really notice
1643 all these strange rules and things will 'just work'.
1648 all these strange rules and things will 'just work'.
1644
1649
1645 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1650 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1646
1651
1647 * IPython/iplib.py (interact): catch exceptions which can be
1652 * IPython/iplib.py (interact): catch exceptions which can be
1648 triggered asynchronously by signal handlers. Thanks to an
1653 triggered asynchronously by signal handlers. Thanks to an
1649 automatic crash report, submitted by Colin Kingsley
1654 automatic crash report, submitted by Colin Kingsley
1650 <tercel-AT-gentoo.org>.
1655 <tercel-AT-gentoo.org>.
1651
1656
1652 2006-01-20 Ville Vainio <vivainio@gmail.com>
1657 2006-01-20 Ville Vainio <vivainio@gmail.com>
1653
1658
1654 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1659 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1655 (%rehashdir, very useful, try it out) of how to extend ipython
1660 (%rehashdir, very useful, try it out) of how to extend ipython
1656 with new magics. Also added Extensions dir to pythonpath to make
1661 with new magics. Also added Extensions dir to pythonpath to make
1657 importing extensions easy.
1662 importing extensions easy.
1658
1663
1659 * %store now complains when trying to store interactively declared
1664 * %store now complains when trying to store interactively declared
1660 classes / instances of those classes.
1665 classes / instances of those classes.
1661
1666
1662 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1667 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1663 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1668 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1664 if they exist, and ipy_user_conf.py with some defaults is created for
1669 if they exist, and ipy_user_conf.py with some defaults is created for
1665 the user.
1670 the user.
1666
1671
1667 * Startup rehashing done by the config file, not InterpreterExec.
1672 * Startup rehashing done by the config file, not InterpreterExec.
1668 This means system commands are available even without selecting the
1673 This means system commands are available even without selecting the
1669 pysh profile. It's the sensible default after all.
1674 pysh profile. It's the sensible default after all.
1670
1675
1671 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1676 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1672
1677
1673 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1678 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1674 multiline code with autoindent on working. But I am really not
1679 multiline code with autoindent on working. But I am really not
1675 sure, so this needs more testing. Will commit a debug-enabled
1680 sure, so this needs more testing. Will commit a debug-enabled
1676 version for now, while I test it some more, so that Ville and
1681 version for now, while I test it some more, so that Ville and
1677 others may also catch any problems. Also made
1682 others may also catch any problems. Also made
1678 self.indent_current_str() a method, to ensure that there's no
1683 self.indent_current_str() a method, to ensure that there's no
1679 chance of the indent space count and the corresponding string
1684 chance of the indent space count and the corresponding string
1680 falling out of sync. All code needing the string should just call
1685 falling out of sync. All code needing the string should just call
1681 the method.
1686 the method.
1682
1687
1683 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1688 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1684
1689
1685 * IPython/Magic.py (magic_edit): fix check for when users don't
1690 * IPython/Magic.py (magic_edit): fix check for when users don't
1686 save their output files, the try/except was in the wrong section.
1691 save their output files, the try/except was in the wrong section.
1687
1692
1688 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1693 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1689
1694
1690 * IPython/Magic.py (magic_run): fix __file__ global missing from
1695 * IPython/Magic.py (magic_run): fix __file__ global missing from
1691 script's namespace when executed via %run. After a report by
1696 script's namespace when executed via %run. After a report by
1692 Vivian.
1697 Vivian.
1693
1698
1694 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1699 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1695 when using python 2.4. The parent constructor changed in 2.4, and
1700 when using python 2.4. The parent constructor changed in 2.4, and
1696 we need to track it directly (we can't call it, as it messes up
1701 we need to track it directly (we can't call it, as it messes up
1697 readline and tab-completion inside our pdb would stop working).
1702 readline and tab-completion inside our pdb would stop working).
1698 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1703 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1699
1704
1700 2006-01-16 Ville Vainio <vivainio@gmail.com>
1705 2006-01-16 Ville Vainio <vivainio@gmail.com>
1701
1706
1702 * Ipython/magic.py: Reverted back to old %edit functionality
1707 * Ipython/magic.py: Reverted back to old %edit functionality
1703 that returns file contents on exit.
1708 that returns file contents on exit.
1704
1709
1705 * IPython/path.py: Added Jason Orendorff's "path" module to
1710 * IPython/path.py: Added Jason Orendorff's "path" module to
1706 IPython tree, http://www.jorendorff.com/articles/python/path/.
1711 IPython tree, http://www.jorendorff.com/articles/python/path/.
1707 You can get path objects conveniently through %sc, and !!, e.g.:
1712 You can get path objects conveniently through %sc, and !!, e.g.:
1708 sc files=ls
1713 sc files=ls
1709 for p in files.paths: # or files.p
1714 for p in files.paths: # or files.p
1710 print p,p.mtime
1715 print p,p.mtime
1711
1716
1712 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1717 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1713 now work again without considering the exclusion regexp -
1718 now work again without considering the exclusion regexp -
1714 hence, things like ',foo my/path' turn to 'foo("my/path")'
1719 hence, things like ',foo my/path' turn to 'foo("my/path")'
1715 instead of syntax error.
1720 instead of syntax error.
1716
1721
1717
1722
1718 2006-01-14 Ville Vainio <vivainio@gmail.com>
1723 2006-01-14 Ville Vainio <vivainio@gmail.com>
1719
1724
1720 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1725 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1721 ipapi decorators for python 2.4 users, options() provides access to rc
1726 ipapi decorators for python 2.4 users, options() provides access to rc
1722 data.
1727 data.
1723
1728
1724 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1729 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1725 as path separators (even on Linux ;-). Space character after
1730 as path separators (even on Linux ;-). Space character after
1726 backslash (as yielded by tab completer) is still space;
1731 backslash (as yielded by tab completer) is still space;
1727 "%cd long\ name" works as expected.
1732 "%cd long\ name" works as expected.
1728
1733
1729 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1734 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1730 as "chain of command", with priority. API stays the same,
1735 as "chain of command", with priority. API stays the same,
1731 TryNext exception raised by a hook function signals that
1736 TryNext exception raised by a hook function signals that
1732 current hook failed and next hook should try handling it, as
1737 current hook failed and next hook should try handling it, as
1733 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1738 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1734 requested configurable display hook, which is now implemented.
1739 requested configurable display hook, which is now implemented.
1735
1740
1736 2006-01-13 Ville Vainio <vivainio@gmail.com>
1741 2006-01-13 Ville Vainio <vivainio@gmail.com>
1737
1742
1738 * IPython/platutils*.py: platform specific utility functions,
1743 * IPython/platutils*.py: platform specific utility functions,
1739 so far only set_term_title is implemented (change terminal
1744 so far only set_term_title is implemented (change terminal
1740 label in windowing systems). %cd now changes the title to
1745 label in windowing systems). %cd now changes the title to
1741 current dir.
1746 current dir.
1742
1747
1743 * IPython/Release.py: Added myself to "authors" list,
1748 * IPython/Release.py: Added myself to "authors" list,
1744 had to create new files.
1749 had to create new files.
1745
1750
1746 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1751 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1747 shell escape; not a known bug but had potential to be one in the
1752 shell escape; not a known bug but had potential to be one in the
1748 future.
1753 future.
1749
1754
1750 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1755 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1751 extension API for IPython! See the module for usage example. Fix
1756 extension API for IPython! See the module for usage example. Fix
1752 OInspect for docstring-less magic functions.
1757 OInspect for docstring-less magic functions.
1753
1758
1754
1759
1755 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1760 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1756
1761
1757 * IPython/iplib.py (raw_input): temporarily deactivate all
1762 * IPython/iplib.py (raw_input): temporarily deactivate all
1758 attempts at allowing pasting of code with autoindent on. It
1763 attempts at allowing pasting of code with autoindent on. It
1759 introduced bugs (reported by Prabhu) and I can't seem to find a
1764 introduced bugs (reported by Prabhu) and I can't seem to find a
1760 robust combination which works in all cases. Will have to revisit
1765 robust combination which works in all cases. Will have to revisit
1761 later.
1766 later.
1762
1767
1763 * IPython/genutils.py: remove isspace() function. We've dropped
1768 * IPython/genutils.py: remove isspace() function. We've dropped
1764 2.2 compatibility, so it's OK to use the string method.
1769 2.2 compatibility, so it's OK to use the string method.
1765
1770
1766 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1771 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1767
1772
1768 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1773 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1769 matching what NOT to autocall on, to include all python binary
1774 matching what NOT to autocall on, to include all python binary
1770 operators (including things like 'and', 'or', 'is' and 'in').
1775 operators (including things like 'and', 'or', 'is' and 'in').
1771 Prompted by a bug report on 'foo & bar', but I realized we had
1776 Prompted by a bug report on 'foo & bar', but I realized we had
1772 many more potential bug cases with other operators. The regexp is
1777 many more potential bug cases with other operators. The regexp is
1773 self.re_exclude_auto, it's fairly commented.
1778 self.re_exclude_auto, it's fairly commented.
1774
1779
1775 2006-01-12 Ville Vainio <vivainio@gmail.com>
1780 2006-01-12 Ville Vainio <vivainio@gmail.com>
1776
1781
1777 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1782 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1778 Prettified and hardened string/backslash quoting with ipsystem(),
1783 Prettified and hardened string/backslash quoting with ipsystem(),
1779 ipalias() and ipmagic(). Now even \ characters are passed to
1784 ipalias() and ipmagic(). Now even \ characters are passed to
1780 %magics, !shell escapes and aliases exactly as they are in the
1785 %magics, !shell escapes and aliases exactly as they are in the
1781 ipython command line. Should improve backslash experience,
1786 ipython command line. Should improve backslash experience,
1782 particularly in Windows (path delimiter for some commands that
1787 particularly in Windows (path delimiter for some commands that
1783 won't understand '/'), but Unix benefits as well (regexps). %cd
1788 won't understand '/'), but Unix benefits as well (regexps). %cd
1784 magic still doesn't support backslash path delimiters, though. Also
1789 magic still doesn't support backslash path delimiters, though. Also
1785 deleted all pretense of supporting multiline command strings in
1790 deleted all pretense of supporting multiline command strings in
1786 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1791 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1787
1792
1788 * doc/build_doc_instructions.txt added. Documentation on how to
1793 * doc/build_doc_instructions.txt added. Documentation on how to
1789 use doc/update_manual.py, added yesterday. Both files contributed
1794 use doc/update_manual.py, added yesterday. Both files contributed
1790 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1795 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1791 doc/*.sh for deprecation at a later date.
1796 doc/*.sh for deprecation at a later date.
1792
1797
1793 * /ipython.py Added ipython.py to root directory for
1798 * /ipython.py Added ipython.py to root directory for
1794 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1799 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1795 ipython.py) and development convenience (no need to keep doing
1800 ipython.py) and development convenience (no need to keep doing
1796 "setup.py install" between changes).
1801 "setup.py install" between changes).
1797
1802
1798 * Made ! and !! shell escapes work (again) in multiline expressions:
1803 * Made ! and !! shell escapes work (again) in multiline expressions:
1799 if 1:
1804 if 1:
1800 !ls
1805 !ls
1801 !!ls
1806 !!ls
1802
1807
1803 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1808 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1804
1809
1805 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1810 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1806 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1811 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1807 module in case-insensitive installation. Was causing crashes
1812 module in case-insensitive installation. Was causing crashes
1808 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1813 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1809
1814
1810 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1815 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1811 <marienz-AT-gentoo.org>, closes
1816 <marienz-AT-gentoo.org>, closes
1812 http://www.scipy.net/roundup/ipython/issue51.
1817 http://www.scipy.net/roundup/ipython/issue51.
1813
1818
1814 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1819 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1815
1820
1816 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1821 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1817 problem of excessive CPU usage under *nix and keyboard lag under
1822 problem of excessive CPU usage under *nix and keyboard lag under
1818 win32.
1823 win32.
1819
1824
1820 2006-01-10 *** Released version 0.7.0
1825 2006-01-10 *** Released version 0.7.0
1821
1826
1822 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1827 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1823
1828
1824 * IPython/Release.py (revision): tag version number to 0.7.0,
1829 * IPython/Release.py (revision): tag version number to 0.7.0,
1825 ready for release.
1830 ready for release.
1826
1831
1827 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1832 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1828 it informs the user of the name of the temp. file used. This can
1833 it informs the user of the name of the temp. file used. This can
1829 help if you decide later to reuse that same file, so you know
1834 help if you decide later to reuse that same file, so you know
1830 where to copy the info from.
1835 where to copy the info from.
1831
1836
1832 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1837 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1833
1838
1834 * setup_bdist_egg.py: little script to build an egg. Added
1839 * setup_bdist_egg.py: little script to build an egg. Added
1835 support in the release tools as well.
1840 support in the release tools as well.
1836
1841
1837 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1842 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1838
1843
1839 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1844 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1840 version selection (new -wxversion command line and ipythonrc
1845 version selection (new -wxversion command line and ipythonrc
1841 parameter). Patch contributed by Arnd Baecker
1846 parameter). Patch contributed by Arnd Baecker
1842 <arnd.baecker-AT-web.de>.
1847 <arnd.baecker-AT-web.de>.
1843
1848
1844 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1849 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1845 embedded instances, for variables defined at the interactive
1850 embedded instances, for variables defined at the interactive
1846 prompt of the embedded ipython. Reported by Arnd.
1851 prompt of the embedded ipython. Reported by Arnd.
1847
1852
1848 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1853 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1849 it can be used as a (stateful) toggle, or with a direct parameter.
1854 it can be used as a (stateful) toggle, or with a direct parameter.
1850
1855
1851 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1856 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1852 could be triggered in certain cases and cause the traceback
1857 could be triggered in certain cases and cause the traceback
1853 printer not to work.
1858 printer not to work.
1854
1859
1855 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1860 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1856
1861
1857 * IPython/iplib.py (_should_recompile): Small fix, closes
1862 * IPython/iplib.py (_should_recompile): Small fix, closes
1858 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1863 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1859
1864
1860 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1865 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1861
1866
1862 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1867 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1863 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1868 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1864 Moad for help with tracking it down.
1869 Moad for help with tracking it down.
1865
1870
1866 * IPython/iplib.py (handle_auto): fix autocall handling for
1871 * IPython/iplib.py (handle_auto): fix autocall handling for
1867 objects which support BOTH __getitem__ and __call__ (so that f [x]
1872 objects which support BOTH __getitem__ and __call__ (so that f [x]
1868 is left alone, instead of becoming f([x]) automatically).
1873 is left alone, instead of becoming f([x]) automatically).
1869
1874
1870 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1875 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1871 Ville's patch.
1876 Ville's patch.
1872
1877
1873 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1878 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1874
1879
1875 * IPython/iplib.py (handle_auto): changed autocall semantics to
1880 * IPython/iplib.py (handle_auto): changed autocall semantics to
1876 include 'smart' mode, where the autocall transformation is NOT
1881 include 'smart' mode, where the autocall transformation is NOT
1877 applied if there are no arguments on the line. This allows you to
1882 applied if there are no arguments on the line. This allows you to
1878 just type 'foo' if foo is a callable to see its internal form,
1883 just type 'foo' if foo is a callable to see its internal form,
1879 instead of having it called with no arguments (typically a
1884 instead of having it called with no arguments (typically a
1880 mistake). The old 'full' autocall still exists: for that, you
1885 mistake). The old 'full' autocall still exists: for that, you
1881 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1886 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1882
1887
1883 * IPython/completer.py (Completer.attr_matches): add
1888 * IPython/completer.py (Completer.attr_matches): add
1884 tab-completion support for Enthoughts' traits. After a report by
1889 tab-completion support for Enthoughts' traits. After a report by
1885 Arnd and a patch by Prabhu.
1890 Arnd and a patch by Prabhu.
1886
1891
1887 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1892 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1888
1893
1889 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1894 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1890 Schmolck's patch to fix inspect.getinnerframes().
1895 Schmolck's patch to fix inspect.getinnerframes().
1891
1896
1892 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1897 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1893 for embedded instances, regarding handling of namespaces and items
1898 for embedded instances, regarding handling of namespaces and items
1894 added to the __builtin__ one. Multiple embedded instances and
1899 added to the __builtin__ one. Multiple embedded instances and
1895 recursive embeddings should work better now (though I'm not sure
1900 recursive embeddings should work better now (though I'm not sure
1896 I've got all the corner cases fixed, that code is a bit of a brain
1901 I've got all the corner cases fixed, that code is a bit of a brain
1897 twister).
1902 twister).
1898
1903
1899 * IPython/Magic.py (magic_edit): added support to edit in-memory
1904 * IPython/Magic.py (magic_edit): added support to edit in-memory
1900 macros (automatically creates the necessary temp files). %edit
1905 macros (automatically creates the necessary temp files). %edit
1901 also doesn't return the file contents anymore, it's just noise.
1906 also doesn't return the file contents anymore, it's just noise.
1902
1907
1903 * IPython/completer.py (Completer.attr_matches): revert change to
1908 * IPython/completer.py (Completer.attr_matches): revert change to
1904 complete only on attributes listed in __all__. I realized it
1909 complete only on attributes listed in __all__. I realized it
1905 cripples the tab-completion system as a tool for exploring the
1910 cripples the tab-completion system as a tool for exploring the
1906 internals of unknown libraries (it renders any non-__all__
1911 internals of unknown libraries (it renders any non-__all__
1907 attribute off-limits). I got bit by this when trying to see
1912 attribute off-limits). I got bit by this when trying to see
1908 something inside the dis module.
1913 something inside the dis module.
1909
1914
1910 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1915 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1911
1916
1912 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1917 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1913 namespace for users and extension writers to hold data in. This
1918 namespace for users and extension writers to hold data in. This
1914 follows the discussion in
1919 follows the discussion in
1915 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1920 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1916
1921
1917 * IPython/completer.py (IPCompleter.complete): small patch to help
1922 * IPython/completer.py (IPCompleter.complete): small patch to help
1918 tab-completion under Emacs, after a suggestion by John Barnard
1923 tab-completion under Emacs, after a suggestion by John Barnard
1919 <barnarj-AT-ccf.org>.
1924 <barnarj-AT-ccf.org>.
1920
1925
1921 * IPython/Magic.py (Magic.extract_input_slices): added support for
1926 * IPython/Magic.py (Magic.extract_input_slices): added support for
1922 the slice notation in magics to use N-M to represent numbers N...M
1927 the slice notation in magics to use N-M to represent numbers N...M
1923 (closed endpoints). This is used by %macro and %save.
1928 (closed endpoints). This is used by %macro and %save.
1924
1929
1925 * IPython/completer.py (Completer.attr_matches): for modules which
1930 * IPython/completer.py (Completer.attr_matches): for modules which
1926 define __all__, complete only on those. After a patch by Jeffrey
1931 define __all__, complete only on those. After a patch by Jeffrey
1927 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1932 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1928 speed up this routine.
1933 speed up this routine.
1929
1934
1930 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1935 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1931 don't know if this is the end of it, but the behavior now is
1936 don't know if this is the end of it, but the behavior now is
1932 certainly much more correct. Note that coupled with macros,
1937 certainly much more correct. Note that coupled with macros,
1933 slightly surprising (at first) behavior may occur: a macro will in
1938 slightly surprising (at first) behavior may occur: a macro will in
1934 general expand to multiple lines of input, so upon exiting, the
1939 general expand to multiple lines of input, so upon exiting, the
1935 in/out counters will both be bumped by the corresponding amount
1940 in/out counters will both be bumped by the corresponding amount
1936 (as if the macro's contents had been typed interactively). Typing
1941 (as if the macro's contents had been typed interactively). Typing
1937 %hist will reveal the intermediate (silently processed) lines.
1942 %hist will reveal the intermediate (silently processed) lines.
1938
1943
1939 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1944 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1940 pickle to fail (%run was overwriting __main__ and not restoring
1945 pickle to fail (%run was overwriting __main__ and not restoring
1941 it, but pickle relies on __main__ to operate).
1946 it, but pickle relies on __main__ to operate).
1942
1947
1943 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1948 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1944 using properties, but forgot to make the main InteractiveShell
1949 using properties, but forgot to make the main InteractiveShell
1945 class a new-style class. Properties fail silently, and
1950 class a new-style class. Properties fail silently, and
1946 mysteriously, with old-style class (getters work, but
1951 mysteriously, with old-style class (getters work, but
1947 setters don't do anything).
1952 setters don't do anything).
1948
1953
1949 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1954 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1950
1955
1951 * IPython/Magic.py (magic_history): fix history reporting bug (I
1956 * IPython/Magic.py (magic_history): fix history reporting bug (I
1952 know some nasties are still there, I just can't seem to find a
1957 know some nasties are still there, I just can't seem to find a
1953 reproducible test case to track them down; the input history is
1958 reproducible test case to track them down; the input history is
1954 falling out of sync...)
1959 falling out of sync...)
1955
1960
1956 * IPython/iplib.py (handle_shell_escape): fix bug where both
1961 * IPython/iplib.py (handle_shell_escape): fix bug where both
1957 aliases and system accesses where broken for indented code (such
1962 aliases and system accesses where broken for indented code (such
1958 as loops).
1963 as loops).
1959
1964
1960 * IPython/genutils.py (shell): fix small but critical bug for
1965 * IPython/genutils.py (shell): fix small but critical bug for
1961 win32 system access.
1966 win32 system access.
1962
1967
1963 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1968 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1964
1969
1965 * IPython/iplib.py (showtraceback): remove use of the
1970 * IPython/iplib.py (showtraceback): remove use of the
1966 sys.last_{type/value/traceback} structures, which are non
1971 sys.last_{type/value/traceback} structures, which are non
1967 thread-safe.
1972 thread-safe.
1968 (_prefilter): change control flow to ensure that we NEVER
1973 (_prefilter): change control flow to ensure that we NEVER
1969 introspect objects when autocall is off. This will guarantee that
1974 introspect objects when autocall is off. This will guarantee that
1970 having an input line of the form 'x.y', where access to attribute
1975 having an input line of the form 'x.y', where access to attribute
1971 'y' has side effects, doesn't trigger the side effect TWICE. It
1976 'y' has side effects, doesn't trigger the side effect TWICE. It
1972 is important to note that, with autocall on, these side effects
1977 is important to note that, with autocall on, these side effects
1973 can still happen.
1978 can still happen.
1974 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1979 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1975 trio. IPython offers these three kinds of special calls which are
1980 trio. IPython offers these three kinds of special calls which are
1976 not python code, and it's a good thing to have their call method
1981 not python code, and it's a good thing to have their call method
1977 be accessible as pure python functions (not just special syntax at
1982 be accessible as pure python functions (not just special syntax at
1978 the command line). It gives us a better internal implementation
1983 the command line). It gives us a better internal implementation
1979 structure, as well as exposing these for user scripting more
1984 structure, as well as exposing these for user scripting more
1980 cleanly.
1985 cleanly.
1981
1986
1982 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1987 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1983 file. Now that they'll be more likely to be used with the
1988 file. Now that they'll be more likely to be used with the
1984 persistance system (%store), I want to make sure their module path
1989 persistance system (%store), I want to make sure their module path
1985 doesn't change in the future, so that we don't break things for
1990 doesn't change in the future, so that we don't break things for
1986 users' persisted data.
1991 users' persisted data.
1987
1992
1988 * IPython/iplib.py (autoindent_update): move indentation
1993 * IPython/iplib.py (autoindent_update): move indentation
1989 management into the _text_ processing loop, not the keyboard
1994 management into the _text_ processing loop, not the keyboard
1990 interactive one. This is necessary to correctly process non-typed
1995 interactive one. This is necessary to correctly process non-typed
1991 multiline input (such as macros).
1996 multiline input (such as macros).
1992
1997
1993 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1998 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1994 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1999 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1995 which was producing problems in the resulting manual.
2000 which was producing problems in the resulting manual.
1996 (magic_whos): improve reporting of instances (show their class,
2001 (magic_whos): improve reporting of instances (show their class,
1997 instead of simply printing 'instance' which isn't terribly
2002 instead of simply printing 'instance' which isn't terribly
1998 informative).
2003 informative).
1999
2004
2000 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2005 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2001 (minor mods) to support network shares under win32.
2006 (minor mods) to support network shares under win32.
2002
2007
2003 * IPython/winconsole.py (get_console_size): add new winconsole
2008 * IPython/winconsole.py (get_console_size): add new winconsole
2004 module and fixes to page_dumb() to improve its behavior under
2009 module and fixes to page_dumb() to improve its behavior under
2005 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2010 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2006
2011
2007 * IPython/Magic.py (Macro): simplified Macro class to just
2012 * IPython/Magic.py (Macro): simplified Macro class to just
2008 subclass list. We've had only 2.2 compatibility for a very long
2013 subclass list. We've had only 2.2 compatibility for a very long
2009 time, yet I was still avoiding subclassing the builtin types. No
2014 time, yet I was still avoiding subclassing the builtin types. No
2010 more (I'm also starting to use properties, though I won't shift to
2015 more (I'm also starting to use properties, though I won't shift to
2011 2.3-specific features quite yet).
2016 2.3-specific features quite yet).
2012 (magic_store): added Ville's patch for lightweight variable
2017 (magic_store): added Ville's patch for lightweight variable
2013 persistence, after a request on the user list by Matt Wilkie
2018 persistence, after a request on the user list by Matt Wilkie
2014 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2019 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2015 details.
2020 details.
2016
2021
2017 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2022 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2018 changed the default logfile name from 'ipython.log' to
2023 changed the default logfile name from 'ipython.log' to
2019 'ipython_log.py'. These logs are real python files, and now that
2024 'ipython_log.py'. These logs are real python files, and now that
2020 we have much better multiline support, people are more likely to
2025 we have much better multiline support, people are more likely to
2021 want to use them as such. Might as well name them correctly.
2026 want to use them as such. Might as well name them correctly.
2022
2027
2023 * IPython/Magic.py: substantial cleanup. While we can't stop
2028 * IPython/Magic.py: substantial cleanup. While we can't stop
2024 using magics as mixins, due to the existing customizations 'out
2029 using magics as mixins, due to the existing customizations 'out
2025 there' which rely on the mixin naming conventions, at least I
2030 there' which rely on the mixin naming conventions, at least I
2026 cleaned out all cross-class name usage. So once we are OK with
2031 cleaned out all cross-class name usage. So once we are OK with
2027 breaking compatibility, the two systems can be separated.
2032 breaking compatibility, the two systems can be separated.
2028
2033
2029 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2034 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2030 anymore, and the class is a fair bit less hideous as well. New
2035 anymore, and the class is a fair bit less hideous as well. New
2031 features were also introduced: timestamping of input, and logging
2036 features were also introduced: timestamping of input, and logging
2032 of output results. These are user-visible with the -t and -o
2037 of output results. These are user-visible with the -t and -o
2033 options to %logstart. Closes
2038 options to %logstart. Closes
2034 http://www.scipy.net/roundup/ipython/issue11 and a request by
2039 http://www.scipy.net/roundup/ipython/issue11 and a request by
2035 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2040 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2036
2041
2037 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2042 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2038
2043
2039 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2044 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2040 better handle backslashes in paths. See the thread 'More Windows
2045 better handle backslashes in paths. See the thread 'More Windows
2041 questions part 2 - \/ characters revisited' on the iypthon user
2046 questions part 2 - \/ characters revisited' on the iypthon user
2042 list:
2047 list:
2043 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2048 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2044
2049
2045 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2050 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2046
2051
2047 (InteractiveShell.__init__): change threaded shells to not use the
2052 (InteractiveShell.__init__): change threaded shells to not use the
2048 ipython crash handler. This was causing more problems than not,
2053 ipython crash handler. This was causing more problems than not,
2049 as exceptions in the main thread (GUI code, typically) would
2054 as exceptions in the main thread (GUI code, typically) would
2050 always show up as a 'crash', when they really weren't.
2055 always show up as a 'crash', when they really weren't.
2051
2056
2052 The colors and exception mode commands (%colors/%xmode) have been
2057 The colors and exception mode commands (%colors/%xmode) have been
2053 synchronized to also take this into account, so users can get
2058 synchronized to also take this into account, so users can get
2054 verbose exceptions for their threaded code as well. I also added
2059 verbose exceptions for their threaded code as well. I also added
2055 support for activating pdb inside this exception handler as well,
2060 support for activating pdb inside this exception handler as well,
2056 so now GUI authors can use IPython's enhanced pdb at runtime.
2061 so now GUI authors can use IPython's enhanced pdb at runtime.
2057
2062
2058 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2063 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2059 true by default, and add it to the shipped ipythonrc file. Since
2064 true by default, and add it to the shipped ipythonrc file. Since
2060 this asks the user before proceeding, I think it's OK to make it
2065 this asks the user before proceeding, I think it's OK to make it
2061 true by default.
2066 true by default.
2062
2067
2063 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2068 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2064 of the previous special-casing of input in the eval loop. I think
2069 of the previous special-casing of input in the eval loop. I think
2065 this is cleaner, as they really are commands and shouldn't have
2070 this is cleaner, as they really are commands and shouldn't have
2066 a special role in the middle of the core code.
2071 a special role in the middle of the core code.
2067
2072
2068 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2073 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2069
2074
2070 * IPython/iplib.py (edit_syntax_error): added support for
2075 * IPython/iplib.py (edit_syntax_error): added support for
2071 automatically reopening the editor if the file had a syntax error
2076 automatically reopening the editor if the file had a syntax error
2072 in it. Thanks to scottt who provided the patch at:
2077 in it. Thanks to scottt who provided the patch at:
2073 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2078 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2074 version committed).
2079 version committed).
2075
2080
2076 * IPython/iplib.py (handle_normal): add suport for multi-line
2081 * IPython/iplib.py (handle_normal): add suport for multi-line
2077 input with emtpy lines. This fixes
2082 input with emtpy lines. This fixes
2078 http://www.scipy.net/roundup/ipython/issue43 and a similar
2083 http://www.scipy.net/roundup/ipython/issue43 and a similar
2079 discussion on the user list.
2084 discussion on the user list.
2080
2085
2081 WARNING: a behavior change is necessarily introduced to support
2086 WARNING: a behavior change is necessarily introduced to support
2082 blank lines: now a single blank line with whitespace does NOT
2087 blank lines: now a single blank line with whitespace does NOT
2083 break the input loop, which means that when autoindent is on, by
2088 break the input loop, which means that when autoindent is on, by
2084 default hitting return on the next (indented) line does NOT exit.
2089 default hitting return on the next (indented) line does NOT exit.
2085
2090
2086 Instead, to exit a multiline input you can either have:
2091 Instead, to exit a multiline input you can either have:
2087
2092
2088 - TWO whitespace lines (just hit return again), or
2093 - TWO whitespace lines (just hit return again), or
2089 - a single whitespace line of a different length than provided
2094 - a single whitespace line of a different length than provided
2090 by the autoindent (add or remove a space).
2095 by the autoindent (add or remove a space).
2091
2096
2092 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2097 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2093 module to better organize all readline-related functionality.
2098 module to better organize all readline-related functionality.
2094 I've deleted FlexCompleter and put all completion clases here.
2099 I've deleted FlexCompleter and put all completion clases here.
2095
2100
2096 * IPython/iplib.py (raw_input): improve indentation management.
2101 * IPython/iplib.py (raw_input): improve indentation management.
2097 It is now possible to paste indented code with autoindent on, and
2102 It is now possible to paste indented code with autoindent on, and
2098 the code is interpreted correctly (though it still looks bad on
2103 the code is interpreted correctly (though it still looks bad on
2099 screen, due to the line-oriented nature of ipython).
2104 screen, due to the line-oriented nature of ipython).
2100 (MagicCompleter.complete): change behavior so that a TAB key on an
2105 (MagicCompleter.complete): change behavior so that a TAB key on an
2101 otherwise empty line actually inserts a tab, instead of completing
2106 otherwise empty line actually inserts a tab, instead of completing
2102 on the entire global namespace. This makes it easier to use the
2107 on the entire global namespace. This makes it easier to use the
2103 TAB key for indentation. After a request by Hans Meine
2108 TAB key for indentation. After a request by Hans Meine
2104 <hans_meine-AT-gmx.net>
2109 <hans_meine-AT-gmx.net>
2105 (_prefilter): add support so that typing plain 'exit' or 'quit'
2110 (_prefilter): add support so that typing plain 'exit' or 'quit'
2106 does a sensible thing. Originally I tried to deviate as little as
2111 does a sensible thing. Originally I tried to deviate as little as
2107 possible from the default python behavior, but even that one may
2112 possible from the default python behavior, but even that one may
2108 change in this direction (thread on python-dev to that effect).
2113 change in this direction (thread on python-dev to that effect).
2109 Regardless, ipython should do the right thing even if CPython's
2114 Regardless, ipython should do the right thing even if CPython's
2110 '>>>' prompt doesn't.
2115 '>>>' prompt doesn't.
2111 (InteractiveShell): removed subclassing code.InteractiveConsole
2116 (InteractiveShell): removed subclassing code.InteractiveConsole
2112 class. By now we'd overridden just about all of its methods: I've
2117 class. By now we'd overridden just about all of its methods: I've
2113 copied the remaining two over, and now ipython is a standalone
2118 copied the remaining two over, and now ipython is a standalone
2114 class. This will provide a clearer picture for the chainsaw
2119 class. This will provide a clearer picture for the chainsaw
2115 branch refactoring.
2120 branch refactoring.
2116
2121
2117 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2122 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2118
2123
2119 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2124 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2120 failures for objects which break when dir() is called on them.
2125 failures for objects which break when dir() is called on them.
2121
2126
2122 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2127 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2123 distinct local and global namespaces in the completer API. This
2128 distinct local and global namespaces in the completer API. This
2124 change allows us to properly handle completion with distinct
2129 change allows us to properly handle completion with distinct
2125 scopes, including in embedded instances (this had never really
2130 scopes, including in embedded instances (this had never really
2126 worked correctly).
2131 worked correctly).
2127
2132
2128 Note: this introduces a change in the constructor for
2133 Note: this introduces a change in the constructor for
2129 MagicCompleter, as a new global_namespace parameter is now the
2134 MagicCompleter, as a new global_namespace parameter is now the
2130 second argument (the others were bumped one position).
2135 second argument (the others were bumped one position).
2131
2136
2132 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2137 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2133
2138
2134 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2139 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2135 embedded instances (which can be done now thanks to Vivian's
2140 embedded instances (which can be done now thanks to Vivian's
2136 frame-handling fixes for pdb).
2141 frame-handling fixes for pdb).
2137 (InteractiveShell.__init__): Fix namespace handling problem in
2142 (InteractiveShell.__init__): Fix namespace handling problem in
2138 embedded instances. We were overwriting __main__ unconditionally,
2143 embedded instances. We were overwriting __main__ unconditionally,
2139 and this should only be done for 'full' (non-embedded) IPython;
2144 and this should only be done for 'full' (non-embedded) IPython;
2140 embedded instances must respect the caller's __main__. Thanks to
2145 embedded instances must respect the caller's __main__. Thanks to
2141 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2146 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2142
2147
2143 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2148 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2144
2149
2145 * setup.py: added download_url to setup(). This registers the
2150 * setup.py: added download_url to setup(). This registers the
2146 download address at PyPI, which is not only useful to humans
2151 download address at PyPI, which is not only useful to humans
2147 browsing the site, but is also picked up by setuptools (the Eggs
2152 browsing the site, but is also picked up by setuptools (the Eggs
2148 machinery). Thanks to Ville and R. Kern for the info/discussion
2153 machinery). Thanks to Ville and R. Kern for the info/discussion
2149 on this.
2154 on this.
2150
2155
2151 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2156 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2152
2157
2153 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2158 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2154 This brings a lot of nice functionality to the pdb mode, which now
2159 This brings a lot of nice functionality to the pdb mode, which now
2155 has tab-completion, syntax highlighting, and better stack handling
2160 has tab-completion, syntax highlighting, and better stack handling
2156 than before. Many thanks to Vivian De Smedt
2161 than before. Many thanks to Vivian De Smedt
2157 <vivian-AT-vdesmedt.com> for the original patches.
2162 <vivian-AT-vdesmedt.com> for the original patches.
2158
2163
2159 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2164 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2160
2165
2161 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2166 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2162 sequence to consistently accept the banner argument. The
2167 sequence to consistently accept the banner argument. The
2163 inconsistency was tripping SAGE, thanks to Gary Zablackis
2168 inconsistency was tripping SAGE, thanks to Gary Zablackis
2164 <gzabl-AT-yahoo.com> for the report.
2169 <gzabl-AT-yahoo.com> for the report.
2165
2170
2166 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2171 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2167
2172
2168 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2173 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2169 Fix bug where a naked 'alias' call in the ipythonrc file would
2174 Fix bug where a naked 'alias' call in the ipythonrc file would
2170 cause a crash. Bug reported by Jorgen Stenarson.
2175 cause a crash. Bug reported by Jorgen Stenarson.
2171
2176
2172 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2177 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2173
2178
2174 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2179 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2175 startup time.
2180 startup time.
2176
2181
2177 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2182 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2178 instances had introduced a bug with globals in normal code. Now
2183 instances had introduced a bug with globals in normal code. Now
2179 it's working in all cases.
2184 it's working in all cases.
2180
2185
2181 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2186 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2182 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2187 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2183 has been introduced to set the default case sensitivity of the
2188 has been introduced to set the default case sensitivity of the
2184 searches. Users can still select either mode at runtime on a
2189 searches. Users can still select either mode at runtime on a
2185 per-search basis.
2190 per-search basis.
2186
2191
2187 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2192 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2188
2193
2189 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2194 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2190 attributes in wildcard searches for subclasses. Modified version
2195 attributes in wildcard searches for subclasses. Modified version
2191 of a patch by Jorgen.
2196 of a patch by Jorgen.
2192
2197
2193 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2198 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2194
2199
2195 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2200 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2196 embedded instances. I added a user_global_ns attribute to the
2201 embedded instances. I added a user_global_ns attribute to the
2197 InteractiveShell class to handle this.
2202 InteractiveShell class to handle this.
2198
2203
2199 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2204 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2200
2205
2201 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2206 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2202 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2207 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2203 (reported under win32, but may happen also in other platforms).
2208 (reported under win32, but may happen also in other platforms).
2204 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2209 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2205
2210
2206 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2211 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2207
2212
2208 * IPython/Magic.py (magic_psearch): new support for wildcard
2213 * IPython/Magic.py (magic_psearch): new support for wildcard
2209 patterns. Now, typing ?a*b will list all names which begin with a
2214 patterns. Now, typing ?a*b will list all names which begin with a
2210 and end in b, for example. The %psearch magic has full
2215 and end in b, for example. The %psearch magic has full
2211 docstrings. Many thanks to JΓΆrgen Stenarson
2216 docstrings. Many thanks to JΓΆrgen Stenarson
2212 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2217 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2213 implementing this functionality.
2218 implementing this functionality.
2214
2219
2215 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2220 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2216
2221
2217 * Manual: fixed long-standing annoyance of double-dashes (as in
2222 * Manual: fixed long-standing annoyance of double-dashes (as in
2218 --prefix=~, for example) being stripped in the HTML version. This
2223 --prefix=~, for example) being stripped in the HTML version. This
2219 is a latex2html bug, but a workaround was provided. Many thanks
2224 is a latex2html bug, but a workaround was provided. Many thanks
2220 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2225 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2221 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2226 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2222 rolling. This seemingly small issue had tripped a number of users
2227 rolling. This seemingly small issue had tripped a number of users
2223 when first installing, so I'm glad to see it gone.
2228 when first installing, so I'm glad to see it gone.
2224
2229
2225 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2230 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2226
2231
2227 * IPython/Extensions/numeric_formats.py: fix missing import,
2232 * IPython/Extensions/numeric_formats.py: fix missing import,
2228 reported by Stephen Walton.
2233 reported by Stephen Walton.
2229
2234
2230 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2235 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2231
2236
2232 * IPython/demo.py: finish demo module, fully documented now.
2237 * IPython/demo.py: finish demo module, fully documented now.
2233
2238
2234 * IPython/genutils.py (file_read): simple little utility to read a
2239 * IPython/genutils.py (file_read): simple little utility to read a
2235 file and ensure it's closed afterwards.
2240 file and ensure it's closed afterwards.
2236
2241
2237 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2242 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2238
2243
2239 * IPython/demo.py (Demo.__init__): added support for individually
2244 * IPython/demo.py (Demo.__init__): added support for individually
2240 tagging blocks for automatic execution.
2245 tagging blocks for automatic execution.
2241
2246
2242 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2247 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2243 syntax-highlighted python sources, requested by John.
2248 syntax-highlighted python sources, requested by John.
2244
2249
2245 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2250 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2246
2251
2247 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2252 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2248 finishing.
2253 finishing.
2249
2254
2250 * IPython/genutils.py (shlex_split): moved from Magic to here,
2255 * IPython/genutils.py (shlex_split): moved from Magic to here,
2251 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2256 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2252
2257
2253 * IPython/demo.py (Demo.__init__): added support for silent
2258 * IPython/demo.py (Demo.__init__): added support for silent
2254 blocks, improved marks as regexps, docstrings written.
2259 blocks, improved marks as regexps, docstrings written.
2255 (Demo.__init__): better docstring, added support for sys.argv.
2260 (Demo.__init__): better docstring, added support for sys.argv.
2256
2261
2257 * IPython/genutils.py (marquee): little utility used by the demo
2262 * IPython/genutils.py (marquee): little utility used by the demo
2258 code, handy in general.
2263 code, handy in general.
2259
2264
2260 * IPython/demo.py (Demo.__init__): new class for interactive
2265 * IPython/demo.py (Demo.__init__): new class for interactive
2261 demos. Not documented yet, I just wrote it in a hurry for
2266 demos. Not documented yet, I just wrote it in a hurry for
2262 scipy'05. Will docstring later.
2267 scipy'05. Will docstring later.
2263
2268
2264 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2269 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2265
2270
2266 * IPython/Shell.py (sigint_handler): Drastic simplification which
2271 * IPython/Shell.py (sigint_handler): Drastic simplification which
2267 also seems to make Ctrl-C work correctly across threads! This is
2272 also seems to make Ctrl-C work correctly across threads! This is
2268 so simple, that I can't beleive I'd missed it before. Needs more
2273 so simple, that I can't beleive I'd missed it before. Needs more
2269 testing, though.
2274 testing, though.
2270 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2275 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2271 like this before...
2276 like this before...
2272
2277
2273 * IPython/genutils.py (get_home_dir): add protection against
2278 * IPython/genutils.py (get_home_dir): add protection against
2274 non-dirs in win32 registry.
2279 non-dirs in win32 registry.
2275
2280
2276 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2281 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2277 bug where dict was mutated while iterating (pysh crash).
2282 bug where dict was mutated while iterating (pysh crash).
2278
2283
2279 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2284 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2280
2285
2281 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2286 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2282 spurious newlines added by this routine. After a report by
2287 spurious newlines added by this routine. After a report by
2283 F. Mantegazza.
2288 F. Mantegazza.
2284
2289
2285 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2290 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2286
2291
2287 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2292 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2288 calls. These were a leftover from the GTK 1.x days, and can cause
2293 calls. These were a leftover from the GTK 1.x days, and can cause
2289 problems in certain cases (after a report by John Hunter).
2294 problems in certain cases (after a report by John Hunter).
2290
2295
2291 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2296 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2292 os.getcwd() fails at init time. Thanks to patch from David Remahl
2297 os.getcwd() fails at init time. Thanks to patch from David Remahl
2293 <chmod007-AT-mac.com>.
2298 <chmod007-AT-mac.com>.
2294 (InteractiveShell.__init__): prevent certain special magics from
2299 (InteractiveShell.__init__): prevent certain special magics from
2295 being shadowed by aliases. Closes
2300 being shadowed by aliases. Closes
2296 http://www.scipy.net/roundup/ipython/issue41.
2301 http://www.scipy.net/roundup/ipython/issue41.
2297
2302
2298 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2303 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2299
2304
2300 * IPython/iplib.py (InteractiveShell.complete): Added new
2305 * IPython/iplib.py (InteractiveShell.complete): Added new
2301 top-level completion method to expose the completion mechanism
2306 top-level completion method to expose the completion mechanism
2302 beyond readline-based environments.
2307 beyond readline-based environments.
2303
2308
2304 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2309 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2305
2310
2306 * tools/ipsvnc (svnversion): fix svnversion capture.
2311 * tools/ipsvnc (svnversion): fix svnversion capture.
2307
2312
2308 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2313 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2309 attribute to self, which was missing. Before, it was set by a
2314 attribute to self, which was missing. Before, it was set by a
2310 routine which in certain cases wasn't being called, so the
2315 routine which in certain cases wasn't being called, so the
2311 instance could end up missing the attribute. This caused a crash.
2316 instance could end up missing the attribute. This caused a crash.
2312 Closes http://www.scipy.net/roundup/ipython/issue40.
2317 Closes http://www.scipy.net/roundup/ipython/issue40.
2313
2318
2314 2005-08-16 Fernando Perez <fperez@colorado.edu>
2319 2005-08-16 Fernando Perez <fperez@colorado.edu>
2315
2320
2316 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2321 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2317 contains non-string attribute. Closes
2322 contains non-string attribute. Closes
2318 http://www.scipy.net/roundup/ipython/issue38.
2323 http://www.scipy.net/roundup/ipython/issue38.
2319
2324
2320 2005-08-14 Fernando Perez <fperez@colorado.edu>
2325 2005-08-14 Fernando Perez <fperez@colorado.edu>
2321
2326
2322 * tools/ipsvnc: Minor improvements, to add changeset info.
2327 * tools/ipsvnc: Minor improvements, to add changeset info.
2323
2328
2324 2005-08-12 Fernando Perez <fperez@colorado.edu>
2329 2005-08-12 Fernando Perez <fperez@colorado.edu>
2325
2330
2326 * IPython/iplib.py (runsource): remove self.code_to_run_src
2331 * IPython/iplib.py (runsource): remove self.code_to_run_src
2327 attribute. I realized this is nothing more than
2332 attribute. I realized this is nothing more than
2328 '\n'.join(self.buffer), and having the same data in two different
2333 '\n'.join(self.buffer), and having the same data in two different
2329 places is just asking for synchronization bugs. This may impact
2334 places is just asking for synchronization bugs. This may impact
2330 people who have custom exception handlers, so I need to warn
2335 people who have custom exception handlers, so I need to warn
2331 ipython-dev about it (F. Mantegazza may use them).
2336 ipython-dev about it (F. Mantegazza may use them).
2332
2337
2333 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2338 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2334
2339
2335 * IPython/genutils.py: fix 2.2 compatibility (generators)
2340 * IPython/genutils.py: fix 2.2 compatibility (generators)
2336
2341
2337 2005-07-18 Fernando Perez <fperez@colorado.edu>
2342 2005-07-18 Fernando Perez <fperez@colorado.edu>
2338
2343
2339 * IPython/genutils.py (get_home_dir): fix to help users with
2344 * IPython/genutils.py (get_home_dir): fix to help users with
2340 invalid $HOME under win32.
2345 invalid $HOME under win32.
2341
2346
2342 2005-07-17 Fernando Perez <fperez@colorado.edu>
2347 2005-07-17 Fernando Perez <fperez@colorado.edu>
2343
2348
2344 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2349 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2345 some old hacks and clean up a bit other routines; code should be
2350 some old hacks and clean up a bit other routines; code should be
2346 simpler and a bit faster.
2351 simpler and a bit faster.
2347
2352
2348 * IPython/iplib.py (interact): removed some last-resort attempts
2353 * IPython/iplib.py (interact): removed some last-resort attempts
2349 to survive broken stdout/stderr. That code was only making it
2354 to survive broken stdout/stderr. That code was only making it
2350 harder to abstract out the i/o (necessary for gui integration),
2355 harder to abstract out the i/o (necessary for gui integration),
2351 and the crashes it could prevent were extremely rare in practice
2356 and the crashes it could prevent were extremely rare in practice
2352 (besides being fully user-induced in a pretty violent manner).
2357 (besides being fully user-induced in a pretty violent manner).
2353
2358
2354 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2359 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2355 Nothing major yet, but the code is simpler to read; this should
2360 Nothing major yet, but the code is simpler to read; this should
2356 make it easier to do more serious modifications in the future.
2361 make it easier to do more serious modifications in the future.
2357
2362
2358 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2363 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2359 which broke in .15 (thanks to a report by Ville).
2364 which broke in .15 (thanks to a report by Ville).
2360
2365
2361 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2366 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2362 be quite correct, I know next to nothing about unicode). This
2367 be quite correct, I know next to nothing about unicode). This
2363 will allow unicode strings to be used in prompts, amongst other
2368 will allow unicode strings to be used in prompts, amongst other
2364 cases. It also will prevent ipython from crashing when unicode
2369 cases. It also will prevent ipython from crashing when unicode
2365 shows up unexpectedly in many places. If ascii encoding fails, we
2370 shows up unexpectedly in many places. If ascii encoding fails, we
2366 assume utf_8. Currently the encoding is not a user-visible
2371 assume utf_8. Currently the encoding is not a user-visible
2367 setting, though it could be made so if there is demand for it.
2372 setting, though it could be made so if there is demand for it.
2368
2373
2369 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2374 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2370
2375
2371 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2376 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2372
2377
2373 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2378 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2374
2379
2375 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2380 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2376 code can work transparently for 2.2/2.3.
2381 code can work transparently for 2.2/2.3.
2377
2382
2378 2005-07-16 Fernando Perez <fperez@colorado.edu>
2383 2005-07-16 Fernando Perez <fperez@colorado.edu>
2379
2384
2380 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2385 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2381 out of the color scheme table used for coloring exception
2386 out of the color scheme table used for coloring exception
2382 tracebacks. This allows user code to add new schemes at runtime.
2387 tracebacks. This allows user code to add new schemes at runtime.
2383 This is a minimally modified version of the patch at
2388 This is a minimally modified version of the patch at
2384 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2389 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2385 for the contribution.
2390 for the contribution.
2386
2391
2387 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2392 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2388 slightly modified version of the patch in
2393 slightly modified version of the patch in
2389 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2394 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2390 to remove the previous try/except solution (which was costlier).
2395 to remove the previous try/except solution (which was costlier).
2391 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2396 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2392
2397
2393 2005-06-08 Fernando Perez <fperez@colorado.edu>
2398 2005-06-08 Fernando Perez <fperez@colorado.edu>
2394
2399
2395 * IPython/iplib.py (write/write_err): Add methods to abstract all
2400 * IPython/iplib.py (write/write_err): Add methods to abstract all
2396 I/O a bit more.
2401 I/O a bit more.
2397
2402
2398 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2403 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2399 warning, reported by Aric Hagberg, fix by JD Hunter.
2404 warning, reported by Aric Hagberg, fix by JD Hunter.
2400
2405
2401 2005-06-02 *** Released version 0.6.15
2406 2005-06-02 *** Released version 0.6.15
2402
2407
2403 2005-06-01 Fernando Perez <fperez@colorado.edu>
2408 2005-06-01 Fernando Perez <fperez@colorado.edu>
2404
2409
2405 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2410 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2406 tab-completion of filenames within open-quoted strings. Note that
2411 tab-completion of filenames within open-quoted strings. Note that
2407 this requires that in ~/.ipython/ipythonrc, users change the
2412 this requires that in ~/.ipython/ipythonrc, users change the
2408 readline delimiters configuration to read:
2413 readline delimiters configuration to read:
2409
2414
2410 readline_remove_delims -/~
2415 readline_remove_delims -/~
2411
2416
2412
2417
2413 2005-05-31 *** Released version 0.6.14
2418 2005-05-31 *** Released version 0.6.14
2414
2419
2415 2005-05-29 Fernando Perez <fperez@colorado.edu>
2420 2005-05-29 Fernando Perez <fperez@colorado.edu>
2416
2421
2417 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2422 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2418 with files not on the filesystem. Reported by Eliyahu Sandler
2423 with files not on the filesystem. Reported by Eliyahu Sandler
2419 <eli@gondolin.net>
2424 <eli@gondolin.net>
2420
2425
2421 2005-05-22 Fernando Perez <fperez@colorado.edu>
2426 2005-05-22 Fernando Perez <fperez@colorado.edu>
2422
2427
2423 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2428 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2424 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2429 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2425
2430
2426 2005-05-19 Fernando Perez <fperez@colorado.edu>
2431 2005-05-19 Fernando Perez <fperez@colorado.edu>
2427
2432
2428 * IPython/iplib.py (safe_execfile): close a file which could be
2433 * IPython/iplib.py (safe_execfile): close a file which could be
2429 left open (causing problems in win32, which locks open files).
2434 left open (causing problems in win32, which locks open files).
2430 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2435 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2431
2436
2432 2005-05-18 Fernando Perez <fperez@colorado.edu>
2437 2005-05-18 Fernando Perez <fperez@colorado.edu>
2433
2438
2434 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2439 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2435 keyword arguments correctly to safe_execfile().
2440 keyword arguments correctly to safe_execfile().
2436
2441
2437 2005-05-13 Fernando Perez <fperez@colorado.edu>
2442 2005-05-13 Fernando Perez <fperez@colorado.edu>
2438
2443
2439 * ipython.1: Added info about Qt to manpage, and threads warning
2444 * ipython.1: Added info about Qt to manpage, and threads warning
2440 to usage page (invoked with --help).
2445 to usage page (invoked with --help).
2441
2446
2442 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2447 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2443 new matcher (it goes at the end of the priority list) to do
2448 new matcher (it goes at the end of the priority list) to do
2444 tab-completion on named function arguments. Submitted by George
2449 tab-completion on named function arguments. Submitted by George
2445 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2450 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2446 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2451 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2447 for more details.
2452 for more details.
2448
2453
2449 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2454 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2450 SystemExit exceptions in the script being run. Thanks to a report
2455 SystemExit exceptions in the script being run. Thanks to a report
2451 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2456 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2452 producing very annoying behavior when running unit tests.
2457 producing very annoying behavior when running unit tests.
2453
2458
2454 2005-05-12 Fernando Perez <fperez@colorado.edu>
2459 2005-05-12 Fernando Perez <fperez@colorado.edu>
2455
2460
2456 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2461 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2457 which I'd broken (again) due to a changed regexp. In the process,
2462 which I'd broken (again) due to a changed regexp. In the process,
2458 added ';' as an escape to auto-quote the whole line without
2463 added ';' as an escape to auto-quote the whole line without
2459 splitting its arguments. Thanks to a report by Jerry McRae
2464 splitting its arguments. Thanks to a report by Jerry McRae
2460 <qrs0xyc02-AT-sneakemail.com>.
2465 <qrs0xyc02-AT-sneakemail.com>.
2461
2466
2462 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2467 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2463 possible crashes caused by a TokenError. Reported by Ed Schofield
2468 possible crashes caused by a TokenError. Reported by Ed Schofield
2464 <schofield-AT-ftw.at>.
2469 <schofield-AT-ftw.at>.
2465
2470
2466 2005-05-06 Fernando Perez <fperez@colorado.edu>
2471 2005-05-06 Fernando Perez <fperez@colorado.edu>
2467
2472
2468 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2473 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2469
2474
2470 2005-04-29 Fernando Perez <fperez@colorado.edu>
2475 2005-04-29 Fernando Perez <fperez@colorado.edu>
2471
2476
2472 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2477 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2473 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2478 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2474 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2479 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2475 which provides support for Qt interactive usage (similar to the
2480 which provides support for Qt interactive usage (similar to the
2476 existing one for WX and GTK). This had been often requested.
2481 existing one for WX and GTK). This had been often requested.
2477
2482
2478 2005-04-14 *** Released version 0.6.13
2483 2005-04-14 *** Released version 0.6.13
2479
2484
2480 2005-04-08 Fernando Perez <fperez@colorado.edu>
2485 2005-04-08 Fernando Perez <fperez@colorado.edu>
2481
2486
2482 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2487 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2483 from _ofind, which gets called on almost every input line. Now,
2488 from _ofind, which gets called on almost every input line. Now,
2484 we only try to get docstrings if they are actually going to be
2489 we only try to get docstrings if they are actually going to be
2485 used (the overhead of fetching unnecessary docstrings can be
2490 used (the overhead of fetching unnecessary docstrings can be
2486 noticeable for certain objects, such as Pyro proxies).
2491 noticeable for certain objects, such as Pyro proxies).
2487
2492
2488 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2493 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2489 for completers. For some reason I had been passing them the state
2494 for completers. For some reason I had been passing them the state
2490 variable, which completers never actually need, and was in
2495 variable, which completers never actually need, and was in
2491 conflict with the rlcompleter API. Custom completers ONLY need to
2496 conflict with the rlcompleter API. Custom completers ONLY need to
2492 take the text parameter.
2497 take the text parameter.
2493
2498
2494 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2499 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2495 work correctly in pysh. I've also moved all the logic which used
2500 work correctly in pysh. I've also moved all the logic which used
2496 to be in pysh.py here, which will prevent problems with future
2501 to be in pysh.py here, which will prevent problems with future
2497 upgrades. However, this time I must warn users to update their
2502 upgrades. However, this time I must warn users to update their
2498 pysh profile to include the line
2503 pysh profile to include the line
2499
2504
2500 import_all IPython.Extensions.InterpreterExec
2505 import_all IPython.Extensions.InterpreterExec
2501
2506
2502 because otherwise things won't work for them. They MUST also
2507 because otherwise things won't work for them. They MUST also
2503 delete pysh.py and the line
2508 delete pysh.py and the line
2504
2509
2505 execfile pysh.py
2510 execfile pysh.py
2506
2511
2507 from their ipythonrc-pysh.
2512 from their ipythonrc-pysh.
2508
2513
2509 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2514 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2510 robust in the face of objects whose dir() returns non-strings
2515 robust in the face of objects whose dir() returns non-strings
2511 (which it shouldn't, but some broken libs like ITK do). Thanks to
2516 (which it shouldn't, but some broken libs like ITK do). Thanks to
2512 a patch by John Hunter (implemented differently, though). Also
2517 a patch by John Hunter (implemented differently, though). Also
2513 minor improvements by using .extend instead of + on lists.
2518 minor improvements by using .extend instead of + on lists.
2514
2519
2515 * pysh.py:
2520 * pysh.py:
2516
2521
2517 2005-04-06 Fernando Perez <fperez@colorado.edu>
2522 2005-04-06 Fernando Perez <fperez@colorado.edu>
2518
2523
2519 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2524 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2520 by default, so that all users benefit from it. Those who don't
2525 by default, so that all users benefit from it. Those who don't
2521 want it can still turn it off.
2526 want it can still turn it off.
2522
2527
2523 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2528 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2524 config file, I'd forgotten about this, so users were getting it
2529 config file, I'd forgotten about this, so users were getting it
2525 off by default.
2530 off by default.
2526
2531
2527 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2532 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2528 consistency. Now magics can be called in multiline statements,
2533 consistency. Now magics can be called in multiline statements,
2529 and python variables can be expanded in magic calls via $var.
2534 and python variables can be expanded in magic calls via $var.
2530 This makes the magic system behave just like aliases or !system
2535 This makes the magic system behave just like aliases or !system
2531 calls.
2536 calls.
2532
2537
2533 2005-03-28 Fernando Perez <fperez@colorado.edu>
2538 2005-03-28 Fernando Perez <fperez@colorado.edu>
2534
2539
2535 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2540 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2536 expensive string additions for building command. Add support for
2541 expensive string additions for building command. Add support for
2537 trailing ';' when autocall is used.
2542 trailing ';' when autocall is used.
2538
2543
2539 2005-03-26 Fernando Perez <fperez@colorado.edu>
2544 2005-03-26 Fernando Perez <fperez@colorado.edu>
2540
2545
2541 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2546 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2542 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2547 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2543 ipython.el robust against prompts with any number of spaces
2548 ipython.el robust against prompts with any number of spaces
2544 (including 0) after the ':' character.
2549 (including 0) after the ':' character.
2545
2550
2546 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2551 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2547 continuation prompt, which misled users to think the line was
2552 continuation prompt, which misled users to think the line was
2548 already indented. Closes debian Bug#300847, reported to me by
2553 already indented. Closes debian Bug#300847, reported to me by
2549 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2554 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2550
2555
2551 2005-03-23 Fernando Perez <fperez@colorado.edu>
2556 2005-03-23 Fernando Perez <fperez@colorado.edu>
2552
2557
2553 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2558 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2554 properly aligned if they have embedded newlines.
2559 properly aligned if they have embedded newlines.
2555
2560
2556 * IPython/iplib.py (runlines): Add a public method to expose
2561 * IPython/iplib.py (runlines): Add a public method to expose
2557 IPython's code execution machinery, so that users can run strings
2562 IPython's code execution machinery, so that users can run strings
2558 as if they had been typed at the prompt interactively.
2563 as if they had been typed at the prompt interactively.
2559 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2564 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2560 methods which can call the system shell, but with python variable
2565 methods which can call the system shell, but with python variable
2561 expansion. The three such methods are: __IPYTHON__.system,
2566 expansion. The three such methods are: __IPYTHON__.system,
2562 .getoutput and .getoutputerror. These need to be documented in a
2567 .getoutput and .getoutputerror. These need to be documented in a
2563 'public API' section (to be written) of the manual.
2568 'public API' section (to be written) of the manual.
2564
2569
2565 2005-03-20 Fernando Perez <fperez@colorado.edu>
2570 2005-03-20 Fernando Perez <fperez@colorado.edu>
2566
2571
2567 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2572 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2568 for custom exception handling. This is quite powerful, and it
2573 for custom exception handling. This is quite powerful, and it
2569 allows for user-installable exception handlers which can trap
2574 allows for user-installable exception handlers which can trap
2570 custom exceptions at runtime and treat them separately from
2575 custom exceptions at runtime and treat them separately from
2571 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2576 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2572 Mantegazza <mantegazza-AT-ill.fr>.
2577 Mantegazza <mantegazza-AT-ill.fr>.
2573 (InteractiveShell.set_custom_completer): public API function to
2578 (InteractiveShell.set_custom_completer): public API function to
2574 add new completers at runtime.
2579 add new completers at runtime.
2575
2580
2576 2005-03-19 Fernando Perez <fperez@colorado.edu>
2581 2005-03-19 Fernando Perez <fperez@colorado.edu>
2577
2582
2578 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2583 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2579 allow objects which provide their docstrings via non-standard
2584 allow objects which provide their docstrings via non-standard
2580 mechanisms (like Pyro proxies) to still be inspected by ipython's
2585 mechanisms (like Pyro proxies) to still be inspected by ipython's
2581 ? system.
2586 ? system.
2582
2587
2583 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2588 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2584 automatic capture system. I tried quite hard to make it work
2589 automatic capture system. I tried quite hard to make it work
2585 reliably, and simply failed. I tried many combinations with the
2590 reliably, and simply failed. I tried many combinations with the
2586 subprocess module, but eventually nothing worked in all needed
2591 subprocess module, but eventually nothing worked in all needed
2587 cases (not blocking stdin for the child, duplicating stdout
2592 cases (not blocking stdin for the child, duplicating stdout
2588 without blocking, etc). The new %sc/%sx still do capture to these
2593 without blocking, etc). The new %sc/%sx still do capture to these
2589 magical list/string objects which make shell use much more
2594 magical list/string objects which make shell use much more
2590 conveninent, so not all is lost.
2595 conveninent, so not all is lost.
2591
2596
2592 XXX - FIX MANUAL for the change above!
2597 XXX - FIX MANUAL for the change above!
2593
2598
2594 (runsource): I copied code.py's runsource() into ipython to modify
2599 (runsource): I copied code.py's runsource() into ipython to modify
2595 it a bit. Now the code object and source to be executed are
2600 it a bit. Now the code object and source to be executed are
2596 stored in ipython. This makes this info accessible to third-party
2601 stored in ipython. This makes this info accessible to third-party
2597 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2602 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2598 Mantegazza <mantegazza-AT-ill.fr>.
2603 Mantegazza <mantegazza-AT-ill.fr>.
2599
2604
2600 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2605 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2601 history-search via readline (like C-p/C-n). I'd wanted this for a
2606 history-search via readline (like C-p/C-n). I'd wanted this for a
2602 long time, but only recently found out how to do it. For users
2607 long time, but only recently found out how to do it. For users
2603 who already have their ipythonrc files made and want this, just
2608 who already have their ipythonrc files made and want this, just
2604 add:
2609 add:
2605
2610
2606 readline_parse_and_bind "\e[A": history-search-backward
2611 readline_parse_and_bind "\e[A": history-search-backward
2607 readline_parse_and_bind "\e[B": history-search-forward
2612 readline_parse_and_bind "\e[B": history-search-forward
2608
2613
2609 2005-03-18 Fernando Perez <fperez@colorado.edu>
2614 2005-03-18 Fernando Perez <fperez@colorado.edu>
2610
2615
2611 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2616 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2612 LSString and SList classes which allow transparent conversions
2617 LSString and SList classes which allow transparent conversions
2613 between list mode and whitespace-separated string.
2618 between list mode and whitespace-separated string.
2614 (magic_r): Fix recursion problem in %r.
2619 (magic_r): Fix recursion problem in %r.
2615
2620
2616 * IPython/genutils.py (LSString): New class to be used for
2621 * IPython/genutils.py (LSString): New class to be used for
2617 automatic storage of the results of all alias/system calls in _o
2622 automatic storage of the results of all alias/system calls in _o
2618 and _e (stdout/err). These provide a .l/.list attribute which
2623 and _e (stdout/err). These provide a .l/.list attribute which
2619 does automatic splitting on newlines. This means that for most
2624 does automatic splitting on newlines. This means that for most
2620 uses, you'll never need to do capturing of output with %sc/%sx
2625 uses, you'll never need to do capturing of output with %sc/%sx
2621 anymore, since ipython keeps this always done for you. Note that
2626 anymore, since ipython keeps this always done for you. Note that
2622 only the LAST results are stored, the _o/e variables are
2627 only the LAST results are stored, the _o/e variables are
2623 overwritten on each call. If you need to save their contents
2628 overwritten on each call. If you need to save their contents
2624 further, simply bind them to any other name.
2629 further, simply bind them to any other name.
2625
2630
2626 2005-03-17 Fernando Perez <fperez@colorado.edu>
2631 2005-03-17 Fernando Perez <fperez@colorado.edu>
2627
2632
2628 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2633 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2629 prompt namespace handling.
2634 prompt namespace handling.
2630
2635
2631 2005-03-16 Fernando Perez <fperez@colorado.edu>
2636 2005-03-16 Fernando Perez <fperez@colorado.edu>
2632
2637
2633 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2638 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2634 classic prompts to be '>>> ' (final space was missing, and it
2639 classic prompts to be '>>> ' (final space was missing, and it
2635 trips the emacs python mode).
2640 trips the emacs python mode).
2636 (BasePrompt.__str__): Added safe support for dynamic prompt
2641 (BasePrompt.__str__): Added safe support for dynamic prompt
2637 strings. Now you can set your prompt string to be '$x', and the
2642 strings. Now you can set your prompt string to be '$x', and the
2638 value of x will be printed from your interactive namespace. The
2643 value of x will be printed from your interactive namespace. The
2639 interpolation syntax includes the full Itpl support, so
2644 interpolation syntax includes the full Itpl support, so
2640 ${foo()+x+bar()} is a valid prompt string now, and the function
2645 ${foo()+x+bar()} is a valid prompt string now, and the function
2641 calls will be made at runtime.
2646 calls will be made at runtime.
2642
2647
2643 2005-03-15 Fernando Perez <fperez@colorado.edu>
2648 2005-03-15 Fernando Perez <fperez@colorado.edu>
2644
2649
2645 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2650 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2646 avoid name clashes in pylab. %hist still works, it just forwards
2651 avoid name clashes in pylab. %hist still works, it just forwards
2647 the call to %history.
2652 the call to %history.
2648
2653
2649 2005-03-02 *** Released version 0.6.12
2654 2005-03-02 *** Released version 0.6.12
2650
2655
2651 2005-03-02 Fernando Perez <fperez@colorado.edu>
2656 2005-03-02 Fernando Perez <fperez@colorado.edu>
2652
2657
2653 * IPython/iplib.py (handle_magic): log magic calls properly as
2658 * IPython/iplib.py (handle_magic): log magic calls properly as
2654 ipmagic() function calls.
2659 ipmagic() function calls.
2655
2660
2656 * IPython/Magic.py (magic_time): Improved %time to support
2661 * IPython/Magic.py (magic_time): Improved %time to support
2657 statements and provide wall-clock as well as CPU time.
2662 statements and provide wall-clock as well as CPU time.
2658
2663
2659 2005-02-27 Fernando Perez <fperez@colorado.edu>
2664 2005-02-27 Fernando Perez <fperez@colorado.edu>
2660
2665
2661 * IPython/hooks.py: New hooks module, to expose user-modifiable
2666 * IPython/hooks.py: New hooks module, to expose user-modifiable
2662 IPython functionality in a clean manner. For now only the editor
2667 IPython functionality in a clean manner. For now only the editor
2663 hook is actually written, and other thigns which I intend to turn
2668 hook is actually written, and other thigns which I intend to turn
2664 into proper hooks aren't yet there. The display and prefilter
2669 into proper hooks aren't yet there. The display and prefilter
2665 stuff, for example, should be hooks. But at least now the
2670 stuff, for example, should be hooks. But at least now the
2666 framework is in place, and the rest can be moved here with more
2671 framework is in place, and the rest can be moved here with more
2667 time later. IPython had had a .hooks variable for a long time for
2672 time later. IPython had had a .hooks variable for a long time for
2668 this purpose, but I'd never actually used it for anything.
2673 this purpose, but I'd never actually used it for anything.
2669
2674
2670 2005-02-26 Fernando Perez <fperez@colorado.edu>
2675 2005-02-26 Fernando Perez <fperez@colorado.edu>
2671
2676
2672 * IPython/ipmaker.py (make_IPython): make the default ipython
2677 * IPython/ipmaker.py (make_IPython): make the default ipython
2673 directory be called _ipython under win32, to follow more the
2678 directory be called _ipython under win32, to follow more the
2674 naming peculiarities of that platform (where buggy software like
2679 naming peculiarities of that platform (where buggy software like
2675 Visual Sourcesafe breaks with .named directories). Reported by
2680 Visual Sourcesafe breaks with .named directories). Reported by
2676 Ville Vainio.
2681 Ville Vainio.
2677
2682
2678 2005-02-23 Fernando Perez <fperez@colorado.edu>
2683 2005-02-23 Fernando Perez <fperez@colorado.edu>
2679
2684
2680 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2685 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2681 auto_aliases for win32 which were causing problems. Users can
2686 auto_aliases for win32 which were causing problems. Users can
2682 define the ones they personally like.
2687 define the ones they personally like.
2683
2688
2684 2005-02-21 Fernando Perez <fperez@colorado.edu>
2689 2005-02-21 Fernando Perez <fperez@colorado.edu>
2685
2690
2686 * IPython/Magic.py (magic_time): new magic to time execution of
2691 * IPython/Magic.py (magic_time): new magic to time execution of
2687 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2692 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2688
2693
2689 2005-02-19 Fernando Perez <fperez@colorado.edu>
2694 2005-02-19 Fernando Perez <fperez@colorado.edu>
2690
2695
2691 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2696 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2692 into keys (for prompts, for example).
2697 into keys (for prompts, for example).
2693
2698
2694 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2699 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2695 prompts in case users want them. This introduces a small behavior
2700 prompts in case users want them. This introduces a small behavior
2696 change: ipython does not automatically add a space to all prompts
2701 change: ipython does not automatically add a space to all prompts
2697 anymore. To get the old prompts with a space, users should add it
2702 anymore. To get the old prompts with a space, users should add it
2698 manually to their ipythonrc file, so for example prompt_in1 should
2703 manually to their ipythonrc file, so for example prompt_in1 should
2699 now read 'In [\#]: ' instead of 'In [\#]:'.
2704 now read 'In [\#]: ' instead of 'In [\#]:'.
2700 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2705 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2701 file) to control left-padding of secondary prompts.
2706 file) to control left-padding of secondary prompts.
2702
2707
2703 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2708 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2704 the profiler can't be imported. Fix for Debian, which removed
2709 the profiler can't be imported. Fix for Debian, which removed
2705 profile.py because of License issues. I applied a slightly
2710 profile.py because of License issues. I applied a slightly
2706 modified version of the original Debian patch at
2711 modified version of the original Debian patch at
2707 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2712 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2708
2713
2709 2005-02-17 Fernando Perez <fperez@colorado.edu>
2714 2005-02-17 Fernando Perez <fperez@colorado.edu>
2710
2715
2711 * IPython/genutils.py (native_line_ends): Fix bug which would
2716 * IPython/genutils.py (native_line_ends): Fix bug which would
2712 cause improper line-ends under win32 b/c I was not opening files
2717 cause improper line-ends under win32 b/c I was not opening files
2713 in binary mode. Bug report and fix thanks to Ville.
2718 in binary mode. Bug report and fix thanks to Ville.
2714
2719
2715 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2720 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2716 trying to catch spurious foo[1] autocalls. My fix actually broke
2721 trying to catch spurious foo[1] autocalls. My fix actually broke
2717 ',/' autoquote/call with explicit escape (bad regexp).
2722 ',/' autoquote/call with explicit escape (bad regexp).
2718
2723
2719 2005-02-15 *** Released version 0.6.11
2724 2005-02-15 *** Released version 0.6.11
2720
2725
2721 2005-02-14 Fernando Perez <fperez@colorado.edu>
2726 2005-02-14 Fernando Perez <fperez@colorado.edu>
2722
2727
2723 * IPython/background_jobs.py: New background job management
2728 * IPython/background_jobs.py: New background job management
2724 subsystem. This is implemented via a new set of classes, and
2729 subsystem. This is implemented via a new set of classes, and
2725 IPython now provides a builtin 'jobs' object for background job
2730 IPython now provides a builtin 'jobs' object for background job
2726 execution. A convenience %bg magic serves as a lightweight
2731 execution. A convenience %bg magic serves as a lightweight
2727 frontend for starting the more common type of calls. This was
2732 frontend for starting the more common type of calls. This was
2728 inspired by discussions with B. Granger and the BackgroundCommand
2733 inspired by discussions with B. Granger and the BackgroundCommand
2729 class described in the book Python Scripting for Computational
2734 class described in the book Python Scripting for Computational
2730 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2735 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2731 (although ultimately no code from this text was used, as IPython's
2736 (although ultimately no code from this text was used, as IPython's
2732 system is a separate implementation).
2737 system is a separate implementation).
2733
2738
2734 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2739 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2735 to control the completion of single/double underscore names
2740 to control the completion of single/double underscore names
2736 separately. As documented in the example ipytonrc file, the
2741 separately. As documented in the example ipytonrc file, the
2737 readline_omit__names variable can now be set to 2, to omit even
2742 readline_omit__names variable can now be set to 2, to omit even
2738 single underscore names. Thanks to a patch by Brian Wong
2743 single underscore names. Thanks to a patch by Brian Wong
2739 <BrianWong-AT-AirgoNetworks.Com>.
2744 <BrianWong-AT-AirgoNetworks.Com>.
2740 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2745 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2741 be autocalled as foo([1]) if foo were callable. A problem for
2746 be autocalled as foo([1]) if foo were callable. A problem for
2742 things which are both callable and implement __getitem__.
2747 things which are both callable and implement __getitem__.
2743 (init_readline): Fix autoindentation for win32. Thanks to a patch
2748 (init_readline): Fix autoindentation for win32. Thanks to a patch
2744 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2749 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2745
2750
2746 2005-02-12 Fernando Perez <fperez@colorado.edu>
2751 2005-02-12 Fernando Perez <fperez@colorado.edu>
2747
2752
2748 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2753 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2749 which I had written long ago to sort out user error messages which
2754 which I had written long ago to sort out user error messages which
2750 may occur during startup. This seemed like a good idea initially,
2755 may occur during startup. This seemed like a good idea initially,
2751 but it has proven a disaster in retrospect. I don't want to
2756 but it has proven a disaster in retrospect. I don't want to
2752 change much code for now, so my fix is to set the internal 'debug'
2757 change much code for now, so my fix is to set the internal 'debug'
2753 flag to true everywhere, whose only job was precisely to control
2758 flag to true everywhere, whose only job was precisely to control
2754 this subsystem. This closes issue 28 (as well as avoiding all
2759 this subsystem. This closes issue 28 (as well as avoiding all
2755 sorts of strange hangups which occur from time to time).
2760 sorts of strange hangups which occur from time to time).
2756
2761
2757 2005-02-07 Fernando Perez <fperez@colorado.edu>
2762 2005-02-07 Fernando Perez <fperez@colorado.edu>
2758
2763
2759 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2764 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2760 previous call produced a syntax error.
2765 previous call produced a syntax error.
2761
2766
2762 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2767 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2763 classes without constructor.
2768 classes without constructor.
2764
2769
2765 2005-02-06 Fernando Perez <fperez@colorado.edu>
2770 2005-02-06 Fernando Perez <fperez@colorado.edu>
2766
2771
2767 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2772 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2768 completions with the results of each matcher, so we return results
2773 completions with the results of each matcher, so we return results
2769 to the user from all namespaces. This breaks with ipython
2774 to the user from all namespaces. This breaks with ipython
2770 tradition, but I think it's a nicer behavior. Now you get all
2775 tradition, but I think it's a nicer behavior. Now you get all
2771 possible completions listed, from all possible namespaces (python,
2776 possible completions listed, from all possible namespaces (python,
2772 filesystem, magics...) After a request by John Hunter
2777 filesystem, magics...) After a request by John Hunter
2773 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2778 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2774
2779
2775 2005-02-05 Fernando Perez <fperez@colorado.edu>
2780 2005-02-05 Fernando Perez <fperez@colorado.edu>
2776
2781
2777 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2782 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2778 the call had quote characters in it (the quotes were stripped).
2783 the call had quote characters in it (the quotes were stripped).
2779
2784
2780 2005-01-31 Fernando Perez <fperez@colorado.edu>
2785 2005-01-31 Fernando Perez <fperez@colorado.edu>
2781
2786
2782 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2787 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2783 Itpl.itpl() to make the code more robust against psyco
2788 Itpl.itpl() to make the code more robust against psyco
2784 optimizations.
2789 optimizations.
2785
2790
2786 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2791 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2787 of causing an exception. Quicker, cleaner.
2792 of causing an exception. Quicker, cleaner.
2788
2793
2789 2005-01-28 Fernando Perez <fperez@colorado.edu>
2794 2005-01-28 Fernando Perez <fperez@colorado.edu>
2790
2795
2791 * scripts/ipython_win_post_install.py (install): hardcode
2796 * scripts/ipython_win_post_install.py (install): hardcode
2792 sys.prefix+'python.exe' as the executable path. It turns out that
2797 sys.prefix+'python.exe' as the executable path. It turns out that
2793 during the post-installation run, sys.executable resolves to the
2798 during the post-installation run, sys.executable resolves to the
2794 name of the binary installer! I should report this as a distutils
2799 name of the binary installer! I should report this as a distutils
2795 bug, I think. I updated the .10 release with this tiny fix, to
2800 bug, I think. I updated the .10 release with this tiny fix, to
2796 avoid annoying the lists further.
2801 avoid annoying the lists further.
2797
2802
2798 2005-01-27 *** Released version 0.6.10
2803 2005-01-27 *** Released version 0.6.10
2799
2804
2800 2005-01-27 Fernando Perez <fperez@colorado.edu>
2805 2005-01-27 Fernando Perez <fperez@colorado.edu>
2801
2806
2802 * IPython/numutils.py (norm): Added 'inf' as optional name for
2807 * IPython/numutils.py (norm): Added 'inf' as optional name for
2803 L-infinity norm, included references to mathworld.com for vector
2808 L-infinity norm, included references to mathworld.com for vector
2804 norm definitions.
2809 norm definitions.
2805 (amin/amax): added amin/amax for array min/max. Similar to what
2810 (amin/amax): added amin/amax for array min/max. Similar to what
2806 pylab ships with after the recent reorganization of names.
2811 pylab ships with after the recent reorganization of names.
2807 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2812 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2808
2813
2809 * ipython.el: committed Alex's recent fixes and improvements.
2814 * ipython.el: committed Alex's recent fixes and improvements.
2810 Tested with python-mode from CVS, and it looks excellent. Since
2815 Tested with python-mode from CVS, and it looks excellent. Since
2811 python-mode hasn't released anything in a while, I'm temporarily
2816 python-mode hasn't released anything in a while, I'm temporarily
2812 putting a copy of today's CVS (v 4.70) of python-mode in:
2817 putting a copy of today's CVS (v 4.70) of python-mode in:
2813 http://ipython.scipy.org/tmp/python-mode.el
2818 http://ipython.scipy.org/tmp/python-mode.el
2814
2819
2815 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2820 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2816 sys.executable for the executable name, instead of assuming it's
2821 sys.executable for the executable name, instead of assuming it's
2817 called 'python.exe' (the post-installer would have produced broken
2822 called 'python.exe' (the post-installer would have produced broken
2818 setups on systems with a differently named python binary).
2823 setups on systems with a differently named python binary).
2819
2824
2820 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2825 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2821 references to os.linesep, to make the code more
2826 references to os.linesep, to make the code more
2822 platform-independent. This is also part of the win32 coloring
2827 platform-independent. This is also part of the win32 coloring
2823 fixes.
2828 fixes.
2824
2829
2825 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2830 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2826 lines, which actually cause coloring bugs because the length of
2831 lines, which actually cause coloring bugs because the length of
2827 the line is very difficult to correctly compute with embedded
2832 the line is very difficult to correctly compute with embedded
2828 escapes. This was the source of all the coloring problems under
2833 escapes. This was the source of all the coloring problems under
2829 Win32. I think that _finally_, Win32 users have a properly
2834 Win32. I think that _finally_, Win32 users have a properly
2830 working ipython in all respects. This would never have happened
2835 working ipython in all respects. This would never have happened
2831 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2836 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2832
2837
2833 2005-01-26 *** Released version 0.6.9
2838 2005-01-26 *** Released version 0.6.9
2834
2839
2835 2005-01-25 Fernando Perez <fperez@colorado.edu>
2840 2005-01-25 Fernando Perez <fperez@colorado.edu>
2836
2841
2837 * setup.py: finally, we have a true Windows installer, thanks to
2842 * setup.py: finally, we have a true Windows installer, thanks to
2838 the excellent work of Viktor Ransmayr
2843 the excellent work of Viktor Ransmayr
2839 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2844 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2840 Windows users. The setup routine is quite a bit cleaner thanks to
2845 Windows users. The setup routine is quite a bit cleaner thanks to
2841 this, and the post-install script uses the proper functions to
2846 this, and the post-install script uses the proper functions to
2842 allow a clean de-installation using the standard Windows Control
2847 allow a clean de-installation using the standard Windows Control
2843 Panel.
2848 Panel.
2844
2849
2845 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2850 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2846 environment variable under all OSes (including win32) if
2851 environment variable under all OSes (including win32) if
2847 available. This will give consistency to win32 users who have set
2852 available. This will give consistency to win32 users who have set
2848 this variable for any reason. If os.environ['HOME'] fails, the
2853 this variable for any reason. If os.environ['HOME'] fails, the
2849 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2854 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2850
2855
2851 2005-01-24 Fernando Perez <fperez@colorado.edu>
2856 2005-01-24 Fernando Perez <fperez@colorado.edu>
2852
2857
2853 * IPython/numutils.py (empty_like): add empty_like(), similar to
2858 * IPython/numutils.py (empty_like): add empty_like(), similar to
2854 zeros_like() but taking advantage of the new empty() Numeric routine.
2859 zeros_like() but taking advantage of the new empty() Numeric routine.
2855
2860
2856 2005-01-23 *** Released version 0.6.8
2861 2005-01-23 *** Released version 0.6.8
2857
2862
2858 2005-01-22 Fernando Perez <fperez@colorado.edu>
2863 2005-01-22 Fernando Perez <fperez@colorado.edu>
2859
2864
2860 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2865 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2861 automatic show() calls. After discussing things with JDH, it
2866 automatic show() calls. After discussing things with JDH, it
2862 turns out there are too many corner cases where this can go wrong.
2867 turns out there are too many corner cases where this can go wrong.
2863 It's best not to try to be 'too smart', and simply have ipython
2868 It's best not to try to be 'too smart', and simply have ipython
2864 reproduce as much as possible the default behavior of a normal
2869 reproduce as much as possible the default behavior of a normal
2865 python shell.
2870 python shell.
2866
2871
2867 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2872 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2868 line-splitting regexp and _prefilter() to avoid calling getattr()
2873 line-splitting regexp and _prefilter() to avoid calling getattr()
2869 on assignments. This closes
2874 on assignments. This closes
2870 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2875 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2871 readline uses getattr(), so a simple <TAB> keypress is still
2876 readline uses getattr(), so a simple <TAB> keypress is still
2872 enough to trigger getattr() calls on an object.
2877 enough to trigger getattr() calls on an object.
2873
2878
2874 2005-01-21 Fernando Perez <fperez@colorado.edu>
2879 2005-01-21 Fernando Perez <fperez@colorado.edu>
2875
2880
2876 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2881 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2877 docstring under pylab so it doesn't mask the original.
2882 docstring under pylab so it doesn't mask the original.
2878
2883
2879 2005-01-21 *** Released version 0.6.7
2884 2005-01-21 *** Released version 0.6.7
2880
2885
2881 2005-01-21 Fernando Perez <fperez@colorado.edu>
2886 2005-01-21 Fernando Perez <fperez@colorado.edu>
2882
2887
2883 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2888 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2884 signal handling for win32 users in multithreaded mode.
2889 signal handling for win32 users in multithreaded mode.
2885
2890
2886 2005-01-17 Fernando Perez <fperez@colorado.edu>
2891 2005-01-17 Fernando Perez <fperez@colorado.edu>
2887
2892
2888 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2893 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2889 instances with no __init__. After a crash report by Norbert Nemec
2894 instances with no __init__. After a crash report by Norbert Nemec
2890 <Norbert-AT-nemec-online.de>.
2895 <Norbert-AT-nemec-online.de>.
2891
2896
2892 2005-01-14 Fernando Perez <fperez@colorado.edu>
2897 2005-01-14 Fernando Perez <fperez@colorado.edu>
2893
2898
2894 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2899 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2895 names for verbose exceptions, when multiple dotted names and the
2900 names for verbose exceptions, when multiple dotted names and the
2896 'parent' object were present on the same line.
2901 'parent' object were present on the same line.
2897
2902
2898 2005-01-11 Fernando Perez <fperez@colorado.edu>
2903 2005-01-11 Fernando Perez <fperez@colorado.edu>
2899
2904
2900 * IPython/genutils.py (flag_calls): new utility to trap and flag
2905 * IPython/genutils.py (flag_calls): new utility to trap and flag
2901 calls in functions. I need it to clean up matplotlib support.
2906 calls in functions. I need it to clean up matplotlib support.
2902 Also removed some deprecated code in genutils.
2907 Also removed some deprecated code in genutils.
2903
2908
2904 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2909 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2905 that matplotlib scripts called with %run, which don't call show()
2910 that matplotlib scripts called with %run, which don't call show()
2906 themselves, still have their plotting windows open.
2911 themselves, still have their plotting windows open.
2907
2912
2908 2005-01-05 Fernando Perez <fperez@colorado.edu>
2913 2005-01-05 Fernando Perez <fperez@colorado.edu>
2909
2914
2910 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2915 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2911 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2916 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2912
2917
2913 2004-12-19 Fernando Perez <fperez@colorado.edu>
2918 2004-12-19 Fernando Perez <fperez@colorado.edu>
2914
2919
2915 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2920 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2916 parent_runcode, which was an eyesore. The same result can be
2921 parent_runcode, which was an eyesore. The same result can be
2917 obtained with Python's regular superclass mechanisms.
2922 obtained with Python's regular superclass mechanisms.
2918
2923
2919 2004-12-17 Fernando Perez <fperez@colorado.edu>
2924 2004-12-17 Fernando Perez <fperez@colorado.edu>
2920
2925
2921 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2926 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2922 reported by Prabhu.
2927 reported by Prabhu.
2923 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2928 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2924 sys.stderr) instead of explicitly calling sys.stderr. This helps
2929 sys.stderr) instead of explicitly calling sys.stderr. This helps
2925 maintain our I/O abstractions clean, for future GUI embeddings.
2930 maintain our I/O abstractions clean, for future GUI embeddings.
2926
2931
2927 * IPython/genutils.py (info): added new utility for sys.stderr
2932 * IPython/genutils.py (info): added new utility for sys.stderr
2928 unified info message handling (thin wrapper around warn()).
2933 unified info message handling (thin wrapper around warn()).
2929
2934
2930 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2935 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2931 composite (dotted) names on verbose exceptions.
2936 composite (dotted) names on verbose exceptions.
2932 (VerboseTB.nullrepr): harden against another kind of errors which
2937 (VerboseTB.nullrepr): harden against another kind of errors which
2933 Python's inspect module can trigger, and which were crashing
2938 Python's inspect module can trigger, and which were crashing
2934 IPython. Thanks to a report by Marco Lombardi
2939 IPython. Thanks to a report by Marco Lombardi
2935 <mlombard-AT-ma010192.hq.eso.org>.
2940 <mlombard-AT-ma010192.hq.eso.org>.
2936
2941
2937 2004-12-13 *** Released version 0.6.6
2942 2004-12-13 *** Released version 0.6.6
2938
2943
2939 2004-12-12 Fernando Perez <fperez@colorado.edu>
2944 2004-12-12 Fernando Perez <fperez@colorado.edu>
2940
2945
2941 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2946 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2942 generated by pygtk upon initialization if it was built without
2947 generated by pygtk upon initialization if it was built without
2943 threads (for matplotlib users). After a crash reported by
2948 threads (for matplotlib users). After a crash reported by
2944 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2949 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2945
2950
2946 * IPython/ipmaker.py (make_IPython): fix small bug in the
2951 * IPython/ipmaker.py (make_IPython): fix small bug in the
2947 import_some parameter for multiple imports.
2952 import_some parameter for multiple imports.
2948
2953
2949 * IPython/iplib.py (ipmagic): simplified the interface of
2954 * IPython/iplib.py (ipmagic): simplified the interface of
2950 ipmagic() to take a single string argument, just as it would be
2955 ipmagic() to take a single string argument, just as it would be
2951 typed at the IPython cmd line.
2956 typed at the IPython cmd line.
2952 (ipalias): Added new ipalias() with an interface identical to
2957 (ipalias): Added new ipalias() with an interface identical to
2953 ipmagic(). This completes exposing a pure python interface to the
2958 ipmagic(). This completes exposing a pure python interface to the
2954 alias and magic system, which can be used in loops or more complex
2959 alias and magic system, which can be used in loops or more complex
2955 code where IPython's automatic line mangling is not active.
2960 code where IPython's automatic line mangling is not active.
2956
2961
2957 * IPython/genutils.py (timing): changed interface of timing to
2962 * IPython/genutils.py (timing): changed interface of timing to
2958 simply run code once, which is the most common case. timings()
2963 simply run code once, which is the most common case. timings()
2959 remains unchanged, for the cases where you want multiple runs.
2964 remains unchanged, for the cases where you want multiple runs.
2960
2965
2961 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2966 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2962 bug where Python2.2 crashes with exec'ing code which does not end
2967 bug where Python2.2 crashes with exec'ing code which does not end
2963 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2968 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2964 before.
2969 before.
2965
2970
2966 2004-12-10 Fernando Perez <fperez@colorado.edu>
2971 2004-12-10 Fernando Perez <fperez@colorado.edu>
2967
2972
2968 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2973 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2969 -t to -T, to accomodate the new -t flag in %run (the %run and
2974 -t to -T, to accomodate the new -t flag in %run (the %run and
2970 %prun options are kind of intermixed, and it's not easy to change
2975 %prun options are kind of intermixed, and it's not easy to change
2971 this with the limitations of python's getopt).
2976 this with the limitations of python's getopt).
2972
2977
2973 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2978 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2974 the execution of scripts. It's not as fine-tuned as timeit.py,
2979 the execution of scripts. It's not as fine-tuned as timeit.py,
2975 but it works from inside ipython (and under 2.2, which lacks
2980 but it works from inside ipython (and under 2.2, which lacks
2976 timeit.py). Optionally a number of runs > 1 can be given for
2981 timeit.py). Optionally a number of runs > 1 can be given for
2977 timing very short-running code.
2982 timing very short-running code.
2978
2983
2979 * IPython/genutils.py (uniq_stable): new routine which returns a
2984 * IPython/genutils.py (uniq_stable): new routine which returns a
2980 list of unique elements in any iterable, but in stable order of
2985 list of unique elements in any iterable, but in stable order of
2981 appearance. I needed this for the ultraTB fixes, and it's a handy
2986 appearance. I needed this for the ultraTB fixes, and it's a handy
2982 utility.
2987 utility.
2983
2988
2984 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2989 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2985 dotted names in Verbose exceptions. This had been broken since
2990 dotted names in Verbose exceptions. This had been broken since
2986 the very start, now x.y will properly be printed in a Verbose
2991 the very start, now x.y will properly be printed in a Verbose
2987 traceback, instead of x being shown and y appearing always as an
2992 traceback, instead of x being shown and y appearing always as an
2988 'undefined global'. Getting this to work was a bit tricky,
2993 'undefined global'. Getting this to work was a bit tricky,
2989 because by default python tokenizers are stateless. Saved by
2994 because by default python tokenizers are stateless. Saved by
2990 python's ability to easily add a bit of state to an arbitrary
2995 python's ability to easily add a bit of state to an arbitrary
2991 function (without needing to build a full-blown callable object).
2996 function (without needing to build a full-blown callable object).
2992
2997
2993 Also big cleanup of this code, which had horrendous runtime
2998 Also big cleanup of this code, which had horrendous runtime
2994 lookups of zillions of attributes for colorization. Moved all
2999 lookups of zillions of attributes for colorization. Moved all
2995 this code into a few templates, which make it cleaner and quicker.
3000 this code into a few templates, which make it cleaner and quicker.
2996
3001
2997 Printout quality was also improved for Verbose exceptions: one
3002 Printout quality was also improved for Verbose exceptions: one
2998 variable per line, and memory addresses are printed (this can be
3003 variable per line, and memory addresses are printed (this can be
2999 quite handy in nasty debugging situations, which is what Verbose
3004 quite handy in nasty debugging situations, which is what Verbose
3000 is for).
3005 is for).
3001
3006
3002 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3007 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3003 the command line as scripts to be loaded by embedded instances.
3008 the command line as scripts to be loaded by embedded instances.
3004 Doing so has the potential for an infinite recursion if there are
3009 Doing so has the potential for an infinite recursion if there are
3005 exceptions thrown in the process. This fixes a strange crash
3010 exceptions thrown in the process. This fixes a strange crash
3006 reported by Philippe MULLER <muller-AT-irit.fr>.
3011 reported by Philippe MULLER <muller-AT-irit.fr>.
3007
3012
3008 2004-12-09 Fernando Perez <fperez@colorado.edu>
3013 2004-12-09 Fernando Perez <fperez@colorado.edu>
3009
3014
3010 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3015 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3011 to reflect new names in matplotlib, which now expose the
3016 to reflect new names in matplotlib, which now expose the
3012 matlab-compatible interface via a pylab module instead of the
3017 matlab-compatible interface via a pylab module instead of the
3013 'matlab' name. The new code is backwards compatible, so users of
3018 'matlab' name. The new code is backwards compatible, so users of
3014 all matplotlib versions are OK. Patch by J. Hunter.
3019 all matplotlib versions are OK. Patch by J. Hunter.
3015
3020
3016 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3021 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3017 of __init__ docstrings for instances (class docstrings are already
3022 of __init__ docstrings for instances (class docstrings are already
3018 automatically printed). Instances with customized docstrings
3023 automatically printed). Instances with customized docstrings
3019 (indep. of the class) are also recognized and all 3 separate
3024 (indep. of the class) are also recognized and all 3 separate
3020 docstrings are printed (instance, class, constructor). After some
3025 docstrings are printed (instance, class, constructor). After some
3021 comments/suggestions by J. Hunter.
3026 comments/suggestions by J. Hunter.
3022
3027
3023 2004-12-05 Fernando Perez <fperez@colorado.edu>
3028 2004-12-05 Fernando Perez <fperez@colorado.edu>
3024
3029
3025 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3030 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3026 warnings when tab-completion fails and triggers an exception.
3031 warnings when tab-completion fails and triggers an exception.
3027
3032
3028 2004-12-03 Fernando Perez <fperez@colorado.edu>
3033 2004-12-03 Fernando Perez <fperez@colorado.edu>
3029
3034
3030 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3035 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3031 be triggered when using 'run -p'. An incorrect option flag was
3036 be triggered when using 'run -p'. An incorrect option flag was
3032 being set ('d' instead of 'D').
3037 being set ('d' instead of 'D').
3033 (manpage): fix missing escaped \- sign.
3038 (manpage): fix missing escaped \- sign.
3034
3039
3035 2004-11-30 *** Released version 0.6.5
3040 2004-11-30 *** Released version 0.6.5
3036
3041
3037 2004-11-30 Fernando Perez <fperez@colorado.edu>
3042 2004-11-30 Fernando Perez <fperez@colorado.edu>
3038
3043
3039 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3044 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3040 setting with -d option.
3045 setting with -d option.
3041
3046
3042 * setup.py (docfiles): Fix problem where the doc glob I was using
3047 * setup.py (docfiles): Fix problem where the doc glob I was using
3043 was COMPLETELY BROKEN. It was giving the right files by pure
3048 was COMPLETELY BROKEN. It was giving the right files by pure
3044 accident, but failed once I tried to include ipython.el. Note:
3049 accident, but failed once I tried to include ipython.el. Note:
3045 glob() does NOT allow you to do exclusion on multiple endings!
3050 glob() does NOT allow you to do exclusion on multiple endings!
3046
3051
3047 2004-11-29 Fernando Perez <fperez@colorado.edu>
3052 2004-11-29 Fernando Perez <fperez@colorado.edu>
3048
3053
3049 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3054 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3050 the manpage as the source. Better formatting & consistency.
3055 the manpage as the source. Better formatting & consistency.
3051
3056
3052 * IPython/Magic.py (magic_run): Added new -d option, to run
3057 * IPython/Magic.py (magic_run): Added new -d option, to run
3053 scripts under the control of the python pdb debugger. Note that
3058 scripts under the control of the python pdb debugger. Note that
3054 this required changing the %prun option -d to -D, to avoid a clash
3059 this required changing the %prun option -d to -D, to avoid a clash
3055 (since %run must pass options to %prun, and getopt is too dumb to
3060 (since %run must pass options to %prun, and getopt is too dumb to
3056 handle options with string values with embedded spaces). Thanks
3061 handle options with string values with embedded spaces). Thanks
3057 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3062 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3058 (magic_who_ls): added type matching to %who and %whos, so that one
3063 (magic_who_ls): added type matching to %who and %whos, so that one
3059 can filter their output to only include variables of certain
3064 can filter their output to only include variables of certain
3060 types. Another suggestion by Matthew.
3065 types. Another suggestion by Matthew.
3061 (magic_whos): Added memory summaries in kb and Mb for arrays.
3066 (magic_whos): Added memory summaries in kb and Mb for arrays.
3062 (magic_who): Improve formatting (break lines every 9 vars).
3067 (magic_who): Improve formatting (break lines every 9 vars).
3063
3068
3064 2004-11-28 Fernando Perez <fperez@colorado.edu>
3069 2004-11-28 Fernando Perez <fperez@colorado.edu>
3065
3070
3066 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3071 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3067 cache when empty lines were present.
3072 cache when empty lines were present.
3068
3073
3069 2004-11-24 Fernando Perez <fperez@colorado.edu>
3074 2004-11-24 Fernando Perez <fperez@colorado.edu>
3070
3075
3071 * IPython/usage.py (__doc__): document the re-activated threading
3076 * IPython/usage.py (__doc__): document the re-activated threading
3072 options for WX and GTK.
3077 options for WX and GTK.
3073
3078
3074 2004-11-23 Fernando Perez <fperez@colorado.edu>
3079 2004-11-23 Fernando Perez <fperez@colorado.edu>
3075
3080
3076 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3081 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3077 the -wthread and -gthread options, along with a new -tk one to try
3082 the -wthread and -gthread options, along with a new -tk one to try
3078 and coordinate Tk threading with wx/gtk. The tk support is very
3083 and coordinate Tk threading with wx/gtk. The tk support is very
3079 platform dependent, since it seems to require Tcl and Tk to be
3084 platform dependent, since it seems to require Tcl and Tk to be
3080 built with threads (Fedora1/2 appears NOT to have it, but in
3085 built with threads (Fedora1/2 appears NOT to have it, but in
3081 Prabhu's Debian boxes it works OK). But even with some Tk
3086 Prabhu's Debian boxes it works OK). But even with some Tk
3082 limitations, this is a great improvement.
3087 limitations, this is a great improvement.
3083
3088
3084 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3089 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3085 info in user prompts. Patch by Prabhu.
3090 info in user prompts. Patch by Prabhu.
3086
3091
3087 2004-11-18 Fernando Perez <fperez@colorado.edu>
3092 2004-11-18 Fernando Perez <fperez@colorado.edu>
3088
3093
3089 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3094 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3090 EOFErrors and bail, to avoid infinite loops if a non-terminating
3095 EOFErrors and bail, to avoid infinite loops if a non-terminating
3091 file is fed into ipython. Patch submitted in issue 19 by user,
3096 file is fed into ipython. Patch submitted in issue 19 by user,
3092 many thanks.
3097 many thanks.
3093
3098
3094 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3099 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3095 autoquote/parens in continuation prompts, which can cause lots of
3100 autoquote/parens in continuation prompts, which can cause lots of
3096 problems. Closes roundup issue 20.
3101 problems. Closes roundup issue 20.
3097
3102
3098 2004-11-17 Fernando Perez <fperez@colorado.edu>
3103 2004-11-17 Fernando Perez <fperez@colorado.edu>
3099
3104
3100 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3105 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3101 reported as debian bug #280505. I'm not sure my local changelog
3106 reported as debian bug #280505. I'm not sure my local changelog
3102 entry has the proper debian format (Jack?).
3107 entry has the proper debian format (Jack?).
3103
3108
3104 2004-11-08 *** Released version 0.6.4
3109 2004-11-08 *** Released version 0.6.4
3105
3110
3106 2004-11-08 Fernando Perez <fperez@colorado.edu>
3111 2004-11-08 Fernando Perez <fperez@colorado.edu>
3107
3112
3108 * IPython/iplib.py (init_readline): Fix exit message for Windows
3113 * IPython/iplib.py (init_readline): Fix exit message for Windows
3109 when readline is active. Thanks to a report by Eric Jones
3114 when readline is active. Thanks to a report by Eric Jones
3110 <eric-AT-enthought.com>.
3115 <eric-AT-enthought.com>.
3111
3116
3112 2004-11-07 Fernando Perez <fperez@colorado.edu>
3117 2004-11-07 Fernando Perez <fperez@colorado.edu>
3113
3118
3114 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3119 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3115 sometimes seen by win2k/cygwin users.
3120 sometimes seen by win2k/cygwin users.
3116
3121
3117 2004-11-06 Fernando Perez <fperez@colorado.edu>
3122 2004-11-06 Fernando Perez <fperez@colorado.edu>
3118
3123
3119 * IPython/iplib.py (interact): Change the handling of %Exit from
3124 * IPython/iplib.py (interact): Change the handling of %Exit from
3120 trying to propagate a SystemExit to an internal ipython flag.
3125 trying to propagate a SystemExit to an internal ipython flag.
3121 This is less elegant than using Python's exception mechanism, but
3126 This is less elegant than using Python's exception mechanism, but
3122 I can't get that to work reliably with threads, so under -pylab
3127 I can't get that to work reliably with threads, so under -pylab
3123 %Exit was hanging IPython. Cross-thread exception handling is
3128 %Exit was hanging IPython. Cross-thread exception handling is
3124 really a bitch. Thaks to a bug report by Stephen Walton
3129 really a bitch. Thaks to a bug report by Stephen Walton
3125 <stephen.walton-AT-csun.edu>.
3130 <stephen.walton-AT-csun.edu>.
3126
3131
3127 2004-11-04 Fernando Perez <fperez@colorado.edu>
3132 2004-11-04 Fernando Perez <fperez@colorado.edu>
3128
3133
3129 * IPython/iplib.py (raw_input_original): store a pointer to the
3134 * IPython/iplib.py (raw_input_original): store a pointer to the
3130 true raw_input to harden against code which can modify it
3135 true raw_input to harden against code which can modify it
3131 (wx.py.PyShell does this and would otherwise crash ipython).
3136 (wx.py.PyShell does this and would otherwise crash ipython).
3132 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3137 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3133
3138
3134 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3139 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3135 Ctrl-C problem, which does not mess up the input line.
3140 Ctrl-C problem, which does not mess up the input line.
3136
3141
3137 2004-11-03 Fernando Perez <fperez@colorado.edu>
3142 2004-11-03 Fernando Perez <fperez@colorado.edu>
3138
3143
3139 * IPython/Release.py: Changed licensing to BSD, in all files.
3144 * IPython/Release.py: Changed licensing to BSD, in all files.
3140 (name): lowercase name for tarball/RPM release.
3145 (name): lowercase name for tarball/RPM release.
3141
3146
3142 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3147 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3143 use throughout ipython.
3148 use throughout ipython.
3144
3149
3145 * IPython/Magic.py (Magic._ofind): Switch to using the new
3150 * IPython/Magic.py (Magic._ofind): Switch to using the new
3146 OInspect.getdoc() function.
3151 OInspect.getdoc() function.
3147
3152
3148 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3153 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3149 of the line currently being canceled via Ctrl-C. It's extremely
3154 of the line currently being canceled via Ctrl-C. It's extremely
3150 ugly, but I don't know how to do it better (the problem is one of
3155 ugly, but I don't know how to do it better (the problem is one of
3151 handling cross-thread exceptions).
3156 handling cross-thread exceptions).
3152
3157
3153 2004-10-28 Fernando Perez <fperez@colorado.edu>
3158 2004-10-28 Fernando Perez <fperez@colorado.edu>
3154
3159
3155 * IPython/Shell.py (signal_handler): add signal handlers to trap
3160 * IPython/Shell.py (signal_handler): add signal handlers to trap
3156 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3161 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3157 report by Francesc Alted.
3162 report by Francesc Alted.
3158
3163
3159 2004-10-21 Fernando Perez <fperez@colorado.edu>
3164 2004-10-21 Fernando Perez <fperez@colorado.edu>
3160
3165
3161 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3166 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3162 to % for pysh syntax extensions.
3167 to % for pysh syntax extensions.
3163
3168
3164 2004-10-09 Fernando Perez <fperez@colorado.edu>
3169 2004-10-09 Fernando Perez <fperez@colorado.edu>
3165
3170
3166 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3171 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3167 arrays to print a more useful summary, without calling str(arr).
3172 arrays to print a more useful summary, without calling str(arr).
3168 This avoids the problem of extremely lengthy computations which
3173 This avoids the problem of extremely lengthy computations which
3169 occur if arr is large, and appear to the user as a system lockup
3174 occur if arr is large, and appear to the user as a system lockup
3170 with 100% cpu activity. After a suggestion by Kristian Sandberg
3175 with 100% cpu activity. After a suggestion by Kristian Sandberg
3171 <Kristian.Sandberg@colorado.edu>.
3176 <Kristian.Sandberg@colorado.edu>.
3172 (Magic.__init__): fix bug in global magic escapes not being
3177 (Magic.__init__): fix bug in global magic escapes not being
3173 correctly set.
3178 correctly set.
3174
3179
3175 2004-10-08 Fernando Perez <fperez@colorado.edu>
3180 2004-10-08 Fernando Perez <fperez@colorado.edu>
3176
3181
3177 * IPython/Magic.py (__license__): change to absolute imports of
3182 * IPython/Magic.py (__license__): change to absolute imports of
3178 ipython's own internal packages, to start adapting to the absolute
3183 ipython's own internal packages, to start adapting to the absolute
3179 import requirement of PEP-328.
3184 import requirement of PEP-328.
3180
3185
3181 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3186 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3182 files, and standardize author/license marks through the Release
3187 files, and standardize author/license marks through the Release
3183 module instead of having per/file stuff (except for files with
3188 module instead of having per/file stuff (except for files with
3184 particular licenses, like the MIT/PSF-licensed codes).
3189 particular licenses, like the MIT/PSF-licensed codes).
3185
3190
3186 * IPython/Debugger.py: remove dead code for python 2.1
3191 * IPython/Debugger.py: remove dead code for python 2.1
3187
3192
3188 2004-10-04 Fernando Perez <fperez@colorado.edu>
3193 2004-10-04 Fernando Perez <fperez@colorado.edu>
3189
3194
3190 * IPython/iplib.py (ipmagic): New function for accessing magics
3195 * IPython/iplib.py (ipmagic): New function for accessing magics
3191 via a normal python function call.
3196 via a normal python function call.
3192
3197
3193 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3198 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3194 from '@' to '%', to accomodate the new @decorator syntax of python
3199 from '@' to '%', to accomodate the new @decorator syntax of python
3195 2.4.
3200 2.4.
3196
3201
3197 2004-09-29 Fernando Perez <fperez@colorado.edu>
3202 2004-09-29 Fernando Perez <fperez@colorado.edu>
3198
3203
3199 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3204 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3200 matplotlib.use to prevent running scripts which try to switch
3205 matplotlib.use to prevent running scripts which try to switch
3201 interactive backends from within ipython. This will just crash
3206 interactive backends from within ipython. This will just crash
3202 the python interpreter, so we can't allow it (but a detailed error
3207 the python interpreter, so we can't allow it (but a detailed error
3203 is given to the user).
3208 is given to the user).
3204
3209
3205 2004-09-28 Fernando Perez <fperez@colorado.edu>
3210 2004-09-28 Fernando Perez <fperez@colorado.edu>
3206
3211
3207 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3212 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3208 matplotlib-related fixes so that using @run with non-matplotlib
3213 matplotlib-related fixes so that using @run with non-matplotlib
3209 scripts doesn't pop up spurious plot windows. This requires
3214 scripts doesn't pop up spurious plot windows. This requires
3210 matplotlib >= 0.63, where I had to make some changes as well.
3215 matplotlib >= 0.63, where I had to make some changes as well.
3211
3216
3212 * IPython/ipmaker.py (make_IPython): update version requirement to
3217 * IPython/ipmaker.py (make_IPython): update version requirement to
3213 python 2.2.
3218 python 2.2.
3214
3219
3215 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3220 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3216 banner arg for embedded customization.
3221 banner arg for embedded customization.
3217
3222
3218 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3223 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3219 explicit uses of __IP as the IPython's instance name. Now things
3224 explicit uses of __IP as the IPython's instance name. Now things
3220 are properly handled via the shell.name value. The actual code
3225 are properly handled via the shell.name value. The actual code
3221 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3226 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3222 is much better than before. I'll clean things completely when the
3227 is much better than before. I'll clean things completely when the
3223 magic stuff gets a real overhaul.
3228 magic stuff gets a real overhaul.
3224
3229
3225 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3230 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3226 minor changes to debian dir.
3231 minor changes to debian dir.
3227
3232
3228 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3233 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3229 pointer to the shell itself in the interactive namespace even when
3234 pointer to the shell itself in the interactive namespace even when
3230 a user-supplied dict is provided. This is needed for embedding
3235 a user-supplied dict is provided. This is needed for embedding
3231 purposes (found by tests with Michel Sanner).
3236 purposes (found by tests with Michel Sanner).
3232
3237
3233 2004-09-27 Fernando Perez <fperez@colorado.edu>
3238 2004-09-27 Fernando Perez <fperez@colorado.edu>
3234
3239
3235 * IPython/UserConfig/ipythonrc: remove []{} from
3240 * IPython/UserConfig/ipythonrc: remove []{} from
3236 readline_remove_delims, so that things like [modname.<TAB> do
3241 readline_remove_delims, so that things like [modname.<TAB> do
3237 proper completion. This disables [].TAB, but that's a less common
3242 proper completion. This disables [].TAB, but that's a less common
3238 case than module names in list comprehensions, for example.
3243 case than module names in list comprehensions, for example.
3239 Thanks to a report by Andrea Riciputi.
3244 Thanks to a report by Andrea Riciputi.
3240
3245
3241 2004-09-09 Fernando Perez <fperez@colorado.edu>
3246 2004-09-09 Fernando Perez <fperez@colorado.edu>
3242
3247
3243 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3248 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3244 blocking problems in win32 and osx. Fix by John.
3249 blocking problems in win32 and osx. Fix by John.
3245
3250
3246 2004-09-08 Fernando Perez <fperez@colorado.edu>
3251 2004-09-08 Fernando Perez <fperez@colorado.edu>
3247
3252
3248 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3253 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3249 for Win32 and OSX. Fix by John Hunter.
3254 for Win32 and OSX. Fix by John Hunter.
3250
3255
3251 2004-08-30 *** Released version 0.6.3
3256 2004-08-30 *** Released version 0.6.3
3252
3257
3253 2004-08-30 Fernando Perez <fperez@colorado.edu>
3258 2004-08-30 Fernando Perez <fperez@colorado.edu>
3254
3259
3255 * setup.py (isfile): Add manpages to list of dependent files to be
3260 * setup.py (isfile): Add manpages to list of dependent files to be
3256 updated.
3261 updated.
3257
3262
3258 2004-08-27 Fernando Perez <fperez@colorado.edu>
3263 2004-08-27 Fernando Perez <fperez@colorado.edu>
3259
3264
3260 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3265 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3261 for now. They don't really work with standalone WX/GTK code
3266 for now. They don't really work with standalone WX/GTK code
3262 (though matplotlib IS working fine with both of those backends).
3267 (though matplotlib IS working fine with both of those backends).
3263 This will neeed much more testing. I disabled most things with
3268 This will neeed much more testing. I disabled most things with
3264 comments, so turning it back on later should be pretty easy.
3269 comments, so turning it back on later should be pretty easy.
3265
3270
3266 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3271 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3267 autocalling of expressions like r'foo', by modifying the line
3272 autocalling of expressions like r'foo', by modifying the line
3268 split regexp. Closes
3273 split regexp. Closes
3269 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3274 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3270 Riley <ipythonbugs-AT-sabi.net>.
3275 Riley <ipythonbugs-AT-sabi.net>.
3271 (InteractiveShell.mainloop): honor --nobanner with banner
3276 (InteractiveShell.mainloop): honor --nobanner with banner
3272 extensions.
3277 extensions.
3273
3278
3274 * IPython/Shell.py: Significant refactoring of all classes, so
3279 * IPython/Shell.py: Significant refactoring of all classes, so
3275 that we can really support ALL matplotlib backends and threading
3280 that we can really support ALL matplotlib backends and threading
3276 models (John spotted a bug with Tk which required this). Now we
3281 models (John spotted a bug with Tk which required this). Now we
3277 should support single-threaded, WX-threads and GTK-threads, both
3282 should support single-threaded, WX-threads and GTK-threads, both
3278 for generic code and for matplotlib.
3283 for generic code and for matplotlib.
3279
3284
3280 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3285 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3281 -pylab, to simplify things for users. Will also remove the pylab
3286 -pylab, to simplify things for users. Will also remove the pylab
3282 profile, since now all of matplotlib configuration is directly
3287 profile, since now all of matplotlib configuration is directly
3283 handled here. This also reduces startup time.
3288 handled here. This also reduces startup time.
3284
3289
3285 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3290 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3286 shell wasn't being correctly called. Also in IPShellWX.
3291 shell wasn't being correctly called. Also in IPShellWX.
3287
3292
3288 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3293 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3289 fine-tune banner.
3294 fine-tune banner.
3290
3295
3291 * IPython/numutils.py (spike): Deprecate these spike functions,
3296 * IPython/numutils.py (spike): Deprecate these spike functions,
3292 delete (long deprecated) gnuplot_exec handler.
3297 delete (long deprecated) gnuplot_exec handler.
3293
3298
3294 2004-08-26 Fernando Perez <fperez@colorado.edu>
3299 2004-08-26 Fernando Perez <fperez@colorado.edu>
3295
3300
3296 * ipython.1: Update for threading options, plus some others which
3301 * ipython.1: Update for threading options, plus some others which
3297 were missing.
3302 were missing.
3298
3303
3299 * IPython/ipmaker.py (__call__): Added -wthread option for
3304 * IPython/ipmaker.py (__call__): Added -wthread option for
3300 wxpython thread handling. Make sure threading options are only
3305 wxpython thread handling. Make sure threading options are only
3301 valid at the command line.
3306 valid at the command line.
3302
3307
3303 * scripts/ipython: moved shell selection into a factory function
3308 * scripts/ipython: moved shell selection into a factory function
3304 in Shell.py, to keep the starter script to a minimum.
3309 in Shell.py, to keep the starter script to a minimum.
3305
3310
3306 2004-08-25 Fernando Perez <fperez@colorado.edu>
3311 2004-08-25 Fernando Perez <fperez@colorado.edu>
3307
3312
3308 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3313 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3309 John. Along with some recent changes he made to matplotlib, the
3314 John. Along with some recent changes he made to matplotlib, the
3310 next versions of both systems should work very well together.
3315 next versions of both systems should work very well together.
3311
3316
3312 2004-08-24 Fernando Perez <fperez@colorado.edu>
3317 2004-08-24 Fernando Perez <fperez@colorado.edu>
3313
3318
3314 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3319 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3315 tried to switch the profiling to using hotshot, but I'm getting
3320 tried to switch the profiling to using hotshot, but I'm getting
3316 strange errors from prof.runctx() there. I may be misreading the
3321 strange errors from prof.runctx() there. I may be misreading the
3317 docs, but it looks weird. For now the profiling code will
3322 docs, but it looks weird. For now the profiling code will
3318 continue to use the standard profiler.
3323 continue to use the standard profiler.
3319
3324
3320 2004-08-23 Fernando Perez <fperez@colorado.edu>
3325 2004-08-23 Fernando Perez <fperez@colorado.edu>
3321
3326
3322 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3327 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3323 threaded shell, by John Hunter. It's not quite ready yet, but
3328 threaded shell, by John Hunter. It's not quite ready yet, but
3324 close.
3329 close.
3325
3330
3326 2004-08-22 Fernando Perez <fperez@colorado.edu>
3331 2004-08-22 Fernando Perez <fperez@colorado.edu>
3327
3332
3328 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3333 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3329 in Magic and ultraTB.
3334 in Magic and ultraTB.
3330
3335
3331 * ipython.1: document threading options in manpage.
3336 * ipython.1: document threading options in manpage.
3332
3337
3333 * scripts/ipython: Changed name of -thread option to -gthread,
3338 * scripts/ipython: Changed name of -thread option to -gthread,
3334 since this is GTK specific. I want to leave the door open for a
3339 since this is GTK specific. I want to leave the door open for a
3335 -wthread option for WX, which will most likely be necessary. This
3340 -wthread option for WX, which will most likely be necessary. This
3336 change affects usage and ipmaker as well.
3341 change affects usage and ipmaker as well.
3337
3342
3338 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3343 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3339 handle the matplotlib shell issues. Code by John Hunter
3344 handle the matplotlib shell issues. Code by John Hunter
3340 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3345 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3341 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3346 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3342 broken (and disabled for end users) for now, but it puts the
3347 broken (and disabled for end users) for now, but it puts the
3343 infrastructure in place.
3348 infrastructure in place.
3344
3349
3345 2004-08-21 Fernando Perez <fperez@colorado.edu>
3350 2004-08-21 Fernando Perez <fperez@colorado.edu>
3346
3351
3347 * ipythonrc-pylab: Add matplotlib support.
3352 * ipythonrc-pylab: Add matplotlib support.
3348
3353
3349 * matplotlib_config.py: new files for matplotlib support, part of
3354 * matplotlib_config.py: new files for matplotlib support, part of
3350 the pylab profile.
3355 the pylab profile.
3351
3356
3352 * IPython/usage.py (__doc__): documented the threading options.
3357 * IPython/usage.py (__doc__): documented the threading options.
3353
3358
3354 2004-08-20 Fernando Perez <fperez@colorado.edu>
3359 2004-08-20 Fernando Perez <fperez@colorado.edu>
3355
3360
3356 * ipython: Modified the main calling routine to handle the -thread
3361 * ipython: Modified the main calling routine to handle the -thread
3357 and -mpthread options. This needs to be done as a top-level hack,
3362 and -mpthread options. This needs to be done as a top-level hack,
3358 because it determines which class to instantiate for IPython
3363 because it determines which class to instantiate for IPython
3359 itself.
3364 itself.
3360
3365
3361 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3366 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3362 classes to support multithreaded GTK operation without blocking,
3367 classes to support multithreaded GTK operation without blocking,
3363 and matplotlib with all backends. This is a lot of still very
3368 and matplotlib with all backends. This is a lot of still very
3364 experimental code, and threads are tricky. So it may still have a
3369 experimental code, and threads are tricky. So it may still have a
3365 few rough edges... This code owes a lot to
3370 few rough edges... This code owes a lot to
3366 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3371 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3367 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3372 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3368 to John Hunter for all the matplotlib work.
3373 to John Hunter for all the matplotlib work.
3369
3374
3370 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3375 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3371 options for gtk thread and matplotlib support.
3376 options for gtk thread and matplotlib support.
3372
3377
3373 2004-08-16 Fernando Perez <fperez@colorado.edu>
3378 2004-08-16 Fernando Perez <fperez@colorado.edu>
3374
3379
3375 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3380 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3376 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3381 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3377 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3382 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3378
3383
3379 2004-08-11 Fernando Perez <fperez@colorado.edu>
3384 2004-08-11 Fernando Perez <fperez@colorado.edu>
3380
3385
3381 * setup.py (isfile): Fix build so documentation gets updated for
3386 * setup.py (isfile): Fix build so documentation gets updated for
3382 rpms (it was only done for .tgz builds).
3387 rpms (it was only done for .tgz builds).
3383
3388
3384 2004-08-10 Fernando Perez <fperez@colorado.edu>
3389 2004-08-10 Fernando Perez <fperez@colorado.edu>
3385
3390
3386 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3391 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3387
3392
3388 * iplib.py : Silence syntax error exceptions in tab-completion.
3393 * iplib.py : Silence syntax error exceptions in tab-completion.
3389
3394
3390 2004-08-05 Fernando Perez <fperez@colorado.edu>
3395 2004-08-05 Fernando Perez <fperez@colorado.edu>
3391
3396
3392 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3397 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3393 'color off' mark for continuation prompts. This was causing long
3398 'color off' mark for continuation prompts. This was causing long
3394 continuation lines to mis-wrap.
3399 continuation lines to mis-wrap.
3395
3400
3396 2004-08-01 Fernando Perez <fperez@colorado.edu>
3401 2004-08-01 Fernando Perez <fperez@colorado.edu>
3397
3402
3398 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3403 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3399 for building ipython to be a parameter. All this is necessary
3404 for building ipython to be a parameter. All this is necessary
3400 right now to have a multithreaded version, but this insane
3405 right now to have a multithreaded version, but this insane
3401 non-design will be cleaned up soon. For now, it's a hack that
3406 non-design will be cleaned up soon. For now, it's a hack that
3402 works.
3407 works.
3403
3408
3404 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3409 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3405 args in various places. No bugs so far, but it's a dangerous
3410 args in various places. No bugs so far, but it's a dangerous
3406 practice.
3411 practice.
3407
3412
3408 2004-07-31 Fernando Perez <fperez@colorado.edu>
3413 2004-07-31 Fernando Perez <fperez@colorado.edu>
3409
3414
3410 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3415 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3411 fix completion of files with dots in their names under most
3416 fix completion of files with dots in their names under most
3412 profiles (pysh was OK because the completion order is different).
3417 profiles (pysh was OK because the completion order is different).
3413
3418
3414 2004-07-27 Fernando Perez <fperez@colorado.edu>
3419 2004-07-27 Fernando Perez <fperez@colorado.edu>
3415
3420
3416 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3421 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3417 keywords manually, b/c the one in keyword.py was removed in python
3422 keywords manually, b/c the one in keyword.py was removed in python
3418 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3423 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3419 This is NOT a bug under python 2.3 and earlier.
3424 This is NOT a bug under python 2.3 and earlier.
3420
3425
3421 2004-07-26 Fernando Perez <fperez@colorado.edu>
3426 2004-07-26 Fernando Perez <fperez@colorado.edu>
3422
3427
3423 * IPython/ultraTB.py (VerboseTB.text): Add another
3428 * IPython/ultraTB.py (VerboseTB.text): Add another
3424 linecache.checkcache() call to try to prevent inspect.py from
3429 linecache.checkcache() call to try to prevent inspect.py from
3425 crashing under python 2.3. I think this fixes
3430 crashing under python 2.3. I think this fixes
3426 http://www.scipy.net/roundup/ipython/issue17.
3431 http://www.scipy.net/roundup/ipython/issue17.
3427
3432
3428 2004-07-26 *** Released version 0.6.2
3433 2004-07-26 *** Released version 0.6.2
3429
3434
3430 2004-07-26 Fernando Perez <fperez@colorado.edu>
3435 2004-07-26 Fernando Perez <fperez@colorado.edu>
3431
3436
3432 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3437 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3433 fail for any number.
3438 fail for any number.
3434 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3439 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3435 empty bookmarks.
3440 empty bookmarks.
3436
3441
3437 2004-07-26 *** Released version 0.6.1
3442 2004-07-26 *** Released version 0.6.1
3438
3443
3439 2004-07-26 Fernando Perez <fperez@colorado.edu>
3444 2004-07-26 Fernando Perez <fperez@colorado.edu>
3440
3445
3441 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3446 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3442
3447
3443 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3448 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3444 escaping '()[]{}' in filenames.
3449 escaping '()[]{}' in filenames.
3445
3450
3446 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3451 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3447 Python 2.2 users who lack a proper shlex.split.
3452 Python 2.2 users who lack a proper shlex.split.
3448
3453
3449 2004-07-19 Fernando Perez <fperez@colorado.edu>
3454 2004-07-19 Fernando Perez <fperez@colorado.edu>
3450
3455
3451 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3456 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3452 for reading readline's init file. I follow the normal chain:
3457 for reading readline's init file. I follow the normal chain:
3453 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3458 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3454 report by Mike Heeter. This closes
3459 report by Mike Heeter. This closes
3455 http://www.scipy.net/roundup/ipython/issue16.
3460 http://www.scipy.net/roundup/ipython/issue16.
3456
3461
3457 2004-07-18 Fernando Perez <fperez@colorado.edu>
3462 2004-07-18 Fernando Perez <fperez@colorado.edu>
3458
3463
3459 * IPython/iplib.py (__init__): Add better handling of '\' under
3464 * IPython/iplib.py (__init__): Add better handling of '\' under
3460 Win32 for filenames. After a patch by Ville.
3465 Win32 for filenames. After a patch by Ville.
3461
3466
3462 2004-07-17 Fernando Perez <fperez@colorado.edu>
3467 2004-07-17 Fernando Perez <fperez@colorado.edu>
3463
3468
3464 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3469 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3465 autocalling would be triggered for 'foo is bar' if foo is
3470 autocalling would be triggered for 'foo is bar' if foo is
3466 callable. I also cleaned up the autocall detection code to use a
3471 callable. I also cleaned up the autocall detection code to use a
3467 regexp, which is faster. Bug reported by Alexander Schmolck.
3472 regexp, which is faster. Bug reported by Alexander Schmolck.
3468
3473
3469 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3474 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3470 '?' in them would confuse the help system. Reported by Alex
3475 '?' in them would confuse the help system. Reported by Alex
3471 Schmolck.
3476 Schmolck.
3472
3477
3473 2004-07-16 Fernando Perez <fperez@colorado.edu>
3478 2004-07-16 Fernando Perez <fperez@colorado.edu>
3474
3479
3475 * IPython/GnuplotInteractive.py (__all__): added plot2.
3480 * IPython/GnuplotInteractive.py (__all__): added plot2.
3476
3481
3477 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3482 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3478 plotting dictionaries, lists or tuples of 1d arrays.
3483 plotting dictionaries, lists or tuples of 1d arrays.
3479
3484
3480 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3485 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3481 optimizations.
3486 optimizations.
3482
3487
3483 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3488 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3484 the information which was there from Janko's original IPP code:
3489 the information which was there from Janko's original IPP code:
3485
3490
3486 03.05.99 20:53 porto.ifm.uni-kiel.de
3491 03.05.99 20:53 porto.ifm.uni-kiel.de
3487 --Started changelog.
3492 --Started changelog.
3488 --make clear do what it say it does
3493 --make clear do what it say it does
3489 --added pretty output of lines from inputcache
3494 --added pretty output of lines from inputcache
3490 --Made Logger a mixin class, simplifies handling of switches
3495 --Made Logger a mixin class, simplifies handling of switches
3491 --Added own completer class. .string<TAB> expands to last history
3496 --Added own completer class. .string<TAB> expands to last history
3492 line which starts with string. The new expansion is also present
3497 line which starts with string. The new expansion is also present
3493 with Ctrl-r from the readline library. But this shows, who this
3498 with Ctrl-r from the readline library. But this shows, who this
3494 can be done for other cases.
3499 can be done for other cases.
3495 --Added convention that all shell functions should accept a
3500 --Added convention that all shell functions should accept a
3496 parameter_string This opens the door for different behaviour for
3501 parameter_string This opens the door for different behaviour for
3497 each function. @cd is a good example of this.
3502 each function. @cd is a good example of this.
3498
3503
3499 04.05.99 12:12 porto.ifm.uni-kiel.de
3504 04.05.99 12:12 porto.ifm.uni-kiel.de
3500 --added logfile rotation
3505 --added logfile rotation
3501 --added new mainloop method which freezes first the namespace
3506 --added new mainloop method which freezes first the namespace
3502
3507
3503 07.05.99 21:24 porto.ifm.uni-kiel.de
3508 07.05.99 21:24 porto.ifm.uni-kiel.de
3504 --added the docreader classes. Now there is a help system.
3509 --added the docreader classes. Now there is a help system.
3505 -This is only a first try. Currently it's not easy to put new
3510 -This is only a first try. Currently it's not easy to put new
3506 stuff in the indices. But this is the way to go. Info would be
3511 stuff in the indices. But this is the way to go. Info would be
3507 better, but HTML is every where and not everybody has an info
3512 better, but HTML is every where and not everybody has an info
3508 system installed and it's not so easy to change html-docs to info.
3513 system installed and it's not so easy to change html-docs to info.
3509 --added global logfile option
3514 --added global logfile option
3510 --there is now a hook for object inspection method pinfo needs to
3515 --there is now a hook for object inspection method pinfo needs to
3511 be provided for this. Can be reached by two '??'.
3516 be provided for this. Can be reached by two '??'.
3512
3517
3513 08.05.99 20:51 porto.ifm.uni-kiel.de
3518 08.05.99 20:51 porto.ifm.uni-kiel.de
3514 --added a README
3519 --added a README
3515 --bug in rc file. Something has changed so functions in the rc
3520 --bug in rc file. Something has changed so functions in the rc
3516 file need to reference the shell and not self. Not clear if it's a
3521 file need to reference the shell and not self. Not clear if it's a
3517 bug or feature.
3522 bug or feature.
3518 --changed rc file for new behavior
3523 --changed rc file for new behavior
3519
3524
3520 2004-07-15 Fernando Perez <fperez@colorado.edu>
3525 2004-07-15 Fernando Perez <fperez@colorado.edu>
3521
3526
3522 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3527 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3523 cache was falling out of sync in bizarre manners when multi-line
3528 cache was falling out of sync in bizarre manners when multi-line
3524 input was present. Minor optimizations and cleanup.
3529 input was present. Minor optimizations and cleanup.
3525
3530
3526 (Logger): Remove old Changelog info for cleanup. This is the
3531 (Logger): Remove old Changelog info for cleanup. This is the
3527 information which was there from Janko's original code:
3532 information which was there from Janko's original code:
3528
3533
3529 Changes to Logger: - made the default log filename a parameter
3534 Changes to Logger: - made the default log filename a parameter
3530
3535
3531 - put a check for lines beginning with !@? in log(). Needed
3536 - put a check for lines beginning with !@? in log(). Needed
3532 (even if the handlers properly log their lines) for mid-session
3537 (even if the handlers properly log their lines) for mid-session
3533 logging activation to work properly. Without this, lines logged
3538 logging activation to work properly. Without this, lines logged
3534 in mid session, which get read from the cache, would end up
3539 in mid session, which get read from the cache, would end up
3535 'bare' (with !@? in the open) in the log. Now they are caught
3540 'bare' (with !@? in the open) in the log. Now they are caught
3536 and prepended with a #.
3541 and prepended with a #.
3537
3542
3538 * IPython/iplib.py (InteractiveShell.init_readline): added check
3543 * IPython/iplib.py (InteractiveShell.init_readline): added check
3539 in case MagicCompleter fails to be defined, so we don't crash.
3544 in case MagicCompleter fails to be defined, so we don't crash.
3540
3545
3541 2004-07-13 Fernando Perez <fperez@colorado.edu>
3546 2004-07-13 Fernando Perez <fperez@colorado.edu>
3542
3547
3543 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3548 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3544 of EPS if the requested filename ends in '.eps'.
3549 of EPS if the requested filename ends in '.eps'.
3545
3550
3546 2004-07-04 Fernando Perez <fperez@colorado.edu>
3551 2004-07-04 Fernando Perez <fperez@colorado.edu>
3547
3552
3548 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3553 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3549 escaping of quotes when calling the shell.
3554 escaping of quotes when calling the shell.
3550
3555
3551 2004-07-02 Fernando Perez <fperez@colorado.edu>
3556 2004-07-02 Fernando Perez <fperez@colorado.edu>
3552
3557
3553 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3558 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3554 gettext not working because we were clobbering '_'. Fixes
3559 gettext not working because we were clobbering '_'. Fixes
3555 http://www.scipy.net/roundup/ipython/issue6.
3560 http://www.scipy.net/roundup/ipython/issue6.
3556
3561
3557 2004-07-01 Fernando Perez <fperez@colorado.edu>
3562 2004-07-01 Fernando Perez <fperez@colorado.edu>
3558
3563
3559 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3564 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3560 into @cd. Patch by Ville.
3565 into @cd. Patch by Ville.
3561
3566
3562 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3567 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3563 new function to store things after ipmaker runs. Patch by Ville.
3568 new function to store things after ipmaker runs. Patch by Ville.
3564 Eventually this will go away once ipmaker is removed and the class
3569 Eventually this will go away once ipmaker is removed and the class
3565 gets cleaned up, but for now it's ok. Key functionality here is
3570 gets cleaned up, but for now it's ok. Key functionality here is
3566 the addition of the persistent storage mechanism, a dict for
3571 the addition of the persistent storage mechanism, a dict for
3567 keeping data across sessions (for now just bookmarks, but more can
3572 keeping data across sessions (for now just bookmarks, but more can
3568 be implemented later).
3573 be implemented later).
3569
3574
3570 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3575 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3571 persistent across sections. Patch by Ville, I modified it
3576 persistent across sections. Patch by Ville, I modified it
3572 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3577 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3573 added a '-l' option to list all bookmarks.
3578 added a '-l' option to list all bookmarks.
3574
3579
3575 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3580 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3576 center for cleanup. Registered with atexit.register(). I moved
3581 center for cleanup. Registered with atexit.register(). I moved
3577 here the old exit_cleanup(). After a patch by Ville.
3582 here the old exit_cleanup(). After a patch by Ville.
3578
3583
3579 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3584 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3580 characters in the hacked shlex_split for python 2.2.
3585 characters in the hacked shlex_split for python 2.2.
3581
3586
3582 * IPython/iplib.py (file_matches): more fixes to filenames with
3587 * IPython/iplib.py (file_matches): more fixes to filenames with
3583 whitespace in them. It's not perfect, but limitations in python's
3588 whitespace in them. It's not perfect, but limitations in python's
3584 readline make it impossible to go further.
3589 readline make it impossible to go further.
3585
3590
3586 2004-06-29 Fernando Perez <fperez@colorado.edu>
3591 2004-06-29 Fernando Perez <fperez@colorado.edu>
3587
3592
3588 * IPython/iplib.py (file_matches): escape whitespace correctly in
3593 * IPython/iplib.py (file_matches): escape whitespace correctly in
3589 filename completions. Bug reported by Ville.
3594 filename completions. Bug reported by Ville.
3590
3595
3591 2004-06-28 Fernando Perez <fperez@colorado.edu>
3596 2004-06-28 Fernando Perez <fperez@colorado.edu>
3592
3597
3593 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3598 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3594 the history file will be called 'history-PROFNAME' (or just
3599 the history file will be called 'history-PROFNAME' (or just
3595 'history' if no profile is loaded). I was getting annoyed at
3600 'history' if no profile is loaded). I was getting annoyed at
3596 getting my Numerical work history clobbered by pysh sessions.
3601 getting my Numerical work history clobbered by pysh sessions.
3597
3602
3598 * IPython/iplib.py (InteractiveShell.__init__): Internal
3603 * IPython/iplib.py (InteractiveShell.__init__): Internal
3599 getoutputerror() function so that we can honor the system_verbose
3604 getoutputerror() function so that we can honor the system_verbose
3600 flag for _all_ system calls. I also added escaping of #
3605 flag for _all_ system calls. I also added escaping of #
3601 characters here to avoid confusing Itpl.
3606 characters here to avoid confusing Itpl.
3602
3607
3603 * IPython/Magic.py (shlex_split): removed call to shell in
3608 * IPython/Magic.py (shlex_split): removed call to shell in
3604 parse_options and replaced it with shlex.split(). The annoying
3609 parse_options and replaced it with shlex.split(). The annoying
3605 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3610 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3606 to backport it from 2.3, with several frail hacks (the shlex
3611 to backport it from 2.3, with several frail hacks (the shlex
3607 module is rather limited in 2.2). Thanks to a suggestion by Ville
3612 module is rather limited in 2.2). Thanks to a suggestion by Ville
3608 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3613 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3609 problem.
3614 problem.
3610
3615
3611 (Magic.magic_system_verbose): new toggle to print the actual
3616 (Magic.magic_system_verbose): new toggle to print the actual
3612 system calls made by ipython. Mainly for debugging purposes.
3617 system calls made by ipython. Mainly for debugging purposes.
3613
3618
3614 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3619 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3615 doesn't support persistence. Reported (and fix suggested) by
3620 doesn't support persistence. Reported (and fix suggested) by
3616 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3621 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3617
3622
3618 2004-06-26 Fernando Perez <fperez@colorado.edu>
3623 2004-06-26 Fernando Perez <fperez@colorado.edu>
3619
3624
3620 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3625 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3621 continue prompts.
3626 continue prompts.
3622
3627
3623 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3628 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3624 function (basically a big docstring) and a few more things here to
3629 function (basically a big docstring) and a few more things here to
3625 speedup startup. pysh.py is now very lightweight. We want because
3630 speedup startup. pysh.py is now very lightweight. We want because
3626 it gets execfile'd, while InterpreterExec gets imported, so
3631 it gets execfile'd, while InterpreterExec gets imported, so
3627 byte-compilation saves time.
3632 byte-compilation saves time.
3628
3633
3629 2004-06-25 Fernando Perez <fperez@colorado.edu>
3634 2004-06-25 Fernando Perez <fperez@colorado.edu>
3630
3635
3631 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3636 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3632 -NUM', which was recently broken.
3637 -NUM', which was recently broken.
3633
3638
3634 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3639 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3635 in multi-line input (but not !!, which doesn't make sense there).
3640 in multi-line input (but not !!, which doesn't make sense there).
3636
3641
3637 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3642 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3638 It's just too useful, and people can turn it off in the less
3643 It's just too useful, and people can turn it off in the less
3639 common cases where it's a problem.
3644 common cases where it's a problem.
3640
3645
3641 2004-06-24 Fernando Perez <fperez@colorado.edu>
3646 2004-06-24 Fernando Perez <fperez@colorado.edu>
3642
3647
3643 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3648 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3644 special syntaxes (like alias calling) is now allied in multi-line
3649 special syntaxes (like alias calling) is now allied in multi-line
3645 input. This is still _very_ experimental, but it's necessary for
3650 input. This is still _very_ experimental, but it's necessary for
3646 efficient shell usage combining python looping syntax with system
3651 efficient shell usage combining python looping syntax with system
3647 calls. For now it's restricted to aliases, I don't think it
3652 calls. For now it's restricted to aliases, I don't think it
3648 really even makes sense to have this for magics.
3653 really even makes sense to have this for magics.
3649
3654
3650 2004-06-23 Fernando Perez <fperez@colorado.edu>
3655 2004-06-23 Fernando Perez <fperez@colorado.edu>
3651
3656
3652 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3657 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3653 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3658 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3654
3659
3655 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3660 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3656 extensions under Windows (after code sent by Gary Bishop). The
3661 extensions under Windows (after code sent by Gary Bishop). The
3657 extensions considered 'executable' are stored in IPython's rc
3662 extensions considered 'executable' are stored in IPython's rc
3658 structure as win_exec_ext.
3663 structure as win_exec_ext.
3659
3664
3660 * IPython/genutils.py (shell): new function, like system() but
3665 * IPython/genutils.py (shell): new function, like system() but
3661 without return value. Very useful for interactive shell work.
3666 without return value. Very useful for interactive shell work.
3662
3667
3663 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3668 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3664 delete aliases.
3669 delete aliases.
3665
3670
3666 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3671 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3667 sure that the alias table doesn't contain python keywords.
3672 sure that the alias table doesn't contain python keywords.
3668
3673
3669 2004-06-21 Fernando Perez <fperez@colorado.edu>
3674 2004-06-21 Fernando Perez <fperez@colorado.edu>
3670
3675
3671 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3676 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3672 non-existent items are found in $PATH. Reported by Thorsten.
3677 non-existent items are found in $PATH. Reported by Thorsten.
3673
3678
3674 2004-06-20 Fernando Perez <fperez@colorado.edu>
3679 2004-06-20 Fernando Perez <fperez@colorado.edu>
3675
3680
3676 * IPython/iplib.py (complete): modified the completer so that the
3681 * IPython/iplib.py (complete): modified the completer so that the
3677 order of priorities can be easily changed at runtime.
3682 order of priorities can be easily changed at runtime.
3678
3683
3679 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3684 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3680 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3685 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3681
3686
3682 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3687 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3683 expand Python variables prepended with $ in all system calls. The
3688 expand Python variables prepended with $ in all system calls. The
3684 same was done to InteractiveShell.handle_shell_escape. Now all
3689 same was done to InteractiveShell.handle_shell_escape. Now all
3685 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3690 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3686 expansion of python variables and expressions according to the
3691 expansion of python variables and expressions according to the
3687 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3692 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3688
3693
3689 Though PEP-215 has been rejected, a similar (but simpler) one
3694 Though PEP-215 has been rejected, a similar (but simpler) one
3690 seems like it will go into Python 2.4, PEP-292 -
3695 seems like it will go into Python 2.4, PEP-292 -
3691 http://www.python.org/peps/pep-0292.html.
3696 http://www.python.org/peps/pep-0292.html.
3692
3697
3693 I'll keep the full syntax of PEP-215, since IPython has since the
3698 I'll keep the full syntax of PEP-215, since IPython has since the
3694 start used Ka-Ping Yee's reference implementation discussed there
3699 start used Ka-Ping Yee's reference implementation discussed there
3695 (Itpl), and I actually like the powerful semantics it offers.
3700 (Itpl), and I actually like the powerful semantics it offers.
3696
3701
3697 In order to access normal shell variables, the $ has to be escaped
3702 In order to access normal shell variables, the $ has to be escaped
3698 via an extra $. For example:
3703 via an extra $. For example:
3699
3704
3700 In [7]: PATH='a python variable'
3705 In [7]: PATH='a python variable'
3701
3706
3702 In [8]: !echo $PATH
3707 In [8]: !echo $PATH
3703 a python variable
3708 a python variable
3704
3709
3705 In [9]: !echo $$PATH
3710 In [9]: !echo $$PATH
3706 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3711 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3707
3712
3708 (Magic.parse_options): escape $ so the shell doesn't evaluate
3713 (Magic.parse_options): escape $ so the shell doesn't evaluate
3709 things prematurely.
3714 things prematurely.
3710
3715
3711 * IPython/iplib.py (InteractiveShell.call_alias): added the
3716 * IPython/iplib.py (InteractiveShell.call_alias): added the
3712 ability for aliases to expand python variables via $.
3717 ability for aliases to expand python variables via $.
3713
3718
3714 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3719 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3715 system, now there's a @rehash/@rehashx pair of magics. These work
3720 system, now there's a @rehash/@rehashx pair of magics. These work
3716 like the csh rehash command, and can be invoked at any time. They
3721 like the csh rehash command, and can be invoked at any time. They
3717 build a table of aliases to everything in the user's $PATH
3722 build a table of aliases to everything in the user's $PATH
3718 (@rehash uses everything, @rehashx is slower but only adds
3723 (@rehash uses everything, @rehashx is slower but only adds
3719 executable files). With this, the pysh.py-based shell profile can
3724 executable files). With this, the pysh.py-based shell profile can
3720 now simply call rehash upon startup, and full access to all
3725 now simply call rehash upon startup, and full access to all
3721 programs in the user's path is obtained.
3726 programs in the user's path is obtained.
3722
3727
3723 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3728 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3724 functionality is now fully in place. I removed the old dynamic
3729 functionality is now fully in place. I removed the old dynamic
3725 code generation based approach, in favor of a much lighter one
3730 code generation based approach, in favor of a much lighter one
3726 based on a simple dict. The advantage is that this allows me to
3731 based on a simple dict. The advantage is that this allows me to
3727 now have thousands of aliases with negligible cost (unthinkable
3732 now have thousands of aliases with negligible cost (unthinkable
3728 with the old system).
3733 with the old system).
3729
3734
3730 2004-06-19 Fernando Perez <fperez@colorado.edu>
3735 2004-06-19 Fernando Perez <fperez@colorado.edu>
3731
3736
3732 * IPython/iplib.py (__init__): extended MagicCompleter class to
3737 * IPython/iplib.py (__init__): extended MagicCompleter class to
3733 also complete (last in priority) on user aliases.
3738 also complete (last in priority) on user aliases.
3734
3739
3735 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3740 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3736 call to eval.
3741 call to eval.
3737 (ItplNS.__init__): Added a new class which functions like Itpl,
3742 (ItplNS.__init__): Added a new class which functions like Itpl,
3738 but allows configuring the namespace for the evaluation to occur
3743 but allows configuring the namespace for the evaluation to occur
3739 in.
3744 in.
3740
3745
3741 2004-06-18 Fernando Perez <fperez@colorado.edu>
3746 2004-06-18 Fernando Perez <fperez@colorado.edu>
3742
3747
3743 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3748 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3744 better message when 'exit' or 'quit' are typed (a common newbie
3749 better message when 'exit' or 'quit' are typed (a common newbie
3745 confusion).
3750 confusion).
3746
3751
3747 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3752 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3748 check for Windows users.
3753 check for Windows users.
3749
3754
3750 * IPython/iplib.py (InteractiveShell.user_setup): removed
3755 * IPython/iplib.py (InteractiveShell.user_setup): removed
3751 disabling of colors for Windows. I'll test at runtime and issue a
3756 disabling of colors for Windows. I'll test at runtime and issue a
3752 warning if Gary's readline isn't found, as to nudge users to
3757 warning if Gary's readline isn't found, as to nudge users to
3753 download it.
3758 download it.
3754
3759
3755 2004-06-16 Fernando Perez <fperez@colorado.edu>
3760 2004-06-16 Fernando Perez <fperez@colorado.edu>
3756
3761
3757 * IPython/genutils.py (Stream.__init__): changed to print errors
3762 * IPython/genutils.py (Stream.__init__): changed to print errors
3758 to sys.stderr. I had a circular dependency here. Now it's
3763 to sys.stderr. I had a circular dependency here. Now it's
3759 possible to run ipython as IDLE's shell (consider this pre-alpha,
3764 possible to run ipython as IDLE's shell (consider this pre-alpha,
3760 since true stdout things end up in the starting terminal instead
3765 since true stdout things end up in the starting terminal instead
3761 of IDLE's out).
3766 of IDLE's out).
3762
3767
3763 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3768 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3764 users who haven't # updated their prompt_in2 definitions. Remove
3769 users who haven't # updated their prompt_in2 definitions. Remove
3765 eventually.
3770 eventually.
3766 (multiple_replace): added credit to original ASPN recipe.
3771 (multiple_replace): added credit to original ASPN recipe.
3767
3772
3768 2004-06-15 Fernando Perez <fperez@colorado.edu>
3773 2004-06-15 Fernando Perez <fperez@colorado.edu>
3769
3774
3770 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3775 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3771 list of auto-defined aliases.
3776 list of auto-defined aliases.
3772
3777
3773 2004-06-13 Fernando Perez <fperez@colorado.edu>
3778 2004-06-13 Fernando Perez <fperez@colorado.edu>
3774
3779
3775 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3780 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3776 install was really requested (so setup.py can be used for other
3781 install was really requested (so setup.py can be used for other
3777 things under Windows).
3782 things under Windows).
3778
3783
3779 2004-06-10 Fernando Perez <fperez@colorado.edu>
3784 2004-06-10 Fernando Perez <fperez@colorado.edu>
3780
3785
3781 * IPython/Logger.py (Logger.create_log): Manually remove any old
3786 * IPython/Logger.py (Logger.create_log): Manually remove any old
3782 backup, since os.remove may fail under Windows. Fixes bug
3787 backup, since os.remove may fail under Windows. Fixes bug
3783 reported by Thorsten.
3788 reported by Thorsten.
3784
3789
3785 2004-06-09 Fernando Perez <fperez@colorado.edu>
3790 2004-06-09 Fernando Perez <fperez@colorado.edu>
3786
3791
3787 * examples/example-embed.py: fixed all references to %n (replaced
3792 * examples/example-embed.py: fixed all references to %n (replaced
3788 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3793 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3789 for all examples and the manual as well.
3794 for all examples and the manual as well.
3790
3795
3791 2004-06-08 Fernando Perez <fperez@colorado.edu>
3796 2004-06-08 Fernando Perez <fperez@colorado.edu>
3792
3797
3793 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3798 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3794 alignment and color management. All 3 prompt subsystems now
3799 alignment and color management. All 3 prompt subsystems now
3795 inherit from BasePrompt.
3800 inherit from BasePrompt.
3796
3801
3797 * tools/release: updates for windows installer build and tag rpms
3802 * tools/release: updates for windows installer build and tag rpms
3798 with python version (since paths are fixed).
3803 with python version (since paths are fixed).
3799
3804
3800 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3805 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3801 which will become eventually obsolete. Also fixed the default
3806 which will become eventually obsolete. Also fixed the default
3802 prompt_in2 to use \D, so at least new users start with the correct
3807 prompt_in2 to use \D, so at least new users start with the correct
3803 defaults.
3808 defaults.
3804 WARNING: Users with existing ipythonrc files will need to apply
3809 WARNING: Users with existing ipythonrc files will need to apply
3805 this fix manually!
3810 this fix manually!
3806
3811
3807 * setup.py: make windows installer (.exe). This is finally the
3812 * setup.py: make windows installer (.exe). This is finally the
3808 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3813 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3809 which I hadn't included because it required Python 2.3 (or recent
3814 which I hadn't included because it required Python 2.3 (or recent
3810 distutils).
3815 distutils).
3811
3816
3812 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3817 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3813 usage of new '\D' escape.
3818 usage of new '\D' escape.
3814
3819
3815 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3820 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3816 lacks os.getuid())
3821 lacks os.getuid())
3817 (CachedOutput.set_colors): Added the ability to turn coloring
3822 (CachedOutput.set_colors): Added the ability to turn coloring
3818 on/off with @colors even for manually defined prompt colors. It
3823 on/off with @colors even for manually defined prompt colors. It
3819 uses a nasty global, but it works safely and via the generic color
3824 uses a nasty global, but it works safely and via the generic color
3820 handling mechanism.
3825 handling mechanism.
3821 (Prompt2.__init__): Introduced new escape '\D' for continuation
3826 (Prompt2.__init__): Introduced new escape '\D' for continuation
3822 prompts. It represents the counter ('\#') as dots.
3827 prompts. It represents the counter ('\#') as dots.
3823 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3828 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3824 need to update their ipythonrc files and replace '%n' with '\D' in
3829 need to update their ipythonrc files and replace '%n' with '\D' in
3825 their prompt_in2 settings everywhere. Sorry, but there's
3830 their prompt_in2 settings everywhere. Sorry, but there's
3826 otherwise no clean way to get all prompts to properly align. The
3831 otherwise no clean way to get all prompts to properly align. The
3827 ipythonrc shipped with IPython has been updated.
3832 ipythonrc shipped with IPython has been updated.
3828
3833
3829 2004-06-07 Fernando Perez <fperez@colorado.edu>
3834 2004-06-07 Fernando Perez <fperez@colorado.edu>
3830
3835
3831 * setup.py (isfile): Pass local_icons option to latex2html, so the
3836 * setup.py (isfile): Pass local_icons option to latex2html, so the
3832 resulting HTML file is self-contained. Thanks to
3837 resulting HTML file is self-contained. Thanks to
3833 dryice-AT-liu.com.cn for the tip.
3838 dryice-AT-liu.com.cn for the tip.
3834
3839
3835 * pysh.py: I created a new profile 'shell', which implements a
3840 * pysh.py: I created a new profile 'shell', which implements a
3836 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3841 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3837 system shell, nor will it become one anytime soon. It's mainly
3842 system shell, nor will it become one anytime soon. It's mainly
3838 meant to illustrate the use of the new flexible bash-like prompts.
3843 meant to illustrate the use of the new flexible bash-like prompts.
3839 I guess it could be used by hardy souls for true shell management,
3844 I guess it could be used by hardy souls for true shell management,
3840 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3845 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3841 profile. This uses the InterpreterExec extension provided by
3846 profile. This uses the InterpreterExec extension provided by
3842 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3847 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3843
3848
3844 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3849 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3845 auto-align itself with the length of the previous input prompt
3850 auto-align itself with the length of the previous input prompt
3846 (taking into account the invisible color escapes).
3851 (taking into account the invisible color escapes).
3847 (CachedOutput.__init__): Large restructuring of this class. Now
3852 (CachedOutput.__init__): Large restructuring of this class. Now
3848 all three prompts (primary1, primary2, output) are proper objects,
3853 all three prompts (primary1, primary2, output) are proper objects,
3849 managed by the 'parent' CachedOutput class. The code is still a
3854 managed by the 'parent' CachedOutput class. The code is still a
3850 bit hackish (all prompts share state via a pointer to the cache),
3855 bit hackish (all prompts share state via a pointer to the cache),
3851 but it's overall far cleaner than before.
3856 but it's overall far cleaner than before.
3852
3857
3853 * IPython/genutils.py (getoutputerror): modified to add verbose,
3858 * IPython/genutils.py (getoutputerror): modified to add verbose,
3854 debug and header options. This makes the interface of all getout*
3859 debug and header options. This makes the interface of all getout*
3855 functions uniform.
3860 functions uniform.
3856 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3861 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3857
3862
3858 * IPython/Magic.py (Magic.default_option): added a function to
3863 * IPython/Magic.py (Magic.default_option): added a function to
3859 allow registering default options for any magic command. This
3864 allow registering default options for any magic command. This
3860 makes it easy to have profiles which customize the magics globally
3865 makes it easy to have profiles which customize the magics globally
3861 for a certain use. The values set through this function are
3866 for a certain use. The values set through this function are
3862 picked up by the parse_options() method, which all magics should
3867 picked up by the parse_options() method, which all magics should
3863 use to parse their options.
3868 use to parse their options.
3864
3869
3865 * IPython/genutils.py (warn): modified the warnings framework to
3870 * IPython/genutils.py (warn): modified the warnings framework to
3866 use the Term I/O class. I'm trying to slowly unify all of
3871 use the Term I/O class. I'm trying to slowly unify all of
3867 IPython's I/O operations to pass through Term.
3872 IPython's I/O operations to pass through Term.
3868
3873
3869 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3874 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3870 the secondary prompt to correctly match the length of the primary
3875 the secondary prompt to correctly match the length of the primary
3871 one for any prompt. Now multi-line code will properly line up
3876 one for any prompt. Now multi-line code will properly line up
3872 even for path dependent prompts, such as the new ones available
3877 even for path dependent prompts, such as the new ones available
3873 via the prompt_specials.
3878 via the prompt_specials.
3874
3879
3875 2004-06-06 Fernando Perez <fperez@colorado.edu>
3880 2004-06-06 Fernando Perez <fperez@colorado.edu>
3876
3881
3877 * IPython/Prompts.py (prompt_specials): Added the ability to have
3882 * IPython/Prompts.py (prompt_specials): Added the ability to have
3878 bash-like special sequences in the prompts, which get
3883 bash-like special sequences in the prompts, which get
3879 automatically expanded. Things like hostname, current working
3884 automatically expanded. Things like hostname, current working
3880 directory and username are implemented already, but it's easy to
3885 directory and username are implemented already, but it's easy to
3881 add more in the future. Thanks to a patch by W.J. van der Laan
3886 add more in the future. Thanks to a patch by W.J. van der Laan
3882 <gnufnork-AT-hetdigitalegat.nl>
3887 <gnufnork-AT-hetdigitalegat.nl>
3883 (prompt_specials): Added color support for prompt strings, so
3888 (prompt_specials): Added color support for prompt strings, so
3884 users can define arbitrary color setups for their prompts.
3889 users can define arbitrary color setups for their prompts.
3885
3890
3886 2004-06-05 Fernando Perez <fperez@colorado.edu>
3891 2004-06-05 Fernando Perez <fperez@colorado.edu>
3887
3892
3888 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3893 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3889 code to load Gary Bishop's readline and configure it
3894 code to load Gary Bishop's readline and configure it
3890 automatically. Thanks to Gary for help on this.
3895 automatically. Thanks to Gary for help on this.
3891
3896
3892 2004-06-01 Fernando Perez <fperez@colorado.edu>
3897 2004-06-01 Fernando Perez <fperez@colorado.edu>
3893
3898
3894 * IPython/Logger.py (Logger.create_log): fix bug for logging
3899 * IPython/Logger.py (Logger.create_log): fix bug for logging
3895 with no filename (previous fix was incomplete).
3900 with no filename (previous fix was incomplete).
3896
3901
3897 2004-05-25 Fernando Perez <fperez@colorado.edu>
3902 2004-05-25 Fernando Perez <fperez@colorado.edu>
3898
3903
3899 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3904 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3900 parens would get passed to the shell.
3905 parens would get passed to the shell.
3901
3906
3902 2004-05-20 Fernando Perez <fperez@colorado.edu>
3907 2004-05-20 Fernando Perez <fperez@colorado.edu>
3903
3908
3904 * IPython/Magic.py (Magic.magic_prun): changed default profile
3909 * IPython/Magic.py (Magic.magic_prun): changed default profile
3905 sort order to 'time' (the more common profiling need).
3910 sort order to 'time' (the more common profiling need).
3906
3911
3907 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3912 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3908 so that source code shown is guaranteed in sync with the file on
3913 so that source code shown is guaranteed in sync with the file on
3909 disk (also changed in psource). Similar fix to the one for
3914 disk (also changed in psource). Similar fix to the one for
3910 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3915 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3911 <yann.ledu-AT-noos.fr>.
3916 <yann.ledu-AT-noos.fr>.
3912
3917
3913 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3918 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3914 with a single option would not be correctly parsed. Closes
3919 with a single option would not be correctly parsed. Closes
3915 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3920 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3916 introduced in 0.6.0 (on 2004-05-06).
3921 introduced in 0.6.0 (on 2004-05-06).
3917
3922
3918 2004-05-13 *** Released version 0.6.0
3923 2004-05-13 *** Released version 0.6.0
3919
3924
3920 2004-05-13 Fernando Perez <fperez@colorado.edu>
3925 2004-05-13 Fernando Perez <fperez@colorado.edu>
3921
3926
3922 * debian/: Added debian/ directory to CVS, so that debian support
3927 * debian/: Added debian/ directory to CVS, so that debian support
3923 is publicly accessible. The debian package is maintained by Jack
3928 is publicly accessible. The debian package is maintained by Jack
3924 Moffit <jack-AT-xiph.org>.
3929 Moffit <jack-AT-xiph.org>.
3925
3930
3926 * Documentation: included the notes about an ipython-based system
3931 * Documentation: included the notes about an ipython-based system
3927 shell (the hypothetical 'pysh') into the new_design.pdf document,
3932 shell (the hypothetical 'pysh') into the new_design.pdf document,
3928 so that these ideas get distributed to users along with the
3933 so that these ideas get distributed to users along with the
3929 official documentation.
3934 official documentation.
3930
3935
3931 2004-05-10 Fernando Perez <fperez@colorado.edu>
3936 2004-05-10 Fernando Perez <fperez@colorado.edu>
3932
3937
3933 * IPython/Logger.py (Logger.create_log): fix recently introduced
3938 * IPython/Logger.py (Logger.create_log): fix recently introduced
3934 bug (misindented line) where logstart would fail when not given an
3939 bug (misindented line) where logstart would fail when not given an
3935 explicit filename.
3940 explicit filename.
3936
3941
3937 2004-05-09 Fernando Perez <fperez@colorado.edu>
3942 2004-05-09 Fernando Perez <fperez@colorado.edu>
3938
3943
3939 * IPython/Magic.py (Magic.parse_options): skip system call when
3944 * IPython/Magic.py (Magic.parse_options): skip system call when
3940 there are no options to look for. Faster, cleaner for the common
3945 there are no options to look for. Faster, cleaner for the common
3941 case.
3946 case.
3942
3947
3943 * Documentation: many updates to the manual: describing Windows
3948 * Documentation: many updates to the manual: describing Windows
3944 support better, Gnuplot updates, credits, misc small stuff. Also
3949 support better, Gnuplot updates, credits, misc small stuff. Also
3945 updated the new_design doc a bit.
3950 updated the new_design doc a bit.
3946
3951
3947 2004-05-06 *** Released version 0.6.0.rc1
3952 2004-05-06 *** Released version 0.6.0.rc1
3948
3953
3949 2004-05-06 Fernando Perez <fperez@colorado.edu>
3954 2004-05-06 Fernando Perez <fperez@colorado.edu>
3950
3955
3951 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3956 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3952 operations to use the vastly more efficient list/''.join() method.
3957 operations to use the vastly more efficient list/''.join() method.
3953 (FormattedTB.text): Fix
3958 (FormattedTB.text): Fix
3954 http://www.scipy.net/roundup/ipython/issue12 - exception source
3959 http://www.scipy.net/roundup/ipython/issue12 - exception source
3955 extract not updated after reload. Thanks to Mike Salib
3960 extract not updated after reload. Thanks to Mike Salib
3956 <msalib-AT-mit.edu> for pinning the source of the problem.
3961 <msalib-AT-mit.edu> for pinning the source of the problem.
3957 Fortunately, the solution works inside ipython and doesn't require
3962 Fortunately, the solution works inside ipython and doesn't require
3958 any changes to python proper.
3963 any changes to python proper.
3959
3964
3960 * IPython/Magic.py (Magic.parse_options): Improved to process the
3965 * IPython/Magic.py (Magic.parse_options): Improved to process the
3961 argument list as a true shell would (by actually using the
3966 argument list as a true shell would (by actually using the
3962 underlying system shell). This way, all @magics automatically get
3967 underlying system shell). This way, all @magics automatically get
3963 shell expansion for variables. Thanks to a comment by Alex
3968 shell expansion for variables. Thanks to a comment by Alex
3964 Schmolck.
3969 Schmolck.
3965
3970
3966 2004-04-04 Fernando Perez <fperez@colorado.edu>
3971 2004-04-04 Fernando Perez <fperez@colorado.edu>
3967
3972
3968 * IPython/iplib.py (InteractiveShell.interact): Added a special
3973 * IPython/iplib.py (InteractiveShell.interact): Added a special
3969 trap for a debugger quit exception, which is basically impossible
3974 trap for a debugger quit exception, which is basically impossible
3970 to handle by normal mechanisms, given what pdb does to the stack.
3975 to handle by normal mechanisms, given what pdb does to the stack.
3971 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3976 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3972
3977
3973 2004-04-03 Fernando Perez <fperez@colorado.edu>
3978 2004-04-03 Fernando Perez <fperez@colorado.edu>
3974
3979
3975 * IPython/genutils.py (Term): Standardized the names of the Term
3980 * IPython/genutils.py (Term): Standardized the names of the Term
3976 class streams to cin/cout/cerr, following C++ naming conventions
3981 class streams to cin/cout/cerr, following C++ naming conventions
3977 (I can't use in/out/err because 'in' is not a valid attribute
3982 (I can't use in/out/err because 'in' is not a valid attribute
3978 name).
3983 name).
3979
3984
3980 * IPython/iplib.py (InteractiveShell.interact): don't increment
3985 * IPython/iplib.py (InteractiveShell.interact): don't increment
3981 the prompt if there's no user input. By Daniel 'Dang' Griffith
3986 the prompt if there's no user input. By Daniel 'Dang' Griffith
3982 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3987 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3983 Francois Pinard.
3988 Francois Pinard.
3984
3989
3985 2004-04-02 Fernando Perez <fperez@colorado.edu>
3990 2004-04-02 Fernando Perez <fperez@colorado.edu>
3986
3991
3987 * IPython/genutils.py (Stream.__init__): Modified to survive at
3992 * IPython/genutils.py (Stream.__init__): Modified to survive at
3988 least importing in contexts where stdin/out/err aren't true file
3993 least importing in contexts where stdin/out/err aren't true file
3989 objects, such as PyCrust (they lack fileno() and mode). However,
3994 objects, such as PyCrust (they lack fileno() and mode). However,
3990 the recovery facilities which rely on these things existing will
3995 the recovery facilities which rely on these things existing will
3991 not work.
3996 not work.
3992
3997
3993 2004-04-01 Fernando Perez <fperez@colorado.edu>
3998 2004-04-01 Fernando Perez <fperez@colorado.edu>
3994
3999
3995 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4000 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3996 use the new getoutputerror() function, so it properly
4001 use the new getoutputerror() function, so it properly
3997 distinguishes stdout/err.
4002 distinguishes stdout/err.
3998
4003
3999 * IPython/genutils.py (getoutputerror): added a function to
4004 * IPython/genutils.py (getoutputerror): added a function to
4000 capture separately the standard output and error of a command.
4005 capture separately the standard output and error of a command.
4001 After a comment from dang on the mailing lists. This code is
4006 After a comment from dang on the mailing lists. This code is
4002 basically a modified version of commands.getstatusoutput(), from
4007 basically a modified version of commands.getstatusoutput(), from
4003 the standard library.
4008 the standard library.
4004
4009
4005 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4010 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4006 '!!' as a special syntax (shorthand) to access @sx.
4011 '!!' as a special syntax (shorthand) to access @sx.
4007
4012
4008 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4013 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4009 command and return its output as a list split on '\n'.
4014 command and return its output as a list split on '\n'.
4010
4015
4011 2004-03-31 Fernando Perez <fperez@colorado.edu>
4016 2004-03-31 Fernando Perez <fperez@colorado.edu>
4012
4017
4013 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4018 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4014 method to dictionaries used as FakeModule instances if they lack
4019 method to dictionaries used as FakeModule instances if they lack
4015 it. At least pydoc in python2.3 breaks for runtime-defined
4020 it. At least pydoc in python2.3 breaks for runtime-defined
4016 functions without this hack. At some point I need to _really_
4021 functions without this hack. At some point I need to _really_
4017 understand what FakeModule is doing, because it's a gross hack.
4022 understand what FakeModule is doing, because it's a gross hack.
4018 But it solves Arnd's problem for now...
4023 But it solves Arnd's problem for now...
4019
4024
4020 2004-02-27 Fernando Perez <fperez@colorado.edu>
4025 2004-02-27 Fernando Perez <fperez@colorado.edu>
4021
4026
4022 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4027 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4023 mode would behave erratically. Also increased the number of
4028 mode would behave erratically. Also increased the number of
4024 possible logs in rotate mod to 999. Thanks to Rod Holland
4029 possible logs in rotate mod to 999. Thanks to Rod Holland
4025 <rhh@StructureLABS.com> for the report and fixes.
4030 <rhh@StructureLABS.com> for the report and fixes.
4026
4031
4027 2004-02-26 Fernando Perez <fperez@colorado.edu>
4032 2004-02-26 Fernando Perez <fperez@colorado.edu>
4028
4033
4029 * IPython/genutils.py (page): Check that the curses module really
4034 * IPython/genutils.py (page): Check that the curses module really
4030 has the initscr attribute before trying to use it. For some
4035 has the initscr attribute before trying to use it. For some
4031 reason, the Solaris curses module is missing this. I think this
4036 reason, the Solaris curses module is missing this. I think this
4032 should be considered a Solaris python bug, but I'm not sure.
4037 should be considered a Solaris python bug, but I'm not sure.
4033
4038
4034 2004-01-17 Fernando Perez <fperez@colorado.edu>
4039 2004-01-17 Fernando Perez <fperez@colorado.edu>
4035
4040
4036 * IPython/genutils.py (Stream.__init__): Changes to try to make
4041 * IPython/genutils.py (Stream.__init__): Changes to try to make
4037 ipython robust against stdin/out/err being closed by the user.
4042 ipython robust against stdin/out/err being closed by the user.
4038 This is 'user error' (and blocks a normal python session, at least
4043 This is 'user error' (and blocks a normal python session, at least
4039 the stdout case). However, Ipython should be able to survive such
4044 the stdout case). However, Ipython should be able to survive such
4040 instances of abuse as gracefully as possible. To simplify the
4045 instances of abuse as gracefully as possible. To simplify the
4041 coding and maintain compatibility with Gary Bishop's Term
4046 coding and maintain compatibility with Gary Bishop's Term
4042 contributions, I've made use of classmethods for this. I think
4047 contributions, I've made use of classmethods for this. I think
4043 this introduces a dependency on python 2.2.
4048 this introduces a dependency on python 2.2.
4044
4049
4045 2004-01-13 Fernando Perez <fperez@colorado.edu>
4050 2004-01-13 Fernando Perez <fperez@colorado.edu>
4046
4051
4047 * IPython/numutils.py (exp_safe): simplified the code a bit and
4052 * IPython/numutils.py (exp_safe): simplified the code a bit and
4048 removed the need for importing the kinds module altogether.
4053 removed the need for importing the kinds module altogether.
4049
4054
4050 2004-01-06 Fernando Perez <fperez@colorado.edu>
4055 2004-01-06 Fernando Perez <fperez@colorado.edu>
4051
4056
4052 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4057 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4053 a magic function instead, after some community feedback. No
4058 a magic function instead, after some community feedback. No
4054 special syntax will exist for it, but its name is deliberately
4059 special syntax will exist for it, but its name is deliberately
4055 very short.
4060 very short.
4056
4061
4057 2003-12-20 Fernando Perez <fperez@colorado.edu>
4062 2003-12-20 Fernando Perez <fperez@colorado.edu>
4058
4063
4059 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4064 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4060 new functionality, to automagically assign the result of a shell
4065 new functionality, to automagically assign the result of a shell
4061 command to a variable. I'll solicit some community feedback on
4066 command to a variable. I'll solicit some community feedback on
4062 this before making it permanent.
4067 this before making it permanent.
4063
4068
4064 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4069 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4065 requested about callables for which inspect couldn't obtain a
4070 requested about callables for which inspect couldn't obtain a
4066 proper argspec. Thanks to a crash report sent by Etienne
4071 proper argspec. Thanks to a crash report sent by Etienne
4067 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4072 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4068
4073
4069 2003-12-09 Fernando Perez <fperez@colorado.edu>
4074 2003-12-09 Fernando Perez <fperez@colorado.edu>
4070
4075
4071 * IPython/genutils.py (page): patch for the pager to work across
4076 * IPython/genutils.py (page): patch for the pager to work across
4072 various versions of Windows. By Gary Bishop.
4077 various versions of Windows. By Gary Bishop.
4073
4078
4074 2003-12-04 Fernando Perez <fperez@colorado.edu>
4079 2003-12-04 Fernando Perez <fperez@colorado.edu>
4075
4080
4076 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4081 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4077 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4082 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4078 While I tested this and it looks ok, there may still be corner
4083 While I tested this and it looks ok, there may still be corner
4079 cases I've missed.
4084 cases I've missed.
4080
4085
4081 2003-12-01 Fernando Perez <fperez@colorado.edu>
4086 2003-12-01 Fernando Perez <fperez@colorado.edu>
4082
4087
4083 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4088 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4084 where a line like 'p,q=1,2' would fail because the automagic
4089 where a line like 'p,q=1,2' would fail because the automagic
4085 system would be triggered for @p.
4090 system would be triggered for @p.
4086
4091
4087 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4092 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4088 cleanups, code unmodified.
4093 cleanups, code unmodified.
4089
4094
4090 * IPython/genutils.py (Term): added a class for IPython to handle
4095 * IPython/genutils.py (Term): added a class for IPython to handle
4091 output. In most cases it will just be a proxy for stdout/err, but
4096 output. In most cases it will just be a proxy for stdout/err, but
4092 having this allows modifications to be made for some platforms,
4097 having this allows modifications to be made for some platforms,
4093 such as handling color escapes under Windows. All of this code
4098 such as handling color escapes under Windows. All of this code
4094 was contributed by Gary Bishop, with minor modifications by me.
4099 was contributed by Gary Bishop, with minor modifications by me.
4095 The actual changes affect many files.
4100 The actual changes affect many files.
4096
4101
4097 2003-11-30 Fernando Perez <fperez@colorado.edu>
4102 2003-11-30 Fernando Perez <fperez@colorado.edu>
4098
4103
4099 * IPython/iplib.py (file_matches): new completion code, courtesy
4104 * IPython/iplib.py (file_matches): new completion code, courtesy
4100 of Jeff Collins. This enables filename completion again under
4105 of Jeff Collins. This enables filename completion again under
4101 python 2.3, which disabled it at the C level.
4106 python 2.3, which disabled it at the C level.
4102
4107
4103 2003-11-11 Fernando Perez <fperez@colorado.edu>
4108 2003-11-11 Fernando Perez <fperez@colorado.edu>
4104
4109
4105 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4110 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4106 for Numeric.array(map(...)), but often convenient.
4111 for Numeric.array(map(...)), but often convenient.
4107
4112
4108 2003-11-05 Fernando Perez <fperez@colorado.edu>
4113 2003-11-05 Fernando Perez <fperez@colorado.edu>
4109
4114
4110 * IPython/numutils.py (frange): Changed a call from int() to
4115 * IPython/numutils.py (frange): Changed a call from int() to
4111 int(round()) to prevent a problem reported with arange() in the
4116 int(round()) to prevent a problem reported with arange() in the
4112 numpy list.
4117 numpy list.
4113
4118
4114 2003-10-06 Fernando Perez <fperez@colorado.edu>
4119 2003-10-06 Fernando Perez <fperez@colorado.edu>
4115
4120
4116 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4121 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4117 prevent crashes if sys lacks an argv attribute (it happens with
4122 prevent crashes if sys lacks an argv attribute (it happens with
4118 embedded interpreters which build a bare-bones sys module).
4123 embedded interpreters which build a bare-bones sys module).
4119 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4124 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4120
4125
4121 2003-09-24 Fernando Perez <fperez@colorado.edu>
4126 2003-09-24 Fernando Perez <fperez@colorado.edu>
4122
4127
4123 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4128 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4124 to protect against poorly written user objects where __getattr__
4129 to protect against poorly written user objects where __getattr__
4125 raises exceptions other than AttributeError. Thanks to a bug
4130 raises exceptions other than AttributeError. Thanks to a bug
4126 report by Oliver Sander <osander-AT-gmx.de>.
4131 report by Oliver Sander <osander-AT-gmx.de>.
4127
4132
4128 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4133 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4129 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4134 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4130
4135
4131 2003-09-09 Fernando Perez <fperez@colorado.edu>
4136 2003-09-09 Fernando Perez <fperez@colorado.edu>
4132
4137
4133 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4138 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4134 unpacking a list whith a callable as first element would
4139 unpacking a list whith a callable as first element would
4135 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4140 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4136 Collins.
4141 Collins.
4137
4142
4138 2003-08-25 *** Released version 0.5.0
4143 2003-08-25 *** Released version 0.5.0
4139
4144
4140 2003-08-22 Fernando Perez <fperez@colorado.edu>
4145 2003-08-22 Fernando Perez <fperez@colorado.edu>
4141
4146
4142 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4147 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4143 improperly defined user exceptions. Thanks to feedback from Mark
4148 improperly defined user exceptions. Thanks to feedback from Mark
4144 Russell <mrussell-AT-verio.net>.
4149 Russell <mrussell-AT-verio.net>.
4145
4150
4146 2003-08-20 Fernando Perez <fperez@colorado.edu>
4151 2003-08-20 Fernando Perez <fperez@colorado.edu>
4147
4152
4148 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4153 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4149 printing so that it would print multi-line string forms starting
4154 printing so that it would print multi-line string forms starting
4150 with a new line. This way the formatting is better respected for
4155 with a new line. This way the formatting is better respected for
4151 objects which work hard to make nice string forms.
4156 objects which work hard to make nice string forms.
4152
4157
4153 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4158 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4154 autocall would overtake data access for objects with both
4159 autocall would overtake data access for objects with both
4155 __getitem__ and __call__.
4160 __getitem__ and __call__.
4156
4161
4157 2003-08-19 *** Released version 0.5.0-rc1
4162 2003-08-19 *** Released version 0.5.0-rc1
4158
4163
4159 2003-08-19 Fernando Perez <fperez@colorado.edu>
4164 2003-08-19 Fernando Perez <fperez@colorado.edu>
4160
4165
4161 * IPython/deep_reload.py (load_tail): single tiny change here
4166 * IPython/deep_reload.py (load_tail): single tiny change here
4162 seems to fix the long-standing bug of dreload() failing to work
4167 seems to fix the long-standing bug of dreload() failing to work
4163 for dotted names. But this module is pretty tricky, so I may have
4168 for dotted names. But this module is pretty tricky, so I may have
4164 missed some subtlety. Needs more testing!.
4169 missed some subtlety. Needs more testing!.
4165
4170
4166 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4171 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4167 exceptions which have badly implemented __str__ methods.
4172 exceptions which have badly implemented __str__ methods.
4168 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4173 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4169 which I've been getting reports about from Python 2.3 users. I
4174 which I've been getting reports about from Python 2.3 users. I
4170 wish I had a simple test case to reproduce the problem, so I could
4175 wish I had a simple test case to reproduce the problem, so I could
4171 either write a cleaner workaround or file a bug report if
4176 either write a cleaner workaround or file a bug report if
4172 necessary.
4177 necessary.
4173
4178
4174 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4179 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4175 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4180 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4176 a bug report by Tjabo Kloppenburg.
4181 a bug report by Tjabo Kloppenburg.
4177
4182
4178 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4183 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4179 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4184 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4180 seems rather unstable. Thanks to a bug report by Tjabo
4185 seems rather unstable. Thanks to a bug report by Tjabo
4181 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4186 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4182
4187
4183 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4188 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4184 this out soon because of the critical fixes in the inner loop for
4189 this out soon because of the critical fixes in the inner loop for
4185 generators.
4190 generators.
4186
4191
4187 * IPython/Magic.py (Magic.getargspec): removed. This (and
4192 * IPython/Magic.py (Magic.getargspec): removed. This (and
4188 _get_def) have been obsoleted by OInspect for a long time, I
4193 _get_def) have been obsoleted by OInspect for a long time, I
4189 hadn't noticed that they were dead code.
4194 hadn't noticed that they were dead code.
4190 (Magic._ofind): restored _ofind functionality for a few literals
4195 (Magic._ofind): restored _ofind functionality for a few literals
4191 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4196 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4192 for things like "hello".capitalize?, since that would require a
4197 for things like "hello".capitalize?, since that would require a
4193 potentially dangerous eval() again.
4198 potentially dangerous eval() again.
4194
4199
4195 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4200 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4196 logic a bit more to clean up the escapes handling and minimize the
4201 logic a bit more to clean up the escapes handling and minimize the
4197 use of _ofind to only necessary cases. The interactive 'feel' of
4202 use of _ofind to only necessary cases. The interactive 'feel' of
4198 IPython should have improved quite a bit with the changes in
4203 IPython should have improved quite a bit with the changes in
4199 _prefilter and _ofind (besides being far safer than before).
4204 _prefilter and _ofind (besides being far safer than before).
4200
4205
4201 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4206 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4202 obscure, never reported). Edit would fail to find the object to
4207 obscure, never reported). Edit would fail to find the object to
4203 edit under some circumstances.
4208 edit under some circumstances.
4204 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4209 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4205 which were causing double-calling of generators. Those eval calls
4210 which were causing double-calling of generators. Those eval calls
4206 were _very_ dangerous, since code with side effects could be
4211 were _very_ dangerous, since code with side effects could be
4207 triggered. As they say, 'eval is evil'... These were the
4212 triggered. As they say, 'eval is evil'... These were the
4208 nastiest evals in IPython. Besides, _ofind is now far simpler,
4213 nastiest evals in IPython. Besides, _ofind is now far simpler,
4209 and it should also be quite a bit faster. Its use of inspect is
4214 and it should also be quite a bit faster. Its use of inspect is
4210 also safer, so perhaps some of the inspect-related crashes I've
4215 also safer, so perhaps some of the inspect-related crashes I've
4211 seen lately with Python 2.3 might be taken care of. That will
4216 seen lately with Python 2.3 might be taken care of. That will
4212 need more testing.
4217 need more testing.
4213
4218
4214 2003-08-17 Fernando Perez <fperez@colorado.edu>
4219 2003-08-17 Fernando Perez <fperez@colorado.edu>
4215
4220
4216 * IPython/iplib.py (InteractiveShell._prefilter): significant
4221 * IPython/iplib.py (InteractiveShell._prefilter): significant
4217 simplifications to the logic for handling user escapes. Faster
4222 simplifications to the logic for handling user escapes. Faster
4218 and simpler code.
4223 and simpler code.
4219
4224
4220 2003-08-14 Fernando Perez <fperez@colorado.edu>
4225 2003-08-14 Fernando Perez <fperez@colorado.edu>
4221
4226
4222 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4227 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4223 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4228 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4224 but it should be quite a bit faster. And the recursive version
4229 but it should be quite a bit faster. And the recursive version
4225 generated O(log N) intermediate storage for all rank>1 arrays,
4230 generated O(log N) intermediate storage for all rank>1 arrays,
4226 even if they were contiguous.
4231 even if they were contiguous.
4227 (l1norm): Added this function.
4232 (l1norm): Added this function.
4228 (norm): Added this function for arbitrary norms (including
4233 (norm): Added this function for arbitrary norms (including
4229 l-infinity). l1 and l2 are still special cases for convenience
4234 l-infinity). l1 and l2 are still special cases for convenience
4230 and speed.
4235 and speed.
4231
4236
4232 2003-08-03 Fernando Perez <fperez@colorado.edu>
4237 2003-08-03 Fernando Perez <fperez@colorado.edu>
4233
4238
4234 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4239 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4235 exceptions, which now raise PendingDeprecationWarnings in Python
4240 exceptions, which now raise PendingDeprecationWarnings in Python
4236 2.3. There were some in Magic and some in Gnuplot2.
4241 2.3. There were some in Magic and some in Gnuplot2.
4237
4242
4238 2003-06-30 Fernando Perez <fperez@colorado.edu>
4243 2003-06-30 Fernando Perez <fperez@colorado.edu>
4239
4244
4240 * IPython/genutils.py (page): modified to call curses only for
4245 * IPython/genutils.py (page): modified to call curses only for
4241 terminals where TERM=='xterm'. After problems under many other
4246 terminals where TERM=='xterm'. After problems under many other
4242 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4247 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4243
4248
4244 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4249 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4245 would be triggered when readline was absent. This was just an old
4250 would be triggered when readline was absent. This was just an old
4246 debugging statement I'd forgotten to take out.
4251 debugging statement I'd forgotten to take out.
4247
4252
4248 2003-06-20 Fernando Perez <fperez@colorado.edu>
4253 2003-06-20 Fernando Perez <fperez@colorado.edu>
4249
4254
4250 * IPython/genutils.py (clock): modified to return only user time
4255 * IPython/genutils.py (clock): modified to return only user time
4251 (not counting system time), after a discussion on scipy. While
4256 (not counting system time), after a discussion on scipy. While
4252 system time may be a useful quantity occasionally, it may much
4257 system time may be a useful quantity occasionally, it may much
4253 more easily be skewed by occasional swapping or other similar
4258 more easily be skewed by occasional swapping or other similar
4254 activity.
4259 activity.
4255
4260
4256 2003-06-05 Fernando Perez <fperez@colorado.edu>
4261 2003-06-05 Fernando Perez <fperez@colorado.edu>
4257
4262
4258 * IPython/numutils.py (identity): new function, for building
4263 * IPython/numutils.py (identity): new function, for building
4259 arbitrary rank Kronecker deltas (mostly backwards compatible with
4264 arbitrary rank Kronecker deltas (mostly backwards compatible with
4260 Numeric.identity)
4265 Numeric.identity)
4261
4266
4262 2003-06-03 Fernando Perez <fperez@colorado.edu>
4267 2003-06-03 Fernando Perez <fperez@colorado.edu>
4263
4268
4264 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4269 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4265 arguments passed to magics with spaces, to allow trailing '\' to
4270 arguments passed to magics with spaces, to allow trailing '\' to
4266 work normally (mainly for Windows users).
4271 work normally (mainly for Windows users).
4267
4272
4268 2003-05-29 Fernando Perez <fperez@colorado.edu>
4273 2003-05-29 Fernando Perez <fperez@colorado.edu>
4269
4274
4270 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4275 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4271 instead of pydoc.help. This fixes a bizarre behavior where
4276 instead of pydoc.help. This fixes a bizarre behavior where
4272 printing '%s' % locals() would trigger the help system. Now
4277 printing '%s' % locals() would trigger the help system. Now
4273 ipython behaves like normal python does.
4278 ipython behaves like normal python does.
4274
4279
4275 Note that if one does 'from pydoc import help', the bizarre
4280 Note that if one does 'from pydoc import help', the bizarre
4276 behavior returns, but this will also happen in normal python, so
4281 behavior returns, but this will also happen in normal python, so
4277 it's not an ipython bug anymore (it has to do with how pydoc.help
4282 it's not an ipython bug anymore (it has to do with how pydoc.help
4278 is implemented).
4283 is implemented).
4279
4284
4280 2003-05-22 Fernando Perez <fperez@colorado.edu>
4285 2003-05-22 Fernando Perez <fperez@colorado.edu>
4281
4286
4282 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4287 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4283 return [] instead of None when nothing matches, also match to end
4288 return [] instead of None when nothing matches, also match to end
4284 of line. Patch by Gary Bishop.
4289 of line. Patch by Gary Bishop.
4285
4290
4286 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4291 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4287 protection as before, for files passed on the command line. This
4292 protection as before, for files passed on the command line. This
4288 prevents the CrashHandler from kicking in if user files call into
4293 prevents the CrashHandler from kicking in if user files call into
4289 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4294 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4290 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4295 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4291
4296
4292 2003-05-20 *** Released version 0.4.0
4297 2003-05-20 *** Released version 0.4.0
4293
4298
4294 2003-05-20 Fernando Perez <fperez@colorado.edu>
4299 2003-05-20 Fernando Perez <fperez@colorado.edu>
4295
4300
4296 * setup.py: added support for manpages. It's a bit hackish b/c of
4301 * setup.py: added support for manpages. It's a bit hackish b/c of
4297 a bug in the way the bdist_rpm distutils target handles gzipped
4302 a bug in the way the bdist_rpm distutils target handles gzipped
4298 manpages, but it works. After a patch by Jack.
4303 manpages, but it works. After a patch by Jack.
4299
4304
4300 2003-05-19 Fernando Perez <fperez@colorado.edu>
4305 2003-05-19 Fernando Perez <fperez@colorado.edu>
4301
4306
4302 * IPython/numutils.py: added a mockup of the kinds module, since
4307 * IPython/numutils.py: added a mockup of the kinds module, since
4303 it was recently removed from Numeric. This way, numutils will
4308 it was recently removed from Numeric. This way, numutils will
4304 work for all users even if they are missing kinds.
4309 work for all users even if they are missing kinds.
4305
4310
4306 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4311 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4307 failure, which can occur with SWIG-wrapped extensions. After a
4312 failure, which can occur with SWIG-wrapped extensions. After a
4308 crash report from Prabhu.
4313 crash report from Prabhu.
4309
4314
4310 2003-05-16 Fernando Perez <fperez@colorado.edu>
4315 2003-05-16 Fernando Perez <fperez@colorado.edu>
4311
4316
4312 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4317 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4313 protect ipython from user code which may call directly
4318 protect ipython from user code which may call directly
4314 sys.excepthook (this looks like an ipython crash to the user, even
4319 sys.excepthook (this looks like an ipython crash to the user, even
4315 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4320 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4316 This is especially important to help users of WxWindows, but may
4321 This is especially important to help users of WxWindows, but may
4317 also be useful in other cases.
4322 also be useful in other cases.
4318
4323
4319 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4324 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4320 an optional tb_offset to be specified, and to preserve exception
4325 an optional tb_offset to be specified, and to preserve exception
4321 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4326 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4322
4327
4323 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4328 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4324
4329
4325 2003-05-15 Fernando Perez <fperez@colorado.edu>
4330 2003-05-15 Fernando Perez <fperez@colorado.edu>
4326
4331
4327 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4332 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4328 installing for a new user under Windows.
4333 installing for a new user under Windows.
4329
4334
4330 2003-05-12 Fernando Perez <fperez@colorado.edu>
4335 2003-05-12 Fernando Perez <fperez@colorado.edu>
4331
4336
4332 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4337 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4333 handler for Emacs comint-based lines. Currently it doesn't do
4338 handler for Emacs comint-based lines. Currently it doesn't do
4334 much (but importantly, it doesn't update the history cache). In
4339 much (but importantly, it doesn't update the history cache). In
4335 the future it may be expanded if Alex needs more functionality
4340 the future it may be expanded if Alex needs more functionality
4336 there.
4341 there.
4337
4342
4338 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4343 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4339 info to crash reports.
4344 info to crash reports.
4340
4345
4341 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4346 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4342 just like Python's -c. Also fixed crash with invalid -color
4347 just like Python's -c. Also fixed crash with invalid -color
4343 option value at startup. Thanks to Will French
4348 option value at startup. Thanks to Will French
4344 <wfrench-AT-bestweb.net> for the bug report.
4349 <wfrench-AT-bestweb.net> for the bug report.
4345
4350
4346 2003-05-09 Fernando Perez <fperez@colorado.edu>
4351 2003-05-09 Fernando Perez <fperez@colorado.edu>
4347
4352
4348 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4353 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4349 to EvalDict (it's a mapping, after all) and simplified its code
4354 to EvalDict (it's a mapping, after all) and simplified its code
4350 quite a bit, after a nice discussion on c.l.py where Gustavo
4355 quite a bit, after a nice discussion on c.l.py where Gustavo
4351 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4356 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4352
4357
4353 2003-04-30 Fernando Perez <fperez@colorado.edu>
4358 2003-04-30 Fernando Perez <fperez@colorado.edu>
4354
4359
4355 * IPython/genutils.py (timings_out): modified it to reduce its
4360 * IPython/genutils.py (timings_out): modified it to reduce its
4356 overhead in the common reps==1 case.
4361 overhead in the common reps==1 case.
4357
4362
4358 2003-04-29 Fernando Perez <fperez@colorado.edu>
4363 2003-04-29 Fernando Perez <fperez@colorado.edu>
4359
4364
4360 * IPython/genutils.py (timings_out): Modified to use the resource
4365 * IPython/genutils.py (timings_out): Modified to use the resource
4361 module, which avoids the wraparound problems of time.clock().
4366 module, which avoids the wraparound problems of time.clock().
4362
4367
4363 2003-04-17 *** Released version 0.2.15pre4
4368 2003-04-17 *** Released version 0.2.15pre4
4364
4369
4365 2003-04-17 Fernando Perez <fperez@colorado.edu>
4370 2003-04-17 Fernando Perez <fperez@colorado.edu>
4366
4371
4367 * setup.py (scriptfiles): Split windows-specific stuff over to a
4372 * setup.py (scriptfiles): Split windows-specific stuff over to a
4368 separate file, in an attempt to have a Windows GUI installer.
4373 separate file, in an attempt to have a Windows GUI installer.
4369 That didn't work, but part of the groundwork is done.
4374 That didn't work, but part of the groundwork is done.
4370
4375
4371 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4376 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4372 indent/unindent with 4 spaces. Particularly useful in combination
4377 indent/unindent with 4 spaces. Particularly useful in combination
4373 with the new auto-indent option.
4378 with the new auto-indent option.
4374
4379
4375 2003-04-16 Fernando Perez <fperez@colorado.edu>
4380 2003-04-16 Fernando Perez <fperez@colorado.edu>
4376
4381
4377 * IPython/Magic.py: various replacements of self.rc for
4382 * IPython/Magic.py: various replacements of self.rc for
4378 self.shell.rc. A lot more remains to be done to fully disentangle
4383 self.shell.rc. A lot more remains to be done to fully disentangle
4379 this class from the main Shell class.
4384 this class from the main Shell class.
4380
4385
4381 * IPython/GnuplotRuntime.py: added checks for mouse support so
4386 * IPython/GnuplotRuntime.py: added checks for mouse support so
4382 that we don't try to enable it if the current gnuplot doesn't
4387 that we don't try to enable it if the current gnuplot doesn't
4383 really support it. Also added checks so that we don't try to
4388 really support it. Also added checks so that we don't try to
4384 enable persist under Windows (where Gnuplot doesn't recognize the
4389 enable persist under Windows (where Gnuplot doesn't recognize the
4385 option).
4390 option).
4386
4391
4387 * IPython/iplib.py (InteractiveShell.interact): Added optional
4392 * IPython/iplib.py (InteractiveShell.interact): Added optional
4388 auto-indenting code, after a patch by King C. Shu
4393 auto-indenting code, after a patch by King C. Shu
4389 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4394 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4390 get along well with pasting indented code. If I ever figure out
4395 get along well with pasting indented code. If I ever figure out
4391 how to make that part go well, it will become on by default.
4396 how to make that part go well, it will become on by default.
4392
4397
4393 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4398 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4394 crash ipython if there was an unmatched '%' in the user's prompt
4399 crash ipython if there was an unmatched '%' in the user's prompt
4395 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4400 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4396
4401
4397 * IPython/iplib.py (InteractiveShell.interact): removed the
4402 * IPython/iplib.py (InteractiveShell.interact): removed the
4398 ability to ask the user whether he wants to crash or not at the
4403 ability to ask the user whether he wants to crash or not at the
4399 'last line' exception handler. Calling functions at that point
4404 'last line' exception handler. Calling functions at that point
4400 changes the stack, and the error reports would have incorrect
4405 changes the stack, and the error reports would have incorrect
4401 tracebacks.
4406 tracebacks.
4402
4407
4403 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4408 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4404 pass through a peger a pretty-printed form of any object. After a
4409 pass through a peger a pretty-printed form of any object. After a
4405 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4410 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4406
4411
4407 2003-04-14 Fernando Perez <fperez@colorado.edu>
4412 2003-04-14 Fernando Perez <fperez@colorado.edu>
4408
4413
4409 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4414 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4410 all files in ~ would be modified at first install (instead of
4415 all files in ~ would be modified at first install (instead of
4411 ~/.ipython). This could be potentially disastrous, as the
4416 ~/.ipython). This could be potentially disastrous, as the
4412 modification (make line-endings native) could damage binary files.
4417 modification (make line-endings native) could damage binary files.
4413
4418
4414 2003-04-10 Fernando Perez <fperez@colorado.edu>
4419 2003-04-10 Fernando Perez <fperez@colorado.edu>
4415
4420
4416 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4421 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4417 handle only lines which are invalid python. This now means that
4422 handle only lines which are invalid python. This now means that
4418 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4423 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4419 for the bug report.
4424 for the bug report.
4420
4425
4421 2003-04-01 Fernando Perez <fperez@colorado.edu>
4426 2003-04-01 Fernando Perez <fperez@colorado.edu>
4422
4427
4423 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4428 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4424 where failing to set sys.last_traceback would crash pdb.pm().
4429 where failing to set sys.last_traceback would crash pdb.pm().
4425 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4430 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4426 report.
4431 report.
4427
4432
4428 2003-03-25 Fernando Perez <fperez@colorado.edu>
4433 2003-03-25 Fernando Perez <fperez@colorado.edu>
4429
4434
4430 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4435 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4431 before printing it (it had a lot of spurious blank lines at the
4436 before printing it (it had a lot of spurious blank lines at the
4432 end).
4437 end).
4433
4438
4434 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4439 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4435 output would be sent 21 times! Obviously people don't use this
4440 output would be sent 21 times! Obviously people don't use this
4436 too often, or I would have heard about it.
4441 too often, or I would have heard about it.
4437
4442
4438 2003-03-24 Fernando Perez <fperez@colorado.edu>
4443 2003-03-24 Fernando Perez <fperez@colorado.edu>
4439
4444
4440 * setup.py (scriptfiles): renamed the data_files parameter from
4445 * setup.py (scriptfiles): renamed the data_files parameter from
4441 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4446 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4442 for the patch.
4447 for the patch.
4443
4448
4444 2003-03-20 Fernando Perez <fperez@colorado.edu>
4449 2003-03-20 Fernando Perez <fperez@colorado.edu>
4445
4450
4446 * IPython/genutils.py (error): added error() and fatal()
4451 * IPython/genutils.py (error): added error() and fatal()
4447 functions.
4452 functions.
4448
4453
4449 2003-03-18 *** Released version 0.2.15pre3
4454 2003-03-18 *** Released version 0.2.15pre3
4450
4455
4451 2003-03-18 Fernando Perez <fperez@colorado.edu>
4456 2003-03-18 Fernando Perez <fperez@colorado.edu>
4452
4457
4453 * setupext/install_data_ext.py
4458 * setupext/install_data_ext.py
4454 (install_data_ext.initialize_options): Class contributed by Jack
4459 (install_data_ext.initialize_options): Class contributed by Jack
4455 Moffit for fixing the old distutils hack. He is sending this to
4460 Moffit for fixing the old distutils hack. He is sending this to
4456 the distutils folks so in the future we may not need it as a
4461 the distutils folks so in the future we may not need it as a
4457 private fix.
4462 private fix.
4458
4463
4459 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4464 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4460 changes for Debian packaging. See his patch for full details.
4465 changes for Debian packaging. See his patch for full details.
4461 The old distutils hack of making the ipythonrc* files carry a
4466 The old distutils hack of making the ipythonrc* files carry a
4462 bogus .py extension is gone, at last. Examples were moved to a
4467 bogus .py extension is gone, at last. Examples were moved to a
4463 separate subdir under doc/, and the separate executable scripts
4468 separate subdir under doc/, and the separate executable scripts
4464 now live in their own directory. Overall a great cleanup. The
4469 now live in their own directory. Overall a great cleanup. The
4465 manual was updated to use the new files, and setup.py has been
4470 manual was updated to use the new files, and setup.py has been
4466 fixed for this setup.
4471 fixed for this setup.
4467
4472
4468 * IPython/PyColorize.py (Parser.usage): made non-executable and
4473 * IPython/PyColorize.py (Parser.usage): made non-executable and
4469 created a pycolor wrapper around it to be included as a script.
4474 created a pycolor wrapper around it to be included as a script.
4470
4475
4471 2003-03-12 *** Released version 0.2.15pre2
4476 2003-03-12 *** Released version 0.2.15pre2
4472
4477
4473 2003-03-12 Fernando Perez <fperez@colorado.edu>
4478 2003-03-12 Fernando Perez <fperez@colorado.edu>
4474
4479
4475 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4480 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4476 long-standing problem with garbage characters in some terminals.
4481 long-standing problem with garbage characters in some terminals.
4477 The issue was really that the \001 and \002 escapes must _only_ be
4482 The issue was really that the \001 and \002 escapes must _only_ be
4478 passed to input prompts (which call readline), but _never_ to
4483 passed to input prompts (which call readline), but _never_ to
4479 normal text to be printed on screen. I changed ColorANSI to have
4484 normal text to be printed on screen. I changed ColorANSI to have
4480 two classes: TermColors and InputTermColors, each with the
4485 two classes: TermColors and InputTermColors, each with the
4481 appropriate escapes for input prompts or normal text. The code in
4486 appropriate escapes for input prompts or normal text. The code in
4482 Prompts.py got slightly more complicated, but this very old and
4487 Prompts.py got slightly more complicated, but this very old and
4483 annoying bug is finally fixed.
4488 annoying bug is finally fixed.
4484
4489
4485 All the credit for nailing down the real origin of this problem
4490 All the credit for nailing down the real origin of this problem
4486 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4491 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4487 *Many* thanks to him for spending quite a bit of effort on this.
4492 *Many* thanks to him for spending quite a bit of effort on this.
4488
4493
4489 2003-03-05 *** Released version 0.2.15pre1
4494 2003-03-05 *** Released version 0.2.15pre1
4490
4495
4491 2003-03-03 Fernando Perez <fperez@colorado.edu>
4496 2003-03-03 Fernando Perez <fperez@colorado.edu>
4492
4497
4493 * IPython/FakeModule.py: Moved the former _FakeModule to a
4498 * IPython/FakeModule.py: Moved the former _FakeModule to a
4494 separate file, because it's also needed by Magic (to fix a similar
4499 separate file, because it's also needed by Magic (to fix a similar
4495 pickle-related issue in @run).
4500 pickle-related issue in @run).
4496
4501
4497 2003-03-02 Fernando Perez <fperez@colorado.edu>
4502 2003-03-02 Fernando Perez <fperez@colorado.edu>
4498
4503
4499 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4504 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4500 the autocall option at runtime.
4505 the autocall option at runtime.
4501 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4506 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4502 across Magic.py to start separating Magic from InteractiveShell.
4507 across Magic.py to start separating Magic from InteractiveShell.
4503 (Magic._ofind): Fixed to return proper namespace for dotted
4508 (Magic._ofind): Fixed to return proper namespace for dotted
4504 names. Before, a dotted name would always return 'not currently
4509 names. Before, a dotted name would always return 'not currently
4505 defined', because it would find the 'parent'. s.x would be found,
4510 defined', because it would find the 'parent'. s.x would be found,
4506 but since 'x' isn't defined by itself, it would get confused.
4511 but since 'x' isn't defined by itself, it would get confused.
4507 (Magic.magic_run): Fixed pickling problems reported by Ralf
4512 (Magic.magic_run): Fixed pickling problems reported by Ralf
4508 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4513 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4509 that I'd used when Mike Heeter reported similar issues at the
4514 that I'd used when Mike Heeter reported similar issues at the
4510 top-level, but now for @run. It boils down to injecting the
4515 top-level, but now for @run. It boils down to injecting the
4511 namespace where code is being executed with something that looks
4516 namespace where code is being executed with something that looks
4512 enough like a module to fool pickle.dump(). Since a pickle stores
4517 enough like a module to fool pickle.dump(). Since a pickle stores
4513 a named reference to the importing module, we need this for
4518 a named reference to the importing module, we need this for
4514 pickles to save something sensible.
4519 pickles to save something sensible.
4515
4520
4516 * IPython/ipmaker.py (make_IPython): added an autocall option.
4521 * IPython/ipmaker.py (make_IPython): added an autocall option.
4517
4522
4518 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4523 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4519 the auto-eval code. Now autocalling is an option, and the code is
4524 the auto-eval code. Now autocalling is an option, and the code is
4520 also vastly safer. There is no more eval() involved at all.
4525 also vastly safer. There is no more eval() involved at all.
4521
4526
4522 2003-03-01 Fernando Perez <fperez@colorado.edu>
4527 2003-03-01 Fernando Perez <fperez@colorado.edu>
4523
4528
4524 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4529 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4525 dict with named keys instead of a tuple.
4530 dict with named keys instead of a tuple.
4526
4531
4527 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4532 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4528
4533
4529 * setup.py (make_shortcut): Fixed message about directories
4534 * setup.py (make_shortcut): Fixed message about directories
4530 created during Windows installation (the directories were ok, just
4535 created during Windows installation (the directories were ok, just
4531 the printed message was misleading). Thanks to Chris Liechti
4536 the printed message was misleading). Thanks to Chris Liechti
4532 <cliechti-AT-gmx.net> for the heads up.
4537 <cliechti-AT-gmx.net> for the heads up.
4533
4538
4534 2003-02-21 Fernando Perez <fperez@colorado.edu>
4539 2003-02-21 Fernando Perez <fperez@colorado.edu>
4535
4540
4536 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4541 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4537 of ValueError exception when checking for auto-execution. This
4542 of ValueError exception when checking for auto-execution. This
4538 one is raised by things like Numeric arrays arr.flat when the
4543 one is raised by things like Numeric arrays arr.flat when the
4539 array is non-contiguous.
4544 array is non-contiguous.
4540
4545
4541 2003-01-31 Fernando Perez <fperez@colorado.edu>
4546 2003-01-31 Fernando Perez <fperez@colorado.edu>
4542
4547
4543 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4548 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4544 not return any value at all (even though the command would get
4549 not return any value at all (even though the command would get
4545 executed).
4550 executed).
4546 (xsys): Flush stdout right after printing the command to ensure
4551 (xsys): Flush stdout right after printing the command to ensure
4547 proper ordering of commands and command output in the total
4552 proper ordering of commands and command output in the total
4548 output.
4553 output.
4549 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4554 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4550 system/getoutput as defaults. The old ones are kept for
4555 system/getoutput as defaults. The old ones are kept for
4551 compatibility reasons, so no code which uses this library needs
4556 compatibility reasons, so no code which uses this library needs
4552 changing.
4557 changing.
4553
4558
4554 2003-01-27 *** Released version 0.2.14
4559 2003-01-27 *** Released version 0.2.14
4555
4560
4556 2003-01-25 Fernando Perez <fperez@colorado.edu>
4561 2003-01-25 Fernando Perez <fperez@colorado.edu>
4557
4562
4558 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4563 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4559 functions defined in previous edit sessions could not be re-edited
4564 functions defined in previous edit sessions could not be re-edited
4560 (because the temp files were immediately removed). Now temp files
4565 (because the temp files were immediately removed). Now temp files
4561 are removed only at IPython's exit.
4566 are removed only at IPython's exit.
4562 (Magic.magic_run): Improved @run to perform shell-like expansions
4567 (Magic.magic_run): Improved @run to perform shell-like expansions
4563 on its arguments (~users and $VARS). With this, @run becomes more
4568 on its arguments (~users and $VARS). With this, @run becomes more
4564 like a normal command-line.
4569 like a normal command-line.
4565
4570
4566 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4571 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4567 bugs related to embedding and cleaned up that code. A fairly
4572 bugs related to embedding and cleaned up that code. A fairly
4568 important one was the impossibility to access the global namespace
4573 important one was the impossibility to access the global namespace
4569 through the embedded IPython (only local variables were visible).
4574 through the embedded IPython (only local variables were visible).
4570
4575
4571 2003-01-14 Fernando Perez <fperez@colorado.edu>
4576 2003-01-14 Fernando Perez <fperez@colorado.edu>
4572
4577
4573 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4578 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4574 auto-calling to be a bit more conservative. Now it doesn't get
4579 auto-calling to be a bit more conservative. Now it doesn't get
4575 triggered if any of '!=()<>' are in the rest of the input line, to
4580 triggered if any of '!=()<>' are in the rest of the input line, to
4576 allow comparing callables. Thanks to Alex for the heads up.
4581 allow comparing callables. Thanks to Alex for the heads up.
4577
4582
4578 2003-01-07 Fernando Perez <fperez@colorado.edu>
4583 2003-01-07 Fernando Perez <fperez@colorado.edu>
4579
4584
4580 * IPython/genutils.py (page): fixed estimation of the number of
4585 * IPython/genutils.py (page): fixed estimation of the number of
4581 lines in a string to be paged to simply count newlines. This
4586 lines in a string to be paged to simply count newlines. This
4582 prevents over-guessing due to embedded escape sequences. A better
4587 prevents over-guessing due to embedded escape sequences. A better
4583 long-term solution would involve stripping out the control chars
4588 long-term solution would involve stripping out the control chars
4584 for the count, but it's potentially so expensive I just don't
4589 for the count, but it's potentially so expensive I just don't
4585 think it's worth doing.
4590 think it's worth doing.
4586
4591
4587 2002-12-19 *** Released version 0.2.14pre50
4592 2002-12-19 *** Released version 0.2.14pre50
4588
4593
4589 2002-12-19 Fernando Perez <fperez@colorado.edu>
4594 2002-12-19 Fernando Perez <fperez@colorado.edu>
4590
4595
4591 * tools/release (version): Changed release scripts to inform
4596 * tools/release (version): Changed release scripts to inform
4592 Andrea and build a NEWS file with a list of recent changes.
4597 Andrea and build a NEWS file with a list of recent changes.
4593
4598
4594 * IPython/ColorANSI.py (__all__): changed terminal detection
4599 * IPython/ColorANSI.py (__all__): changed terminal detection
4595 code. Seems to work better for xterms without breaking
4600 code. Seems to work better for xterms without breaking
4596 konsole. Will need more testing to determine if WinXP and Mac OSX
4601 konsole. Will need more testing to determine if WinXP and Mac OSX
4597 also work ok.
4602 also work ok.
4598
4603
4599 2002-12-18 *** Released version 0.2.14pre49
4604 2002-12-18 *** Released version 0.2.14pre49
4600
4605
4601 2002-12-18 Fernando Perez <fperez@colorado.edu>
4606 2002-12-18 Fernando Perez <fperez@colorado.edu>
4602
4607
4603 * Docs: added new info about Mac OSX, from Andrea.
4608 * Docs: added new info about Mac OSX, from Andrea.
4604
4609
4605 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4610 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4606 allow direct plotting of python strings whose format is the same
4611 allow direct plotting of python strings whose format is the same
4607 of gnuplot data files.
4612 of gnuplot data files.
4608
4613
4609 2002-12-16 Fernando Perez <fperez@colorado.edu>
4614 2002-12-16 Fernando Perez <fperez@colorado.edu>
4610
4615
4611 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4616 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4612 value of exit question to be acknowledged.
4617 value of exit question to be acknowledged.
4613
4618
4614 2002-12-03 Fernando Perez <fperez@colorado.edu>
4619 2002-12-03 Fernando Perez <fperez@colorado.edu>
4615
4620
4616 * IPython/ipmaker.py: removed generators, which had been added
4621 * IPython/ipmaker.py: removed generators, which had been added
4617 by mistake in an earlier debugging run. This was causing trouble
4622 by mistake in an earlier debugging run. This was causing trouble
4618 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4623 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4619 for pointing this out.
4624 for pointing this out.
4620
4625
4621 2002-11-17 Fernando Perez <fperez@colorado.edu>
4626 2002-11-17 Fernando Perez <fperez@colorado.edu>
4622
4627
4623 * Manual: updated the Gnuplot section.
4628 * Manual: updated the Gnuplot section.
4624
4629
4625 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4630 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4626 a much better split of what goes in Runtime and what goes in
4631 a much better split of what goes in Runtime and what goes in
4627 Interactive.
4632 Interactive.
4628
4633
4629 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4634 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4630 being imported from iplib.
4635 being imported from iplib.
4631
4636
4632 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4637 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4633 for command-passing. Now the global Gnuplot instance is called
4638 for command-passing. Now the global Gnuplot instance is called
4634 'gp' instead of 'g', which was really a far too fragile and
4639 'gp' instead of 'g', which was really a far too fragile and
4635 common name.
4640 common name.
4636
4641
4637 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4642 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4638 bounding boxes generated by Gnuplot for square plots.
4643 bounding boxes generated by Gnuplot for square plots.
4639
4644
4640 * IPython/genutils.py (popkey): new function added. I should
4645 * IPython/genutils.py (popkey): new function added. I should
4641 suggest this on c.l.py as a dict method, it seems useful.
4646 suggest this on c.l.py as a dict method, it seems useful.
4642
4647
4643 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4648 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4644 to transparently handle PostScript generation. MUCH better than
4649 to transparently handle PostScript generation. MUCH better than
4645 the previous plot_eps/replot_eps (which I removed now). The code
4650 the previous plot_eps/replot_eps (which I removed now). The code
4646 is also fairly clean and well documented now (including
4651 is also fairly clean and well documented now (including
4647 docstrings).
4652 docstrings).
4648
4653
4649 2002-11-13 Fernando Perez <fperez@colorado.edu>
4654 2002-11-13 Fernando Perez <fperez@colorado.edu>
4650
4655
4651 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4656 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4652 (inconsistent with options).
4657 (inconsistent with options).
4653
4658
4654 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4659 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4655 manually disabled, I don't know why. Fixed it.
4660 manually disabled, I don't know why. Fixed it.
4656 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4661 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4657 eps output.
4662 eps output.
4658
4663
4659 2002-11-12 Fernando Perez <fperez@colorado.edu>
4664 2002-11-12 Fernando Perez <fperez@colorado.edu>
4660
4665
4661 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4666 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4662 don't propagate up to caller. Fixes crash reported by François
4667 don't propagate up to caller. Fixes crash reported by François
4663 Pinard.
4668 Pinard.
4664
4669
4665 2002-11-09 Fernando Perez <fperez@colorado.edu>
4670 2002-11-09 Fernando Perez <fperez@colorado.edu>
4666
4671
4667 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4672 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4668 history file for new users.
4673 history file for new users.
4669 (make_IPython): fixed bug where initial install would leave the
4674 (make_IPython): fixed bug where initial install would leave the
4670 user running in the .ipython dir.
4675 user running in the .ipython dir.
4671 (make_IPython): fixed bug where config dir .ipython would be
4676 (make_IPython): fixed bug where config dir .ipython would be
4672 created regardless of the given -ipythondir option. Thanks to Cory
4677 created regardless of the given -ipythondir option. Thanks to Cory
4673 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4678 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4674
4679
4675 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4680 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4676 type confirmations. Will need to use it in all of IPython's code
4681 type confirmations. Will need to use it in all of IPython's code
4677 consistently.
4682 consistently.
4678
4683
4679 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4684 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4680 context to print 31 lines instead of the default 5. This will make
4685 context to print 31 lines instead of the default 5. This will make
4681 the crash reports extremely detailed in case the problem is in
4686 the crash reports extremely detailed in case the problem is in
4682 libraries I don't have access to.
4687 libraries I don't have access to.
4683
4688
4684 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4689 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4685 line of defense' code to still crash, but giving users fair
4690 line of defense' code to still crash, but giving users fair
4686 warning. I don't want internal errors to go unreported: if there's
4691 warning. I don't want internal errors to go unreported: if there's
4687 an internal problem, IPython should crash and generate a full
4692 an internal problem, IPython should crash and generate a full
4688 report.
4693 report.
4689
4694
4690 2002-11-08 Fernando Perez <fperez@colorado.edu>
4695 2002-11-08 Fernando Perez <fperez@colorado.edu>
4691
4696
4692 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4697 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4693 otherwise uncaught exceptions which can appear if people set
4698 otherwise uncaught exceptions which can appear if people set
4694 sys.stdout to something badly broken. Thanks to a crash report
4699 sys.stdout to something badly broken. Thanks to a crash report
4695 from henni-AT-mail.brainbot.com.
4700 from henni-AT-mail.brainbot.com.
4696
4701
4697 2002-11-04 Fernando Perez <fperez@colorado.edu>
4702 2002-11-04 Fernando Perez <fperez@colorado.edu>
4698
4703
4699 * IPython/iplib.py (InteractiveShell.interact): added
4704 * IPython/iplib.py (InteractiveShell.interact): added
4700 __IPYTHON__active to the builtins. It's a flag which goes on when
4705 __IPYTHON__active to the builtins. It's a flag which goes on when
4701 the interaction starts and goes off again when it stops. This
4706 the interaction starts and goes off again when it stops. This
4702 allows embedding code to detect being inside IPython. Before this
4707 allows embedding code to detect being inside IPython. Before this
4703 was done via __IPYTHON__, but that only shows that an IPython
4708 was done via __IPYTHON__, but that only shows that an IPython
4704 instance has been created.
4709 instance has been created.
4705
4710
4706 * IPython/Magic.py (Magic.magic_env): I realized that in a
4711 * IPython/Magic.py (Magic.magic_env): I realized that in a
4707 UserDict, instance.data holds the data as a normal dict. So I
4712 UserDict, instance.data holds the data as a normal dict. So I
4708 modified @env to return os.environ.data instead of rebuilding a
4713 modified @env to return os.environ.data instead of rebuilding a
4709 dict by hand.
4714 dict by hand.
4710
4715
4711 2002-11-02 Fernando Perez <fperez@colorado.edu>
4716 2002-11-02 Fernando Perez <fperez@colorado.edu>
4712
4717
4713 * IPython/genutils.py (warn): changed so that level 1 prints no
4718 * IPython/genutils.py (warn): changed so that level 1 prints no
4714 header. Level 2 is now the default (with 'WARNING' header, as
4719 header. Level 2 is now the default (with 'WARNING' header, as
4715 before). I think I tracked all places where changes were needed in
4720 before). I think I tracked all places where changes were needed in
4716 IPython, but outside code using the old level numbering may have
4721 IPython, but outside code using the old level numbering may have
4717 broken.
4722 broken.
4718
4723
4719 * IPython/iplib.py (InteractiveShell.runcode): added this to
4724 * IPython/iplib.py (InteractiveShell.runcode): added this to
4720 handle the tracebacks in SystemExit traps correctly. The previous
4725 handle the tracebacks in SystemExit traps correctly. The previous
4721 code (through interact) was printing more of the stack than
4726 code (through interact) was printing more of the stack than
4722 necessary, showing IPython internal code to the user.
4727 necessary, showing IPython internal code to the user.
4723
4728
4724 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4729 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4725 default. Now that the default at the confirmation prompt is yes,
4730 default. Now that the default at the confirmation prompt is yes,
4726 it's not so intrusive. François' argument that ipython sessions
4731 it's not so intrusive. François' argument that ipython sessions
4727 tend to be complex enough not to lose them from an accidental C-d,
4732 tend to be complex enough not to lose them from an accidental C-d,
4728 is a valid one.
4733 is a valid one.
4729
4734
4730 * IPython/iplib.py (InteractiveShell.interact): added a
4735 * IPython/iplib.py (InteractiveShell.interact): added a
4731 showtraceback() call to the SystemExit trap, and modified the exit
4736 showtraceback() call to the SystemExit trap, and modified the exit
4732 confirmation to have yes as the default.
4737 confirmation to have yes as the default.
4733
4738
4734 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4739 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4735 this file. It's been gone from the code for a long time, this was
4740 this file. It's been gone from the code for a long time, this was
4736 simply leftover junk.
4741 simply leftover junk.
4737
4742
4738 2002-11-01 Fernando Perez <fperez@colorado.edu>
4743 2002-11-01 Fernando Perez <fperez@colorado.edu>
4739
4744
4740 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4745 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4741 added. If set, IPython now traps EOF and asks for
4746 added. If set, IPython now traps EOF and asks for
4742 confirmation. After a request by François Pinard.
4747 confirmation. After a request by François Pinard.
4743
4748
4744 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4749 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4745 of @abort, and with a new (better) mechanism for handling the
4750 of @abort, and with a new (better) mechanism for handling the
4746 exceptions.
4751 exceptions.
4747
4752
4748 2002-10-27 Fernando Perez <fperez@colorado.edu>
4753 2002-10-27 Fernando Perez <fperez@colorado.edu>
4749
4754
4750 * IPython/usage.py (__doc__): updated the --help information and
4755 * IPython/usage.py (__doc__): updated the --help information and
4751 the ipythonrc file to indicate that -log generates
4756 the ipythonrc file to indicate that -log generates
4752 ./ipython.log. Also fixed the corresponding info in @logstart.
4757 ./ipython.log. Also fixed the corresponding info in @logstart.
4753 This and several other fixes in the manuals thanks to reports by
4758 This and several other fixes in the manuals thanks to reports by
4754 François Pinard <pinard-AT-iro.umontreal.ca>.
4759 François Pinard <pinard-AT-iro.umontreal.ca>.
4755
4760
4756 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4761 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4757 refer to @logstart (instead of @log, which doesn't exist).
4762 refer to @logstart (instead of @log, which doesn't exist).
4758
4763
4759 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4764 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4760 AttributeError crash. Thanks to Christopher Armstrong
4765 AttributeError crash. Thanks to Christopher Armstrong
4761 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4766 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4762 introduced recently (in 0.2.14pre37) with the fix to the eval
4767 introduced recently (in 0.2.14pre37) with the fix to the eval
4763 problem mentioned below.
4768 problem mentioned below.
4764
4769
4765 2002-10-17 Fernando Perez <fperez@colorado.edu>
4770 2002-10-17 Fernando Perez <fperez@colorado.edu>
4766
4771
4767 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4772 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4768 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4773 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4769
4774
4770 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4775 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4771 this function to fix a problem reported by Alex Schmolck. He saw
4776 this function to fix a problem reported by Alex Schmolck. He saw
4772 it with list comprehensions and generators, which were getting
4777 it with list comprehensions and generators, which were getting
4773 called twice. The real problem was an 'eval' call in testing for
4778 called twice. The real problem was an 'eval' call in testing for
4774 automagic which was evaluating the input line silently.
4779 automagic which was evaluating the input line silently.
4775
4780
4776 This is a potentially very nasty bug, if the input has side
4781 This is a potentially very nasty bug, if the input has side
4777 effects which must not be repeated. The code is much cleaner now,
4782 effects which must not be repeated. The code is much cleaner now,
4778 without any blanket 'except' left and with a regexp test for
4783 without any blanket 'except' left and with a regexp test for
4779 actual function names.
4784 actual function names.
4780
4785
4781 But an eval remains, which I'm not fully comfortable with. I just
4786 But an eval remains, which I'm not fully comfortable with. I just
4782 don't know how to find out if an expression could be a callable in
4787 don't know how to find out if an expression could be a callable in
4783 the user's namespace without doing an eval on the string. However
4788 the user's namespace without doing an eval on the string. However
4784 that string is now much more strictly checked so that no code
4789 that string is now much more strictly checked so that no code
4785 slips by, so the eval should only happen for things that can
4790 slips by, so the eval should only happen for things that can
4786 really be only function/method names.
4791 really be only function/method names.
4787
4792
4788 2002-10-15 Fernando Perez <fperez@colorado.edu>
4793 2002-10-15 Fernando Perez <fperez@colorado.edu>
4789
4794
4790 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4795 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4791 OSX information to main manual, removed README_Mac_OSX file from
4796 OSX information to main manual, removed README_Mac_OSX file from
4792 distribution. Also updated credits for recent additions.
4797 distribution. Also updated credits for recent additions.
4793
4798
4794 2002-10-10 Fernando Perez <fperez@colorado.edu>
4799 2002-10-10 Fernando Perez <fperez@colorado.edu>
4795
4800
4796 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4801 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4797 terminal-related issues. Many thanks to Andrea Riciputi
4802 terminal-related issues. Many thanks to Andrea Riciputi
4798 <andrea.riciputi-AT-libero.it> for writing it.
4803 <andrea.riciputi-AT-libero.it> for writing it.
4799
4804
4800 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4805 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4801 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4806 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4802
4807
4803 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4808 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4804 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4809 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4805 <syver-en-AT-online.no> who both submitted patches for this problem.
4810 <syver-en-AT-online.no> who both submitted patches for this problem.
4806
4811
4807 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4812 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4808 global embedding to make sure that things don't overwrite user
4813 global embedding to make sure that things don't overwrite user
4809 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4814 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4810
4815
4811 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4816 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4812 compatibility. Thanks to Hayden Callow
4817 compatibility. Thanks to Hayden Callow
4813 <h.callow-AT-elec.canterbury.ac.nz>
4818 <h.callow-AT-elec.canterbury.ac.nz>
4814
4819
4815 2002-10-04 Fernando Perez <fperez@colorado.edu>
4820 2002-10-04 Fernando Perez <fperez@colorado.edu>
4816
4821
4817 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4822 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4818 Gnuplot.File objects.
4823 Gnuplot.File objects.
4819
4824
4820 2002-07-23 Fernando Perez <fperez@colorado.edu>
4825 2002-07-23 Fernando Perez <fperez@colorado.edu>
4821
4826
4822 * IPython/genutils.py (timing): Added timings() and timing() for
4827 * IPython/genutils.py (timing): Added timings() and timing() for
4823 quick access to the most commonly needed data, the execution
4828 quick access to the most commonly needed data, the execution
4824 times. Old timing() renamed to timings_out().
4829 times. Old timing() renamed to timings_out().
4825
4830
4826 2002-07-18 Fernando Perez <fperez@colorado.edu>
4831 2002-07-18 Fernando Perez <fperez@colorado.edu>
4827
4832
4828 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4833 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4829 bug with nested instances disrupting the parent's tab completion.
4834 bug with nested instances disrupting the parent's tab completion.
4830
4835
4831 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4836 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4832 all_completions code to begin the emacs integration.
4837 all_completions code to begin the emacs integration.
4833
4838
4834 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4839 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4835 argument to allow titling individual arrays when plotting.
4840 argument to allow titling individual arrays when plotting.
4836
4841
4837 2002-07-15 Fernando Perez <fperez@colorado.edu>
4842 2002-07-15 Fernando Perez <fperez@colorado.edu>
4838
4843
4839 * setup.py (make_shortcut): changed to retrieve the value of
4844 * setup.py (make_shortcut): changed to retrieve the value of
4840 'Program Files' directory from the registry (this value changes in
4845 'Program Files' directory from the registry (this value changes in
4841 non-english versions of Windows). Thanks to Thomas Fanslau
4846 non-english versions of Windows). Thanks to Thomas Fanslau
4842 <tfanslau-AT-gmx.de> for the report.
4847 <tfanslau-AT-gmx.de> for the report.
4843
4848
4844 2002-07-10 Fernando Perez <fperez@colorado.edu>
4849 2002-07-10 Fernando Perez <fperez@colorado.edu>
4845
4850
4846 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4851 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4847 a bug in pdb, which crashes if a line with only whitespace is
4852 a bug in pdb, which crashes if a line with only whitespace is
4848 entered. Bug report submitted to sourceforge.
4853 entered. Bug report submitted to sourceforge.
4849
4854
4850 2002-07-09 Fernando Perez <fperez@colorado.edu>
4855 2002-07-09 Fernando Perez <fperez@colorado.edu>
4851
4856
4852 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4857 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4853 reporting exceptions (it's a bug in inspect.py, I just set a
4858 reporting exceptions (it's a bug in inspect.py, I just set a
4854 workaround).
4859 workaround).
4855
4860
4856 2002-07-08 Fernando Perez <fperez@colorado.edu>
4861 2002-07-08 Fernando Perez <fperez@colorado.edu>
4857
4862
4858 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4863 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4859 __IPYTHON__ in __builtins__ to show up in user_ns.
4864 __IPYTHON__ in __builtins__ to show up in user_ns.
4860
4865
4861 2002-07-03 Fernando Perez <fperez@colorado.edu>
4866 2002-07-03 Fernando Perez <fperez@colorado.edu>
4862
4867
4863 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4868 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4864 name from @gp_set_instance to @gp_set_default.
4869 name from @gp_set_instance to @gp_set_default.
4865
4870
4866 * IPython/ipmaker.py (make_IPython): default editor value set to
4871 * IPython/ipmaker.py (make_IPython): default editor value set to
4867 '0' (a string), to match the rc file. Otherwise will crash when
4872 '0' (a string), to match the rc file. Otherwise will crash when
4868 .strip() is called on it.
4873 .strip() is called on it.
4869
4874
4870
4875
4871 2002-06-28 Fernando Perez <fperez@colorado.edu>
4876 2002-06-28 Fernando Perez <fperez@colorado.edu>
4872
4877
4873 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4878 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4874 of files in current directory when a file is executed via
4879 of files in current directory when a file is executed via
4875 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4880 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4876
4881
4877 * setup.py (manfiles): fix for rpm builds, submitted by RA
4882 * setup.py (manfiles): fix for rpm builds, submitted by RA
4878 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4883 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4879
4884
4880 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4885 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4881 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4886 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4882 string!). A. Schmolck caught this one.
4887 string!). A. Schmolck caught this one.
4883
4888
4884 2002-06-27 Fernando Perez <fperez@colorado.edu>
4889 2002-06-27 Fernando Perez <fperez@colorado.edu>
4885
4890
4886 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4891 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4887 defined files at the cmd line. __name__ wasn't being set to
4892 defined files at the cmd line. __name__ wasn't being set to
4888 __main__.
4893 __main__.
4889
4894
4890 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4895 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4891 regular lists and tuples besides Numeric arrays.
4896 regular lists and tuples besides Numeric arrays.
4892
4897
4893 * IPython/Prompts.py (CachedOutput.__call__): Added output
4898 * IPython/Prompts.py (CachedOutput.__call__): Added output
4894 supression for input ending with ';'. Similar to Mathematica and
4899 supression for input ending with ';'. Similar to Mathematica and
4895 Matlab. The _* vars and Out[] list are still updated, just like
4900 Matlab. The _* vars and Out[] list are still updated, just like
4896 Mathematica behaves.
4901 Mathematica behaves.
4897
4902
4898 2002-06-25 Fernando Perez <fperez@colorado.edu>
4903 2002-06-25 Fernando Perez <fperez@colorado.edu>
4899
4904
4900 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4905 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4901 .ini extensions for profiels under Windows.
4906 .ini extensions for profiels under Windows.
4902
4907
4903 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4908 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4904 string form. Fix contributed by Alexander Schmolck
4909 string form. Fix contributed by Alexander Schmolck
4905 <a.schmolck-AT-gmx.net>
4910 <a.schmolck-AT-gmx.net>
4906
4911
4907 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4912 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4908 pre-configured Gnuplot instance.
4913 pre-configured Gnuplot instance.
4909
4914
4910 2002-06-21 Fernando Perez <fperez@colorado.edu>
4915 2002-06-21 Fernando Perez <fperez@colorado.edu>
4911
4916
4912 * IPython/numutils.py (exp_safe): new function, works around the
4917 * IPython/numutils.py (exp_safe): new function, works around the
4913 underflow problems in Numeric.
4918 underflow problems in Numeric.
4914 (log2): New fn. Safe log in base 2: returns exact integer answer
4919 (log2): New fn. Safe log in base 2: returns exact integer answer
4915 for exact integer powers of 2.
4920 for exact integer powers of 2.
4916
4921
4917 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4922 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4918 properly.
4923 properly.
4919
4924
4920 2002-06-20 Fernando Perez <fperez@colorado.edu>
4925 2002-06-20 Fernando Perez <fperez@colorado.edu>
4921
4926
4922 * IPython/genutils.py (timing): new function like
4927 * IPython/genutils.py (timing): new function like
4923 Mathematica's. Similar to time_test, but returns more info.
4928 Mathematica's. Similar to time_test, but returns more info.
4924
4929
4925 2002-06-18 Fernando Perez <fperez@colorado.edu>
4930 2002-06-18 Fernando Perez <fperez@colorado.edu>
4926
4931
4927 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4932 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4928 according to Mike Heeter's suggestions.
4933 according to Mike Heeter's suggestions.
4929
4934
4930 2002-06-16 Fernando Perez <fperez@colorado.edu>
4935 2002-06-16 Fernando Perez <fperez@colorado.edu>
4931
4936
4932 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4937 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4933 system. GnuplotMagic is gone as a user-directory option. New files
4938 system. GnuplotMagic is gone as a user-directory option. New files
4934 make it easier to use all the gnuplot stuff both from external
4939 make it easier to use all the gnuplot stuff both from external
4935 programs as well as from IPython. Had to rewrite part of
4940 programs as well as from IPython. Had to rewrite part of
4936 hardcopy() b/c of a strange bug: often the ps files simply don't
4941 hardcopy() b/c of a strange bug: often the ps files simply don't
4937 get created, and require a repeat of the command (often several
4942 get created, and require a repeat of the command (often several
4938 times).
4943 times).
4939
4944
4940 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4945 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4941 resolve output channel at call time, so that if sys.stderr has
4946 resolve output channel at call time, so that if sys.stderr has
4942 been redirected by user this gets honored.
4947 been redirected by user this gets honored.
4943
4948
4944 2002-06-13 Fernando Perez <fperez@colorado.edu>
4949 2002-06-13 Fernando Perez <fperez@colorado.edu>
4945
4950
4946 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4951 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4947 IPShell. Kept a copy with the old names to avoid breaking people's
4952 IPShell. Kept a copy with the old names to avoid breaking people's
4948 embedded code.
4953 embedded code.
4949
4954
4950 * IPython/ipython: simplified it to the bare minimum after
4955 * IPython/ipython: simplified it to the bare minimum after
4951 Holger's suggestions. Added info about how to use it in
4956 Holger's suggestions. Added info about how to use it in
4952 PYTHONSTARTUP.
4957 PYTHONSTARTUP.
4953
4958
4954 * IPython/Shell.py (IPythonShell): changed the options passing
4959 * IPython/Shell.py (IPythonShell): changed the options passing
4955 from a string with funky %s replacements to a straight list. Maybe
4960 from a string with funky %s replacements to a straight list. Maybe
4956 a bit more typing, but it follows sys.argv conventions, so there's
4961 a bit more typing, but it follows sys.argv conventions, so there's
4957 less special-casing to remember.
4962 less special-casing to remember.
4958
4963
4959 2002-06-12 Fernando Perez <fperez@colorado.edu>
4964 2002-06-12 Fernando Perez <fperez@colorado.edu>
4960
4965
4961 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4966 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4962 command. Thanks to a suggestion by Mike Heeter.
4967 command. Thanks to a suggestion by Mike Heeter.
4963 (Magic.magic_pfile): added behavior to look at filenames if given
4968 (Magic.magic_pfile): added behavior to look at filenames if given
4964 arg is not a defined object.
4969 arg is not a defined object.
4965 (Magic.magic_save): New @save function to save code snippets. Also
4970 (Magic.magic_save): New @save function to save code snippets. Also
4966 a Mike Heeter idea.
4971 a Mike Heeter idea.
4967
4972
4968 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4973 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4969 plot() and replot(). Much more convenient now, especially for
4974 plot() and replot(). Much more convenient now, especially for
4970 interactive use.
4975 interactive use.
4971
4976
4972 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4977 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4973 filenames.
4978 filenames.
4974
4979
4975 2002-06-02 Fernando Perez <fperez@colorado.edu>
4980 2002-06-02 Fernando Perez <fperez@colorado.edu>
4976
4981
4977 * IPython/Struct.py (Struct.__init__): modified to admit
4982 * IPython/Struct.py (Struct.__init__): modified to admit
4978 initialization via another struct.
4983 initialization via another struct.
4979
4984
4980 * IPython/genutils.py (SystemExec.__init__): New stateful
4985 * IPython/genutils.py (SystemExec.__init__): New stateful
4981 interface to xsys and bq. Useful for writing system scripts.
4986 interface to xsys and bq. Useful for writing system scripts.
4982
4987
4983 2002-05-30 Fernando Perez <fperez@colorado.edu>
4988 2002-05-30 Fernando Perez <fperez@colorado.edu>
4984
4989
4985 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4990 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4986 documents. This will make the user download smaller (it's getting
4991 documents. This will make the user download smaller (it's getting
4987 too big).
4992 too big).
4988
4993
4989 2002-05-29 Fernando Perez <fperez@colorado.edu>
4994 2002-05-29 Fernando Perez <fperez@colorado.edu>
4990
4995
4991 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4996 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4992 fix problems with shelve and pickle. Seems to work, but I don't
4997 fix problems with shelve and pickle. Seems to work, but I don't
4993 know if corner cases break it. Thanks to Mike Heeter
4998 know if corner cases break it. Thanks to Mike Heeter
4994 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4999 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4995
5000
4996 2002-05-24 Fernando Perez <fperez@colorado.edu>
5001 2002-05-24 Fernando Perez <fperez@colorado.edu>
4997
5002
4998 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5003 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4999 macros having broken.
5004 macros having broken.
5000
5005
5001 2002-05-21 Fernando Perez <fperez@colorado.edu>
5006 2002-05-21 Fernando Perez <fperez@colorado.edu>
5002
5007
5003 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5008 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5004 introduced logging bug: all history before logging started was
5009 introduced logging bug: all history before logging started was
5005 being written one character per line! This came from the redesign
5010 being written one character per line! This came from the redesign
5006 of the input history as a special list which slices to strings,
5011 of the input history as a special list which slices to strings,
5007 not to lists.
5012 not to lists.
5008
5013
5009 2002-05-20 Fernando Perez <fperez@colorado.edu>
5014 2002-05-20 Fernando Perez <fperez@colorado.edu>
5010
5015
5011 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5016 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5012 be an attribute of all classes in this module. The design of these
5017 be an attribute of all classes in this module. The design of these
5013 classes needs some serious overhauling.
5018 classes needs some serious overhauling.
5014
5019
5015 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5020 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5016 which was ignoring '_' in option names.
5021 which was ignoring '_' in option names.
5017
5022
5018 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5023 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5019 'Verbose_novars' to 'Context' and made it the new default. It's a
5024 'Verbose_novars' to 'Context' and made it the new default. It's a
5020 bit more readable and also safer than verbose.
5025 bit more readable and also safer than verbose.
5021
5026
5022 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5027 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5023 triple-quoted strings.
5028 triple-quoted strings.
5024
5029
5025 * IPython/OInspect.py (__all__): new module exposing the object
5030 * IPython/OInspect.py (__all__): new module exposing the object
5026 introspection facilities. Now the corresponding magics are dummy
5031 introspection facilities. Now the corresponding magics are dummy
5027 wrappers around this. Having this module will make it much easier
5032 wrappers around this. Having this module will make it much easier
5028 to put these functions into our modified pdb.
5033 to put these functions into our modified pdb.
5029 This new object inspector system uses the new colorizing module,
5034 This new object inspector system uses the new colorizing module,
5030 so source code and other things are nicely syntax highlighted.
5035 so source code and other things are nicely syntax highlighted.
5031
5036
5032 2002-05-18 Fernando Perez <fperez@colorado.edu>
5037 2002-05-18 Fernando Perez <fperez@colorado.edu>
5033
5038
5034 * IPython/ColorANSI.py: Split the coloring tools into a separate
5039 * IPython/ColorANSI.py: Split the coloring tools into a separate
5035 module so I can use them in other code easier (they were part of
5040 module so I can use them in other code easier (they were part of
5036 ultraTB).
5041 ultraTB).
5037
5042
5038 2002-05-17 Fernando Perez <fperez@colorado.edu>
5043 2002-05-17 Fernando Perez <fperez@colorado.edu>
5039
5044
5040 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5045 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5041 fixed it to set the global 'g' also to the called instance, as
5046 fixed it to set the global 'g' also to the called instance, as
5042 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5047 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5043 user's 'g' variables).
5048 user's 'g' variables).
5044
5049
5045 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5050 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5046 global variables (aliases to _ih,_oh) so that users which expect
5051 global variables (aliases to _ih,_oh) so that users which expect
5047 In[5] or Out[7] to work aren't unpleasantly surprised.
5052 In[5] or Out[7] to work aren't unpleasantly surprised.
5048 (InputList.__getslice__): new class to allow executing slices of
5053 (InputList.__getslice__): new class to allow executing slices of
5049 input history directly. Very simple class, complements the use of
5054 input history directly. Very simple class, complements the use of
5050 macros.
5055 macros.
5051
5056
5052 2002-05-16 Fernando Perez <fperez@colorado.edu>
5057 2002-05-16 Fernando Perez <fperez@colorado.edu>
5053
5058
5054 * setup.py (docdirbase): make doc directory be just doc/IPython
5059 * setup.py (docdirbase): make doc directory be just doc/IPython
5055 without version numbers, it will reduce clutter for users.
5060 without version numbers, it will reduce clutter for users.
5056
5061
5057 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5062 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5058 execfile call to prevent possible memory leak. See for details:
5063 execfile call to prevent possible memory leak. See for details:
5059 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5064 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5060
5065
5061 2002-05-15 Fernando Perez <fperez@colorado.edu>
5066 2002-05-15 Fernando Perez <fperez@colorado.edu>
5062
5067
5063 * IPython/Magic.py (Magic.magic_psource): made the object
5068 * IPython/Magic.py (Magic.magic_psource): made the object
5064 introspection names be more standard: pdoc, pdef, pfile and
5069 introspection names be more standard: pdoc, pdef, pfile and
5065 psource. They all print/page their output, and it makes
5070 psource. They all print/page their output, and it makes
5066 remembering them easier. Kept old names for compatibility as
5071 remembering them easier. Kept old names for compatibility as
5067 aliases.
5072 aliases.
5068
5073
5069 2002-05-14 Fernando Perez <fperez@colorado.edu>
5074 2002-05-14 Fernando Perez <fperez@colorado.edu>
5070
5075
5071 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5076 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5072 what the mouse problem was. The trick is to use gnuplot with temp
5077 what the mouse problem was. The trick is to use gnuplot with temp
5073 files and NOT with pipes (for data communication), because having
5078 files and NOT with pipes (for data communication), because having
5074 both pipes and the mouse on is bad news.
5079 both pipes and the mouse on is bad news.
5075
5080
5076 2002-05-13 Fernando Perez <fperez@colorado.edu>
5081 2002-05-13 Fernando Perez <fperez@colorado.edu>
5077
5082
5078 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5083 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5079 bug. Information would be reported about builtins even when
5084 bug. Information would be reported about builtins even when
5080 user-defined functions overrode them.
5085 user-defined functions overrode them.
5081
5086
5082 2002-05-11 Fernando Perez <fperez@colorado.edu>
5087 2002-05-11 Fernando Perez <fperez@colorado.edu>
5083
5088
5084 * IPython/__init__.py (__all__): removed FlexCompleter from
5089 * IPython/__init__.py (__all__): removed FlexCompleter from
5085 __all__ so that things don't fail in platforms without readline.
5090 __all__ so that things don't fail in platforms without readline.
5086
5091
5087 2002-05-10 Fernando Perez <fperez@colorado.edu>
5092 2002-05-10 Fernando Perez <fperez@colorado.edu>
5088
5093
5089 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5094 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5090 it requires Numeric, effectively making Numeric a dependency for
5095 it requires Numeric, effectively making Numeric a dependency for
5091 IPython.
5096 IPython.
5092
5097
5093 * Released 0.2.13
5098 * Released 0.2.13
5094
5099
5095 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5100 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5096 profiler interface. Now all the major options from the profiler
5101 profiler interface. Now all the major options from the profiler
5097 module are directly supported in IPython, both for single
5102 module are directly supported in IPython, both for single
5098 expressions (@prun) and for full programs (@run -p).
5103 expressions (@prun) and for full programs (@run -p).
5099
5104
5100 2002-05-09 Fernando Perez <fperez@colorado.edu>
5105 2002-05-09 Fernando Perez <fperez@colorado.edu>
5101
5106
5102 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5107 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5103 magic properly formatted for screen.
5108 magic properly formatted for screen.
5104
5109
5105 * setup.py (make_shortcut): Changed things to put pdf version in
5110 * setup.py (make_shortcut): Changed things to put pdf version in
5106 doc/ instead of doc/manual (had to change lyxport a bit).
5111 doc/ instead of doc/manual (had to change lyxport a bit).
5107
5112
5108 * IPython/Magic.py (Profile.string_stats): made profile runs go
5113 * IPython/Magic.py (Profile.string_stats): made profile runs go
5109 through pager (they are long and a pager allows searching, saving,
5114 through pager (they are long and a pager allows searching, saving,
5110 etc.)
5115 etc.)
5111
5116
5112 2002-05-08 Fernando Perez <fperez@colorado.edu>
5117 2002-05-08 Fernando Perez <fperez@colorado.edu>
5113
5118
5114 * Released 0.2.12
5119 * Released 0.2.12
5115
5120
5116 2002-05-06 Fernando Perez <fperez@colorado.edu>
5121 2002-05-06 Fernando Perez <fperez@colorado.edu>
5117
5122
5118 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5123 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5119 introduced); 'hist n1 n2' was broken.
5124 introduced); 'hist n1 n2' was broken.
5120 (Magic.magic_pdb): added optional on/off arguments to @pdb
5125 (Magic.magic_pdb): added optional on/off arguments to @pdb
5121 (Magic.magic_run): added option -i to @run, which executes code in
5126 (Magic.magic_run): added option -i to @run, which executes code in
5122 the IPython namespace instead of a clean one. Also added @irun as
5127 the IPython namespace instead of a clean one. Also added @irun as
5123 an alias to @run -i.
5128 an alias to @run -i.
5124
5129
5125 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5130 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5126 fixed (it didn't really do anything, the namespaces were wrong).
5131 fixed (it didn't really do anything, the namespaces were wrong).
5127
5132
5128 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5133 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5129
5134
5130 * IPython/__init__.py (__all__): Fixed package namespace, now
5135 * IPython/__init__.py (__all__): Fixed package namespace, now
5131 'import IPython' does give access to IPython.<all> as
5136 'import IPython' does give access to IPython.<all> as
5132 expected. Also renamed __release__ to Release.
5137 expected. Also renamed __release__ to Release.
5133
5138
5134 * IPython/Debugger.py (__license__): created new Pdb class which
5139 * IPython/Debugger.py (__license__): created new Pdb class which
5135 functions like a drop-in for the normal pdb.Pdb but does NOT
5140 functions like a drop-in for the normal pdb.Pdb but does NOT
5136 import readline by default. This way it doesn't muck up IPython's
5141 import readline by default. This way it doesn't muck up IPython's
5137 readline handling, and now tab-completion finally works in the
5142 readline handling, and now tab-completion finally works in the
5138 debugger -- sort of. It completes things globally visible, but the
5143 debugger -- sort of. It completes things globally visible, but the
5139 completer doesn't track the stack as pdb walks it. That's a bit
5144 completer doesn't track the stack as pdb walks it. That's a bit
5140 tricky, and I'll have to implement it later.
5145 tricky, and I'll have to implement it later.
5141
5146
5142 2002-05-05 Fernando Perez <fperez@colorado.edu>
5147 2002-05-05 Fernando Perez <fperez@colorado.edu>
5143
5148
5144 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5149 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5145 magic docstrings when printed via ? (explicit \'s were being
5150 magic docstrings when printed via ? (explicit \'s were being
5146 printed).
5151 printed).
5147
5152
5148 * IPython/ipmaker.py (make_IPython): fixed namespace
5153 * IPython/ipmaker.py (make_IPython): fixed namespace
5149 identification bug. Now variables loaded via logs or command-line
5154 identification bug. Now variables loaded via logs or command-line
5150 files are recognized in the interactive namespace by @who.
5155 files are recognized in the interactive namespace by @who.
5151
5156
5152 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5157 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5153 log replay system stemming from the string form of Structs.
5158 log replay system stemming from the string form of Structs.
5154
5159
5155 * IPython/Magic.py (Macro.__init__): improved macros to properly
5160 * IPython/Magic.py (Macro.__init__): improved macros to properly
5156 handle magic commands in them.
5161 handle magic commands in them.
5157 (Magic.magic_logstart): usernames are now expanded so 'logstart
5162 (Magic.magic_logstart): usernames are now expanded so 'logstart
5158 ~/mylog' now works.
5163 ~/mylog' now works.
5159
5164
5160 * IPython/iplib.py (complete): fixed bug where paths starting with
5165 * IPython/iplib.py (complete): fixed bug where paths starting with
5161 '/' would be completed as magic names.
5166 '/' would be completed as magic names.
5162
5167
5163 2002-05-04 Fernando Perez <fperez@colorado.edu>
5168 2002-05-04 Fernando Perez <fperez@colorado.edu>
5164
5169
5165 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5170 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5166 allow running full programs under the profiler's control.
5171 allow running full programs under the profiler's control.
5167
5172
5168 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5173 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5169 mode to report exceptions verbosely but without formatting
5174 mode to report exceptions verbosely but without formatting
5170 variables. This addresses the issue of ipython 'freezing' (it's
5175 variables. This addresses the issue of ipython 'freezing' (it's
5171 not frozen, but caught in an expensive formatting loop) when huge
5176 not frozen, but caught in an expensive formatting loop) when huge
5172 variables are in the context of an exception.
5177 variables are in the context of an exception.
5173 (VerboseTB.text): Added '--->' markers at line where exception was
5178 (VerboseTB.text): Added '--->' markers at line where exception was
5174 triggered. Much clearer to read, especially in NoColor modes.
5179 triggered. Much clearer to read, especially in NoColor modes.
5175
5180
5176 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5181 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5177 implemented in reverse when changing to the new parse_options().
5182 implemented in reverse when changing to the new parse_options().
5178
5183
5179 2002-05-03 Fernando Perez <fperez@colorado.edu>
5184 2002-05-03 Fernando Perez <fperez@colorado.edu>
5180
5185
5181 * IPython/Magic.py (Magic.parse_options): new function so that
5186 * IPython/Magic.py (Magic.parse_options): new function so that
5182 magics can parse options easier.
5187 magics can parse options easier.
5183 (Magic.magic_prun): new function similar to profile.run(),
5188 (Magic.magic_prun): new function similar to profile.run(),
5184 suggested by Chris Hart.
5189 suggested by Chris Hart.
5185 (Magic.magic_cd): fixed behavior so that it only changes if
5190 (Magic.magic_cd): fixed behavior so that it only changes if
5186 directory actually is in history.
5191 directory actually is in history.
5187
5192
5188 * IPython/usage.py (__doc__): added information about potential
5193 * IPython/usage.py (__doc__): added information about potential
5189 slowness of Verbose exception mode when there are huge data
5194 slowness of Verbose exception mode when there are huge data
5190 structures to be formatted (thanks to Archie Paulson).
5195 structures to be formatted (thanks to Archie Paulson).
5191
5196
5192 * IPython/ipmaker.py (make_IPython): Changed default logging
5197 * IPython/ipmaker.py (make_IPython): Changed default logging
5193 (when simply called with -log) to use curr_dir/ipython.log in
5198 (when simply called with -log) to use curr_dir/ipython.log in
5194 rotate mode. Fixed crash which was occuring with -log before
5199 rotate mode. Fixed crash which was occuring with -log before
5195 (thanks to Jim Boyle).
5200 (thanks to Jim Boyle).
5196
5201
5197 2002-05-01 Fernando Perez <fperez@colorado.edu>
5202 2002-05-01 Fernando Perez <fperez@colorado.edu>
5198
5203
5199 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5204 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5200 was nasty -- though somewhat of a corner case).
5205 was nasty -- though somewhat of a corner case).
5201
5206
5202 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5207 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5203 text (was a bug).
5208 text (was a bug).
5204
5209
5205 2002-04-30 Fernando Perez <fperez@colorado.edu>
5210 2002-04-30 Fernando Perez <fperez@colorado.edu>
5206
5211
5207 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5212 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5208 a print after ^D or ^C from the user so that the In[] prompt
5213 a print after ^D or ^C from the user so that the In[] prompt
5209 doesn't over-run the gnuplot one.
5214 doesn't over-run the gnuplot one.
5210
5215
5211 2002-04-29 Fernando Perez <fperez@colorado.edu>
5216 2002-04-29 Fernando Perez <fperez@colorado.edu>
5212
5217
5213 * Released 0.2.10
5218 * Released 0.2.10
5214
5219
5215 * IPython/__release__.py (version): get date dynamically.
5220 * IPython/__release__.py (version): get date dynamically.
5216
5221
5217 * Misc. documentation updates thanks to Arnd's comments. Also ran
5222 * Misc. documentation updates thanks to Arnd's comments. Also ran
5218 a full spellcheck on the manual (hadn't been done in a while).
5223 a full spellcheck on the manual (hadn't been done in a while).
5219
5224
5220 2002-04-27 Fernando Perez <fperez@colorado.edu>
5225 2002-04-27 Fernando Perez <fperez@colorado.edu>
5221
5226
5222 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5227 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5223 starting a log in mid-session would reset the input history list.
5228 starting a log in mid-session would reset the input history list.
5224
5229
5225 2002-04-26 Fernando Perez <fperez@colorado.edu>
5230 2002-04-26 Fernando Perez <fperez@colorado.edu>
5226
5231
5227 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5232 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5228 all files were being included in an update. Now anything in
5233 all files were being included in an update. Now anything in
5229 UserConfig that matches [A-Za-z]*.py will go (this excludes
5234 UserConfig that matches [A-Za-z]*.py will go (this excludes
5230 __init__.py)
5235 __init__.py)
5231
5236
5232 2002-04-25 Fernando Perez <fperez@colorado.edu>
5237 2002-04-25 Fernando Perez <fperez@colorado.edu>
5233
5238
5234 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5239 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5235 to __builtins__ so that any form of embedded or imported code can
5240 to __builtins__ so that any form of embedded or imported code can
5236 test for being inside IPython.
5241 test for being inside IPython.
5237
5242
5238 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5243 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5239 changed to GnuplotMagic because it's now an importable module,
5244 changed to GnuplotMagic because it's now an importable module,
5240 this makes the name follow that of the standard Gnuplot module.
5245 this makes the name follow that of the standard Gnuplot module.
5241 GnuplotMagic can now be loaded at any time in mid-session.
5246 GnuplotMagic can now be loaded at any time in mid-session.
5242
5247
5243 2002-04-24 Fernando Perez <fperez@colorado.edu>
5248 2002-04-24 Fernando Perez <fperez@colorado.edu>
5244
5249
5245 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5250 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5246 the globals (IPython has its own namespace) and the
5251 the globals (IPython has its own namespace) and the
5247 PhysicalQuantity stuff is much better anyway.
5252 PhysicalQuantity stuff is much better anyway.
5248
5253
5249 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5254 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5250 embedding example to standard user directory for
5255 embedding example to standard user directory for
5251 distribution. Also put it in the manual.
5256 distribution. Also put it in the manual.
5252
5257
5253 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5258 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5254 instance as first argument (so it doesn't rely on some obscure
5259 instance as first argument (so it doesn't rely on some obscure
5255 hidden global).
5260 hidden global).
5256
5261
5257 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5262 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5258 delimiters. While it prevents ().TAB from working, it allows
5263 delimiters. While it prevents ().TAB from working, it allows
5259 completions in open (... expressions. This is by far a more common
5264 completions in open (... expressions. This is by far a more common
5260 case.
5265 case.
5261
5266
5262 2002-04-23 Fernando Perez <fperez@colorado.edu>
5267 2002-04-23 Fernando Perez <fperez@colorado.edu>
5263
5268
5264 * IPython/Extensions/InterpreterPasteInput.py: new
5269 * IPython/Extensions/InterpreterPasteInput.py: new
5265 syntax-processing module for pasting lines with >>> or ... at the
5270 syntax-processing module for pasting lines with >>> or ... at the
5266 start.
5271 start.
5267
5272
5268 * IPython/Extensions/PhysicalQ_Interactive.py
5273 * IPython/Extensions/PhysicalQ_Interactive.py
5269 (PhysicalQuantityInteractive.__int__): fixed to work with either
5274 (PhysicalQuantityInteractive.__int__): fixed to work with either
5270 Numeric or math.
5275 Numeric or math.
5271
5276
5272 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5277 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5273 provided profiles. Now we have:
5278 provided profiles. Now we have:
5274 -math -> math module as * and cmath with its own namespace.
5279 -math -> math module as * and cmath with its own namespace.
5275 -numeric -> Numeric as *, plus gnuplot & grace
5280 -numeric -> Numeric as *, plus gnuplot & grace
5276 -physics -> same as before
5281 -physics -> same as before
5277
5282
5278 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5283 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5279 user-defined magics wouldn't be found by @magic if they were
5284 user-defined magics wouldn't be found by @magic if they were
5280 defined as class methods. Also cleaned up the namespace search
5285 defined as class methods. Also cleaned up the namespace search
5281 logic and the string building (to use %s instead of many repeated
5286 logic and the string building (to use %s instead of many repeated
5282 string adds).
5287 string adds).
5283
5288
5284 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5289 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5285 of user-defined magics to operate with class methods (cleaner, in
5290 of user-defined magics to operate with class methods (cleaner, in
5286 line with the gnuplot code).
5291 line with the gnuplot code).
5287
5292
5288 2002-04-22 Fernando Perez <fperez@colorado.edu>
5293 2002-04-22 Fernando Perez <fperez@colorado.edu>
5289
5294
5290 * setup.py: updated dependency list so that manual is updated when
5295 * setup.py: updated dependency list so that manual is updated when
5291 all included files change.
5296 all included files change.
5292
5297
5293 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5298 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5294 the delimiter removal option (the fix is ugly right now).
5299 the delimiter removal option (the fix is ugly right now).
5295
5300
5296 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5301 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5297 all of the math profile (quicker loading, no conflict between
5302 all of the math profile (quicker loading, no conflict between
5298 g-9.8 and g-gnuplot).
5303 g-9.8 and g-gnuplot).
5299
5304
5300 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5305 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5301 name of post-mortem files to IPython_crash_report.txt.
5306 name of post-mortem files to IPython_crash_report.txt.
5302
5307
5303 * Cleanup/update of the docs. Added all the new readline info and
5308 * Cleanup/update of the docs. Added all the new readline info and
5304 formatted all lists as 'real lists'.
5309 formatted all lists as 'real lists'.
5305
5310
5306 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5311 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5307 tab-completion options, since the full readline parse_and_bind is
5312 tab-completion options, since the full readline parse_and_bind is
5308 now accessible.
5313 now accessible.
5309
5314
5310 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5315 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5311 handling of readline options. Now users can specify any string to
5316 handling of readline options. Now users can specify any string to
5312 be passed to parse_and_bind(), as well as the delimiters to be
5317 be passed to parse_and_bind(), as well as the delimiters to be
5313 removed.
5318 removed.
5314 (InteractiveShell.__init__): Added __name__ to the global
5319 (InteractiveShell.__init__): Added __name__ to the global
5315 namespace so that things like Itpl which rely on its existence
5320 namespace so that things like Itpl which rely on its existence
5316 don't crash.
5321 don't crash.
5317 (InteractiveShell._prefilter): Defined the default with a _ so
5322 (InteractiveShell._prefilter): Defined the default with a _ so
5318 that prefilter() is easier to override, while the default one
5323 that prefilter() is easier to override, while the default one
5319 remains available.
5324 remains available.
5320
5325
5321 2002-04-18 Fernando Perez <fperez@colorado.edu>
5326 2002-04-18 Fernando Perez <fperez@colorado.edu>
5322
5327
5323 * Added information about pdb in the docs.
5328 * Added information about pdb in the docs.
5324
5329
5325 2002-04-17 Fernando Perez <fperez@colorado.edu>
5330 2002-04-17 Fernando Perez <fperez@colorado.edu>
5326
5331
5327 * IPython/ipmaker.py (make_IPython): added rc_override option to
5332 * IPython/ipmaker.py (make_IPython): added rc_override option to
5328 allow passing config options at creation time which may override
5333 allow passing config options at creation time which may override
5329 anything set in the config files or command line. This is
5334 anything set in the config files or command line. This is
5330 particularly useful for configuring embedded instances.
5335 particularly useful for configuring embedded instances.
5331
5336
5332 2002-04-15 Fernando Perez <fperez@colorado.edu>
5337 2002-04-15 Fernando Perez <fperez@colorado.edu>
5333
5338
5334 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5339 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5335 crash embedded instances because of the input cache falling out of
5340 crash embedded instances because of the input cache falling out of
5336 sync with the output counter.
5341 sync with the output counter.
5337
5342
5338 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5343 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5339 mode which calls pdb after an uncaught exception in IPython itself.
5344 mode which calls pdb after an uncaught exception in IPython itself.
5340
5345
5341 2002-04-14 Fernando Perez <fperez@colorado.edu>
5346 2002-04-14 Fernando Perez <fperez@colorado.edu>
5342
5347
5343 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5348 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5344 readline, fix it back after each call.
5349 readline, fix it back after each call.
5345
5350
5346 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5351 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5347 method to force all access via __call__(), which guarantees that
5352 method to force all access via __call__(), which guarantees that
5348 traceback references are properly deleted.
5353 traceback references are properly deleted.
5349
5354
5350 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5355 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5351 improve printing when pprint is in use.
5356 improve printing when pprint is in use.
5352
5357
5353 2002-04-13 Fernando Perez <fperez@colorado.edu>
5358 2002-04-13 Fernando Perez <fperez@colorado.edu>
5354
5359
5355 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5360 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5356 exceptions aren't caught anymore. If the user triggers one, he
5361 exceptions aren't caught anymore. If the user triggers one, he
5357 should know why he's doing it and it should go all the way up,
5362 should know why he's doing it and it should go all the way up,
5358 just like any other exception. So now @abort will fully kill the
5363 just like any other exception. So now @abort will fully kill the
5359 embedded interpreter and the embedding code (unless that happens
5364 embedded interpreter and the embedding code (unless that happens
5360 to catch SystemExit).
5365 to catch SystemExit).
5361
5366
5362 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5367 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5363 and a debugger() method to invoke the interactive pdb debugger
5368 and a debugger() method to invoke the interactive pdb debugger
5364 after printing exception information. Also added the corresponding
5369 after printing exception information. Also added the corresponding
5365 -pdb option and @pdb magic to control this feature, and updated
5370 -pdb option and @pdb magic to control this feature, and updated
5366 the docs. After a suggestion from Christopher Hart
5371 the docs. After a suggestion from Christopher Hart
5367 (hart-AT-caltech.edu).
5372 (hart-AT-caltech.edu).
5368
5373
5369 2002-04-12 Fernando Perez <fperez@colorado.edu>
5374 2002-04-12 Fernando Perez <fperez@colorado.edu>
5370
5375
5371 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5376 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5372 the exception handlers defined by the user (not the CrashHandler)
5377 the exception handlers defined by the user (not the CrashHandler)
5373 so that user exceptions don't trigger an ipython bug report.
5378 so that user exceptions don't trigger an ipython bug report.
5374
5379
5375 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5380 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5376 configurable (it should have always been so).
5381 configurable (it should have always been so).
5377
5382
5378 2002-03-26 Fernando Perez <fperez@colorado.edu>
5383 2002-03-26 Fernando Perez <fperez@colorado.edu>
5379
5384
5380 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5385 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5381 and there to fix embedding namespace issues. This should all be
5386 and there to fix embedding namespace issues. This should all be
5382 done in a more elegant way.
5387 done in a more elegant way.
5383
5388
5384 2002-03-25 Fernando Perez <fperez@colorado.edu>
5389 2002-03-25 Fernando Perez <fperez@colorado.edu>
5385
5390
5386 * IPython/genutils.py (get_home_dir): Try to make it work under
5391 * IPython/genutils.py (get_home_dir): Try to make it work under
5387 win9x also.
5392 win9x also.
5388
5393
5389 2002-03-20 Fernando Perez <fperez@colorado.edu>
5394 2002-03-20 Fernando Perez <fperez@colorado.edu>
5390
5395
5391 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5396 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5392 sys.displayhook untouched upon __init__.
5397 sys.displayhook untouched upon __init__.
5393
5398
5394 2002-03-19 Fernando Perez <fperez@colorado.edu>
5399 2002-03-19 Fernando Perez <fperez@colorado.edu>
5395
5400
5396 * Released 0.2.9 (for embedding bug, basically).
5401 * Released 0.2.9 (for embedding bug, basically).
5397
5402
5398 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5403 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5399 exceptions so that enclosing shell's state can be restored.
5404 exceptions so that enclosing shell's state can be restored.
5400
5405
5401 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5406 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5402 naming conventions in the .ipython/ dir.
5407 naming conventions in the .ipython/ dir.
5403
5408
5404 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5409 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5405 from delimiters list so filenames with - in them get expanded.
5410 from delimiters list so filenames with - in them get expanded.
5406
5411
5407 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5412 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5408 sys.displayhook not being properly restored after an embedded call.
5413 sys.displayhook not being properly restored after an embedded call.
5409
5414
5410 2002-03-18 Fernando Perez <fperez@colorado.edu>
5415 2002-03-18 Fernando Perez <fperez@colorado.edu>
5411
5416
5412 * Released 0.2.8
5417 * Released 0.2.8
5413
5418
5414 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5419 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5415 some files weren't being included in a -upgrade.
5420 some files weren't being included in a -upgrade.
5416 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5421 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5417 on' so that the first tab completes.
5422 on' so that the first tab completes.
5418 (InteractiveShell.handle_magic): fixed bug with spaces around
5423 (InteractiveShell.handle_magic): fixed bug with spaces around
5419 quotes breaking many magic commands.
5424 quotes breaking many magic commands.
5420
5425
5421 * setup.py: added note about ignoring the syntax error messages at
5426 * setup.py: added note about ignoring the syntax error messages at
5422 installation.
5427 installation.
5423
5428
5424 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5429 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5425 streamlining the gnuplot interface, now there's only one magic @gp.
5430 streamlining the gnuplot interface, now there's only one magic @gp.
5426
5431
5427 2002-03-17 Fernando Perez <fperez@colorado.edu>
5432 2002-03-17 Fernando Perez <fperez@colorado.edu>
5428
5433
5429 * IPython/UserConfig/magic_gnuplot.py: new name for the
5434 * IPython/UserConfig/magic_gnuplot.py: new name for the
5430 example-magic_pm.py file. Much enhanced system, now with a shell
5435 example-magic_pm.py file. Much enhanced system, now with a shell
5431 for communicating directly with gnuplot, one command at a time.
5436 for communicating directly with gnuplot, one command at a time.
5432
5437
5433 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5438 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5434 setting __name__=='__main__'.
5439 setting __name__=='__main__'.
5435
5440
5436 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5441 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5437 mini-shell for accessing gnuplot from inside ipython. Should
5442 mini-shell for accessing gnuplot from inside ipython. Should
5438 extend it later for grace access too. Inspired by Arnd's
5443 extend it later for grace access too. Inspired by Arnd's
5439 suggestion.
5444 suggestion.
5440
5445
5441 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5446 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5442 calling magic functions with () in their arguments. Thanks to Arnd
5447 calling magic functions with () in their arguments. Thanks to Arnd
5443 Baecker for pointing this to me.
5448 Baecker for pointing this to me.
5444
5449
5445 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5450 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5446 infinitely for integer or complex arrays (only worked with floats).
5451 infinitely for integer or complex arrays (only worked with floats).
5447
5452
5448 2002-03-16 Fernando Perez <fperez@colorado.edu>
5453 2002-03-16 Fernando Perez <fperez@colorado.edu>
5449
5454
5450 * setup.py: Merged setup and setup_windows into a single script
5455 * setup.py: Merged setup and setup_windows into a single script
5451 which properly handles things for windows users.
5456 which properly handles things for windows users.
5452
5457
5453 2002-03-15 Fernando Perez <fperez@colorado.edu>
5458 2002-03-15 Fernando Perez <fperez@colorado.edu>
5454
5459
5455 * Big change to the manual: now the magics are all automatically
5460 * Big change to the manual: now the magics are all automatically
5456 documented. This information is generated from their docstrings
5461 documented. This information is generated from their docstrings
5457 and put in a latex file included by the manual lyx file. This way
5462 and put in a latex file included by the manual lyx file. This way
5458 we get always up to date information for the magics. The manual
5463 we get always up to date information for the magics. The manual
5459 now also has proper version information, also auto-synced.
5464 now also has proper version information, also auto-synced.
5460
5465
5461 For this to work, an undocumented --magic_docstrings option was added.
5466 For this to work, an undocumented --magic_docstrings option was added.
5462
5467
5463 2002-03-13 Fernando Perez <fperez@colorado.edu>
5468 2002-03-13 Fernando Perez <fperez@colorado.edu>
5464
5469
5465 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5470 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5466 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5471 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5467
5472
5468 2002-03-12 Fernando Perez <fperez@colorado.edu>
5473 2002-03-12 Fernando Perez <fperez@colorado.edu>
5469
5474
5470 * IPython/ultraTB.py (TermColors): changed color escapes again to
5475 * IPython/ultraTB.py (TermColors): changed color escapes again to
5471 fix the (old, reintroduced) line-wrapping bug. Basically, if
5476 fix the (old, reintroduced) line-wrapping bug. Basically, if
5472 \001..\002 aren't given in the color escapes, lines get wrapped
5477 \001..\002 aren't given in the color escapes, lines get wrapped
5473 weirdly. But giving those screws up old xterms and emacs terms. So
5478 weirdly. But giving those screws up old xterms and emacs terms. So
5474 I added some logic for emacs terms to be ok, but I can't identify old
5479 I added some logic for emacs terms to be ok, but I can't identify old
5475 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5480 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5476
5481
5477 2002-03-10 Fernando Perez <fperez@colorado.edu>
5482 2002-03-10 Fernando Perez <fperez@colorado.edu>
5478
5483
5479 * IPython/usage.py (__doc__): Various documentation cleanups and
5484 * IPython/usage.py (__doc__): Various documentation cleanups and
5480 updates, both in usage docstrings and in the manual.
5485 updates, both in usage docstrings and in the manual.
5481
5486
5482 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5487 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5483 handling of caching. Set minimum acceptabe value for having a
5488 handling of caching. Set minimum acceptabe value for having a
5484 cache at 20 values.
5489 cache at 20 values.
5485
5490
5486 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5491 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5487 install_first_time function to a method, renamed it and added an
5492 install_first_time function to a method, renamed it and added an
5488 'upgrade' mode. Now people can update their config directory with
5493 'upgrade' mode. Now people can update their config directory with
5489 a simple command line switch (-upgrade, also new).
5494 a simple command line switch (-upgrade, also new).
5490
5495
5491 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5496 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5492 @file (convenient for automagic users under Python >= 2.2).
5497 @file (convenient for automagic users under Python >= 2.2).
5493 Removed @files (it seemed more like a plural than an abbrev. of
5498 Removed @files (it seemed more like a plural than an abbrev. of
5494 'file show').
5499 'file show').
5495
5500
5496 * IPython/iplib.py (install_first_time): Fixed crash if there were
5501 * IPython/iplib.py (install_first_time): Fixed crash if there were
5497 backup files ('~') in .ipython/ install directory.
5502 backup files ('~') in .ipython/ install directory.
5498
5503
5499 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5504 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5500 system. Things look fine, but these changes are fairly
5505 system. Things look fine, but these changes are fairly
5501 intrusive. Test them for a few days.
5506 intrusive. Test them for a few days.
5502
5507
5503 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5508 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5504 the prompts system. Now all in/out prompt strings are user
5509 the prompts system. Now all in/out prompt strings are user
5505 controllable. This is particularly useful for embedding, as one
5510 controllable. This is particularly useful for embedding, as one
5506 can tag embedded instances with particular prompts.
5511 can tag embedded instances with particular prompts.
5507
5512
5508 Also removed global use of sys.ps1/2, which now allows nested
5513 Also removed global use of sys.ps1/2, which now allows nested
5509 embeddings without any problems. Added command-line options for
5514 embeddings without any problems. Added command-line options for
5510 the prompt strings.
5515 the prompt strings.
5511
5516
5512 2002-03-08 Fernando Perez <fperez@colorado.edu>
5517 2002-03-08 Fernando Perez <fperez@colorado.edu>
5513
5518
5514 * IPython/UserConfig/example-embed-short.py (ipshell): added
5519 * IPython/UserConfig/example-embed-short.py (ipshell): added
5515 example file with the bare minimum code for embedding.
5520 example file with the bare minimum code for embedding.
5516
5521
5517 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5522 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5518 functionality for the embeddable shell to be activated/deactivated
5523 functionality for the embeddable shell to be activated/deactivated
5519 either globally or at each call.
5524 either globally or at each call.
5520
5525
5521 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5526 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5522 rewriting the prompt with '--->' for auto-inputs with proper
5527 rewriting the prompt with '--->' for auto-inputs with proper
5523 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5528 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5524 this is handled by the prompts class itself, as it should.
5529 this is handled by the prompts class itself, as it should.
5525
5530
5526 2002-03-05 Fernando Perez <fperez@colorado.edu>
5531 2002-03-05 Fernando Perez <fperez@colorado.edu>
5527
5532
5528 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5533 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5529 @logstart to avoid name clashes with the math log function.
5534 @logstart to avoid name clashes with the math log function.
5530
5535
5531 * Big updates to X/Emacs section of the manual.
5536 * Big updates to X/Emacs section of the manual.
5532
5537
5533 * Removed ipython_emacs. Milan explained to me how to pass
5538 * Removed ipython_emacs. Milan explained to me how to pass
5534 arguments to ipython through Emacs. Some day I'm going to end up
5539 arguments to ipython through Emacs. Some day I'm going to end up
5535 learning some lisp...
5540 learning some lisp...
5536
5541
5537 2002-03-04 Fernando Perez <fperez@colorado.edu>
5542 2002-03-04 Fernando Perez <fperez@colorado.edu>
5538
5543
5539 * IPython/ipython_emacs: Created script to be used as the
5544 * IPython/ipython_emacs: Created script to be used as the
5540 py-python-command Emacs variable so we can pass IPython
5545 py-python-command Emacs variable so we can pass IPython
5541 parameters. I can't figure out how to tell Emacs directly to pass
5546 parameters. I can't figure out how to tell Emacs directly to pass
5542 parameters to IPython, so a dummy shell script will do it.
5547 parameters to IPython, so a dummy shell script will do it.
5543
5548
5544 Other enhancements made for things to work better under Emacs'
5549 Other enhancements made for things to work better under Emacs'
5545 various types of terminals. Many thanks to Milan Zamazal
5550 various types of terminals. Many thanks to Milan Zamazal
5546 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5551 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5547
5552
5548 2002-03-01 Fernando Perez <fperez@colorado.edu>
5553 2002-03-01 Fernando Perez <fperez@colorado.edu>
5549
5554
5550 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5555 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5551 that loading of readline is now optional. This gives better
5556 that loading of readline is now optional. This gives better
5552 control to emacs users.
5557 control to emacs users.
5553
5558
5554 * IPython/ultraTB.py (__date__): Modified color escape sequences
5559 * IPython/ultraTB.py (__date__): Modified color escape sequences
5555 and now things work fine under xterm and in Emacs' term buffers
5560 and now things work fine under xterm and in Emacs' term buffers
5556 (though not shell ones). Well, in emacs you get colors, but all
5561 (though not shell ones). Well, in emacs you get colors, but all
5557 seem to be 'light' colors (no difference between dark and light
5562 seem to be 'light' colors (no difference between dark and light
5558 ones). But the garbage chars are gone, and also in xterms. It
5563 ones). But the garbage chars are gone, and also in xterms. It
5559 seems that now I'm using 'cleaner' ansi sequences.
5564 seems that now I'm using 'cleaner' ansi sequences.
5560
5565
5561 2002-02-21 Fernando Perez <fperez@colorado.edu>
5566 2002-02-21 Fernando Perez <fperez@colorado.edu>
5562
5567
5563 * Released 0.2.7 (mainly to publish the scoping fix).
5568 * Released 0.2.7 (mainly to publish the scoping fix).
5564
5569
5565 * IPython/Logger.py (Logger.logstate): added. A corresponding
5570 * IPython/Logger.py (Logger.logstate): added. A corresponding
5566 @logstate magic was created.
5571 @logstate magic was created.
5567
5572
5568 * IPython/Magic.py: fixed nested scoping problem under Python
5573 * IPython/Magic.py: fixed nested scoping problem under Python
5569 2.1.x (automagic wasn't working).
5574 2.1.x (automagic wasn't working).
5570
5575
5571 2002-02-20 Fernando Perez <fperez@colorado.edu>
5576 2002-02-20 Fernando Perez <fperez@colorado.edu>
5572
5577
5573 * Released 0.2.6.
5578 * Released 0.2.6.
5574
5579
5575 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5580 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5576 option so that logs can come out without any headers at all.
5581 option so that logs can come out without any headers at all.
5577
5582
5578 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5583 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5579 SciPy.
5584 SciPy.
5580
5585
5581 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5586 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5582 that embedded IPython calls don't require vars() to be explicitly
5587 that embedded IPython calls don't require vars() to be explicitly
5583 passed. Now they are extracted from the caller's frame (code
5588 passed. Now they are extracted from the caller's frame (code
5584 snatched from Eric Jones' weave). Added better documentation to
5589 snatched from Eric Jones' weave). Added better documentation to
5585 the section on embedding and the example file.
5590 the section on embedding and the example file.
5586
5591
5587 * IPython/genutils.py (page): Changed so that under emacs, it just
5592 * IPython/genutils.py (page): Changed so that under emacs, it just
5588 prints the string. You can then page up and down in the emacs
5593 prints the string. You can then page up and down in the emacs
5589 buffer itself. This is how the builtin help() works.
5594 buffer itself. This is how the builtin help() works.
5590
5595
5591 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5596 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5592 macro scoping: macros need to be executed in the user's namespace
5597 macro scoping: macros need to be executed in the user's namespace
5593 to work as if they had been typed by the user.
5598 to work as if they had been typed by the user.
5594
5599
5595 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5600 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5596 execute automatically (no need to type 'exec...'). They then
5601 execute automatically (no need to type 'exec...'). They then
5597 behave like 'true macros'. The printing system was also modified
5602 behave like 'true macros'. The printing system was also modified
5598 for this to work.
5603 for this to work.
5599
5604
5600 2002-02-19 Fernando Perez <fperez@colorado.edu>
5605 2002-02-19 Fernando Perez <fperez@colorado.edu>
5601
5606
5602 * IPython/genutils.py (page_file): new function for paging files
5607 * IPython/genutils.py (page_file): new function for paging files
5603 in an OS-independent way. Also necessary for file viewing to work
5608 in an OS-independent way. Also necessary for file viewing to work
5604 well inside Emacs buffers.
5609 well inside Emacs buffers.
5605 (page): Added checks for being in an emacs buffer.
5610 (page): Added checks for being in an emacs buffer.
5606 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5611 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5607 same bug in iplib.
5612 same bug in iplib.
5608
5613
5609 2002-02-18 Fernando Perez <fperez@colorado.edu>
5614 2002-02-18 Fernando Perez <fperez@colorado.edu>
5610
5615
5611 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5616 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5612 of readline so that IPython can work inside an Emacs buffer.
5617 of readline so that IPython can work inside an Emacs buffer.
5613
5618
5614 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5619 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5615 method signatures (they weren't really bugs, but it looks cleaner
5620 method signatures (they weren't really bugs, but it looks cleaner
5616 and keeps PyChecker happy).
5621 and keeps PyChecker happy).
5617
5622
5618 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5623 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5619 for implementing various user-defined hooks. Currently only
5624 for implementing various user-defined hooks. Currently only
5620 display is done.
5625 display is done.
5621
5626
5622 * IPython/Prompts.py (CachedOutput._display): changed display
5627 * IPython/Prompts.py (CachedOutput._display): changed display
5623 functions so that they can be dynamically changed by users easily.
5628 functions so that they can be dynamically changed by users easily.
5624
5629
5625 * IPython/Extensions/numeric_formats.py (num_display): added an
5630 * IPython/Extensions/numeric_formats.py (num_display): added an
5626 extension for printing NumPy arrays in flexible manners. It
5631 extension for printing NumPy arrays in flexible manners. It
5627 doesn't do anything yet, but all the structure is in
5632 doesn't do anything yet, but all the structure is in
5628 place. Ultimately the plan is to implement output format control
5633 place. Ultimately the plan is to implement output format control
5629 like in Octave.
5634 like in Octave.
5630
5635
5631 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5636 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5632 methods are found at run-time by all the automatic machinery.
5637 methods are found at run-time by all the automatic machinery.
5633
5638
5634 2002-02-17 Fernando Perez <fperez@colorado.edu>
5639 2002-02-17 Fernando Perez <fperez@colorado.edu>
5635
5640
5636 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5641 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5637 whole file a little.
5642 whole file a little.
5638
5643
5639 * ToDo: closed this document. Now there's a new_design.lyx
5644 * ToDo: closed this document. Now there's a new_design.lyx
5640 document for all new ideas. Added making a pdf of it for the
5645 document for all new ideas. Added making a pdf of it for the
5641 end-user distro.
5646 end-user distro.
5642
5647
5643 * IPython/Logger.py (Logger.switch_log): Created this to replace
5648 * IPython/Logger.py (Logger.switch_log): Created this to replace
5644 logon() and logoff(). It also fixes a nasty crash reported by
5649 logon() and logoff(). It also fixes a nasty crash reported by
5645 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5650 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5646
5651
5647 * IPython/iplib.py (complete): got auto-completion to work with
5652 * IPython/iplib.py (complete): got auto-completion to work with
5648 automagic (I had wanted this for a long time).
5653 automagic (I had wanted this for a long time).
5649
5654
5650 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5655 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5651 to @file, since file() is now a builtin and clashes with automagic
5656 to @file, since file() is now a builtin and clashes with automagic
5652 for @file.
5657 for @file.
5653
5658
5654 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5659 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5655 of this was previously in iplib, which had grown to more than 2000
5660 of this was previously in iplib, which had grown to more than 2000
5656 lines, way too long. No new functionality, but it makes managing
5661 lines, way too long. No new functionality, but it makes managing
5657 the code a bit easier.
5662 the code a bit easier.
5658
5663
5659 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5664 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5660 information to crash reports.
5665 information to crash reports.
5661
5666
5662 2002-02-12 Fernando Perez <fperez@colorado.edu>
5667 2002-02-12 Fernando Perez <fperez@colorado.edu>
5663
5668
5664 * Released 0.2.5.
5669 * Released 0.2.5.
5665
5670
5666 2002-02-11 Fernando Perez <fperez@colorado.edu>
5671 2002-02-11 Fernando Perez <fperez@colorado.edu>
5667
5672
5668 * Wrote a relatively complete Windows installer. It puts
5673 * Wrote a relatively complete Windows installer. It puts
5669 everything in place, creates Start Menu entries and fixes the
5674 everything in place, creates Start Menu entries and fixes the
5670 color issues. Nothing fancy, but it works.
5675 color issues. Nothing fancy, but it works.
5671
5676
5672 2002-02-10 Fernando Perez <fperez@colorado.edu>
5677 2002-02-10 Fernando Perez <fperez@colorado.edu>
5673
5678
5674 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5679 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5675 os.path.expanduser() call so that we can type @run ~/myfile.py and
5680 os.path.expanduser() call so that we can type @run ~/myfile.py and
5676 have thigs work as expected.
5681 have thigs work as expected.
5677
5682
5678 * IPython/genutils.py (page): fixed exception handling so things
5683 * IPython/genutils.py (page): fixed exception handling so things
5679 work both in Unix and Windows correctly. Quitting a pager triggers
5684 work both in Unix and Windows correctly. Quitting a pager triggers
5680 an IOError/broken pipe in Unix, and in windows not finding a pager
5685 an IOError/broken pipe in Unix, and in windows not finding a pager
5681 is also an IOError, so I had to actually look at the return value
5686 is also an IOError, so I had to actually look at the return value
5682 of the exception, not just the exception itself. Should be ok now.
5687 of the exception, not just the exception itself. Should be ok now.
5683
5688
5684 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5689 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5685 modified to allow case-insensitive color scheme changes.
5690 modified to allow case-insensitive color scheme changes.
5686
5691
5687 2002-02-09 Fernando Perez <fperez@colorado.edu>
5692 2002-02-09 Fernando Perez <fperez@colorado.edu>
5688
5693
5689 * IPython/genutils.py (native_line_ends): new function to leave
5694 * IPython/genutils.py (native_line_ends): new function to leave
5690 user config files with os-native line-endings.
5695 user config files with os-native line-endings.
5691
5696
5692 * README and manual updates.
5697 * README and manual updates.
5693
5698
5694 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5699 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5695 instead of StringType to catch Unicode strings.
5700 instead of StringType to catch Unicode strings.
5696
5701
5697 * IPython/genutils.py (filefind): fixed bug for paths with
5702 * IPython/genutils.py (filefind): fixed bug for paths with
5698 embedded spaces (very common in Windows).
5703 embedded spaces (very common in Windows).
5699
5704
5700 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5705 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5701 files under Windows, so that they get automatically associated
5706 files under Windows, so that they get automatically associated
5702 with a text editor. Windows makes it a pain to handle
5707 with a text editor. Windows makes it a pain to handle
5703 extension-less files.
5708 extension-less files.
5704
5709
5705 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5710 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5706 warning about readline only occur for Posix. In Windows there's no
5711 warning about readline only occur for Posix. In Windows there's no
5707 way to get readline, so why bother with the warning.
5712 way to get readline, so why bother with the warning.
5708
5713
5709 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5714 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5710 for __str__ instead of dir(self), since dir() changed in 2.2.
5715 for __str__ instead of dir(self), since dir() changed in 2.2.
5711
5716
5712 * Ported to Windows! Tested on XP, I suspect it should work fine
5717 * Ported to Windows! Tested on XP, I suspect it should work fine
5713 on NT/2000, but I don't think it will work on 98 et al. That
5718 on NT/2000, but I don't think it will work on 98 et al. That
5714 series of Windows is such a piece of junk anyway that I won't try
5719 series of Windows is such a piece of junk anyway that I won't try
5715 porting it there. The XP port was straightforward, showed a few
5720 porting it there. The XP port was straightforward, showed a few
5716 bugs here and there (fixed all), in particular some string
5721 bugs here and there (fixed all), in particular some string
5717 handling stuff which required considering Unicode strings (which
5722 handling stuff which required considering Unicode strings (which
5718 Windows uses). This is good, but hasn't been too tested :) No
5723 Windows uses). This is good, but hasn't been too tested :) No
5719 fancy installer yet, I'll put a note in the manual so people at
5724 fancy installer yet, I'll put a note in the manual so people at
5720 least make manually a shortcut.
5725 least make manually a shortcut.
5721
5726
5722 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5727 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5723 into a single one, "colors". This now controls both prompt and
5728 into a single one, "colors". This now controls both prompt and
5724 exception color schemes, and can be changed both at startup
5729 exception color schemes, and can be changed both at startup
5725 (either via command-line switches or via ipythonrc files) and at
5730 (either via command-line switches or via ipythonrc files) and at
5726 runtime, with @colors.
5731 runtime, with @colors.
5727 (Magic.magic_run): renamed @prun to @run and removed the old
5732 (Magic.magic_run): renamed @prun to @run and removed the old
5728 @run. The two were too similar to warrant keeping both.
5733 @run. The two were too similar to warrant keeping both.
5729
5734
5730 2002-02-03 Fernando Perez <fperez@colorado.edu>
5735 2002-02-03 Fernando Perez <fperez@colorado.edu>
5731
5736
5732 * IPython/iplib.py (install_first_time): Added comment on how to
5737 * IPython/iplib.py (install_first_time): Added comment on how to
5733 configure the color options for first-time users. Put a <return>
5738 configure the color options for first-time users. Put a <return>
5734 request at the end so that small-terminal users get a chance to
5739 request at the end so that small-terminal users get a chance to
5735 read the startup info.
5740 read the startup info.
5736
5741
5737 2002-01-23 Fernando Perez <fperez@colorado.edu>
5742 2002-01-23 Fernando Perez <fperez@colorado.edu>
5738
5743
5739 * IPython/iplib.py (CachedOutput.update): Changed output memory
5744 * IPython/iplib.py (CachedOutput.update): Changed output memory
5740 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5745 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5741 input history we still use _i. Did this b/c these variable are
5746 input history we still use _i. Did this b/c these variable are
5742 very commonly used in interactive work, so the less we need to
5747 very commonly used in interactive work, so the less we need to
5743 type the better off we are.
5748 type the better off we are.
5744 (Magic.magic_prun): updated @prun to better handle the namespaces
5749 (Magic.magic_prun): updated @prun to better handle the namespaces
5745 the file will run in, including a fix for __name__ not being set
5750 the file will run in, including a fix for __name__ not being set
5746 before.
5751 before.
5747
5752
5748 2002-01-20 Fernando Perez <fperez@colorado.edu>
5753 2002-01-20 Fernando Perez <fperez@colorado.edu>
5749
5754
5750 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5755 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5751 extra garbage for Python 2.2. Need to look more carefully into
5756 extra garbage for Python 2.2. Need to look more carefully into
5752 this later.
5757 this later.
5753
5758
5754 2002-01-19 Fernando Perez <fperez@colorado.edu>
5759 2002-01-19 Fernando Perez <fperez@colorado.edu>
5755
5760
5756 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5761 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5757 display SyntaxError exceptions properly formatted when they occur
5762 display SyntaxError exceptions properly formatted when they occur
5758 (they can be triggered by imported code).
5763 (they can be triggered by imported code).
5759
5764
5760 2002-01-18 Fernando Perez <fperez@colorado.edu>
5765 2002-01-18 Fernando Perez <fperez@colorado.edu>
5761
5766
5762 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5767 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5763 SyntaxError exceptions are reported nicely formatted, instead of
5768 SyntaxError exceptions are reported nicely formatted, instead of
5764 spitting out only offset information as before.
5769 spitting out only offset information as before.
5765 (Magic.magic_prun): Added the @prun function for executing
5770 (Magic.magic_prun): Added the @prun function for executing
5766 programs with command line args inside IPython.
5771 programs with command line args inside IPython.
5767
5772
5768 2002-01-16 Fernando Perez <fperez@colorado.edu>
5773 2002-01-16 Fernando Perez <fperez@colorado.edu>
5769
5774
5770 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5775 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5771 to *not* include the last item given in a range. This brings their
5776 to *not* include the last item given in a range. This brings their
5772 behavior in line with Python's slicing:
5777 behavior in line with Python's slicing:
5773 a[n1:n2] -> a[n1]...a[n2-1]
5778 a[n1:n2] -> a[n1]...a[n2-1]
5774 It may be a bit less convenient, but I prefer to stick to Python's
5779 It may be a bit less convenient, but I prefer to stick to Python's
5775 conventions *everywhere*, so users never have to wonder.
5780 conventions *everywhere*, so users never have to wonder.
5776 (Magic.magic_macro): Added @macro function to ease the creation of
5781 (Magic.magic_macro): Added @macro function to ease the creation of
5777 macros.
5782 macros.
5778
5783
5779 2002-01-05 Fernando Perez <fperez@colorado.edu>
5784 2002-01-05 Fernando Perez <fperez@colorado.edu>
5780
5785
5781 * Released 0.2.4.
5786 * Released 0.2.4.
5782
5787
5783 * IPython/iplib.py (Magic.magic_pdef):
5788 * IPython/iplib.py (Magic.magic_pdef):
5784 (InteractiveShell.safe_execfile): report magic lines and error
5789 (InteractiveShell.safe_execfile): report magic lines and error
5785 lines without line numbers so one can easily copy/paste them for
5790 lines without line numbers so one can easily copy/paste them for
5786 re-execution.
5791 re-execution.
5787
5792
5788 * Updated manual with recent changes.
5793 * Updated manual with recent changes.
5789
5794
5790 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5795 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5791 docstring printing when class? is called. Very handy for knowing
5796 docstring printing when class? is called. Very handy for knowing
5792 how to create class instances (as long as __init__ is well
5797 how to create class instances (as long as __init__ is well
5793 documented, of course :)
5798 documented, of course :)
5794 (Magic.magic_doc): print both class and constructor docstrings.
5799 (Magic.magic_doc): print both class and constructor docstrings.
5795 (Magic.magic_pdef): give constructor info if passed a class and
5800 (Magic.magic_pdef): give constructor info if passed a class and
5796 __call__ info for callable object instances.
5801 __call__ info for callable object instances.
5797
5802
5798 2002-01-04 Fernando Perez <fperez@colorado.edu>
5803 2002-01-04 Fernando Perez <fperez@colorado.edu>
5799
5804
5800 * Made deep_reload() off by default. It doesn't always work
5805 * Made deep_reload() off by default. It doesn't always work
5801 exactly as intended, so it's probably safer to have it off. It's
5806 exactly as intended, so it's probably safer to have it off. It's
5802 still available as dreload() anyway, so nothing is lost.
5807 still available as dreload() anyway, so nothing is lost.
5803
5808
5804 2002-01-02 Fernando Perez <fperez@colorado.edu>
5809 2002-01-02 Fernando Perez <fperez@colorado.edu>
5805
5810
5806 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5811 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5807 so I wanted an updated release).
5812 so I wanted an updated release).
5808
5813
5809 2001-12-27 Fernando Perez <fperez@colorado.edu>
5814 2001-12-27 Fernando Perez <fperez@colorado.edu>
5810
5815
5811 * IPython/iplib.py (InteractiveShell.interact): Added the original
5816 * IPython/iplib.py (InteractiveShell.interact): Added the original
5812 code from 'code.py' for this module in order to change the
5817 code from 'code.py' for this module in order to change the
5813 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5818 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5814 the history cache would break when the user hit Ctrl-C, and
5819 the history cache would break when the user hit Ctrl-C, and
5815 interact() offers no way to add any hooks to it.
5820 interact() offers no way to add any hooks to it.
5816
5821
5817 2001-12-23 Fernando Perez <fperez@colorado.edu>
5822 2001-12-23 Fernando Perez <fperez@colorado.edu>
5818
5823
5819 * setup.py: added check for 'MANIFEST' before trying to remove
5824 * setup.py: added check for 'MANIFEST' before trying to remove
5820 it. Thanks to Sean Reifschneider.
5825 it. Thanks to Sean Reifschneider.
5821
5826
5822 2001-12-22 Fernando Perez <fperez@colorado.edu>
5827 2001-12-22 Fernando Perez <fperez@colorado.edu>
5823
5828
5824 * Released 0.2.2.
5829 * Released 0.2.2.
5825
5830
5826 * Finished (reasonably) writing the manual. Later will add the
5831 * Finished (reasonably) writing the manual. Later will add the
5827 python-standard navigation stylesheets, but for the time being
5832 python-standard navigation stylesheets, but for the time being
5828 it's fairly complete. Distribution will include html and pdf
5833 it's fairly complete. Distribution will include html and pdf
5829 versions.
5834 versions.
5830
5835
5831 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5836 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5832 (MayaVi author).
5837 (MayaVi author).
5833
5838
5834 2001-12-21 Fernando Perez <fperez@colorado.edu>
5839 2001-12-21 Fernando Perez <fperez@colorado.edu>
5835
5840
5836 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5841 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5837 good public release, I think (with the manual and the distutils
5842 good public release, I think (with the manual and the distutils
5838 installer). The manual can use some work, but that can go
5843 installer). The manual can use some work, but that can go
5839 slowly. Otherwise I think it's quite nice for end users. Next
5844 slowly. Otherwise I think it's quite nice for end users. Next
5840 summer, rewrite the guts of it...
5845 summer, rewrite the guts of it...
5841
5846
5842 * Changed format of ipythonrc files to use whitespace as the
5847 * Changed format of ipythonrc files to use whitespace as the
5843 separator instead of an explicit '='. Cleaner.
5848 separator instead of an explicit '='. Cleaner.
5844
5849
5845 2001-12-20 Fernando Perez <fperez@colorado.edu>
5850 2001-12-20 Fernando Perez <fperez@colorado.edu>
5846
5851
5847 * Started a manual in LyX. For now it's just a quick merge of the
5852 * Started a manual in LyX. For now it's just a quick merge of the
5848 various internal docstrings and READMEs. Later it may grow into a
5853 various internal docstrings and READMEs. Later it may grow into a
5849 nice, full-blown manual.
5854 nice, full-blown manual.
5850
5855
5851 * Set up a distutils based installer. Installation should now be
5856 * Set up a distutils based installer. Installation should now be
5852 trivially simple for end-users.
5857 trivially simple for end-users.
5853
5858
5854 2001-12-11 Fernando Perez <fperez@colorado.edu>
5859 2001-12-11 Fernando Perez <fperez@colorado.edu>
5855
5860
5856 * Released 0.2.0. First public release, announced it at
5861 * Released 0.2.0. First public release, announced it at
5857 comp.lang.python. From now on, just bugfixes...
5862 comp.lang.python. From now on, just bugfixes...
5858
5863
5859 * Went through all the files, set copyright/license notices and
5864 * Went through all the files, set copyright/license notices and
5860 cleaned up things. Ready for release.
5865 cleaned up things. Ready for release.
5861
5866
5862 2001-12-10 Fernando Perez <fperez@colorado.edu>
5867 2001-12-10 Fernando Perez <fperez@colorado.edu>
5863
5868
5864 * Changed the first-time installer not to use tarfiles. It's more
5869 * Changed the first-time installer not to use tarfiles. It's more
5865 robust now and less unix-dependent. Also makes it easier for
5870 robust now and less unix-dependent. Also makes it easier for
5866 people to later upgrade versions.
5871 people to later upgrade versions.
5867
5872
5868 * Changed @exit to @abort to reflect the fact that it's pretty
5873 * Changed @exit to @abort to reflect the fact that it's pretty
5869 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5874 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5870 becomes significant only when IPyhton is embedded: in that case,
5875 becomes significant only when IPyhton is embedded: in that case,
5871 C-D closes IPython only, but @abort kills the enclosing program
5876 C-D closes IPython only, but @abort kills the enclosing program
5872 too (unless it had called IPython inside a try catching
5877 too (unless it had called IPython inside a try catching
5873 SystemExit).
5878 SystemExit).
5874
5879
5875 * Created Shell module which exposes the actuall IPython Shell
5880 * Created Shell module which exposes the actuall IPython Shell
5876 classes, currently the normal and the embeddable one. This at
5881 classes, currently the normal and the embeddable one. This at
5877 least offers a stable interface we won't need to change when
5882 least offers a stable interface we won't need to change when
5878 (later) the internals are rewritten. That rewrite will be confined
5883 (later) the internals are rewritten. That rewrite will be confined
5879 to iplib and ipmaker, but the Shell interface should remain as is.
5884 to iplib and ipmaker, but the Shell interface should remain as is.
5880
5885
5881 * Added embed module which offers an embeddable IPShell object,
5886 * Added embed module which offers an embeddable IPShell object,
5882 useful to fire up IPython *inside* a running program. Great for
5887 useful to fire up IPython *inside* a running program. Great for
5883 debugging or dynamical data analysis.
5888 debugging or dynamical data analysis.
5884
5889
5885 2001-12-08 Fernando Perez <fperez@colorado.edu>
5890 2001-12-08 Fernando Perez <fperez@colorado.edu>
5886
5891
5887 * Fixed small bug preventing seeing info from methods of defined
5892 * Fixed small bug preventing seeing info from methods of defined
5888 objects (incorrect namespace in _ofind()).
5893 objects (incorrect namespace in _ofind()).
5889
5894
5890 * Documentation cleanup. Moved the main usage docstrings to a
5895 * Documentation cleanup. Moved the main usage docstrings to a
5891 separate file, usage.py (cleaner to maintain, and hopefully in the
5896 separate file, usage.py (cleaner to maintain, and hopefully in the
5892 future some perlpod-like way of producing interactive, man and
5897 future some perlpod-like way of producing interactive, man and
5893 html docs out of it will be found).
5898 html docs out of it will be found).
5894
5899
5895 * Added @profile to see your profile at any time.
5900 * Added @profile to see your profile at any time.
5896
5901
5897 * Added @p as an alias for 'print'. It's especially convenient if
5902 * Added @p as an alias for 'print'. It's especially convenient if
5898 using automagic ('p x' prints x).
5903 using automagic ('p x' prints x).
5899
5904
5900 * Small cleanups and fixes after a pychecker run.
5905 * Small cleanups and fixes after a pychecker run.
5901
5906
5902 * Changed the @cd command to handle @cd - and @cd -<n> for
5907 * Changed the @cd command to handle @cd - and @cd -<n> for
5903 visiting any directory in _dh.
5908 visiting any directory in _dh.
5904
5909
5905 * Introduced _dh, a history of visited directories. @dhist prints
5910 * Introduced _dh, a history of visited directories. @dhist prints
5906 it out with numbers.
5911 it out with numbers.
5907
5912
5908 2001-12-07 Fernando Perez <fperez@colorado.edu>
5913 2001-12-07 Fernando Perez <fperez@colorado.edu>
5909
5914
5910 * Released 0.1.22
5915 * Released 0.1.22
5911
5916
5912 * Made initialization a bit more robust against invalid color
5917 * Made initialization a bit more robust against invalid color
5913 options in user input (exit, not traceback-crash).
5918 options in user input (exit, not traceback-crash).
5914
5919
5915 * Changed the bug crash reporter to write the report only in the
5920 * Changed the bug crash reporter to write the report only in the
5916 user's .ipython directory. That way IPython won't litter people's
5921 user's .ipython directory. That way IPython won't litter people's
5917 hard disks with crash files all over the place. Also print on
5922 hard disks with crash files all over the place. Also print on
5918 screen the necessary mail command.
5923 screen the necessary mail command.
5919
5924
5920 * With the new ultraTB, implemented LightBG color scheme for light
5925 * With the new ultraTB, implemented LightBG color scheme for light
5921 background terminals. A lot of people like white backgrounds, so I
5926 background terminals. A lot of people like white backgrounds, so I
5922 guess we should at least give them something readable.
5927 guess we should at least give them something readable.
5923
5928
5924 2001-12-06 Fernando Perez <fperez@colorado.edu>
5929 2001-12-06 Fernando Perez <fperez@colorado.edu>
5925
5930
5926 * Modified the structure of ultraTB. Now there's a proper class
5931 * Modified the structure of ultraTB. Now there's a proper class
5927 for tables of color schemes which allow adding schemes easily and
5932 for tables of color schemes which allow adding schemes easily and
5928 switching the active scheme without creating a new instance every
5933 switching the active scheme without creating a new instance every
5929 time (which was ridiculous). The syntax for creating new schemes
5934 time (which was ridiculous). The syntax for creating new schemes
5930 is also cleaner. I think ultraTB is finally done, with a clean
5935 is also cleaner. I think ultraTB is finally done, with a clean
5931 class structure. Names are also much cleaner (now there's proper
5936 class structure. Names are also much cleaner (now there's proper
5932 color tables, no need for every variable to also have 'color' in
5937 color tables, no need for every variable to also have 'color' in
5933 its name).
5938 its name).
5934
5939
5935 * Broke down genutils into separate files. Now genutils only
5940 * Broke down genutils into separate files. Now genutils only
5936 contains utility functions, and classes have been moved to their
5941 contains utility functions, and classes have been moved to their
5937 own files (they had enough independent functionality to warrant
5942 own files (they had enough independent functionality to warrant
5938 it): ConfigLoader, OutputTrap, Struct.
5943 it): ConfigLoader, OutputTrap, Struct.
5939
5944
5940 2001-12-05 Fernando Perez <fperez@colorado.edu>
5945 2001-12-05 Fernando Perez <fperez@colorado.edu>
5941
5946
5942 * IPython turns 21! Released version 0.1.21, as a candidate for
5947 * IPython turns 21! Released version 0.1.21, as a candidate for
5943 public consumption. If all goes well, release in a few days.
5948 public consumption. If all goes well, release in a few days.
5944
5949
5945 * Fixed path bug (files in Extensions/ directory wouldn't be found
5950 * Fixed path bug (files in Extensions/ directory wouldn't be found
5946 unless IPython/ was explicitly in sys.path).
5951 unless IPython/ was explicitly in sys.path).
5947
5952
5948 * Extended the FlexCompleter class as MagicCompleter to allow
5953 * Extended the FlexCompleter class as MagicCompleter to allow
5949 completion of @-starting lines.
5954 completion of @-starting lines.
5950
5955
5951 * Created __release__.py file as a central repository for release
5956 * Created __release__.py file as a central repository for release
5952 info that other files can read from.
5957 info that other files can read from.
5953
5958
5954 * Fixed small bug in logging: when logging was turned on in
5959 * Fixed small bug in logging: when logging was turned on in
5955 mid-session, old lines with special meanings (!@?) were being
5960 mid-session, old lines with special meanings (!@?) were being
5956 logged without the prepended comment, which is necessary since
5961 logged without the prepended comment, which is necessary since
5957 they are not truly valid python syntax. This should make session
5962 they are not truly valid python syntax. This should make session
5958 restores produce less errors.
5963 restores produce less errors.
5959
5964
5960 * The namespace cleanup forced me to make a FlexCompleter class
5965 * The namespace cleanup forced me to make a FlexCompleter class
5961 which is nothing but a ripoff of rlcompleter, but with selectable
5966 which is nothing but a ripoff of rlcompleter, but with selectable
5962 namespace (rlcompleter only works in __main__.__dict__). I'll try
5967 namespace (rlcompleter only works in __main__.__dict__). I'll try
5963 to submit a note to the authors to see if this change can be
5968 to submit a note to the authors to see if this change can be
5964 incorporated in future rlcompleter releases (Dec.6: done)
5969 incorporated in future rlcompleter releases (Dec.6: done)
5965
5970
5966 * More fixes to namespace handling. It was a mess! Now all
5971 * More fixes to namespace handling. It was a mess! Now all
5967 explicit references to __main__.__dict__ are gone (except when
5972 explicit references to __main__.__dict__ are gone (except when
5968 really needed) and everything is handled through the namespace
5973 really needed) and everything is handled through the namespace
5969 dicts in the IPython instance. We seem to be getting somewhere
5974 dicts in the IPython instance. We seem to be getting somewhere
5970 with this, finally...
5975 with this, finally...
5971
5976
5972 * Small documentation updates.
5977 * Small documentation updates.
5973
5978
5974 * Created the Extensions directory under IPython (with an
5979 * Created the Extensions directory under IPython (with an
5975 __init__.py). Put the PhysicalQ stuff there. This directory should
5980 __init__.py). Put the PhysicalQ stuff there. This directory should
5976 be used for all special-purpose extensions.
5981 be used for all special-purpose extensions.
5977
5982
5978 * File renaming:
5983 * File renaming:
5979 ipythonlib --> ipmaker
5984 ipythonlib --> ipmaker
5980 ipplib --> iplib
5985 ipplib --> iplib
5981 This makes a bit more sense in terms of what these files actually do.
5986 This makes a bit more sense in terms of what these files actually do.
5982
5987
5983 * Moved all the classes and functions in ipythonlib to ipplib, so
5988 * Moved all the classes and functions in ipythonlib to ipplib, so
5984 now ipythonlib only has make_IPython(). This will ease up its
5989 now ipythonlib only has make_IPython(). This will ease up its
5985 splitting in smaller functional chunks later.
5990 splitting in smaller functional chunks later.
5986
5991
5987 * Cleaned up (done, I think) output of @whos. Better column
5992 * Cleaned up (done, I think) output of @whos. Better column
5988 formatting, and now shows str(var) for as much as it can, which is
5993 formatting, and now shows str(var) for as much as it can, which is
5989 typically what one gets with a 'print var'.
5994 typically what one gets with a 'print var'.
5990
5995
5991 2001-12-04 Fernando Perez <fperez@colorado.edu>
5996 2001-12-04 Fernando Perez <fperez@colorado.edu>
5992
5997
5993 * Fixed namespace problems. Now builtin/IPyhton/user names get
5998 * Fixed namespace problems. Now builtin/IPyhton/user names get
5994 properly reported in their namespace. Internal namespace handling
5999 properly reported in their namespace. Internal namespace handling
5995 is finally getting decent (not perfect yet, but much better than
6000 is finally getting decent (not perfect yet, but much better than
5996 the ad-hoc mess we had).
6001 the ad-hoc mess we had).
5997
6002
5998 * Removed -exit option. If people just want to run a python
6003 * Removed -exit option. If people just want to run a python
5999 script, that's what the normal interpreter is for. Less
6004 script, that's what the normal interpreter is for. Less
6000 unnecessary options, less chances for bugs.
6005 unnecessary options, less chances for bugs.
6001
6006
6002 * Added a crash handler which generates a complete post-mortem if
6007 * Added a crash handler which generates a complete post-mortem if
6003 IPython crashes. This will help a lot in tracking bugs down the
6008 IPython crashes. This will help a lot in tracking bugs down the
6004 road.
6009 road.
6005
6010
6006 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6011 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6007 which were boud to functions being reassigned would bypass the
6012 which were boud to functions being reassigned would bypass the
6008 logger, breaking the sync of _il with the prompt counter. This
6013 logger, breaking the sync of _il with the prompt counter. This
6009 would then crash IPython later when a new line was logged.
6014 would then crash IPython later when a new line was logged.
6010
6015
6011 2001-12-02 Fernando Perez <fperez@colorado.edu>
6016 2001-12-02 Fernando Perez <fperez@colorado.edu>
6012
6017
6013 * Made IPython a package. This means people don't have to clutter
6018 * Made IPython a package. This means people don't have to clutter
6014 their sys.path with yet another directory. Changed the INSTALL
6019 their sys.path with yet another directory. Changed the INSTALL
6015 file accordingly.
6020 file accordingly.
6016
6021
6017 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6022 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6018 sorts its output (so @who shows it sorted) and @whos formats the
6023 sorts its output (so @who shows it sorted) and @whos formats the
6019 table according to the width of the first column. Nicer, easier to
6024 table according to the width of the first column. Nicer, easier to
6020 read. Todo: write a generic table_format() which takes a list of
6025 read. Todo: write a generic table_format() which takes a list of
6021 lists and prints it nicely formatted, with optional row/column
6026 lists and prints it nicely formatted, with optional row/column
6022 separators and proper padding and justification.
6027 separators and proper padding and justification.
6023
6028
6024 * Released 0.1.20
6029 * Released 0.1.20
6025
6030
6026 * Fixed bug in @log which would reverse the inputcache list (a
6031 * Fixed bug in @log which would reverse the inputcache list (a
6027 copy operation was missing).
6032 copy operation was missing).
6028
6033
6029 * Code cleanup. @config was changed to use page(). Better, since
6034 * Code cleanup. @config was changed to use page(). Better, since
6030 its output is always quite long.
6035 its output is always quite long.
6031
6036
6032 * Itpl is back as a dependency. I was having too many problems
6037 * Itpl is back as a dependency. I was having too many problems
6033 getting the parametric aliases to work reliably, and it's just
6038 getting the parametric aliases to work reliably, and it's just
6034 easier to code weird string operations with it than playing %()s
6039 easier to code weird string operations with it than playing %()s
6035 games. It's only ~6k, so I don't think it's too big a deal.
6040 games. It's only ~6k, so I don't think it's too big a deal.
6036
6041
6037 * Found (and fixed) a very nasty bug with history. !lines weren't
6042 * Found (and fixed) a very nasty bug with history. !lines weren't
6038 getting cached, and the out of sync caches would crash
6043 getting cached, and the out of sync caches would crash
6039 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6044 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6040 division of labor a bit better. Bug fixed, cleaner structure.
6045 division of labor a bit better. Bug fixed, cleaner structure.
6041
6046
6042 2001-12-01 Fernando Perez <fperez@colorado.edu>
6047 2001-12-01 Fernando Perez <fperez@colorado.edu>
6043
6048
6044 * Released 0.1.19
6049 * Released 0.1.19
6045
6050
6046 * Added option -n to @hist to prevent line number printing. Much
6051 * Added option -n to @hist to prevent line number printing. Much
6047 easier to copy/paste code this way.
6052 easier to copy/paste code this way.
6048
6053
6049 * Created global _il to hold the input list. Allows easy
6054 * Created global _il to hold the input list. Allows easy
6050 re-execution of blocks of code by slicing it (inspired by Janko's
6055 re-execution of blocks of code by slicing it (inspired by Janko's
6051 comment on 'macros').
6056 comment on 'macros').
6052
6057
6053 * Small fixes and doc updates.
6058 * Small fixes and doc updates.
6054
6059
6055 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6060 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6056 much too fragile with automagic. Handles properly multi-line
6061 much too fragile with automagic. Handles properly multi-line
6057 statements and takes parameters.
6062 statements and takes parameters.
6058
6063
6059 2001-11-30 Fernando Perez <fperez@colorado.edu>
6064 2001-11-30 Fernando Perez <fperez@colorado.edu>
6060
6065
6061 * Version 0.1.18 released.
6066 * Version 0.1.18 released.
6062
6067
6063 * Fixed nasty namespace bug in initial module imports.
6068 * Fixed nasty namespace bug in initial module imports.
6064
6069
6065 * Added copyright/license notes to all code files (except
6070 * Added copyright/license notes to all code files (except
6066 DPyGetOpt). For the time being, LGPL. That could change.
6071 DPyGetOpt). For the time being, LGPL. That could change.
6067
6072
6068 * Rewrote a much nicer README, updated INSTALL, cleaned up
6073 * Rewrote a much nicer README, updated INSTALL, cleaned up
6069 ipythonrc-* samples.
6074 ipythonrc-* samples.
6070
6075
6071 * Overall code/documentation cleanup. Basically ready for
6076 * Overall code/documentation cleanup. Basically ready for
6072 release. Only remaining thing: licence decision (LGPL?).
6077 release. Only remaining thing: licence decision (LGPL?).
6073
6078
6074 * Converted load_config to a class, ConfigLoader. Now recursion
6079 * Converted load_config to a class, ConfigLoader. Now recursion
6075 control is better organized. Doesn't include the same file twice.
6080 control is better organized. Doesn't include the same file twice.
6076
6081
6077 2001-11-29 Fernando Perez <fperez@colorado.edu>
6082 2001-11-29 Fernando Perez <fperez@colorado.edu>
6078
6083
6079 * Got input history working. Changed output history variables from
6084 * Got input history working. Changed output history variables from
6080 _p to _o so that _i is for input and _o for output. Just cleaner
6085 _p to _o so that _i is for input and _o for output. Just cleaner
6081 convention.
6086 convention.
6082
6087
6083 * Implemented parametric aliases. This pretty much allows the
6088 * Implemented parametric aliases. This pretty much allows the
6084 alias system to offer full-blown shell convenience, I think.
6089 alias system to offer full-blown shell convenience, I think.
6085
6090
6086 * Version 0.1.17 released, 0.1.18 opened.
6091 * Version 0.1.17 released, 0.1.18 opened.
6087
6092
6088 * dot_ipython/ipythonrc (alias): added documentation.
6093 * dot_ipython/ipythonrc (alias): added documentation.
6089 (xcolor): Fixed small bug (xcolors -> xcolor)
6094 (xcolor): Fixed small bug (xcolors -> xcolor)
6090
6095
6091 * Changed the alias system. Now alias is a magic command to define
6096 * Changed the alias system. Now alias is a magic command to define
6092 aliases just like the shell. Rationale: the builtin magics should
6097 aliases just like the shell. Rationale: the builtin magics should
6093 be there for things deeply connected to IPython's
6098 be there for things deeply connected to IPython's
6094 architecture. And this is a much lighter system for what I think
6099 architecture. And this is a much lighter system for what I think
6095 is the really important feature: allowing users to define quickly
6100 is the really important feature: allowing users to define quickly
6096 magics that will do shell things for them, so they can customize
6101 magics that will do shell things for them, so they can customize
6097 IPython easily to match their work habits. If someone is really
6102 IPython easily to match their work habits. If someone is really
6098 desperate to have another name for a builtin alias, they can
6103 desperate to have another name for a builtin alias, they can
6099 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6104 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6100 works.
6105 works.
6101
6106
6102 2001-11-28 Fernando Perez <fperez@colorado.edu>
6107 2001-11-28 Fernando Perez <fperez@colorado.edu>
6103
6108
6104 * Changed @file so that it opens the source file at the proper
6109 * Changed @file so that it opens the source file at the proper
6105 line. Since it uses less, if your EDITOR environment is
6110 line. Since it uses less, if your EDITOR environment is
6106 configured, typing v will immediately open your editor of choice
6111 configured, typing v will immediately open your editor of choice
6107 right at the line where the object is defined. Not as quick as
6112 right at the line where the object is defined. Not as quick as
6108 having a direct @edit command, but for all intents and purposes it
6113 having a direct @edit command, but for all intents and purposes it
6109 works. And I don't have to worry about writing @edit to deal with
6114 works. And I don't have to worry about writing @edit to deal with
6110 all the editors, less does that.
6115 all the editors, less does that.
6111
6116
6112 * Version 0.1.16 released, 0.1.17 opened.
6117 * Version 0.1.16 released, 0.1.17 opened.
6113
6118
6114 * Fixed some nasty bugs in the page/page_dumb combo that could
6119 * Fixed some nasty bugs in the page/page_dumb combo that could
6115 crash IPython.
6120 crash IPython.
6116
6121
6117 2001-11-27 Fernando Perez <fperez@colorado.edu>
6122 2001-11-27 Fernando Perez <fperez@colorado.edu>
6118
6123
6119 * Version 0.1.15 released, 0.1.16 opened.
6124 * Version 0.1.15 released, 0.1.16 opened.
6120
6125
6121 * Finally got ? and ?? to work for undefined things: now it's
6126 * Finally got ? and ?? to work for undefined things: now it's
6122 possible to type {}.get? and get information about the get method
6127 possible to type {}.get? and get information about the get method
6123 of dicts, or os.path? even if only os is defined (so technically
6128 of dicts, or os.path? even if only os is defined (so technically
6124 os.path isn't). Works at any level. For example, after import os,
6129 os.path isn't). Works at any level. For example, after import os,
6125 os?, os.path?, os.path.abspath? all work. This is great, took some
6130 os?, os.path?, os.path.abspath? all work. This is great, took some
6126 work in _ofind.
6131 work in _ofind.
6127
6132
6128 * Fixed more bugs with logging. The sanest way to do it was to add
6133 * Fixed more bugs with logging. The sanest way to do it was to add
6129 to @log a 'mode' parameter. Killed two in one shot (this mode
6134 to @log a 'mode' parameter. Killed two in one shot (this mode
6130 option was a request of Janko's). I think it's finally clean
6135 option was a request of Janko's). I think it's finally clean
6131 (famous last words).
6136 (famous last words).
6132
6137
6133 * Added a page_dumb() pager which does a decent job of paging on
6138 * Added a page_dumb() pager which does a decent job of paging on
6134 screen, if better things (like less) aren't available. One less
6139 screen, if better things (like less) aren't available. One less
6135 unix dependency (someday maybe somebody will port this to
6140 unix dependency (someday maybe somebody will port this to
6136 windows).
6141 windows).
6137
6142
6138 * Fixed problem in magic_log: would lock of logging out if log
6143 * Fixed problem in magic_log: would lock of logging out if log
6139 creation failed (because it would still think it had succeeded).
6144 creation failed (because it would still think it had succeeded).
6140
6145
6141 * Improved the page() function using curses to auto-detect screen
6146 * Improved the page() function using curses to auto-detect screen
6142 size. Now it can make a much better decision on whether to print
6147 size. Now it can make a much better decision on whether to print
6143 or page a string. Option screen_length was modified: a value 0
6148 or page a string. Option screen_length was modified: a value 0
6144 means auto-detect, and that's the default now.
6149 means auto-detect, and that's the default now.
6145
6150
6146 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6151 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6147 go out. I'll test it for a few days, then talk to Janko about
6152 go out. I'll test it for a few days, then talk to Janko about
6148 licences and announce it.
6153 licences and announce it.
6149
6154
6150 * Fixed the length of the auto-generated ---> prompt which appears
6155 * Fixed the length of the auto-generated ---> prompt which appears
6151 for auto-parens and auto-quotes. Getting this right isn't trivial,
6156 for auto-parens and auto-quotes. Getting this right isn't trivial,
6152 with all the color escapes, different prompt types and optional
6157 with all the color escapes, different prompt types and optional
6153 separators. But it seems to be working in all the combinations.
6158 separators. But it seems to be working in all the combinations.
6154
6159
6155 2001-11-26 Fernando Perez <fperez@colorado.edu>
6160 2001-11-26 Fernando Perez <fperez@colorado.edu>
6156
6161
6157 * Wrote a regexp filter to get option types from the option names
6162 * Wrote a regexp filter to get option types from the option names
6158 string. This eliminates the need to manually keep two duplicate
6163 string. This eliminates the need to manually keep two duplicate
6159 lists.
6164 lists.
6160
6165
6161 * Removed the unneeded check_option_names. Now options are handled
6166 * Removed the unneeded check_option_names. Now options are handled
6162 in a much saner manner and it's easy to visually check that things
6167 in a much saner manner and it's easy to visually check that things
6163 are ok.
6168 are ok.
6164
6169
6165 * Updated version numbers on all files I modified to carry a
6170 * Updated version numbers on all files I modified to carry a
6166 notice so Janko and Nathan have clear version markers.
6171 notice so Janko and Nathan have clear version markers.
6167
6172
6168 * Updated docstring for ultraTB with my changes. I should send
6173 * Updated docstring for ultraTB with my changes. I should send
6169 this to Nathan.
6174 this to Nathan.
6170
6175
6171 * Lots of small fixes. Ran everything through pychecker again.
6176 * Lots of small fixes. Ran everything through pychecker again.
6172
6177
6173 * Made loading of deep_reload an cmd line option. If it's not too
6178 * Made loading of deep_reload an cmd line option. If it's not too
6174 kosher, now people can just disable it. With -nodeep_reload it's
6179 kosher, now people can just disable it. With -nodeep_reload it's
6175 still available as dreload(), it just won't overwrite reload().
6180 still available as dreload(), it just won't overwrite reload().
6176
6181
6177 * Moved many options to the no| form (-opt and -noopt
6182 * Moved many options to the no| form (-opt and -noopt
6178 accepted). Cleaner.
6183 accepted). Cleaner.
6179
6184
6180 * Changed magic_log so that if called with no parameters, it uses
6185 * Changed magic_log so that if called with no parameters, it uses
6181 'rotate' mode. That way auto-generated logs aren't automatically
6186 'rotate' mode. That way auto-generated logs aren't automatically
6182 over-written. For normal logs, now a backup is made if it exists
6187 over-written. For normal logs, now a backup is made if it exists
6183 (only 1 level of backups). A new 'backup' mode was added to the
6188 (only 1 level of backups). A new 'backup' mode was added to the
6184 Logger class to support this. This was a request by Janko.
6189 Logger class to support this. This was a request by Janko.
6185
6190
6186 * Added @logoff/@logon to stop/restart an active log.
6191 * Added @logoff/@logon to stop/restart an active log.
6187
6192
6188 * Fixed a lot of bugs in log saving/replay. It was pretty
6193 * Fixed a lot of bugs in log saving/replay. It was pretty
6189 broken. Now special lines (!@,/) appear properly in the command
6194 broken. Now special lines (!@,/) appear properly in the command
6190 history after a log replay.
6195 history after a log replay.
6191
6196
6192 * Tried and failed to implement full session saving via pickle. My
6197 * Tried and failed to implement full session saving via pickle. My
6193 idea was to pickle __main__.__dict__, but modules can't be
6198 idea was to pickle __main__.__dict__, but modules can't be
6194 pickled. This would be a better alternative to replaying logs, but
6199 pickled. This would be a better alternative to replaying logs, but
6195 seems quite tricky to get to work. Changed -session to be called
6200 seems quite tricky to get to work. Changed -session to be called
6196 -logplay, which more accurately reflects what it does. And if we
6201 -logplay, which more accurately reflects what it does. And if we
6197 ever get real session saving working, -session is now available.
6202 ever get real session saving working, -session is now available.
6198
6203
6199 * Implemented color schemes for prompts also. As for tracebacks,
6204 * Implemented color schemes for prompts also. As for tracebacks,
6200 currently only NoColor and Linux are supported. But now the
6205 currently only NoColor and Linux are supported. But now the
6201 infrastructure is in place, based on a generic ColorScheme
6206 infrastructure is in place, based on a generic ColorScheme
6202 class. So writing and activating new schemes both for the prompts
6207 class. So writing and activating new schemes both for the prompts
6203 and the tracebacks should be straightforward.
6208 and the tracebacks should be straightforward.
6204
6209
6205 * Version 0.1.13 released, 0.1.14 opened.
6210 * Version 0.1.13 released, 0.1.14 opened.
6206
6211
6207 * Changed handling of options for output cache. Now counter is
6212 * Changed handling of options for output cache. Now counter is
6208 hardwired starting at 1 and one specifies the maximum number of
6213 hardwired starting at 1 and one specifies the maximum number of
6209 entries *in the outcache* (not the max prompt counter). This is
6214 entries *in the outcache* (not the max prompt counter). This is
6210 much better, since many statements won't increase the cache
6215 much better, since many statements won't increase the cache
6211 count. It also eliminated some confusing options, now there's only
6216 count. It also eliminated some confusing options, now there's only
6212 one: cache_size.
6217 one: cache_size.
6213
6218
6214 * Added 'alias' magic function and magic_alias option in the
6219 * Added 'alias' magic function and magic_alias option in the
6215 ipythonrc file. Now the user can easily define whatever names he
6220 ipythonrc file. Now the user can easily define whatever names he
6216 wants for the magic functions without having to play weird
6221 wants for the magic functions without having to play weird
6217 namespace games. This gives IPython a real shell-like feel.
6222 namespace games. This gives IPython a real shell-like feel.
6218
6223
6219 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6224 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6220 @ or not).
6225 @ or not).
6221
6226
6222 This was one of the last remaining 'visible' bugs (that I know
6227 This was one of the last remaining 'visible' bugs (that I know
6223 of). I think if I can clean up the session loading so it works
6228 of). I think if I can clean up the session loading so it works
6224 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6229 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6225 about licensing).
6230 about licensing).
6226
6231
6227 2001-11-25 Fernando Perez <fperez@colorado.edu>
6232 2001-11-25 Fernando Perez <fperez@colorado.edu>
6228
6233
6229 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6234 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6230 there's a cleaner distinction between what ? and ?? show.
6235 there's a cleaner distinction between what ? and ?? show.
6231
6236
6232 * Added screen_length option. Now the user can define his own
6237 * Added screen_length option. Now the user can define his own
6233 screen size for page() operations.
6238 screen size for page() operations.
6234
6239
6235 * Implemented magic shell-like functions with automatic code
6240 * Implemented magic shell-like functions with automatic code
6236 generation. Now adding another function is just a matter of adding
6241 generation. Now adding another function is just a matter of adding
6237 an entry to a dict, and the function is dynamically generated at
6242 an entry to a dict, and the function is dynamically generated at
6238 run-time. Python has some really cool features!
6243 run-time. Python has some really cool features!
6239
6244
6240 * Renamed many options to cleanup conventions a little. Now all
6245 * Renamed many options to cleanup conventions a little. Now all
6241 are lowercase, and only underscores where needed. Also in the code
6246 are lowercase, and only underscores where needed. Also in the code
6242 option name tables are clearer.
6247 option name tables are clearer.
6243
6248
6244 * Changed prompts a little. Now input is 'In [n]:' instead of
6249 * Changed prompts a little. Now input is 'In [n]:' instead of
6245 'In[n]:='. This allows it the numbers to be aligned with the
6250 'In[n]:='. This allows it the numbers to be aligned with the
6246 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6251 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6247 Python (it was a Mathematica thing). The '...' continuation prompt
6252 Python (it was a Mathematica thing). The '...' continuation prompt
6248 was also changed a little to align better.
6253 was also changed a little to align better.
6249
6254
6250 * Fixed bug when flushing output cache. Not all _p<n> variables
6255 * Fixed bug when flushing output cache. Not all _p<n> variables
6251 exist, so their deletion needs to be wrapped in a try:
6256 exist, so their deletion needs to be wrapped in a try:
6252
6257
6253 * Figured out how to properly use inspect.formatargspec() (it
6258 * Figured out how to properly use inspect.formatargspec() (it
6254 requires the args preceded by *). So I removed all the code from
6259 requires the args preceded by *). So I removed all the code from
6255 _get_pdef in Magic, which was just replicating that.
6260 _get_pdef in Magic, which was just replicating that.
6256
6261
6257 * Added test to prefilter to allow redefining magic function names
6262 * Added test to prefilter to allow redefining magic function names
6258 as variables. This is ok, since the @ form is always available,
6263 as variables. This is ok, since the @ form is always available,
6259 but whe should allow the user to define a variable called 'ls' if
6264 but whe should allow the user to define a variable called 'ls' if
6260 he needs it.
6265 he needs it.
6261
6266
6262 * Moved the ToDo information from README into a separate ToDo.
6267 * Moved the ToDo information from README into a separate ToDo.
6263
6268
6264 * General code cleanup and small bugfixes. I think it's close to a
6269 * General code cleanup and small bugfixes. I think it's close to a
6265 state where it can be released, obviously with a big 'beta'
6270 state where it can be released, obviously with a big 'beta'
6266 warning on it.
6271 warning on it.
6267
6272
6268 * Got the magic function split to work. Now all magics are defined
6273 * Got the magic function split to work. Now all magics are defined
6269 in a separate class. It just organizes things a bit, and now
6274 in a separate class. It just organizes things a bit, and now
6270 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6275 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6271 was too long).
6276 was too long).
6272
6277
6273 * Changed @clear to @reset to avoid potential confusions with
6278 * Changed @clear to @reset to avoid potential confusions with
6274 the shell command clear. Also renamed @cl to @clear, which does
6279 the shell command clear. Also renamed @cl to @clear, which does
6275 exactly what people expect it to from their shell experience.
6280 exactly what people expect it to from their shell experience.
6276
6281
6277 Added a check to the @reset command (since it's so
6282 Added a check to the @reset command (since it's so
6278 destructive, it's probably a good idea to ask for confirmation).
6283 destructive, it's probably a good idea to ask for confirmation).
6279 But now reset only works for full namespace resetting. Since the
6284 But now reset only works for full namespace resetting. Since the
6280 del keyword is already there for deleting a few specific
6285 del keyword is already there for deleting a few specific
6281 variables, I don't see the point of having a redundant magic
6286 variables, I don't see the point of having a redundant magic
6282 function for the same task.
6287 function for the same task.
6283
6288
6284 2001-11-24 Fernando Perez <fperez@colorado.edu>
6289 2001-11-24 Fernando Perez <fperez@colorado.edu>
6285
6290
6286 * Updated the builtin docs (esp. the ? ones).
6291 * Updated the builtin docs (esp. the ? ones).
6287
6292
6288 * Ran all the code through pychecker. Not terribly impressed with
6293 * Ran all the code through pychecker. Not terribly impressed with
6289 it: lots of spurious warnings and didn't really find anything of
6294 it: lots of spurious warnings and didn't really find anything of
6290 substance (just a few modules being imported and not used).
6295 substance (just a few modules being imported and not used).
6291
6296
6292 * Implemented the new ultraTB functionality into IPython. New
6297 * Implemented the new ultraTB functionality into IPython. New
6293 option: xcolors. This chooses color scheme. xmode now only selects
6298 option: xcolors. This chooses color scheme. xmode now only selects
6294 between Plain and Verbose. Better orthogonality.
6299 between Plain and Verbose. Better orthogonality.
6295
6300
6296 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6301 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6297 mode and color scheme for the exception handlers. Now it's
6302 mode and color scheme for the exception handlers. Now it's
6298 possible to have the verbose traceback with no coloring.
6303 possible to have the verbose traceback with no coloring.
6299
6304
6300 2001-11-23 Fernando Perez <fperez@colorado.edu>
6305 2001-11-23 Fernando Perez <fperez@colorado.edu>
6301
6306
6302 * Version 0.1.12 released, 0.1.13 opened.
6307 * Version 0.1.12 released, 0.1.13 opened.
6303
6308
6304 * Removed option to set auto-quote and auto-paren escapes by
6309 * Removed option to set auto-quote and auto-paren escapes by
6305 user. The chances of breaking valid syntax are just too high. If
6310 user. The chances of breaking valid syntax are just too high. If
6306 someone *really* wants, they can always dig into the code.
6311 someone *really* wants, they can always dig into the code.
6307
6312
6308 * Made prompt separators configurable.
6313 * Made prompt separators configurable.
6309
6314
6310 2001-11-22 Fernando Perez <fperez@colorado.edu>
6315 2001-11-22 Fernando Perez <fperez@colorado.edu>
6311
6316
6312 * Small bugfixes in many places.
6317 * Small bugfixes in many places.
6313
6318
6314 * Removed the MyCompleter class from ipplib. It seemed redundant
6319 * Removed the MyCompleter class from ipplib. It seemed redundant
6315 with the C-p,C-n history search functionality. Less code to
6320 with the C-p,C-n history search functionality. Less code to
6316 maintain.
6321 maintain.
6317
6322
6318 * Moved all the original ipython.py code into ipythonlib.py. Right
6323 * Moved all the original ipython.py code into ipythonlib.py. Right
6319 now it's just one big dump into a function called make_IPython, so
6324 now it's just one big dump into a function called make_IPython, so
6320 no real modularity has been gained. But at least it makes the
6325 no real modularity has been gained. But at least it makes the
6321 wrapper script tiny, and since ipythonlib is a module, it gets
6326 wrapper script tiny, and since ipythonlib is a module, it gets
6322 compiled and startup is much faster.
6327 compiled and startup is much faster.
6323
6328
6324 This is a reasobably 'deep' change, so we should test it for a
6329 This is a reasobably 'deep' change, so we should test it for a
6325 while without messing too much more with the code.
6330 while without messing too much more with the code.
6326
6331
6327 2001-11-21 Fernando Perez <fperez@colorado.edu>
6332 2001-11-21 Fernando Perez <fperez@colorado.edu>
6328
6333
6329 * Version 0.1.11 released, 0.1.12 opened for further work.
6334 * Version 0.1.11 released, 0.1.12 opened for further work.
6330
6335
6331 * Removed dependency on Itpl. It was only needed in one place. It
6336 * Removed dependency on Itpl. It was only needed in one place. It
6332 would be nice if this became part of python, though. It makes life
6337 would be nice if this became part of python, though. It makes life
6333 *a lot* easier in some cases.
6338 *a lot* easier in some cases.
6334
6339
6335 * Simplified the prefilter code a bit. Now all handlers are
6340 * Simplified the prefilter code a bit. Now all handlers are
6336 expected to explicitly return a value (at least a blank string).
6341 expected to explicitly return a value (at least a blank string).
6337
6342
6338 * Heavy edits in ipplib. Removed the help system altogether. Now
6343 * Heavy edits in ipplib. Removed the help system altogether. Now
6339 obj?/?? is used for inspecting objects, a magic @doc prints
6344 obj?/?? is used for inspecting objects, a magic @doc prints
6340 docstrings, and full-blown Python help is accessed via the 'help'
6345 docstrings, and full-blown Python help is accessed via the 'help'
6341 keyword. This cleans up a lot of code (less to maintain) and does
6346 keyword. This cleans up a lot of code (less to maintain) and does
6342 the job. Since 'help' is now a standard Python component, might as
6347 the job. Since 'help' is now a standard Python component, might as
6343 well use it and remove duplicate functionality.
6348 well use it and remove duplicate functionality.
6344
6349
6345 Also removed the option to use ipplib as a standalone program. By
6350 Also removed the option to use ipplib as a standalone program. By
6346 now it's too dependent on other parts of IPython to function alone.
6351 now it's too dependent on other parts of IPython to function alone.
6347
6352
6348 * Fixed bug in genutils.pager. It would crash if the pager was
6353 * Fixed bug in genutils.pager. It would crash if the pager was
6349 exited immediately after opening (broken pipe).
6354 exited immediately after opening (broken pipe).
6350
6355
6351 * Trimmed down the VerboseTB reporting a little. The header is
6356 * Trimmed down the VerboseTB reporting a little. The header is
6352 much shorter now and the repeated exception arguments at the end
6357 much shorter now and the repeated exception arguments at the end
6353 have been removed. For interactive use the old header seemed a bit
6358 have been removed. For interactive use the old header seemed a bit
6354 excessive.
6359 excessive.
6355
6360
6356 * Fixed small bug in output of @whos for variables with multi-word
6361 * Fixed small bug in output of @whos for variables with multi-word
6357 types (only first word was displayed).
6362 types (only first word was displayed).
6358
6363
6359 2001-11-17 Fernando Perez <fperez@colorado.edu>
6364 2001-11-17 Fernando Perez <fperez@colorado.edu>
6360
6365
6361 * Version 0.1.10 released, 0.1.11 opened for further work.
6366 * Version 0.1.10 released, 0.1.11 opened for further work.
6362
6367
6363 * Modified dirs and friends. dirs now *returns* the stack (not
6368 * Modified dirs and friends. dirs now *returns* the stack (not
6364 prints), so one can manipulate it as a variable. Convenient to
6369 prints), so one can manipulate it as a variable. Convenient to
6365 travel along many directories.
6370 travel along many directories.
6366
6371
6367 * Fixed bug in magic_pdef: would only work with functions with
6372 * Fixed bug in magic_pdef: would only work with functions with
6368 arguments with default values.
6373 arguments with default values.
6369
6374
6370 2001-11-14 Fernando Perez <fperez@colorado.edu>
6375 2001-11-14 Fernando Perez <fperez@colorado.edu>
6371
6376
6372 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6377 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6373 example with IPython. Various other minor fixes and cleanups.
6378 example with IPython. Various other minor fixes and cleanups.
6374
6379
6375 * Version 0.1.9 released, 0.1.10 opened for further work.
6380 * Version 0.1.9 released, 0.1.10 opened for further work.
6376
6381
6377 * Added sys.path to the list of directories searched in the
6382 * Added sys.path to the list of directories searched in the
6378 execfile= option. It used to be the current directory and the
6383 execfile= option. It used to be the current directory and the
6379 user's IPYTHONDIR only.
6384 user's IPYTHONDIR only.
6380
6385
6381 2001-11-13 Fernando Perez <fperez@colorado.edu>
6386 2001-11-13 Fernando Perez <fperez@colorado.edu>
6382
6387
6383 * Reinstated the raw_input/prefilter separation that Janko had
6388 * Reinstated the raw_input/prefilter separation that Janko had
6384 initially. This gives a more convenient setup for extending the
6389 initially. This gives a more convenient setup for extending the
6385 pre-processor from the outside: raw_input always gets a string,
6390 pre-processor from the outside: raw_input always gets a string,
6386 and prefilter has to process it. We can then redefine prefilter
6391 and prefilter has to process it. We can then redefine prefilter
6387 from the outside and implement extensions for special
6392 from the outside and implement extensions for special
6388 purposes.
6393 purposes.
6389
6394
6390 Today I got one for inputting PhysicalQuantity objects
6395 Today I got one for inputting PhysicalQuantity objects
6391 (from Scientific) without needing any function calls at
6396 (from Scientific) without needing any function calls at
6392 all. Extremely convenient, and it's all done as a user-level
6397 all. Extremely convenient, and it's all done as a user-level
6393 extension (no IPython code was touched). Now instead of:
6398 extension (no IPython code was touched). Now instead of:
6394 a = PhysicalQuantity(4.2,'m/s**2')
6399 a = PhysicalQuantity(4.2,'m/s**2')
6395 one can simply say
6400 one can simply say
6396 a = 4.2 m/s**2
6401 a = 4.2 m/s**2
6397 or even
6402 or even
6398 a = 4.2 m/s^2
6403 a = 4.2 m/s^2
6399
6404
6400 I use this, but it's also a proof of concept: IPython really is
6405 I use this, but it's also a proof of concept: IPython really is
6401 fully user-extensible, even at the level of the parsing of the
6406 fully user-extensible, even at the level of the parsing of the
6402 command line. It's not trivial, but it's perfectly doable.
6407 command line. It's not trivial, but it's perfectly doable.
6403
6408
6404 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6409 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6405 the problem of modules being loaded in the inverse order in which
6410 the problem of modules being loaded in the inverse order in which
6406 they were defined in
6411 they were defined in
6407
6412
6408 * Version 0.1.8 released, 0.1.9 opened for further work.
6413 * Version 0.1.8 released, 0.1.9 opened for further work.
6409
6414
6410 * Added magics pdef, source and file. They respectively show the
6415 * Added magics pdef, source and file. They respectively show the
6411 definition line ('prototype' in C), source code and full python
6416 definition line ('prototype' in C), source code and full python
6412 file for any callable object. The object inspector oinfo uses
6417 file for any callable object. The object inspector oinfo uses
6413 these to show the same information.
6418 these to show the same information.
6414
6419
6415 * Version 0.1.7 released, 0.1.8 opened for further work.
6420 * Version 0.1.7 released, 0.1.8 opened for further work.
6416
6421
6417 * Separated all the magic functions into a class called Magic. The
6422 * Separated all the magic functions into a class called Magic. The
6418 InteractiveShell class was becoming too big for Xemacs to handle
6423 InteractiveShell class was becoming too big for Xemacs to handle
6419 (de-indenting a line would lock it up for 10 seconds while it
6424 (de-indenting a line would lock it up for 10 seconds while it
6420 backtracked on the whole class!)
6425 backtracked on the whole class!)
6421
6426
6422 FIXME: didn't work. It can be done, but right now namespaces are
6427 FIXME: didn't work. It can be done, but right now namespaces are
6423 all messed up. Do it later (reverted it for now, so at least
6428 all messed up. Do it later (reverted it for now, so at least
6424 everything works as before).
6429 everything works as before).
6425
6430
6426 * Got the object introspection system (magic_oinfo) working! I
6431 * Got the object introspection system (magic_oinfo) working! I
6427 think this is pretty much ready for release to Janko, so he can
6432 think this is pretty much ready for release to Janko, so he can
6428 test it for a while and then announce it. Pretty much 100% of what
6433 test it for a while and then announce it. Pretty much 100% of what
6429 I wanted for the 'phase 1' release is ready. Happy, tired.
6434 I wanted for the 'phase 1' release is ready. Happy, tired.
6430
6435
6431 2001-11-12 Fernando Perez <fperez@colorado.edu>
6436 2001-11-12 Fernando Perez <fperez@colorado.edu>
6432
6437
6433 * Version 0.1.6 released, 0.1.7 opened for further work.
6438 * Version 0.1.6 released, 0.1.7 opened for further work.
6434
6439
6435 * Fixed bug in printing: it used to test for truth before
6440 * Fixed bug in printing: it used to test for truth before
6436 printing, so 0 wouldn't print. Now checks for None.
6441 printing, so 0 wouldn't print. Now checks for None.
6437
6442
6438 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6443 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6439 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6444 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6440 reaches by hand into the outputcache. Think of a better way to do
6445 reaches by hand into the outputcache. Think of a better way to do
6441 this later.
6446 this later.
6442
6447
6443 * Various small fixes thanks to Nathan's comments.
6448 * Various small fixes thanks to Nathan's comments.
6444
6449
6445 * Changed magic_pprint to magic_Pprint. This way it doesn't
6450 * Changed magic_pprint to magic_Pprint. This way it doesn't
6446 collide with pprint() and the name is consistent with the command
6451 collide with pprint() and the name is consistent with the command
6447 line option.
6452 line option.
6448
6453
6449 * Changed prompt counter behavior to be fully like
6454 * Changed prompt counter behavior to be fully like
6450 Mathematica's. That is, even input that doesn't return a result
6455 Mathematica's. That is, even input that doesn't return a result
6451 raises the prompt counter. The old behavior was kind of confusing
6456 raises the prompt counter. The old behavior was kind of confusing
6452 (getting the same prompt number several times if the operation
6457 (getting the same prompt number several times if the operation
6453 didn't return a result).
6458 didn't return a result).
6454
6459
6455 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6460 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6456
6461
6457 * Fixed -Classic mode (wasn't working anymore).
6462 * Fixed -Classic mode (wasn't working anymore).
6458
6463
6459 * Added colored prompts using Nathan's new code. Colors are
6464 * Added colored prompts using Nathan's new code. Colors are
6460 currently hardwired, they can be user-configurable. For
6465 currently hardwired, they can be user-configurable. For
6461 developers, they can be chosen in file ipythonlib.py, at the
6466 developers, they can be chosen in file ipythonlib.py, at the
6462 beginning of the CachedOutput class def.
6467 beginning of the CachedOutput class def.
6463
6468
6464 2001-11-11 Fernando Perez <fperez@colorado.edu>
6469 2001-11-11 Fernando Perez <fperez@colorado.edu>
6465
6470
6466 * Version 0.1.5 released, 0.1.6 opened for further work.
6471 * Version 0.1.5 released, 0.1.6 opened for further work.
6467
6472
6468 * Changed magic_env to *return* the environment as a dict (not to
6473 * Changed magic_env to *return* the environment as a dict (not to
6469 print it). This way it prints, but it can also be processed.
6474 print it). This way it prints, but it can also be processed.
6470
6475
6471 * Added Verbose exception reporting to interactive
6476 * Added Verbose exception reporting to interactive
6472 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6477 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6473 traceback. Had to make some changes to the ultraTB file. This is
6478 traceback. Had to make some changes to the ultraTB file. This is
6474 probably the last 'big' thing in my mental todo list. This ties
6479 probably the last 'big' thing in my mental todo list. This ties
6475 in with the next entry:
6480 in with the next entry:
6476
6481
6477 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6482 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6478 has to specify is Plain, Color or Verbose for all exception
6483 has to specify is Plain, Color or Verbose for all exception
6479 handling.
6484 handling.
6480
6485
6481 * Removed ShellServices option. All this can really be done via
6486 * Removed ShellServices option. All this can really be done via
6482 the magic system. It's easier to extend, cleaner and has automatic
6487 the magic system. It's easier to extend, cleaner and has automatic
6483 namespace protection and documentation.
6488 namespace protection and documentation.
6484
6489
6485 2001-11-09 Fernando Perez <fperez@colorado.edu>
6490 2001-11-09 Fernando Perez <fperez@colorado.edu>
6486
6491
6487 * Fixed bug in output cache flushing (missing parameter to
6492 * Fixed bug in output cache flushing (missing parameter to
6488 __init__). Other small bugs fixed (found using pychecker).
6493 __init__). Other small bugs fixed (found using pychecker).
6489
6494
6490 * Version 0.1.4 opened for bugfixing.
6495 * Version 0.1.4 opened for bugfixing.
6491
6496
6492 2001-11-07 Fernando Perez <fperez@colorado.edu>
6497 2001-11-07 Fernando Perez <fperez@colorado.edu>
6493
6498
6494 * Version 0.1.3 released, mainly because of the raw_input bug.
6499 * Version 0.1.3 released, mainly because of the raw_input bug.
6495
6500
6496 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6501 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6497 and when testing for whether things were callable, a call could
6502 and when testing for whether things were callable, a call could
6498 actually be made to certain functions. They would get called again
6503 actually be made to certain functions. They would get called again
6499 once 'really' executed, with a resulting double call. A disaster
6504 once 'really' executed, with a resulting double call. A disaster
6500 in many cases (list.reverse() would never work!).
6505 in many cases (list.reverse() would never work!).
6501
6506
6502 * Removed prefilter() function, moved its code to raw_input (which
6507 * Removed prefilter() function, moved its code to raw_input (which
6503 after all was just a near-empty caller for prefilter). This saves
6508 after all was just a near-empty caller for prefilter). This saves
6504 a function call on every prompt, and simplifies the class a tiny bit.
6509 a function call on every prompt, and simplifies the class a tiny bit.
6505
6510
6506 * Fix _ip to __ip name in magic example file.
6511 * Fix _ip to __ip name in magic example file.
6507
6512
6508 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6513 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6509 work with non-gnu versions of tar.
6514 work with non-gnu versions of tar.
6510
6515
6511 2001-11-06 Fernando Perez <fperez@colorado.edu>
6516 2001-11-06 Fernando Perez <fperez@colorado.edu>
6512
6517
6513 * Version 0.1.2. Just to keep track of the recent changes.
6518 * Version 0.1.2. Just to keep track of the recent changes.
6514
6519
6515 * Fixed nasty bug in output prompt routine. It used to check 'if
6520 * Fixed nasty bug in output prompt routine. It used to check 'if
6516 arg != None...'. Problem is, this fails if arg implements a
6521 arg != None...'. Problem is, this fails if arg implements a
6517 special comparison (__cmp__) which disallows comparing to
6522 special comparison (__cmp__) which disallows comparing to
6518 None. Found it when trying to use the PhysicalQuantity module from
6523 None. Found it when trying to use the PhysicalQuantity module from
6519 ScientificPython.
6524 ScientificPython.
6520
6525
6521 2001-11-05 Fernando Perez <fperez@colorado.edu>
6526 2001-11-05 Fernando Perez <fperez@colorado.edu>
6522
6527
6523 * Also added dirs. Now the pushd/popd/dirs family functions
6528 * Also added dirs. Now the pushd/popd/dirs family functions
6524 basically like the shell, with the added convenience of going home
6529 basically like the shell, with the added convenience of going home
6525 when called with no args.
6530 when called with no args.
6526
6531
6527 * pushd/popd slightly modified to mimic shell behavior more
6532 * pushd/popd slightly modified to mimic shell behavior more
6528 closely.
6533 closely.
6529
6534
6530 * Added env,pushd,popd from ShellServices as magic functions. I
6535 * Added env,pushd,popd from ShellServices as magic functions. I
6531 think the cleanest will be to port all desired functions from
6536 think the cleanest will be to port all desired functions from
6532 ShellServices as magics and remove ShellServices altogether. This
6537 ShellServices as magics and remove ShellServices altogether. This
6533 will provide a single, clean way of adding functionality
6538 will provide a single, clean way of adding functionality
6534 (shell-type or otherwise) to IP.
6539 (shell-type or otherwise) to IP.
6535
6540
6536 2001-11-04 Fernando Perez <fperez@colorado.edu>
6541 2001-11-04 Fernando Perez <fperez@colorado.edu>
6537
6542
6538 * Added .ipython/ directory to sys.path. This way users can keep
6543 * Added .ipython/ directory to sys.path. This way users can keep
6539 customizations there and access them via import.
6544 customizations there and access them via import.
6540
6545
6541 2001-11-03 Fernando Perez <fperez@colorado.edu>
6546 2001-11-03 Fernando Perez <fperez@colorado.edu>
6542
6547
6543 * Opened version 0.1.1 for new changes.
6548 * Opened version 0.1.1 for new changes.
6544
6549
6545 * Changed version number to 0.1.0: first 'public' release, sent to
6550 * Changed version number to 0.1.0: first 'public' release, sent to
6546 Nathan and Janko.
6551 Nathan and Janko.
6547
6552
6548 * Lots of small fixes and tweaks.
6553 * Lots of small fixes and tweaks.
6549
6554
6550 * Minor changes to whos format. Now strings are shown, snipped if
6555 * Minor changes to whos format. Now strings are shown, snipped if
6551 too long.
6556 too long.
6552
6557
6553 * Changed ShellServices to work on __main__ so they show up in @who
6558 * Changed ShellServices to work on __main__ so they show up in @who
6554
6559
6555 * Help also works with ? at the end of a line:
6560 * Help also works with ? at the end of a line:
6556 ?sin and sin?
6561 ?sin and sin?
6557 both produce the same effect. This is nice, as often I use the
6562 both produce the same effect. This is nice, as often I use the
6558 tab-complete to find the name of a method, but I used to then have
6563 tab-complete to find the name of a method, but I used to then have
6559 to go to the beginning of the line to put a ? if I wanted more
6564 to go to the beginning of the line to put a ? if I wanted more
6560 info. Now I can just add the ? and hit return. Convenient.
6565 info. Now I can just add the ? and hit return. Convenient.
6561
6566
6562 2001-11-02 Fernando Perez <fperez@colorado.edu>
6567 2001-11-02 Fernando Perez <fperez@colorado.edu>
6563
6568
6564 * Python version check (>=2.1) added.
6569 * Python version check (>=2.1) added.
6565
6570
6566 * Added LazyPython documentation. At this point the docs are quite
6571 * Added LazyPython documentation. At this point the docs are quite
6567 a mess. A cleanup is in order.
6572 a mess. A cleanup is in order.
6568
6573
6569 * Auto-installer created. For some bizarre reason, the zipfiles
6574 * Auto-installer created. For some bizarre reason, the zipfiles
6570 module isn't working on my system. So I made a tar version
6575 module isn't working on my system. So I made a tar version
6571 (hopefully the command line options in various systems won't kill
6576 (hopefully the command line options in various systems won't kill
6572 me).
6577 me).
6573
6578
6574 * Fixes to Struct in genutils. Now all dictionary-like methods are
6579 * Fixes to Struct in genutils. Now all dictionary-like methods are
6575 protected (reasonably).
6580 protected (reasonably).
6576
6581
6577 * Added pager function to genutils and changed ? to print usage
6582 * Added pager function to genutils and changed ? to print usage
6578 note through it (it was too long).
6583 note through it (it was too long).
6579
6584
6580 * Added the LazyPython functionality. Works great! I changed the
6585 * Added the LazyPython functionality. Works great! I changed the
6581 auto-quote escape to ';', it's on home row and next to '. But
6586 auto-quote escape to ';', it's on home row and next to '. But
6582 both auto-quote and auto-paren (still /) escapes are command-line
6587 both auto-quote and auto-paren (still /) escapes are command-line
6583 parameters.
6588 parameters.
6584
6589
6585
6590
6586 2001-11-01 Fernando Perez <fperez@colorado.edu>
6591 2001-11-01 Fernando Perez <fperez@colorado.edu>
6587
6592
6588 * Version changed to 0.0.7. Fairly large change: configuration now
6593 * Version changed to 0.0.7. Fairly large change: configuration now
6589 is all stored in a directory, by default .ipython. There, all
6594 is all stored in a directory, by default .ipython. There, all
6590 config files have normal looking names (not .names)
6595 config files have normal looking names (not .names)
6591
6596
6592 * Version 0.0.6 Released first to Lucas and Archie as a test
6597 * Version 0.0.6 Released first to Lucas and Archie as a test
6593 run. Since it's the first 'semi-public' release, change version to
6598 run. Since it's the first 'semi-public' release, change version to
6594 > 0.0.6 for any changes now.
6599 > 0.0.6 for any changes now.
6595
6600
6596 * Stuff I had put in the ipplib.py changelog:
6601 * Stuff I had put in the ipplib.py changelog:
6597
6602
6598 Changes to InteractiveShell:
6603 Changes to InteractiveShell:
6599
6604
6600 - Made the usage message a parameter.
6605 - Made the usage message a parameter.
6601
6606
6602 - Require the name of the shell variable to be given. It's a bit
6607 - Require the name of the shell variable to be given. It's a bit
6603 of a hack, but allows the name 'shell' not to be hardwired in the
6608 of a hack, but allows the name 'shell' not to be hardwired in the
6604 magic (@) handler, which is problematic b/c it requires
6609 magic (@) handler, which is problematic b/c it requires
6605 polluting the global namespace with 'shell'. This in turn is
6610 polluting the global namespace with 'shell'. This in turn is
6606 fragile: if a user redefines a variable called shell, things
6611 fragile: if a user redefines a variable called shell, things
6607 break.
6612 break.
6608
6613
6609 - magic @: all functions available through @ need to be defined
6614 - magic @: all functions available through @ need to be defined
6610 as magic_<name>, even though they can be called simply as
6615 as magic_<name>, even though they can be called simply as
6611 @<name>. This allows the special command @magic to gather
6616 @<name>. This allows the special command @magic to gather
6612 information automatically about all existing magic functions,
6617 information automatically about all existing magic functions,
6613 even if they are run-time user extensions, by parsing the shell
6618 even if they are run-time user extensions, by parsing the shell
6614 instance __dict__ looking for special magic_ names.
6619 instance __dict__ looking for special magic_ names.
6615
6620
6616 - mainloop: added *two* local namespace parameters. This allows
6621 - mainloop: added *two* local namespace parameters. This allows
6617 the class to differentiate between parameters which were there
6622 the class to differentiate between parameters which were there
6618 before and after command line initialization was processed. This
6623 before and after command line initialization was processed. This
6619 way, later @who can show things loaded at startup by the
6624 way, later @who can show things loaded at startup by the
6620 user. This trick was necessary to make session saving/reloading
6625 user. This trick was necessary to make session saving/reloading
6621 really work: ideally after saving/exiting/reloading a session,
6626 really work: ideally after saving/exiting/reloading a session,
6622 *everything* should look the same, including the output of @who. I
6627 *everything* should look the same, including the output of @who. I
6623 was only able to make this work with this double namespace
6628 was only able to make this work with this double namespace
6624 trick.
6629 trick.
6625
6630
6626 - added a header to the logfile which allows (almost) full
6631 - added a header to the logfile which allows (almost) full
6627 session restoring.
6632 session restoring.
6628
6633
6629 - prepend lines beginning with @ or !, with a and log
6634 - prepend lines beginning with @ or !, with a and log
6630 them. Why? !lines: may be useful to know what you did @lines:
6635 them. Why? !lines: may be useful to know what you did @lines:
6631 they may affect session state. So when restoring a session, at
6636 they may affect session state. So when restoring a session, at
6632 least inform the user of their presence. I couldn't quite get
6637 least inform the user of their presence. I couldn't quite get
6633 them to properly re-execute, but at least the user is warned.
6638 them to properly re-execute, but at least the user is warned.
6634
6639
6635 * Started ChangeLog.
6640 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now