##// END OF EJS Templates
Fix picking.
walter.doerwald -
Show More
@@ -1,805 +1,805 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 class IGridRenderer(wx.grid.PyGridCellRenderer):
16 class IGridRenderer(wx.grid.PyGridCellRenderer):
17 """
17 """
18 This is a custom renderer for our IGridGrid
18 This is a custom renderer for our IGridGrid
19 """
19 """
20 def __init__(self, table):
20 def __init__(self, table):
21 self.maxchars = 200
21 self.maxchars = 200
22 self.table = table
22 self.table = table
23 self.colormap = (
23 self.colormap = (
24 ( 0, 0, 0),
24 ( 0, 0, 0),
25 (174, 0, 0),
25 (174, 0, 0),
26 ( 0, 174, 0),
26 ( 0, 174, 0),
27 (174, 174, 0),
27 (174, 174, 0),
28 ( 0, 0, 174),
28 ( 0, 0, 174),
29 (174, 0, 174),
29 (174, 0, 174),
30 ( 0, 174, 174),
30 ( 0, 174, 174),
31 ( 64, 64, 64)
31 ( 64, 64, 64)
32 )
32 )
33
33
34 wx.grid.PyGridCellRenderer.__init__(self)
34 wx.grid.PyGridCellRenderer.__init__(self)
35
35
36 def _getvalue(self, row, col):
36 def _getvalue(self, row, col):
37 try:
37 try:
38 value = self.table._displayattrs[col].value(self.table.items[row])
38 value = self.table._displayattrs[col].value(self.table.items[row])
39 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
39 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
40 except Exception, exc:
40 except Exception, exc:
41 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
41 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
42 return (align, text)
42 return (align, text)
43
43
44 def GetBestSize(self, grid, attr, dc, row, col):
44 def GetBestSize(self, grid, attr, dc, row, col):
45 text = grid.GetCellValue(row, col)
45 text = grid.GetCellValue(row, col)
46 (align, text) = self._getvalue(row, col)
46 (align, text) = self._getvalue(row, col)
47 dc.SetFont(attr.GetFont())
47 dc.SetFont(attr.GetFont())
48 (w, h) = dc.GetTextExtent(str(text))
48 (w, h) = dc.GetTextExtent(str(text))
49 return wx.Size(min(w+2, 600), h+2) # add border
49 return wx.Size(min(w+2, 600), h+2) # add border
50
50
51 def Draw(self, grid, attr, dc, rect, row, col, isSelected):
51 def Draw(self, grid, attr, dc, rect, row, col, isSelected):
52 """
52 """
53 Takes care of drawing everything in the cell; aligns the text
53 Takes care of drawing everything in the cell; aligns the text
54 """
54 """
55 text = grid.GetCellValue(row, col)
55 text = grid.GetCellValue(row, col)
56 (align, text) = self._getvalue(row, col)
56 (align, text) = self._getvalue(row, col)
57 if isSelected:
57 if isSelected:
58 bg = grid.GetSelectionBackground()
58 bg = grid.GetSelectionBackground()
59 else:
59 else:
60 bg = ["white", (240, 240, 240)][row%2]
60 bg = ["white", (240, 240, 240)][row%2]
61 dc.SetTextBackground(bg)
61 dc.SetTextBackground(bg)
62 dc.SetBrush(wx.Brush(bg, wx.SOLID))
62 dc.SetBrush(wx.Brush(bg, wx.SOLID))
63 dc.SetPen(wx.TRANSPARENT_PEN)
63 dc.SetPen(wx.TRANSPARENT_PEN)
64 dc.SetFont(attr.GetFont())
64 dc.SetFont(attr.GetFont())
65 dc.DrawRectangleRect(rect)
65 dc.DrawRectangleRect(rect)
66 dc.SetClippingRect(rect)
66 dc.SetClippingRect(rect)
67 # Format the text
67 # Format the text
68 if align == -1: # left alignment
68 if align == -1: # left alignment
69 (width, height) = dc.GetTextExtent(str(text))
69 (width, height) = dc.GetTextExtent(str(text))
70 x = rect[0]+1
70 x = rect[0]+1
71 y = rect[1]+0.5*(rect[3]-height)
71 y = rect[1]+0.5*(rect[3]-height)
72
72
73 for (style, part) in text:
73 for (style, part) in text:
74 if isSelected:
74 if isSelected:
75 fg = grid.GetSelectionForeground()
75 fg = grid.GetSelectionForeground()
76 else:
76 else:
77 fg = self.colormap[style.fg]
77 fg = self.colormap[style.fg]
78 dc.SetTextForeground(fg)
78 dc.SetTextForeground(fg)
79 (w, h) = dc.GetTextExtent(part)
79 (w, h) = dc.GetTextExtent(part)
80 dc.DrawText(part, x, y)
80 dc.DrawText(part, x, y)
81 x += w
81 x += w
82 elif align == 0: # center alignment
82 elif align == 0: # center alignment
83 (width, height) = dc.GetTextExtent(str(text))
83 (width, height) = dc.GetTextExtent(str(text))
84 x = rect[0]+0.5*(rect[2]-width)
84 x = rect[0]+0.5*(rect[2]-width)
85 y = rect[1]+0.5*(rect[3]-height)
85 y = rect[1]+0.5*(rect[3]-height)
86 for (style, part) in text:
86 for (style, part) in text:
87 if isSelected:
87 if isSelected:
88 fg = grid.GetSelectionForeground()
88 fg = grid.GetSelectionForeground()
89 else:
89 else:
90 fg = self.colormap[style.fg]
90 fg = self.colormap[style.fg]
91 dc.SetTextForeground(fg)
91 dc.SetTextForeground(fg)
92 (w, h) = dc.GetTextExtent(part)
92 (w, h) = dc.GetTextExtent(part)
93 dc.DrawText(part, x, y)
93 dc.DrawText(part, x, y)
94 x += w
94 x += w
95 else: # right alignment
95 else: # right alignment
96 (width, height) = dc.GetTextExtent(str(text))
96 (width, height) = dc.GetTextExtent(str(text))
97 x = rect[0]+rect[2]-1
97 x = rect[0]+rect[2]-1
98 y = rect[1]+0.5*(rect[3]-height)
98 y = rect[1]+0.5*(rect[3]-height)
99 for (style, part) in reversed(text):
99 for (style, part) in reversed(text):
100 (w, h) = dc.GetTextExtent(part)
100 (w, h) = dc.GetTextExtent(part)
101 x -= w
101 x -= w
102 if isSelected:
102 if isSelected:
103 fg = grid.GetSelectionForeground()
103 fg = grid.GetSelectionForeground()
104 else:
104 else:
105 fg = self.colormap[style.fg]
105 fg = self.colormap[style.fg]
106 dc.SetTextForeground(fg)
106 dc.SetTextForeground(fg)
107 dc.DrawText(part, x, y)
107 dc.DrawText(part, x, y)
108 dc.DestroyClippingRegion()
108 dc.DestroyClippingRegion()
109
109
110 def Clone(self):
110 def Clone(self):
111 return IGridRenderer(self.table)
111 return IGridRenderer(self.table)
112
112
113
113
114 class IGridTable(wx.grid.PyGridTableBase):
114 class IGridTable(wx.grid.PyGridTableBase):
115 # The data table for the ``IGridGrid``. Some dirty tricks were used here:
115 # 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
116 # ``GetValue()`` does not get any values (or at least it does not return
117 # anything, accessing the values is done by the renderer)
117 # anything, accessing the values is done by the renderer)
118 # but rather tries to fetch the objects which were requested into the table.
118 # 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
119 # 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)
120 # to the last object another bunch of X objects is fetched (if possible)
121 def __init__(self, input, fontsize, *attrs):
121 def __init__(self, input, fontsize, *attrs):
122 wx.grid.PyGridTableBase.__init__(self)
122 wx.grid.PyGridTableBase.__init__(self)
123 self.input = input
123 self.input = input
124 self.iterator = ipipe.xiter(input)
124 self.iterator = ipipe.xiter(input)
125 self.items = []
125 self.items = []
126 self.attrs = [ipipe.upgradexattr(attr) for attr in attrs]
126 self.attrs = [ipipe.upgradexattr(attr) for attr in attrs]
127 self._displayattrs = self.attrs[:]
127 self._displayattrs = self.attrs[:]
128 self._displayattrset = set(self.attrs)
128 self._displayattrset = set(self.attrs)
129 self._sizing = False
129 self._sizing = False
130 self.fontsize = fontsize
130 self.fontsize = fontsize
131 self._fetch(1)
131 self._fetch(1)
132
132
133 def GetAttr(self, *args):
133 def GetAttr(self, *args):
134 attr = wx.grid.GridCellAttr()
134 attr = wx.grid.GridCellAttr()
135 attr.SetFont(wx.Font(self.fontsize, wx.TELETYPE, wx.NORMAL, wx.NORMAL))
135 attr.SetFont(wx.Font(self.fontsize, wx.TELETYPE, wx.NORMAL, wx.NORMAL))
136 return attr
136 return attr
137
137
138 def GetNumberRows(self):
138 def GetNumberRows(self):
139 return len(self.items)
139 return len(self.items)
140
140
141 def GetNumberCols(self):
141 def GetNumberCols(self):
142 return len(self._displayattrs)
142 return len(self._displayattrs)
143
143
144 def GetColLabelValue(self, col):
144 def GetColLabelValue(self, col):
145 if col < len(self._displayattrs):
145 if col < len(self._displayattrs):
146 return self._displayattrs[col].name()
146 return self._displayattrs[col].name()
147 else:
147 else:
148 return ""
148 return ""
149
149
150 def GetRowLabelValue(self, row):
150 def GetRowLabelValue(self, row):
151 return str(row)
151 return str(row)
152
152
153 def IsEmptyCell(self, row, col):
153 def IsEmptyCell(self, row, col):
154 return False
154 return False
155
155
156 def _append(self, item):
156 def _append(self, item):
157 self.items.append(item)
157 self.items.append(item)
158 # Nothing to do if the set of attributes has been fixed by the user
158 # Nothing to do if the set of attributes has been fixed by the user
159 if not self.attrs:
159 if not self.attrs:
160 for attr in ipipe.xattrs(item):
160 for attr in ipipe.xattrs(item):
161 attr = ipipe.upgradexattr(attr)
161 attr = ipipe.upgradexattr(attr)
162 if attr not in self._displayattrset:
162 if attr not in self._displayattrset:
163 self._displayattrs.append(attr)
163 self._displayattrs.append(attr)
164 self._displayattrset.add(attr)
164 self._displayattrset.add(attr)
165
165
166 def _fetch(self, count):
166 def _fetch(self, count):
167 # Try to fill ``self.items`` with at least ``count`` objects.
167 # Try to fill ``self.items`` with at least ``count`` objects.
168 have = len(self.items)
168 have = len(self.items)
169 while self.iterator is not None and have < count:
169 while self.iterator is not None and have < count:
170 try:
170 try:
171 item = self.iterator.next()
171 item = self.iterator.next()
172 except StopIteration:
172 except StopIteration:
173 self.iterator = None
173 self.iterator = None
174 break
174 break
175 except (KeyboardInterrupt, SystemExit):
175 except (KeyboardInterrupt, SystemExit):
176 raise
176 raise
177 except Exception, exc:
177 except Exception, exc:
178 have += 1
178 have += 1
179 self._append(item)
179 self._append(item)
180 self.iterator = None
180 self.iterator = None
181 break
181 break
182 else:
182 else:
183 have += 1
183 have += 1
184 self._append(item)
184 self._append(item)
185
185
186 def GetValue(self, row, col):
186 def GetValue(self, row, col):
187 # some kind of dummy-function: does not return anything but "";
187 # some kind of dummy-function: does not return anything but "";
188 # (The value isn't use anyway)
188 # (The value isn't use anyway)
189 # its main task is to trigger the fetch of new objects
189 # its main task is to trigger the fetch of new objects
190 had_cols = self._displayattrs[:]
190 had_cols = self._displayattrs[:]
191 had_rows = len(self.items)
191 had_rows = len(self.items)
192 if row == had_rows - 1 and self.iterator is not None and not self._sizing:
192 if row == had_rows - 1 and self.iterator is not None and not self._sizing:
193 self._fetch(row + 20)
193 self._fetch(row + 20)
194 have_rows = len(self.items)
194 have_rows = len(self.items)
195 have_cols = len(self._displayattrs)
195 have_cols = len(self._displayattrs)
196 if have_rows > had_rows:
196 if have_rows > had_rows:
197 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, have_rows - had_rows)
197 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, have_rows - had_rows)
198 self.GetView().ProcessTableMessage(msg)
198 self.GetView().ProcessTableMessage(msg)
199 self._sizing = True
199 self._sizing = True
200 self.GetView().AutoSizeColumns(False)
200 self.GetView().AutoSizeColumns(False)
201 self._sizing = False
201 self._sizing = False
202 if row >= have_rows:
202 if row >= have_rows:
203 return ""
203 return ""
204 if self._displayattrs != had_cols:
204 if self._displayattrs != had_cols:
205 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED, have_cols - len(had_cols))
205 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED, have_cols - len(had_cols))
206 self.GetView().ProcessTableMessage(msg)
206 self.GetView().ProcessTableMessage(msg)
207 return ""
207 return ""
208
208
209 def SetValue(self, row, col, value):
209 def SetValue(self, row, col, value):
210 pass
210 pass
211
211
212
212
213 class IGridGrid(wx.grid.Grid):
213 class IGridGrid(wx.grid.Grid):
214 # The actual grid
214 # The actual grid
215 # all methods for selecting/sorting/picking/... data are implemented here
215 # all methods for selecting/sorting/picking/... data are implemented here
216 def __init__(self, panel, input, *attrs):
216 def __init__(self, panel, input, *attrs):
217 wx.grid.Grid.__init__(self, panel)
217 wx.grid.Grid.__init__(self, panel)
218 fontsize = 9
218 fontsize = 9
219 self.input = input
219 self.input = input
220 self.table = IGridTable(self.input, fontsize, *attrs)
220 self.table = IGridTable(self.input, fontsize, *attrs)
221 self.SetTable(self.table, True)
221 self.SetTable(self.table, True)
222 self.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
222 self.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
223 self.SetDefaultRenderer(IGridRenderer(self.table))
223 self.SetDefaultRenderer(IGridRenderer(self.table))
224 self.EnableEditing(False)
224 self.EnableEditing(False)
225 self.Bind(wx.EVT_KEY_DOWN, self.key_pressed)
225 self.Bind(wx.EVT_KEY_DOWN, self.key_pressed)
226 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.cell_doubleclicked)
226 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)
227 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)
228 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)
229 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)
230 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)
231 self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self._on_selected_cell)
232 self.current_selection = set()
232 self.current_selection = set()
233 self.maxchars = 200
233 self.maxchars = 200
234
234
235 def on_label_leftclick(self, event):
235 def on_label_leftclick(self, event):
236 event.Skip()
236 event.Skip()
237
237
238 def error_output(self, text):
238 def error_output(self, text):
239 wx.Bell()
239 wx.Bell()
240 frame = self.GetParent().GetParent().GetParent()
240 frame = self.GetParent().GetParent().GetParent()
241 frame.SetStatusText(text)
241 frame.SetStatusText(text)
242
242
243 def _on_selected_range(self, event):
243 def _on_selected_range(self, event):
244 # Internal update to the selection tracking lists
244 # Internal update to the selection tracking lists
245 if event.Selecting():
245 if event.Selecting():
246 # adding to the list...
246 # adding to the list...
247 self.current_selection.update(xrange(event.GetTopRow(), event.GetBottomRow()+1))
247 self.current_selection.update(xrange(event.GetTopRow(), event.GetBottomRow()+1))
248 else:
248 else:
249 # removal from list
249 # removal from list
250 for index in xrange( event.GetTopRow(), event.GetBottomRow()+1):
250 for index in xrange( event.GetTopRow(), event.GetBottomRow()+1):
251 self.current_selection.discard(index)
251 self.current_selection.discard(index)
252 event.Skip()
252 event.Skip()
253
253
254 def _on_selected_cell(self, event):
254 def _on_selected_cell(self, event):
255 # Internal update to the selection tracking list
255 # Internal update to the selection tracking list
256 self.current_selection = set([event.GetRow()])
256 self.current_selection = set([event.GetRow()])
257 event.Skip()
257 event.Skip()
258
258
259 def sort(self, key, reverse=False):
259 def sort(self, key, reverse=False):
260 """
260 """
261 Sort the current list of items using the key function ``key``. If
261 Sort the current list of items using the key function ``key``. If
262 ``reverse`` is true the sort order is reversed.
262 ``reverse`` is true the sort order is reversed.
263 """
263 """
264 row = self.GetGridCursorRow()
264 row = self.GetGridCursorRow()
265 col = self.GetGridCursorCol()
265 col = self.GetGridCursorCol()
266 curitem = self.table.items[row] # Remember where the cursor is now
266 curitem = self.table.items[row] # Remember where the cursor is now
267 # Sort items
267 # Sort items
268 def realkey(item):
268 def realkey(item):
269 try:
269 try:
270 return key(item)
270 return key(item)
271 except (KeyboardInterrupt, SystemExit):
271 except (KeyboardInterrupt, SystemExit):
272 raise
272 raise
273 except Exception:
273 except Exception:
274 return None
274 return None
275 try:
275 try:
276 self.table.items = ipipe.deque(sorted(self.table.items, key=realkey, reverse=reverse))
276 self.table.items = ipipe.deque(sorted(self.table.items, key=realkey, reverse=reverse))
277 except TypeError, exc:
277 except TypeError, exc:
278 self.error_output("Exception encountered: %s" % exc)
278 self.error_output("Exception encountered: %s" % exc)
279 return
279 return
280 # Find out where the object under the cursor went
280 # Find out where the object under the cursor went
281 for (i, item) in enumerate(self.table.items):
281 for (i, item) in enumerate(self.table.items):
282 if item is curitem:
282 if item is curitem:
283 self.SetGridCursor(i,col)
283 self.SetGridCursor(i,col)
284 self.MakeCellVisible(i,col)
284 self.MakeCellVisible(i,col)
285 self.Refresh()
285 self.Refresh()
286
286
287 def sortattrasc(self):
287 def sortattrasc(self):
288 """
288 """
289 Sort in ascending order; sorting criteria is the current attribute
289 Sort in ascending order; sorting criteria is the current attribute
290 """
290 """
291 col = self.GetGridCursorCol()
291 col = self.GetGridCursorCol()
292 attr = self.table._displayattrs[col]
292 attr = self.table._displayattrs[col]
293 frame = self.GetParent().GetParent().GetParent()
293 frame = self.GetParent().GetParent().GetParent()
294 if attr is ipipe.noitem:
294 if attr is ipipe.noitem:
295 self.error_output("no column under cursor")
295 self.error_output("no column under cursor")
296 return
296 return
297 frame.SetStatusText("sort by %s (ascending)" % attr.name())
297 frame.SetStatusText("sort by %s (ascending)" % attr.name())
298 def key(item):
298 def key(item):
299 try:
299 try:
300 return attr.value(item)
300 return attr.value(item)
301 except (KeyboardInterrupt, SystemExit):
301 except (KeyboardInterrupt, SystemExit):
302 raise
302 raise
303 except Exception:
303 except Exception:
304 return None
304 return None
305 self.sort(key)
305 self.sort(key)
306
306
307 def sortattrdesc(self):
307 def sortattrdesc(self):
308 """
308 """
309 Sort in descending order; sorting criteria is the current attribute
309 Sort in descending order; sorting criteria is the current attribute
310 """
310 """
311 col = self.GetGridCursorCol()
311 col = self.GetGridCursorCol()
312 attr = self.table._displayattrs[col]
312 attr = self.table._displayattrs[col]
313 frame = self.GetParent().GetParent().GetParent()
313 frame = self.GetParent().GetParent().GetParent()
314 if attr is ipipe.noitem:
314 if attr is ipipe.noitem:
315 self.error_output("no column under cursor")
315 self.error_output("no column under cursor")
316 return
316 return
317 frame.SetStatusText("sort by %s (descending)" % attr.name())
317 frame.SetStatusText("sort by %s (descending)" % attr.name())
318 def key(item):
318 def key(item):
319 try:
319 try:
320 return attr.value(item)
320 return attr.value(item)
321 except (KeyboardInterrupt, SystemExit):
321 except (KeyboardInterrupt, SystemExit):
322 raise
322 raise
323 except Exception:
323 except Exception:
324 return None
324 return None
325 self.sort(key, reverse=True)
325 self.sort(key, reverse=True)
326
326
327 def label_doubleclicked(self, event):
327 def label_doubleclicked(self, event):
328 row = event.GetRow()
328 row = event.GetRow()
329 col = event.GetCol()
329 col = event.GetCol()
330 if col == -1:
330 if col == -1:
331 self.enter(row)
331 self.enter(row)
332
332
333 def _getvalue(self, row, col):
333 def _getvalue(self, row, col):
334 """
334 """
335 Gets the text which is displayed at ``(row, col)``
335 Gets the text which is displayed at ``(row, col)``
336 """
336 """
337 try:
337 try:
338 value = self.table._displayattrs[col].value(self.table.items[row])
338 value = self.table._displayattrs[col].value(self.table.items[row])
339 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
339 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
340 except IndexError:
340 except IndexError:
341 raise IndexError
341 raise IndexError
342 except Exception, exc:
342 except Exception, exc:
343 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
343 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
344 return text
344 return text
345
345
346 def search(self, searchtext, startrow=0, startcol=0, search_forward=True):
346 def search(self, searchtext, startrow=0, startcol=0, search_forward=True):
347 """
347 """
348 search for ``searchtext``, starting in ``(startrow, startcol)``;
348 search for ``searchtext``, starting in ``(startrow, startcol)``;
349 if ``search_forward`` is true the direction is "forward"
349 if ``search_forward`` is true the direction is "forward"
350 """
350 """
351 row = startrow
351 row = startrow
352 searchtext = searchtext.lower()
352 searchtext = searchtext.lower()
353 if search_forward:
353 if search_forward:
354 while True:
354 while True:
355 for col in xrange(startcol, self.table.GetNumberCols()):
355 for col in xrange(startcol, self.table.GetNumberCols()):
356 try:
356 try:
357 foo = self.table.GetValue(row, col)
357 foo = self.table.GetValue(row, col)
358 text = self._getvalue(row, col)
358 text = self._getvalue(row, col)
359 if searchtext in text.string().lower():
359 if searchtext in text.string().lower():
360 self.SetGridCursor(row, col)
360 self.SetGridCursor(row, col)
361 self.MakeCellVisible(row, col)
361 self.MakeCellVisible(row, col)
362 return
362 return
363 except IndexError:
363 except IndexError:
364 return
364 return
365 startcol = 0
365 startcol = 0
366 row += 1
366 row += 1
367 else:
367 else:
368 while True:
368 while True:
369 for col in xrange(startcol, -1, -1):
369 for col in xrange(startcol, -1, -1):
370 try:
370 try:
371 foo = self.table.GetValue(row, col)
371 foo = self.table.GetValue(row, col)
372 text = self._getvalue(row, col)
372 text = self._getvalue(row, col)
373 if searchtext in text.string().lower():
373 if searchtext in text.string().lower():
374 self.SetGridCursor(row, col)
374 self.SetGridCursor(row, col)
375 self.MakeCellVisible(row, col)
375 self.MakeCellVisible(row, col)
376 return
376 return
377 except IndexError:
377 except IndexError:
378 return
378 return
379 startcol = self.table.GetNumberCols()-1
379 startcol = self.table.GetNumberCols()-1
380 row -= 1
380 row -= 1
381
381
382 def key_pressed(self, event):
382 def key_pressed(self, event):
383 """
383 """
384 Maps pressed keys to functions
384 Maps pressed keys to functions
385 """
385 """
386 frame = self.GetParent().GetParent().GetParent()
386 frame = self.GetParent().GetParent().GetParent()
387 frame.SetStatusText("")
387 frame.SetStatusText("")
388 sh = event.ShiftDown()
388 sh = event.ShiftDown()
389 ctrl = event.ControlDown()
389 ctrl = event.ControlDown()
390
390
391 keycode = event.GetKeyCode()
391 keycode = event.GetKeyCode()
392 if keycode == ord("P"):
392 if keycode == ord("P"):
393 row = self.GetGridCursorRow()
393 row = self.GetGridCursorRow()
394 if event.ShiftDown():
394 if event.ShiftDown():
395 col = self.GetGridCursorCol()
395 col = self.GetGridCursorCol()
396 self.pickattr(row, col)
396 self.pickattr(row, col)
397 else:
397 else:
398 self.pick(row)
398 self.pick(row)
399 elif keycode == ord("M"):
399 elif keycode == ord("M"):
400 if ctrl:
400 if ctrl:
401 col = self.GetGridCursorCol()
401 col = self.GetGridCursorCol()
402 self.pickrowsattr(sorted(self.current_selection), col)
402 self.pickrowsattr(sorted(self.current_selection), col)
403 else:
403 else:
404 self.pickrows(sorted(self.current_selection))
404 self.pickrows(sorted(self.current_selection))
405 elif keycode in (wx.WXK_BACK, wx.WXK_DELETE, ord("X")) and not (ctrl or sh):
405 elif keycode in (wx.WXK_BACK, wx.WXK_DELETE, ord("X")) and not (ctrl or sh):
406 self.delete_current_notebook()
406 self.delete_current_notebook()
407 elif keycode == ord("E") and not (ctrl or sh):
407 elif keycode == ord("E") and not (ctrl or sh):
408 row = self.GetGridCursorRow()
408 row = self.GetGridCursorRow()
409 self.enter(row)
409 self.enter(row)
410 elif keycode == ord("E") and sh and not ctrl:
410 elif keycode == ord("E") and sh and not ctrl:
411 row = self.GetGridCursorRow()
411 row = self.GetGridCursorRow()
412 col = self.GetGridCursorCol()
412 col = self.GetGridCursorCol()
413 self.enterattr(row, col)
413 self.enterattr(row, col)
414 elif keycode == ord("E") and ctrl:
414 elif keycode == ord("E") and ctrl:
415 row = self.GetGridCursorRow()
415 row = self.GetGridCursorRow()
416 self.SetGridCursor(row, self.GetNumberCols()-1)
416 self.SetGridCursor(row, self.GetNumberCols()-1)
417 elif keycode == wx.WXK_HOME or (keycode == ord("A") and ctrl):
417 elif keycode == wx.WXK_HOME or (keycode == ord("A") and ctrl):
418 row = self.GetGridCursorRow()
418 row = self.GetGridCursorRow()
419 self.SetGridCursor(row, 0)
419 self.SetGridCursor(row, 0)
420 elif keycode == ord("C") and sh:
420 elif keycode == ord("C") and sh:
421 col = self.GetGridCursorCol()
421 col = self.GetGridCursorCol()
422 attr = self.table._displayattrs[col]
422 attr = self.table._displayattrs[col]
423 returnobj = []
423 result = []
424 for i in xrange(self.GetNumberRows()):
424 for i in xrange(self.GetNumberRows()):
425 returnobj.append(self.table._displayattrs[col].value(self.table.items[i]))
425 result.append(self.table._displayattrs[col].value(self.table.items[i]))
426 self.quit(returnobj)
426 self.quit(result)
427 elif keycode in (wx.WXK_ESCAPE, ord("Q")) and not (ctrl or sh):
427 elif keycode in (wx.WXK_ESCAPE, ord("Q")) and not (ctrl or sh):
428 self.quit()
428 self.quit()
429 elif keycode == ord("<"):
429 elif keycode == ord("<"):
430 row = self.GetGridCursorRow()
430 row = self.GetGridCursorRow()
431 col = self.GetGridCursorCol()
431 col = self.GetGridCursorCol()
432 if not event.ShiftDown():
432 if not event.ShiftDown():
433 newcol = col - 1
433 newcol = col - 1
434 if newcol >= 0:
434 if newcol >= 0:
435 self.SetGridCursor(row, col - 1)
435 self.SetGridCursor(row, col - 1)
436 else:
436 else:
437 newcol = col + 1
437 newcol = col + 1
438 if newcol < self.GetNumberCols():
438 if newcol < self.GetNumberCols():
439 self.SetGridCursor(row, col + 1)
439 self.SetGridCursor(row, col + 1)
440 elif keycode == ord("D"):
440 elif keycode == ord("D"):
441 col = self.GetGridCursorCol()
441 col = self.GetGridCursorCol()
442 row = self.GetGridCursorRow()
442 row = self.GetGridCursorRow()
443 if not sh:
443 if not sh:
444 self.detail(row, col)
444 self.detail(row, col)
445 else:
445 else:
446 self.detail_attr(row, col)
446 self.detail_attr(row, col)
447 elif keycode == ord("F") and ctrl:
447 elif keycode == ord("F") and ctrl:
448 frame.enter_searchtext(event)
448 frame.enter_searchtext(event)
449 elif keycode == wx.WXK_F3:
449 elif keycode == wx.WXK_F3:
450 if sh:
450 if sh:
451 frame.find_previous(event)
451 frame.find_previous(event)
452 else:
452 else:
453 frame.find_next(event)
453 frame.find_next(event)
454 elif keycode == ord("V"):
454 elif keycode == ord("V"):
455 if sh:
455 if sh:
456 self.sortattrdesc()
456 self.sortattrdesc()
457 else:
457 else:
458 self.sortattrasc()
458 self.sortattrasc()
459 elif keycode == wx.WXK_DOWN:
459 elif keycode == wx.WXK_DOWN:
460 row = self.GetGridCursorRow()
460 row = self.GetGridCursorRow()
461 try:
461 try:
462 item = self.table.items[row+1]
462 item = self.table.items[row+1]
463 except IndexError:
463 except IndexError:
464 item = self.table.items[row]
464 item = self.table.items[row]
465 self.set_footer(item)
465 self.set_footer(item)
466 event.Skip()
466 event.Skip()
467 elif keycode == wx.WXK_UP:
467 elif keycode == wx.WXK_UP:
468 row = self.GetGridCursorRow()
468 row = self.GetGridCursorRow()
469 if row >= 1:
469 if row >= 1:
470 item = self.table.items[row-1]
470 item = self.table.items[row-1]
471 else:
471 else:
472 item = self.table.items[row]
472 item = self.table.items[row]
473 self.set_footer(item)
473 self.set_footer(item)
474 event.Skip()
474 event.Skip()
475 elif keycode == wx.WXK_RIGHT:
475 elif keycode == wx.WXK_RIGHT:
476 row = self.GetGridCursorRow()
476 row = self.GetGridCursorRow()
477 item = self.table.items[row]
477 item = self.table.items[row]
478 self.set_footer(item)
478 self.set_footer(item)
479 event.Skip()
479 event.Skip()
480 elif keycode == wx.WXK_LEFT:
480 elif keycode == wx.WXK_LEFT:
481 row = self.GetGridCursorRow()
481 row = self.GetGridCursorRow()
482 item = self.table.items[row]
482 item = self.table.items[row]
483 self.set_footer(item)
483 self.set_footer(item)
484 event.Skip()
484 event.Skip()
485 else:
485 else:
486 event.Skip()
486 event.Skip()
487
487
488 def delete_current_notebook(self):
488 def delete_current_notebook(self):
489 """
489 """
490 deletes the current notebook tab
490 deletes the current notebook tab
491 """
491 """
492 panel = self.GetParent()
492 panel = self.GetParent()
493 nb = panel.GetParent()
493 nb = panel.GetParent()
494 current = nb.GetSelection()
494 current = nb.GetSelection()
495 count = nb.GetPageCount()
495 count = nb.GetPageCount()
496 if count > 1:
496 if count > 1:
497 for i in xrange(count-1, current-1, -1):
497 for i in xrange(count-1, current-1, -1):
498 nb.DeletePage(i)
498 nb.DeletePage(i)
499 nb.GetCurrentPage().grid.SetFocus()
499 nb.GetCurrentPage().grid.SetFocus()
500 else:
500 else:
501 frame = nb.GetParent()
501 frame = nb.GetParent()
502 frame.SetStatusText("This is the last level!")
502 frame.SetStatusText("This is the last level!")
503
503
504 def _doenter(self, value, *attrs):
504 def _doenter(self, value, *attrs):
505 """
505 """
506 "enter" a special item resulting in a new notebook tab
506 "enter" a special item resulting in a new notebook tab
507 """
507 """
508 panel = self.GetParent()
508 panel = self.GetParent()
509 nb = panel.GetParent()
509 nb = panel.GetParent()
510 frame = nb.GetParent()
510 frame = nb.GetParent()
511 current = nb.GetSelection()
511 current = nb.GetSelection()
512 count = nb.GetPageCount()
512 count = nb.GetPageCount()
513 try: # if we want to enter something non-iterable, e.g. a function
513 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
514 if current + 1 == count and value is not self.input: # we have an event in the last tab
515 frame._add_notebook(value, *attrs)
515 frame._add_notebook(value, *attrs)
516 elif value != self.input: # we have to delete all tabs newer than [panel] first
516 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
517 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)
518 nb.DeletePage(i)
519 frame._add_notebook(value)
519 frame._add_notebook(value)
520 except TypeError, exc:
520 except TypeError, exc:
521 if exc.__class__.__module__ == "exceptions":
521 if exc.__class__.__module__ == "exceptions":
522 msg = "%s: %s" % (exc.__class__.__name__, exc)
522 msg = "%s: %s" % (exc.__class__.__name__, exc)
523 else:
523 else:
524 msg = "%s.%s: %s" % (exc.__class__.__module__, exc.__class__.__name__, exc)
524 msg = "%s.%s: %s" % (exc.__class__.__module__, exc.__class__.__name__, exc)
525 frame.SetStatusText(msg)
525 frame.SetStatusText(msg)
526
526
527 def enterattr(self, row, col):
527 def enterattr(self, row, col):
528 try:
528 try:
529 attr = self.table._displayattrs[col]
529 attr = self.table._displayattrs[col]
530 value = attr.value(self.table.items[row])
530 value = attr.value(self.table.items[row])
531 except Exception, exc:
531 except Exception, exc:
532 self.error_output(str(exc))
532 self.error_output(str(exc))
533 else:
533 else:
534 self._doenter(value)
534 self._doenter(value)
535
535
536 def set_footer(self, item):
536 def set_footer(self, item):
537 frame = self.GetParent().GetParent().GetParent()
537 frame = self.GetParent().GetParent().GetParent()
538 frame.SetStatusText(" ".join([str(text) for (style, text) in ipipe.xformat(item, "footer", 20)[2]]))
538 frame.SetStatusText(" ".join([str(text) for (style, text) in ipipe.xformat(item, "footer", 20)[2]]))
539
539
540 def enter(self, row):
540 def enter(self, row):
541 try:
541 try:
542 value = self.table.items[row]
542 value = self.table.items[row]
543 except Exception, exc:
543 except Exception, exc:
544 self.error_output(str(exc))
544 self.error_output(str(exc))
545 else:
545 else:
546 self._doenter(value)
546 self._doenter(value)
547
547
548 def detail(self, row, col):
548 def detail(self, row, col):
549 """
549 """
550 shows a detail-view of the current cell
550 shows a detail-view of the current cell
551 """
551 """
552 try:
552 try:
553 attr = self.table._displayattrs[col]
553 attr = self.table._displayattrs[col]
554 item = self.table.items[row]
554 item = self.table.items[row]
555 except Exception, exc:
555 except Exception, exc:
556 self.error_output(str(exc))
556 self.error_output(str(exc))
557 else:
557 else:
558 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
558 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
559 self._doenter(attrs)
559 self._doenter(attrs)
560
560
561 def detail_attr(self, row, col):
561 def detail_attr(self, row, col):
562 try:
562 try:
563 attr = self.table._displayattrs[col]
563 attr = self.table._displayattrs[col]
564 item = attr.value(self.table.items[row])
564 item = attr.value(self.table.items[row])
565 except Exception, exc:
565 except Exception, exc:
566 self.error_output(str(exc))
566 self.error_output(str(exc))
567 else:
567 else:
568 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
568 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
569 self._doenter(attrs)
569 self._doenter(attrs)
570
570
571 def quit(self, returnobj=None):
571 def quit(self, result=None):
572 """
572 """
573 quit
573 quit
574 """
574 """
575 frame = self.GetParent().GetParent().GetParent()
575 frame = self.GetParent().GetParent().GetParent()
576 if frame.helpdialog:
576 if frame.helpdialog:
577 frame.helpdialog.Destroy()
577 frame.helpdialog.Destroy()
578 frame.parent.returnobj = returnobj
578 frame.parent.result = result
579 frame.Close()
579 frame.Close()
580 frame.Destroy()
580 frame.Destroy()
581
581
582 def cell_doubleclicked(self, event):
582 def cell_doubleclicked(self, event):
583 self.enterattr(event.GetRow(), event.GetCol())
583 self.enterattr(event.GetRow(), event.GetCol())
584 event.Skip()
584 event.Skip()
585
585
586 def cell_leftclicked(self, event):
586 def cell_leftclicked(self, event):
587 row = event.GetRow()
587 row = event.GetRow()
588 item = self.table.items[row]
588 item = self.table.items[row]
589 self.set_footer(item)
589 self.set_footer(item)
590 event.Skip()
590 event.Skip()
591
591
592 def pick(self, row):
592 def pick(self, row):
593 """
593 """
594 pick a single row and return to the IPython prompt
594 pick a single row and return to the IPython prompt
595 """
595 """
596 try:
596 try:
597 value = self.table.items[row]
597 value = self.table.items[row]
598 except Exception, exc:
598 except Exception, exc:
599 self.error_output(str(exc))
599 self.error_output(str(exc))
600 else:
600 else:
601 self.quit(value)
601 self.quit(value)
602
602
603 def pickrows(self, rows):
603 def pickrows(self, rows):
604 """
604 """
605 pick multiple rows and return to the IPython prompt
605 pick multiple rows and return to the IPython prompt
606 """
606 """
607 try:
607 try:
608 value = [self.table.items[row] for row in rows]
608 value = [self.table.items[row] for row in rows]
609 except Exception, exc:
609 except Exception, exc:
610 self.error_output(str(exc))
610 self.error_output(str(exc))
611 else:
611 else:
612 self.quit(value)
612 self.quit(value)
613
613
614 def pickrowsattr(self, rows, col):
614 def pickrowsattr(self, rows, col):
615 """"
615 """"
616 pick one column from multiple rows
616 pick one column from multiple rows
617 """
617 """
618 values = []
618 values = []
619 try:
619 try:
620 attr = self.table._displayattrs[col]
620 attr = self.table._displayattrs[col]
621 for row in rows:
621 for row in rows:
622 try:
622 try:
623 values.append(attr.value(self.table.items[row]))
623 values.append(attr.value(self.table.items[row]))
624 except (SystemExit, KeyboardInterrupt):
624 except (SystemExit, KeyboardInterrupt):
625 raise
625 raise
626 except Exception:
626 except Exception:
627 raise #pass
627 raise #pass
628 except Exception, exc:
628 except Exception, exc:
629 self.error_output(str(exc))
629 self.error_output(str(exc))
630 else:
630 else:
631 self.quit(values)
631 self.quit(values)
632
632
633 def pickattr(self, row, col):
633 def pickattr(self, row, col):
634 try:
634 try:
635 attr = self.table._displayattrs[col]
635 attr = self.table._displayattrs[col]
636 value = attr.value(self.table.items[row])
636 value = attr.value(self.table.items[row])
637 except Exception, exc:
637 except Exception, exc:
638 self.error_output(str(exc))
638 self.error_output(str(exc))
639 else:
639 else:
640 self.quit(value)
640 self.quit(value)
641
641
642
642
643 class IGridPanel(wx.Panel):
643 class IGridPanel(wx.Panel):
644 # Each IGridPanel contains an IGridGrid
644 # Each IGridPanel contains an IGridGrid
645 def __init__(self, parent, input, *attrs):
645 def __init__(self, parent, input, *attrs):
646 wx.Panel.__init__(self, parent, -1)
646 wx.Panel.__init__(self, parent, -1)
647 self.grid = IGridGrid(self, input, *attrs)
647 self.grid = IGridGrid(self, input, *attrs)
648 sizer = wx.BoxSizer(wx.VERTICAL)
648 sizer = wx.BoxSizer(wx.VERTICAL)
649 sizer.Add(self.grid, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
649 sizer.Add(self.grid, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
650 self.SetSizer(sizer)
650 self.SetSizer(sizer)
651 sizer.Fit(self)
651 sizer.Fit(self)
652 sizer.SetSizeHints(self)
652 sizer.SetSizeHints(self)
653
653
654
654
655 class IGridHTMLHelp(wx.Frame):
655 class IGridHTMLHelp(wx.Frame):
656 def __init__(self, parent, title, filename, size):
656 def __init__(self, parent, title, filename, size):
657 wx.Frame.__init__(self, parent, -1, title, size=size)
657 wx.Frame.__init__(self, parent, -1, title, size=size)
658 html = wx.html.HtmlWindow(self)
658 html = wx.html.HtmlWindow(self)
659 if "gtk2" in wx.PlatformInfo:
659 if "gtk2" in wx.PlatformInfo:
660 html.SetStandardFonts()
660 html.SetStandardFonts()
661 html.LoadFile(filename)
661 html.LoadFile(filename)
662
662
663
663
664 class IGridFrame(wx.Frame):
664 class IGridFrame(wx.Frame):
665 maxtitlelen = 30
665 maxtitlelen = 30
666
666
667 def __init__(self, parent, input):
667 def __init__(self, parent, input):
668 title = " ".join([str(text) for (style, text) in ipipe.xformat(input, "header", 20)[2]])
668 title = " ".join([str(text) for (style, text) in ipipe.xformat(input, "header", 20)[2]])
669 wx.Frame.__init__(self, None, title=title, size=(640, 480))
669 wx.Frame.__init__(self, None, title=title, size=(640, 480))
670 self.menubar = wx.MenuBar()
670 self.menubar = wx.MenuBar()
671 self.menucounter = 100
671 self.menucounter = 100
672 self.m_help = wx.Menu()
672 self.m_help = wx.Menu()
673 self.m_search = wx.Menu()
673 self.m_search = wx.Menu()
674 self.m_sort = wx.Menu()
674 self.m_sort = wx.Menu()
675 self.notebook = wx.Notebook(self, -1, style=0)
675 self.notebook = wx.Notebook(self, -1, style=0)
676 self.statusbar = self.CreateStatusBar(1, wx.ST_SIZEGRIP)
676 self.statusbar = self.CreateStatusBar(1, wx.ST_SIZEGRIP)
677 self.parent = parent
677 self.parent = parent
678 self._add_notebook(input)
678 self._add_notebook(input)
679 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
679 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
680 self.makemenu(self.m_sort, "&Sort (asc)", "Sort ascending", self.sortasc)
680 self.makemenu(self.m_sort, "&Sort (asc)", "Sort ascending", self.sortasc)
681 self.makemenu(self.m_sort, "Sort (&desc)", "Sort descending", self.sortdesc)
681 self.makemenu(self.m_sort, "Sort (&desc)", "Sort descending", self.sortdesc)
682 self.makemenu(self.m_help, "&Help", "Help", self.display_help)
682 self.makemenu(self.m_help, "&Help", "Help", self.display_help)
683 self.makemenu(self.m_help, "&Show help in browser", "Show help in browser", self.display_help_in_browser)
683 self.makemenu(self.m_help, "&Show help in browser", "Show help in browser", self.display_help_in_browser)
684 self.makemenu(self.m_search, "&Find text", "Find text", self.enter_searchtext)
684 self.makemenu(self.m_search, "&Find text", "Find text", self.enter_searchtext)
685 self.makemenu(self.m_search, "Find by &expression", "Find by expression", self.enter_searchexpression)
685 self.makemenu(self.m_search, "Find by &expression", "Find by expression", self.enter_searchexpression)
686 self.makemenu(self.m_search, "Find &next", "Find next", self.find_next)
686 self.makemenu(self.m_search, "Find &next", "Find next", self.find_next)
687 self.makemenu(self.m_search, "Find &previous", "Find previous", self.find_previous)
687 self.makemenu(self.m_search, "Find &previous", "Find previous", self.find_previous)
688 self.menubar.Append(self.m_search, "&Find")
688 self.menubar.Append(self.m_search, "&Find")
689 self.menubar.Append(self.m_sort, "&Sort")
689 self.menubar.Append(self.m_sort, "&Sort")
690 self.menubar.Append(self.m_help, "&Help")
690 self.menubar.Append(self.m_help, "&Help")
691 self.SetMenuBar(self.menubar)
691 self.SetMenuBar(self.menubar)
692 self.searchtext = ""
692 self.searchtext = ""
693 self.helpdialog = None
693 self.helpdialog = None
694
694
695 def sortasc(self, event):
695 def sortasc(self, event):
696 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
696 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
697 grid.sortattrasc()
697 grid.sortattrasc()
698
698
699 def sortdesc(self, event):
699 def sortdesc(self, event):
700 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
700 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
701 grid.sortattrdesc()
701 grid.sortattrdesc()
702
702
703 def find_previous(self, event):
703 def find_previous(self, event):
704 """
704 """
705 find previous occurrences
705 find previous occurrences
706 """
706 """
707 if self.searchtext:
707 if self.searchtext:
708 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
708 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
709 row = grid.GetGridCursorRow()
709 row = grid.GetGridCursorRow()
710 col = grid.GetGridCursorCol()
710 col = grid.GetGridCursorCol()
711 if col-1 >= 0:
711 if col-1 >= 0:
712 grid.search(self.searchtext, row, col-1, False)
712 grid.search(self.searchtext, row, col-1, False)
713 else:
713 else:
714 grid.search(self.searchtext, row-1, grid.table.GetNumberCols()-1, False)
714 grid.search(self.searchtext, row-1, grid.table.GetNumberCols()-1, False)
715 else:
715 else:
716 self.enter_searchtext(event)
716 self.enter_searchtext(event)
717
717
718 def find_next(self, event):
718 def find_next(self, event):
719 """
719 """
720 find the next occurrence
720 find the next occurrence
721 """
721 """
722 if self.searchtext:
722 if self.searchtext:
723 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
723 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
724 row = grid.GetGridCursorRow()
724 row = grid.GetGridCursorRow()
725 col = grid.GetGridCursorCol()
725 col = grid.GetGridCursorCol()
726 if col+1 < grid.table.GetNumberCols():
726 if col+1 < grid.table.GetNumberCols():
727 grid.search(self.searchtext, row, col+1)
727 grid.search(self.searchtext, row, col+1)
728 else:
728 else:
729 grid.search(self.searchtext, row+1, 0)
729 grid.search(self.searchtext, row+1, 0)
730 else:
730 else:
731 self.enter_searchtext(event)
731 self.enter_searchtext(event)
732
732
733 def display_help(self, event):
733 def display_help(self, event):
734 """
734 """
735 Display a help dialog
735 Display a help dialog
736 """
736 """
737 if self.helpdialog:
737 if self.helpdialog:
738 self.helpdialog.Destroy()
738 self.helpdialog.Destroy()
739 filename = os.path.join(os.path.dirname(__file__), "igrid_help.html")
739 filename = os.path.join(os.path.dirname(__file__), "igrid_help.html")
740 self.helpdialog = IGridHTMLHelp(None, title="Help", filename=filename, size=wx.Size(600,400))
740 self.helpdialog = IGridHTMLHelp(None, title="Help", filename=filename, size=wx.Size(600,400))
741 self.helpdialog.Show()
741 self.helpdialog.Show()
742
742
743 def display_help_in_browser(self, event):
743 def display_help_in_browser(self, event):
744 """
744 """
745 Show the help-HTML in a browser (as a ``HtmlWindow`` does not understand
745 Show the help-HTML in a browser (as a ``HtmlWindow`` does not understand
746 CSS this looks better)
746 CSS this looks better)
747 """
747 """
748 filename = urllib.pathname2url(os.path.abspath(os.path.join(os.path.dirname(__file__), "igrid_help.html")))
748 filename = urllib.pathname2url(os.path.abspath(os.path.join(os.path.dirname(__file__), "igrid_help.html")))
749 if not filename.startswith("file"):
749 if not filename.startswith("file"):
750 filename = "file:" + filename
750 filename = "file:" + filename
751 webbrowser.open(filename, new=1, autoraise=True)
751 webbrowser.open(filename, new=1, autoraise=True)
752
752
753 def enter_searchexpression(self, event):
753 def enter_searchexpression(self, event):
754 pass
754 pass
755
755
756 def makemenu(self, menu, label, help, cmd):
756 def makemenu(self, menu, label, help, cmd):
757 menu.Append(self.menucounter, label, help)
757 menu.Append(self.menucounter, label, help)
758 self.Bind(wx.EVT_MENU, cmd, id=self.menucounter)
758 self.Bind(wx.EVT_MENU, cmd, id=self.menucounter)
759 self.menucounter += 1
759 self.menucounter += 1
760
760
761 def _add_notebook(self, input, *attrs):
761 def _add_notebook(self, input, *attrs):
762 # Adds another notebook which has the starting object ``input``
762 # Adds another notebook which has the starting object ``input``
763 panel = IGridPanel(self.notebook, input, *attrs)
763 panel = IGridPanel(self.notebook, input, *attrs)
764 text = str(ipipe.xformat(input, "header", self.maxtitlelen)[2])
764 text = str(ipipe.xformat(input, "header", self.maxtitlelen)[2])
765 if len(text) >= self.maxtitlelen:
765 if len(text) >= self.maxtitlelen:
766 text = text[:self.maxtitlelen].rstrip(".") + "..."
766 text = text[:self.maxtitlelen].rstrip(".") + "..."
767 self.notebook.AddPage(panel, text, True)
767 self.notebook.AddPage(panel, text, True)
768 panel.grid.SetFocus()
768 panel.grid.SetFocus()
769 self.Layout()
769 self.Layout()
770
770
771 def OnCloseWindow(self, event):
771 def OnCloseWindow(self, event):
772 self.Destroy()
772 self.Destroy()
773
773
774 def enter_searchtext(self, event):
774 def enter_searchtext(self, event):
775 # Displays a dialog asking for the searchtext
775 # Displays a dialog asking for the searchtext
776 dlg = wx.TextEntryDialog(self, "Find:", "Find in list")
776 dlg = wx.TextEntryDialog(self, "Find:", "Find in list")
777 if dlg.ShowModal() == wx.ID_OK:
777 if dlg.ShowModal() == wx.ID_OK:
778 self.searchtext = dlg.GetValue()
778 self.searchtext = dlg.GetValue()
779 self.notebook.GetPage(self.notebook.GetSelection()).grid.search(self.searchtext, 0, 0)
779 self.notebook.GetPage(self.notebook.GetSelection()).grid.search(self.searchtext, 0, 0)
780 dlg.Destroy()
780 dlg.Destroy()
781
781
782
782
783 class App(wx.App):
783 class App(wx.App):
784 def __init__(self, input):
784 def __init__(self, input):
785 self.input = input
785 self.input = input
786 self.result = None # Result to be returned to IPython. Set by quit().
786 wx.App.__init__(self)
787 wx.App.__init__(self)
787
788
788 def OnInit(self):
789 def OnInit(self):
789 frame = IGridFrame(self, self.input)
790 frame = IGridFrame(self, self.input)
790 frame.Show()
791 frame.Show()
791 self.SetTopWindow(frame)
792 self.SetTopWindow(frame)
792 frame.Raise()
793 frame.Raise()
793 return True
794 return True
794
795
795
796
796 class igrid(ipipe.Display):
797 class igrid(ipipe.Display):
797 """
798 """
798 This is a wx-based display object that can be used instead of ``ibrowse``
799 This is a wx-based display object that can be used instead of ``ibrowse``
799 (which is curses-based) or ``idump`` (which simply does a print).
800 (which is curses-based) or ``idump`` (which simply does a print).
800 """
801 """
801 def display(self):
802 def display(self):
802 self.returnobj = None
803 app = App(self.input)
803 app = App(self.input)
804 app.MainLoop()
804 app.MainLoop()
805 return self.returnobj
805 return app.result
@@ -1,6394 +1,6398 b''
1 2007-03-24 Walter Doerwald <walter@livinglogic.de>
2
3 * IPython/Extensions/igrid.py: Fix picking.
4
1 2007-03-23 Walter Doerwald <walter@livinglogic.de>
5 2007-03-23 Walter Doerwald <walter@livinglogic.de>
2
6
3 * IPython/Extensions/path.py: Updated to version 2.2.
7 * IPython/Extensions/path.py: Updated to version 2.2.
4
8
5 2007-03-23 Ville Vainio <vivainio@gmail.com>
9 2007-03-23 Ville Vainio <vivainio@gmail.com>
6
10
7 * iplib.py: recursive alias expansion now works better, so that
11 * iplib.py: recursive alias expansion now works better, so that
8 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
12 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
9 doesn't trip up the process, if 'd' has been aliased to 'ls'.
13 doesn't trip up the process, if 'd' has been aliased to 'ls'.
10
14
11 * Extensions/ipy_gnuglobal.py added, provides %global magic
15 * Extensions/ipy_gnuglobal.py added, provides %global magic
12 for users of http://www.gnu.org/software/global
16 for users of http://www.gnu.org/software/global
13
17
14 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
18 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
15 Closes #52. Patch by Stefan van der Walt.
19 Closes #52. Patch by Stefan van der Walt.
16
20
17 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
21 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
18
22
19 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
23 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
20 respect the __file__ attribute when using %run. Thanks to a bug
24 respect the __file__ attribute when using %run. Thanks to a bug
21 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
25 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
22
26
23 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
27 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
24
28
25 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
29 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
26 input. Patch sent by Stefan.
30 input. Patch sent by Stefan.
27
31
28 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
32 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
29 * IPython/Extensions/ipy_stock_completer.py
33 * IPython/Extensions/ipy_stock_completer.py
30 shlex_split, fix bug in shlex_split. len function
34 shlex_split, fix bug in shlex_split. len function
31 call was missing in if statement. Caused shlex_split to
35 call was missing in if statement. Caused shlex_split to
32 sometimes return "" as last element.
36 sometimes return "" as last element.
33
37
34 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
38 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
35
39
36 * IPython/completer.py
40 * IPython/completer.py
37 (IPCompleter.file_matches.single_dir_expand): fix a problem
41 (IPCompleter.file_matches.single_dir_expand): fix a problem
38 reported by Stefan, where directories containign a single subdir
42 reported by Stefan, where directories containign a single subdir
39 would be completed too early.
43 would be completed too early.
40
44
41 * IPython/Shell.py (_load_pylab): Make the execution of 'from
45 * IPython/Shell.py (_load_pylab): Make the execution of 'from
42 pylab import *' when -pylab is given be optional. A new flag,
46 pylab import *' when -pylab is given be optional. A new flag,
43 pylab_import_all controls this behavior, the default is True for
47 pylab_import_all controls this behavior, the default is True for
44 backwards compatibility.
48 backwards compatibility.
45
49
46 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
50 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
47 modified) R. Bernstein's patch for fully syntax highlighted
51 modified) R. Bernstein's patch for fully syntax highlighted
48 tracebacks. The functionality is also available under ultraTB for
52 tracebacks. The functionality is also available under ultraTB for
49 non-ipython users (someone using ultraTB but outside an ipython
53 non-ipython users (someone using ultraTB but outside an ipython
50 session). They can select the color scheme by setting the
54 session). They can select the color scheme by setting the
51 module-level global DEFAULT_SCHEME. The highlight functionality
55 module-level global DEFAULT_SCHEME. The highlight functionality
52 also works when debugging.
56 also works when debugging.
53
57
54 * IPython/genutils.py (IOStream.close): small patch by
58 * IPython/genutils.py (IOStream.close): small patch by
55 R. Bernstein for improved pydb support.
59 R. Bernstein for improved pydb support.
56
60
57 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
61 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
58 DaveS <davls@telus.net> to improve support of debugging under
62 DaveS <davls@telus.net> to improve support of debugging under
59 NTEmacs, including improved pydb behavior.
63 NTEmacs, including improved pydb behavior.
60
64
61 * IPython/Magic.py (magic_prun): Fix saving of profile info for
65 * IPython/Magic.py (magic_prun): Fix saving of profile info for
62 Python 2.5, where the stats object API changed a little. Thanks
66 Python 2.5, where the stats object API changed a little. Thanks
63 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
67 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
64
68
65 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
69 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
66 Pernetty's patch to improve support for (X)Emacs under Win32.
70 Pernetty's patch to improve support for (X)Emacs under Win32.
67
71
68 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
72 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
69
73
70 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
74 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
71 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
75 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
72 a report by Nik Tautenhahn.
76 a report by Nik Tautenhahn.
73
77
74 2007-03-16 Walter Doerwald <walter@livinglogic.de>
78 2007-03-16 Walter Doerwald <walter@livinglogic.de>
75
79
76 * setup.py: Add the igrid help files to the list of data files
80 * setup.py: Add the igrid help files to the list of data files
77 to be installed alongside igrid.
81 to be installed alongside igrid.
78 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
82 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
79 Show the input object of the igrid browser as the window tile.
83 Show the input object of the igrid browser as the window tile.
80 Show the object the cursor is on in the statusbar.
84 Show the object the cursor is on in the statusbar.
81
85
82 2007-03-15 Ville Vainio <vivainio@gmail.com>
86 2007-03-15 Ville Vainio <vivainio@gmail.com>
83
87
84 * Extensions/ipy_stock_completers.py: Fixed exception
88 * Extensions/ipy_stock_completers.py: Fixed exception
85 on mismatching quotes in %run completer. Patch by
89 on mismatching quotes in %run completer. Patch by
86 JοΏ½rgen Stenarson. Closes #127.
90 JοΏ½rgen Stenarson. Closes #127.
87
91
88 2007-03-14 Ville Vainio <vivainio@gmail.com>
92 2007-03-14 Ville Vainio <vivainio@gmail.com>
89
93
90 * Extensions/ext_rehashdir.py: Do not do auto_alias
94 * Extensions/ext_rehashdir.py: Do not do auto_alias
91 in %rehashdir, it clobbers %store'd aliases.
95 in %rehashdir, it clobbers %store'd aliases.
92
96
93 * UserConfig/ipy_profile_sh.py: envpersist.py extension
97 * UserConfig/ipy_profile_sh.py: envpersist.py extension
94 (beefed up %env) imported for sh profile.
98 (beefed up %env) imported for sh profile.
95
99
96 2007-03-10 Walter Doerwald <walter@livinglogic.de>
100 2007-03-10 Walter Doerwald <walter@livinglogic.de>
97
101
98 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
102 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
99 as the default browser.
103 as the default browser.
100 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
104 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
101 As igrid displays all attributes it ever encounters, fetch() (which has
105 As igrid displays all attributes it ever encounters, fetch() (which has
102 been renamed to _fetch()) doesn't have to recalculate the display attributes
106 been renamed to _fetch()) doesn't have to recalculate the display attributes
103 every time a new item is fetched. This should speed up scrolling.
107 every time a new item is fetched. This should speed up scrolling.
104
108
105 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
109 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
106
110
107 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
111 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
108 Schmolck's recently reported tab-completion bug (my previous one
112 Schmolck's recently reported tab-completion bug (my previous one
109 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
113 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
110
114
111 2007-03-09 Walter Doerwald <walter@livinglogic.de>
115 2007-03-09 Walter Doerwald <walter@livinglogic.de>
112
116
113 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
117 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
114 Close help window if exiting igrid.
118 Close help window if exiting igrid.
115
119
116 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
120 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
117
121
118 * IPython/Extensions/ipy_defaults.py: Check if readline is available
122 * IPython/Extensions/ipy_defaults.py: Check if readline is available
119 before calling functions from readline.
123 before calling functions from readline.
120
124
121 2007-03-02 Walter Doerwald <walter@livinglogic.de>
125 2007-03-02 Walter Doerwald <walter@livinglogic.de>
122
126
123 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
127 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
124 igrid is a wxPython-based display object for ipipe. If your system has
128 igrid is a wxPython-based display object for ipipe. If your system has
125 wx installed igrid will be the default display. Without wx ipipe falls
129 wx installed igrid will be the default display. Without wx ipipe falls
126 back to ibrowse (which needs curses). If no curses is installed ipipe
130 back to ibrowse (which needs curses). If no curses is installed ipipe
127 falls back to idump.
131 falls back to idump.
128
132
129 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
133 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
130
134
131 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
135 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
132 my changes from yesterday, they introduced bugs. Will reactivate
136 my changes from yesterday, they introduced bugs. Will reactivate
133 once I get a correct solution, which will be much easier thanks to
137 once I get a correct solution, which will be much easier thanks to
134 Dan Milstein's new prefilter test suite.
138 Dan Milstein's new prefilter test suite.
135
139
136 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
140 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
137
141
138 * IPython/iplib.py (split_user_input): fix input splitting so we
142 * IPython/iplib.py (split_user_input): fix input splitting so we
139 don't attempt attribute accesses on things that can't possibly be
143 don't attempt attribute accesses on things that can't possibly be
140 valid Python attributes. After a bug report by Alex Schmolck.
144 valid Python attributes. After a bug report by Alex Schmolck.
141 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
145 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
142 %magic with explicit % prefix.
146 %magic with explicit % prefix.
143
147
144 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
148 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
145
149
146 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
150 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
147 avoid a DeprecationWarning from GTK.
151 avoid a DeprecationWarning from GTK.
148
152
149 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
153 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
150
154
151 * IPython/genutils.py (clock): I modified clock() to return total
155 * IPython/genutils.py (clock): I modified clock() to return total
152 time, user+system. This is a more commonly needed metric. I also
156 time, user+system. This is a more commonly needed metric. I also
153 introduced the new clocku/clocks to get only user/system time if
157 introduced the new clocku/clocks to get only user/system time if
154 one wants those instead.
158 one wants those instead.
155
159
156 ***WARNING: API CHANGE*** clock() used to return only user time,
160 ***WARNING: API CHANGE*** clock() used to return only user time,
157 so if you want exactly the same results as before, use clocku
161 so if you want exactly the same results as before, use clocku
158 instead.
162 instead.
159
163
160 2007-02-22 Ville Vainio <vivainio@gmail.com>
164 2007-02-22 Ville Vainio <vivainio@gmail.com>
161
165
162 * IPython/Extensions/ipy_p4.py: Extension for improved
166 * IPython/Extensions/ipy_p4.py: Extension for improved
163 p4 (perforce version control system) experience.
167 p4 (perforce version control system) experience.
164 Adds %p4 magic with p4 command completion and
168 Adds %p4 magic with p4 command completion and
165 automatic -G argument (marshall output as python dict)
169 automatic -G argument (marshall output as python dict)
166
170
167 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
171 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
168
172
169 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
173 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
170 stop marks.
174 stop marks.
171 (ClearingMixin): a simple mixin to easily make a Demo class clear
175 (ClearingMixin): a simple mixin to easily make a Demo class clear
172 the screen in between blocks and have empty marquees. The
176 the screen in between blocks and have empty marquees. The
173 ClearDemo and ClearIPDemo classes that use it are included.
177 ClearDemo and ClearIPDemo classes that use it are included.
174
178
175 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
179 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
176
180
177 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
181 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
178 protect against exceptions at Python shutdown time. Patch
182 protect against exceptions at Python shutdown time. Patch
179 sumbmitted to upstream.
183 sumbmitted to upstream.
180
184
181 2007-02-14 Walter Doerwald <walter@livinglogic.de>
185 2007-02-14 Walter Doerwald <walter@livinglogic.de>
182
186
183 * IPython/Extensions/ibrowse.py: If entering the first object level
187 * IPython/Extensions/ibrowse.py: If entering the first object level
184 (i.e. the object for which the browser has been started) fails,
188 (i.e. the object for which the browser has been started) fails,
185 now the error is raised directly (aborting the browser) instead of
189 now the error is raised directly (aborting the browser) instead of
186 running into an empty levels list later.
190 running into an empty levels list later.
187
191
188 2007-02-03 Walter Doerwald <walter@livinglogic.de>
192 2007-02-03 Walter Doerwald <walter@livinglogic.de>
189
193
190 * IPython/Extensions/ipipe.py: Add an xrepr implementation
194 * IPython/Extensions/ipipe.py: Add an xrepr implementation
191 for the noitem object.
195 for the noitem object.
192
196
193 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
197 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
194
198
195 * IPython/completer.py (Completer.attr_matches): Fix small
199 * IPython/completer.py (Completer.attr_matches): Fix small
196 tab-completion bug with Enthought Traits objects with units.
200 tab-completion bug with Enthought Traits objects with units.
197 Thanks to a bug report by Tom Denniston
201 Thanks to a bug report by Tom Denniston
198 <tom.denniston-AT-alum.dartmouth.org>.
202 <tom.denniston-AT-alum.dartmouth.org>.
199
203
200 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
204 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
201
205
202 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
206 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
203 bug where only .ipy or .py would be completed. Once the first
207 bug where only .ipy or .py would be completed. Once the first
204 argument to %run has been given, all completions are valid because
208 argument to %run has been given, all completions are valid because
205 they are the arguments to the script, which may well be non-python
209 they are the arguments to the script, which may well be non-python
206 filenames.
210 filenames.
207
211
208 * IPython/irunner.py (InteractiveRunner.run_source): major updates
212 * IPython/irunner.py (InteractiveRunner.run_source): major updates
209 to irunner to allow it to correctly support real doctesting of
213 to irunner to allow it to correctly support real doctesting of
210 out-of-process ipython code.
214 out-of-process ipython code.
211
215
212 * IPython/Magic.py (magic_cd): Make the setting of the terminal
216 * IPython/Magic.py (magic_cd): Make the setting of the terminal
213 title an option (-noterm_title) because it completely breaks
217 title an option (-noterm_title) because it completely breaks
214 doctesting.
218 doctesting.
215
219
216 * IPython/demo.py: fix IPythonDemo class that was not actually working.
220 * IPython/demo.py: fix IPythonDemo class that was not actually working.
217
221
218 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
222 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
219
223
220 * IPython/irunner.py (main): fix small bug where extensions were
224 * IPython/irunner.py (main): fix small bug where extensions were
221 not being correctly recognized.
225 not being correctly recognized.
222
226
223 2007-01-23 Walter Doerwald <walter@livinglogic.de>
227 2007-01-23 Walter Doerwald <walter@livinglogic.de>
224
228
225 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
229 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
226 a string containing a single line yields the string itself as the
230 a string containing a single line yields the string itself as the
227 only item.
231 only item.
228
232
229 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
233 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
230 object if it's the same as the one on the last level (This avoids
234 object if it's the same as the one on the last level (This avoids
231 infinite recursion for one line strings).
235 infinite recursion for one line strings).
232
236
233 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
237 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
234
238
235 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
239 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
236 all output streams before printing tracebacks. This ensures that
240 all output streams before printing tracebacks. This ensures that
237 user output doesn't end up interleaved with traceback output.
241 user output doesn't end up interleaved with traceback output.
238
242
239 2007-01-10 Ville Vainio <vivainio@gmail.com>
243 2007-01-10 Ville Vainio <vivainio@gmail.com>
240
244
241 * Extensions/envpersist.py: Turbocharged %env that remembers
245 * Extensions/envpersist.py: Turbocharged %env that remembers
242 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
246 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
243 "%env VISUAL=jed".
247 "%env VISUAL=jed".
244
248
245 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
249 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
246
250
247 * IPython/iplib.py (showtraceback): ensure that we correctly call
251 * IPython/iplib.py (showtraceback): ensure that we correctly call
248 custom handlers in all cases (some with pdb were slipping through,
252 custom handlers in all cases (some with pdb were slipping through,
249 but I'm not exactly sure why).
253 but I'm not exactly sure why).
250
254
251 * IPython/Debugger.py (Tracer.__init__): added new class to
255 * IPython/Debugger.py (Tracer.__init__): added new class to
252 support set_trace-like usage of IPython's enhanced debugger.
256 support set_trace-like usage of IPython's enhanced debugger.
253
257
254 2006-12-24 Ville Vainio <vivainio@gmail.com>
258 2006-12-24 Ville Vainio <vivainio@gmail.com>
255
259
256 * ipmaker.py: more informative message when ipy_user_conf
260 * ipmaker.py: more informative message when ipy_user_conf
257 import fails (suggest running %upgrade).
261 import fails (suggest running %upgrade).
258
262
259 * tools/run_ipy_in_profiler.py: Utility to see where
263 * tools/run_ipy_in_profiler.py: Utility to see where
260 the time during IPython startup is spent.
264 the time during IPython startup is spent.
261
265
262 2006-12-20 Ville Vainio <vivainio@gmail.com>
266 2006-12-20 Ville Vainio <vivainio@gmail.com>
263
267
264 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
268 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
265
269
266 * ipapi.py: Add new ipapi method, expand_alias.
270 * ipapi.py: Add new ipapi method, expand_alias.
267
271
268 * Release.py: Bump up version to 0.7.4.svn
272 * Release.py: Bump up version to 0.7.4.svn
269
273
270 2006-12-17 Ville Vainio <vivainio@gmail.com>
274 2006-12-17 Ville Vainio <vivainio@gmail.com>
271
275
272 * Extensions/jobctrl.py: Fixed &cmd arg arg...
276 * Extensions/jobctrl.py: Fixed &cmd arg arg...
273 to work properly on posix too
277 to work properly on posix too
274
278
275 * Release.py: Update revnum (version is still just 0.7.3).
279 * Release.py: Update revnum (version is still just 0.7.3).
276
280
277 2006-12-15 Ville Vainio <vivainio@gmail.com>
281 2006-12-15 Ville Vainio <vivainio@gmail.com>
278
282
279 * scripts/ipython_win_post_install: create ipython.py in
283 * scripts/ipython_win_post_install: create ipython.py in
280 prefix + "/scripts".
284 prefix + "/scripts".
281
285
282 * Release.py: Update version to 0.7.3.
286 * Release.py: Update version to 0.7.3.
283
287
284 2006-12-14 Ville Vainio <vivainio@gmail.com>
288 2006-12-14 Ville Vainio <vivainio@gmail.com>
285
289
286 * scripts/ipython_win_post_install: Overwrite old shortcuts
290 * scripts/ipython_win_post_install: Overwrite old shortcuts
287 if they already exist
291 if they already exist
288
292
289 * Release.py: release 0.7.3rc2
293 * Release.py: release 0.7.3rc2
290
294
291 2006-12-13 Ville Vainio <vivainio@gmail.com>
295 2006-12-13 Ville Vainio <vivainio@gmail.com>
292
296
293 * Branch and update Release.py for 0.7.3rc1
297 * Branch and update Release.py for 0.7.3rc1
294
298
295 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
299 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
296
300
297 * IPython/Shell.py (IPShellWX): update for current WX naming
301 * IPython/Shell.py (IPShellWX): update for current WX naming
298 conventions, to avoid a deprecation warning with current WX
302 conventions, to avoid a deprecation warning with current WX
299 versions. Thanks to a report by Danny Shevitz.
303 versions. Thanks to a report by Danny Shevitz.
300
304
301 2006-12-12 Ville Vainio <vivainio@gmail.com>
305 2006-12-12 Ville Vainio <vivainio@gmail.com>
302
306
303 * ipmaker.py: apply david cournapeau's patch to make
307 * ipmaker.py: apply david cournapeau's patch to make
304 import_some work properly even when ipythonrc does
308 import_some work properly even when ipythonrc does
305 import_some on empty list (it was an old bug!).
309 import_some on empty list (it was an old bug!).
306
310
307 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
311 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
308 Add deprecation note to ipythonrc and a url to wiki
312 Add deprecation note to ipythonrc and a url to wiki
309 in ipy_user_conf.py
313 in ipy_user_conf.py
310
314
311
315
312 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
316 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
313 as if it was typed on IPython command prompt, i.e.
317 as if it was typed on IPython command prompt, i.e.
314 as IPython script.
318 as IPython script.
315
319
316 * example-magic.py, magic_grepl.py: remove outdated examples
320 * example-magic.py, magic_grepl.py: remove outdated examples
317
321
318 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
322 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
319
323
320 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
324 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
321 is called before any exception has occurred.
325 is called before any exception has occurred.
322
326
323 2006-12-08 Ville Vainio <vivainio@gmail.com>
327 2006-12-08 Ville Vainio <vivainio@gmail.com>
324
328
325 * Extensions/ipy_stock_completers.py: fix cd completer
329 * Extensions/ipy_stock_completers.py: fix cd completer
326 to translate /'s to \'s again.
330 to translate /'s to \'s again.
327
331
328 * completer.py: prevent traceback on file completions w/
332 * completer.py: prevent traceback on file completions w/
329 backslash.
333 backslash.
330
334
331 * Release.py: Update release number to 0.7.3b3 for release
335 * Release.py: Update release number to 0.7.3b3 for release
332
336
333 2006-12-07 Ville Vainio <vivainio@gmail.com>
337 2006-12-07 Ville Vainio <vivainio@gmail.com>
334
338
335 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
339 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
336 while executing external code. Provides more shell-like behaviour
340 while executing external code. Provides more shell-like behaviour
337 and overall better response to ctrl + C / ctrl + break.
341 and overall better response to ctrl + C / ctrl + break.
338
342
339 * tools/make_tarball.py: new script to create tarball straight from svn
343 * tools/make_tarball.py: new script to create tarball straight from svn
340 (setup.py sdist doesn't work on win32).
344 (setup.py sdist doesn't work on win32).
341
345
342 * Extensions/ipy_stock_completers.py: fix cd completer to give up
346 * Extensions/ipy_stock_completers.py: fix cd completer to give up
343 on dirnames with spaces and use the default completer instead.
347 on dirnames with spaces and use the default completer instead.
344
348
345 * Revision.py: Change version to 0.7.3b2 for release.
349 * Revision.py: Change version to 0.7.3b2 for release.
346
350
347 2006-12-05 Ville Vainio <vivainio@gmail.com>
351 2006-12-05 Ville Vainio <vivainio@gmail.com>
348
352
349 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
353 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
350 pydb patch 4 (rm debug printing, py 2.5 checking)
354 pydb patch 4 (rm debug printing, py 2.5 checking)
351
355
352 2006-11-30 Walter Doerwald <walter@livinglogic.de>
356 2006-11-30 Walter Doerwald <walter@livinglogic.de>
353 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
357 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
354 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
358 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
355 "refreshfind" (mapped to "R") does the same but tries to go back to the same
359 "refreshfind" (mapped to "R") does the same but tries to go back to the same
356 object the cursor was on before the refresh. The command "markrange" is
360 object the cursor was on before the refresh. The command "markrange" is
357 mapped to "%" now.
361 mapped to "%" now.
358 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
362 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
359
363
360 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
364 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
361
365
362 * IPython/Magic.py (magic_debug): new %debug magic to activate the
366 * IPython/Magic.py (magic_debug): new %debug magic to activate the
363 interactive debugger on the last traceback, without having to call
367 interactive debugger on the last traceback, without having to call
364 %pdb and rerun your code. Made minor changes in various modules,
368 %pdb and rerun your code. Made minor changes in various modules,
365 should automatically recognize pydb if available.
369 should automatically recognize pydb if available.
366
370
367 2006-11-28 Ville Vainio <vivainio@gmail.com>
371 2006-11-28 Ville Vainio <vivainio@gmail.com>
368
372
369 * completer.py: If the text start with !, show file completions
373 * completer.py: If the text start with !, show file completions
370 properly. This helps when trying to complete command name
374 properly. This helps when trying to complete command name
371 for shell escapes.
375 for shell escapes.
372
376
373 2006-11-27 Ville Vainio <vivainio@gmail.com>
377 2006-11-27 Ville Vainio <vivainio@gmail.com>
374
378
375 * ipy_stock_completers.py: bzr completer submitted by Stefan van
379 * ipy_stock_completers.py: bzr completer submitted by Stefan van
376 der Walt. Clean up svn and hg completers by using a common
380 der Walt. Clean up svn and hg completers by using a common
377 vcs_completer.
381 vcs_completer.
378
382
379 2006-11-26 Ville Vainio <vivainio@gmail.com>
383 2006-11-26 Ville Vainio <vivainio@gmail.com>
380
384
381 * Remove ipconfig and %config; you should use _ip.options structure
385 * Remove ipconfig and %config; you should use _ip.options structure
382 directly instead!
386 directly instead!
383
387
384 * genutils.py: add wrap_deprecated function for deprecating callables
388 * genutils.py: add wrap_deprecated function for deprecating callables
385
389
386 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
390 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
387 _ip.system instead. ipalias is redundant.
391 _ip.system instead. ipalias is redundant.
388
392
389 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
393 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
390 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
394 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
391 explicit.
395 explicit.
392
396
393 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
397 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
394 completer. Try it by entering 'hg ' and pressing tab.
398 completer. Try it by entering 'hg ' and pressing tab.
395
399
396 * macro.py: Give Macro a useful __repr__ method
400 * macro.py: Give Macro a useful __repr__ method
397
401
398 * Magic.py: %whos abbreviates the typename of Macro for brevity.
402 * Magic.py: %whos abbreviates the typename of Macro for brevity.
399
403
400 2006-11-24 Walter Doerwald <walter@livinglogic.de>
404 2006-11-24 Walter Doerwald <walter@livinglogic.de>
401 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
405 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
402 we don't get a duplicate ipipe module, where registration of the xrepr
406 we don't get a duplicate ipipe module, where registration of the xrepr
403 implementation for Text is useless.
407 implementation for Text is useless.
404
408
405 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
409 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
406
410
407 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
411 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
408
412
409 2006-11-24 Ville Vainio <vivainio@gmail.com>
413 2006-11-24 Ville Vainio <vivainio@gmail.com>
410
414
411 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
415 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
412 try to use "cProfile" instead of the slower pure python
416 try to use "cProfile" instead of the slower pure python
413 "profile"
417 "profile"
414
418
415 2006-11-23 Ville Vainio <vivainio@gmail.com>
419 2006-11-23 Ville Vainio <vivainio@gmail.com>
416
420
417 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
421 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
418 Qt+IPython+Designer link in documentation.
422 Qt+IPython+Designer link in documentation.
419
423
420 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
424 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
421 correct Pdb object to %pydb.
425 correct Pdb object to %pydb.
422
426
423
427
424 2006-11-22 Walter Doerwald <walter@livinglogic.de>
428 2006-11-22 Walter Doerwald <walter@livinglogic.de>
425 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
429 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
426 generic xrepr(), otherwise the list implementation would kick in.
430 generic xrepr(), otherwise the list implementation would kick in.
427
431
428 2006-11-21 Ville Vainio <vivainio@gmail.com>
432 2006-11-21 Ville Vainio <vivainio@gmail.com>
429
433
430 * upgrade_dir.py: Now actually overwrites a nonmodified user file
434 * upgrade_dir.py: Now actually overwrites a nonmodified user file
431 with one from UserConfig.
435 with one from UserConfig.
432
436
433 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
437 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
434 it was missing which broke the sh profile.
438 it was missing which broke the sh profile.
435
439
436 * completer.py: file completer now uses explicit '/' instead
440 * completer.py: file completer now uses explicit '/' instead
437 of os.path.join, expansion of 'foo' was broken on win32
441 of os.path.join, expansion of 'foo' was broken on win32
438 if there was one directory with name 'foobar'.
442 if there was one directory with name 'foobar'.
439
443
440 * A bunch of patches from Kirill Smelkov:
444 * A bunch of patches from Kirill Smelkov:
441
445
442 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
446 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
443
447
444 * [patch 7/9] Implement %page -r (page in raw mode) -
448 * [patch 7/9] Implement %page -r (page in raw mode) -
445
449
446 * [patch 5/9] ScientificPython webpage has moved
450 * [patch 5/9] ScientificPython webpage has moved
447
451
448 * [patch 4/9] The manual mentions %ds, should be %dhist
452 * [patch 4/9] The manual mentions %ds, should be %dhist
449
453
450 * [patch 3/9] Kill old bits from %prun doc.
454 * [patch 3/9] Kill old bits from %prun doc.
451
455
452 * [patch 1/9] Fix typos here and there.
456 * [patch 1/9] Fix typos here and there.
453
457
454 2006-11-08 Ville Vainio <vivainio@gmail.com>
458 2006-11-08 Ville Vainio <vivainio@gmail.com>
455
459
456 * completer.py (attr_matches): catch all exceptions raised
460 * completer.py (attr_matches): catch all exceptions raised
457 by eval of expr with dots.
461 by eval of expr with dots.
458
462
459 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
463 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
460
464
461 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
465 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
462 input if it starts with whitespace. This allows you to paste
466 input if it starts with whitespace. This allows you to paste
463 indented input from any editor without manually having to type in
467 indented input from any editor without manually having to type in
464 the 'if 1:', which is convenient when working interactively.
468 the 'if 1:', which is convenient when working interactively.
465 Slightly modifed version of a patch by Bo Peng
469 Slightly modifed version of a patch by Bo Peng
466 <bpeng-AT-rice.edu>.
470 <bpeng-AT-rice.edu>.
467
471
468 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
472 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
469
473
470 * IPython/irunner.py (main): modified irunner so it automatically
474 * IPython/irunner.py (main): modified irunner so it automatically
471 recognizes the right runner to use based on the extension (.py for
475 recognizes the right runner to use based on the extension (.py for
472 python, .ipy for ipython and .sage for sage).
476 python, .ipy for ipython and .sage for sage).
473
477
474 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
478 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
475 visible in ipapi as ip.config(), to programatically control the
479 visible in ipapi as ip.config(), to programatically control the
476 internal rc object. There's an accompanying %config magic for
480 internal rc object. There's an accompanying %config magic for
477 interactive use, which has been enhanced to match the
481 interactive use, which has been enhanced to match the
478 funtionality in ipconfig.
482 funtionality in ipconfig.
479
483
480 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
484 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
481 so it's not just a toggle, it now takes an argument. Add support
485 so it's not just a toggle, it now takes an argument. Add support
482 for a customizable header when making system calls, as the new
486 for a customizable header when making system calls, as the new
483 system_header variable in the ipythonrc file.
487 system_header variable in the ipythonrc file.
484
488
485 2006-11-03 Walter Doerwald <walter@livinglogic.de>
489 2006-11-03 Walter Doerwald <walter@livinglogic.de>
486
490
487 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
491 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
488 generic functions (using Philip J. Eby's simplegeneric package).
492 generic functions (using Philip J. Eby's simplegeneric package).
489 This makes it possible to customize the display of third-party classes
493 This makes it possible to customize the display of third-party classes
490 without having to monkeypatch them. xiter() no longer supports a mode
494 without having to monkeypatch them. xiter() no longer supports a mode
491 argument and the XMode class has been removed. The same functionality can
495 argument and the XMode class has been removed. The same functionality can
492 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
496 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
493 One consequence of the switch to generic functions is that xrepr() and
497 One consequence of the switch to generic functions is that xrepr() and
494 xattrs() implementation must define the default value for the mode
498 xattrs() implementation must define the default value for the mode
495 argument themselves and xattrs() implementations must return real
499 argument themselves and xattrs() implementations must return real
496 descriptors.
500 descriptors.
497
501
498 * IPython/external: This new subpackage will contain all third-party
502 * IPython/external: This new subpackage will contain all third-party
499 packages that are bundled with IPython. (The first one is simplegeneric).
503 packages that are bundled with IPython. (The first one is simplegeneric).
500
504
501 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
505 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
502 directory which as been dropped in r1703.
506 directory which as been dropped in r1703.
503
507
504 * IPython/Extensions/ipipe.py (iless): Fixed.
508 * IPython/Extensions/ipipe.py (iless): Fixed.
505
509
506 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
510 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
507
511
508 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
512 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
509
513
510 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
514 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
511 handling in variable expansion so that shells and magics recognize
515 handling in variable expansion so that shells and magics recognize
512 function local scopes correctly. Bug reported by Brian.
516 function local scopes correctly. Bug reported by Brian.
513
517
514 * scripts/ipython: remove the very first entry in sys.path which
518 * scripts/ipython: remove the very first entry in sys.path which
515 Python auto-inserts for scripts, so that sys.path under IPython is
519 Python auto-inserts for scripts, so that sys.path under IPython is
516 as similar as possible to that under plain Python.
520 as similar as possible to that under plain Python.
517
521
518 * IPython/completer.py (IPCompleter.file_matches): Fix
522 * IPython/completer.py (IPCompleter.file_matches): Fix
519 tab-completion so that quotes are not closed unless the completion
523 tab-completion so that quotes are not closed unless the completion
520 is unambiguous. After a request by Stefan. Minor cleanups in
524 is unambiguous. After a request by Stefan. Minor cleanups in
521 ipy_stock_completers.
525 ipy_stock_completers.
522
526
523 2006-11-02 Ville Vainio <vivainio@gmail.com>
527 2006-11-02 Ville Vainio <vivainio@gmail.com>
524
528
525 * ipy_stock_completers.py: Add %run and %cd completers.
529 * ipy_stock_completers.py: Add %run and %cd completers.
526
530
527 * completer.py: Try running custom completer for both
531 * completer.py: Try running custom completer for both
528 "foo" and "%foo" if the command is just "foo". Ignore case
532 "foo" and "%foo" if the command is just "foo". Ignore case
529 when filtering possible completions.
533 when filtering possible completions.
530
534
531 * UserConfig/ipy_user_conf.py: install stock completers as default
535 * UserConfig/ipy_user_conf.py: install stock completers as default
532
536
533 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
537 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
534 simplified readline history save / restore through a wrapper
538 simplified readline history save / restore through a wrapper
535 function
539 function
536
540
537
541
538 2006-10-31 Ville Vainio <vivainio@gmail.com>
542 2006-10-31 Ville Vainio <vivainio@gmail.com>
539
543
540 * strdispatch.py, completer.py, ipy_stock_completers.py:
544 * strdispatch.py, completer.py, ipy_stock_completers.py:
541 Allow str_key ("command") in completer hooks. Implement
545 Allow str_key ("command") in completer hooks. Implement
542 trivial completer for 'import' (stdlib modules only). Rename
546 trivial completer for 'import' (stdlib modules only). Rename
543 ipy_linux_package_managers.py to ipy_stock_completers.py.
547 ipy_linux_package_managers.py to ipy_stock_completers.py.
544 SVN completer.
548 SVN completer.
545
549
546 * Extensions/ledit.py: %magic line editor for easily and
550 * Extensions/ledit.py: %magic line editor for easily and
547 incrementally manipulating lists of strings. The magic command
551 incrementally manipulating lists of strings. The magic command
548 name is %led.
552 name is %led.
549
553
550 2006-10-30 Ville Vainio <vivainio@gmail.com>
554 2006-10-30 Ville Vainio <vivainio@gmail.com>
551
555
552 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
556 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
553 Bernsteins's patches for pydb integration.
557 Bernsteins's patches for pydb integration.
554 http://bashdb.sourceforge.net/pydb/
558 http://bashdb.sourceforge.net/pydb/
555
559
556 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
560 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
557 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
561 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
558 custom completer hook to allow the users to implement their own
562 custom completer hook to allow the users to implement their own
559 completers. See ipy_linux_package_managers.py for example. The
563 completers. See ipy_linux_package_managers.py for example. The
560 hook name is 'complete_command'.
564 hook name is 'complete_command'.
561
565
562 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
566 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
563
567
564 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
568 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
565 Numeric leftovers.
569 Numeric leftovers.
566
570
567 * ipython.el (py-execute-region): apply Stefan's patch to fix
571 * ipython.el (py-execute-region): apply Stefan's patch to fix
568 garbled results if the python shell hasn't been previously started.
572 garbled results if the python shell hasn't been previously started.
569
573
570 * IPython/genutils.py (arg_split): moved to genutils, since it's a
574 * IPython/genutils.py (arg_split): moved to genutils, since it's a
571 pretty generic function and useful for other things.
575 pretty generic function and useful for other things.
572
576
573 * IPython/OInspect.py (getsource): Add customizable source
577 * IPython/OInspect.py (getsource): Add customizable source
574 extractor. After a request/patch form W. Stein (SAGE).
578 extractor. After a request/patch form W. Stein (SAGE).
575
579
576 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
580 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
577 window size to a more reasonable value from what pexpect does,
581 window size to a more reasonable value from what pexpect does,
578 since their choice causes wrapping bugs with long input lines.
582 since their choice causes wrapping bugs with long input lines.
579
583
580 2006-10-28 Ville Vainio <vivainio@gmail.com>
584 2006-10-28 Ville Vainio <vivainio@gmail.com>
581
585
582 * Magic.py (%run): Save and restore the readline history from
586 * Magic.py (%run): Save and restore the readline history from
583 file around %run commands to prevent side effects from
587 file around %run commands to prevent side effects from
584 %runned programs that might use readline (e.g. pydb).
588 %runned programs that might use readline (e.g. pydb).
585
589
586 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
590 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
587 invoking the pydb enhanced debugger.
591 invoking the pydb enhanced debugger.
588
592
589 2006-10-23 Walter Doerwald <walter@livinglogic.de>
593 2006-10-23 Walter Doerwald <walter@livinglogic.de>
590
594
591 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
595 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
592 call the base class method and propagate the return value to
596 call the base class method and propagate the return value to
593 ifile. This is now done by path itself.
597 ifile. This is now done by path itself.
594
598
595 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
599 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
596
600
597 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
601 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
598 api: set_crash_handler(), to expose the ability to change the
602 api: set_crash_handler(), to expose the ability to change the
599 internal crash handler.
603 internal crash handler.
600
604
601 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
605 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
602 the various parameters of the crash handler so that apps using
606 the various parameters of the crash handler so that apps using
603 IPython as their engine can customize crash handling. Ipmlemented
607 IPython as their engine can customize crash handling. Ipmlemented
604 at the request of SAGE.
608 at the request of SAGE.
605
609
606 2006-10-14 Ville Vainio <vivainio@gmail.com>
610 2006-10-14 Ville Vainio <vivainio@gmail.com>
607
611
608 * Magic.py, ipython.el: applied first "safe" part of Rocky
612 * Magic.py, ipython.el: applied first "safe" part of Rocky
609 Bernstein's patch set for pydb integration.
613 Bernstein's patch set for pydb integration.
610
614
611 * Magic.py (%unalias, %alias): %store'd aliases can now be
615 * Magic.py (%unalias, %alias): %store'd aliases can now be
612 removed with '%unalias'. %alias w/o args now shows most
616 removed with '%unalias'. %alias w/o args now shows most
613 interesting (stored / manually defined) aliases last
617 interesting (stored / manually defined) aliases last
614 where they catch the eye w/o scrolling.
618 where they catch the eye w/o scrolling.
615
619
616 * Magic.py (%rehashx), ext_rehashdir.py: files with
620 * Magic.py (%rehashx), ext_rehashdir.py: files with
617 'py' extension are always considered executable, even
621 'py' extension are always considered executable, even
618 when not in PATHEXT environment variable.
622 when not in PATHEXT environment variable.
619
623
620 2006-10-12 Ville Vainio <vivainio@gmail.com>
624 2006-10-12 Ville Vainio <vivainio@gmail.com>
621
625
622 * jobctrl.py: Add new "jobctrl" extension for spawning background
626 * jobctrl.py: Add new "jobctrl" extension for spawning background
623 processes with "&find /". 'import jobctrl' to try it out. Requires
627 processes with "&find /". 'import jobctrl' to try it out. Requires
624 'subprocess' module, standard in python 2.4+.
628 'subprocess' module, standard in python 2.4+.
625
629
626 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
630 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
627 so if foo -> bar and bar -> baz, then foo -> baz.
631 so if foo -> bar and bar -> baz, then foo -> baz.
628
632
629 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
633 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
630
634
631 * IPython/Magic.py (Magic.parse_options): add a new posix option
635 * IPython/Magic.py (Magic.parse_options): add a new posix option
632 to allow parsing of input args in magics that doesn't strip quotes
636 to allow parsing of input args in magics that doesn't strip quotes
633 (if posix=False). This also closes %timeit bug reported by
637 (if posix=False). This also closes %timeit bug reported by
634 Stefan.
638 Stefan.
635
639
636 2006-10-03 Ville Vainio <vivainio@gmail.com>
640 2006-10-03 Ville Vainio <vivainio@gmail.com>
637
641
638 * iplib.py (raw_input, interact): Return ValueError catching for
642 * iplib.py (raw_input, interact): Return ValueError catching for
639 raw_input. Fixes infinite loop for sys.stdin.close() or
643 raw_input. Fixes infinite loop for sys.stdin.close() or
640 sys.stdout.close().
644 sys.stdout.close().
641
645
642 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
646 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
643
647
644 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
648 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
645 to help in handling doctests. irunner is now pretty useful for
649 to help in handling doctests. irunner is now pretty useful for
646 running standalone scripts and simulate a full interactive session
650 running standalone scripts and simulate a full interactive session
647 in a format that can be then pasted as a doctest.
651 in a format that can be then pasted as a doctest.
648
652
649 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
653 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
650 on top of the default (useless) ones. This also fixes the nasty
654 on top of the default (useless) ones. This also fixes the nasty
651 way in which 2.5's Quitter() exits (reverted [1785]).
655 way in which 2.5's Quitter() exits (reverted [1785]).
652
656
653 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
657 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
654 2.5.
658 2.5.
655
659
656 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
660 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
657 color scheme is updated as well when color scheme is changed
661 color scheme is updated as well when color scheme is changed
658 interactively.
662 interactively.
659
663
660 2006-09-27 Ville Vainio <vivainio@gmail.com>
664 2006-09-27 Ville Vainio <vivainio@gmail.com>
661
665
662 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
666 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
663 infinite loop and just exit. It's a hack, but will do for a while.
667 infinite loop and just exit. It's a hack, but will do for a while.
664
668
665 2006-08-25 Walter Doerwald <walter@livinglogic.de>
669 2006-08-25 Walter Doerwald <walter@livinglogic.de>
666
670
667 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
671 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
668 the constructor, this makes it possible to get a list of only directories
672 the constructor, this makes it possible to get a list of only directories
669 or only files.
673 or only files.
670
674
671 2006-08-12 Ville Vainio <vivainio@gmail.com>
675 2006-08-12 Ville Vainio <vivainio@gmail.com>
672
676
673 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
677 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
674 they broke unittest
678 they broke unittest
675
679
676 2006-08-11 Ville Vainio <vivainio@gmail.com>
680 2006-08-11 Ville Vainio <vivainio@gmail.com>
677
681
678 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
682 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
679 by resolving issue properly, i.e. by inheriting FakeModule
683 by resolving issue properly, i.e. by inheriting FakeModule
680 from types.ModuleType. Pickling ipython interactive data
684 from types.ModuleType. Pickling ipython interactive data
681 should still work as usual (testing appreciated).
685 should still work as usual (testing appreciated).
682
686
683 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
687 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
684
688
685 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
689 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
686 running under python 2.3 with code from 2.4 to fix a bug with
690 running under python 2.3 with code from 2.4 to fix a bug with
687 help(). Reported by the Debian maintainers, Norbert Tretkowski
691 help(). Reported by the Debian maintainers, Norbert Tretkowski
688 <norbert-AT-tretkowski.de> and Alexandre Fayolle
692 <norbert-AT-tretkowski.de> and Alexandre Fayolle
689 <afayolle-AT-debian.org>.
693 <afayolle-AT-debian.org>.
690
694
691 2006-08-04 Walter Doerwald <walter@livinglogic.de>
695 2006-08-04 Walter Doerwald <walter@livinglogic.de>
692
696
693 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
697 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
694 (which was displaying "quit" twice).
698 (which was displaying "quit" twice).
695
699
696 2006-07-28 Walter Doerwald <walter@livinglogic.de>
700 2006-07-28 Walter Doerwald <walter@livinglogic.de>
697
701
698 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
702 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
699 the mode argument).
703 the mode argument).
700
704
701 2006-07-27 Walter Doerwald <walter@livinglogic.de>
705 2006-07-27 Walter Doerwald <walter@livinglogic.de>
702
706
703 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
707 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
704 not running under IPython.
708 not running under IPython.
705
709
706 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
710 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
707 and make it iterable (iterating over the attribute itself). Add two new
711 and make it iterable (iterating over the attribute itself). Add two new
708 magic strings for __xattrs__(): If the string starts with "-", the attribute
712 magic strings for __xattrs__(): If the string starts with "-", the attribute
709 will not be displayed in ibrowse's detail view (but it can still be
713 will not be displayed in ibrowse's detail view (but it can still be
710 iterated over). This makes it possible to add attributes that are large
714 iterated over). This makes it possible to add attributes that are large
711 lists or generator methods to the detail view. Replace magic attribute names
715 lists or generator methods to the detail view. Replace magic attribute names
712 and _attrname() and _getattr() with "descriptors": For each type of magic
716 and _attrname() and _getattr() with "descriptors": For each type of magic
713 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
717 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
714 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
718 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
715 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
719 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
716 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
720 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
717 are still supported.
721 are still supported.
718
722
719 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
723 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
720 fails in ibrowse.fetch(), the exception object is added as the last item
724 fails in ibrowse.fetch(), the exception object is added as the last item
721 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
725 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
722 a generator throws an exception midway through execution.
726 a generator throws an exception midway through execution.
723
727
724 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
728 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
725 encoding into methods.
729 encoding into methods.
726
730
727 2006-07-26 Ville Vainio <vivainio@gmail.com>
731 2006-07-26 Ville Vainio <vivainio@gmail.com>
728
732
729 * iplib.py: history now stores multiline input as single
733 * iplib.py: history now stores multiline input as single
730 history entries. Patch by Jorgen Cederlof.
734 history entries. Patch by Jorgen Cederlof.
731
735
732 2006-07-18 Walter Doerwald <walter@livinglogic.de>
736 2006-07-18 Walter Doerwald <walter@livinglogic.de>
733
737
734 * IPython/Extensions/ibrowse.py: Make cursor visible over
738 * IPython/Extensions/ibrowse.py: Make cursor visible over
735 non existing attributes.
739 non existing attributes.
736
740
737 2006-07-14 Walter Doerwald <walter@livinglogic.de>
741 2006-07-14 Walter Doerwald <walter@livinglogic.de>
738
742
739 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
743 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
740 error output of the running command doesn't mess up the screen.
744 error output of the running command doesn't mess up the screen.
741
745
742 2006-07-13 Walter Doerwald <walter@livinglogic.de>
746 2006-07-13 Walter Doerwald <walter@livinglogic.de>
743
747
744 * IPython/Extensions/ipipe.py (isort): Make isort usable without
748 * IPython/Extensions/ipipe.py (isort): Make isort usable without
745 argument. This sorts the items themselves.
749 argument. This sorts the items themselves.
746
750
747 2006-07-12 Walter Doerwald <walter@livinglogic.de>
751 2006-07-12 Walter Doerwald <walter@livinglogic.de>
748
752
749 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
753 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
750 Compile expression strings into code objects. This should speed
754 Compile expression strings into code objects. This should speed
751 up ifilter and friends somewhat.
755 up ifilter and friends somewhat.
752
756
753 2006-07-08 Ville Vainio <vivainio@gmail.com>
757 2006-07-08 Ville Vainio <vivainio@gmail.com>
754
758
755 * Magic.py: %cpaste now strips > from the beginning of lines
759 * Magic.py: %cpaste now strips > from the beginning of lines
756 to ease pasting quoted code from emails. Contributed by
760 to ease pasting quoted code from emails. Contributed by
757 Stefan van der Walt.
761 Stefan van der Walt.
758
762
759 2006-06-29 Ville Vainio <vivainio@gmail.com>
763 2006-06-29 Ville Vainio <vivainio@gmail.com>
760
764
761 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
765 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
762 mode, patch contributed by Darren Dale. NEEDS TESTING!
766 mode, patch contributed by Darren Dale. NEEDS TESTING!
763
767
764 2006-06-28 Walter Doerwald <walter@livinglogic.de>
768 2006-06-28 Walter Doerwald <walter@livinglogic.de>
765
769
766 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
770 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
767 a blue background. Fix fetching new display rows when the browser
771 a blue background. Fix fetching new display rows when the browser
768 scrolls more than a screenful (e.g. by using the goto command).
772 scrolls more than a screenful (e.g. by using the goto command).
769
773
770 2006-06-27 Ville Vainio <vivainio@gmail.com>
774 2006-06-27 Ville Vainio <vivainio@gmail.com>
771
775
772 * Magic.py (_inspect, _ofind) Apply David Huard's
776 * Magic.py (_inspect, _ofind) Apply David Huard's
773 patch for displaying the correct docstring for 'property'
777 patch for displaying the correct docstring for 'property'
774 attributes.
778 attributes.
775
779
776 2006-06-23 Walter Doerwald <walter@livinglogic.de>
780 2006-06-23 Walter Doerwald <walter@livinglogic.de>
777
781
778 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
782 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
779 commands into the methods implementing them.
783 commands into the methods implementing them.
780
784
781 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
785 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
782
786
783 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
787 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
784 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
788 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
785 autoindent support was authored by Jin Liu.
789 autoindent support was authored by Jin Liu.
786
790
787 2006-06-22 Walter Doerwald <walter@livinglogic.de>
791 2006-06-22 Walter Doerwald <walter@livinglogic.de>
788
792
789 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
793 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
790 for keymaps with a custom class that simplifies handling.
794 for keymaps with a custom class that simplifies handling.
791
795
792 2006-06-19 Walter Doerwald <walter@livinglogic.de>
796 2006-06-19 Walter Doerwald <walter@livinglogic.de>
793
797
794 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
798 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
795 resizing. This requires Python 2.5 to work.
799 resizing. This requires Python 2.5 to work.
796
800
797 2006-06-16 Walter Doerwald <walter@livinglogic.de>
801 2006-06-16 Walter Doerwald <walter@livinglogic.de>
798
802
799 * IPython/Extensions/ibrowse.py: Add two new commands to
803 * IPython/Extensions/ibrowse.py: Add two new commands to
800 ibrowse: "hideattr" (mapped to "h") hides the attribute under
804 ibrowse: "hideattr" (mapped to "h") hides the attribute under
801 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
805 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
802 attributes again. Remapped the help command to "?". Display
806 attributes again. Remapped the help command to "?". Display
803 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
807 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
804 as keys for the "home" and "end" commands. Add three new commands
808 as keys for the "home" and "end" commands. Add three new commands
805 to the input mode for "find" and friends: "delend" (CTRL-K)
809 to the input mode for "find" and friends: "delend" (CTRL-K)
806 deletes to the end of line. "incsearchup" searches upwards in the
810 deletes to the end of line. "incsearchup" searches upwards in the
807 command history for an input that starts with the text before the cursor.
811 command history for an input that starts with the text before the cursor.
808 "incsearchdown" does the same downwards. Removed a bogus mapping of
812 "incsearchdown" does the same downwards. Removed a bogus mapping of
809 the x key to "delete".
813 the x key to "delete".
810
814
811 2006-06-15 Ville Vainio <vivainio@gmail.com>
815 2006-06-15 Ville Vainio <vivainio@gmail.com>
812
816
813 * iplib.py, hooks.py: Added new generate_prompt hook that can be
817 * iplib.py, hooks.py: Added new generate_prompt hook that can be
814 used to create prompts dynamically, instead of the "old" way of
818 used to create prompts dynamically, instead of the "old" way of
815 assigning "magic" strings to prompt_in1 and prompt_in2. The old
819 assigning "magic" strings to prompt_in1 and prompt_in2. The old
816 way still works (it's invoked by the default hook), of course.
820 way still works (it's invoked by the default hook), of course.
817
821
818 * Prompts.py: added generate_output_prompt hook for altering output
822 * Prompts.py: added generate_output_prompt hook for altering output
819 prompt
823 prompt
820
824
821 * Release.py: Changed version string to 0.7.3.svn.
825 * Release.py: Changed version string to 0.7.3.svn.
822
826
823 2006-06-15 Walter Doerwald <walter@livinglogic.de>
827 2006-06-15 Walter Doerwald <walter@livinglogic.de>
824
828
825 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
829 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
826 the call to fetch() always tries to fetch enough data for at least one
830 the call to fetch() always tries to fetch enough data for at least one
827 full screen. This makes it possible to simply call moveto(0,0,True) in
831 full screen. This makes it possible to simply call moveto(0,0,True) in
828 the constructor. Fix typos and removed the obsolete goto attribute.
832 the constructor. Fix typos and removed the obsolete goto attribute.
829
833
830 2006-06-12 Ville Vainio <vivainio@gmail.com>
834 2006-06-12 Ville Vainio <vivainio@gmail.com>
831
835
832 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
836 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
833 allowing $variable interpolation within multiline statements,
837 allowing $variable interpolation within multiline statements,
834 though so far only with "sh" profile for a testing period.
838 though so far only with "sh" profile for a testing period.
835 The patch also enables splitting long commands with \ but it
839 The patch also enables splitting long commands with \ but it
836 doesn't work properly yet.
840 doesn't work properly yet.
837
841
838 2006-06-12 Walter Doerwald <walter@livinglogic.de>
842 2006-06-12 Walter Doerwald <walter@livinglogic.de>
839
843
840 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
844 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
841 input history and the position of the cursor in the input history for
845 input history and the position of the cursor in the input history for
842 the find, findbackwards and goto command.
846 the find, findbackwards and goto command.
843
847
844 2006-06-10 Walter Doerwald <walter@livinglogic.de>
848 2006-06-10 Walter Doerwald <walter@livinglogic.de>
845
849
846 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
850 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
847 implements the basic functionality of browser commands that require
851 implements the basic functionality of browser commands that require
848 input. Reimplement the goto, find and findbackwards commands as
852 input. Reimplement the goto, find and findbackwards commands as
849 subclasses of _CommandInput. Add an input history and keymaps to those
853 subclasses of _CommandInput. Add an input history and keymaps to those
850 commands. Add "\r" as a keyboard shortcut for the enterdefault and
854 commands. Add "\r" as a keyboard shortcut for the enterdefault and
851 execute commands.
855 execute commands.
852
856
853 2006-06-07 Ville Vainio <vivainio@gmail.com>
857 2006-06-07 Ville Vainio <vivainio@gmail.com>
854
858
855 * iplib.py: ipython mybatch.ipy exits ipython immediately after
859 * iplib.py: ipython mybatch.ipy exits ipython immediately after
856 running the batch files instead of leaving the session open.
860 running the batch files instead of leaving the session open.
857
861
858 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
862 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
859
863
860 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
864 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
861 the original fix was incomplete. Patch submitted by W. Maier.
865 the original fix was incomplete. Patch submitted by W. Maier.
862
866
863 2006-06-07 Ville Vainio <vivainio@gmail.com>
867 2006-06-07 Ville Vainio <vivainio@gmail.com>
864
868
865 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
869 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
866 Confirmation prompts can be supressed by 'quiet' option.
870 Confirmation prompts can be supressed by 'quiet' option.
867 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
871 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
868
872
869 2006-06-06 *** Released version 0.7.2
873 2006-06-06 *** Released version 0.7.2
870
874
871 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
875 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
872
876
873 * IPython/Release.py (version): Made 0.7.2 final for release.
877 * IPython/Release.py (version): Made 0.7.2 final for release.
874 Repo tagged and release cut.
878 Repo tagged and release cut.
875
879
876 2006-06-05 Ville Vainio <vivainio@gmail.com>
880 2006-06-05 Ville Vainio <vivainio@gmail.com>
877
881
878 * Magic.py (magic_rehashx): Honor no_alias list earlier in
882 * Magic.py (magic_rehashx): Honor no_alias list earlier in
879 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
883 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
880
884
881 * upgrade_dir.py: try import 'path' module a bit harder
885 * upgrade_dir.py: try import 'path' module a bit harder
882 (for %upgrade)
886 (for %upgrade)
883
887
884 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
888 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
885
889
886 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
890 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
887 instead of looping 20 times.
891 instead of looping 20 times.
888
892
889 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
893 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
890 correctly at initialization time. Bug reported by Krishna Mohan
894 correctly at initialization time. Bug reported by Krishna Mohan
891 Gundu <gkmohan-AT-gmail.com> on the user list.
895 Gundu <gkmohan-AT-gmail.com> on the user list.
892
896
893 * IPython/Release.py (version): Mark 0.7.2 version to start
897 * IPython/Release.py (version): Mark 0.7.2 version to start
894 testing for release on 06/06.
898 testing for release on 06/06.
895
899
896 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
900 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
897
901
898 * scripts/irunner: thin script interface so users don't have to
902 * scripts/irunner: thin script interface so users don't have to
899 find the module and call it as an executable, since modules rarely
903 find the module and call it as an executable, since modules rarely
900 live in people's PATH.
904 live in people's PATH.
901
905
902 * IPython/irunner.py (InteractiveRunner.__init__): added
906 * IPython/irunner.py (InteractiveRunner.__init__): added
903 delaybeforesend attribute to control delays with newer versions of
907 delaybeforesend attribute to control delays with newer versions of
904 pexpect. Thanks to detailed help from pexpect's author, Noah
908 pexpect. Thanks to detailed help from pexpect's author, Noah
905 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
909 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
906 correctly (it works in NoColor mode).
910 correctly (it works in NoColor mode).
907
911
908 * IPython/iplib.py (handle_normal): fix nasty crash reported on
912 * IPython/iplib.py (handle_normal): fix nasty crash reported on
909 SAGE list, from improper log() calls.
913 SAGE list, from improper log() calls.
910
914
911 2006-05-31 Ville Vainio <vivainio@gmail.com>
915 2006-05-31 Ville Vainio <vivainio@gmail.com>
912
916
913 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
917 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
914 with args in parens to work correctly with dirs that have spaces.
918 with args in parens to work correctly with dirs that have spaces.
915
919
916 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
920 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
917
921
918 * IPython/Logger.py (Logger.logstart): add option to log raw input
922 * IPython/Logger.py (Logger.logstart): add option to log raw input
919 instead of the processed one. A -r flag was added to the
923 instead of the processed one. A -r flag was added to the
920 %logstart magic used for controlling logging.
924 %logstart magic used for controlling logging.
921
925
922 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
926 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
923
927
924 * IPython/iplib.py (InteractiveShell.__init__): add check for the
928 * IPython/iplib.py (InteractiveShell.__init__): add check for the
925 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
929 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
926 recognize the option. After a bug report by Will Maier. This
930 recognize the option. After a bug report by Will Maier. This
927 closes #64 (will do it after confirmation from W. Maier).
931 closes #64 (will do it after confirmation from W. Maier).
928
932
929 * IPython/irunner.py: New module to run scripts as if manually
933 * IPython/irunner.py: New module to run scripts as if manually
930 typed into an interactive environment, based on pexpect. After a
934 typed into an interactive environment, based on pexpect. After a
931 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
935 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
932 ipython-user list. Simple unittests in the tests/ directory.
936 ipython-user list. Simple unittests in the tests/ directory.
933
937
934 * tools/release: add Will Maier, OpenBSD port maintainer, to
938 * tools/release: add Will Maier, OpenBSD port maintainer, to
935 recepients list. We are now officially part of the OpenBSD ports:
939 recepients list. We are now officially part of the OpenBSD ports:
936 http://www.openbsd.org/ports.html ! Many thanks to Will for the
940 http://www.openbsd.org/ports.html ! Many thanks to Will for the
937 work.
941 work.
938
942
939 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
943 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
940
944
941 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
945 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
942 so that it doesn't break tkinter apps.
946 so that it doesn't break tkinter apps.
943
947
944 * IPython/iplib.py (_prefilter): fix bug where aliases would
948 * IPython/iplib.py (_prefilter): fix bug where aliases would
945 shadow variables when autocall was fully off. Reported by SAGE
949 shadow variables when autocall was fully off. Reported by SAGE
946 author William Stein.
950 author William Stein.
947
951
948 * IPython/OInspect.py (Inspector.__init__): add a flag to control
952 * IPython/OInspect.py (Inspector.__init__): add a flag to control
949 at what detail level strings are computed when foo? is requested.
953 at what detail level strings are computed when foo? is requested.
950 This allows users to ask for example that the string form of an
954 This allows users to ask for example that the string form of an
951 object is only computed when foo?? is called, or even never, by
955 object is only computed when foo?? is called, or even never, by
952 setting the object_info_string_level >= 2 in the configuration
956 setting the object_info_string_level >= 2 in the configuration
953 file. This new option has been added and documented. After a
957 file. This new option has been added and documented. After a
954 request by SAGE to be able to control the printing of very large
958 request by SAGE to be able to control the printing of very large
955 objects more easily.
959 objects more easily.
956
960
957 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
961 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
958
962
959 * IPython/ipmaker.py (make_IPython): remove the ipython call path
963 * IPython/ipmaker.py (make_IPython): remove the ipython call path
960 from sys.argv, to be 100% consistent with how Python itself works
964 from sys.argv, to be 100% consistent with how Python itself works
961 (as seen for example with python -i file.py). After a bug report
965 (as seen for example with python -i file.py). After a bug report
962 by Jeffrey Collins.
966 by Jeffrey Collins.
963
967
964 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
968 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
965 nasty bug which was preventing custom namespaces with -pylab,
969 nasty bug which was preventing custom namespaces with -pylab,
966 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
970 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
967 compatibility (long gone from mpl).
971 compatibility (long gone from mpl).
968
972
969 * IPython/ipapi.py (make_session): name change: create->make. We
973 * IPython/ipapi.py (make_session): name change: create->make. We
970 use make in other places (ipmaker,...), it's shorter and easier to
974 use make in other places (ipmaker,...), it's shorter and easier to
971 type and say, etc. I'm trying to clean things before 0.7.2 so
975 type and say, etc. I'm trying to clean things before 0.7.2 so
972 that I can keep things stable wrt to ipapi in the chainsaw branch.
976 that I can keep things stable wrt to ipapi in the chainsaw branch.
973
977
974 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
978 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
975 python-mode recognizes our debugger mode. Add support for
979 python-mode recognizes our debugger mode. Add support for
976 autoindent inside (X)emacs. After a patch sent in by Jin Liu
980 autoindent inside (X)emacs. After a patch sent in by Jin Liu
977 <m.liu.jin-AT-gmail.com> originally written by
981 <m.liu.jin-AT-gmail.com> originally written by
978 doxgen-AT-newsmth.net (with minor modifications for xemacs
982 doxgen-AT-newsmth.net (with minor modifications for xemacs
979 compatibility)
983 compatibility)
980
984
981 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
985 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
982 tracebacks when walking the stack so that the stack tracking system
986 tracebacks when walking the stack so that the stack tracking system
983 in emacs' python-mode can identify the frames correctly.
987 in emacs' python-mode can identify the frames correctly.
984
988
985 * IPython/ipmaker.py (make_IPython): make the internal (and
989 * IPython/ipmaker.py (make_IPython): make the internal (and
986 default config) autoedit_syntax value false by default. Too many
990 default config) autoedit_syntax value false by default. Too many
987 users have complained to me (both on and off-list) about problems
991 users have complained to me (both on and off-list) about problems
988 with this option being on by default, so I'm making it default to
992 with this option being on by default, so I'm making it default to
989 off. It can still be enabled by anyone via the usual mechanisms.
993 off. It can still be enabled by anyone via the usual mechanisms.
990
994
991 * IPython/completer.py (Completer.attr_matches): add support for
995 * IPython/completer.py (Completer.attr_matches): add support for
992 PyCrust-style _getAttributeNames magic method. Patch contributed
996 PyCrust-style _getAttributeNames magic method. Patch contributed
993 by <mscott-AT-goldenspud.com>. Closes #50.
997 by <mscott-AT-goldenspud.com>. Closes #50.
994
998
995 * IPython/iplib.py (InteractiveShell.__init__): remove the
999 * IPython/iplib.py (InteractiveShell.__init__): remove the
996 deletion of exit/quit from __builtin__, which can break
1000 deletion of exit/quit from __builtin__, which can break
997 third-party tools like the Zope debugging console. The
1001 third-party tools like the Zope debugging console. The
998 %exit/%quit magics remain. In general, it's probably a good idea
1002 %exit/%quit magics remain. In general, it's probably a good idea
999 not to delete anything from __builtin__, since we never know what
1003 not to delete anything from __builtin__, since we never know what
1000 that will break. In any case, python now (for 2.5) will support
1004 that will break. In any case, python now (for 2.5) will support
1001 'real' exit/quit, so this issue is moot. Closes #55.
1005 'real' exit/quit, so this issue is moot. Closes #55.
1002
1006
1003 * IPython/genutils.py (with_obj): rename the 'with' function to
1007 * IPython/genutils.py (with_obj): rename the 'with' function to
1004 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1008 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1005 becomes a language keyword. Closes #53.
1009 becomes a language keyword. Closes #53.
1006
1010
1007 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1011 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1008 __file__ attribute to this so it fools more things into thinking
1012 __file__ attribute to this so it fools more things into thinking
1009 it is a real module. Closes #59.
1013 it is a real module. Closes #59.
1010
1014
1011 * IPython/Magic.py (magic_edit): add -n option to open the editor
1015 * IPython/Magic.py (magic_edit): add -n option to open the editor
1012 at a specific line number. After a patch by Stefan van der Walt.
1016 at a specific line number. After a patch by Stefan van der Walt.
1013
1017
1014 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1018 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1015
1019
1016 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1020 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1017 reason the file could not be opened. After automatic crash
1021 reason the file could not be opened. After automatic crash
1018 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1022 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1019 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1023 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1020 (_should_recompile): Don't fire editor if using %bg, since there
1024 (_should_recompile): Don't fire editor if using %bg, since there
1021 is no file in the first place. From the same report as above.
1025 is no file in the first place. From the same report as above.
1022 (raw_input): protect against faulty third-party prefilters. After
1026 (raw_input): protect against faulty third-party prefilters. After
1023 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1027 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1024 while running under SAGE.
1028 while running under SAGE.
1025
1029
1026 2006-05-23 Ville Vainio <vivainio@gmail.com>
1030 2006-05-23 Ville Vainio <vivainio@gmail.com>
1027
1031
1028 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1032 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1029 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1033 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1030 now returns None (again), unless dummy is specifically allowed by
1034 now returns None (again), unless dummy is specifically allowed by
1031 ipapi.get(allow_dummy=True).
1035 ipapi.get(allow_dummy=True).
1032
1036
1033 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1037 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1034
1038
1035 * IPython: remove all 2.2-compatibility objects and hacks from
1039 * IPython: remove all 2.2-compatibility objects and hacks from
1036 everywhere, since we only support 2.3 at this point. Docs
1040 everywhere, since we only support 2.3 at this point. Docs
1037 updated.
1041 updated.
1038
1042
1039 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1043 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1040 Anything requiring extra validation can be turned into a Python
1044 Anything requiring extra validation can be turned into a Python
1041 property in the future. I used a property for the db one b/c
1045 property in the future. I used a property for the db one b/c
1042 there was a nasty circularity problem with the initialization
1046 there was a nasty circularity problem with the initialization
1043 order, which right now I don't have time to clean up.
1047 order, which right now I don't have time to clean up.
1044
1048
1045 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1049 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1046 another locking bug reported by Jorgen. I'm not 100% sure though,
1050 another locking bug reported by Jorgen. I'm not 100% sure though,
1047 so more testing is needed...
1051 so more testing is needed...
1048
1052
1049 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1053 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1050
1054
1051 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1055 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1052 local variables from any routine in user code (typically executed
1056 local variables from any routine in user code (typically executed
1053 with %run) directly into the interactive namespace. Very useful
1057 with %run) directly into the interactive namespace. Very useful
1054 when doing complex debugging.
1058 when doing complex debugging.
1055 (IPythonNotRunning): Changed the default None object to a dummy
1059 (IPythonNotRunning): Changed the default None object to a dummy
1056 whose attributes can be queried as well as called without
1060 whose attributes can be queried as well as called without
1057 exploding, to ease writing code which works transparently both in
1061 exploding, to ease writing code which works transparently both in
1058 and out of ipython and uses some of this API.
1062 and out of ipython and uses some of this API.
1059
1063
1060 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1064 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1061
1065
1062 * IPython/hooks.py (result_display): Fix the fact that our display
1066 * IPython/hooks.py (result_display): Fix the fact that our display
1063 hook was using str() instead of repr(), as the default python
1067 hook was using str() instead of repr(), as the default python
1064 console does. This had gone unnoticed b/c it only happened if
1068 console does. This had gone unnoticed b/c it only happened if
1065 %Pprint was off, but the inconsistency was there.
1069 %Pprint was off, but the inconsistency was there.
1066
1070
1067 2006-05-15 Ville Vainio <vivainio@gmail.com>
1071 2006-05-15 Ville Vainio <vivainio@gmail.com>
1068
1072
1069 * Oinspect.py: Only show docstring for nonexisting/binary files
1073 * Oinspect.py: Only show docstring for nonexisting/binary files
1070 when doing object??, closing ticket #62
1074 when doing object??, closing ticket #62
1071
1075
1072 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1076 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1073
1077
1074 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1078 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1075 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1079 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1076 was being released in a routine which hadn't checked if it had
1080 was being released in a routine which hadn't checked if it had
1077 been the one to acquire it.
1081 been the one to acquire it.
1078
1082
1079 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1083 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1080
1084
1081 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1085 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1082
1086
1083 2006-04-11 Ville Vainio <vivainio@gmail.com>
1087 2006-04-11 Ville Vainio <vivainio@gmail.com>
1084
1088
1085 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1089 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1086 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1090 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1087 prefilters, allowing stuff like magics and aliases in the file.
1091 prefilters, allowing stuff like magics and aliases in the file.
1088
1092
1089 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1093 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1090 added. Supported now are "%clear in" and "%clear out" (clear input and
1094 added. Supported now are "%clear in" and "%clear out" (clear input and
1091 output history, respectively). Also fixed CachedOutput.flush to
1095 output history, respectively). Also fixed CachedOutput.flush to
1092 properly flush the output cache.
1096 properly flush the output cache.
1093
1097
1094 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1098 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1095 half-success (and fail explicitly).
1099 half-success (and fail explicitly).
1096
1100
1097 2006-03-28 Ville Vainio <vivainio@gmail.com>
1101 2006-03-28 Ville Vainio <vivainio@gmail.com>
1098
1102
1099 * iplib.py: Fix quoting of aliases so that only argless ones
1103 * iplib.py: Fix quoting of aliases so that only argless ones
1100 are quoted
1104 are quoted
1101
1105
1102 2006-03-28 Ville Vainio <vivainio@gmail.com>
1106 2006-03-28 Ville Vainio <vivainio@gmail.com>
1103
1107
1104 * iplib.py: Quote aliases with spaces in the name.
1108 * iplib.py: Quote aliases with spaces in the name.
1105 "c:\program files\blah\bin" is now legal alias target.
1109 "c:\program files\blah\bin" is now legal alias target.
1106
1110
1107 * ext_rehashdir.py: Space no longer allowed as arg
1111 * ext_rehashdir.py: Space no longer allowed as arg
1108 separator, since space is legal in path names.
1112 separator, since space is legal in path names.
1109
1113
1110 2006-03-16 Ville Vainio <vivainio@gmail.com>
1114 2006-03-16 Ville Vainio <vivainio@gmail.com>
1111
1115
1112 * upgrade_dir.py: Take path.py from Extensions, correcting
1116 * upgrade_dir.py: Take path.py from Extensions, correcting
1113 %upgrade magic
1117 %upgrade magic
1114
1118
1115 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1119 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1116
1120
1117 * hooks.py: Only enclose editor binary in quotes if legal and
1121 * hooks.py: Only enclose editor binary in quotes if legal and
1118 necessary (space in the name, and is an existing file). Fixes a bug
1122 necessary (space in the name, and is an existing file). Fixes a bug
1119 reported by Zachary Pincus.
1123 reported by Zachary Pincus.
1120
1124
1121 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1125 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1122
1126
1123 * Manual: thanks to a tip on proper color handling for Emacs, by
1127 * Manual: thanks to a tip on proper color handling for Emacs, by
1124 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1128 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1125
1129
1126 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1130 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1127 by applying the provided patch. Thanks to Liu Jin
1131 by applying the provided patch. Thanks to Liu Jin
1128 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1132 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1129 XEmacs/Linux, I'm trusting the submitter that it actually helps
1133 XEmacs/Linux, I'm trusting the submitter that it actually helps
1130 under win32/GNU Emacs. Will revisit if any problems are reported.
1134 under win32/GNU Emacs. Will revisit if any problems are reported.
1131
1135
1132 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1136 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1133
1137
1134 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1138 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1135 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1139 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1136
1140
1137 2006-03-12 Ville Vainio <vivainio@gmail.com>
1141 2006-03-12 Ville Vainio <vivainio@gmail.com>
1138
1142
1139 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1143 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1140 Torsten Marek.
1144 Torsten Marek.
1141
1145
1142 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1146 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1143
1147
1144 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1148 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1145 line ranges works again.
1149 line ranges works again.
1146
1150
1147 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1151 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1148
1152
1149 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1153 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1150 and friends, after a discussion with Zach Pincus on ipython-user.
1154 and friends, after a discussion with Zach Pincus on ipython-user.
1151 I'm not 100% sure, but after thinking about it quite a bit, it may
1155 I'm not 100% sure, but after thinking about it quite a bit, it may
1152 be OK. Testing with the multithreaded shells didn't reveal any
1156 be OK. Testing with the multithreaded shells didn't reveal any
1153 problems, but let's keep an eye out.
1157 problems, but let's keep an eye out.
1154
1158
1155 In the process, I fixed a few things which were calling
1159 In the process, I fixed a few things which were calling
1156 self.InteractiveTB() directly (like safe_execfile), which is a
1160 self.InteractiveTB() directly (like safe_execfile), which is a
1157 mistake: ALL exception reporting should be done by calling
1161 mistake: ALL exception reporting should be done by calling
1158 self.showtraceback(), which handles state and tab-completion and
1162 self.showtraceback(), which handles state and tab-completion and
1159 more.
1163 more.
1160
1164
1161 2006-03-01 Ville Vainio <vivainio@gmail.com>
1165 2006-03-01 Ville Vainio <vivainio@gmail.com>
1162
1166
1163 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1167 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1164 To use, do "from ipipe import *".
1168 To use, do "from ipipe import *".
1165
1169
1166 2006-02-24 Ville Vainio <vivainio@gmail.com>
1170 2006-02-24 Ville Vainio <vivainio@gmail.com>
1167
1171
1168 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1172 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1169 "cleanly" and safely than the older upgrade mechanism.
1173 "cleanly" and safely than the older upgrade mechanism.
1170
1174
1171 2006-02-21 Ville Vainio <vivainio@gmail.com>
1175 2006-02-21 Ville Vainio <vivainio@gmail.com>
1172
1176
1173 * Magic.py: %save works again.
1177 * Magic.py: %save works again.
1174
1178
1175 2006-02-15 Ville Vainio <vivainio@gmail.com>
1179 2006-02-15 Ville Vainio <vivainio@gmail.com>
1176
1180
1177 * Magic.py: %Pprint works again
1181 * Magic.py: %Pprint works again
1178
1182
1179 * Extensions/ipy_sane_defaults.py: Provide everything provided
1183 * Extensions/ipy_sane_defaults.py: Provide everything provided
1180 in default ipythonrc, to make it possible to have a completely empty
1184 in default ipythonrc, to make it possible to have a completely empty
1181 ipythonrc (and thus completely rc-file free configuration)
1185 ipythonrc (and thus completely rc-file free configuration)
1182
1186
1183 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1187 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1184
1188
1185 * IPython/hooks.py (editor): quote the call to the editor command,
1189 * IPython/hooks.py (editor): quote the call to the editor command,
1186 to allow commands with spaces in them. Problem noted by watching
1190 to allow commands with spaces in them. Problem noted by watching
1187 Ian Oswald's video about textpad under win32 at
1191 Ian Oswald's video about textpad under win32 at
1188 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1192 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1189
1193
1190 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1194 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1191 describing magics (we haven't used @ for a loong time).
1195 describing magics (we haven't used @ for a loong time).
1192
1196
1193 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1197 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1194 contributed by marienz to close
1198 contributed by marienz to close
1195 http://www.scipy.net/roundup/ipython/issue53.
1199 http://www.scipy.net/roundup/ipython/issue53.
1196
1200
1197 2006-02-10 Ville Vainio <vivainio@gmail.com>
1201 2006-02-10 Ville Vainio <vivainio@gmail.com>
1198
1202
1199 * genutils.py: getoutput now works in win32 too
1203 * genutils.py: getoutput now works in win32 too
1200
1204
1201 * completer.py: alias and magic completion only invoked
1205 * completer.py: alias and magic completion only invoked
1202 at the first "item" in the line, to avoid "cd %store"
1206 at the first "item" in the line, to avoid "cd %store"
1203 nonsense.
1207 nonsense.
1204
1208
1205 2006-02-09 Ville Vainio <vivainio@gmail.com>
1209 2006-02-09 Ville Vainio <vivainio@gmail.com>
1206
1210
1207 * test/*: Added a unit testing framework (finally).
1211 * test/*: Added a unit testing framework (finally).
1208 '%run runtests.py' to run test_*.
1212 '%run runtests.py' to run test_*.
1209
1213
1210 * ipapi.py: Exposed runlines and set_custom_exc
1214 * ipapi.py: Exposed runlines and set_custom_exc
1211
1215
1212 2006-02-07 Ville Vainio <vivainio@gmail.com>
1216 2006-02-07 Ville Vainio <vivainio@gmail.com>
1213
1217
1214 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1218 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1215 instead use "f(1 2)" as before.
1219 instead use "f(1 2)" as before.
1216
1220
1217 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1221 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1218
1222
1219 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1223 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1220 facilities, for demos processed by the IPython input filter
1224 facilities, for demos processed by the IPython input filter
1221 (IPythonDemo), and for running a script one-line-at-a-time as a
1225 (IPythonDemo), and for running a script one-line-at-a-time as a
1222 demo, both for pure Python (LineDemo) and for IPython-processed
1226 demo, both for pure Python (LineDemo) and for IPython-processed
1223 input (IPythonLineDemo). After a request by Dave Kohel, from the
1227 input (IPythonLineDemo). After a request by Dave Kohel, from the
1224 SAGE team.
1228 SAGE team.
1225 (Demo.edit): added an edit() method to the demo objects, to edit
1229 (Demo.edit): added an edit() method to the demo objects, to edit
1226 the in-memory copy of the last executed block.
1230 the in-memory copy of the last executed block.
1227
1231
1228 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1232 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1229 processing to %edit, %macro and %save. These commands can now be
1233 processing to %edit, %macro and %save. These commands can now be
1230 invoked on the unprocessed input as it was typed by the user
1234 invoked on the unprocessed input as it was typed by the user
1231 (without any prefilters applied). After requests by the SAGE team
1235 (without any prefilters applied). After requests by the SAGE team
1232 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1236 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1233
1237
1234 2006-02-01 Ville Vainio <vivainio@gmail.com>
1238 2006-02-01 Ville Vainio <vivainio@gmail.com>
1235
1239
1236 * setup.py, eggsetup.py: easy_install ipython==dev works
1240 * setup.py, eggsetup.py: easy_install ipython==dev works
1237 correctly now (on Linux)
1241 correctly now (on Linux)
1238
1242
1239 * ipy_user_conf,ipmaker: user config changes, removed spurious
1243 * ipy_user_conf,ipmaker: user config changes, removed spurious
1240 warnings
1244 warnings
1241
1245
1242 * iplib: if rc.banner is string, use it as is.
1246 * iplib: if rc.banner is string, use it as is.
1243
1247
1244 * Magic: %pycat accepts a string argument and pages it's contents.
1248 * Magic: %pycat accepts a string argument and pages it's contents.
1245
1249
1246
1250
1247 2006-01-30 Ville Vainio <vivainio@gmail.com>
1251 2006-01-30 Ville Vainio <vivainio@gmail.com>
1248
1252
1249 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1253 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1250 Now %store and bookmarks work through PickleShare, meaning that
1254 Now %store and bookmarks work through PickleShare, meaning that
1251 concurrent access is possible and all ipython sessions see the
1255 concurrent access is possible and all ipython sessions see the
1252 same database situation all the time, instead of snapshot of
1256 same database situation all the time, instead of snapshot of
1253 the situation when the session was started. Hence, %bookmark
1257 the situation when the session was started. Hence, %bookmark
1254 results are immediately accessible from othes sessions. The database
1258 results are immediately accessible from othes sessions. The database
1255 is also available for use by user extensions. See:
1259 is also available for use by user extensions. See:
1256 http://www.python.org/pypi/pickleshare
1260 http://www.python.org/pypi/pickleshare
1257
1261
1258 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1262 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1259
1263
1260 * aliases can now be %store'd
1264 * aliases can now be %store'd
1261
1265
1262 * path.py moved to Extensions so that pickleshare does not need
1266 * path.py moved to Extensions so that pickleshare does not need
1263 IPython-specific import. Extensions added to pythonpath right
1267 IPython-specific import. Extensions added to pythonpath right
1264 at __init__.
1268 at __init__.
1265
1269
1266 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1270 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1267 called with _ip.system and the pre-transformed command string.
1271 called with _ip.system and the pre-transformed command string.
1268
1272
1269 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1273 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1270
1274
1271 * IPython/iplib.py (interact): Fix that we were not catching
1275 * IPython/iplib.py (interact): Fix that we were not catching
1272 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1276 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1273 logic here had to change, but it's fixed now.
1277 logic here had to change, but it's fixed now.
1274
1278
1275 2006-01-29 Ville Vainio <vivainio@gmail.com>
1279 2006-01-29 Ville Vainio <vivainio@gmail.com>
1276
1280
1277 * iplib.py: Try to import pyreadline on Windows.
1281 * iplib.py: Try to import pyreadline on Windows.
1278
1282
1279 2006-01-27 Ville Vainio <vivainio@gmail.com>
1283 2006-01-27 Ville Vainio <vivainio@gmail.com>
1280
1284
1281 * iplib.py: Expose ipapi as _ip in builtin namespace.
1285 * iplib.py: Expose ipapi as _ip in builtin namespace.
1282 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1286 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1283 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1287 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1284 syntax now produce _ip.* variant of the commands.
1288 syntax now produce _ip.* variant of the commands.
1285
1289
1286 * "_ip.options().autoedit_syntax = 2" automatically throws
1290 * "_ip.options().autoedit_syntax = 2" automatically throws
1287 user to editor for syntax error correction without prompting.
1291 user to editor for syntax error correction without prompting.
1288
1292
1289 2006-01-27 Ville Vainio <vivainio@gmail.com>
1293 2006-01-27 Ville Vainio <vivainio@gmail.com>
1290
1294
1291 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1295 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1292 'ipython' at argv[0]) executed through command line.
1296 'ipython' at argv[0]) executed through command line.
1293 NOTE: this DEPRECATES calling ipython with multiple scripts
1297 NOTE: this DEPRECATES calling ipython with multiple scripts
1294 ("ipython a.py b.py c.py")
1298 ("ipython a.py b.py c.py")
1295
1299
1296 * iplib.py, hooks.py: Added configurable input prefilter,
1300 * iplib.py, hooks.py: Added configurable input prefilter,
1297 named 'input_prefilter'. See ext_rescapture.py for example
1301 named 'input_prefilter'. See ext_rescapture.py for example
1298 usage.
1302 usage.
1299
1303
1300 * ext_rescapture.py, Magic.py: Better system command output capture
1304 * ext_rescapture.py, Magic.py: Better system command output capture
1301 through 'var = !ls' (deprecates user-visible %sc). Same notation
1305 through 'var = !ls' (deprecates user-visible %sc). Same notation
1302 applies for magics, 'var = %alias' assigns alias list to var.
1306 applies for magics, 'var = %alias' assigns alias list to var.
1303
1307
1304 * ipapi.py: added meta() for accessing extension-usable data store.
1308 * ipapi.py: added meta() for accessing extension-usable data store.
1305
1309
1306 * iplib.py: added InteractiveShell.getapi(). New magics should be
1310 * iplib.py: added InteractiveShell.getapi(). New magics should be
1307 written doing self.getapi() instead of using the shell directly.
1311 written doing self.getapi() instead of using the shell directly.
1308
1312
1309 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1313 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1310 %store foo >> ~/myfoo.txt to store variables to files (in clean
1314 %store foo >> ~/myfoo.txt to store variables to files (in clean
1311 textual form, not a restorable pickle).
1315 textual form, not a restorable pickle).
1312
1316
1313 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1317 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1314
1318
1315 * usage.py, Magic.py: added %quickref
1319 * usage.py, Magic.py: added %quickref
1316
1320
1317 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1321 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1318
1322
1319 * GetoptErrors when invoking magics etc. with wrong args
1323 * GetoptErrors when invoking magics etc. with wrong args
1320 are now more helpful:
1324 are now more helpful:
1321 GetoptError: option -l not recognized (allowed: "qb" )
1325 GetoptError: option -l not recognized (allowed: "qb" )
1322
1326
1323 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1327 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1324
1328
1325 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1329 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1326 computationally intensive blocks don't appear to stall the demo.
1330 computationally intensive blocks don't appear to stall the demo.
1327
1331
1328 2006-01-24 Ville Vainio <vivainio@gmail.com>
1332 2006-01-24 Ville Vainio <vivainio@gmail.com>
1329
1333
1330 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1334 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1331 value to manipulate resulting history entry.
1335 value to manipulate resulting history entry.
1332
1336
1333 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1337 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1334 to instance methods of IPApi class, to make extending an embedded
1338 to instance methods of IPApi class, to make extending an embedded
1335 IPython feasible. See ext_rehashdir.py for example usage.
1339 IPython feasible. See ext_rehashdir.py for example usage.
1336
1340
1337 * Merged 1071-1076 from branches/0.7.1
1341 * Merged 1071-1076 from branches/0.7.1
1338
1342
1339
1343
1340 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1344 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1341
1345
1342 * tools/release (daystamp): Fix build tools to use the new
1346 * tools/release (daystamp): Fix build tools to use the new
1343 eggsetup.py script to build lightweight eggs.
1347 eggsetup.py script to build lightweight eggs.
1344
1348
1345 * Applied changesets 1062 and 1064 before 0.7.1 release.
1349 * Applied changesets 1062 and 1064 before 0.7.1 release.
1346
1350
1347 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1351 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1348 see the raw input history (without conversions like %ls ->
1352 see the raw input history (without conversions like %ls ->
1349 ipmagic("ls")). After a request from W. Stein, SAGE
1353 ipmagic("ls")). After a request from W. Stein, SAGE
1350 (http://modular.ucsd.edu/sage) developer. This information is
1354 (http://modular.ucsd.edu/sage) developer. This information is
1351 stored in the input_hist_raw attribute of the IPython instance, so
1355 stored in the input_hist_raw attribute of the IPython instance, so
1352 developers can access it if needed (it's an InputList instance).
1356 developers can access it if needed (it's an InputList instance).
1353
1357
1354 * Versionstring = 0.7.2.svn
1358 * Versionstring = 0.7.2.svn
1355
1359
1356 * eggsetup.py: A separate script for constructing eggs, creates
1360 * eggsetup.py: A separate script for constructing eggs, creates
1357 proper launch scripts even on Windows (an .exe file in
1361 proper launch scripts even on Windows (an .exe file in
1358 \python24\scripts).
1362 \python24\scripts).
1359
1363
1360 * ipapi.py: launch_new_instance, launch entry point needed for the
1364 * ipapi.py: launch_new_instance, launch entry point needed for the
1361 egg.
1365 egg.
1362
1366
1363 2006-01-23 Ville Vainio <vivainio@gmail.com>
1367 2006-01-23 Ville Vainio <vivainio@gmail.com>
1364
1368
1365 * Added %cpaste magic for pasting python code
1369 * Added %cpaste magic for pasting python code
1366
1370
1367 2006-01-22 Ville Vainio <vivainio@gmail.com>
1371 2006-01-22 Ville Vainio <vivainio@gmail.com>
1368
1372
1369 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1373 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1370
1374
1371 * Versionstring = 0.7.2.svn
1375 * Versionstring = 0.7.2.svn
1372
1376
1373 * eggsetup.py: A separate script for constructing eggs, creates
1377 * eggsetup.py: A separate script for constructing eggs, creates
1374 proper launch scripts even on Windows (an .exe file in
1378 proper launch scripts even on Windows (an .exe file in
1375 \python24\scripts).
1379 \python24\scripts).
1376
1380
1377 * ipapi.py: launch_new_instance, launch entry point needed for the
1381 * ipapi.py: launch_new_instance, launch entry point needed for the
1378 egg.
1382 egg.
1379
1383
1380 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1384 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1381
1385
1382 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1386 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1383 %pfile foo would print the file for foo even if it was a binary.
1387 %pfile foo would print the file for foo even if it was a binary.
1384 Now, extensions '.so' and '.dll' are skipped.
1388 Now, extensions '.so' and '.dll' are skipped.
1385
1389
1386 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1390 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1387 bug, where macros would fail in all threaded modes. I'm not 100%
1391 bug, where macros would fail in all threaded modes. I'm not 100%
1388 sure, so I'm going to put out an rc instead of making a release
1392 sure, so I'm going to put out an rc instead of making a release
1389 today, and wait for feedback for at least a few days.
1393 today, and wait for feedback for at least a few days.
1390
1394
1391 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1395 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1392 it...) the handling of pasting external code with autoindent on.
1396 it...) the handling of pasting external code with autoindent on.
1393 To get out of a multiline input, the rule will appear for most
1397 To get out of a multiline input, the rule will appear for most
1394 users unchanged: two blank lines or change the indent level
1398 users unchanged: two blank lines or change the indent level
1395 proposed by IPython. But there is a twist now: you can
1399 proposed by IPython. But there is a twist now: you can
1396 add/subtract only *one or two spaces*. If you add/subtract three
1400 add/subtract only *one or two spaces*. If you add/subtract three
1397 or more (unless you completely delete the line), IPython will
1401 or more (unless you completely delete the line), IPython will
1398 accept that line, and you'll need to enter a second one of pure
1402 accept that line, and you'll need to enter a second one of pure
1399 whitespace. I know it sounds complicated, but I can't find a
1403 whitespace. I know it sounds complicated, but I can't find a
1400 different solution that covers all the cases, with the right
1404 different solution that covers all the cases, with the right
1401 heuristics. Hopefully in actual use, nobody will really notice
1405 heuristics. Hopefully in actual use, nobody will really notice
1402 all these strange rules and things will 'just work'.
1406 all these strange rules and things will 'just work'.
1403
1407
1404 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1408 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1405
1409
1406 * IPython/iplib.py (interact): catch exceptions which can be
1410 * IPython/iplib.py (interact): catch exceptions which can be
1407 triggered asynchronously by signal handlers. Thanks to an
1411 triggered asynchronously by signal handlers. Thanks to an
1408 automatic crash report, submitted by Colin Kingsley
1412 automatic crash report, submitted by Colin Kingsley
1409 <tercel-AT-gentoo.org>.
1413 <tercel-AT-gentoo.org>.
1410
1414
1411 2006-01-20 Ville Vainio <vivainio@gmail.com>
1415 2006-01-20 Ville Vainio <vivainio@gmail.com>
1412
1416
1413 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1417 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1414 (%rehashdir, very useful, try it out) of how to extend ipython
1418 (%rehashdir, very useful, try it out) of how to extend ipython
1415 with new magics. Also added Extensions dir to pythonpath to make
1419 with new magics. Also added Extensions dir to pythonpath to make
1416 importing extensions easy.
1420 importing extensions easy.
1417
1421
1418 * %store now complains when trying to store interactively declared
1422 * %store now complains when trying to store interactively declared
1419 classes / instances of those classes.
1423 classes / instances of those classes.
1420
1424
1421 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1425 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1422 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1426 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1423 if they exist, and ipy_user_conf.py with some defaults is created for
1427 if they exist, and ipy_user_conf.py with some defaults is created for
1424 the user.
1428 the user.
1425
1429
1426 * Startup rehashing done by the config file, not InterpreterExec.
1430 * Startup rehashing done by the config file, not InterpreterExec.
1427 This means system commands are available even without selecting the
1431 This means system commands are available even without selecting the
1428 pysh profile. It's the sensible default after all.
1432 pysh profile. It's the sensible default after all.
1429
1433
1430 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1434 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1431
1435
1432 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1436 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1433 multiline code with autoindent on working. But I am really not
1437 multiline code with autoindent on working. But I am really not
1434 sure, so this needs more testing. Will commit a debug-enabled
1438 sure, so this needs more testing. Will commit a debug-enabled
1435 version for now, while I test it some more, so that Ville and
1439 version for now, while I test it some more, so that Ville and
1436 others may also catch any problems. Also made
1440 others may also catch any problems. Also made
1437 self.indent_current_str() a method, to ensure that there's no
1441 self.indent_current_str() a method, to ensure that there's no
1438 chance of the indent space count and the corresponding string
1442 chance of the indent space count and the corresponding string
1439 falling out of sync. All code needing the string should just call
1443 falling out of sync. All code needing the string should just call
1440 the method.
1444 the method.
1441
1445
1442 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1446 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1443
1447
1444 * IPython/Magic.py (magic_edit): fix check for when users don't
1448 * IPython/Magic.py (magic_edit): fix check for when users don't
1445 save their output files, the try/except was in the wrong section.
1449 save their output files, the try/except was in the wrong section.
1446
1450
1447 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1451 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1448
1452
1449 * IPython/Magic.py (magic_run): fix __file__ global missing from
1453 * IPython/Magic.py (magic_run): fix __file__ global missing from
1450 script's namespace when executed via %run. After a report by
1454 script's namespace when executed via %run. After a report by
1451 Vivian.
1455 Vivian.
1452
1456
1453 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1457 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1454 when using python 2.4. The parent constructor changed in 2.4, and
1458 when using python 2.4. The parent constructor changed in 2.4, and
1455 we need to track it directly (we can't call it, as it messes up
1459 we need to track it directly (we can't call it, as it messes up
1456 readline and tab-completion inside our pdb would stop working).
1460 readline and tab-completion inside our pdb would stop working).
1457 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1461 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1458
1462
1459 2006-01-16 Ville Vainio <vivainio@gmail.com>
1463 2006-01-16 Ville Vainio <vivainio@gmail.com>
1460
1464
1461 * Ipython/magic.py: Reverted back to old %edit functionality
1465 * Ipython/magic.py: Reverted back to old %edit functionality
1462 that returns file contents on exit.
1466 that returns file contents on exit.
1463
1467
1464 * IPython/path.py: Added Jason Orendorff's "path" module to
1468 * IPython/path.py: Added Jason Orendorff's "path" module to
1465 IPython tree, http://www.jorendorff.com/articles/python/path/.
1469 IPython tree, http://www.jorendorff.com/articles/python/path/.
1466 You can get path objects conveniently through %sc, and !!, e.g.:
1470 You can get path objects conveniently through %sc, and !!, e.g.:
1467 sc files=ls
1471 sc files=ls
1468 for p in files.paths: # or files.p
1472 for p in files.paths: # or files.p
1469 print p,p.mtime
1473 print p,p.mtime
1470
1474
1471 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1475 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1472 now work again without considering the exclusion regexp -
1476 now work again without considering the exclusion regexp -
1473 hence, things like ',foo my/path' turn to 'foo("my/path")'
1477 hence, things like ',foo my/path' turn to 'foo("my/path")'
1474 instead of syntax error.
1478 instead of syntax error.
1475
1479
1476
1480
1477 2006-01-14 Ville Vainio <vivainio@gmail.com>
1481 2006-01-14 Ville Vainio <vivainio@gmail.com>
1478
1482
1479 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1483 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1480 ipapi decorators for python 2.4 users, options() provides access to rc
1484 ipapi decorators for python 2.4 users, options() provides access to rc
1481 data.
1485 data.
1482
1486
1483 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1487 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1484 as path separators (even on Linux ;-). Space character after
1488 as path separators (even on Linux ;-). Space character after
1485 backslash (as yielded by tab completer) is still space;
1489 backslash (as yielded by tab completer) is still space;
1486 "%cd long\ name" works as expected.
1490 "%cd long\ name" works as expected.
1487
1491
1488 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1492 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1489 as "chain of command", with priority. API stays the same,
1493 as "chain of command", with priority. API stays the same,
1490 TryNext exception raised by a hook function signals that
1494 TryNext exception raised by a hook function signals that
1491 current hook failed and next hook should try handling it, as
1495 current hook failed and next hook should try handling it, as
1492 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1496 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1493 requested configurable display hook, which is now implemented.
1497 requested configurable display hook, which is now implemented.
1494
1498
1495 2006-01-13 Ville Vainio <vivainio@gmail.com>
1499 2006-01-13 Ville Vainio <vivainio@gmail.com>
1496
1500
1497 * IPython/platutils*.py: platform specific utility functions,
1501 * IPython/platutils*.py: platform specific utility functions,
1498 so far only set_term_title is implemented (change terminal
1502 so far only set_term_title is implemented (change terminal
1499 label in windowing systems). %cd now changes the title to
1503 label in windowing systems). %cd now changes the title to
1500 current dir.
1504 current dir.
1501
1505
1502 * IPython/Release.py: Added myself to "authors" list,
1506 * IPython/Release.py: Added myself to "authors" list,
1503 had to create new files.
1507 had to create new files.
1504
1508
1505 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1509 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1506 shell escape; not a known bug but had potential to be one in the
1510 shell escape; not a known bug but had potential to be one in the
1507 future.
1511 future.
1508
1512
1509 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1513 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1510 extension API for IPython! See the module for usage example. Fix
1514 extension API for IPython! See the module for usage example. Fix
1511 OInspect for docstring-less magic functions.
1515 OInspect for docstring-less magic functions.
1512
1516
1513
1517
1514 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1518 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1515
1519
1516 * IPython/iplib.py (raw_input): temporarily deactivate all
1520 * IPython/iplib.py (raw_input): temporarily deactivate all
1517 attempts at allowing pasting of code with autoindent on. It
1521 attempts at allowing pasting of code with autoindent on. It
1518 introduced bugs (reported by Prabhu) and I can't seem to find a
1522 introduced bugs (reported by Prabhu) and I can't seem to find a
1519 robust combination which works in all cases. Will have to revisit
1523 robust combination which works in all cases. Will have to revisit
1520 later.
1524 later.
1521
1525
1522 * IPython/genutils.py: remove isspace() function. We've dropped
1526 * IPython/genutils.py: remove isspace() function. We've dropped
1523 2.2 compatibility, so it's OK to use the string method.
1527 2.2 compatibility, so it's OK to use the string method.
1524
1528
1525 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1529 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1526
1530
1527 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1531 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1528 matching what NOT to autocall on, to include all python binary
1532 matching what NOT to autocall on, to include all python binary
1529 operators (including things like 'and', 'or', 'is' and 'in').
1533 operators (including things like 'and', 'or', 'is' and 'in').
1530 Prompted by a bug report on 'foo & bar', but I realized we had
1534 Prompted by a bug report on 'foo & bar', but I realized we had
1531 many more potential bug cases with other operators. The regexp is
1535 many more potential bug cases with other operators. The regexp is
1532 self.re_exclude_auto, it's fairly commented.
1536 self.re_exclude_auto, it's fairly commented.
1533
1537
1534 2006-01-12 Ville Vainio <vivainio@gmail.com>
1538 2006-01-12 Ville Vainio <vivainio@gmail.com>
1535
1539
1536 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1540 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1537 Prettified and hardened string/backslash quoting with ipsystem(),
1541 Prettified and hardened string/backslash quoting with ipsystem(),
1538 ipalias() and ipmagic(). Now even \ characters are passed to
1542 ipalias() and ipmagic(). Now even \ characters are passed to
1539 %magics, !shell escapes and aliases exactly as they are in the
1543 %magics, !shell escapes and aliases exactly as they are in the
1540 ipython command line. Should improve backslash experience,
1544 ipython command line. Should improve backslash experience,
1541 particularly in Windows (path delimiter for some commands that
1545 particularly in Windows (path delimiter for some commands that
1542 won't understand '/'), but Unix benefits as well (regexps). %cd
1546 won't understand '/'), but Unix benefits as well (regexps). %cd
1543 magic still doesn't support backslash path delimiters, though. Also
1547 magic still doesn't support backslash path delimiters, though. Also
1544 deleted all pretense of supporting multiline command strings in
1548 deleted all pretense of supporting multiline command strings in
1545 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1549 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1546
1550
1547 * doc/build_doc_instructions.txt added. Documentation on how to
1551 * doc/build_doc_instructions.txt added. Documentation on how to
1548 use doc/update_manual.py, added yesterday. Both files contributed
1552 use doc/update_manual.py, added yesterday. Both files contributed
1549 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1553 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1550 doc/*.sh for deprecation at a later date.
1554 doc/*.sh for deprecation at a later date.
1551
1555
1552 * /ipython.py Added ipython.py to root directory for
1556 * /ipython.py Added ipython.py to root directory for
1553 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1557 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1554 ipython.py) and development convenience (no need to keep doing
1558 ipython.py) and development convenience (no need to keep doing
1555 "setup.py install" between changes).
1559 "setup.py install" between changes).
1556
1560
1557 * Made ! and !! shell escapes work (again) in multiline expressions:
1561 * Made ! and !! shell escapes work (again) in multiline expressions:
1558 if 1:
1562 if 1:
1559 !ls
1563 !ls
1560 !!ls
1564 !!ls
1561
1565
1562 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1566 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1563
1567
1564 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1568 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1565 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1569 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1566 module in case-insensitive installation. Was causing crashes
1570 module in case-insensitive installation. Was causing crashes
1567 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1571 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1568
1572
1569 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1573 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1570 <marienz-AT-gentoo.org>, closes
1574 <marienz-AT-gentoo.org>, closes
1571 http://www.scipy.net/roundup/ipython/issue51.
1575 http://www.scipy.net/roundup/ipython/issue51.
1572
1576
1573 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1577 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1574
1578
1575 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1579 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1576 problem of excessive CPU usage under *nix and keyboard lag under
1580 problem of excessive CPU usage under *nix and keyboard lag under
1577 win32.
1581 win32.
1578
1582
1579 2006-01-10 *** Released version 0.7.0
1583 2006-01-10 *** Released version 0.7.0
1580
1584
1581 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1585 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1582
1586
1583 * IPython/Release.py (revision): tag version number to 0.7.0,
1587 * IPython/Release.py (revision): tag version number to 0.7.0,
1584 ready for release.
1588 ready for release.
1585
1589
1586 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1590 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1587 it informs the user of the name of the temp. file used. This can
1591 it informs the user of the name of the temp. file used. This can
1588 help if you decide later to reuse that same file, so you know
1592 help if you decide later to reuse that same file, so you know
1589 where to copy the info from.
1593 where to copy the info from.
1590
1594
1591 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1595 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1592
1596
1593 * setup_bdist_egg.py: little script to build an egg. Added
1597 * setup_bdist_egg.py: little script to build an egg. Added
1594 support in the release tools as well.
1598 support in the release tools as well.
1595
1599
1596 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1600 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1597
1601
1598 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1602 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1599 version selection (new -wxversion command line and ipythonrc
1603 version selection (new -wxversion command line and ipythonrc
1600 parameter). Patch contributed by Arnd Baecker
1604 parameter). Patch contributed by Arnd Baecker
1601 <arnd.baecker-AT-web.de>.
1605 <arnd.baecker-AT-web.de>.
1602
1606
1603 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1607 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1604 embedded instances, for variables defined at the interactive
1608 embedded instances, for variables defined at the interactive
1605 prompt of the embedded ipython. Reported by Arnd.
1609 prompt of the embedded ipython. Reported by Arnd.
1606
1610
1607 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1611 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1608 it can be used as a (stateful) toggle, or with a direct parameter.
1612 it can be used as a (stateful) toggle, or with a direct parameter.
1609
1613
1610 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1614 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1611 could be triggered in certain cases and cause the traceback
1615 could be triggered in certain cases and cause the traceback
1612 printer not to work.
1616 printer not to work.
1613
1617
1614 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1618 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1615
1619
1616 * IPython/iplib.py (_should_recompile): Small fix, closes
1620 * IPython/iplib.py (_should_recompile): Small fix, closes
1617 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1621 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1618
1622
1619 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1623 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1620
1624
1621 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1625 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1622 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1626 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1623 Moad for help with tracking it down.
1627 Moad for help with tracking it down.
1624
1628
1625 * IPython/iplib.py (handle_auto): fix autocall handling for
1629 * IPython/iplib.py (handle_auto): fix autocall handling for
1626 objects which support BOTH __getitem__ and __call__ (so that f [x]
1630 objects which support BOTH __getitem__ and __call__ (so that f [x]
1627 is left alone, instead of becoming f([x]) automatically).
1631 is left alone, instead of becoming f([x]) automatically).
1628
1632
1629 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1633 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1630 Ville's patch.
1634 Ville's patch.
1631
1635
1632 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1636 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1633
1637
1634 * IPython/iplib.py (handle_auto): changed autocall semantics to
1638 * IPython/iplib.py (handle_auto): changed autocall semantics to
1635 include 'smart' mode, where the autocall transformation is NOT
1639 include 'smart' mode, where the autocall transformation is NOT
1636 applied if there are no arguments on the line. This allows you to
1640 applied if there are no arguments on the line. This allows you to
1637 just type 'foo' if foo is a callable to see its internal form,
1641 just type 'foo' if foo is a callable to see its internal form,
1638 instead of having it called with no arguments (typically a
1642 instead of having it called with no arguments (typically a
1639 mistake). The old 'full' autocall still exists: for that, you
1643 mistake). The old 'full' autocall still exists: for that, you
1640 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1644 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1641
1645
1642 * IPython/completer.py (Completer.attr_matches): add
1646 * IPython/completer.py (Completer.attr_matches): add
1643 tab-completion support for Enthoughts' traits. After a report by
1647 tab-completion support for Enthoughts' traits. After a report by
1644 Arnd and a patch by Prabhu.
1648 Arnd and a patch by Prabhu.
1645
1649
1646 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1650 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1647
1651
1648 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1652 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1649 Schmolck's patch to fix inspect.getinnerframes().
1653 Schmolck's patch to fix inspect.getinnerframes().
1650
1654
1651 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1655 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1652 for embedded instances, regarding handling of namespaces and items
1656 for embedded instances, regarding handling of namespaces and items
1653 added to the __builtin__ one. Multiple embedded instances and
1657 added to the __builtin__ one. Multiple embedded instances and
1654 recursive embeddings should work better now (though I'm not sure
1658 recursive embeddings should work better now (though I'm not sure
1655 I've got all the corner cases fixed, that code is a bit of a brain
1659 I've got all the corner cases fixed, that code is a bit of a brain
1656 twister).
1660 twister).
1657
1661
1658 * IPython/Magic.py (magic_edit): added support to edit in-memory
1662 * IPython/Magic.py (magic_edit): added support to edit in-memory
1659 macros (automatically creates the necessary temp files). %edit
1663 macros (automatically creates the necessary temp files). %edit
1660 also doesn't return the file contents anymore, it's just noise.
1664 also doesn't return the file contents anymore, it's just noise.
1661
1665
1662 * IPython/completer.py (Completer.attr_matches): revert change to
1666 * IPython/completer.py (Completer.attr_matches): revert change to
1663 complete only on attributes listed in __all__. I realized it
1667 complete only on attributes listed in __all__. I realized it
1664 cripples the tab-completion system as a tool for exploring the
1668 cripples the tab-completion system as a tool for exploring the
1665 internals of unknown libraries (it renders any non-__all__
1669 internals of unknown libraries (it renders any non-__all__
1666 attribute off-limits). I got bit by this when trying to see
1670 attribute off-limits). I got bit by this when trying to see
1667 something inside the dis module.
1671 something inside the dis module.
1668
1672
1669 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1673 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1670
1674
1671 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1675 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1672 namespace for users and extension writers to hold data in. This
1676 namespace for users and extension writers to hold data in. This
1673 follows the discussion in
1677 follows the discussion in
1674 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1678 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1675
1679
1676 * IPython/completer.py (IPCompleter.complete): small patch to help
1680 * IPython/completer.py (IPCompleter.complete): small patch to help
1677 tab-completion under Emacs, after a suggestion by John Barnard
1681 tab-completion under Emacs, after a suggestion by John Barnard
1678 <barnarj-AT-ccf.org>.
1682 <barnarj-AT-ccf.org>.
1679
1683
1680 * IPython/Magic.py (Magic.extract_input_slices): added support for
1684 * IPython/Magic.py (Magic.extract_input_slices): added support for
1681 the slice notation in magics to use N-M to represent numbers N...M
1685 the slice notation in magics to use N-M to represent numbers N...M
1682 (closed endpoints). This is used by %macro and %save.
1686 (closed endpoints). This is used by %macro and %save.
1683
1687
1684 * IPython/completer.py (Completer.attr_matches): for modules which
1688 * IPython/completer.py (Completer.attr_matches): for modules which
1685 define __all__, complete only on those. After a patch by Jeffrey
1689 define __all__, complete only on those. After a patch by Jeffrey
1686 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1690 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1687 speed up this routine.
1691 speed up this routine.
1688
1692
1689 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1693 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1690 don't know if this is the end of it, but the behavior now is
1694 don't know if this is the end of it, but the behavior now is
1691 certainly much more correct. Note that coupled with macros,
1695 certainly much more correct. Note that coupled with macros,
1692 slightly surprising (at first) behavior may occur: a macro will in
1696 slightly surprising (at first) behavior may occur: a macro will in
1693 general expand to multiple lines of input, so upon exiting, the
1697 general expand to multiple lines of input, so upon exiting, the
1694 in/out counters will both be bumped by the corresponding amount
1698 in/out counters will both be bumped by the corresponding amount
1695 (as if the macro's contents had been typed interactively). Typing
1699 (as if the macro's contents had been typed interactively). Typing
1696 %hist will reveal the intermediate (silently processed) lines.
1700 %hist will reveal the intermediate (silently processed) lines.
1697
1701
1698 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1702 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1699 pickle to fail (%run was overwriting __main__ and not restoring
1703 pickle to fail (%run was overwriting __main__ and not restoring
1700 it, but pickle relies on __main__ to operate).
1704 it, but pickle relies on __main__ to operate).
1701
1705
1702 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1706 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1703 using properties, but forgot to make the main InteractiveShell
1707 using properties, but forgot to make the main InteractiveShell
1704 class a new-style class. Properties fail silently, and
1708 class a new-style class. Properties fail silently, and
1705 mysteriously, with old-style class (getters work, but
1709 mysteriously, with old-style class (getters work, but
1706 setters don't do anything).
1710 setters don't do anything).
1707
1711
1708 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1712 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1709
1713
1710 * IPython/Magic.py (magic_history): fix history reporting bug (I
1714 * IPython/Magic.py (magic_history): fix history reporting bug (I
1711 know some nasties are still there, I just can't seem to find a
1715 know some nasties are still there, I just can't seem to find a
1712 reproducible test case to track them down; the input history is
1716 reproducible test case to track them down; the input history is
1713 falling out of sync...)
1717 falling out of sync...)
1714
1718
1715 * IPython/iplib.py (handle_shell_escape): fix bug where both
1719 * IPython/iplib.py (handle_shell_escape): fix bug where both
1716 aliases and system accesses where broken for indented code (such
1720 aliases and system accesses where broken for indented code (such
1717 as loops).
1721 as loops).
1718
1722
1719 * IPython/genutils.py (shell): fix small but critical bug for
1723 * IPython/genutils.py (shell): fix small but critical bug for
1720 win32 system access.
1724 win32 system access.
1721
1725
1722 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1726 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1723
1727
1724 * IPython/iplib.py (showtraceback): remove use of the
1728 * IPython/iplib.py (showtraceback): remove use of the
1725 sys.last_{type/value/traceback} structures, which are non
1729 sys.last_{type/value/traceback} structures, which are non
1726 thread-safe.
1730 thread-safe.
1727 (_prefilter): change control flow to ensure that we NEVER
1731 (_prefilter): change control flow to ensure that we NEVER
1728 introspect objects when autocall is off. This will guarantee that
1732 introspect objects when autocall is off. This will guarantee that
1729 having an input line of the form 'x.y', where access to attribute
1733 having an input line of the form 'x.y', where access to attribute
1730 'y' has side effects, doesn't trigger the side effect TWICE. It
1734 'y' has side effects, doesn't trigger the side effect TWICE. It
1731 is important to note that, with autocall on, these side effects
1735 is important to note that, with autocall on, these side effects
1732 can still happen.
1736 can still happen.
1733 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1737 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1734 trio. IPython offers these three kinds of special calls which are
1738 trio. IPython offers these three kinds of special calls which are
1735 not python code, and it's a good thing to have their call method
1739 not python code, and it's a good thing to have their call method
1736 be accessible as pure python functions (not just special syntax at
1740 be accessible as pure python functions (not just special syntax at
1737 the command line). It gives us a better internal implementation
1741 the command line). It gives us a better internal implementation
1738 structure, as well as exposing these for user scripting more
1742 structure, as well as exposing these for user scripting more
1739 cleanly.
1743 cleanly.
1740
1744
1741 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1745 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1742 file. Now that they'll be more likely to be used with the
1746 file. Now that they'll be more likely to be used with the
1743 persistance system (%store), I want to make sure their module path
1747 persistance system (%store), I want to make sure their module path
1744 doesn't change in the future, so that we don't break things for
1748 doesn't change in the future, so that we don't break things for
1745 users' persisted data.
1749 users' persisted data.
1746
1750
1747 * IPython/iplib.py (autoindent_update): move indentation
1751 * IPython/iplib.py (autoindent_update): move indentation
1748 management into the _text_ processing loop, not the keyboard
1752 management into the _text_ processing loop, not the keyboard
1749 interactive one. This is necessary to correctly process non-typed
1753 interactive one. This is necessary to correctly process non-typed
1750 multiline input (such as macros).
1754 multiline input (such as macros).
1751
1755
1752 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1756 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1753 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1757 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1754 which was producing problems in the resulting manual.
1758 which was producing problems in the resulting manual.
1755 (magic_whos): improve reporting of instances (show their class,
1759 (magic_whos): improve reporting of instances (show their class,
1756 instead of simply printing 'instance' which isn't terribly
1760 instead of simply printing 'instance' which isn't terribly
1757 informative).
1761 informative).
1758
1762
1759 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1763 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1760 (minor mods) to support network shares under win32.
1764 (minor mods) to support network shares under win32.
1761
1765
1762 * IPython/winconsole.py (get_console_size): add new winconsole
1766 * IPython/winconsole.py (get_console_size): add new winconsole
1763 module and fixes to page_dumb() to improve its behavior under
1767 module and fixes to page_dumb() to improve its behavior under
1764 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1768 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1765
1769
1766 * IPython/Magic.py (Macro): simplified Macro class to just
1770 * IPython/Magic.py (Macro): simplified Macro class to just
1767 subclass list. We've had only 2.2 compatibility for a very long
1771 subclass list. We've had only 2.2 compatibility for a very long
1768 time, yet I was still avoiding subclassing the builtin types. No
1772 time, yet I was still avoiding subclassing the builtin types. No
1769 more (I'm also starting to use properties, though I won't shift to
1773 more (I'm also starting to use properties, though I won't shift to
1770 2.3-specific features quite yet).
1774 2.3-specific features quite yet).
1771 (magic_store): added Ville's patch for lightweight variable
1775 (magic_store): added Ville's patch for lightweight variable
1772 persistence, after a request on the user list by Matt Wilkie
1776 persistence, after a request on the user list by Matt Wilkie
1773 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1777 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1774 details.
1778 details.
1775
1779
1776 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1780 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1777 changed the default logfile name from 'ipython.log' to
1781 changed the default logfile name from 'ipython.log' to
1778 'ipython_log.py'. These logs are real python files, and now that
1782 'ipython_log.py'. These logs are real python files, and now that
1779 we have much better multiline support, people are more likely to
1783 we have much better multiline support, people are more likely to
1780 want to use them as such. Might as well name them correctly.
1784 want to use them as such. Might as well name them correctly.
1781
1785
1782 * IPython/Magic.py: substantial cleanup. While we can't stop
1786 * IPython/Magic.py: substantial cleanup. While we can't stop
1783 using magics as mixins, due to the existing customizations 'out
1787 using magics as mixins, due to the existing customizations 'out
1784 there' which rely on the mixin naming conventions, at least I
1788 there' which rely on the mixin naming conventions, at least I
1785 cleaned out all cross-class name usage. So once we are OK with
1789 cleaned out all cross-class name usage. So once we are OK with
1786 breaking compatibility, the two systems can be separated.
1790 breaking compatibility, the two systems can be separated.
1787
1791
1788 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1792 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1789 anymore, and the class is a fair bit less hideous as well. New
1793 anymore, and the class is a fair bit less hideous as well. New
1790 features were also introduced: timestamping of input, and logging
1794 features were also introduced: timestamping of input, and logging
1791 of output results. These are user-visible with the -t and -o
1795 of output results. These are user-visible with the -t and -o
1792 options to %logstart. Closes
1796 options to %logstart. Closes
1793 http://www.scipy.net/roundup/ipython/issue11 and a request by
1797 http://www.scipy.net/roundup/ipython/issue11 and a request by
1794 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1798 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1795
1799
1796 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1800 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1797
1801
1798 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1802 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1799 better handle backslashes in paths. See the thread 'More Windows
1803 better handle backslashes in paths. See the thread 'More Windows
1800 questions part 2 - \/ characters revisited' on the iypthon user
1804 questions part 2 - \/ characters revisited' on the iypthon user
1801 list:
1805 list:
1802 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1806 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1803
1807
1804 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1808 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1805
1809
1806 (InteractiveShell.__init__): change threaded shells to not use the
1810 (InteractiveShell.__init__): change threaded shells to not use the
1807 ipython crash handler. This was causing more problems than not,
1811 ipython crash handler. This was causing more problems than not,
1808 as exceptions in the main thread (GUI code, typically) would
1812 as exceptions in the main thread (GUI code, typically) would
1809 always show up as a 'crash', when they really weren't.
1813 always show up as a 'crash', when they really weren't.
1810
1814
1811 The colors and exception mode commands (%colors/%xmode) have been
1815 The colors and exception mode commands (%colors/%xmode) have been
1812 synchronized to also take this into account, so users can get
1816 synchronized to also take this into account, so users can get
1813 verbose exceptions for their threaded code as well. I also added
1817 verbose exceptions for their threaded code as well. I also added
1814 support for activating pdb inside this exception handler as well,
1818 support for activating pdb inside this exception handler as well,
1815 so now GUI authors can use IPython's enhanced pdb at runtime.
1819 so now GUI authors can use IPython's enhanced pdb at runtime.
1816
1820
1817 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1821 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1818 true by default, and add it to the shipped ipythonrc file. Since
1822 true by default, and add it to the shipped ipythonrc file. Since
1819 this asks the user before proceeding, I think it's OK to make it
1823 this asks the user before proceeding, I think it's OK to make it
1820 true by default.
1824 true by default.
1821
1825
1822 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1826 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1823 of the previous special-casing of input in the eval loop. I think
1827 of the previous special-casing of input in the eval loop. I think
1824 this is cleaner, as they really are commands and shouldn't have
1828 this is cleaner, as they really are commands and shouldn't have
1825 a special role in the middle of the core code.
1829 a special role in the middle of the core code.
1826
1830
1827 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1831 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1828
1832
1829 * IPython/iplib.py (edit_syntax_error): added support for
1833 * IPython/iplib.py (edit_syntax_error): added support for
1830 automatically reopening the editor if the file had a syntax error
1834 automatically reopening the editor if the file had a syntax error
1831 in it. Thanks to scottt who provided the patch at:
1835 in it. Thanks to scottt who provided the patch at:
1832 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1836 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1833 version committed).
1837 version committed).
1834
1838
1835 * IPython/iplib.py (handle_normal): add suport for multi-line
1839 * IPython/iplib.py (handle_normal): add suport for multi-line
1836 input with emtpy lines. This fixes
1840 input with emtpy lines. This fixes
1837 http://www.scipy.net/roundup/ipython/issue43 and a similar
1841 http://www.scipy.net/roundup/ipython/issue43 and a similar
1838 discussion on the user list.
1842 discussion on the user list.
1839
1843
1840 WARNING: a behavior change is necessarily introduced to support
1844 WARNING: a behavior change is necessarily introduced to support
1841 blank lines: now a single blank line with whitespace does NOT
1845 blank lines: now a single blank line with whitespace does NOT
1842 break the input loop, which means that when autoindent is on, by
1846 break the input loop, which means that when autoindent is on, by
1843 default hitting return on the next (indented) line does NOT exit.
1847 default hitting return on the next (indented) line does NOT exit.
1844
1848
1845 Instead, to exit a multiline input you can either have:
1849 Instead, to exit a multiline input you can either have:
1846
1850
1847 - TWO whitespace lines (just hit return again), or
1851 - TWO whitespace lines (just hit return again), or
1848 - a single whitespace line of a different length than provided
1852 - a single whitespace line of a different length than provided
1849 by the autoindent (add or remove a space).
1853 by the autoindent (add or remove a space).
1850
1854
1851 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1855 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1852 module to better organize all readline-related functionality.
1856 module to better organize all readline-related functionality.
1853 I've deleted FlexCompleter and put all completion clases here.
1857 I've deleted FlexCompleter and put all completion clases here.
1854
1858
1855 * IPython/iplib.py (raw_input): improve indentation management.
1859 * IPython/iplib.py (raw_input): improve indentation management.
1856 It is now possible to paste indented code with autoindent on, and
1860 It is now possible to paste indented code with autoindent on, and
1857 the code is interpreted correctly (though it still looks bad on
1861 the code is interpreted correctly (though it still looks bad on
1858 screen, due to the line-oriented nature of ipython).
1862 screen, due to the line-oriented nature of ipython).
1859 (MagicCompleter.complete): change behavior so that a TAB key on an
1863 (MagicCompleter.complete): change behavior so that a TAB key on an
1860 otherwise empty line actually inserts a tab, instead of completing
1864 otherwise empty line actually inserts a tab, instead of completing
1861 on the entire global namespace. This makes it easier to use the
1865 on the entire global namespace. This makes it easier to use the
1862 TAB key for indentation. After a request by Hans Meine
1866 TAB key for indentation. After a request by Hans Meine
1863 <hans_meine-AT-gmx.net>
1867 <hans_meine-AT-gmx.net>
1864 (_prefilter): add support so that typing plain 'exit' or 'quit'
1868 (_prefilter): add support so that typing plain 'exit' or 'quit'
1865 does a sensible thing. Originally I tried to deviate as little as
1869 does a sensible thing. Originally I tried to deviate as little as
1866 possible from the default python behavior, but even that one may
1870 possible from the default python behavior, but even that one may
1867 change in this direction (thread on python-dev to that effect).
1871 change in this direction (thread on python-dev to that effect).
1868 Regardless, ipython should do the right thing even if CPython's
1872 Regardless, ipython should do the right thing even if CPython's
1869 '>>>' prompt doesn't.
1873 '>>>' prompt doesn't.
1870 (InteractiveShell): removed subclassing code.InteractiveConsole
1874 (InteractiveShell): removed subclassing code.InteractiveConsole
1871 class. By now we'd overridden just about all of its methods: I've
1875 class. By now we'd overridden just about all of its methods: I've
1872 copied the remaining two over, and now ipython is a standalone
1876 copied the remaining two over, and now ipython is a standalone
1873 class. This will provide a clearer picture for the chainsaw
1877 class. This will provide a clearer picture for the chainsaw
1874 branch refactoring.
1878 branch refactoring.
1875
1879
1876 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1880 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1877
1881
1878 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1882 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1879 failures for objects which break when dir() is called on them.
1883 failures for objects which break when dir() is called on them.
1880
1884
1881 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1885 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1882 distinct local and global namespaces in the completer API. This
1886 distinct local and global namespaces in the completer API. This
1883 change allows us to properly handle completion with distinct
1887 change allows us to properly handle completion with distinct
1884 scopes, including in embedded instances (this had never really
1888 scopes, including in embedded instances (this had never really
1885 worked correctly).
1889 worked correctly).
1886
1890
1887 Note: this introduces a change in the constructor for
1891 Note: this introduces a change in the constructor for
1888 MagicCompleter, as a new global_namespace parameter is now the
1892 MagicCompleter, as a new global_namespace parameter is now the
1889 second argument (the others were bumped one position).
1893 second argument (the others were bumped one position).
1890
1894
1891 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1895 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1892
1896
1893 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1897 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1894 embedded instances (which can be done now thanks to Vivian's
1898 embedded instances (which can be done now thanks to Vivian's
1895 frame-handling fixes for pdb).
1899 frame-handling fixes for pdb).
1896 (InteractiveShell.__init__): Fix namespace handling problem in
1900 (InteractiveShell.__init__): Fix namespace handling problem in
1897 embedded instances. We were overwriting __main__ unconditionally,
1901 embedded instances. We were overwriting __main__ unconditionally,
1898 and this should only be done for 'full' (non-embedded) IPython;
1902 and this should only be done for 'full' (non-embedded) IPython;
1899 embedded instances must respect the caller's __main__. Thanks to
1903 embedded instances must respect the caller's __main__. Thanks to
1900 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1904 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1901
1905
1902 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1906 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1903
1907
1904 * setup.py: added download_url to setup(). This registers the
1908 * setup.py: added download_url to setup(). This registers the
1905 download address at PyPI, which is not only useful to humans
1909 download address at PyPI, which is not only useful to humans
1906 browsing the site, but is also picked up by setuptools (the Eggs
1910 browsing the site, but is also picked up by setuptools (the Eggs
1907 machinery). Thanks to Ville and R. Kern for the info/discussion
1911 machinery). Thanks to Ville and R. Kern for the info/discussion
1908 on this.
1912 on this.
1909
1913
1910 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1914 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1911
1915
1912 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1916 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1913 This brings a lot of nice functionality to the pdb mode, which now
1917 This brings a lot of nice functionality to the pdb mode, which now
1914 has tab-completion, syntax highlighting, and better stack handling
1918 has tab-completion, syntax highlighting, and better stack handling
1915 than before. Many thanks to Vivian De Smedt
1919 than before. Many thanks to Vivian De Smedt
1916 <vivian-AT-vdesmedt.com> for the original patches.
1920 <vivian-AT-vdesmedt.com> for the original patches.
1917
1921
1918 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1922 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1919
1923
1920 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1924 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1921 sequence to consistently accept the banner argument. The
1925 sequence to consistently accept the banner argument. The
1922 inconsistency was tripping SAGE, thanks to Gary Zablackis
1926 inconsistency was tripping SAGE, thanks to Gary Zablackis
1923 <gzabl-AT-yahoo.com> for the report.
1927 <gzabl-AT-yahoo.com> for the report.
1924
1928
1925 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1929 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1926
1930
1927 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1931 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1928 Fix bug where a naked 'alias' call in the ipythonrc file would
1932 Fix bug where a naked 'alias' call in the ipythonrc file would
1929 cause a crash. Bug reported by Jorgen Stenarson.
1933 cause a crash. Bug reported by Jorgen Stenarson.
1930
1934
1931 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1935 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1932
1936
1933 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1937 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1934 startup time.
1938 startup time.
1935
1939
1936 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1940 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1937 instances had introduced a bug with globals in normal code. Now
1941 instances had introduced a bug with globals in normal code. Now
1938 it's working in all cases.
1942 it's working in all cases.
1939
1943
1940 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1944 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1941 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1945 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1942 has been introduced to set the default case sensitivity of the
1946 has been introduced to set the default case sensitivity of the
1943 searches. Users can still select either mode at runtime on a
1947 searches. Users can still select either mode at runtime on a
1944 per-search basis.
1948 per-search basis.
1945
1949
1946 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1950 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1947
1951
1948 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1952 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1949 attributes in wildcard searches for subclasses. Modified version
1953 attributes in wildcard searches for subclasses. Modified version
1950 of a patch by Jorgen.
1954 of a patch by Jorgen.
1951
1955
1952 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1956 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1953
1957
1954 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1958 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1955 embedded instances. I added a user_global_ns attribute to the
1959 embedded instances. I added a user_global_ns attribute to the
1956 InteractiveShell class to handle this.
1960 InteractiveShell class to handle this.
1957
1961
1958 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1962 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1959
1963
1960 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1964 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1961 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1965 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1962 (reported under win32, but may happen also in other platforms).
1966 (reported under win32, but may happen also in other platforms).
1963 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1967 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1964
1968
1965 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1969 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1966
1970
1967 * IPython/Magic.py (magic_psearch): new support for wildcard
1971 * IPython/Magic.py (magic_psearch): new support for wildcard
1968 patterns. Now, typing ?a*b will list all names which begin with a
1972 patterns. Now, typing ?a*b will list all names which begin with a
1969 and end in b, for example. The %psearch magic has full
1973 and end in b, for example. The %psearch magic has full
1970 docstrings. Many thanks to JΓΆrgen Stenarson
1974 docstrings. Many thanks to JΓΆrgen Stenarson
1971 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1975 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1972 implementing this functionality.
1976 implementing this functionality.
1973
1977
1974 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1978 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1975
1979
1976 * Manual: fixed long-standing annoyance of double-dashes (as in
1980 * Manual: fixed long-standing annoyance of double-dashes (as in
1977 --prefix=~, for example) being stripped in the HTML version. This
1981 --prefix=~, for example) being stripped in the HTML version. This
1978 is a latex2html bug, but a workaround was provided. Many thanks
1982 is a latex2html bug, but a workaround was provided. Many thanks
1979 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1983 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1980 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1984 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1981 rolling. This seemingly small issue had tripped a number of users
1985 rolling. This seemingly small issue had tripped a number of users
1982 when first installing, so I'm glad to see it gone.
1986 when first installing, so I'm glad to see it gone.
1983
1987
1984 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1988 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1985
1989
1986 * IPython/Extensions/numeric_formats.py: fix missing import,
1990 * IPython/Extensions/numeric_formats.py: fix missing import,
1987 reported by Stephen Walton.
1991 reported by Stephen Walton.
1988
1992
1989 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1993 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1990
1994
1991 * IPython/demo.py: finish demo module, fully documented now.
1995 * IPython/demo.py: finish demo module, fully documented now.
1992
1996
1993 * IPython/genutils.py (file_read): simple little utility to read a
1997 * IPython/genutils.py (file_read): simple little utility to read a
1994 file and ensure it's closed afterwards.
1998 file and ensure it's closed afterwards.
1995
1999
1996 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2000 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1997
2001
1998 * IPython/demo.py (Demo.__init__): added support for individually
2002 * IPython/demo.py (Demo.__init__): added support for individually
1999 tagging blocks for automatic execution.
2003 tagging blocks for automatic execution.
2000
2004
2001 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2005 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2002 syntax-highlighted python sources, requested by John.
2006 syntax-highlighted python sources, requested by John.
2003
2007
2004 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2008 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2005
2009
2006 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2010 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2007 finishing.
2011 finishing.
2008
2012
2009 * IPython/genutils.py (shlex_split): moved from Magic to here,
2013 * IPython/genutils.py (shlex_split): moved from Magic to here,
2010 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2014 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2011
2015
2012 * IPython/demo.py (Demo.__init__): added support for silent
2016 * IPython/demo.py (Demo.__init__): added support for silent
2013 blocks, improved marks as regexps, docstrings written.
2017 blocks, improved marks as regexps, docstrings written.
2014 (Demo.__init__): better docstring, added support for sys.argv.
2018 (Demo.__init__): better docstring, added support for sys.argv.
2015
2019
2016 * IPython/genutils.py (marquee): little utility used by the demo
2020 * IPython/genutils.py (marquee): little utility used by the demo
2017 code, handy in general.
2021 code, handy in general.
2018
2022
2019 * IPython/demo.py (Demo.__init__): new class for interactive
2023 * IPython/demo.py (Demo.__init__): new class for interactive
2020 demos. Not documented yet, I just wrote it in a hurry for
2024 demos. Not documented yet, I just wrote it in a hurry for
2021 scipy'05. Will docstring later.
2025 scipy'05. Will docstring later.
2022
2026
2023 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2027 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2024
2028
2025 * IPython/Shell.py (sigint_handler): Drastic simplification which
2029 * IPython/Shell.py (sigint_handler): Drastic simplification which
2026 also seems to make Ctrl-C work correctly across threads! This is
2030 also seems to make Ctrl-C work correctly across threads! This is
2027 so simple, that I can't beleive I'd missed it before. Needs more
2031 so simple, that I can't beleive I'd missed it before. Needs more
2028 testing, though.
2032 testing, though.
2029 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2033 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2030 like this before...
2034 like this before...
2031
2035
2032 * IPython/genutils.py (get_home_dir): add protection against
2036 * IPython/genutils.py (get_home_dir): add protection against
2033 non-dirs in win32 registry.
2037 non-dirs in win32 registry.
2034
2038
2035 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2039 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2036 bug where dict was mutated while iterating (pysh crash).
2040 bug where dict was mutated while iterating (pysh crash).
2037
2041
2038 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2042 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2039
2043
2040 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2044 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2041 spurious newlines added by this routine. After a report by
2045 spurious newlines added by this routine. After a report by
2042 F. Mantegazza.
2046 F. Mantegazza.
2043
2047
2044 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2048 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2045
2049
2046 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2050 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2047 calls. These were a leftover from the GTK 1.x days, and can cause
2051 calls. These were a leftover from the GTK 1.x days, and can cause
2048 problems in certain cases (after a report by John Hunter).
2052 problems in certain cases (after a report by John Hunter).
2049
2053
2050 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2054 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2051 os.getcwd() fails at init time. Thanks to patch from David Remahl
2055 os.getcwd() fails at init time. Thanks to patch from David Remahl
2052 <chmod007-AT-mac.com>.
2056 <chmod007-AT-mac.com>.
2053 (InteractiveShell.__init__): prevent certain special magics from
2057 (InteractiveShell.__init__): prevent certain special magics from
2054 being shadowed by aliases. Closes
2058 being shadowed by aliases. Closes
2055 http://www.scipy.net/roundup/ipython/issue41.
2059 http://www.scipy.net/roundup/ipython/issue41.
2056
2060
2057 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2061 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2058
2062
2059 * IPython/iplib.py (InteractiveShell.complete): Added new
2063 * IPython/iplib.py (InteractiveShell.complete): Added new
2060 top-level completion method to expose the completion mechanism
2064 top-level completion method to expose the completion mechanism
2061 beyond readline-based environments.
2065 beyond readline-based environments.
2062
2066
2063 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2067 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2064
2068
2065 * tools/ipsvnc (svnversion): fix svnversion capture.
2069 * tools/ipsvnc (svnversion): fix svnversion capture.
2066
2070
2067 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2071 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2068 attribute to self, which was missing. Before, it was set by a
2072 attribute to self, which was missing. Before, it was set by a
2069 routine which in certain cases wasn't being called, so the
2073 routine which in certain cases wasn't being called, so the
2070 instance could end up missing the attribute. This caused a crash.
2074 instance could end up missing the attribute. This caused a crash.
2071 Closes http://www.scipy.net/roundup/ipython/issue40.
2075 Closes http://www.scipy.net/roundup/ipython/issue40.
2072
2076
2073 2005-08-16 Fernando Perez <fperez@colorado.edu>
2077 2005-08-16 Fernando Perez <fperez@colorado.edu>
2074
2078
2075 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2079 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2076 contains non-string attribute. Closes
2080 contains non-string attribute. Closes
2077 http://www.scipy.net/roundup/ipython/issue38.
2081 http://www.scipy.net/roundup/ipython/issue38.
2078
2082
2079 2005-08-14 Fernando Perez <fperez@colorado.edu>
2083 2005-08-14 Fernando Perez <fperez@colorado.edu>
2080
2084
2081 * tools/ipsvnc: Minor improvements, to add changeset info.
2085 * tools/ipsvnc: Minor improvements, to add changeset info.
2082
2086
2083 2005-08-12 Fernando Perez <fperez@colorado.edu>
2087 2005-08-12 Fernando Perez <fperez@colorado.edu>
2084
2088
2085 * IPython/iplib.py (runsource): remove self.code_to_run_src
2089 * IPython/iplib.py (runsource): remove self.code_to_run_src
2086 attribute. I realized this is nothing more than
2090 attribute. I realized this is nothing more than
2087 '\n'.join(self.buffer), and having the same data in two different
2091 '\n'.join(self.buffer), and having the same data in two different
2088 places is just asking for synchronization bugs. This may impact
2092 places is just asking for synchronization bugs. This may impact
2089 people who have custom exception handlers, so I need to warn
2093 people who have custom exception handlers, so I need to warn
2090 ipython-dev about it (F. Mantegazza may use them).
2094 ipython-dev about it (F. Mantegazza may use them).
2091
2095
2092 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2096 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2093
2097
2094 * IPython/genutils.py: fix 2.2 compatibility (generators)
2098 * IPython/genutils.py: fix 2.2 compatibility (generators)
2095
2099
2096 2005-07-18 Fernando Perez <fperez@colorado.edu>
2100 2005-07-18 Fernando Perez <fperez@colorado.edu>
2097
2101
2098 * IPython/genutils.py (get_home_dir): fix to help users with
2102 * IPython/genutils.py (get_home_dir): fix to help users with
2099 invalid $HOME under win32.
2103 invalid $HOME under win32.
2100
2104
2101 2005-07-17 Fernando Perez <fperez@colorado.edu>
2105 2005-07-17 Fernando Perez <fperez@colorado.edu>
2102
2106
2103 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2107 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2104 some old hacks and clean up a bit other routines; code should be
2108 some old hacks and clean up a bit other routines; code should be
2105 simpler and a bit faster.
2109 simpler and a bit faster.
2106
2110
2107 * IPython/iplib.py (interact): removed some last-resort attempts
2111 * IPython/iplib.py (interact): removed some last-resort attempts
2108 to survive broken stdout/stderr. That code was only making it
2112 to survive broken stdout/stderr. That code was only making it
2109 harder to abstract out the i/o (necessary for gui integration),
2113 harder to abstract out the i/o (necessary for gui integration),
2110 and the crashes it could prevent were extremely rare in practice
2114 and the crashes it could prevent were extremely rare in practice
2111 (besides being fully user-induced in a pretty violent manner).
2115 (besides being fully user-induced in a pretty violent manner).
2112
2116
2113 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2117 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2114 Nothing major yet, but the code is simpler to read; this should
2118 Nothing major yet, but the code is simpler to read; this should
2115 make it easier to do more serious modifications in the future.
2119 make it easier to do more serious modifications in the future.
2116
2120
2117 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2121 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2118 which broke in .15 (thanks to a report by Ville).
2122 which broke in .15 (thanks to a report by Ville).
2119
2123
2120 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2124 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2121 be quite correct, I know next to nothing about unicode). This
2125 be quite correct, I know next to nothing about unicode). This
2122 will allow unicode strings to be used in prompts, amongst other
2126 will allow unicode strings to be used in prompts, amongst other
2123 cases. It also will prevent ipython from crashing when unicode
2127 cases. It also will prevent ipython from crashing when unicode
2124 shows up unexpectedly in many places. If ascii encoding fails, we
2128 shows up unexpectedly in many places. If ascii encoding fails, we
2125 assume utf_8. Currently the encoding is not a user-visible
2129 assume utf_8. Currently the encoding is not a user-visible
2126 setting, though it could be made so if there is demand for it.
2130 setting, though it could be made so if there is demand for it.
2127
2131
2128 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2132 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2129
2133
2130 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2134 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2131
2135
2132 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2136 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2133
2137
2134 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2138 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2135 code can work transparently for 2.2/2.3.
2139 code can work transparently for 2.2/2.3.
2136
2140
2137 2005-07-16 Fernando Perez <fperez@colorado.edu>
2141 2005-07-16 Fernando Perez <fperez@colorado.edu>
2138
2142
2139 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2143 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2140 out of the color scheme table used for coloring exception
2144 out of the color scheme table used for coloring exception
2141 tracebacks. This allows user code to add new schemes at runtime.
2145 tracebacks. This allows user code to add new schemes at runtime.
2142 This is a minimally modified version of the patch at
2146 This is a minimally modified version of the patch at
2143 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2147 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2144 for the contribution.
2148 for the contribution.
2145
2149
2146 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2150 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2147 slightly modified version of the patch in
2151 slightly modified version of the patch in
2148 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2152 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2149 to remove the previous try/except solution (which was costlier).
2153 to remove the previous try/except solution (which was costlier).
2150 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2154 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2151
2155
2152 2005-06-08 Fernando Perez <fperez@colorado.edu>
2156 2005-06-08 Fernando Perez <fperez@colorado.edu>
2153
2157
2154 * IPython/iplib.py (write/write_err): Add methods to abstract all
2158 * IPython/iplib.py (write/write_err): Add methods to abstract all
2155 I/O a bit more.
2159 I/O a bit more.
2156
2160
2157 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2161 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2158 warning, reported by Aric Hagberg, fix by JD Hunter.
2162 warning, reported by Aric Hagberg, fix by JD Hunter.
2159
2163
2160 2005-06-02 *** Released version 0.6.15
2164 2005-06-02 *** Released version 0.6.15
2161
2165
2162 2005-06-01 Fernando Perez <fperez@colorado.edu>
2166 2005-06-01 Fernando Perez <fperez@colorado.edu>
2163
2167
2164 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2168 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2165 tab-completion of filenames within open-quoted strings. Note that
2169 tab-completion of filenames within open-quoted strings. Note that
2166 this requires that in ~/.ipython/ipythonrc, users change the
2170 this requires that in ~/.ipython/ipythonrc, users change the
2167 readline delimiters configuration to read:
2171 readline delimiters configuration to read:
2168
2172
2169 readline_remove_delims -/~
2173 readline_remove_delims -/~
2170
2174
2171
2175
2172 2005-05-31 *** Released version 0.6.14
2176 2005-05-31 *** Released version 0.6.14
2173
2177
2174 2005-05-29 Fernando Perez <fperez@colorado.edu>
2178 2005-05-29 Fernando Perez <fperez@colorado.edu>
2175
2179
2176 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2180 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2177 with files not on the filesystem. Reported by Eliyahu Sandler
2181 with files not on the filesystem. Reported by Eliyahu Sandler
2178 <eli@gondolin.net>
2182 <eli@gondolin.net>
2179
2183
2180 2005-05-22 Fernando Perez <fperez@colorado.edu>
2184 2005-05-22 Fernando Perez <fperez@colorado.edu>
2181
2185
2182 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2186 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2183 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2187 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2184
2188
2185 2005-05-19 Fernando Perez <fperez@colorado.edu>
2189 2005-05-19 Fernando Perez <fperez@colorado.edu>
2186
2190
2187 * IPython/iplib.py (safe_execfile): close a file which could be
2191 * IPython/iplib.py (safe_execfile): close a file which could be
2188 left open (causing problems in win32, which locks open files).
2192 left open (causing problems in win32, which locks open files).
2189 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2193 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2190
2194
2191 2005-05-18 Fernando Perez <fperez@colorado.edu>
2195 2005-05-18 Fernando Perez <fperez@colorado.edu>
2192
2196
2193 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2197 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2194 keyword arguments correctly to safe_execfile().
2198 keyword arguments correctly to safe_execfile().
2195
2199
2196 2005-05-13 Fernando Perez <fperez@colorado.edu>
2200 2005-05-13 Fernando Perez <fperez@colorado.edu>
2197
2201
2198 * ipython.1: Added info about Qt to manpage, and threads warning
2202 * ipython.1: Added info about Qt to manpage, and threads warning
2199 to usage page (invoked with --help).
2203 to usage page (invoked with --help).
2200
2204
2201 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2205 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2202 new matcher (it goes at the end of the priority list) to do
2206 new matcher (it goes at the end of the priority list) to do
2203 tab-completion on named function arguments. Submitted by George
2207 tab-completion on named function arguments. Submitted by George
2204 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2208 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2205 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2209 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2206 for more details.
2210 for more details.
2207
2211
2208 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2212 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2209 SystemExit exceptions in the script being run. Thanks to a report
2213 SystemExit exceptions in the script being run. Thanks to a report
2210 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2214 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2211 producing very annoying behavior when running unit tests.
2215 producing very annoying behavior when running unit tests.
2212
2216
2213 2005-05-12 Fernando Perez <fperez@colorado.edu>
2217 2005-05-12 Fernando Perez <fperez@colorado.edu>
2214
2218
2215 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2219 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2216 which I'd broken (again) due to a changed regexp. In the process,
2220 which I'd broken (again) due to a changed regexp. In the process,
2217 added ';' as an escape to auto-quote the whole line without
2221 added ';' as an escape to auto-quote the whole line without
2218 splitting its arguments. Thanks to a report by Jerry McRae
2222 splitting its arguments. Thanks to a report by Jerry McRae
2219 <qrs0xyc02-AT-sneakemail.com>.
2223 <qrs0xyc02-AT-sneakemail.com>.
2220
2224
2221 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2225 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2222 possible crashes caused by a TokenError. Reported by Ed Schofield
2226 possible crashes caused by a TokenError. Reported by Ed Schofield
2223 <schofield-AT-ftw.at>.
2227 <schofield-AT-ftw.at>.
2224
2228
2225 2005-05-06 Fernando Perez <fperez@colorado.edu>
2229 2005-05-06 Fernando Perez <fperez@colorado.edu>
2226
2230
2227 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2231 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2228
2232
2229 2005-04-29 Fernando Perez <fperez@colorado.edu>
2233 2005-04-29 Fernando Perez <fperez@colorado.edu>
2230
2234
2231 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2235 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2232 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2236 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2233 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2237 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2234 which provides support for Qt interactive usage (similar to the
2238 which provides support for Qt interactive usage (similar to the
2235 existing one for WX and GTK). This had been often requested.
2239 existing one for WX and GTK). This had been often requested.
2236
2240
2237 2005-04-14 *** Released version 0.6.13
2241 2005-04-14 *** Released version 0.6.13
2238
2242
2239 2005-04-08 Fernando Perez <fperez@colorado.edu>
2243 2005-04-08 Fernando Perez <fperez@colorado.edu>
2240
2244
2241 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2245 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2242 from _ofind, which gets called on almost every input line. Now,
2246 from _ofind, which gets called on almost every input line. Now,
2243 we only try to get docstrings if they are actually going to be
2247 we only try to get docstrings if they are actually going to be
2244 used (the overhead of fetching unnecessary docstrings can be
2248 used (the overhead of fetching unnecessary docstrings can be
2245 noticeable for certain objects, such as Pyro proxies).
2249 noticeable for certain objects, such as Pyro proxies).
2246
2250
2247 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2251 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2248 for completers. For some reason I had been passing them the state
2252 for completers. For some reason I had been passing them the state
2249 variable, which completers never actually need, and was in
2253 variable, which completers never actually need, and was in
2250 conflict with the rlcompleter API. Custom completers ONLY need to
2254 conflict with the rlcompleter API. Custom completers ONLY need to
2251 take the text parameter.
2255 take the text parameter.
2252
2256
2253 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2257 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2254 work correctly in pysh. I've also moved all the logic which used
2258 work correctly in pysh. I've also moved all the logic which used
2255 to be in pysh.py here, which will prevent problems with future
2259 to be in pysh.py here, which will prevent problems with future
2256 upgrades. However, this time I must warn users to update their
2260 upgrades. However, this time I must warn users to update their
2257 pysh profile to include the line
2261 pysh profile to include the line
2258
2262
2259 import_all IPython.Extensions.InterpreterExec
2263 import_all IPython.Extensions.InterpreterExec
2260
2264
2261 because otherwise things won't work for them. They MUST also
2265 because otherwise things won't work for them. They MUST also
2262 delete pysh.py and the line
2266 delete pysh.py and the line
2263
2267
2264 execfile pysh.py
2268 execfile pysh.py
2265
2269
2266 from their ipythonrc-pysh.
2270 from their ipythonrc-pysh.
2267
2271
2268 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2272 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2269 robust in the face of objects whose dir() returns non-strings
2273 robust in the face of objects whose dir() returns non-strings
2270 (which it shouldn't, but some broken libs like ITK do). Thanks to
2274 (which it shouldn't, but some broken libs like ITK do). Thanks to
2271 a patch by John Hunter (implemented differently, though). Also
2275 a patch by John Hunter (implemented differently, though). Also
2272 minor improvements by using .extend instead of + on lists.
2276 minor improvements by using .extend instead of + on lists.
2273
2277
2274 * pysh.py:
2278 * pysh.py:
2275
2279
2276 2005-04-06 Fernando Perez <fperez@colorado.edu>
2280 2005-04-06 Fernando Perez <fperez@colorado.edu>
2277
2281
2278 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2282 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2279 by default, so that all users benefit from it. Those who don't
2283 by default, so that all users benefit from it. Those who don't
2280 want it can still turn it off.
2284 want it can still turn it off.
2281
2285
2282 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2286 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2283 config file, I'd forgotten about this, so users were getting it
2287 config file, I'd forgotten about this, so users were getting it
2284 off by default.
2288 off by default.
2285
2289
2286 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2290 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2287 consistency. Now magics can be called in multiline statements,
2291 consistency. Now magics can be called in multiline statements,
2288 and python variables can be expanded in magic calls via $var.
2292 and python variables can be expanded in magic calls via $var.
2289 This makes the magic system behave just like aliases or !system
2293 This makes the magic system behave just like aliases or !system
2290 calls.
2294 calls.
2291
2295
2292 2005-03-28 Fernando Perez <fperez@colorado.edu>
2296 2005-03-28 Fernando Perez <fperez@colorado.edu>
2293
2297
2294 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2298 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2295 expensive string additions for building command. Add support for
2299 expensive string additions for building command. Add support for
2296 trailing ';' when autocall is used.
2300 trailing ';' when autocall is used.
2297
2301
2298 2005-03-26 Fernando Perez <fperez@colorado.edu>
2302 2005-03-26 Fernando Perez <fperez@colorado.edu>
2299
2303
2300 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2304 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2301 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2305 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2302 ipython.el robust against prompts with any number of spaces
2306 ipython.el robust against prompts with any number of spaces
2303 (including 0) after the ':' character.
2307 (including 0) after the ':' character.
2304
2308
2305 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2309 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2306 continuation prompt, which misled users to think the line was
2310 continuation prompt, which misled users to think the line was
2307 already indented. Closes debian Bug#300847, reported to me by
2311 already indented. Closes debian Bug#300847, reported to me by
2308 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2312 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2309
2313
2310 2005-03-23 Fernando Perez <fperez@colorado.edu>
2314 2005-03-23 Fernando Perez <fperez@colorado.edu>
2311
2315
2312 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2316 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2313 properly aligned if they have embedded newlines.
2317 properly aligned if they have embedded newlines.
2314
2318
2315 * IPython/iplib.py (runlines): Add a public method to expose
2319 * IPython/iplib.py (runlines): Add a public method to expose
2316 IPython's code execution machinery, so that users can run strings
2320 IPython's code execution machinery, so that users can run strings
2317 as if they had been typed at the prompt interactively.
2321 as if they had been typed at the prompt interactively.
2318 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2322 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2319 methods which can call the system shell, but with python variable
2323 methods which can call the system shell, but with python variable
2320 expansion. The three such methods are: __IPYTHON__.system,
2324 expansion. The three such methods are: __IPYTHON__.system,
2321 .getoutput and .getoutputerror. These need to be documented in a
2325 .getoutput and .getoutputerror. These need to be documented in a
2322 'public API' section (to be written) of the manual.
2326 'public API' section (to be written) of the manual.
2323
2327
2324 2005-03-20 Fernando Perez <fperez@colorado.edu>
2328 2005-03-20 Fernando Perez <fperez@colorado.edu>
2325
2329
2326 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2330 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2327 for custom exception handling. This is quite powerful, and it
2331 for custom exception handling. This is quite powerful, and it
2328 allows for user-installable exception handlers which can trap
2332 allows for user-installable exception handlers which can trap
2329 custom exceptions at runtime and treat them separately from
2333 custom exceptions at runtime and treat them separately from
2330 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2334 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2331 Mantegazza <mantegazza-AT-ill.fr>.
2335 Mantegazza <mantegazza-AT-ill.fr>.
2332 (InteractiveShell.set_custom_completer): public API function to
2336 (InteractiveShell.set_custom_completer): public API function to
2333 add new completers at runtime.
2337 add new completers at runtime.
2334
2338
2335 2005-03-19 Fernando Perez <fperez@colorado.edu>
2339 2005-03-19 Fernando Perez <fperez@colorado.edu>
2336
2340
2337 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2341 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2338 allow objects which provide their docstrings via non-standard
2342 allow objects which provide their docstrings via non-standard
2339 mechanisms (like Pyro proxies) to still be inspected by ipython's
2343 mechanisms (like Pyro proxies) to still be inspected by ipython's
2340 ? system.
2344 ? system.
2341
2345
2342 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2346 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2343 automatic capture system. I tried quite hard to make it work
2347 automatic capture system. I tried quite hard to make it work
2344 reliably, and simply failed. I tried many combinations with the
2348 reliably, and simply failed. I tried many combinations with the
2345 subprocess module, but eventually nothing worked in all needed
2349 subprocess module, but eventually nothing worked in all needed
2346 cases (not blocking stdin for the child, duplicating stdout
2350 cases (not blocking stdin for the child, duplicating stdout
2347 without blocking, etc). The new %sc/%sx still do capture to these
2351 without blocking, etc). The new %sc/%sx still do capture to these
2348 magical list/string objects which make shell use much more
2352 magical list/string objects which make shell use much more
2349 conveninent, so not all is lost.
2353 conveninent, so not all is lost.
2350
2354
2351 XXX - FIX MANUAL for the change above!
2355 XXX - FIX MANUAL for the change above!
2352
2356
2353 (runsource): I copied code.py's runsource() into ipython to modify
2357 (runsource): I copied code.py's runsource() into ipython to modify
2354 it a bit. Now the code object and source to be executed are
2358 it a bit. Now the code object and source to be executed are
2355 stored in ipython. This makes this info accessible to third-party
2359 stored in ipython. This makes this info accessible to third-party
2356 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2360 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2357 Mantegazza <mantegazza-AT-ill.fr>.
2361 Mantegazza <mantegazza-AT-ill.fr>.
2358
2362
2359 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2363 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2360 history-search via readline (like C-p/C-n). I'd wanted this for a
2364 history-search via readline (like C-p/C-n). I'd wanted this for a
2361 long time, but only recently found out how to do it. For users
2365 long time, but only recently found out how to do it. For users
2362 who already have their ipythonrc files made and want this, just
2366 who already have their ipythonrc files made and want this, just
2363 add:
2367 add:
2364
2368
2365 readline_parse_and_bind "\e[A": history-search-backward
2369 readline_parse_and_bind "\e[A": history-search-backward
2366 readline_parse_and_bind "\e[B": history-search-forward
2370 readline_parse_and_bind "\e[B": history-search-forward
2367
2371
2368 2005-03-18 Fernando Perez <fperez@colorado.edu>
2372 2005-03-18 Fernando Perez <fperez@colorado.edu>
2369
2373
2370 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2374 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2371 LSString and SList classes which allow transparent conversions
2375 LSString and SList classes which allow transparent conversions
2372 between list mode and whitespace-separated string.
2376 between list mode and whitespace-separated string.
2373 (magic_r): Fix recursion problem in %r.
2377 (magic_r): Fix recursion problem in %r.
2374
2378
2375 * IPython/genutils.py (LSString): New class to be used for
2379 * IPython/genutils.py (LSString): New class to be used for
2376 automatic storage of the results of all alias/system calls in _o
2380 automatic storage of the results of all alias/system calls in _o
2377 and _e (stdout/err). These provide a .l/.list attribute which
2381 and _e (stdout/err). These provide a .l/.list attribute which
2378 does automatic splitting on newlines. This means that for most
2382 does automatic splitting on newlines. This means that for most
2379 uses, you'll never need to do capturing of output with %sc/%sx
2383 uses, you'll never need to do capturing of output with %sc/%sx
2380 anymore, since ipython keeps this always done for you. Note that
2384 anymore, since ipython keeps this always done for you. Note that
2381 only the LAST results are stored, the _o/e variables are
2385 only the LAST results are stored, the _o/e variables are
2382 overwritten on each call. If you need to save their contents
2386 overwritten on each call. If you need to save their contents
2383 further, simply bind them to any other name.
2387 further, simply bind them to any other name.
2384
2388
2385 2005-03-17 Fernando Perez <fperez@colorado.edu>
2389 2005-03-17 Fernando Perez <fperez@colorado.edu>
2386
2390
2387 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2391 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2388 prompt namespace handling.
2392 prompt namespace handling.
2389
2393
2390 2005-03-16 Fernando Perez <fperez@colorado.edu>
2394 2005-03-16 Fernando Perez <fperez@colorado.edu>
2391
2395
2392 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2396 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2393 classic prompts to be '>>> ' (final space was missing, and it
2397 classic prompts to be '>>> ' (final space was missing, and it
2394 trips the emacs python mode).
2398 trips the emacs python mode).
2395 (BasePrompt.__str__): Added safe support for dynamic prompt
2399 (BasePrompt.__str__): Added safe support for dynamic prompt
2396 strings. Now you can set your prompt string to be '$x', and the
2400 strings. Now you can set your prompt string to be '$x', and the
2397 value of x will be printed from your interactive namespace. The
2401 value of x will be printed from your interactive namespace. The
2398 interpolation syntax includes the full Itpl support, so
2402 interpolation syntax includes the full Itpl support, so
2399 ${foo()+x+bar()} is a valid prompt string now, and the function
2403 ${foo()+x+bar()} is a valid prompt string now, and the function
2400 calls will be made at runtime.
2404 calls will be made at runtime.
2401
2405
2402 2005-03-15 Fernando Perez <fperez@colorado.edu>
2406 2005-03-15 Fernando Perez <fperez@colorado.edu>
2403
2407
2404 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2408 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2405 avoid name clashes in pylab. %hist still works, it just forwards
2409 avoid name clashes in pylab. %hist still works, it just forwards
2406 the call to %history.
2410 the call to %history.
2407
2411
2408 2005-03-02 *** Released version 0.6.12
2412 2005-03-02 *** Released version 0.6.12
2409
2413
2410 2005-03-02 Fernando Perez <fperez@colorado.edu>
2414 2005-03-02 Fernando Perez <fperez@colorado.edu>
2411
2415
2412 * IPython/iplib.py (handle_magic): log magic calls properly as
2416 * IPython/iplib.py (handle_magic): log magic calls properly as
2413 ipmagic() function calls.
2417 ipmagic() function calls.
2414
2418
2415 * IPython/Magic.py (magic_time): Improved %time to support
2419 * IPython/Magic.py (magic_time): Improved %time to support
2416 statements and provide wall-clock as well as CPU time.
2420 statements and provide wall-clock as well as CPU time.
2417
2421
2418 2005-02-27 Fernando Perez <fperez@colorado.edu>
2422 2005-02-27 Fernando Perez <fperez@colorado.edu>
2419
2423
2420 * IPython/hooks.py: New hooks module, to expose user-modifiable
2424 * IPython/hooks.py: New hooks module, to expose user-modifiable
2421 IPython functionality in a clean manner. For now only the editor
2425 IPython functionality in a clean manner. For now only the editor
2422 hook is actually written, and other thigns which I intend to turn
2426 hook is actually written, and other thigns which I intend to turn
2423 into proper hooks aren't yet there. The display and prefilter
2427 into proper hooks aren't yet there. The display and prefilter
2424 stuff, for example, should be hooks. But at least now the
2428 stuff, for example, should be hooks. But at least now the
2425 framework is in place, and the rest can be moved here with more
2429 framework is in place, and the rest can be moved here with more
2426 time later. IPython had had a .hooks variable for a long time for
2430 time later. IPython had had a .hooks variable for a long time for
2427 this purpose, but I'd never actually used it for anything.
2431 this purpose, but I'd never actually used it for anything.
2428
2432
2429 2005-02-26 Fernando Perez <fperez@colorado.edu>
2433 2005-02-26 Fernando Perez <fperez@colorado.edu>
2430
2434
2431 * IPython/ipmaker.py (make_IPython): make the default ipython
2435 * IPython/ipmaker.py (make_IPython): make the default ipython
2432 directory be called _ipython under win32, to follow more the
2436 directory be called _ipython under win32, to follow more the
2433 naming peculiarities of that platform (where buggy software like
2437 naming peculiarities of that platform (where buggy software like
2434 Visual Sourcesafe breaks with .named directories). Reported by
2438 Visual Sourcesafe breaks with .named directories). Reported by
2435 Ville Vainio.
2439 Ville Vainio.
2436
2440
2437 2005-02-23 Fernando Perez <fperez@colorado.edu>
2441 2005-02-23 Fernando Perez <fperez@colorado.edu>
2438
2442
2439 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2443 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2440 auto_aliases for win32 which were causing problems. Users can
2444 auto_aliases for win32 which were causing problems. Users can
2441 define the ones they personally like.
2445 define the ones they personally like.
2442
2446
2443 2005-02-21 Fernando Perez <fperez@colorado.edu>
2447 2005-02-21 Fernando Perez <fperez@colorado.edu>
2444
2448
2445 * IPython/Magic.py (magic_time): new magic to time execution of
2449 * IPython/Magic.py (magic_time): new magic to time execution of
2446 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2450 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2447
2451
2448 2005-02-19 Fernando Perez <fperez@colorado.edu>
2452 2005-02-19 Fernando Perez <fperez@colorado.edu>
2449
2453
2450 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2454 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2451 into keys (for prompts, for example).
2455 into keys (for prompts, for example).
2452
2456
2453 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2457 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2454 prompts in case users want them. This introduces a small behavior
2458 prompts in case users want them. This introduces a small behavior
2455 change: ipython does not automatically add a space to all prompts
2459 change: ipython does not automatically add a space to all prompts
2456 anymore. To get the old prompts with a space, users should add it
2460 anymore. To get the old prompts with a space, users should add it
2457 manually to their ipythonrc file, so for example prompt_in1 should
2461 manually to their ipythonrc file, so for example prompt_in1 should
2458 now read 'In [\#]: ' instead of 'In [\#]:'.
2462 now read 'In [\#]: ' instead of 'In [\#]:'.
2459 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2463 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2460 file) to control left-padding of secondary prompts.
2464 file) to control left-padding of secondary prompts.
2461
2465
2462 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2466 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2463 the profiler can't be imported. Fix for Debian, which removed
2467 the profiler can't be imported. Fix for Debian, which removed
2464 profile.py because of License issues. I applied a slightly
2468 profile.py because of License issues. I applied a slightly
2465 modified version of the original Debian patch at
2469 modified version of the original Debian patch at
2466 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2470 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2467
2471
2468 2005-02-17 Fernando Perez <fperez@colorado.edu>
2472 2005-02-17 Fernando Perez <fperez@colorado.edu>
2469
2473
2470 * IPython/genutils.py (native_line_ends): Fix bug which would
2474 * IPython/genutils.py (native_line_ends): Fix bug which would
2471 cause improper line-ends under win32 b/c I was not opening files
2475 cause improper line-ends under win32 b/c I was not opening files
2472 in binary mode. Bug report and fix thanks to Ville.
2476 in binary mode. Bug report and fix thanks to Ville.
2473
2477
2474 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2478 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2475 trying to catch spurious foo[1] autocalls. My fix actually broke
2479 trying to catch spurious foo[1] autocalls. My fix actually broke
2476 ',/' autoquote/call with explicit escape (bad regexp).
2480 ',/' autoquote/call with explicit escape (bad regexp).
2477
2481
2478 2005-02-15 *** Released version 0.6.11
2482 2005-02-15 *** Released version 0.6.11
2479
2483
2480 2005-02-14 Fernando Perez <fperez@colorado.edu>
2484 2005-02-14 Fernando Perez <fperez@colorado.edu>
2481
2485
2482 * IPython/background_jobs.py: New background job management
2486 * IPython/background_jobs.py: New background job management
2483 subsystem. This is implemented via a new set of classes, and
2487 subsystem. This is implemented via a new set of classes, and
2484 IPython now provides a builtin 'jobs' object for background job
2488 IPython now provides a builtin 'jobs' object for background job
2485 execution. A convenience %bg magic serves as a lightweight
2489 execution. A convenience %bg magic serves as a lightweight
2486 frontend for starting the more common type of calls. This was
2490 frontend for starting the more common type of calls. This was
2487 inspired by discussions with B. Granger and the BackgroundCommand
2491 inspired by discussions with B. Granger and the BackgroundCommand
2488 class described in the book Python Scripting for Computational
2492 class described in the book Python Scripting for Computational
2489 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2493 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2490 (although ultimately no code from this text was used, as IPython's
2494 (although ultimately no code from this text was used, as IPython's
2491 system is a separate implementation).
2495 system is a separate implementation).
2492
2496
2493 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2497 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2494 to control the completion of single/double underscore names
2498 to control the completion of single/double underscore names
2495 separately. As documented in the example ipytonrc file, the
2499 separately. As documented in the example ipytonrc file, the
2496 readline_omit__names variable can now be set to 2, to omit even
2500 readline_omit__names variable can now be set to 2, to omit even
2497 single underscore names. Thanks to a patch by Brian Wong
2501 single underscore names. Thanks to a patch by Brian Wong
2498 <BrianWong-AT-AirgoNetworks.Com>.
2502 <BrianWong-AT-AirgoNetworks.Com>.
2499 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2503 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2500 be autocalled as foo([1]) if foo were callable. A problem for
2504 be autocalled as foo([1]) if foo were callable. A problem for
2501 things which are both callable and implement __getitem__.
2505 things which are both callable and implement __getitem__.
2502 (init_readline): Fix autoindentation for win32. Thanks to a patch
2506 (init_readline): Fix autoindentation for win32. Thanks to a patch
2503 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2507 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2504
2508
2505 2005-02-12 Fernando Perez <fperez@colorado.edu>
2509 2005-02-12 Fernando Perez <fperez@colorado.edu>
2506
2510
2507 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2511 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2508 which I had written long ago to sort out user error messages which
2512 which I had written long ago to sort out user error messages which
2509 may occur during startup. This seemed like a good idea initially,
2513 may occur during startup. This seemed like a good idea initially,
2510 but it has proven a disaster in retrospect. I don't want to
2514 but it has proven a disaster in retrospect. I don't want to
2511 change much code for now, so my fix is to set the internal 'debug'
2515 change much code for now, so my fix is to set the internal 'debug'
2512 flag to true everywhere, whose only job was precisely to control
2516 flag to true everywhere, whose only job was precisely to control
2513 this subsystem. This closes issue 28 (as well as avoiding all
2517 this subsystem. This closes issue 28 (as well as avoiding all
2514 sorts of strange hangups which occur from time to time).
2518 sorts of strange hangups which occur from time to time).
2515
2519
2516 2005-02-07 Fernando Perez <fperez@colorado.edu>
2520 2005-02-07 Fernando Perez <fperez@colorado.edu>
2517
2521
2518 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2522 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2519 previous call produced a syntax error.
2523 previous call produced a syntax error.
2520
2524
2521 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2525 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2522 classes without constructor.
2526 classes without constructor.
2523
2527
2524 2005-02-06 Fernando Perez <fperez@colorado.edu>
2528 2005-02-06 Fernando Perez <fperez@colorado.edu>
2525
2529
2526 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2530 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2527 completions with the results of each matcher, so we return results
2531 completions with the results of each matcher, so we return results
2528 to the user from all namespaces. This breaks with ipython
2532 to the user from all namespaces. This breaks with ipython
2529 tradition, but I think it's a nicer behavior. Now you get all
2533 tradition, but I think it's a nicer behavior. Now you get all
2530 possible completions listed, from all possible namespaces (python,
2534 possible completions listed, from all possible namespaces (python,
2531 filesystem, magics...) After a request by John Hunter
2535 filesystem, magics...) After a request by John Hunter
2532 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2536 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2533
2537
2534 2005-02-05 Fernando Perez <fperez@colorado.edu>
2538 2005-02-05 Fernando Perez <fperez@colorado.edu>
2535
2539
2536 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2540 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2537 the call had quote characters in it (the quotes were stripped).
2541 the call had quote characters in it (the quotes were stripped).
2538
2542
2539 2005-01-31 Fernando Perez <fperez@colorado.edu>
2543 2005-01-31 Fernando Perez <fperez@colorado.edu>
2540
2544
2541 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2545 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2542 Itpl.itpl() to make the code more robust against psyco
2546 Itpl.itpl() to make the code more robust against psyco
2543 optimizations.
2547 optimizations.
2544
2548
2545 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2549 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2546 of causing an exception. Quicker, cleaner.
2550 of causing an exception. Quicker, cleaner.
2547
2551
2548 2005-01-28 Fernando Perez <fperez@colorado.edu>
2552 2005-01-28 Fernando Perez <fperez@colorado.edu>
2549
2553
2550 * scripts/ipython_win_post_install.py (install): hardcode
2554 * scripts/ipython_win_post_install.py (install): hardcode
2551 sys.prefix+'python.exe' as the executable path. It turns out that
2555 sys.prefix+'python.exe' as the executable path. It turns out that
2552 during the post-installation run, sys.executable resolves to the
2556 during the post-installation run, sys.executable resolves to the
2553 name of the binary installer! I should report this as a distutils
2557 name of the binary installer! I should report this as a distutils
2554 bug, I think. I updated the .10 release with this tiny fix, to
2558 bug, I think. I updated the .10 release with this tiny fix, to
2555 avoid annoying the lists further.
2559 avoid annoying the lists further.
2556
2560
2557 2005-01-27 *** Released version 0.6.10
2561 2005-01-27 *** Released version 0.6.10
2558
2562
2559 2005-01-27 Fernando Perez <fperez@colorado.edu>
2563 2005-01-27 Fernando Perez <fperez@colorado.edu>
2560
2564
2561 * IPython/numutils.py (norm): Added 'inf' as optional name for
2565 * IPython/numutils.py (norm): Added 'inf' as optional name for
2562 L-infinity norm, included references to mathworld.com for vector
2566 L-infinity norm, included references to mathworld.com for vector
2563 norm definitions.
2567 norm definitions.
2564 (amin/amax): added amin/amax for array min/max. Similar to what
2568 (amin/amax): added amin/amax for array min/max. Similar to what
2565 pylab ships with after the recent reorganization of names.
2569 pylab ships with after the recent reorganization of names.
2566 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2570 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2567
2571
2568 * ipython.el: committed Alex's recent fixes and improvements.
2572 * ipython.el: committed Alex's recent fixes and improvements.
2569 Tested with python-mode from CVS, and it looks excellent. Since
2573 Tested with python-mode from CVS, and it looks excellent. Since
2570 python-mode hasn't released anything in a while, I'm temporarily
2574 python-mode hasn't released anything in a while, I'm temporarily
2571 putting a copy of today's CVS (v 4.70) of python-mode in:
2575 putting a copy of today's CVS (v 4.70) of python-mode in:
2572 http://ipython.scipy.org/tmp/python-mode.el
2576 http://ipython.scipy.org/tmp/python-mode.el
2573
2577
2574 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2578 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2575 sys.executable for the executable name, instead of assuming it's
2579 sys.executable for the executable name, instead of assuming it's
2576 called 'python.exe' (the post-installer would have produced broken
2580 called 'python.exe' (the post-installer would have produced broken
2577 setups on systems with a differently named python binary).
2581 setups on systems with a differently named python binary).
2578
2582
2579 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2583 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2580 references to os.linesep, to make the code more
2584 references to os.linesep, to make the code more
2581 platform-independent. This is also part of the win32 coloring
2585 platform-independent. This is also part of the win32 coloring
2582 fixes.
2586 fixes.
2583
2587
2584 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2588 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2585 lines, which actually cause coloring bugs because the length of
2589 lines, which actually cause coloring bugs because the length of
2586 the line is very difficult to correctly compute with embedded
2590 the line is very difficult to correctly compute with embedded
2587 escapes. This was the source of all the coloring problems under
2591 escapes. This was the source of all the coloring problems under
2588 Win32. I think that _finally_, Win32 users have a properly
2592 Win32. I think that _finally_, Win32 users have a properly
2589 working ipython in all respects. This would never have happened
2593 working ipython in all respects. This would never have happened
2590 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2594 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2591
2595
2592 2005-01-26 *** Released version 0.6.9
2596 2005-01-26 *** Released version 0.6.9
2593
2597
2594 2005-01-25 Fernando Perez <fperez@colorado.edu>
2598 2005-01-25 Fernando Perez <fperez@colorado.edu>
2595
2599
2596 * setup.py: finally, we have a true Windows installer, thanks to
2600 * setup.py: finally, we have a true Windows installer, thanks to
2597 the excellent work of Viktor Ransmayr
2601 the excellent work of Viktor Ransmayr
2598 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2602 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2599 Windows users. The setup routine is quite a bit cleaner thanks to
2603 Windows users. The setup routine is quite a bit cleaner thanks to
2600 this, and the post-install script uses the proper functions to
2604 this, and the post-install script uses the proper functions to
2601 allow a clean de-installation using the standard Windows Control
2605 allow a clean de-installation using the standard Windows Control
2602 Panel.
2606 Panel.
2603
2607
2604 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2608 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2605 environment variable under all OSes (including win32) if
2609 environment variable under all OSes (including win32) if
2606 available. This will give consistency to win32 users who have set
2610 available. This will give consistency to win32 users who have set
2607 this variable for any reason. If os.environ['HOME'] fails, the
2611 this variable for any reason. If os.environ['HOME'] fails, the
2608 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2612 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2609
2613
2610 2005-01-24 Fernando Perez <fperez@colorado.edu>
2614 2005-01-24 Fernando Perez <fperez@colorado.edu>
2611
2615
2612 * IPython/numutils.py (empty_like): add empty_like(), similar to
2616 * IPython/numutils.py (empty_like): add empty_like(), similar to
2613 zeros_like() but taking advantage of the new empty() Numeric routine.
2617 zeros_like() but taking advantage of the new empty() Numeric routine.
2614
2618
2615 2005-01-23 *** Released version 0.6.8
2619 2005-01-23 *** Released version 0.6.8
2616
2620
2617 2005-01-22 Fernando Perez <fperez@colorado.edu>
2621 2005-01-22 Fernando Perez <fperez@colorado.edu>
2618
2622
2619 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2623 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2620 automatic show() calls. After discussing things with JDH, it
2624 automatic show() calls. After discussing things with JDH, it
2621 turns out there are too many corner cases where this can go wrong.
2625 turns out there are too many corner cases where this can go wrong.
2622 It's best not to try to be 'too smart', and simply have ipython
2626 It's best not to try to be 'too smart', and simply have ipython
2623 reproduce as much as possible the default behavior of a normal
2627 reproduce as much as possible the default behavior of a normal
2624 python shell.
2628 python shell.
2625
2629
2626 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2630 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2627 line-splitting regexp and _prefilter() to avoid calling getattr()
2631 line-splitting regexp and _prefilter() to avoid calling getattr()
2628 on assignments. This closes
2632 on assignments. This closes
2629 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2633 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2630 readline uses getattr(), so a simple <TAB> keypress is still
2634 readline uses getattr(), so a simple <TAB> keypress is still
2631 enough to trigger getattr() calls on an object.
2635 enough to trigger getattr() calls on an object.
2632
2636
2633 2005-01-21 Fernando Perez <fperez@colorado.edu>
2637 2005-01-21 Fernando Perez <fperez@colorado.edu>
2634
2638
2635 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2639 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2636 docstring under pylab so it doesn't mask the original.
2640 docstring under pylab so it doesn't mask the original.
2637
2641
2638 2005-01-21 *** Released version 0.6.7
2642 2005-01-21 *** Released version 0.6.7
2639
2643
2640 2005-01-21 Fernando Perez <fperez@colorado.edu>
2644 2005-01-21 Fernando Perez <fperez@colorado.edu>
2641
2645
2642 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2646 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2643 signal handling for win32 users in multithreaded mode.
2647 signal handling for win32 users in multithreaded mode.
2644
2648
2645 2005-01-17 Fernando Perez <fperez@colorado.edu>
2649 2005-01-17 Fernando Perez <fperez@colorado.edu>
2646
2650
2647 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2651 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2648 instances with no __init__. After a crash report by Norbert Nemec
2652 instances with no __init__. After a crash report by Norbert Nemec
2649 <Norbert-AT-nemec-online.de>.
2653 <Norbert-AT-nemec-online.de>.
2650
2654
2651 2005-01-14 Fernando Perez <fperez@colorado.edu>
2655 2005-01-14 Fernando Perez <fperez@colorado.edu>
2652
2656
2653 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2657 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2654 names for verbose exceptions, when multiple dotted names and the
2658 names for verbose exceptions, when multiple dotted names and the
2655 'parent' object were present on the same line.
2659 'parent' object were present on the same line.
2656
2660
2657 2005-01-11 Fernando Perez <fperez@colorado.edu>
2661 2005-01-11 Fernando Perez <fperez@colorado.edu>
2658
2662
2659 * IPython/genutils.py (flag_calls): new utility to trap and flag
2663 * IPython/genutils.py (flag_calls): new utility to trap and flag
2660 calls in functions. I need it to clean up matplotlib support.
2664 calls in functions. I need it to clean up matplotlib support.
2661 Also removed some deprecated code in genutils.
2665 Also removed some deprecated code in genutils.
2662
2666
2663 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2667 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2664 that matplotlib scripts called with %run, which don't call show()
2668 that matplotlib scripts called with %run, which don't call show()
2665 themselves, still have their plotting windows open.
2669 themselves, still have their plotting windows open.
2666
2670
2667 2005-01-05 Fernando Perez <fperez@colorado.edu>
2671 2005-01-05 Fernando Perez <fperez@colorado.edu>
2668
2672
2669 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2673 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2670 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2674 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2671
2675
2672 2004-12-19 Fernando Perez <fperez@colorado.edu>
2676 2004-12-19 Fernando Perez <fperez@colorado.edu>
2673
2677
2674 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2678 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2675 parent_runcode, which was an eyesore. The same result can be
2679 parent_runcode, which was an eyesore. The same result can be
2676 obtained with Python's regular superclass mechanisms.
2680 obtained with Python's regular superclass mechanisms.
2677
2681
2678 2004-12-17 Fernando Perez <fperez@colorado.edu>
2682 2004-12-17 Fernando Perez <fperez@colorado.edu>
2679
2683
2680 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2684 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2681 reported by Prabhu.
2685 reported by Prabhu.
2682 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2686 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2683 sys.stderr) instead of explicitly calling sys.stderr. This helps
2687 sys.stderr) instead of explicitly calling sys.stderr. This helps
2684 maintain our I/O abstractions clean, for future GUI embeddings.
2688 maintain our I/O abstractions clean, for future GUI embeddings.
2685
2689
2686 * IPython/genutils.py (info): added new utility for sys.stderr
2690 * IPython/genutils.py (info): added new utility for sys.stderr
2687 unified info message handling (thin wrapper around warn()).
2691 unified info message handling (thin wrapper around warn()).
2688
2692
2689 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2693 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2690 composite (dotted) names on verbose exceptions.
2694 composite (dotted) names on verbose exceptions.
2691 (VerboseTB.nullrepr): harden against another kind of errors which
2695 (VerboseTB.nullrepr): harden against another kind of errors which
2692 Python's inspect module can trigger, and which were crashing
2696 Python's inspect module can trigger, and which were crashing
2693 IPython. Thanks to a report by Marco Lombardi
2697 IPython. Thanks to a report by Marco Lombardi
2694 <mlombard-AT-ma010192.hq.eso.org>.
2698 <mlombard-AT-ma010192.hq.eso.org>.
2695
2699
2696 2004-12-13 *** Released version 0.6.6
2700 2004-12-13 *** Released version 0.6.6
2697
2701
2698 2004-12-12 Fernando Perez <fperez@colorado.edu>
2702 2004-12-12 Fernando Perez <fperez@colorado.edu>
2699
2703
2700 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2704 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2701 generated by pygtk upon initialization if it was built without
2705 generated by pygtk upon initialization if it was built without
2702 threads (for matplotlib users). After a crash reported by
2706 threads (for matplotlib users). After a crash reported by
2703 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2707 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2704
2708
2705 * IPython/ipmaker.py (make_IPython): fix small bug in the
2709 * IPython/ipmaker.py (make_IPython): fix small bug in the
2706 import_some parameter for multiple imports.
2710 import_some parameter for multiple imports.
2707
2711
2708 * IPython/iplib.py (ipmagic): simplified the interface of
2712 * IPython/iplib.py (ipmagic): simplified the interface of
2709 ipmagic() to take a single string argument, just as it would be
2713 ipmagic() to take a single string argument, just as it would be
2710 typed at the IPython cmd line.
2714 typed at the IPython cmd line.
2711 (ipalias): Added new ipalias() with an interface identical to
2715 (ipalias): Added new ipalias() with an interface identical to
2712 ipmagic(). This completes exposing a pure python interface to the
2716 ipmagic(). This completes exposing a pure python interface to the
2713 alias and magic system, which can be used in loops or more complex
2717 alias and magic system, which can be used in loops or more complex
2714 code where IPython's automatic line mangling is not active.
2718 code where IPython's automatic line mangling is not active.
2715
2719
2716 * IPython/genutils.py (timing): changed interface of timing to
2720 * IPython/genutils.py (timing): changed interface of timing to
2717 simply run code once, which is the most common case. timings()
2721 simply run code once, which is the most common case. timings()
2718 remains unchanged, for the cases where you want multiple runs.
2722 remains unchanged, for the cases where you want multiple runs.
2719
2723
2720 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2724 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2721 bug where Python2.2 crashes with exec'ing code which does not end
2725 bug where Python2.2 crashes with exec'ing code which does not end
2722 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2726 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2723 before.
2727 before.
2724
2728
2725 2004-12-10 Fernando Perez <fperez@colorado.edu>
2729 2004-12-10 Fernando Perez <fperez@colorado.edu>
2726
2730
2727 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2731 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2728 -t to -T, to accomodate the new -t flag in %run (the %run and
2732 -t to -T, to accomodate the new -t flag in %run (the %run and
2729 %prun options are kind of intermixed, and it's not easy to change
2733 %prun options are kind of intermixed, and it's not easy to change
2730 this with the limitations of python's getopt).
2734 this with the limitations of python's getopt).
2731
2735
2732 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2736 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2733 the execution of scripts. It's not as fine-tuned as timeit.py,
2737 the execution of scripts. It's not as fine-tuned as timeit.py,
2734 but it works from inside ipython (and under 2.2, which lacks
2738 but it works from inside ipython (and under 2.2, which lacks
2735 timeit.py). Optionally a number of runs > 1 can be given for
2739 timeit.py). Optionally a number of runs > 1 can be given for
2736 timing very short-running code.
2740 timing very short-running code.
2737
2741
2738 * IPython/genutils.py (uniq_stable): new routine which returns a
2742 * IPython/genutils.py (uniq_stable): new routine which returns a
2739 list of unique elements in any iterable, but in stable order of
2743 list of unique elements in any iterable, but in stable order of
2740 appearance. I needed this for the ultraTB fixes, and it's a handy
2744 appearance. I needed this for the ultraTB fixes, and it's a handy
2741 utility.
2745 utility.
2742
2746
2743 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2747 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2744 dotted names in Verbose exceptions. This had been broken since
2748 dotted names in Verbose exceptions. This had been broken since
2745 the very start, now x.y will properly be printed in a Verbose
2749 the very start, now x.y will properly be printed in a Verbose
2746 traceback, instead of x being shown and y appearing always as an
2750 traceback, instead of x being shown and y appearing always as an
2747 'undefined global'. Getting this to work was a bit tricky,
2751 'undefined global'. Getting this to work was a bit tricky,
2748 because by default python tokenizers are stateless. Saved by
2752 because by default python tokenizers are stateless. Saved by
2749 python's ability to easily add a bit of state to an arbitrary
2753 python's ability to easily add a bit of state to an arbitrary
2750 function (without needing to build a full-blown callable object).
2754 function (without needing to build a full-blown callable object).
2751
2755
2752 Also big cleanup of this code, which had horrendous runtime
2756 Also big cleanup of this code, which had horrendous runtime
2753 lookups of zillions of attributes for colorization. Moved all
2757 lookups of zillions of attributes for colorization. Moved all
2754 this code into a few templates, which make it cleaner and quicker.
2758 this code into a few templates, which make it cleaner and quicker.
2755
2759
2756 Printout quality was also improved for Verbose exceptions: one
2760 Printout quality was also improved for Verbose exceptions: one
2757 variable per line, and memory addresses are printed (this can be
2761 variable per line, and memory addresses are printed (this can be
2758 quite handy in nasty debugging situations, which is what Verbose
2762 quite handy in nasty debugging situations, which is what Verbose
2759 is for).
2763 is for).
2760
2764
2761 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2765 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2762 the command line as scripts to be loaded by embedded instances.
2766 the command line as scripts to be loaded by embedded instances.
2763 Doing so has the potential for an infinite recursion if there are
2767 Doing so has the potential for an infinite recursion if there are
2764 exceptions thrown in the process. This fixes a strange crash
2768 exceptions thrown in the process. This fixes a strange crash
2765 reported by Philippe MULLER <muller-AT-irit.fr>.
2769 reported by Philippe MULLER <muller-AT-irit.fr>.
2766
2770
2767 2004-12-09 Fernando Perez <fperez@colorado.edu>
2771 2004-12-09 Fernando Perez <fperez@colorado.edu>
2768
2772
2769 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2773 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2770 to reflect new names in matplotlib, which now expose the
2774 to reflect new names in matplotlib, which now expose the
2771 matlab-compatible interface via a pylab module instead of the
2775 matlab-compatible interface via a pylab module instead of the
2772 'matlab' name. The new code is backwards compatible, so users of
2776 'matlab' name. The new code is backwards compatible, so users of
2773 all matplotlib versions are OK. Patch by J. Hunter.
2777 all matplotlib versions are OK. Patch by J. Hunter.
2774
2778
2775 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2779 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2776 of __init__ docstrings for instances (class docstrings are already
2780 of __init__ docstrings for instances (class docstrings are already
2777 automatically printed). Instances with customized docstrings
2781 automatically printed). Instances with customized docstrings
2778 (indep. of the class) are also recognized and all 3 separate
2782 (indep. of the class) are also recognized and all 3 separate
2779 docstrings are printed (instance, class, constructor). After some
2783 docstrings are printed (instance, class, constructor). After some
2780 comments/suggestions by J. Hunter.
2784 comments/suggestions by J. Hunter.
2781
2785
2782 2004-12-05 Fernando Perez <fperez@colorado.edu>
2786 2004-12-05 Fernando Perez <fperez@colorado.edu>
2783
2787
2784 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2788 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2785 warnings when tab-completion fails and triggers an exception.
2789 warnings when tab-completion fails and triggers an exception.
2786
2790
2787 2004-12-03 Fernando Perez <fperez@colorado.edu>
2791 2004-12-03 Fernando Perez <fperez@colorado.edu>
2788
2792
2789 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2793 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2790 be triggered when using 'run -p'. An incorrect option flag was
2794 be triggered when using 'run -p'. An incorrect option flag was
2791 being set ('d' instead of 'D').
2795 being set ('d' instead of 'D').
2792 (manpage): fix missing escaped \- sign.
2796 (manpage): fix missing escaped \- sign.
2793
2797
2794 2004-11-30 *** Released version 0.6.5
2798 2004-11-30 *** Released version 0.6.5
2795
2799
2796 2004-11-30 Fernando Perez <fperez@colorado.edu>
2800 2004-11-30 Fernando Perez <fperez@colorado.edu>
2797
2801
2798 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2802 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2799 setting with -d option.
2803 setting with -d option.
2800
2804
2801 * setup.py (docfiles): Fix problem where the doc glob I was using
2805 * setup.py (docfiles): Fix problem where the doc glob I was using
2802 was COMPLETELY BROKEN. It was giving the right files by pure
2806 was COMPLETELY BROKEN. It was giving the right files by pure
2803 accident, but failed once I tried to include ipython.el. Note:
2807 accident, but failed once I tried to include ipython.el. Note:
2804 glob() does NOT allow you to do exclusion on multiple endings!
2808 glob() does NOT allow you to do exclusion on multiple endings!
2805
2809
2806 2004-11-29 Fernando Perez <fperez@colorado.edu>
2810 2004-11-29 Fernando Perez <fperez@colorado.edu>
2807
2811
2808 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2812 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2809 the manpage as the source. Better formatting & consistency.
2813 the manpage as the source. Better formatting & consistency.
2810
2814
2811 * IPython/Magic.py (magic_run): Added new -d option, to run
2815 * IPython/Magic.py (magic_run): Added new -d option, to run
2812 scripts under the control of the python pdb debugger. Note that
2816 scripts under the control of the python pdb debugger. Note that
2813 this required changing the %prun option -d to -D, to avoid a clash
2817 this required changing the %prun option -d to -D, to avoid a clash
2814 (since %run must pass options to %prun, and getopt is too dumb to
2818 (since %run must pass options to %prun, and getopt is too dumb to
2815 handle options with string values with embedded spaces). Thanks
2819 handle options with string values with embedded spaces). Thanks
2816 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2820 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2817 (magic_who_ls): added type matching to %who and %whos, so that one
2821 (magic_who_ls): added type matching to %who and %whos, so that one
2818 can filter their output to only include variables of certain
2822 can filter their output to only include variables of certain
2819 types. Another suggestion by Matthew.
2823 types. Another suggestion by Matthew.
2820 (magic_whos): Added memory summaries in kb and Mb for arrays.
2824 (magic_whos): Added memory summaries in kb and Mb for arrays.
2821 (magic_who): Improve formatting (break lines every 9 vars).
2825 (magic_who): Improve formatting (break lines every 9 vars).
2822
2826
2823 2004-11-28 Fernando Perez <fperez@colorado.edu>
2827 2004-11-28 Fernando Perez <fperez@colorado.edu>
2824
2828
2825 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2829 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2826 cache when empty lines were present.
2830 cache when empty lines were present.
2827
2831
2828 2004-11-24 Fernando Perez <fperez@colorado.edu>
2832 2004-11-24 Fernando Perez <fperez@colorado.edu>
2829
2833
2830 * IPython/usage.py (__doc__): document the re-activated threading
2834 * IPython/usage.py (__doc__): document the re-activated threading
2831 options for WX and GTK.
2835 options for WX and GTK.
2832
2836
2833 2004-11-23 Fernando Perez <fperez@colorado.edu>
2837 2004-11-23 Fernando Perez <fperez@colorado.edu>
2834
2838
2835 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2839 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2836 the -wthread and -gthread options, along with a new -tk one to try
2840 the -wthread and -gthread options, along with a new -tk one to try
2837 and coordinate Tk threading with wx/gtk. The tk support is very
2841 and coordinate Tk threading with wx/gtk. The tk support is very
2838 platform dependent, since it seems to require Tcl and Tk to be
2842 platform dependent, since it seems to require Tcl and Tk to be
2839 built with threads (Fedora1/2 appears NOT to have it, but in
2843 built with threads (Fedora1/2 appears NOT to have it, but in
2840 Prabhu's Debian boxes it works OK). But even with some Tk
2844 Prabhu's Debian boxes it works OK). But even with some Tk
2841 limitations, this is a great improvement.
2845 limitations, this is a great improvement.
2842
2846
2843 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2847 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2844 info in user prompts. Patch by Prabhu.
2848 info in user prompts. Patch by Prabhu.
2845
2849
2846 2004-11-18 Fernando Perez <fperez@colorado.edu>
2850 2004-11-18 Fernando Perez <fperez@colorado.edu>
2847
2851
2848 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2852 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2849 EOFErrors and bail, to avoid infinite loops if a non-terminating
2853 EOFErrors and bail, to avoid infinite loops if a non-terminating
2850 file is fed into ipython. Patch submitted in issue 19 by user,
2854 file is fed into ipython. Patch submitted in issue 19 by user,
2851 many thanks.
2855 many thanks.
2852
2856
2853 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2857 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2854 autoquote/parens in continuation prompts, which can cause lots of
2858 autoquote/parens in continuation prompts, which can cause lots of
2855 problems. Closes roundup issue 20.
2859 problems. Closes roundup issue 20.
2856
2860
2857 2004-11-17 Fernando Perez <fperez@colorado.edu>
2861 2004-11-17 Fernando Perez <fperez@colorado.edu>
2858
2862
2859 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2863 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2860 reported as debian bug #280505. I'm not sure my local changelog
2864 reported as debian bug #280505. I'm not sure my local changelog
2861 entry has the proper debian format (Jack?).
2865 entry has the proper debian format (Jack?).
2862
2866
2863 2004-11-08 *** Released version 0.6.4
2867 2004-11-08 *** Released version 0.6.4
2864
2868
2865 2004-11-08 Fernando Perez <fperez@colorado.edu>
2869 2004-11-08 Fernando Perez <fperez@colorado.edu>
2866
2870
2867 * IPython/iplib.py (init_readline): Fix exit message for Windows
2871 * IPython/iplib.py (init_readline): Fix exit message for Windows
2868 when readline is active. Thanks to a report by Eric Jones
2872 when readline is active. Thanks to a report by Eric Jones
2869 <eric-AT-enthought.com>.
2873 <eric-AT-enthought.com>.
2870
2874
2871 2004-11-07 Fernando Perez <fperez@colorado.edu>
2875 2004-11-07 Fernando Perez <fperez@colorado.edu>
2872
2876
2873 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2877 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2874 sometimes seen by win2k/cygwin users.
2878 sometimes seen by win2k/cygwin users.
2875
2879
2876 2004-11-06 Fernando Perez <fperez@colorado.edu>
2880 2004-11-06 Fernando Perez <fperez@colorado.edu>
2877
2881
2878 * IPython/iplib.py (interact): Change the handling of %Exit from
2882 * IPython/iplib.py (interact): Change the handling of %Exit from
2879 trying to propagate a SystemExit to an internal ipython flag.
2883 trying to propagate a SystemExit to an internal ipython flag.
2880 This is less elegant than using Python's exception mechanism, but
2884 This is less elegant than using Python's exception mechanism, but
2881 I can't get that to work reliably with threads, so under -pylab
2885 I can't get that to work reliably with threads, so under -pylab
2882 %Exit was hanging IPython. Cross-thread exception handling is
2886 %Exit was hanging IPython. Cross-thread exception handling is
2883 really a bitch. Thaks to a bug report by Stephen Walton
2887 really a bitch. Thaks to a bug report by Stephen Walton
2884 <stephen.walton-AT-csun.edu>.
2888 <stephen.walton-AT-csun.edu>.
2885
2889
2886 2004-11-04 Fernando Perez <fperez@colorado.edu>
2890 2004-11-04 Fernando Perez <fperez@colorado.edu>
2887
2891
2888 * IPython/iplib.py (raw_input_original): store a pointer to the
2892 * IPython/iplib.py (raw_input_original): store a pointer to the
2889 true raw_input to harden against code which can modify it
2893 true raw_input to harden against code which can modify it
2890 (wx.py.PyShell does this and would otherwise crash ipython).
2894 (wx.py.PyShell does this and would otherwise crash ipython).
2891 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2895 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2892
2896
2893 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2897 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2894 Ctrl-C problem, which does not mess up the input line.
2898 Ctrl-C problem, which does not mess up the input line.
2895
2899
2896 2004-11-03 Fernando Perez <fperez@colorado.edu>
2900 2004-11-03 Fernando Perez <fperez@colorado.edu>
2897
2901
2898 * IPython/Release.py: Changed licensing to BSD, in all files.
2902 * IPython/Release.py: Changed licensing to BSD, in all files.
2899 (name): lowercase name for tarball/RPM release.
2903 (name): lowercase name for tarball/RPM release.
2900
2904
2901 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2905 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2902 use throughout ipython.
2906 use throughout ipython.
2903
2907
2904 * IPython/Magic.py (Magic._ofind): Switch to using the new
2908 * IPython/Magic.py (Magic._ofind): Switch to using the new
2905 OInspect.getdoc() function.
2909 OInspect.getdoc() function.
2906
2910
2907 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2911 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2908 of the line currently being canceled via Ctrl-C. It's extremely
2912 of the line currently being canceled via Ctrl-C. It's extremely
2909 ugly, but I don't know how to do it better (the problem is one of
2913 ugly, but I don't know how to do it better (the problem is one of
2910 handling cross-thread exceptions).
2914 handling cross-thread exceptions).
2911
2915
2912 2004-10-28 Fernando Perez <fperez@colorado.edu>
2916 2004-10-28 Fernando Perez <fperez@colorado.edu>
2913
2917
2914 * IPython/Shell.py (signal_handler): add signal handlers to trap
2918 * IPython/Shell.py (signal_handler): add signal handlers to trap
2915 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2919 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2916 report by Francesc Alted.
2920 report by Francesc Alted.
2917
2921
2918 2004-10-21 Fernando Perez <fperez@colorado.edu>
2922 2004-10-21 Fernando Perez <fperez@colorado.edu>
2919
2923
2920 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2924 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2921 to % for pysh syntax extensions.
2925 to % for pysh syntax extensions.
2922
2926
2923 2004-10-09 Fernando Perez <fperez@colorado.edu>
2927 2004-10-09 Fernando Perez <fperez@colorado.edu>
2924
2928
2925 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2929 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2926 arrays to print a more useful summary, without calling str(arr).
2930 arrays to print a more useful summary, without calling str(arr).
2927 This avoids the problem of extremely lengthy computations which
2931 This avoids the problem of extremely lengthy computations which
2928 occur if arr is large, and appear to the user as a system lockup
2932 occur if arr is large, and appear to the user as a system lockup
2929 with 100% cpu activity. After a suggestion by Kristian Sandberg
2933 with 100% cpu activity. After a suggestion by Kristian Sandberg
2930 <Kristian.Sandberg@colorado.edu>.
2934 <Kristian.Sandberg@colorado.edu>.
2931 (Magic.__init__): fix bug in global magic escapes not being
2935 (Magic.__init__): fix bug in global magic escapes not being
2932 correctly set.
2936 correctly set.
2933
2937
2934 2004-10-08 Fernando Perez <fperez@colorado.edu>
2938 2004-10-08 Fernando Perez <fperez@colorado.edu>
2935
2939
2936 * IPython/Magic.py (__license__): change to absolute imports of
2940 * IPython/Magic.py (__license__): change to absolute imports of
2937 ipython's own internal packages, to start adapting to the absolute
2941 ipython's own internal packages, to start adapting to the absolute
2938 import requirement of PEP-328.
2942 import requirement of PEP-328.
2939
2943
2940 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2944 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2941 files, and standardize author/license marks through the Release
2945 files, and standardize author/license marks through the Release
2942 module instead of having per/file stuff (except for files with
2946 module instead of having per/file stuff (except for files with
2943 particular licenses, like the MIT/PSF-licensed codes).
2947 particular licenses, like the MIT/PSF-licensed codes).
2944
2948
2945 * IPython/Debugger.py: remove dead code for python 2.1
2949 * IPython/Debugger.py: remove dead code for python 2.1
2946
2950
2947 2004-10-04 Fernando Perez <fperez@colorado.edu>
2951 2004-10-04 Fernando Perez <fperez@colorado.edu>
2948
2952
2949 * IPython/iplib.py (ipmagic): New function for accessing magics
2953 * IPython/iplib.py (ipmagic): New function for accessing magics
2950 via a normal python function call.
2954 via a normal python function call.
2951
2955
2952 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2956 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2953 from '@' to '%', to accomodate the new @decorator syntax of python
2957 from '@' to '%', to accomodate the new @decorator syntax of python
2954 2.4.
2958 2.4.
2955
2959
2956 2004-09-29 Fernando Perez <fperez@colorado.edu>
2960 2004-09-29 Fernando Perez <fperez@colorado.edu>
2957
2961
2958 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2962 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2959 matplotlib.use to prevent running scripts which try to switch
2963 matplotlib.use to prevent running scripts which try to switch
2960 interactive backends from within ipython. This will just crash
2964 interactive backends from within ipython. This will just crash
2961 the python interpreter, so we can't allow it (but a detailed error
2965 the python interpreter, so we can't allow it (but a detailed error
2962 is given to the user).
2966 is given to the user).
2963
2967
2964 2004-09-28 Fernando Perez <fperez@colorado.edu>
2968 2004-09-28 Fernando Perez <fperez@colorado.edu>
2965
2969
2966 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2970 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2967 matplotlib-related fixes so that using @run with non-matplotlib
2971 matplotlib-related fixes so that using @run with non-matplotlib
2968 scripts doesn't pop up spurious plot windows. This requires
2972 scripts doesn't pop up spurious plot windows. This requires
2969 matplotlib >= 0.63, where I had to make some changes as well.
2973 matplotlib >= 0.63, where I had to make some changes as well.
2970
2974
2971 * IPython/ipmaker.py (make_IPython): update version requirement to
2975 * IPython/ipmaker.py (make_IPython): update version requirement to
2972 python 2.2.
2976 python 2.2.
2973
2977
2974 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2978 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2975 banner arg for embedded customization.
2979 banner arg for embedded customization.
2976
2980
2977 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2981 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2978 explicit uses of __IP as the IPython's instance name. Now things
2982 explicit uses of __IP as the IPython's instance name. Now things
2979 are properly handled via the shell.name value. The actual code
2983 are properly handled via the shell.name value. The actual code
2980 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2984 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2981 is much better than before. I'll clean things completely when the
2985 is much better than before. I'll clean things completely when the
2982 magic stuff gets a real overhaul.
2986 magic stuff gets a real overhaul.
2983
2987
2984 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2988 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2985 minor changes to debian dir.
2989 minor changes to debian dir.
2986
2990
2987 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2991 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2988 pointer to the shell itself in the interactive namespace even when
2992 pointer to the shell itself in the interactive namespace even when
2989 a user-supplied dict is provided. This is needed for embedding
2993 a user-supplied dict is provided. This is needed for embedding
2990 purposes (found by tests with Michel Sanner).
2994 purposes (found by tests with Michel Sanner).
2991
2995
2992 2004-09-27 Fernando Perez <fperez@colorado.edu>
2996 2004-09-27 Fernando Perez <fperez@colorado.edu>
2993
2997
2994 * IPython/UserConfig/ipythonrc: remove []{} from
2998 * IPython/UserConfig/ipythonrc: remove []{} from
2995 readline_remove_delims, so that things like [modname.<TAB> do
2999 readline_remove_delims, so that things like [modname.<TAB> do
2996 proper completion. This disables [].TAB, but that's a less common
3000 proper completion. This disables [].TAB, but that's a less common
2997 case than module names in list comprehensions, for example.
3001 case than module names in list comprehensions, for example.
2998 Thanks to a report by Andrea Riciputi.
3002 Thanks to a report by Andrea Riciputi.
2999
3003
3000 2004-09-09 Fernando Perez <fperez@colorado.edu>
3004 2004-09-09 Fernando Perez <fperez@colorado.edu>
3001
3005
3002 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3006 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3003 blocking problems in win32 and osx. Fix by John.
3007 blocking problems in win32 and osx. Fix by John.
3004
3008
3005 2004-09-08 Fernando Perez <fperez@colorado.edu>
3009 2004-09-08 Fernando Perez <fperez@colorado.edu>
3006
3010
3007 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3011 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3008 for Win32 and OSX. Fix by John Hunter.
3012 for Win32 and OSX. Fix by John Hunter.
3009
3013
3010 2004-08-30 *** Released version 0.6.3
3014 2004-08-30 *** Released version 0.6.3
3011
3015
3012 2004-08-30 Fernando Perez <fperez@colorado.edu>
3016 2004-08-30 Fernando Perez <fperez@colorado.edu>
3013
3017
3014 * setup.py (isfile): Add manpages to list of dependent files to be
3018 * setup.py (isfile): Add manpages to list of dependent files to be
3015 updated.
3019 updated.
3016
3020
3017 2004-08-27 Fernando Perez <fperez@colorado.edu>
3021 2004-08-27 Fernando Perez <fperez@colorado.edu>
3018
3022
3019 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3023 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3020 for now. They don't really work with standalone WX/GTK code
3024 for now. They don't really work with standalone WX/GTK code
3021 (though matplotlib IS working fine with both of those backends).
3025 (though matplotlib IS working fine with both of those backends).
3022 This will neeed much more testing. I disabled most things with
3026 This will neeed much more testing. I disabled most things with
3023 comments, so turning it back on later should be pretty easy.
3027 comments, so turning it back on later should be pretty easy.
3024
3028
3025 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3029 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3026 autocalling of expressions like r'foo', by modifying the line
3030 autocalling of expressions like r'foo', by modifying the line
3027 split regexp. Closes
3031 split regexp. Closes
3028 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3032 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3029 Riley <ipythonbugs-AT-sabi.net>.
3033 Riley <ipythonbugs-AT-sabi.net>.
3030 (InteractiveShell.mainloop): honor --nobanner with banner
3034 (InteractiveShell.mainloop): honor --nobanner with banner
3031 extensions.
3035 extensions.
3032
3036
3033 * IPython/Shell.py: Significant refactoring of all classes, so
3037 * IPython/Shell.py: Significant refactoring of all classes, so
3034 that we can really support ALL matplotlib backends and threading
3038 that we can really support ALL matplotlib backends and threading
3035 models (John spotted a bug with Tk which required this). Now we
3039 models (John spotted a bug with Tk which required this). Now we
3036 should support single-threaded, WX-threads and GTK-threads, both
3040 should support single-threaded, WX-threads and GTK-threads, both
3037 for generic code and for matplotlib.
3041 for generic code and for matplotlib.
3038
3042
3039 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3043 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3040 -pylab, to simplify things for users. Will also remove the pylab
3044 -pylab, to simplify things for users. Will also remove the pylab
3041 profile, since now all of matplotlib configuration is directly
3045 profile, since now all of matplotlib configuration is directly
3042 handled here. This also reduces startup time.
3046 handled here. This also reduces startup time.
3043
3047
3044 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3048 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3045 shell wasn't being correctly called. Also in IPShellWX.
3049 shell wasn't being correctly called. Also in IPShellWX.
3046
3050
3047 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3051 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3048 fine-tune banner.
3052 fine-tune banner.
3049
3053
3050 * IPython/numutils.py (spike): Deprecate these spike functions,
3054 * IPython/numutils.py (spike): Deprecate these spike functions,
3051 delete (long deprecated) gnuplot_exec handler.
3055 delete (long deprecated) gnuplot_exec handler.
3052
3056
3053 2004-08-26 Fernando Perez <fperez@colorado.edu>
3057 2004-08-26 Fernando Perez <fperez@colorado.edu>
3054
3058
3055 * ipython.1: Update for threading options, plus some others which
3059 * ipython.1: Update for threading options, plus some others which
3056 were missing.
3060 were missing.
3057
3061
3058 * IPython/ipmaker.py (__call__): Added -wthread option for
3062 * IPython/ipmaker.py (__call__): Added -wthread option for
3059 wxpython thread handling. Make sure threading options are only
3063 wxpython thread handling. Make sure threading options are only
3060 valid at the command line.
3064 valid at the command line.
3061
3065
3062 * scripts/ipython: moved shell selection into a factory function
3066 * scripts/ipython: moved shell selection into a factory function
3063 in Shell.py, to keep the starter script to a minimum.
3067 in Shell.py, to keep the starter script to a minimum.
3064
3068
3065 2004-08-25 Fernando Perez <fperez@colorado.edu>
3069 2004-08-25 Fernando Perez <fperez@colorado.edu>
3066
3070
3067 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3071 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3068 John. Along with some recent changes he made to matplotlib, the
3072 John. Along with some recent changes he made to matplotlib, the
3069 next versions of both systems should work very well together.
3073 next versions of both systems should work very well together.
3070
3074
3071 2004-08-24 Fernando Perez <fperez@colorado.edu>
3075 2004-08-24 Fernando Perez <fperez@colorado.edu>
3072
3076
3073 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3077 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3074 tried to switch the profiling to using hotshot, but I'm getting
3078 tried to switch the profiling to using hotshot, but I'm getting
3075 strange errors from prof.runctx() there. I may be misreading the
3079 strange errors from prof.runctx() there. I may be misreading the
3076 docs, but it looks weird. For now the profiling code will
3080 docs, but it looks weird. For now the profiling code will
3077 continue to use the standard profiler.
3081 continue to use the standard profiler.
3078
3082
3079 2004-08-23 Fernando Perez <fperez@colorado.edu>
3083 2004-08-23 Fernando Perez <fperez@colorado.edu>
3080
3084
3081 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3085 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3082 threaded shell, by John Hunter. It's not quite ready yet, but
3086 threaded shell, by John Hunter. It's not quite ready yet, but
3083 close.
3087 close.
3084
3088
3085 2004-08-22 Fernando Perez <fperez@colorado.edu>
3089 2004-08-22 Fernando Perez <fperez@colorado.edu>
3086
3090
3087 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3091 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3088 in Magic and ultraTB.
3092 in Magic and ultraTB.
3089
3093
3090 * ipython.1: document threading options in manpage.
3094 * ipython.1: document threading options in manpage.
3091
3095
3092 * scripts/ipython: Changed name of -thread option to -gthread,
3096 * scripts/ipython: Changed name of -thread option to -gthread,
3093 since this is GTK specific. I want to leave the door open for a
3097 since this is GTK specific. I want to leave the door open for a
3094 -wthread option for WX, which will most likely be necessary. This
3098 -wthread option for WX, which will most likely be necessary. This
3095 change affects usage and ipmaker as well.
3099 change affects usage and ipmaker as well.
3096
3100
3097 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3101 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3098 handle the matplotlib shell issues. Code by John Hunter
3102 handle the matplotlib shell issues. Code by John Hunter
3099 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3103 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3100 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3104 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3101 broken (and disabled for end users) for now, but it puts the
3105 broken (and disabled for end users) for now, but it puts the
3102 infrastructure in place.
3106 infrastructure in place.
3103
3107
3104 2004-08-21 Fernando Perez <fperez@colorado.edu>
3108 2004-08-21 Fernando Perez <fperez@colorado.edu>
3105
3109
3106 * ipythonrc-pylab: Add matplotlib support.
3110 * ipythonrc-pylab: Add matplotlib support.
3107
3111
3108 * matplotlib_config.py: new files for matplotlib support, part of
3112 * matplotlib_config.py: new files for matplotlib support, part of
3109 the pylab profile.
3113 the pylab profile.
3110
3114
3111 * IPython/usage.py (__doc__): documented the threading options.
3115 * IPython/usage.py (__doc__): documented the threading options.
3112
3116
3113 2004-08-20 Fernando Perez <fperez@colorado.edu>
3117 2004-08-20 Fernando Perez <fperez@colorado.edu>
3114
3118
3115 * ipython: Modified the main calling routine to handle the -thread
3119 * ipython: Modified the main calling routine to handle the -thread
3116 and -mpthread options. This needs to be done as a top-level hack,
3120 and -mpthread options. This needs to be done as a top-level hack,
3117 because it determines which class to instantiate for IPython
3121 because it determines which class to instantiate for IPython
3118 itself.
3122 itself.
3119
3123
3120 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3124 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3121 classes to support multithreaded GTK operation without blocking,
3125 classes to support multithreaded GTK operation without blocking,
3122 and matplotlib with all backends. This is a lot of still very
3126 and matplotlib with all backends. This is a lot of still very
3123 experimental code, and threads are tricky. So it may still have a
3127 experimental code, and threads are tricky. So it may still have a
3124 few rough edges... This code owes a lot to
3128 few rough edges... This code owes a lot to
3125 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3129 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3126 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3130 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3127 to John Hunter for all the matplotlib work.
3131 to John Hunter for all the matplotlib work.
3128
3132
3129 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3133 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3130 options for gtk thread and matplotlib support.
3134 options for gtk thread and matplotlib support.
3131
3135
3132 2004-08-16 Fernando Perez <fperez@colorado.edu>
3136 2004-08-16 Fernando Perez <fperez@colorado.edu>
3133
3137
3134 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3138 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3135 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3139 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3136 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3140 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3137
3141
3138 2004-08-11 Fernando Perez <fperez@colorado.edu>
3142 2004-08-11 Fernando Perez <fperez@colorado.edu>
3139
3143
3140 * setup.py (isfile): Fix build so documentation gets updated for
3144 * setup.py (isfile): Fix build so documentation gets updated for
3141 rpms (it was only done for .tgz builds).
3145 rpms (it was only done for .tgz builds).
3142
3146
3143 2004-08-10 Fernando Perez <fperez@colorado.edu>
3147 2004-08-10 Fernando Perez <fperez@colorado.edu>
3144
3148
3145 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3149 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3146
3150
3147 * iplib.py : Silence syntax error exceptions in tab-completion.
3151 * iplib.py : Silence syntax error exceptions in tab-completion.
3148
3152
3149 2004-08-05 Fernando Perez <fperez@colorado.edu>
3153 2004-08-05 Fernando Perez <fperez@colorado.edu>
3150
3154
3151 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3155 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3152 'color off' mark for continuation prompts. This was causing long
3156 'color off' mark for continuation prompts. This was causing long
3153 continuation lines to mis-wrap.
3157 continuation lines to mis-wrap.
3154
3158
3155 2004-08-01 Fernando Perez <fperez@colorado.edu>
3159 2004-08-01 Fernando Perez <fperez@colorado.edu>
3156
3160
3157 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3161 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3158 for building ipython to be a parameter. All this is necessary
3162 for building ipython to be a parameter. All this is necessary
3159 right now to have a multithreaded version, but this insane
3163 right now to have a multithreaded version, but this insane
3160 non-design will be cleaned up soon. For now, it's a hack that
3164 non-design will be cleaned up soon. For now, it's a hack that
3161 works.
3165 works.
3162
3166
3163 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3167 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3164 args in various places. No bugs so far, but it's a dangerous
3168 args in various places. No bugs so far, but it's a dangerous
3165 practice.
3169 practice.
3166
3170
3167 2004-07-31 Fernando Perez <fperez@colorado.edu>
3171 2004-07-31 Fernando Perez <fperez@colorado.edu>
3168
3172
3169 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3173 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3170 fix completion of files with dots in their names under most
3174 fix completion of files with dots in their names under most
3171 profiles (pysh was OK because the completion order is different).
3175 profiles (pysh was OK because the completion order is different).
3172
3176
3173 2004-07-27 Fernando Perez <fperez@colorado.edu>
3177 2004-07-27 Fernando Perez <fperez@colorado.edu>
3174
3178
3175 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3179 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3176 keywords manually, b/c the one in keyword.py was removed in python
3180 keywords manually, b/c the one in keyword.py was removed in python
3177 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3181 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3178 This is NOT a bug under python 2.3 and earlier.
3182 This is NOT a bug under python 2.3 and earlier.
3179
3183
3180 2004-07-26 Fernando Perez <fperez@colorado.edu>
3184 2004-07-26 Fernando Perez <fperez@colorado.edu>
3181
3185
3182 * IPython/ultraTB.py (VerboseTB.text): Add another
3186 * IPython/ultraTB.py (VerboseTB.text): Add another
3183 linecache.checkcache() call to try to prevent inspect.py from
3187 linecache.checkcache() call to try to prevent inspect.py from
3184 crashing under python 2.3. I think this fixes
3188 crashing under python 2.3. I think this fixes
3185 http://www.scipy.net/roundup/ipython/issue17.
3189 http://www.scipy.net/roundup/ipython/issue17.
3186
3190
3187 2004-07-26 *** Released version 0.6.2
3191 2004-07-26 *** Released version 0.6.2
3188
3192
3189 2004-07-26 Fernando Perez <fperez@colorado.edu>
3193 2004-07-26 Fernando Perez <fperez@colorado.edu>
3190
3194
3191 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3195 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3192 fail for any number.
3196 fail for any number.
3193 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3197 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3194 empty bookmarks.
3198 empty bookmarks.
3195
3199
3196 2004-07-26 *** Released version 0.6.1
3200 2004-07-26 *** Released version 0.6.1
3197
3201
3198 2004-07-26 Fernando Perez <fperez@colorado.edu>
3202 2004-07-26 Fernando Perez <fperez@colorado.edu>
3199
3203
3200 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3204 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3201
3205
3202 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3206 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3203 escaping '()[]{}' in filenames.
3207 escaping '()[]{}' in filenames.
3204
3208
3205 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3209 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3206 Python 2.2 users who lack a proper shlex.split.
3210 Python 2.2 users who lack a proper shlex.split.
3207
3211
3208 2004-07-19 Fernando Perez <fperez@colorado.edu>
3212 2004-07-19 Fernando Perez <fperez@colorado.edu>
3209
3213
3210 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3214 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3211 for reading readline's init file. I follow the normal chain:
3215 for reading readline's init file. I follow the normal chain:
3212 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3216 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3213 report by Mike Heeter. This closes
3217 report by Mike Heeter. This closes
3214 http://www.scipy.net/roundup/ipython/issue16.
3218 http://www.scipy.net/roundup/ipython/issue16.
3215
3219
3216 2004-07-18 Fernando Perez <fperez@colorado.edu>
3220 2004-07-18 Fernando Perez <fperez@colorado.edu>
3217
3221
3218 * IPython/iplib.py (__init__): Add better handling of '\' under
3222 * IPython/iplib.py (__init__): Add better handling of '\' under
3219 Win32 for filenames. After a patch by Ville.
3223 Win32 for filenames. After a patch by Ville.
3220
3224
3221 2004-07-17 Fernando Perez <fperez@colorado.edu>
3225 2004-07-17 Fernando Perez <fperez@colorado.edu>
3222
3226
3223 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3227 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3224 autocalling would be triggered for 'foo is bar' if foo is
3228 autocalling would be triggered for 'foo is bar' if foo is
3225 callable. I also cleaned up the autocall detection code to use a
3229 callable. I also cleaned up the autocall detection code to use a
3226 regexp, which is faster. Bug reported by Alexander Schmolck.
3230 regexp, which is faster. Bug reported by Alexander Schmolck.
3227
3231
3228 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3232 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3229 '?' in them would confuse the help system. Reported by Alex
3233 '?' in them would confuse the help system. Reported by Alex
3230 Schmolck.
3234 Schmolck.
3231
3235
3232 2004-07-16 Fernando Perez <fperez@colorado.edu>
3236 2004-07-16 Fernando Perez <fperez@colorado.edu>
3233
3237
3234 * IPython/GnuplotInteractive.py (__all__): added plot2.
3238 * IPython/GnuplotInteractive.py (__all__): added plot2.
3235
3239
3236 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3240 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3237 plotting dictionaries, lists or tuples of 1d arrays.
3241 plotting dictionaries, lists or tuples of 1d arrays.
3238
3242
3239 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3243 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3240 optimizations.
3244 optimizations.
3241
3245
3242 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3246 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3243 the information which was there from Janko's original IPP code:
3247 the information which was there from Janko's original IPP code:
3244
3248
3245 03.05.99 20:53 porto.ifm.uni-kiel.de
3249 03.05.99 20:53 porto.ifm.uni-kiel.de
3246 --Started changelog.
3250 --Started changelog.
3247 --make clear do what it say it does
3251 --make clear do what it say it does
3248 --added pretty output of lines from inputcache
3252 --added pretty output of lines from inputcache
3249 --Made Logger a mixin class, simplifies handling of switches
3253 --Made Logger a mixin class, simplifies handling of switches
3250 --Added own completer class. .string<TAB> expands to last history
3254 --Added own completer class. .string<TAB> expands to last history
3251 line which starts with string. The new expansion is also present
3255 line which starts with string. The new expansion is also present
3252 with Ctrl-r from the readline library. But this shows, who this
3256 with Ctrl-r from the readline library. But this shows, who this
3253 can be done for other cases.
3257 can be done for other cases.
3254 --Added convention that all shell functions should accept a
3258 --Added convention that all shell functions should accept a
3255 parameter_string This opens the door for different behaviour for
3259 parameter_string This opens the door for different behaviour for
3256 each function. @cd is a good example of this.
3260 each function. @cd is a good example of this.
3257
3261
3258 04.05.99 12:12 porto.ifm.uni-kiel.de
3262 04.05.99 12:12 porto.ifm.uni-kiel.de
3259 --added logfile rotation
3263 --added logfile rotation
3260 --added new mainloop method which freezes first the namespace
3264 --added new mainloop method which freezes first the namespace
3261
3265
3262 07.05.99 21:24 porto.ifm.uni-kiel.de
3266 07.05.99 21:24 porto.ifm.uni-kiel.de
3263 --added the docreader classes. Now there is a help system.
3267 --added the docreader classes. Now there is a help system.
3264 -This is only a first try. Currently it's not easy to put new
3268 -This is only a first try. Currently it's not easy to put new
3265 stuff in the indices. But this is the way to go. Info would be
3269 stuff in the indices. But this is the way to go. Info would be
3266 better, but HTML is every where and not everybody has an info
3270 better, but HTML is every where and not everybody has an info
3267 system installed and it's not so easy to change html-docs to info.
3271 system installed and it's not so easy to change html-docs to info.
3268 --added global logfile option
3272 --added global logfile option
3269 --there is now a hook for object inspection method pinfo needs to
3273 --there is now a hook for object inspection method pinfo needs to
3270 be provided for this. Can be reached by two '??'.
3274 be provided for this. Can be reached by two '??'.
3271
3275
3272 08.05.99 20:51 porto.ifm.uni-kiel.de
3276 08.05.99 20:51 porto.ifm.uni-kiel.de
3273 --added a README
3277 --added a README
3274 --bug in rc file. Something has changed so functions in the rc
3278 --bug in rc file. Something has changed so functions in the rc
3275 file need to reference the shell and not self. Not clear if it's a
3279 file need to reference the shell and not self. Not clear if it's a
3276 bug or feature.
3280 bug or feature.
3277 --changed rc file for new behavior
3281 --changed rc file for new behavior
3278
3282
3279 2004-07-15 Fernando Perez <fperez@colorado.edu>
3283 2004-07-15 Fernando Perez <fperez@colorado.edu>
3280
3284
3281 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3285 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3282 cache was falling out of sync in bizarre manners when multi-line
3286 cache was falling out of sync in bizarre manners when multi-line
3283 input was present. Minor optimizations and cleanup.
3287 input was present. Minor optimizations and cleanup.
3284
3288
3285 (Logger): Remove old Changelog info for cleanup. This is the
3289 (Logger): Remove old Changelog info for cleanup. This is the
3286 information which was there from Janko's original code:
3290 information which was there from Janko's original code:
3287
3291
3288 Changes to Logger: - made the default log filename a parameter
3292 Changes to Logger: - made the default log filename a parameter
3289
3293
3290 - put a check for lines beginning with !@? in log(). Needed
3294 - put a check for lines beginning with !@? in log(). Needed
3291 (even if the handlers properly log their lines) for mid-session
3295 (even if the handlers properly log their lines) for mid-session
3292 logging activation to work properly. Without this, lines logged
3296 logging activation to work properly. Without this, lines logged
3293 in mid session, which get read from the cache, would end up
3297 in mid session, which get read from the cache, would end up
3294 'bare' (with !@? in the open) in the log. Now they are caught
3298 'bare' (with !@? in the open) in the log. Now they are caught
3295 and prepended with a #.
3299 and prepended with a #.
3296
3300
3297 * IPython/iplib.py (InteractiveShell.init_readline): added check
3301 * IPython/iplib.py (InteractiveShell.init_readline): added check
3298 in case MagicCompleter fails to be defined, so we don't crash.
3302 in case MagicCompleter fails to be defined, so we don't crash.
3299
3303
3300 2004-07-13 Fernando Perez <fperez@colorado.edu>
3304 2004-07-13 Fernando Perez <fperez@colorado.edu>
3301
3305
3302 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3306 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3303 of EPS if the requested filename ends in '.eps'.
3307 of EPS if the requested filename ends in '.eps'.
3304
3308
3305 2004-07-04 Fernando Perez <fperez@colorado.edu>
3309 2004-07-04 Fernando Perez <fperez@colorado.edu>
3306
3310
3307 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3311 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3308 escaping of quotes when calling the shell.
3312 escaping of quotes when calling the shell.
3309
3313
3310 2004-07-02 Fernando Perez <fperez@colorado.edu>
3314 2004-07-02 Fernando Perez <fperez@colorado.edu>
3311
3315
3312 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3316 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3313 gettext not working because we were clobbering '_'. Fixes
3317 gettext not working because we were clobbering '_'. Fixes
3314 http://www.scipy.net/roundup/ipython/issue6.
3318 http://www.scipy.net/roundup/ipython/issue6.
3315
3319
3316 2004-07-01 Fernando Perez <fperez@colorado.edu>
3320 2004-07-01 Fernando Perez <fperez@colorado.edu>
3317
3321
3318 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3322 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3319 into @cd. Patch by Ville.
3323 into @cd. Patch by Ville.
3320
3324
3321 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3325 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3322 new function to store things after ipmaker runs. Patch by Ville.
3326 new function to store things after ipmaker runs. Patch by Ville.
3323 Eventually this will go away once ipmaker is removed and the class
3327 Eventually this will go away once ipmaker is removed and the class
3324 gets cleaned up, but for now it's ok. Key functionality here is
3328 gets cleaned up, but for now it's ok. Key functionality here is
3325 the addition of the persistent storage mechanism, a dict for
3329 the addition of the persistent storage mechanism, a dict for
3326 keeping data across sessions (for now just bookmarks, but more can
3330 keeping data across sessions (for now just bookmarks, but more can
3327 be implemented later).
3331 be implemented later).
3328
3332
3329 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3333 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3330 persistent across sections. Patch by Ville, I modified it
3334 persistent across sections. Patch by Ville, I modified it
3331 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3335 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3332 added a '-l' option to list all bookmarks.
3336 added a '-l' option to list all bookmarks.
3333
3337
3334 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3338 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3335 center for cleanup. Registered with atexit.register(). I moved
3339 center for cleanup. Registered with atexit.register(). I moved
3336 here the old exit_cleanup(). After a patch by Ville.
3340 here the old exit_cleanup(). After a patch by Ville.
3337
3341
3338 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3342 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3339 characters in the hacked shlex_split for python 2.2.
3343 characters in the hacked shlex_split for python 2.2.
3340
3344
3341 * IPython/iplib.py (file_matches): more fixes to filenames with
3345 * IPython/iplib.py (file_matches): more fixes to filenames with
3342 whitespace in them. It's not perfect, but limitations in python's
3346 whitespace in them. It's not perfect, but limitations in python's
3343 readline make it impossible to go further.
3347 readline make it impossible to go further.
3344
3348
3345 2004-06-29 Fernando Perez <fperez@colorado.edu>
3349 2004-06-29 Fernando Perez <fperez@colorado.edu>
3346
3350
3347 * IPython/iplib.py (file_matches): escape whitespace correctly in
3351 * IPython/iplib.py (file_matches): escape whitespace correctly in
3348 filename completions. Bug reported by Ville.
3352 filename completions. Bug reported by Ville.
3349
3353
3350 2004-06-28 Fernando Perez <fperez@colorado.edu>
3354 2004-06-28 Fernando Perez <fperez@colorado.edu>
3351
3355
3352 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3356 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3353 the history file will be called 'history-PROFNAME' (or just
3357 the history file will be called 'history-PROFNAME' (or just
3354 'history' if no profile is loaded). I was getting annoyed at
3358 'history' if no profile is loaded). I was getting annoyed at
3355 getting my Numerical work history clobbered by pysh sessions.
3359 getting my Numerical work history clobbered by pysh sessions.
3356
3360
3357 * IPython/iplib.py (InteractiveShell.__init__): Internal
3361 * IPython/iplib.py (InteractiveShell.__init__): Internal
3358 getoutputerror() function so that we can honor the system_verbose
3362 getoutputerror() function so that we can honor the system_verbose
3359 flag for _all_ system calls. I also added escaping of #
3363 flag for _all_ system calls. I also added escaping of #
3360 characters here to avoid confusing Itpl.
3364 characters here to avoid confusing Itpl.
3361
3365
3362 * IPython/Magic.py (shlex_split): removed call to shell in
3366 * IPython/Magic.py (shlex_split): removed call to shell in
3363 parse_options and replaced it with shlex.split(). The annoying
3367 parse_options and replaced it with shlex.split(). The annoying
3364 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3368 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3365 to backport it from 2.3, with several frail hacks (the shlex
3369 to backport it from 2.3, with several frail hacks (the shlex
3366 module is rather limited in 2.2). Thanks to a suggestion by Ville
3370 module is rather limited in 2.2). Thanks to a suggestion by Ville
3367 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3371 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3368 problem.
3372 problem.
3369
3373
3370 (Magic.magic_system_verbose): new toggle to print the actual
3374 (Magic.magic_system_verbose): new toggle to print the actual
3371 system calls made by ipython. Mainly for debugging purposes.
3375 system calls made by ipython. Mainly for debugging purposes.
3372
3376
3373 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3377 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3374 doesn't support persistence. Reported (and fix suggested) by
3378 doesn't support persistence. Reported (and fix suggested) by
3375 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3379 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3376
3380
3377 2004-06-26 Fernando Perez <fperez@colorado.edu>
3381 2004-06-26 Fernando Perez <fperez@colorado.edu>
3378
3382
3379 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3383 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3380 continue prompts.
3384 continue prompts.
3381
3385
3382 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3386 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3383 function (basically a big docstring) and a few more things here to
3387 function (basically a big docstring) and a few more things here to
3384 speedup startup. pysh.py is now very lightweight. We want because
3388 speedup startup. pysh.py is now very lightweight. We want because
3385 it gets execfile'd, while InterpreterExec gets imported, so
3389 it gets execfile'd, while InterpreterExec gets imported, so
3386 byte-compilation saves time.
3390 byte-compilation saves time.
3387
3391
3388 2004-06-25 Fernando Perez <fperez@colorado.edu>
3392 2004-06-25 Fernando Perez <fperez@colorado.edu>
3389
3393
3390 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3394 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3391 -NUM', which was recently broken.
3395 -NUM', which was recently broken.
3392
3396
3393 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3397 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3394 in multi-line input (but not !!, which doesn't make sense there).
3398 in multi-line input (but not !!, which doesn't make sense there).
3395
3399
3396 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3400 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3397 It's just too useful, and people can turn it off in the less
3401 It's just too useful, and people can turn it off in the less
3398 common cases where it's a problem.
3402 common cases where it's a problem.
3399
3403
3400 2004-06-24 Fernando Perez <fperez@colorado.edu>
3404 2004-06-24 Fernando Perez <fperez@colorado.edu>
3401
3405
3402 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3406 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3403 special syntaxes (like alias calling) is now allied in multi-line
3407 special syntaxes (like alias calling) is now allied in multi-line
3404 input. This is still _very_ experimental, but it's necessary for
3408 input. This is still _very_ experimental, but it's necessary for
3405 efficient shell usage combining python looping syntax with system
3409 efficient shell usage combining python looping syntax with system
3406 calls. For now it's restricted to aliases, I don't think it
3410 calls. For now it's restricted to aliases, I don't think it
3407 really even makes sense to have this for magics.
3411 really even makes sense to have this for magics.
3408
3412
3409 2004-06-23 Fernando Perez <fperez@colorado.edu>
3413 2004-06-23 Fernando Perez <fperez@colorado.edu>
3410
3414
3411 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3415 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3412 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3416 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3413
3417
3414 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3418 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3415 extensions under Windows (after code sent by Gary Bishop). The
3419 extensions under Windows (after code sent by Gary Bishop). The
3416 extensions considered 'executable' are stored in IPython's rc
3420 extensions considered 'executable' are stored in IPython's rc
3417 structure as win_exec_ext.
3421 structure as win_exec_ext.
3418
3422
3419 * IPython/genutils.py (shell): new function, like system() but
3423 * IPython/genutils.py (shell): new function, like system() but
3420 without return value. Very useful for interactive shell work.
3424 without return value. Very useful for interactive shell work.
3421
3425
3422 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3426 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3423 delete aliases.
3427 delete aliases.
3424
3428
3425 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3429 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3426 sure that the alias table doesn't contain python keywords.
3430 sure that the alias table doesn't contain python keywords.
3427
3431
3428 2004-06-21 Fernando Perez <fperez@colorado.edu>
3432 2004-06-21 Fernando Perez <fperez@colorado.edu>
3429
3433
3430 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3434 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3431 non-existent items are found in $PATH. Reported by Thorsten.
3435 non-existent items are found in $PATH. Reported by Thorsten.
3432
3436
3433 2004-06-20 Fernando Perez <fperez@colorado.edu>
3437 2004-06-20 Fernando Perez <fperez@colorado.edu>
3434
3438
3435 * IPython/iplib.py (complete): modified the completer so that the
3439 * IPython/iplib.py (complete): modified the completer so that the
3436 order of priorities can be easily changed at runtime.
3440 order of priorities can be easily changed at runtime.
3437
3441
3438 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3442 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3439 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3443 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3440
3444
3441 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3445 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3442 expand Python variables prepended with $ in all system calls. The
3446 expand Python variables prepended with $ in all system calls. The
3443 same was done to InteractiveShell.handle_shell_escape. Now all
3447 same was done to InteractiveShell.handle_shell_escape. Now all
3444 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3448 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3445 expansion of python variables and expressions according to the
3449 expansion of python variables and expressions according to the
3446 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3450 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3447
3451
3448 Though PEP-215 has been rejected, a similar (but simpler) one
3452 Though PEP-215 has been rejected, a similar (but simpler) one
3449 seems like it will go into Python 2.4, PEP-292 -
3453 seems like it will go into Python 2.4, PEP-292 -
3450 http://www.python.org/peps/pep-0292.html.
3454 http://www.python.org/peps/pep-0292.html.
3451
3455
3452 I'll keep the full syntax of PEP-215, since IPython has since the
3456 I'll keep the full syntax of PEP-215, since IPython has since the
3453 start used Ka-Ping Yee's reference implementation discussed there
3457 start used Ka-Ping Yee's reference implementation discussed there
3454 (Itpl), and I actually like the powerful semantics it offers.
3458 (Itpl), and I actually like the powerful semantics it offers.
3455
3459
3456 In order to access normal shell variables, the $ has to be escaped
3460 In order to access normal shell variables, the $ has to be escaped
3457 via an extra $. For example:
3461 via an extra $. For example:
3458
3462
3459 In [7]: PATH='a python variable'
3463 In [7]: PATH='a python variable'
3460
3464
3461 In [8]: !echo $PATH
3465 In [8]: !echo $PATH
3462 a python variable
3466 a python variable
3463
3467
3464 In [9]: !echo $$PATH
3468 In [9]: !echo $$PATH
3465 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3469 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3466
3470
3467 (Magic.parse_options): escape $ so the shell doesn't evaluate
3471 (Magic.parse_options): escape $ so the shell doesn't evaluate
3468 things prematurely.
3472 things prematurely.
3469
3473
3470 * IPython/iplib.py (InteractiveShell.call_alias): added the
3474 * IPython/iplib.py (InteractiveShell.call_alias): added the
3471 ability for aliases to expand python variables via $.
3475 ability for aliases to expand python variables via $.
3472
3476
3473 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3477 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3474 system, now there's a @rehash/@rehashx pair of magics. These work
3478 system, now there's a @rehash/@rehashx pair of magics. These work
3475 like the csh rehash command, and can be invoked at any time. They
3479 like the csh rehash command, and can be invoked at any time. They
3476 build a table of aliases to everything in the user's $PATH
3480 build a table of aliases to everything in the user's $PATH
3477 (@rehash uses everything, @rehashx is slower but only adds
3481 (@rehash uses everything, @rehashx is slower but only adds
3478 executable files). With this, the pysh.py-based shell profile can
3482 executable files). With this, the pysh.py-based shell profile can
3479 now simply call rehash upon startup, and full access to all
3483 now simply call rehash upon startup, and full access to all
3480 programs in the user's path is obtained.
3484 programs in the user's path is obtained.
3481
3485
3482 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3486 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3483 functionality is now fully in place. I removed the old dynamic
3487 functionality is now fully in place. I removed the old dynamic
3484 code generation based approach, in favor of a much lighter one
3488 code generation based approach, in favor of a much lighter one
3485 based on a simple dict. The advantage is that this allows me to
3489 based on a simple dict. The advantage is that this allows me to
3486 now have thousands of aliases with negligible cost (unthinkable
3490 now have thousands of aliases with negligible cost (unthinkable
3487 with the old system).
3491 with the old system).
3488
3492
3489 2004-06-19 Fernando Perez <fperez@colorado.edu>
3493 2004-06-19 Fernando Perez <fperez@colorado.edu>
3490
3494
3491 * IPython/iplib.py (__init__): extended MagicCompleter class to
3495 * IPython/iplib.py (__init__): extended MagicCompleter class to
3492 also complete (last in priority) on user aliases.
3496 also complete (last in priority) on user aliases.
3493
3497
3494 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3498 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3495 call to eval.
3499 call to eval.
3496 (ItplNS.__init__): Added a new class which functions like Itpl,
3500 (ItplNS.__init__): Added a new class which functions like Itpl,
3497 but allows configuring the namespace for the evaluation to occur
3501 but allows configuring the namespace for the evaluation to occur
3498 in.
3502 in.
3499
3503
3500 2004-06-18 Fernando Perez <fperez@colorado.edu>
3504 2004-06-18 Fernando Perez <fperez@colorado.edu>
3501
3505
3502 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3506 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3503 better message when 'exit' or 'quit' are typed (a common newbie
3507 better message when 'exit' or 'quit' are typed (a common newbie
3504 confusion).
3508 confusion).
3505
3509
3506 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3510 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3507 check for Windows users.
3511 check for Windows users.
3508
3512
3509 * IPython/iplib.py (InteractiveShell.user_setup): removed
3513 * IPython/iplib.py (InteractiveShell.user_setup): removed
3510 disabling of colors for Windows. I'll test at runtime and issue a
3514 disabling of colors for Windows. I'll test at runtime and issue a
3511 warning if Gary's readline isn't found, as to nudge users to
3515 warning if Gary's readline isn't found, as to nudge users to
3512 download it.
3516 download it.
3513
3517
3514 2004-06-16 Fernando Perez <fperez@colorado.edu>
3518 2004-06-16 Fernando Perez <fperez@colorado.edu>
3515
3519
3516 * IPython/genutils.py (Stream.__init__): changed to print errors
3520 * IPython/genutils.py (Stream.__init__): changed to print errors
3517 to sys.stderr. I had a circular dependency here. Now it's
3521 to sys.stderr. I had a circular dependency here. Now it's
3518 possible to run ipython as IDLE's shell (consider this pre-alpha,
3522 possible to run ipython as IDLE's shell (consider this pre-alpha,
3519 since true stdout things end up in the starting terminal instead
3523 since true stdout things end up in the starting terminal instead
3520 of IDLE's out).
3524 of IDLE's out).
3521
3525
3522 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3526 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3523 users who haven't # updated their prompt_in2 definitions. Remove
3527 users who haven't # updated their prompt_in2 definitions. Remove
3524 eventually.
3528 eventually.
3525 (multiple_replace): added credit to original ASPN recipe.
3529 (multiple_replace): added credit to original ASPN recipe.
3526
3530
3527 2004-06-15 Fernando Perez <fperez@colorado.edu>
3531 2004-06-15 Fernando Perez <fperez@colorado.edu>
3528
3532
3529 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3533 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3530 list of auto-defined aliases.
3534 list of auto-defined aliases.
3531
3535
3532 2004-06-13 Fernando Perez <fperez@colorado.edu>
3536 2004-06-13 Fernando Perez <fperez@colorado.edu>
3533
3537
3534 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3538 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3535 install was really requested (so setup.py can be used for other
3539 install was really requested (so setup.py can be used for other
3536 things under Windows).
3540 things under Windows).
3537
3541
3538 2004-06-10 Fernando Perez <fperez@colorado.edu>
3542 2004-06-10 Fernando Perez <fperez@colorado.edu>
3539
3543
3540 * IPython/Logger.py (Logger.create_log): Manually remove any old
3544 * IPython/Logger.py (Logger.create_log): Manually remove any old
3541 backup, since os.remove may fail under Windows. Fixes bug
3545 backup, since os.remove may fail under Windows. Fixes bug
3542 reported by Thorsten.
3546 reported by Thorsten.
3543
3547
3544 2004-06-09 Fernando Perez <fperez@colorado.edu>
3548 2004-06-09 Fernando Perez <fperez@colorado.edu>
3545
3549
3546 * examples/example-embed.py: fixed all references to %n (replaced
3550 * examples/example-embed.py: fixed all references to %n (replaced
3547 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3551 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3548 for all examples and the manual as well.
3552 for all examples and the manual as well.
3549
3553
3550 2004-06-08 Fernando Perez <fperez@colorado.edu>
3554 2004-06-08 Fernando Perez <fperez@colorado.edu>
3551
3555
3552 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3556 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3553 alignment and color management. All 3 prompt subsystems now
3557 alignment and color management. All 3 prompt subsystems now
3554 inherit from BasePrompt.
3558 inherit from BasePrompt.
3555
3559
3556 * tools/release: updates for windows installer build and tag rpms
3560 * tools/release: updates for windows installer build and tag rpms
3557 with python version (since paths are fixed).
3561 with python version (since paths are fixed).
3558
3562
3559 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3563 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3560 which will become eventually obsolete. Also fixed the default
3564 which will become eventually obsolete. Also fixed the default
3561 prompt_in2 to use \D, so at least new users start with the correct
3565 prompt_in2 to use \D, so at least new users start with the correct
3562 defaults.
3566 defaults.
3563 WARNING: Users with existing ipythonrc files will need to apply
3567 WARNING: Users with existing ipythonrc files will need to apply
3564 this fix manually!
3568 this fix manually!
3565
3569
3566 * setup.py: make windows installer (.exe). This is finally the
3570 * setup.py: make windows installer (.exe). This is finally the
3567 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3571 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3568 which I hadn't included because it required Python 2.3 (or recent
3572 which I hadn't included because it required Python 2.3 (or recent
3569 distutils).
3573 distutils).
3570
3574
3571 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3575 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3572 usage of new '\D' escape.
3576 usage of new '\D' escape.
3573
3577
3574 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3578 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3575 lacks os.getuid())
3579 lacks os.getuid())
3576 (CachedOutput.set_colors): Added the ability to turn coloring
3580 (CachedOutput.set_colors): Added the ability to turn coloring
3577 on/off with @colors even for manually defined prompt colors. It
3581 on/off with @colors even for manually defined prompt colors. It
3578 uses a nasty global, but it works safely and via the generic color
3582 uses a nasty global, but it works safely and via the generic color
3579 handling mechanism.
3583 handling mechanism.
3580 (Prompt2.__init__): Introduced new escape '\D' for continuation
3584 (Prompt2.__init__): Introduced new escape '\D' for continuation
3581 prompts. It represents the counter ('\#') as dots.
3585 prompts. It represents the counter ('\#') as dots.
3582 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3586 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3583 need to update their ipythonrc files and replace '%n' with '\D' in
3587 need to update their ipythonrc files and replace '%n' with '\D' in
3584 their prompt_in2 settings everywhere. Sorry, but there's
3588 their prompt_in2 settings everywhere. Sorry, but there's
3585 otherwise no clean way to get all prompts to properly align. The
3589 otherwise no clean way to get all prompts to properly align. The
3586 ipythonrc shipped with IPython has been updated.
3590 ipythonrc shipped with IPython has been updated.
3587
3591
3588 2004-06-07 Fernando Perez <fperez@colorado.edu>
3592 2004-06-07 Fernando Perez <fperez@colorado.edu>
3589
3593
3590 * setup.py (isfile): Pass local_icons option to latex2html, so the
3594 * setup.py (isfile): Pass local_icons option to latex2html, so the
3591 resulting HTML file is self-contained. Thanks to
3595 resulting HTML file is self-contained. Thanks to
3592 dryice-AT-liu.com.cn for the tip.
3596 dryice-AT-liu.com.cn for the tip.
3593
3597
3594 * pysh.py: I created a new profile 'shell', which implements a
3598 * pysh.py: I created a new profile 'shell', which implements a
3595 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3599 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3596 system shell, nor will it become one anytime soon. It's mainly
3600 system shell, nor will it become one anytime soon. It's mainly
3597 meant to illustrate the use of the new flexible bash-like prompts.
3601 meant to illustrate the use of the new flexible bash-like prompts.
3598 I guess it could be used by hardy souls for true shell management,
3602 I guess it could be used by hardy souls for true shell management,
3599 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3603 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3600 profile. This uses the InterpreterExec extension provided by
3604 profile. This uses the InterpreterExec extension provided by
3601 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3605 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3602
3606
3603 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3607 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3604 auto-align itself with the length of the previous input prompt
3608 auto-align itself with the length of the previous input prompt
3605 (taking into account the invisible color escapes).
3609 (taking into account the invisible color escapes).
3606 (CachedOutput.__init__): Large restructuring of this class. Now
3610 (CachedOutput.__init__): Large restructuring of this class. Now
3607 all three prompts (primary1, primary2, output) are proper objects,
3611 all three prompts (primary1, primary2, output) are proper objects,
3608 managed by the 'parent' CachedOutput class. The code is still a
3612 managed by the 'parent' CachedOutput class. The code is still a
3609 bit hackish (all prompts share state via a pointer to the cache),
3613 bit hackish (all prompts share state via a pointer to the cache),
3610 but it's overall far cleaner than before.
3614 but it's overall far cleaner than before.
3611
3615
3612 * IPython/genutils.py (getoutputerror): modified to add verbose,
3616 * IPython/genutils.py (getoutputerror): modified to add verbose,
3613 debug and header options. This makes the interface of all getout*
3617 debug and header options. This makes the interface of all getout*
3614 functions uniform.
3618 functions uniform.
3615 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3619 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3616
3620
3617 * IPython/Magic.py (Magic.default_option): added a function to
3621 * IPython/Magic.py (Magic.default_option): added a function to
3618 allow registering default options for any magic command. This
3622 allow registering default options for any magic command. This
3619 makes it easy to have profiles which customize the magics globally
3623 makes it easy to have profiles which customize the magics globally
3620 for a certain use. The values set through this function are
3624 for a certain use. The values set through this function are
3621 picked up by the parse_options() method, which all magics should
3625 picked up by the parse_options() method, which all magics should
3622 use to parse their options.
3626 use to parse their options.
3623
3627
3624 * IPython/genutils.py (warn): modified the warnings framework to
3628 * IPython/genutils.py (warn): modified the warnings framework to
3625 use the Term I/O class. I'm trying to slowly unify all of
3629 use the Term I/O class. I'm trying to slowly unify all of
3626 IPython's I/O operations to pass through Term.
3630 IPython's I/O operations to pass through Term.
3627
3631
3628 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3632 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3629 the secondary prompt to correctly match the length of the primary
3633 the secondary prompt to correctly match the length of the primary
3630 one for any prompt. Now multi-line code will properly line up
3634 one for any prompt. Now multi-line code will properly line up
3631 even for path dependent prompts, such as the new ones available
3635 even for path dependent prompts, such as the new ones available
3632 via the prompt_specials.
3636 via the prompt_specials.
3633
3637
3634 2004-06-06 Fernando Perez <fperez@colorado.edu>
3638 2004-06-06 Fernando Perez <fperez@colorado.edu>
3635
3639
3636 * IPython/Prompts.py (prompt_specials): Added the ability to have
3640 * IPython/Prompts.py (prompt_specials): Added the ability to have
3637 bash-like special sequences in the prompts, which get
3641 bash-like special sequences in the prompts, which get
3638 automatically expanded. Things like hostname, current working
3642 automatically expanded. Things like hostname, current working
3639 directory and username are implemented already, but it's easy to
3643 directory and username are implemented already, but it's easy to
3640 add more in the future. Thanks to a patch by W.J. van der Laan
3644 add more in the future. Thanks to a patch by W.J. van der Laan
3641 <gnufnork-AT-hetdigitalegat.nl>
3645 <gnufnork-AT-hetdigitalegat.nl>
3642 (prompt_specials): Added color support for prompt strings, so
3646 (prompt_specials): Added color support for prompt strings, so
3643 users can define arbitrary color setups for their prompts.
3647 users can define arbitrary color setups for their prompts.
3644
3648
3645 2004-06-05 Fernando Perez <fperez@colorado.edu>
3649 2004-06-05 Fernando Perez <fperez@colorado.edu>
3646
3650
3647 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3651 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3648 code to load Gary Bishop's readline and configure it
3652 code to load Gary Bishop's readline and configure it
3649 automatically. Thanks to Gary for help on this.
3653 automatically. Thanks to Gary for help on this.
3650
3654
3651 2004-06-01 Fernando Perez <fperez@colorado.edu>
3655 2004-06-01 Fernando Perez <fperez@colorado.edu>
3652
3656
3653 * IPython/Logger.py (Logger.create_log): fix bug for logging
3657 * IPython/Logger.py (Logger.create_log): fix bug for logging
3654 with no filename (previous fix was incomplete).
3658 with no filename (previous fix was incomplete).
3655
3659
3656 2004-05-25 Fernando Perez <fperez@colorado.edu>
3660 2004-05-25 Fernando Perez <fperez@colorado.edu>
3657
3661
3658 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3662 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3659 parens would get passed to the shell.
3663 parens would get passed to the shell.
3660
3664
3661 2004-05-20 Fernando Perez <fperez@colorado.edu>
3665 2004-05-20 Fernando Perez <fperez@colorado.edu>
3662
3666
3663 * IPython/Magic.py (Magic.magic_prun): changed default profile
3667 * IPython/Magic.py (Magic.magic_prun): changed default profile
3664 sort order to 'time' (the more common profiling need).
3668 sort order to 'time' (the more common profiling need).
3665
3669
3666 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3670 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3667 so that source code shown is guaranteed in sync with the file on
3671 so that source code shown is guaranteed in sync with the file on
3668 disk (also changed in psource). Similar fix to the one for
3672 disk (also changed in psource). Similar fix to the one for
3669 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3673 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3670 <yann.ledu-AT-noos.fr>.
3674 <yann.ledu-AT-noos.fr>.
3671
3675
3672 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3676 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3673 with a single option would not be correctly parsed. Closes
3677 with a single option would not be correctly parsed. Closes
3674 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3678 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3675 introduced in 0.6.0 (on 2004-05-06).
3679 introduced in 0.6.0 (on 2004-05-06).
3676
3680
3677 2004-05-13 *** Released version 0.6.0
3681 2004-05-13 *** Released version 0.6.0
3678
3682
3679 2004-05-13 Fernando Perez <fperez@colorado.edu>
3683 2004-05-13 Fernando Perez <fperez@colorado.edu>
3680
3684
3681 * debian/: Added debian/ directory to CVS, so that debian support
3685 * debian/: Added debian/ directory to CVS, so that debian support
3682 is publicly accessible. The debian package is maintained by Jack
3686 is publicly accessible. The debian package is maintained by Jack
3683 Moffit <jack-AT-xiph.org>.
3687 Moffit <jack-AT-xiph.org>.
3684
3688
3685 * Documentation: included the notes about an ipython-based system
3689 * Documentation: included the notes about an ipython-based system
3686 shell (the hypothetical 'pysh') into the new_design.pdf document,
3690 shell (the hypothetical 'pysh') into the new_design.pdf document,
3687 so that these ideas get distributed to users along with the
3691 so that these ideas get distributed to users along with the
3688 official documentation.
3692 official documentation.
3689
3693
3690 2004-05-10 Fernando Perez <fperez@colorado.edu>
3694 2004-05-10 Fernando Perez <fperez@colorado.edu>
3691
3695
3692 * IPython/Logger.py (Logger.create_log): fix recently introduced
3696 * IPython/Logger.py (Logger.create_log): fix recently introduced
3693 bug (misindented line) where logstart would fail when not given an
3697 bug (misindented line) where logstart would fail when not given an
3694 explicit filename.
3698 explicit filename.
3695
3699
3696 2004-05-09 Fernando Perez <fperez@colorado.edu>
3700 2004-05-09 Fernando Perez <fperez@colorado.edu>
3697
3701
3698 * IPython/Magic.py (Magic.parse_options): skip system call when
3702 * IPython/Magic.py (Magic.parse_options): skip system call when
3699 there are no options to look for. Faster, cleaner for the common
3703 there are no options to look for. Faster, cleaner for the common
3700 case.
3704 case.
3701
3705
3702 * Documentation: many updates to the manual: describing Windows
3706 * Documentation: many updates to the manual: describing Windows
3703 support better, Gnuplot updates, credits, misc small stuff. Also
3707 support better, Gnuplot updates, credits, misc small stuff. Also
3704 updated the new_design doc a bit.
3708 updated the new_design doc a bit.
3705
3709
3706 2004-05-06 *** Released version 0.6.0.rc1
3710 2004-05-06 *** Released version 0.6.0.rc1
3707
3711
3708 2004-05-06 Fernando Perez <fperez@colorado.edu>
3712 2004-05-06 Fernando Perez <fperez@colorado.edu>
3709
3713
3710 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3714 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3711 operations to use the vastly more efficient list/''.join() method.
3715 operations to use the vastly more efficient list/''.join() method.
3712 (FormattedTB.text): Fix
3716 (FormattedTB.text): Fix
3713 http://www.scipy.net/roundup/ipython/issue12 - exception source
3717 http://www.scipy.net/roundup/ipython/issue12 - exception source
3714 extract not updated after reload. Thanks to Mike Salib
3718 extract not updated after reload. Thanks to Mike Salib
3715 <msalib-AT-mit.edu> for pinning the source of the problem.
3719 <msalib-AT-mit.edu> for pinning the source of the problem.
3716 Fortunately, the solution works inside ipython and doesn't require
3720 Fortunately, the solution works inside ipython and doesn't require
3717 any changes to python proper.
3721 any changes to python proper.
3718
3722
3719 * IPython/Magic.py (Magic.parse_options): Improved to process the
3723 * IPython/Magic.py (Magic.parse_options): Improved to process the
3720 argument list as a true shell would (by actually using the
3724 argument list as a true shell would (by actually using the
3721 underlying system shell). This way, all @magics automatically get
3725 underlying system shell). This way, all @magics automatically get
3722 shell expansion for variables. Thanks to a comment by Alex
3726 shell expansion for variables. Thanks to a comment by Alex
3723 Schmolck.
3727 Schmolck.
3724
3728
3725 2004-04-04 Fernando Perez <fperez@colorado.edu>
3729 2004-04-04 Fernando Perez <fperez@colorado.edu>
3726
3730
3727 * IPython/iplib.py (InteractiveShell.interact): Added a special
3731 * IPython/iplib.py (InteractiveShell.interact): Added a special
3728 trap for a debugger quit exception, which is basically impossible
3732 trap for a debugger quit exception, which is basically impossible
3729 to handle by normal mechanisms, given what pdb does to the stack.
3733 to handle by normal mechanisms, given what pdb does to the stack.
3730 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3734 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3731
3735
3732 2004-04-03 Fernando Perez <fperez@colorado.edu>
3736 2004-04-03 Fernando Perez <fperez@colorado.edu>
3733
3737
3734 * IPython/genutils.py (Term): Standardized the names of the Term
3738 * IPython/genutils.py (Term): Standardized the names of the Term
3735 class streams to cin/cout/cerr, following C++ naming conventions
3739 class streams to cin/cout/cerr, following C++ naming conventions
3736 (I can't use in/out/err because 'in' is not a valid attribute
3740 (I can't use in/out/err because 'in' is not a valid attribute
3737 name).
3741 name).
3738
3742
3739 * IPython/iplib.py (InteractiveShell.interact): don't increment
3743 * IPython/iplib.py (InteractiveShell.interact): don't increment
3740 the prompt if there's no user input. By Daniel 'Dang' Griffith
3744 the prompt if there's no user input. By Daniel 'Dang' Griffith
3741 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3745 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3742 Francois Pinard.
3746 Francois Pinard.
3743
3747
3744 2004-04-02 Fernando Perez <fperez@colorado.edu>
3748 2004-04-02 Fernando Perez <fperez@colorado.edu>
3745
3749
3746 * IPython/genutils.py (Stream.__init__): Modified to survive at
3750 * IPython/genutils.py (Stream.__init__): Modified to survive at
3747 least importing in contexts where stdin/out/err aren't true file
3751 least importing in contexts where stdin/out/err aren't true file
3748 objects, such as PyCrust (they lack fileno() and mode). However,
3752 objects, such as PyCrust (they lack fileno() and mode). However,
3749 the recovery facilities which rely on these things existing will
3753 the recovery facilities which rely on these things existing will
3750 not work.
3754 not work.
3751
3755
3752 2004-04-01 Fernando Perez <fperez@colorado.edu>
3756 2004-04-01 Fernando Perez <fperez@colorado.edu>
3753
3757
3754 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3758 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3755 use the new getoutputerror() function, so it properly
3759 use the new getoutputerror() function, so it properly
3756 distinguishes stdout/err.
3760 distinguishes stdout/err.
3757
3761
3758 * IPython/genutils.py (getoutputerror): added a function to
3762 * IPython/genutils.py (getoutputerror): added a function to
3759 capture separately the standard output and error of a command.
3763 capture separately the standard output and error of a command.
3760 After a comment from dang on the mailing lists. This code is
3764 After a comment from dang on the mailing lists. This code is
3761 basically a modified version of commands.getstatusoutput(), from
3765 basically a modified version of commands.getstatusoutput(), from
3762 the standard library.
3766 the standard library.
3763
3767
3764 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3768 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3765 '!!' as a special syntax (shorthand) to access @sx.
3769 '!!' as a special syntax (shorthand) to access @sx.
3766
3770
3767 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3771 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3768 command and return its output as a list split on '\n'.
3772 command and return its output as a list split on '\n'.
3769
3773
3770 2004-03-31 Fernando Perez <fperez@colorado.edu>
3774 2004-03-31 Fernando Perez <fperez@colorado.edu>
3771
3775
3772 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3776 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3773 method to dictionaries used as FakeModule instances if they lack
3777 method to dictionaries used as FakeModule instances if they lack
3774 it. At least pydoc in python2.3 breaks for runtime-defined
3778 it. At least pydoc in python2.3 breaks for runtime-defined
3775 functions without this hack. At some point I need to _really_
3779 functions without this hack. At some point I need to _really_
3776 understand what FakeModule is doing, because it's a gross hack.
3780 understand what FakeModule is doing, because it's a gross hack.
3777 But it solves Arnd's problem for now...
3781 But it solves Arnd's problem for now...
3778
3782
3779 2004-02-27 Fernando Perez <fperez@colorado.edu>
3783 2004-02-27 Fernando Perez <fperez@colorado.edu>
3780
3784
3781 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3785 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3782 mode would behave erratically. Also increased the number of
3786 mode would behave erratically. Also increased the number of
3783 possible logs in rotate mod to 999. Thanks to Rod Holland
3787 possible logs in rotate mod to 999. Thanks to Rod Holland
3784 <rhh@StructureLABS.com> for the report and fixes.
3788 <rhh@StructureLABS.com> for the report and fixes.
3785
3789
3786 2004-02-26 Fernando Perez <fperez@colorado.edu>
3790 2004-02-26 Fernando Perez <fperez@colorado.edu>
3787
3791
3788 * IPython/genutils.py (page): Check that the curses module really
3792 * IPython/genutils.py (page): Check that the curses module really
3789 has the initscr attribute before trying to use it. For some
3793 has the initscr attribute before trying to use it. For some
3790 reason, the Solaris curses module is missing this. I think this
3794 reason, the Solaris curses module is missing this. I think this
3791 should be considered a Solaris python bug, but I'm not sure.
3795 should be considered a Solaris python bug, but I'm not sure.
3792
3796
3793 2004-01-17 Fernando Perez <fperez@colorado.edu>
3797 2004-01-17 Fernando Perez <fperez@colorado.edu>
3794
3798
3795 * IPython/genutils.py (Stream.__init__): Changes to try to make
3799 * IPython/genutils.py (Stream.__init__): Changes to try to make
3796 ipython robust against stdin/out/err being closed by the user.
3800 ipython robust against stdin/out/err being closed by the user.
3797 This is 'user error' (and blocks a normal python session, at least
3801 This is 'user error' (and blocks a normal python session, at least
3798 the stdout case). However, Ipython should be able to survive such
3802 the stdout case). However, Ipython should be able to survive such
3799 instances of abuse as gracefully as possible. To simplify the
3803 instances of abuse as gracefully as possible. To simplify the
3800 coding and maintain compatibility with Gary Bishop's Term
3804 coding and maintain compatibility with Gary Bishop's Term
3801 contributions, I've made use of classmethods for this. I think
3805 contributions, I've made use of classmethods for this. I think
3802 this introduces a dependency on python 2.2.
3806 this introduces a dependency on python 2.2.
3803
3807
3804 2004-01-13 Fernando Perez <fperez@colorado.edu>
3808 2004-01-13 Fernando Perez <fperez@colorado.edu>
3805
3809
3806 * IPython/numutils.py (exp_safe): simplified the code a bit and
3810 * IPython/numutils.py (exp_safe): simplified the code a bit and
3807 removed the need for importing the kinds module altogether.
3811 removed the need for importing the kinds module altogether.
3808
3812
3809 2004-01-06 Fernando Perez <fperez@colorado.edu>
3813 2004-01-06 Fernando Perez <fperez@colorado.edu>
3810
3814
3811 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3815 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3812 a magic function instead, after some community feedback. No
3816 a magic function instead, after some community feedback. No
3813 special syntax will exist for it, but its name is deliberately
3817 special syntax will exist for it, but its name is deliberately
3814 very short.
3818 very short.
3815
3819
3816 2003-12-20 Fernando Perez <fperez@colorado.edu>
3820 2003-12-20 Fernando Perez <fperez@colorado.edu>
3817
3821
3818 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3822 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3819 new functionality, to automagically assign the result of a shell
3823 new functionality, to automagically assign the result of a shell
3820 command to a variable. I'll solicit some community feedback on
3824 command to a variable. I'll solicit some community feedback on
3821 this before making it permanent.
3825 this before making it permanent.
3822
3826
3823 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3827 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3824 requested about callables for which inspect couldn't obtain a
3828 requested about callables for which inspect couldn't obtain a
3825 proper argspec. Thanks to a crash report sent by Etienne
3829 proper argspec. Thanks to a crash report sent by Etienne
3826 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3830 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3827
3831
3828 2003-12-09 Fernando Perez <fperez@colorado.edu>
3832 2003-12-09 Fernando Perez <fperez@colorado.edu>
3829
3833
3830 * IPython/genutils.py (page): patch for the pager to work across
3834 * IPython/genutils.py (page): patch for the pager to work across
3831 various versions of Windows. By Gary Bishop.
3835 various versions of Windows. By Gary Bishop.
3832
3836
3833 2003-12-04 Fernando Perez <fperez@colorado.edu>
3837 2003-12-04 Fernando Perez <fperez@colorado.edu>
3834
3838
3835 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3839 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3836 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3840 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3837 While I tested this and it looks ok, there may still be corner
3841 While I tested this and it looks ok, there may still be corner
3838 cases I've missed.
3842 cases I've missed.
3839
3843
3840 2003-12-01 Fernando Perez <fperez@colorado.edu>
3844 2003-12-01 Fernando Perez <fperez@colorado.edu>
3841
3845
3842 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3846 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3843 where a line like 'p,q=1,2' would fail because the automagic
3847 where a line like 'p,q=1,2' would fail because the automagic
3844 system would be triggered for @p.
3848 system would be triggered for @p.
3845
3849
3846 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3850 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3847 cleanups, code unmodified.
3851 cleanups, code unmodified.
3848
3852
3849 * IPython/genutils.py (Term): added a class for IPython to handle
3853 * IPython/genutils.py (Term): added a class for IPython to handle
3850 output. In most cases it will just be a proxy for stdout/err, but
3854 output. In most cases it will just be a proxy for stdout/err, but
3851 having this allows modifications to be made for some platforms,
3855 having this allows modifications to be made for some platforms,
3852 such as handling color escapes under Windows. All of this code
3856 such as handling color escapes under Windows. All of this code
3853 was contributed by Gary Bishop, with minor modifications by me.
3857 was contributed by Gary Bishop, with minor modifications by me.
3854 The actual changes affect many files.
3858 The actual changes affect many files.
3855
3859
3856 2003-11-30 Fernando Perez <fperez@colorado.edu>
3860 2003-11-30 Fernando Perez <fperez@colorado.edu>
3857
3861
3858 * IPython/iplib.py (file_matches): new completion code, courtesy
3862 * IPython/iplib.py (file_matches): new completion code, courtesy
3859 of Jeff Collins. This enables filename completion again under
3863 of Jeff Collins. This enables filename completion again under
3860 python 2.3, which disabled it at the C level.
3864 python 2.3, which disabled it at the C level.
3861
3865
3862 2003-11-11 Fernando Perez <fperez@colorado.edu>
3866 2003-11-11 Fernando Perez <fperez@colorado.edu>
3863
3867
3864 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3868 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3865 for Numeric.array(map(...)), but often convenient.
3869 for Numeric.array(map(...)), but often convenient.
3866
3870
3867 2003-11-05 Fernando Perez <fperez@colorado.edu>
3871 2003-11-05 Fernando Perez <fperez@colorado.edu>
3868
3872
3869 * IPython/numutils.py (frange): Changed a call from int() to
3873 * IPython/numutils.py (frange): Changed a call from int() to
3870 int(round()) to prevent a problem reported with arange() in the
3874 int(round()) to prevent a problem reported with arange() in the
3871 numpy list.
3875 numpy list.
3872
3876
3873 2003-10-06 Fernando Perez <fperez@colorado.edu>
3877 2003-10-06 Fernando Perez <fperez@colorado.edu>
3874
3878
3875 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3879 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3876 prevent crashes if sys lacks an argv attribute (it happens with
3880 prevent crashes if sys lacks an argv attribute (it happens with
3877 embedded interpreters which build a bare-bones sys module).
3881 embedded interpreters which build a bare-bones sys module).
3878 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3882 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3879
3883
3880 2003-09-24 Fernando Perez <fperez@colorado.edu>
3884 2003-09-24 Fernando Perez <fperez@colorado.edu>
3881
3885
3882 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3886 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3883 to protect against poorly written user objects where __getattr__
3887 to protect against poorly written user objects where __getattr__
3884 raises exceptions other than AttributeError. Thanks to a bug
3888 raises exceptions other than AttributeError. Thanks to a bug
3885 report by Oliver Sander <osander-AT-gmx.de>.
3889 report by Oliver Sander <osander-AT-gmx.de>.
3886
3890
3887 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3891 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3888 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3892 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3889
3893
3890 2003-09-09 Fernando Perez <fperez@colorado.edu>
3894 2003-09-09 Fernando Perez <fperez@colorado.edu>
3891
3895
3892 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3896 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3893 unpacking a list whith a callable as first element would
3897 unpacking a list whith a callable as first element would
3894 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3898 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3895 Collins.
3899 Collins.
3896
3900
3897 2003-08-25 *** Released version 0.5.0
3901 2003-08-25 *** Released version 0.5.0
3898
3902
3899 2003-08-22 Fernando Perez <fperez@colorado.edu>
3903 2003-08-22 Fernando Perez <fperez@colorado.edu>
3900
3904
3901 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3905 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3902 improperly defined user exceptions. Thanks to feedback from Mark
3906 improperly defined user exceptions. Thanks to feedback from Mark
3903 Russell <mrussell-AT-verio.net>.
3907 Russell <mrussell-AT-verio.net>.
3904
3908
3905 2003-08-20 Fernando Perez <fperez@colorado.edu>
3909 2003-08-20 Fernando Perez <fperez@colorado.edu>
3906
3910
3907 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3911 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3908 printing so that it would print multi-line string forms starting
3912 printing so that it would print multi-line string forms starting
3909 with a new line. This way the formatting is better respected for
3913 with a new line. This way the formatting is better respected for
3910 objects which work hard to make nice string forms.
3914 objects which work hard to make nice string forms.
3911
3915
3912 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3916 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3913 autocall would overtake data access for objects with both
3917 autocall would overtake data access for objects with both
3914 __getitem__ and __call__.
3918 __getitem__ and __call__.
3915
3919
3916 2003-08-19 *** Released version 0.5.0-rc1
3920 2003-08-19 *** Released version 0.5.0-rc1
3917
3921
3918 2003-08-19 Fernando Perez <fperez@colorado.edu>
3922 2003-08-19 Fernando Perez <fperez@colorado.edu>
3919
3923
3920 * IPython/deep_reload.py (load_tail): single tiny change here
3924 * IPython/deep_reload.py (load_tail): single tiny change here
3921 seems to fix the long-standing bug of dreload() failing to work
3925 seems to fix the long-standing bug of dreload() failing to work
3922 for dotted names. But this module is pretty tricky, so I may have
3926 for dotted names. But this module is pretty tricky, so I may have
3923 missed some subtlety. Needs more testing!.
3927 missed some subtlety. Needs more testing!.
3924
3928
3925 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3929 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3926 exceptions which have badly implemented __str__ methods.
3930 exceptions which have badly implemented __str__ methods.
3927 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3931 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3928 which I've been getting reports about from Python 2.3 users. I
3932 which I've been getting reports about from Python 2.3 users. I
3929 wish I had a simple test case to reproduce the problem, so I could
3933 wish I had a simple test case to reproduce the problem, so I could
3930 either write a cleaner workaround or file a bug report if
3934 either write a cleaner workaround or file a bug report if
3931 necessary.
3935 necessary.
3932
3936
3933 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3937 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3934 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3938 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3935 a bug report by Tjabo Kloppenburg.
3939 a bug report by Tjabo Kloppenburg.
3936
3940
3937 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3941 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3938 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3942 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3939 seems rather unstable. Thanks to a bug report by Tjabo
3943 seems rather unstable. Thanks to a bug report by Tjabo
3940 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3944 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3941
3945
3942 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3946 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3943 this out soon because of the critical fixes in the inner loop for
3947 this out soon because of the critical fixes in the inner loop for
3944 generators.
3948 generators.
3945
3949
3946 * IPython/Magic.py (Magic.getargspec): removed. This (and
3950 * IPython/Magic.py (Magic.getargspec): removed. This (and
3947 _get_def) have been obsoleted by OInspect for a long time, I
3951 _get_def) have been obsoleted by OInspect for a long time, I
3948 hadn't noticed that they were dead code.
3952 hadn't noticed that they were dead code.
3949 (Magic._ofind): restored _ofind functionality for a few literals
3953 (Magic._ofind): restored _ofind functionality for a few literals
3950 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3954 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3951 for things like "hello".capitalize?, since that would require a
3955 for things like "hello".capitalize?, since that would require a
3952 potentially dangerous eval() again.
3956 potentially dangerous eval() again.
3953
3957
3954 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3958 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3955 logic a bit more to clean up the escapes handling and minimize the
3959 logic a bit more to clean up the escapes handling and minimize the
3956 use of _ofind to only necessary cases. The interactive 'feel' of
3960 use of _ofind to only necessary cases. The interactive 'feel' of
3957 IPython should have improved quite a bit with the changes in
3961 IPython should have improved quite a bit with the changes in
3958 _prefilter and _ofind (besides being far safer than before).
3962 _prefilter and _ofind (besides being far safer than before).
3959
3963
3960 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3964 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3961 obscure, never reported). Edit would fail to find the object to
3965 obscure, never reported). Edit would fail to find the object to
3962 edit under some circumstances.
3966 edit under some circumstances.
3963 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3967 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3964 which were causing double-calling of generators. Those eval calls
3968 which were causing double-calling of generators. Those eval calls
3965 were _very_ dangerous, since code with side effects could be
3969 were _very_ dangerous, since code with side effects could be
3966 triggered. As they say, 'eval is evil'... These were the
3970 triggered. As they say, 'eval is evil'... These were the
3967 nastiest evals in IPython. Besides, _ofind is now far simpler,
3971 nastiest evals in IPython. Besides, _ofind is now far simpler,
3968 and it should also be quite a bit faster. Its use of inspect is
3972 and it should also be quite a bit faster. Its use of inspect is
3969 also safer, so perhaps some of the inspect-related crashes I've
3973 also safer, so perhaps some of the inspect-related crashes I've
3970 seen lately with Python 2.3 might be taken care of. That will
3974 seen lately with Python 2.3 might be taken care of. That will
3971 need more testing.
3975 need more testing.
3972
3976
3973 2003-08-17 Fernando Perez <fperez@colorado.edu>
3977 2003-08-17 Fernando Perez <fperez@colorado.edu>
3974
3978
3975 * IPython/iplib.py (InteractiveShell._prefilter): significant
3979 * IPython/iplib.py (InteractiveShell._prefilter): significant
3976 simplifications to the logic for handling user escapes. Faster
3980 simplifications to the logic for handling user escapes. Faster
3977 and simpler code.
3981 and simpler code.
3978
3982
3979 2003-08-14 Fernando Perez <fperez@colorado.edu>
3983 2003-08-14 Fernando Perez <fperez@colorado.edu>
3980
3984
3981 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3985 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3982 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3986 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3983 but it should be quite a bit faster. And the recursive version
3987 but it should be quite a bit faster. And the recursive version
3984 generated O(log N) intermediate storage for all rank>1 arrays,
3988 generated O(log N) intermediate storage for all rank>1 arrays,
3985 even if they were contiguous.
3989 even if they were contiguous.
3986 (l1norm): Added this function.
3990 (l1norm): Added this function.
3987 (norm): Added this function for arbitrary norms (including
3991 (norm): Added this function for arbitrary norms (including
3988 l-infinity). l1 and l2 are still special cases for convenience
3992 l-infinity). l1 and l2 are still special cases for convenience
3989 and speed.
3993 and speed.
3990
3994
3991 2003-08-03 Fernando Perez <fperez@colorado.edu>
3995 2003-08-03 Fernando Perez <fperez@colorado.edu>
3992
3996
3993 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3997 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3994 exceptions, which now raise PendingDeprecationWarnings in Python
3998 exceptions, which now raise PendingDeprecationWarnings in Python
3995 2.3. There were some in Magic and some in Gnuplot2.
3999 2.3. There were some in Magic and some in Gnuplot2.
3996
4000
3997 2003-06-30 Fernando Perez <fperez@colorado.edu>
4001 2003-06-30 Fernando Perez <fperez@colorado.edu>
3998
4002
3999 * IPython/genutils.py (page): modified to call curses only for
4003 * IPython/genutils.py (page): modified to call curses only for
4000 terminals where TERM=='xterm'. After problems under many other
4004 terminals where TERM=='xterm'. After problems under many other
4001 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4005 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4002
4006
4003 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4007 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4004 would be triggered when readline was absent. This was just an old
4008 would be triggered when readline was absent. This was just an old
4005 debugging statement I'd forgotten to take out.
4009 debugging statement I'd forgotten to take out.
4006
4010
4007 2003-06-20 Fernando Perez <fperez@colorado.edu>
4011 2003-06-20 Fernando Perez <fperez@colorado.edu>
4008
4012
4009 * IPython/genutils.py (clock): modified to return only user time
4013 * IPython/genutils.py (clock): modified to return only user time
4010 (not counting system time), after a discussion on scipy. While
4014 (not counting system time), after a discussion on scipy. While
4011 system time may be a useful quantity occasionally, it may much
4015 system time may be a useful quantity occasionally, it may much
4012 more easily be skewed by occasional swapping or other similar
4016 more easily be skewed by occasional swapping or other similar
4013 activity.
4017 activity.
4014
4018
4015 2003-06-05 Fernando Perez <fperez@colorado.edu>
4019 2003-06-05 Fernando Perez <fperez@colorado.edu>
4016
4020
4017 * IPython/numutils.py (identity): new function, for building
4021 * IPython/numutils.py (identity): new function, for building
4018 arbitrary rank Kronecker deltas (mostly backwards compatible with
4022 arbitrary rank Kronecker deltas (mostly backwards compatible with
4019 Numeric.identity)
4023 Numeric.identity)
4020
4024
4021 2003-06-03 Fernando Perez <fperez@colorado.edu>
4025 2003-06-03 Fernando Perez <fperez@colorado.edu>
4022
4026
4023 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4027 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4024 arguments passed to magics with spaces, to allow trailing '\' to
4028 arguments passed to magics with spaces, to allow trailing '\' to
4025 work normally (mainly for Windows users).
4029 work normally (mainly for Windows users).
4026
4030
4027 2003-05-29 Fernando Perez <fperez@colorado.edu>
4031 2003-05-29 Fernando Perez <fperez@colorado.edu>
4028
4032
4029 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4033 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4030 instead of pydoc.help. This fixes a bizarre behavior where
4034 instead of pydoc.help. This fixes a bizarre behavior where
4031 printing '%s' % locals() would trigger the help system. Now
4035 printing '%s' % locals() would trigger the help system. Now
4032 ipython behaves like normal python does.
4036 ipython behaves like normal python does.
4033
4037
4034 Note that if one does 'from pydoc import help', the bizarre
4038 Note that if one does 'from pydoc import help', the bizarre
4035 behavior returns, but this will also happen in normal python, so
4039 behavior returns, but this will also happen in normal python, so
4036 it's not an ipython bug anymore (it has to do with how pydoc.help
4040 it's not an ipython bug anymore (it has to do with how pydoc.help
4037 is implemented).
4041 is implemented).
4038
4042
4039 2003-05-22 Fernando Perez <fperez@colorado.edu>
4043 2003-05-22 Fernando Perez <fperez@colorado.edu>
4040
4044
4041 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4045 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4042 return [] instead of None when nothing matches, also match to end
4046 return [] instead of None when nothing matches, also match to end
4043 of line. Patch by Gary Bishop.
4047 of line. Patch by Gary Bishop.
4044
4048
4045 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4049 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4046 protection as before, for files passed on the command line. This
4050 protection as before, for files passed on the command line. This
4047 prevents the CrashHandler from kicking in if user files call into
4051 prevents the CrashHandler from kicking in if user files call into
4048 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4052 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4049 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4053 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4050
4054
4051 2003-05-20 *** Released version 0.4.0
4055 2003-05-20 *** Released version 0.4.0
4052
4056
4053 2003-05-20 Fernando Perez <fperez@colorado.edu>
4057 2003-05-20 Fernando Perez <fperez@colorado.edu>
4054
4058
4055 * setup.py: added support for manpages. It's a bit hackish b/c of
4059 * setup.py: added support for manpages. It's a bit hackish b/c of
4056 a bug in the way the bdist_rpm distutils target handles gzipped
4060 a bug in the way the bdist_rpm distutils target handles gzipped
4057 manpages, but it works. After a patch by Jack.
4061 manpages, but it works. After a patch by Jack.
4058
4062
4059 2003-05-19 Fernando Perez <fperez@colorado.edu>
4063 2003-05-19 Fernando Perez <fperez@colorado.edu>
4060
4064
4061 * IPython/numutils.py: added a mockup of the kinds module, since
4065 * IPython/numutils.py: added a mockup of the kinds module, since
4062 it was recently removed from Numeric. This way, numutils will
4066 it was recently removed from Numeric. This way, numutils will
4063 work for all users even if they are missing kinds.
4067 work for all users even if they are missing kinds.
4064
4068
4065 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4069 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4066 failure, which can occur with SWIG-wrapped extensions. After a
4070 failure, which can occur with SWIG-wrapped extensions. After a
4067 crash report from Prabhu.
4071 crash report from Prabhu.
4068
4072
4069 2003-05-16 Fernando Perez <fperez@colorado.edu>
4073 2003-05-16 Fernando Perez <fperez@colorado.edu>
4070
4074
4071 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4075 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4072 protect ipython from user code which may call directly
4076 protect ipython from user code which may call directly
4073 sys.excepthook (this looks like an ipython crash to the user, even
4077 sys.excepthook (this looks like an ipython crash to the user, even
4074 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4078 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4075 This is especially important to help users of WxWindows, but may
4079 This is especially important to help users of WxWindows, but may
4076 also be useful in other cases.
4080 also be useful in other cases.
4077
4081
4078 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4082 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4079 an optional tb_offset to be specified, and to preserve exception
4083 an optional tb_offset to be specified, and to preserve exception
4080 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4084 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4081
4085
4082 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4086 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4083
4087
4084 2003-05-15 Fernando Perez <fperez@colorado.edu>
4088 2003-05-15 Fernando Perez <fperez@colorado.edu>
4085
4089
4086 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4090 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4087 installing for a new user under Windows.
4091 installing for a new user under Windows.
4088
4092
4089 2003-05-12 Fernando Perez <fperez@colorado.edu>
4093 2003-05-12 Fernando Perez <fperez@colorado.edu>
4090
4094
4091 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4095 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4092 handler for Emacs comint-based lines. Currently it doesn't do
4096 handler for Emacs comint-based lines. Currently it doesn't do
4093 much (but importantly, it doesn't update the history cache). In
4097 much (but importantly, it doesn't update the history cache). In
4094 the future it may be expanded if Alex needs more functionality
4098 the future it may be expanded if Alex needs more functionality
4095 there.
4099 there.
4096
4100
4097 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4101 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4098 info to crash reports.
4102 info to crash reports.
4099
4103
4100 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4104 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4101 just like Python's -c. Also fixed crash with invalid -color
4105 just like Python's -c. Also fixed crash with invalid -color
4102 option value at startup. Thanks to Will French
4106 option value at startup. Thanks to Will French
4103 <wfrench-AT-bestweb.net> for the bug report.
4107 <wfrench-AT-bestweb.net> for the bug report.
4104
4108
4105 2003-05-09 Fernando Perez <fperez@colorado.edu>
4109 2003-05-09 Fernando Perez <fperez@colorado.edu>
4106
4110
4107 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4111 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4108 to EvalDict (it's a mapping, after all) and simplified its code
4112 to EvalDict (it's a mapping, after all) and simplified its code
4109 quite a bit, after a nice discussion on c.l.py where Gustavo
4113 quite a bit, after a nice discussion on c.l.py where Gustavo
4110 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4114 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4111
4115
4112 2003-04-30 Fernando Perez <fperez@colorado.edu>
4116 2003-04-30 Fernando Perez <fperez@colorado.edu>
4113
4117
4114 * IPython/genutils.py (timings_out): modified it to reduce its
4118 * IPython/genutils.py (timings_out): modified it to reduce its
4115 overhead in the common reps==1 case.
4119 overhead in the common reps==1 case.
4116
4120
4117 2003-04-29 Fernando Perez <fperez@colorado.edu>
4121 2003-04-29 Fernando Perez <fperez@colorado.edu>
4118
4122
4119 * IPython/genutils.py (timings_out): Modified to use the resource
4123 * IPython/genutils.py (timings_out): Modified to use the resource
4120 module, which avoids the wraparound problems of time.clock().
4124 module, which avoids the wraparound problems of time.clock().
4121
4125
4122 2003-04-17 *** Released version 0.2.15pre4
4126 2003-04-17 *** Released version 0.2.15pre4
4123
4127
4124 2003-04-17 Fernando Perez <fperez@colorado.edu>
4128 2003-04-17 Fernando Perez <fperez@colorado.edu>
4125
4129
4126 * setup.py (scriptfiles): Split windows-specific stuff over to a
4130 * setup.py (scriptfiles): Split windows-specific stuff over to a
4127 separate file, in an attempt to have a Windows GUI installer.
4131 separate file, in an attempt to have a Windows GUI installer.
4128 That didn't work, but part of the groundwork is done.
4132 That didn't work, but part of the groundwork is done.
4129
4133
4130 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4134 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4131 indent/unindent with 4 spaces. Particularly useful in combination
4135 indent/unindent with 4 spaces. Particularly useful in combination
4132 with the new auto-indent option.
4136 with the new auto-indent option.
4133
4137
4134 2003-04-16 Fernando Perez <fperez@colorado.edu>
4138 2003-04-16 Fernando Perez <fperez@colorado.edu>
4135
4139
4136 * IPython/Magic.py: various replacements of self.rc for
4140 * IPython/Magic.py: various replacements of self.rc for
4137 self.shell.rc. A lot more remains to be done to fully disentangle
4141 self.shell.rc. A lot more remains to be done to fully disentangle
4138 this class from the main Shell class.
4142 this class from the main Shell class.
4139
4143
4140 * IPython/GnuplotRuntime.py: added checks for mouse support so
4144 * IPython/GnuplotRuntime.py: added checks for mouse support so
4141 that we don't try to enable it if the current gnuplot doesn't
4145 that we don't try to enable it if the current gnuplot doesn't
4142 really support it. Also added checks so that we don't try to
4146 really support it. Also added checks so that we don't try to
4143 enable persist under Windows (where Gnuplot doesn't recognize the
4147 enable persist under Windows (where Gnuplot doesn't recognize the
4144 option).
4148 option).
4145
4149
4146 * IPython/iplib.py (InteractiveShell.interact): Added optional
4150 * IPython/iplib.py (InteractiveShell.interact): Added optional
4147 auto-indenting code, after a patch by King C. Shu
4151 auto-indenting code, after a patch by King C. Shu
4148 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4152 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4149 get along well with pasting indented code. If I ever figure out
4153 get along well with pasting indented code. If I ever figure out
4150 how to make that part go well, it will become on by default.
4154 how to make that part go well, it will become on by default.
4151
4155
4152 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4156 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4153 crash ipython if there was an unmatched '%' in the user's prompt
4157 crash ipython if there was an unmatched '%' in the user's prompt
4154 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4158 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4155
4159
4156 * IPython/iplib.py (InteractiveShell.interact): removed the
4160 * IPython/iplib.py (InteractiveShell.interact): removed the
4157 ability to ask the user whether he wants to crash or not at the
4161 ability to ask the user whether he wants to crash or not at the
4158 'last line' exception handler. Calling functions at that point
4162 'last line' exception handler. Calling functions at that point
4159 changes the stack, and the error reports would have incorrect
4163 changes the stack, and the error reports would have incorrect
4160 tracebacks.
4164 tracebacks.
4161
4165
4162 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4166 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4163 pass through a peger a pretty-printed form of any object. After a
4167 pass through a peger a pretty-printed form of any object. After a
4164 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4168 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4165
4169
4166 2003-04-14 Fernando Perez <fperez@colorado.edu>
4170 2003-04-14 Fernando Perez <fperez@colorado.edu>
4167
4171
4168 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4172 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4169 all files in ~ would be modified at first install (instead of
4173 all files in ~ would be modified at first install (instead of
4170 ~/.ipython). This could be potentially disastrous, as the
4174 ~/.ipython). This could be potentially disastrous, as the
4171 modification (make line-endings native) could damage binary files.
4175 modification (make line-endings native) could damage binary files.
4172
4176
4173 2003-04-10 Fernando Perez <fperez@colorado.edu>
4177 2003-04-10 Fernando Perez <fperez@colorado.edu>
4174
4178
4175 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4179 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4176 handle only lines which are invalid python. This now means that
4180 handle only lines which are invalid python. This now means that
4177 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4181 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4178 for the bug report.
4182 for the bug report.
4179
4183
4180 2003-04-01 Fernando Perez <fperez@colorado.edu>
4184 2003-04-01 Fernando Perez <fperez@colorado.edu>
4181
4185
4182 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4186 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4183 where failing to set sys.last_traceback would crash pdb.pm().
4187 where failing to set sys.last_traceback would crash pdb.pm().
4184 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4188 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4185 report.
4189 report.
4186
4190
4187 2003-03-25 Fernando Perez <fperez@colorado.edu>
4191 2003-03-25 Fernando Perez <fperez@colorado.edu>
4188
4192
4189 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4193 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4190 before printing it (it had a lot of spurious blank lines at the
4194 before printing it (it had a lot of spurious blank lines at the
4191 end).
4195 end).
4192
4196
4193 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4197 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4194 output would be sent 21 times! Obviously people don't use this
4198 output would be sent 21 times! Obviously people don't use this
4195 too often, or I would have heard about it.
4199 too often, or I would have heard about it.
4196
4200
4197 2003-03-24 Fernando Perez <fperez@colorado.edu>
4201 2003-03-24 Fernando Perez <fperez@colorado.edu>
4198
4202
4199 * setup.py (scriptfiles): renamed the data_files parameter from
4203 * setup.py (scriptfiles): renamed the data_files parameter from
4200 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4204 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4201 for the patch.
4205 for the patch.
4202
4206
4203 2003-03-20 Fernando Perez <fperez@colorado.edu>
4207 2003-03-20 Fernando Perez <fperez@colorado.edu>
4204
4208
4205 * IPython/genutils.py (error): added error() and fatal()
4209 * IPython/genutils.py (error): added error() and fatal()
4206 functions.
4210 functions.
4207
4211
4208 2003-03-18 *** Released version 0.2.15pre3
4212 2003-03-18 *** Released version 0.2.15pre3
4209
4213
4210 2003-03-18 Fernando Perez <fperez@colorado.edu>
4214 2003-03-18 Fernando Perez <fperez@colorado.edu>
4211
4215
4212 * setupext/install_data_ext.py
4216 * setupext/install_data_ext.py
4213 (install_data_ext.initialize_options): Class contributed by Jack
4217 (install_data_ext.initialize_options): Class contributed by Jack
4214 Moffit for fixing the old distutils hack. He is sending this to
4218 Moffit for fixing the old distutils hack. He is sending this to
4215 the distutils folks so in the future we may not need it as a
4219 the distutils folks so in the future we may not need it as a
4216 private fix.
4220 private fix.
4217
4221
4218 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4222 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4219 changes for Debian packaging. See his patch for full details.
4223 changes for Debian packaging. See his patch for full details.
4220 The old distutils hack of making the ipythonrc* files carry a
4224 The old distutils hack of making the ipythonrc* files carry a
4221 bogus .py extension is gone, at last. Examples were moved to a
4225 bogus .py extension is gone, at last. Examples were moved to a
4222 separate subdir under doc/, and the separate executable scripts
4226 separate subdir under doc/, and the separate executable scripts
4223 now live in their own directory. Overall a great cleanup. The
4227 now live in their own directory. Overall a great cleanup. The
4224 manual was updated to use the new files, and setup.py has been
4228 manual was updated to use the new files, and setup.py has been
4225 fixed for this setup.
4229 fixed for this setup.
4226
4230
4227 * IPython/PyColorize.py (Parser.usage): made non-executable and
4231 * IPython/PyColorize.py (Parser.usage): made non-executable and
4228 created a pycolor wrapper around it to be included as a script.
4232 created a pycolor wrapper around it to be included as a script.
4229
4233
4230 2003-03-12 *** Released version 0.2.15pre2
4234 2003-03-12 *** Released version 0.2.15pre2
4231
4235
4232 2003-03-12 Fernando Perez <fperez@colorado.edu>
4236 2003-03-12 Fernando Perez <fperez@colorado.edu>
4233
4237
4234 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4238 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4235 long-standing problem with garbage characters in some terminals.
4239 long-standing problem with garbage characters in some terminals.
4236 The issue was really that the \001 and \002 escapes must _only_ be
4240 The issue was really that the \001 and \002 escapes must _only_ be
4237 passed to input prompts (which call readline), but _never_ to
4241 passed to input prompts (which call readline), but _never_ to
4238 normal text to be printed on screen. I changed ColorANSI to have
4242 normal text to be printed on screen. I changed ColorANSI to have
4239 two classes: TermColors and InputTermColors, each with the
4243 two classes: TermColors and InputTermColors, each with the
4240 appropriate escapes for input prompts or normal text. The code in
4244 appropriate escapes for input prompts or normal text. The code in
4241 Prompts.py got slightly more complicated, but this very old and
4245 Prompts.py got slightly more complicated, but this very old and
4242 annoying bug is finally fixed.
4246 annoying bug is finally fixed.
4243
4247
4244 All the credit for nailing down the real origin of this problem
4248 All the credit for nailing down the real origin of this problem
4245 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4249 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4246 *Many* thanks to him for spending quite a bit of effort on this.
4250 *Many* thanks to him for spending quite a bit of effort on this.
4247
4251
4248 2003-03-05 *** Released version 0.2.15pre1
4252 2003-03-05 *** Released version 0.2.15pre1
4249
4253
4250 2003-03-03 Fernando Perez <fperez@colorado.edu>
4254 2003-03-03 Fernando Perez <fperez@colorado.edu>
4251
4255
4252 * IPython/FakeModule.py: Moved the former _FakeModule to a
4256 * IPython/FakeModule.py: Moved the former _FakeModule to a
4253 separate file, because it's also needed by Magic (to fix a similar
4257 separate file, because it's also needed by Magic (to fix a similar
4254 pickle-related issue in @run).
4258 pickle-related issue in @run).
4255
4259
4256 2003-03-02 Fernando Perez <fperez@colorado.edu>
4260 2003-03-02 Fernando Perez <fperez@colorado.edu>
4257
4261
4258 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4262 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4259 the autocall option at runtime.
4263 the autocall option at runtime.
4260 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4264 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4261 across Magic.py to start separating Magic from InteractiveShell.
4265 across Magic.py to start separating Magic from InteractiveShell.
4262 (Magic._ofind): Fixed to return proper namespace for dotted
4266 (Magic._ofind): Fixed to return proper namespace for dotted
4263 names. Before, a dotted name would always return 'not currently
4267 names. Before, a dotted name would always return 'not currently
4264 defined', because it would find the 'parent'. s.x would be found,
4268 defined', because it would find the 'parent'. s.x would be found,
4265 but since 'x' isn't defined by itself, it would get confused.
4269 but since 'x' isn't defined by itself, it would get confused.
4266 (Magic.magic_run): Fixed pickling problems reported by Ralf
4270 (Magic.magic_run): Fixed pickling problems reported by Ralf
4267 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4271 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4268 that I'd used when Mike Heeter reported similar issues at the
4272 that I'd used when Mike Heeter reported similar issues at the
4269 top-level, but now for @run. It boils down to injecting the
4273 top-level, but now for @run. It boils down to injecting the
4270 namespace where code is being executed with something that looks
4274 namespace where code is being executed with something that looks
4271 enough like a module to fool pickle.dump(). Since a pickle stores
4275 enough like a module to fool pickle.dump(). Since a pickle stores
4272 a named reference to the importing module, we need this for
4276 a named reference to the importing module, we need this for
4273 pickles to save something sensible.
4277 pickles to save something sensible.
4274
4278
4275 * IPython/ipmaker.py (make_IPython): added an autocall option.
4279 * IPython/ipmaker.py (make_IPython): added an autocall option.
4276
4280
4277 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4281 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4278 the auto-eval code. Now autocalling is an option, and the code is
4282 the auto-eval code. Now autocalling is an option, and the code is
4279 also vastly safer. There is no more eval() involved at all.
4283 also vastly safer. There is no more eval() involved at all.
4280
4284
4281 2003-03-01 Fernando Perez <fperez@colorado.edu>
4285 2003-03-01 Fernando Perez <fperez@colorado.edu>
4282
4286
4283 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4287 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4284 dict with named keys instead of a tuple.
4288 dict with named keys instead of a tuple.
4285
4289
4286 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4290 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4287
4291
4288 * setup.py (make_shortcut): Fixed message about directories
4292 * setup.py (make_shortcut): Fixed message about directories
4289 created during Windows installation (the directories were ok, just
4293 created during Windows installation (the directories were ok, just
4290 the printed message was misleading). Thanks to Chris Liechti
4294 the printed message was misleading). Thanks to Chris Liechti
4291 <cliechti-AT-gmx.net> for the heads up.
4295 <cliechti-AT-gmx.net> for the heads up.
4292
4296
4293 2003-02-21 Fernando Perez <fperez@colorado.edu>
4297 2003-02-21 Fernando Perez <fperez@colorado.edu>
4294
4298
4295 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4299 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4296 of ValueError exception when checking for auto-execution. This
4300 of ValueError exception when checking for auto-execution. This
4297 one is raised by things like Numeric arrays arr.flat when the
4301 one is raised by things like Numeric arrays arr.flat when the
4298 array is non-contiguous.
4302 array is non-contiguous.
4299
4303
4300 2003-01-31 Fernando Perez <fperez@colorado.edu>
4304 2003-01-31 Fernando Perez <fperez@colorado.edu>
4301
4305
4302 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4306 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4303 not return any value at all (even though the command would get
4307 not return any value at all (even though the command would get
4304 executed).
4308 executed).
4305 (xsys): Flush stdout right after printing the command to ensure
4309 (xsys): Flush stdout right after printing the command to ensure
4306 proper ordering of commands and command output in the total
4310 proper ordering of commands and command output in the total
4307 output.
4311 output.
4308 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4312 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4309 system/getoutput as defaults. The old ones are kept for
4313 system/getoutput as defaults. The old ones are kept for
4310 compatibility reasons, so no code which uses this library needs
4314 compatibility reasons, so no code which uses this library needs
4311 changing.
4315 changing.
4312
4316
4313 2003-01-27 *** Released version 0.2.14
4317 2003-01-27 *** Released version 0.2.14
4314
4318
4315 2003-01-25 Fernando Perez <fperez@colorado.edu>
4319 2003-01-25 Fernando Perez <fperez@colorado.edu>
4316
4320
4317 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4321 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4318 functions defined in previous edit sessions could not be re-edited
4322 functions defined in previous edit sessions could not be re-edited
4319 (because the temp files were immediately removed). Now temp files
4323 (because the temp files were immediately removed). Now temp files
4320 are removed only at IPython's exit.
4324 are removed only at IPython's exit.
4321 (Magic.magic_run): Improved @run to perform shell-like expansions
4325 (Magic.magic_run): Improved @run to perform shell-like expansions
4322 on its arguments (~users and $VARS). With this, @run becomes more
4326 on its arguments (~users and $VARS). With this, @run becomes more
4323 like a normal command-line.
4327 like a normal command-line.
4324
4328
4325 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4329 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4326 bugs related to embedding and cleaned up that code. A fairly
4330 bugs related to embedding and cleaned up that code. A fairly
4327 important one was the impossibility to access the global namespace
4331 important one was the impossibility to access the global namespace
4328 through the embedded IPython (only local variables were visible).
4332 through the embedded IPython (only local variables were visible).
4329
4333
4330 2003-01-14 Fernando Perez <fperez@colorado.edu>
4334 2003-01-14 Fernando Perez <fperez@colorado.edu>
4331
4335
4332 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4336 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4333 auto-calling to be a bit more conservative. Now it doesn't get
4337 auto-calling to be a bit more conservative. Now it doesn't get
4334 triggered if any of '!=()<>' are in the rest of the input line, to
4338 triggered if any of '!=()<>' are in the rest of the input line, to
4335 allow comparing callables. Thanks to Alex for the heads up.
4339 allow comparing callables. Thanks to Alex for the heads up.
4336
4340
4337 2003-01-07 Fernando Perez <fperez@colorado.edu>
4341 2003-01-07 Fernando Perez <fperez@colorado.edu>
4338
4342
4339 * IPython/genutils.py (page): fixed estimation of the number of
4343 * IPython/genutils.py (page): fixed estimation of the number of
4340 lines in a string to be paged to simply count newlines. This
4344 lines in a string to be paged to simply count newlines. This
4341 prevents over-guessing due to embedded escape sequences. A better
4345 prevents over-guessing due to embedded escape sequences. A better
4342 long-term solution would involve stripping out the control chars
4346 long-term solution would involve stripping out the control chars
4343 for the count, but it's potentially so expensive I just don't
4347 for the count, but it's potentially so expensive I just don't
4344 think it's worth doing.
4348 think it's worth doing.
4345
4349
4346 2002-12-19 *** Released version 0.2.14pre50
4350 2002-12-19 *** Released version 0.2.14pre50
4347
4351
4348 2002-12-19 Fernando Perez <fperez@colorado.edu>
4352 2002-12-19 Fernando Perez <fperez@colorado.edu>
4349
4353
4350 * tools/release (version): Changed release scripts to inform
4354 * tools/release (version): Changed release scripts to inform
4351 Andrea and build a NEWS file with a list of recent changes.
4355 Andrea and build a NEWS file with a list of recent changes.
4352
4356
4353 * IPython/ColorANSI.py (__all__): changed terminal detection
4357 * IPython/ColorANSI.py (__all__): changed terminal detection
4354 code. Seems to work better for xterms without breaking
4358 code. Seems to work better for xterms without breaking
4355 konsole. Will need more testing to determine if WinXP and Mac OSX
4359 konsole. Will need more testing to determine if WinXP and Mac OSX
4356 also work ok.
4360 also work ok.
4357
4361
4358 2002-12-18 *** Released version 0.2.14pre49
4362 2002-12-18 *** Released version 0.2.14pre49
4359
4363
4360 2002-12-18 Fernando Perez <fperez@colorado.edu>
4364 2002-12-18 Fernando Perez <fperez@colorado.edu>
4361
4365
4362 * Docs: added new info about Mac OSX, from Andrea.
4366 * Docs: added new info about Mac OSX, from Andrea.
4363
4367
4364 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4368 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4365 allow direct plotting of python strings whose format is the same
4369 allow direct plotting of python strings whose format is the same
4366 of gnuplot data files.
4370 of gnuplot data files.
4367
4371
4368 2002-12-16 Fernando Perez <fperez@colorado.edu>
4372 2002-12-16 Fernando Perez <fperez@colorado.edu>
4369
4373
4370 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4374 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4371 value of exit question to be acknowledged.
4375 value of exit question to be acknowledged.
4372
4376
4373 2002-12-03 Fernando Perez <fperez@colorado.edu>
4377 2002-12-03 Fernando Perez <fperez@colorado.edu>
4374
4378
4375 * IPython/ipmaker.py: removed generators, which had been added
4379 * IPython/ipmaker.py: removed generators, which had been added
4376 by mistake in an earlier debugging run. This was causing trouble
4380 by mistake in an earlier debugging run. This was causing trouble
4377 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4381 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4378 for pointing this out.
4382 for pointing this out.
4379
4383
4380 2002-11-17 Fernando Perez <fperez@colorado.edu>
4384 2002-11-17 Fernando Perez <fperez@colorado.edu>
4381
4385
4382 * Manual: updated the Gnuplot section.
4386 * Manual: updated the Gnuplot section.
4383
4387
4384 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4388 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4385 a much better split of what goes in Runtime and what goes in
4389 a much better split of what goes in Runtime and what goes in
4386 Interactive.
4390 Interactive.
4387
4391
4388 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4392 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4389 being imported from iplib.
4393 being imported from iplib.
4390
4394
4391 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4395 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4392 for command-passing. Now the global Gnuplot instance is called
4396 for command-passing. Now the global Gnuplot instance is called
4393 'gp' instead of 'g', which was really a far too fragile and
4397 'gp' instead of 'g', which was really a far too fragile and
4394 common name.
4398 common name.
4395
4399
4396 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4400 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4397 bounding boxes generated by Gnuplot for square plots.
4401 bounding boxes generated by Gnuplot for square plots.
4398
4402
4399 * IPython/genutils.py (popkey): new function added. I should
4403 * IPython/genutils.py (popkey): new function added. I should
4400 suggest this on c.l.py as a dict method, it seems useful.
4404 suggest this on c.l.py as a dict method, it seems useful.
4401
4405
4402 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4406 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4403 to transparently handle PostScript generation. MUCH better than
4407 to transparently handle PostScript generation. MUCH better than
4404 the previous plot_eps/replot_eps (which I removed now). The code
4408 the previous plot_eps/replot_eps (which I removed now). The code
4405 is also fairly clean and well documented now (including
4409 is also fairly clean and well documented now (including
4406 docstrings).
4410 docstrings).
4407
4411
4408 2002-11-13 Fernando Perez <fperez@colorado.edu>
4412 2002-11-13 Fernando Perez <fperez@colorado.edu>
4409
4413
4410 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4414 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4411 (inconsistent with options).
4415 (inconsistent with options).
4412
4416
4413 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4417 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4414 manually disabled, I don't know why. Fixed it.
4418 manually disabled, I don't know why. Fixed it.
4415 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4419 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4416 eps output.
4420 eps output.
4417
4421
4418 2002-11-12 Fernando Perez <fperez@colorado.edu>
4422 2002-11-12 Fernando Perez <fperez@colorado.edu>
4419
4423
4420 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4424 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4421 don't propagate up to caller. Fixes crash reported by François
4425 don't propagate up to caller. Fixes crash reported by François
4422 Pinard.
4426 Pinard.
4423
4427
4424 2002-11-09 Fernando Perez <fperez@colorado.edu>
4428 2002-11-09 Fernando Perez <fperez@colorado.edu>
4425
4429
4426 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4430 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4427 history file for new users.
4431 history file for new users.
4428 (make_IPython): fixed bug where initial install would leave the
4432 (make_IPython): fixed bug where initial install would leave the
4429 user running in the .ipython dir.
4433 user running in the .ipython dir.
4430 (make_IPython): fixed bug where config dir .ipython would be
4434 (make_IPython): fixed bug where config dir .ipython would be
4431 created regardless of the given -ipythondir option. Thanks to Cory
4435 created regardless of the given -ipythondir option. Thanks to Cory
4432 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4436 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4433
4437
4434 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4438 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4435 type confirmations. Will need to use it in all of IPython's code
4439 type confirmations. Will need to use it in all of IPython's code
4436 consistently.
4440 consistently.
4437
4441
4438 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4442 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4439 context to print 31 lines instead of the default 5. This will make
4443 context to print 31 lines instead of the default 5. This will make
4440 the crash reports extremely detailed in case the problem is in
4444 the crash reports extremely detailed in case the problem is in
4441 libraries I don't have access to.
4445 libraries I don't have access to.
4442
4446
4443 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4447 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4444 line of defense' code to still crash, but giving users fair
4448 line of defense' code to still crash, but giving users fair
4445 warning. I don't want internal errors to go unreported: if there's
4449 warning. I don't want internal errors to go unreported: if there's
4446 an internal problem, IPython should crash and generate a full
4450 an internal problem, IPython should crash and generate a full
4447 report.
4451 report.
4448
4452
4449 2002-11-08 Fernando Perez <fperez@colorado.edu>
4453 2002-11-08 Fernando Perez <fperez@colorado.edu>
4450
4454
4451 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4455 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4452 otherwise uncaught exceptions which can appear if people set
4456 otherwise uncaught exceptions which can appear if people set
4453 sys.stdout to something badly broken. Thanks to a crash report
4457 sys.stdout to something badly broken. Thanks to a crash report
4454 from henni-AT-mail.brainbot.com.
4458 from henni-AT-mail.brainbot.com.
4455
4459
4456 2002-11-04 Fernando Perez <fperez@colorado.edu>
4460 2002-11-04 Fernando Perez <fperez@colorado.edu>
4457
4461
4458 * IPython/iplib.py (InteractiveShell.interact): added
4462 * IPython/iplib.py (InteractiveShell.interact): added
4459 __IPYTHON__active to the builtins. It's a flag which goes on when
4463 __IPYTHON__active to the builtins. It's a flag which goes on when
4460 the interaction starts and goes off again when it stops. This
4464 the interaction starts and goes off again when it stops. This
4461 allows embedding code to detect being inside IPython. Before this
4465 allows embedding code to detect being inside IPython. Before this
4462 was done via __IPYTHON__, but that only shows that an IPython
4466 was done via __IPYTHON__, but that only shows that an IPython
4463 instance has been created.
4467 instance has been created.
4464
4468
4465 * IPython/Magic.py (Magic.magic_env): I realized that in a
4469 * IPython/Magic.py (Magic.magic_env): I realized that in a
4466 UserDict, instance.data holds the data as a normal dict. So I
4470 UserDict, instance.data holds the data as a normal dict. So I
4467 modified @env to return os.environ.data instead of rebuilding a
4471 modified @env to return os.environ.data instead of rebuilding a
4468 dict by hand.
4472 dict by hand.
4469
4473
4470 2002-11-02 Fernando Perez <fperez@colorado.edu>
4474 2002-11-02 Fernando Perez <fperez@colorado.edu>
4471
4475
4472 * IPython/genutils.py (warn): changed so that level 1 prints no
4476 * IPython/genutils.py (warn): changed so that level 1 prints no
4473 header. Level 2 is now the default (with 'WARNING' header, as
4477 header. Level 2 is now the default (with 'WARNING' header, as
4474 before). I think I tracked all places where changes were needed in
4478 before). I think I tracked all places where changes were needed in
4475 IPython, but outside code using the old level numbering may have
4479 IPython, but outside code using the old level numbering may have
4476 broken.
4480 broken.
4477
4481
4478 * IPython/iplib.py (InteractiveShell.runcode): added this to
4482 * IPython/iplib.py (InteractiveShell.runcode): added this to
4479 handle the tracebacks in SystemExit traps correctly. The previous
4483 handle the tracebacks in SystemExit traps correctly. The previous
4480 code (through interact) was printing more of the stack than
4484 code (through interact) was printing more of the stack than
4481 necessary, showing IPython internal code to the user.
4485 necessary, showing IPython internal code to the user.
4482
4486
4483 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4487 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4484 default. Now that the default at the confirmation prompt is yes,
4488 default. Now that the default at the confirmation prompt is yes,
4485 it's not so intrusive. François' argument that ipython sessions
4489 it's not so intrusive. François' argument that ipython sessions
4486 tend to be complex enough not to lose them from an accidental C-d,
4490 tend to be complex enough not to lose them from an accidental C-d,
4487 is a valid one.
4491 is a valid one.
4488
4492
4489 * IPython/iplib.py (InteractiveShell.interact): added a
4493 * IPython/iplib.py (InteractiveShell.interact): added a
4490 showtraceback() call to the SystemExit trap, and modified the exit
4494 showtraceback() call to the SystemExit trap, and modified the exit
4491 confirmation to have yes as the default.
4495 confirmation to have yes as the default.
4492
4496
4493 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4497 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4494 this file. It's been gone from the code for a long time, this was
4498 this file. It's been gone from the code for a long time, this was
4495 simply leftover junk.
4499 simply leftover junk.
4496
4500
4497 2002-11-01 Fernando Perez <fperez@colorado.edu>
4501 2002-11-01 Fernando Perez <fperez@colorado.edu>
4498
4502
4499 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4503 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4500 added. If set, IPython now traps EOF and asks for
4504 added. If set, IPython now traps EOF and asks for
4501 confirmation. After a request by François Pinard.
4505 confirmation. After a request by François Pinard.
4502
4506
4503 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4507 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4504 of @abort, and with a new (better) mechanism for handling the
4508 of @abort, and with a new (better) mechanism for handling the
4505 exceptions.
4509 exceptions.
4506
4510
4507 2002-10-27 Fernando Perez <fperez@colorado.edu>
4511 2002-10-27 Fernando Perez <fperez@colorado.edu>
4508
4512
4509 * IPython/usage.py (__doc__): updated the --help information and
4513 * IPython/usage.py (__doc__): updated the --help information and
4510 the ipythonrc file to indicate that -log generates
4514 the ipythonrc file to indicate that -log generates
4511 ./ipython.log. Also fixed the corresponding info in @logstart.
4515 ./ipython.log. Also fixed the corresponding info in @logstart.
4512 This and several other fixes in the manuals thanks to reports by
4516 This and several other fixes in the manuals thanks to reports by
4513 François Pinard <pinard-AT-iro.umontreal.ca>.
4517 François Pinard <pinard-AT-iro.umontreal.ca>.
4514
4518
4515 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4519 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4516 refer to @logstart (instead of @log, which doesn't exist).
4520 refer to @logstart (instead of @log, which doesn't exist).
4517
4521
4518 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4522 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4519 AttributeError crash. Thanks to Christopher Armstrong
4523 AttributeError crash. Thanks to Christopher Armstrong
4520 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4524 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4521 introduced recently (in 0.2.14pre37) with the fix to the eval
4525 introduced recently (in 0.2.14pre37) with the fix to the eval
4522 problem mentioned below.
4526 problem mentioned below.
4523
4527
4524 2002-10-17 Fernando Perez <fperez@colorado.edu>
4528 2002-10-17 Fernando Perez <fperez@colorado.edu>
4525
4529
4526 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4530 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4527 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4531 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4528
4532
4529 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4533 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4530 this function to fix a problem reported by Alex Schmolck. He saw
4534 this function to fix a problem reported by Alex Schmolck. He saw
4531 it with list comprehensions and generators, which were getting
4535 it with list comprehensions and generators, which were getting
4532 called twice. The real problem was an 'eval' call in testing for
4536 called twice. The real problem was an 'eval' call in testing for
4533 automagic which was evaluating the input line silently.
4537 automagic which was evaluating the input line silently.
4534
4538
4535 This is a potentially very nasty bug, if the input has side
4539 This is a potentially very nasty bug, if the input has side
4536 effects which must not be repeated. The code is much cleaner now,
4540 effects which must not be repeated. The code is much cleaner now,
4537 without any blanket 'except' left and with a regexp test for
4541 without any blanket 'except' left and with a regexp test for
4538 actual function names.
4542 actual function names.
4539
4543
4540 But an eval remains, which I'm not fully comfortable with. I just
4544 But an eval remains, which I'm not fully comfortable with. I just
4541 don't know how to find out if an expression could be a callable in
4545 don't know how to find out if an expression could be a callable in
4542 the user's namespace without doing an eval on the string. However
4546 the user's namespace without doing an eval on the string. However
4543 that string is now much more strictly checked so that no code
4547 that string is now much more strictly checked so that no code
4544 slips by, so the eval should only happen for things that can
4548 slips by, so the eval should only happen for things that can
4545 really be only function/method names.
4549 really be only function/method names.
4546
4550
4547 2002-10-15 Fernando Perez <fperez@colorado.edu>
4551 2002-10-15 Fernando Perez <fperez@colorado.edu>
4548
4552
4549 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4553 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4550 OSX information to main manual, removed README_Mac_OSX file from
4554 OSX information to main manual, removed README_Mac_OSX file from
4551 distribution. Also updated credits for recent additions.
4555 distribution. Also updated credits for recent additions.
4552
4556
4553 2002-10-10 Fernando Perez <fperez@colorado.edu>
4557 2002-10-10 Fernando Perez <fperez@colorado.edu>
4554
4558
4555 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4559 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4556 terminal-related issues. Many thanks to Andrea Riciputi
4560 terminal-related issues. Many thanks to Andrea Riciputi
4557 <andrea.riciputi-AT-libero.it> for writing it.
4561 <andrea.riciputi-AT-libero.it> for writing it.
4558
4562
4559 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4563 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4560 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4564 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4561
4565
4562 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4566 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4563 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4567 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4564 <syver-en-AT-online.no> who both submitted patches for this problem.
4568 <syver-en-AT-online.no> who both submitted patches for this problem.
4565
4569
4566 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4570 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4567 global embedding to make sure that things don't overwrite user
4571 global embedding to make sure that things don't overwrite user
4568 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4572 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4569
4573
4570 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4574 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4571 compatibility. Thanks to Hayden Callow
4575 compatibility. Thanks to Hayden Callow
4572 <h.callow-AT-elec.canterbury.ac.nz>
4576 <h.callow-AT-elec.canterbury.ac.nz>
4573
4577
4574 2002-10-04 Fernando Perez <fperez@colorado.edu>
4578 2002-10-04 Fernando Perez <fperez@colorado.edu>
4575
4579
4576 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4580 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4577 Gnuplot.File objects.
4581 Gnuplot.File objects.
4578
4582
4579 2002-07-23 Fernando Perez <fperez@colorado.edu>
4583 2002-07-23 Fernando Perez <fperez@colorado.edu>
4580
4584
4581 * IPython/genutils.py (timing): Added timings() and timing() for
4585 * IPython/genutils.py (timing): Added timings() and timing() for
4582 quick access to the most commonly needed data, the execution
4586 quick access to the most commonly needed data, the execution
4583 times. Old timing() renamed to timings_out().
4587 times. Old timing() renamed to timings_out().
4584
4588
4585 2002-07-18 Fernando Perez <fperez@colorado.edu>
4589 2002-07-18 Fernando Perez <fperez@colorado.edu>
4586
4590
4587 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4591 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4588 bug with nested instances disrupting the parent's tab completion.
4592 bug with nested instances disrupting the parent's tab completion.
4589
4593
4590 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4594 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4591 all_completions code to begin the emacs integration.
4595 all_completions code to begin the emacs integration.
4592
4596
4593 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4597 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4594 argument to allow titling individual arrays when plotting.
4598 argument to allow titling individual arrays when plotting.
4595
4599
4596 2002-07-15 Fernando Perez <fperez@colorado.edu>
4600 2002-07-15 Fernando Perez <fperez@colorado.edu>
4597
4601
4598 * setup.py (make_shortcut): changed to retrieve the value of
4602 * setup.py (make_shortcut): changed to retrieve the value of
4599 'Program Files' directory from the registry (this value changes in
4603 'Program Files' directory from the registry (this value changes in
4600 non-english versions of Windows). Thanks to Thomas Fanslau
4604 non-english versions of Windows). Thanks to Thomas Fanslau
4601 <tfanslau-AT-gmx.de> for the report.
4605 <tfanslau-AT-gmx.de> for the report.
4602
4606
4603 2002-07-10 Fernando Perez <fperez@colorado.edu>
4607 2002-07-10 Fernando Perez <fperez@colorado.edu>
4604
4608
4605 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4609 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4606 a bug in pdb, which crashes if a line with only whitespace is
4610 a bug in pdb, which crashes if a line with only whitespace is
4607 entered. Bug report submitted to sourceforge.
4611 entered. Bug report submitted to sourceforge.
4608
4612
4609 2002-07-09 Fernando Perez <fperez@colorado.edu>
4613 2002-07-09 Fernando Perez <fperez@colorado.edu>
4610
4614
4611 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4615 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4612 reporting exceptions (it's a bug in inspect.py, I just set a
4616 reporting exceptions (it's a bug in inspect.py, I just set a
4613 workaround).
4617 workaround).
4614
4618
4615 2002-07-08 Fernando Perez <fperez@colorado.edu>
4619 2002-07-08 Fernando Perez <fperez@colorado.edu>
4616
4620
4617 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4621 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4618 __IPYTHON__ in __builtins__ to show up in user_ns.
4622 __IPYTHON__ in __builtins__ to show up in user_ns.
4619
4623
4620 2002-07-03 Fernando Perez <fperez@colorado.edu>
4624 2002-07-03 Fernando Perez <fperez@colorado.edu>
4621
4625
4622 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4626 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4623 name from @gp_set_instance to @gp_set_default.
4627 name from @gp_set_instance to @gp_set_default.
4624
4628
4625 * IPython/ipmaker.py (make_IPython): default editor value set to
4629 * IPython/ipmaker.py (make_IPython): default editor value set to
4626 '0' (a string), to match the rc file. Otherwise will crash when
4630 '0' (a string), to match the rc file. Otherwise will crash when
4627 .strip() is called on it.
4631 .strip() is called on it.
4628
4632
4629
4633
4630 2002-06-28 Fernando Perez <fperez@colorado.edu>
4634 2002-06-28 Fernando Perez <fperez@colorado.edu>
4631
4635
4632 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4636 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4633 of files in current directory when a file is executed via
4637 of files in current directory when a file is executed via
4634 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4638 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4635
4639
4636 * setup.py (manfiles): fix for rpm builds, submitted by RA
4640 * setup.py (manfiles): fix for rpm builds, submitted by RA
4637 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4641 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4638
4642
4639 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4643 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4640 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4644 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4641 string!). A. Schmolck caught this one.
4645 string!). A. Schmolck caught this one.
4642
4646
4643 2002-06-27 Fernando Perez <fperez@colorado.edu>
4647 2002-06-27 Fernando Perez <fperez@colorado.edu>
4644
4648
4645 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4649 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4646 defined files at the cmd line. __name__ wasn't being set to
4650 defined files at the cmd line. __name__ wasn't being set to
4647 __main__.
4651 __main__.
4648
4652
4649 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4653 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4650 regular lists and tuples besides Numeric arrays.
4654 regular lists and tuples besides Numeric arrays.
4651
4655
4652 * IPython/Prompts.py (CachedOutput.__call__): Added output
4656 * IPython/Prompts.py (CachedOutput.__call__): Added output
4653 supression for input ending with ';'. Similar to Mathematica and
4657 supression for input ending with ';'. Similar to Mathematica and
4654 Matlab. The _* vars and Out[] list are still updated, just like
4658 Matlab. The _* vars and Out[] list are still updated, just like
4655 Mathematica behaves.
4659 Mathematica behaves.
4656
4660
4657 2002-06-25 Fernando Perez <fperez@colorado.edu>
4661 2002-06-25 Fernando Perez <fperez@colorado.edu>
4658
4662
4659 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4663 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4660 .ini extensions for profiels under Windows.
4664 .ini extensions for profiels under Windows.
4661
4665
4662 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4666 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4663 string form. Fix contributed by Alexander Schmolck
4667 string form. Fix contributed by Alexander Schmolck
4664 <a.schmolck-AT-gmx.net>
4668 <a.schmolck-AT-gmx.net>
4665
4669
4666 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4670 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4667 pre-configured Gnuplot instance.
4671 pre-configured Gnuplot instance.
4668
4672
4669 2002-06-21 Fernando Perez <fperez@colorado.edu>
4673 2002-06-21 Fernando Perez <fperez@colorado.edu>
4670
4674
4671 * IPython/numutils.py (exp_safe): new function, works around the
4675 * IPython/numutils.py (exp_safe): new function, works around the
4672 underflow problems in Numeric.
4676 underflow problems in Numeric.
4673 (log2): New fn. Safe log in base 2: returns exact integer answer
4677 (log2): New fn. Safe log in base 2: returns exact integer answer
4674 for exact integer powers of 2.
4678 for exact integer powers of 2.
4675
4679
4676 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4680 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4677 properly.
4681 properly.
4678
4682
4679 2002-06-20 Fernando Perez <fperez@colorado.edu>
4683 2002-06-20 Fernando Perez <fperez@colorado.edu>
4680
4684
4681 * IPython/genutils.py (timing): new function like
4685 * IPython/genutils.py (timing): new function like
4682 Mathematica's. Similar to time_test, but returns more info.
4686 Mathematica's. Similar to time_test, but returns more info.
4683
4687
4684 2002-06-18 Fernando Perez <fperez@colorado.edu>
4688 2002-06-18 Fernando Perez <fperez@colorado.edu>
4685
4689
4686 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4690 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4687 according to Mike Heeter's suggestions.
4691 according to Mike Heeter's suggestions.
4688
4692
4689 2002-06-16 Fernando Perez <fperez@colorado.edu>
4693 2002-06-16 Fernando Perez <fperez@colorado.edu>
4690
4694
4691 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4695 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4692 system. GnuplotMagic is gone as a user-directory option. New files
4696 system. GnuplotMagic is gone as a user-directory option. New files
4693 make it easier to use all the gnuplot stuff both from external
4697 make it easier to use all the gnuplot stuff both from external
4694 programs as well as from IPython. Had to rewrite part of
4698 programs as well as from IPython. Had to rewrite part of
4695 hardcopy() b/c of a strange bug: often the ps files simply don't
4699 hardcopy() b/c of a strange bug: often the ps files simply don't
4696 get created, and require a repeat of the command (often several
4700 get created, and require a repeat of the command (often several
4697 times).
4701 times).
4698
4702
4699 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4703 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4700 resolve output channel at call time, so that if sys.stderr has
4704 resolve output channel at call time, so that if sys.stderr has
4701 been redirected by user this gets honored.
4705 been redirected by user this gets honored.
4702
4706
4703 2002-06-13 Fernando Perez <fperez@colorado.edu>
4707 2002-06-13 Fernando Perez <fperez@colorado.edu>
4704
4708
4705 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4709 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4706 IPShell. Kept a copy with the old names to avoid breaking people's
4710 IPShell. Kept a copy with the old names to avoid breaking people's
4707 embedded code.
4711 embedded code.
4708
4712
4709 * IPython/ipython: simplified it to the bare minimum after
4713 * IPython/ipython: simplified it to the bare minimum after
4710 Holger's suggestions. Added info about how to use it in
4714 Holger's suggestions. Added info about how to use it in
4711 PYTHONSTARTUP.
4715 PYTHONSTARTUP.
4712
4716
4713 * IPython/Shell.py (IPythonShell): changed the options passing
4717 * IPython/Shell.py (IPythonShell): changed the options passing
4714 from a string with funky %s replacements to a straight list. Maybe
4718 from a string with funky %s replacements to a straight list. Maybe
4715 a bit more typing, but it follows sys.argv conventions, so there's
4719 a bit more typing, but it follows sys.argv conventions, so there's
4716 less special-casing to remember.
4720 less special-casing to remember.
4717
4721
4718 2002-06-12 Fernando Perez <fperez@colorado.edu>
4722 2002-06-12 Fernando Perez <fperez@colorado.edu>
4719
4723
4720 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4724 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4721 command. Thanks to a suggestion by Mike Heeter.
4725 command. Thanks to a suggestion by Mike Heeter.
4722 (Magic.magic_pfile): added behavior to look at filenames if given
4726 (Magic.magic_pfile): added behavior to look at filenames if given
4723 arg is not a defined object.
4727 arg is not a defined object.
4724 (Magic.magic_save): New @save function to save code snippets. Also
4728 (Magic.magic_save): New @save function to save code snippets. Also
4725 a Mike Heeter idea.
4729 a Mike Heeter idea.
4726
4730
4727 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4731 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4728 plot() and replot(). Much more convenient now, especially for
4732 plot() and replot(). Much more convenient now, especially for
4729 interactive use.
4733 interactive use.
4730
4734
4731 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4735 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4732 filenames.
4736 filenames.
4733
4737
4734 2002-06-02 Fernando Perez <fperez@colorado.edu>
4738 2002-06-02 Fernando Perez <fperez@colorado.edu>
4735
4739
4736 * IPython/Struct.py (Struct.__init__): modified to admit
4740 * IPython/Struct.py (Struct.__init__): modified to admit
4737 initialization via another struct.
4741 initialization via another struct.
4738
4742
4739 * IPython/genutils.py (SystemExec.__init__): New stateful
4743 * IPython/genutils.py (SystemExec.__init__): New stateful
4740 interface to xsys and bq. Useful for writing system scripts.
4744 interface to xsys and bq. Useful for writing system scripts.
4741
4745
4742 2002-05-30 Fernando Perez <fperez@colorado.edu>
4746 2002-05-30 Fernando Perez <fperez@colorado.edu>
4743
4747
4744 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4748 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4745 documents. This will make the user download smaller (it's getting
4749 documents. This will make the user download smaller (it's getting
4746 too big).
4750 too big).
4747
4751
4748 2002-05-29 Fernando Perez <fperez@colorado.edu>
4752 2002-05-29 Fernando Perez <fperez@colorado.edu>
4749
4753
4750 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4754 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4751 fix problems with shelve and pickle. Seems to work, but I don't
4755 fix problems with shelve and pickle. Seems to work, but I don't
4752 know if corner cases break it. Thanks to Mike Heeter
4756 know if corner cases break it. Thanks to Mike Heeter
4753 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4757 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4754
4758
4755 2002-05-24 Fernando Perez <fperez@colorado.edu>
4759 2002-05-24 Fernando Perez <fperez@colorado.edu>
4756
4760
4757 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4761 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4758 macros having broken.
4762 macros having broken.
4759
4763
4760 2002-05-21 Fernando Perez <fperez@colorado.edu>
4764 2002-05-21 Fernando Perez <fperez@colorado.edu>
4761
4765
4762 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4766 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4763 introduced logging bug: all history before logging started was
4767 introduced logging bug: all history before logging started was
4764 being written one character per line! This came from the redesign
4768 being written one character per line! This came from the redesign
4765 of the input history as a special list which slices to strings,
4769 of the input history as a special list which slices to strings,
4766 not to lists.
4770 not to lists.
4767
4771
4768 2002-05-20 Fernando Perez <fperez@colorado.edu>
4772 2002-05-20 Fernando Perez <fperez@colorado.edu>
4769
4773
4770 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4774 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4771 be an attribute of all classes in this module. The design of these
4775 be an attribute of all classes in this module. The design of these
4772 classes needs some serious overhauling.
4776 classes needs some serious overhauling.
4773
4777
4774 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4778 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4775 which was ignoring '_' in option names.
4779 which was ignoring '_' in option names.
4776
4780
4777 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4781 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4778 'Verbose_novars' to 'Context' and made it the new default. It's a
4782 'Verbose_novars' to 'Context' and made it the new default. It's a
4779 bit more readable and also safer than verbose.
4783 bit more readable and also safer than verbose.
4780
4784
4781 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4785 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4782 triple-quoted strings.
4786 triple-quoted strings.
4783
4787
4784 * IPython/OInspect.py (__all__): new module exposing the object
4788 * IPython/OInspect.py (__all__): new module exposing the object
4785 introspection facilities. Now the corresponding magics are dummy
4789 introspection facilities. Now the corresponding magics are dummy
4786 wrappers around this. Having this module will make it much easier
4790 wrappers around this. Having this module will make it much easier
4787 to put these functions into our modified pdb.
4791 to put these functions into our modified pdb.
4788 This new object inspector system uses the new colorizing module,
4792 This new object inspector system uses the new colorizing module,
4789 so source code and other things are nicely syntax highlighted.
4793 so source code and other things are nicely syntax highlighted.
4790
4794
4791 2002-05-18 Fernando Perez <fperez@colorado.edu>
4795 2002-05-18 Fernando Perez <fperez@colorado.edu>
4792
4796
4793 * IPython/ColorANSI.py: Split the coloring tools into a separate
4797 * IPython/ColorANSI.py: Split the coloring tools into a separate
4794 module so I can use them in other code easier (they were part of
4798 module so I can use them in other code easier (they were part of
4795 ultraTB).
4799 ultraTB).
4796
4800
4797 2002-05-17 Fernando Perez <fperez@colorado.edu>
4801 2002-05-17 Fernando Perez <fperez@colorado.edu>
4798
4802
4799 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4803 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4800 fixed it to set the global 'g' also to the called instance, as
4804 fixed it to set the global 'g' also to the called instance, as
4801 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4805 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4802 user's 'g' variables).
4806 user's 'g' variables).
4803
4807
4804 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4808 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4805 global variables (aliases to _ih,_oh) so that users which expect
4809 global variables (aliases to _ih,_oh) so that users which expect
4806 In[5] or Out[7] to work aren't unpleasantly surprised.
4810 In[5] or Out[7] to work aren't unpleasantly surprised.
4807 (InputList.__getslice__): new class to allow executing slices of
4811 (InputList.__getslice__): new class to allow executing slices of
4808 input history directly. Very simple class, complements the use of
4812 input history directly. Very simple class, complements the use of
4809 macros.
4813 macros.
4810
4814
4811 2002-05-16 Fernando Perez <fperez@colorado.edu>
4815 2002-05-16 Fernando Perez <fperez@colorado.edu>
4812
4816
4813 * setup.py (docdirbase): make doc directory be just doc/IPython
4817 * setup.py (docdirbase): make doc directory be just doc/IPython
4814 without version numbers, it will reduce clutter for users.
4818 without version numbers, it will reduce clutter for users.
4815
4819
4816 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4820 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4817 execfile call to prevent possible memory leak. See for details:
4821 execfile call to prevent possible memory leak. See for details:
4818 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4822 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4819
4823
4820 2002-05-15 Fernando Perez <fperez@colorado.edu>
4824 2002-05-15 Fernando Perez <fperez@colorado.edu>
4821
4825
4822 * IPython/Magic.py (Magic.magic_psource): made the object
4826 * IPython/Magic.py (Magic.magic_psource): made the object
4823 introspection names be more standard: pdoc, pdef, pfile and
4827 introspection names be more standard: pdoc, pdef, pfile and
4824 psource. They all print/page their output, and it makes
4828 psource. They all print/page their output, and it makes
4825 remembering them easier. Kept old names for compatibility as
4829 remembering them easier. Kept old names for compatibility as
4826 aliases.
4830 aliases.
4827
4831
4828 2002-05-14 Fernando Perez <fperez@colorado.edu>
4832 2002-05-14 Fernando Perez <fperez@colorado.edu>
4829
4833
4830 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4834 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4831 what the mouse problem was. The trick is to use gnuplot with temp
4835 what the mouse problem was. The trick is to use gnuplot with temp
4832 files and NOT with pipes (for data communication), because having
4836 files and NOT with pipes (for data communication), because having
4833 both pipes and the mouse on is bad news.
4837 both pipes and the mouse on is bad news.
4834
4838
4835 2002-05-13 Fernando Perez <fperez@colorado.edu>
4839 2002-05-13 Fernando Perez <fperez@colorado.edu>
4836
4840
4837 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4841 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4838 bug. Information would be reported about builtins even when
4842 bug. Information would be reported about builtins even when
4839 user-defined functions overrode them.
4843 user-defined functions overrode them.
4840
4844
4841 2002-05-11 Fernando Perez <fperez@colorado.edu>
4845 2002-05-11 Fernando Perez <fperez@colorado.edu>
4842
4846
4843 * IPython/__init__.py (__all__): removed FlexCompleter from
4847 * IPython/__init__.py (__all__): removed FlexCompleter from
4844 __all__ so that things don't fail in platforms without readline.
4848 __all__ so that things don't fail in platforms without readline.
4845
4849
4846 2002-05-10 Fernando Perez <fperez@colorado.edu>
4850 2002-05-10 Fernando Perez <fperez@colorado.edu>
4847
4851
4848 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4852 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4849 it requires Numeric, effectively making Numeric a dependency for
4853 it requires Numeric, effectively making Numeric a dependency for
4850 IPython.
4854 IPython.
4851
4855
4852 * Released 0.2.13
4856 * Released 0.2.13
4853
4857
4854 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4858 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4855 profiler interface. Now all the major options from the profiler
4859 profiler interface. Now all the major options from the profiler
4856 module are directly supported in IPython, both for single
4860 module are directly supported in IPython, both for single
4857 expressions (@prun) and for full programs (@run -p).
4861 expressions (@prun) and for full programs (@run -p).
4858
4862
4859 2002-05-09 Fernando Perez <fperez@colorado.edu>
4863 2002-05-09 Fernando Perez <fperez@colorado.edu>
4860
4864
4861 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4865 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4862 magic properly formatted for screen.
4866 magic properly formatted for screen.
4863
4867
4864 * setup.py (make_shortcut): Changed things to put pdf version in
4868 * setup.py (make_shortcut): Changed things to put pdf version in
4865 doc/ instead of doc/manual (had to change lyxport a bit).
4869 doc/ instead of doc/manual (had to change lyxport a bit).
4866
4870
4867 * IPython/Magic.py (Profile.string_stats): made profile runs go
4871 * IPython/Magic.py (Profile.string_stats): made profile runs go
4868 through pager (they are long and a pager allows searching, saving,
4872 through pager (they are long and a pager allows searching, saving,
4869 etc.)
4873 etc.)
4870
4874
4871 2002-05-08 Fernando Perez <fperez@colorado.edu>
4875 2002-05-08 Fernando Perez <fperez@colorado.edu>
4872
4876
4873 * Released 0.2.12
4877 * Released 0.2.12
4874
4878
4875 2002-05-06 Fernando Perez <fperez@colorado.edu>
4879 2002-05-06 Fernando Perez <fperez@colorado.edu>
4876
4880
4877 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4881 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4878 introduced); 'hist n1 n2' was broken.
4882 introduced); 'hist n1 n2' was broken.
4879 (Magic.magic_pdb): added optional on/off arguments to @pdb
4883 (Magic.magic_pdb): added optional on/off arguments to @pdb
4880 (Magic.magic_run): added option -i to @run, which executes code in
4884 (Magic.magic_run): added option -i to @run, which executes code in
4881 the IPython namespace instead of a clean one. Also added @irun as
4885 the IPython namespace instead of a clean one. Also added @irun as
4882 an alias to @run -i.
4886 an alias to @run -i.
4883
4887
4884 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4888 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4885 fixed (it didn't really do anything, the namespaces were wrong).
4889 fixed (it didn't really do anything, the namespaces were wrong).
4886
4890
4887 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4891 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4888
4892
4889 * IPython/__init__.py (__all__): Fixed package namespace, now
4893 * IPython/__init__.py (__all__): Fixed package namespace, now
4890 'import IPython' does give access to IPython.<all> as
4894 'import IPython' does give access to IPython.<all> as
4891 expected. Also renamed __release__ to Release.
4895 expected. Also renamed __release__ to Release.
4892
4896
4893 * IPython/Debugger.py (__license__): created new Pdb class which
4897 * IPython/Debugger.py (__license__): created new Pdb class which
4894 functions like a drop-in for the normal pdb.Pdb but does NOT
4898 functions like a drop-in for the normal pdb.Pdb but does NOT
4895 import readline by default. This way it doesn't muck up IPython's
4899 import readline by default. This way it doesn't muck up IPython's
4896 readline handling, and now tab-completion finally works in the
4900 readline handling, and now tab-completion finally works in the
4897 debugger -- sort of. It completes things globally visible, but the
4901 debugger -- sort of. It completes things globally visible, but the
4898 completer doesn't track the stack as pdb walks it. That's a bit
4902 completer doesn't track the stack as pdb walks it. That's a bit
4899 tricky, and I'll have to implement it later.
4903 tricky, and I'll have to implement it later.
4900
4904
4901 2002-05-05 Fernando Perez <fperez@colorado.edu>
4905 2002-05-05 Fernando Perez <fperez@colorado.edu>
4902
4906
4903 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4907 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4904 magic docstrings when printed via ? (explicit \'s were being
4908 magic docstrings when printed via ? (explicit \'s were being
4905 printed).
4909 printed).
4906
4910
4907 * IPython/ipmaker.py (make_IPython): fixed namespace
4911 * IPython/ipmaker.py (make_IPython): fixed namespace
4908 identification bug. Now variables loaded via logs or command-line
4912 identification bug. Now variables loaded via logs or command-line
4909 files are recognized in the interactive namespace by @who.
4913 files are recognized in the interactive namespace by @who.
4910
4914
4911 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4915 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4912 log replay system stemming from the string form of Structs.
4916 log replay system stemming from the string form of Structs.
4913
4917
4914 * IPython/Magic.py (Macro.__init__): improved macros to properly
4918 * IPython/Magic.py (Macro.__init__): improved macros to properly
4915 handle magic commands in them.
4919 handle magic commands in them.
4916 (Magic.magic_logstart): usernames are now expanded so 'logstart
4920 (Magic.magic_logstart): usernames are now expanded so 'logstart
4917 ~/mylog' now works.
4921 ~/mylog' now works.
4918
4922
4919 * IPython/iplib.py (complete): fixed bug where paths starting with
4923 * IPython/iplib.py (complete): fixed bug where paths starting with
4920 '/' would be completed as magic names.
4924 '/' would be completed as magic names.
4921
4925
4922 2002-05-04 Fernando Perez <fperez@colorado.edu>
4926 2002-05-04 Fernando Perez <fperez@colorado.edu>
4923
4927
4924 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4928 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4925 allow running full programs under the profiler's control.
4929 allow running full programs under the profiler's control.
4926
4930
4927 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4931 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4928 mode to report exceptions verbosely but without formatting
4932 mode to report exceptions verbosely but without formatting
4929 variables. This addresses the issue of ipython 'freezing' (it's
4933 variables. This addresses the issue of ipython 'freezing' (it's
4930 not frozen, but caught in an expensive formatting loop) when huge
4934 not frozen, but caught in an expensive formatting loop) when huge
4931 variables are in the context of an exception.
4935 variables are in the context of an exception.
4932 (VerboseTB.text): Added '--->' markers at line where exception was
4936 (VerboseTB.text): Added '--->' markers at line where exception was
4933 triggered. Much clearer to read, especially in NoColor modes.
4937 triggered. Much clearer to read, especially in NoColor modes.
4934
4938
4935 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4939 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4936 implemented in reverse when changing to the new parse_options().
4940 implemented in reverse when changing to the new parse_options().
4937
4941
4938 2002-05-03 Fernando Perez <fperez@colorado.edu>
4942 2002-05-03 Fernando Perez <fperez@colorado.edu>
4939
4943
4940 * IPython/Magic.py (Magic.parse_options): new function so that
4944 * IPython/Magic.py (Magic.parse_options): new function so that
4941 magics can parse options easier.
4945 magics can parse options easier.
4942 (Magic.magic_prun): new function similar to profile.run(),
4946 (Magic.magic_prun): new function similar to profile.run(),
4943 suggested by Chris Hart.
4947 suggested by Chris Hart.
4944 (Magic.magic_cd): fixed behavior so that it only changes if
4948 (Magic.magic_cd): fixed behavior so that it only changes if
4945 directory actually is in history.
4949 directory actually is in history.
4946
4950
4947 * IPython/usage.py (__doc__): added information about potential
4951 * IPython/usage.py (__doc__): added information about potential
4948 slowness of Verbose exception mode when there are huge data
4952 slowness of Verbose exception mode when there are huge data
4949 structures to be formatted (thanks to Archie Paulson).
4953 structures to be formatted (thanks to Archie Paulson).
4950
4954
4951 * IPython/ipmaker.py (make_IPython): Changed default logging
4955 * IPython/ipmaker.py (make_IPython): Changed default logging
4952 (when simply called with -log) to use curr_dir/ipython.log in
4956 (when simply called with -log) to use curr_dir/ipython.log in
4953 rotate mode. Fixed crash which was occuring with -log before
4957 rotate mode. Fixed crash which was occuring with -log before
4954 (thanks to Jim Boyle).
4958 (thanks to Jim Boyle).
4955
4959
4956 2002-05-01 Fernando Perez <fperez@colorado.edu>
4960 2002-05-01 Fernando Perez <fperez@colorado.edu>
4957
4961
4958 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4962 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4959 was nasty -- though somewhat of a corner case).
4963 was nasty -- though somewhat of a corner case).
4960
4964
4961 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4965 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4962 text (was a bug).
4966 text (was a bug).
4963
4967
4964 2002-04-30 Fernando Perez <fperez@colorado.edu>
4968 2002-04-30 Fernando Perez <fperez@colorado.edu>
4965
4969
4966 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4970 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4967 a print after ^D or ^C from the user so that the In[] prompt
4971 a print after ^D or ^C from the user so that the In[] prompt
4968 doesn't over-run the gnuplot one.
4972 doesn't over-run the gnuplot one.
4969
4973
4970 2002-04-29 Fernando Perez <fperez@colorado.edu>
4974 2002-04-29 Fernando Perez <fperez@colorado.edu>
4971
4975
4972 * Released 0.2.10
4976 * Released 0.2.10
4973
4977
4974 * IPython/__release__.py (version): get date dynamically.
4978 * IPython/__release__.py (version): get date dynamically.
4975
4979
4976 * Misc. documentation updates thanks to Arnd's comments. Also ran
4980 * Misc. documentation updates thanks to Arnd's comments. Also ran
4977 a full spellcheck on the manual (hadn't been done in a while).
4981 a full spellcheck on the manual (hadn't been done in a while).
4978
4982
4979 2002-04-27 Fernando Perez <fperez@colorado.edu>
4983 2002-04-27 Fernando Perez <fperez@colorado.edu>
4980
4984
4981 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4985 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4982 starting a log in mid-session would reset the input history list.
4986 starting a log in mid-session would reset the input history list.
4983
4987
4984 2002-04-26 Fernando Perez <fperez@colorado.edu>
4988 2002-04-26 Fernando Perez <fperez@colorado.edu>
4985
4989
4986 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4990 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4987 all files were being included in an update. Now anything in
4991 all files were being included in an update. Now anything in
4988 UserConfig that matches [A-Za-z]*.py will go (this excludes
4992 UserConfig that matches [A-Za-z]*.py will go (this excludes
4989 __init__.py)
4993 __init__.py)
4990
4994
4991 2002-04-25 Fernando Perez <fperez@colorado.edu>
4995 2002-04-25 Fernando Perez <fperez@colorado.edu>
4992
4996
4993 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4997 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4994 to __builtins__ so that any form of embedded or imported code can
4998 to __builtins__ so that any form of embedded or imported code can
4995 test for being inside IPython.
4999 test for being inside IPython.
4996
5000
4997 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5001 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4998 changed to GnuplotMagic because it's now an importable module,
5002 changed to GnuplotMagic because it's now an importable module,
4999 this makes the name follow that of the standard Gnuplot module.
5003 this makes the name follow that of the standard Gnuplot module.
5000 GnuplotMagic can now be loaded at any time in mid-session.
5004 GnuplotMagic can now be loaded at any time in mid-session.
5001
5005
5002 2002-04-24 Fernando Perez <fperez@colorado.edu>
5006 2002-04-24 Fernando Perez <fperez@colorado.edu>
5003
5007
5004 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5008 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5005 the globals (IPython has its own namespace) and the
5009 the globals (IPython has its own namespace) and the
5006 PhysicalQuantity stuff is much better anyway.
5010 PhysicalQuantity stuff is much better anyway.
5007
5011
5008 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5012 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5009 embedding example to standard user directory for
5013 embedding example to standard user directory for
5010 distribution. Also put it in the manual.
5014 distribution. Also put it in the manual.
5011
5015
5012 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5016 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5013 instance as first argument (so it doesn't rely on some obscure
5017 instance as first argument (so it doesn't rely on some obscure
5014 hidden global).
5018 hidden global).
5015
5019
5016 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5020 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5017 delimiters. While it prevents ().TAB from working, it allows
5021 delimiters. While it prevents ().TAB from working, it allows
5018 completions in open (... expressions. This is by far a more common
5022 completions in open (... expressions. This is by far a more common
5019 case.
5023 case.
5020
5024
5021 2002-04-23 Fernando Perez <fperez@colorado.edu>
5025 2002-04-23 Fernando Perez <fperez@colorado.edu>
5022
5026
5023 * IPython/Extensions/InterpreterPasteInput.py: new
5027 * IPython/Extensions/InterpreterPasteInput.py: new
5024 syntax-processing module for pasting lines with >>> or ... at the
5028 syntax-processing module for pasting lines with >>> or ... at the
5025 start.
5029 start.
5026
5030
5027 * IPython/Extensions/PhysicalQ_Interactive.py
5031 * IPython/Extensions/PhysicalQ_Interactive.py
5028 (PhysicalQuantityInteractive.__int__): fixed to work with either
5032 (PhysicalQuantityInteractive.__int__): fixed to work with either
5029 Numeric or math.
5033 Numeric or math.
5030
5034
5031 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5035 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5032 provided profiles. Now we have:
5036 provided profiles. Now we have:
5033 -math -> math module as * and cmath with its own namespace.
5037 -math -> math module as * and cmath with its own namespace.
5034 -numeric -> Numeric as *, plus gnuplot & grace
5038 -numeric -> Numeric as *, plus gnuplot & grace
5035 -physics -> same as before
5039 -physics -> same as before
5036
5040
5037 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5041 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5038 user-defined magics wouldn't be found by @magic if they were
5042 user-defined magics wouldn't be found by @magic if they were
5039 defined as class methods. Also cleaned up the namespace search
5043 defined as class methods. Also cleaned up the namespace search
5040 logic and the string building (to use %s instead of many repeated
5044 logic and the string building (to use %s instead of many repeated
5041 string adds).
5045 string adds).
5042
5046
5043 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5047 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5044 of user-defined magics to operate with class methods (cleaner, in
5048 of user-defined magics to operate with class methods (cleaner, in
5045 line with the gnuplot code).
5049 line with the gnuplot code).
5046
5050
5047 2002-04-22 Fernando Perez <fperez@colorado.edu>
5051 2002-04-22 Fernando Perez <fperez@colorado.edu>
5048
5052
5049 * setup.py: updated dependency list so that manual is updated when
5053 * setup.py: updated dependency list so that manual is updated when
5050 all included files change.
5054 all included files change.
5051
5055
5052 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5056 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5053 the delimiter removal option (the fix is ugly right now).
5057 the delimiter removal option (the fix is ugly right now).
5054
5058
5055 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5059 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5056 all of the math profile (quicker loading, no conflict between
5060 all of the math profile (quicker loading, no conflict between
5057 g-9.8 and g-gnuplot).
5061 g-9.8 and g-gnuplot).
5058
5062
5059 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5063 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5060 name of post-mortem files to IPython_crash_report.txt.
5064 name of post-mortem files to IPython_crash_report.txt.
5061
5065
5062 * Cleanup/update of the docs. Added all the new readline info and
5066 * Cleanup/update of the docs. Added all the new readline info and
5063 formatted all lists as 'real lists'.
5067 formatted all lists as 'real lists'.
5064
5068
5065 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5069 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5066 tab-completion options, since the full readline parse_and_bind is
5070 tab-completion options, since the full readline parse_and_bind is
5067 now accessible.
5071 now accessible.
5068
5072
5069 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5073 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5070 handling of readline options. Now users can specify any string to
5074 handling of readline options. Now users can specify any string to
5071 be passed to parse_and_bind(), as well as the delimiters to be
5075 be passed to parse_and_bind(), as well as the delimiters to be
5072 removed.
5076 removed.
5073 (InteractiveShell.__init__): Added __name__ to the global
5077 (InteractiveShell.__init__): Added __name__ to the global
5074 namespace so that things like Itpl which rely on its existence
5078 namespace so that things like Itpl which rely on its existence
5075 don't crash.
5079 don't crash.
5076 (InteractiveShell._prefilter): Defined the default with a _ so
5080 (InteractiveShell._prefilter): Defined the default with a _ so
5077 that prefilter() is easier to override, while the default one
5081 that prefilter() is easier to override, while the default one
5078 remains available.
5082 remains available.
5079
5083
5080 2002-04-18 Fernando Perez <fperez@colorado.edu>
5084 2002-04-18 Fernando Perez <fperez@colorado.edu>
5081
5085
5082 * Added information about pdb in the docs.
5086 * Added information about pdb in the docs.
5083
5087
5084 2002-04-17 Fernando Perez <fperez@colorado.edu>
5088 2002-04-17 Fernando Perez <fperez@colorado.edu>
5085
5089
5086 * IPython/ipmaker.py (make_IPython): added rc_override option to
5090 * IPython/ipmaker.py (make_IPython): added rc_override option to
5087 allow passing config options at creation time which may override
5091 allow passing config options at creation time which may override
5088 anything set in the config files or command line. This is
5092 anything set in the config files or command line. This is
5089 particularly useful for configuring embedded instances.
5093 particularly useful for configuring embedded instances.
5090
5094
5091 2002-04-15 Fernando Perez <fperez@colorado.edu>
5095 2002-04-15 Fernando Perez <fperez@colorado.edu>
5092
5096
5093 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5097 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5094 crash embedded instances because of the input cache falling out of
5098 crash embedded instances because of the input cache falling out of
5095 sync with the output counter.
5099 sync with the output counter.
5096
5100
5097 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5101 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5098 mode which calls pdb after an uncaught exception in IPython itself.
5102 mode which calls pdb after an uncaught exception in IPython itself.
5099
5103
5100 2002-04-14 Fernando Perez <fperez@colorado.edu>
5104 2002-04-14 Fernando Perez <fperez@colorado.edu>
5101
5105
5102 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5106 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5103 readline, fix it back after each call.
5107 readline, fix it back after each call.
5104
5108
5105 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5109 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5106 method to force all access via __call__(), which guarantees that
5110 method to force all access via __call__(), which guarantees that
5107 traceback references are properly deleted.
5111 traceback references are properly deleted.
5108
5112
5109 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5113 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5110 improve printing when pprint is in use.
5114 improve printing when pprint is in use.
5111
5115
5112 2002-04-13 Fernando Perez <fperez@colorado.edu>
5116 2002-04-13 Fernando Perez <fperez@colorado.edu>
5113
5117
5114 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5118 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5115 exceptions aren't caught anymore. If the user triggers one, he
5119 exceptions aren't caught anymore. If the user triggers one, he
5116 should know why he's doing it and it should go all the way up,
5120 should know why he's doing it and it should go all the way up,
5117 just like any other exception. So now @abort will fully kill the
5121 just like any other exception. So now @abort will fully kill the
5118 embedded interpreter and the embedding code (unless that happens
5122 embedded interpreter and the embedding code (unless that happens
5119 to catch SystemExit).
5123 to catch SystemExit).
5120
5124
5121 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5125 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5122 and a debugger() method to invoke the interactive pdb debugger
5126 and a debugger() method to invoke the interactive pdb debugger
5123 after printing exception information. Also added the corresponding
5127 after printing exception information. Also added the corresponding
5124 -pdb option and @pdb magic to control this feature, and updated
5128 -pdb option and @pdb magic to control this feature, and updated
5125 the docs. After a suggestion from Christopher Hart
5129 the docs. After a suggestion from Christopher Hart
5126 (hart-AT-caltech.edu).
5130 (hart-AT-caltech.edu).
5127
5131
5128 2002-04-12 Fernando Perez <fperez@colorado.edu>
5132 2002-04-12 Fernando Perez <fperez@colorado.edu>
5129
5133
5130 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5134 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5131 the exception handlers defined by the user (not the CrashHandler)
5135 the exception handlers defined by the user (not the CrashHandler)
5132 so that user exceptions don't trigger an ipython bug report.
5136 so that user exceptions don't trigger an ipython bug report.
5133
5137
5134 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5138 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5135 configurable (it should have always been so).
5139 configurable (it should have always been so).
5136
5140
5137 2002-03-26 Fernando Perez <fperez@colorado.edu>
5141 2002-03-26 Fernando Perez <fperez@colorado.edu>
5138
5142
5139 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5143 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5140 and there to fix embedding namespace issues. This should all be
5144 and there to fix embedding namespace issues. This should all be
5141 done in a more elegant way.
5145 done in a more elegant way.
5142
5146
5143 2002-03-25 Fernando Perez <fperez@colorado.edu>
5147 2002-03-25 Fernando Perez <fperez@colorado.edu>
5144
5148
5145 * IPython/genutils.py (get_home_dir): Try to make it work under
5149 * IPython/genutils.py (get_home_dir): Try to make it work under
5146 win9x also.
5150 win9x also.
5147
5151
5148 2002-03-20 Fernando Perez <fperez@colorado.edu>
5152 2002-03-20 Fernando Perez <fperez@colorado.edu>
5149
5153
5150 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5154 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5151 sys.displayhook untouched upon __init__.
5155 sys.displayhook untouched upon __init__.
5152
5156
5153 2002-03-19 Fernando Perez <fperez@colorado.edu>
5157 2002-03-19 Fernando Perez <fperez@colorado.edu>
5154
5158
5155 * Released 0.2.9 (for embedding bug, basically).
5159 * Released 0.2.9 (for embedding bug, basically).
5156
5160
5157 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5161 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5158 exceptions so that enclosing shell's state can be restored.
5162 exceptions so that enclosing shell's state can be restored.
5159
5163
5160 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5164 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5161 naming conventions in the .ipython/ dir.
5165 naming conventions in the .ipython/ dir.
5162
5166
5163 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5167 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5164 from delimiters list so filenames with - in them get expanded.
5168 from delimiters list so filenames with - in them get expanded.
5165
5169
5166 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5170 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5167 sys.displayhook not being properly restored after an embedded call.
5171 sys.displayhook not being properly restored after an embedded call.
5168
5172
5169 2002-03-18 Fernando Perez <fperez@colorado.edu>
5173 2002-03-18 Fernando Perez <fperez@colorado.edu>
5170
5174
5171 * Released 0.2.8
5175 * Released 0.2.8
5172
5176
5173 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5177 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5174 some files weren't being included in a -upgrade.
5178 some files weren't being included in a -upgrade.
5175 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5179 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5176 on' so that the first tab completes.
5180 on' so that the first tab completes.
5177 (InteractiveShell.handle_magic): fixed bug with spaces around
5181 (InteractiveShell.handle_magic): fixed bug with spaces around
5178 quotes breaking many magic commands.
5182 quotes breaking many magic commands.
5179
5183
5180 * setup.py: added note about ignoring the syntax error messages at
5184 * setup.py: added note about ignoring the syntax error messages at
5181 installation.
5185 installation.
5182
5186
5183 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5187 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5184 streamlining the gnuplot interface, now there's only one magic @gp.
5188 streamlining the gnuplot interface, now there's only one magic @gp.
5185
5189
5186 2002-03-17 Fernando Perez <fperez@colorado.edu>
5190 2002-03-17 Fernando Perez <fperez@colorado.edu>
5187
5191
5188 * IPython/UserConfig/magic_gnuplot.py: new name for the
5192 * IPython/UserConfig/magic_gnuplot.py: new name for the
5189 example-magic_pm.py file. Much enhanced system, now with a shell
5193 example-magic_pm.py file. Much enhanced system, now with a shell
5190 for communicating directly with gnuplot, one command at a time.
5194 for communicating directly with gnuplot, one command at a time.
5191
5195
5192 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5196 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5193 setting __name__=='__main__'.
5197 setting __name__=='__main__'.
5194
5198
5195 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5199 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5196 mini-shell for accessing gnuplot from inside ipython. Should
5200 mini-shell for accessing gnuplot from inside ipython. Should
5197 extend it later for grace access too. Inspired by Arnd's
5201 extend it later for grace access too. Inspired by Arnd's
5198 suggestion.
5202 suggestion.
5199
5203
5200 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5204 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5201 calling magic functions with () in their arguments. Thanks to Arnd
5205 calling magic functions with () in their arguments. Thanks to Arnd
5202 Baecker for pointing this to me.
5206 Baecker for pointing this to me.
5203
5207
5204 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5208 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5205 infinitely for integer or complex arrays (only worked with floats).
5209 infinitely for integer or complex arrays (only worked with floats).
5206
5210
5207 2002-03-16 Fernando Perez <fperez@colorado.edu>
5211 2002-03-16 Fernando Perez <fperez@colorado.edu>
5208
5212
5209 * setup.py: Merged setup and setup_windows into a single script
5213 * setup.py: Merged setup and setup_windows into a single script
5210 which properly handles things for windows users.
5214 which properly handles things for windows users.
5211
5215
5212 2002-03-15 Fernando Perez <fperez@colorado.edu>
5216 2002-03-15 Fernando Perez <fperez@colorado.edu>
5213
5217
5214 * Big change to the manual: now the magics are all automatically
5218 * Big change to the manual: now the magics are all automatically
5215 documented. This information is generated from their docstrings
5219 documented. This information is generated from their docstrings
5216 and put in a latex file included by the manual lyx file. This way
5220 and put in a latex file included by the manual lyx file. This way
5217 we get always up to date information for the magics. The manual
5221 we get always up to date information for the magics. The manual
5218 now also has proper version information, also auto-synced.
5222 now also has proper version information, also auto-synced.
5219
5223
5220 For this to work, an undocumented --magic_docstrings option was added.
5224 For this to work, an undocumented --magic_docstrings option was added.
5221
5225
5222 2002-03-13 Fernando Perez <fperez@colorado.edu>
5226 2002-03-13 Fernando Perez <fperez@colorado.edu>
5223
5227
5224 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5228 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5225 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5229 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5226
5230
5227 2002-03-12 Fernando Perez <fperez@colorado.edu>
5231 2002-03-12 Fernando Perez <fperez@colorado.edu>
5228
5232
5229 * IPython/ultraTB.py (TermColors): changed color escapes again to
5233 * IPython/ultraTB.py (TermColors): changed color escapes again to
5230 fix the (old, reintroduced) line-wrapping bug. Basically, if
5234 fix the (old, reintroduced) line-wrapping bug. Basically, if
5231 \001..\002 aren't given in the color escapes, lines get wrapped
5235 \001..\002 aren't given in the color escapes, lines get wrapped
5232 weirdly. But giving those screws up old xterms and emacs terms. So
5236 weirdly. But giving those screws up old xterms and emacs terms. So
5233 I added some logic for emacs terms to be ok, but I can't identify old
5237 I added some logic for emacs terms to be ok, but I can't identify old
5234 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5238 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5235
5239
5236 2002-03-10 Fernando Perez <fperez@colorado.edu>
5240 2002-03-10 Fernando Perez <fperez@colorado.edu>
5237
5241
5238 * IPython/usage.py (__doc__): Various documentation cleanups and
5242 * IPython/usage.py (__doc__): Various documentation cleanups and
5239 updates, both in usage docstrings and in the manual.
5243 updates, both in usage docstrings and in the manual.
5240
5244
5241 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5245 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5242 handling of caching. Set minimum acceptabe value for having a
5246 handling of caching. Set minimum acceptabe value for having a
5243 cache at 20 values.
5247 cache at 20 values.
5244
5248
5245 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5249 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5246 install_first_time function to a method, renamed it and added an
5250 install_first_time function to a method, renamed it and added an
5247 'upgrade' mode. Now people can update their config directory with
5251 'upgrade' mode. Now people can update their config directory with
5248 a simple command line switch (-upgrade, also new).
5252 a simple command line switch (-upgrade, also new).
5249
5253
5250 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5254 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5251 @file (convenient for automagic users under Python >= 2.2).
5255 @file (convenient for automagic users under Python >= 2.2).
5252 Removed @files (it seemed more like a plural than an abbrev. of
5256 Removed @files (it seemed more like a plural than an abbrev. of
5253 'file show').
5257 'file show').
5254
5258
5255 * IPython/iplib.py (install_first_time): Fixed crash if there were
5259 * IPython/iplib.py (install_first_time): Fixed crash if there were
5256 backup files ('~') in .ipython/ install directory.
5260 backup files ('~') in .ipython/ install directory.
5257
5261
5258 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5262 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5259 system. Things look fine, but these changes are fairly
5263 system. Things look fine, but these changes are fairly
5260 intrusive. Test them for a few days.
5264 intrusive. Test them for a few days.
5261
5265
5262 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5266 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5263 the prompts system. Now all in/out prompt strings are user
5267 the prompts system. Now all in/out prompt strings are user
5264 controllable. This is particularly useful for embedding, as one
5268 controllable. This is particularly useful for embedding, as one
5265 can tag embedded instances with particular prompts.
5269 can tag embedded instances with particular prompts.
5266
5270
5267 Also removed global use of sys.ps1/2, which now allows nested
5271 Also removed global use of sys.ps1/2, which now allows nested
5268 embeddings without any problems. Added command-line options for
5272 embeddings without any problems. Added command-line options for
5269 the prompt strings.
5273 the prompt strings.
5270
5274
5271 2002-03-08 Fernando Perez <fperez@colorado.edu>
5275 2002-03-08 Fernando Perez <fperez@colorado.edu>
5272
5276
5273 * IPython/UserConfig/example-embed-short.py (ipshell): added
5277 * IPython/UserConfig/example-embed-short.py (ipshell): added
5274 example file with the bare minimum code for embedding.
5278 example file with the bare minimum code for embedding.
5275
5279
5276 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5280 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5277 functionality for the embeddable shell to be activated/deactivated
5281 functionality for the embeddable shell to be activated/deactivated
5278 either globally or at each call.
5282 either globally or at each call.
5279
5283
5280 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5284 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5281 rewriting the prompt with '--->' for auto-inputs with proper
5285 rewriting the prompt with '--->' for auto-inputs with proper
5282 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5286 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5283 this is handled by the prompts class itself, as it should.
5287 this is handled by the prompts class itself, as it should.
5284
5288
5285 2002-03-05 Fernando Perez <fperez@colorado.edu>
5289 2002-03-05 Fernando Perez <fperez@colorado.edu>
5286
5290
5287 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5291 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5288 @logstart to avoid name clashes with the math log function.
5292 @logstart to avoid name clashes with the math log function.
5289
5293
5290 * Big updates to X/Emacs section of the manual.
5294 * Big updates to X/Emacs section of the manual.
5291
5295
5292 * Removed ipython_emacs. Milan explained to me how to pass
5296 * Removed ipython_emacs. Milan explained to me how to pass
5293 arguments to ipython through Emacs. Some day I'm going to end up
5297 arguments to ipython through Emacs. Some day I'm going to end up
5294 learning some lisp...
5298 learning some lisp...
5295
5299
5296 2002-03-04 Fernando Perez <fperez@colorado.edu>
5300 2002-03-04 Fernando Perez <fperez@colorado.edu>
5297
5301
5298 * IPython/ipython_emacs: Created script to be used as the
5302 * IPython/ipython_emacs: Created script to be used as the
5299 py-python-command Emacs variable so we can pass IPython
5303 py-python-command Emacs variable so we can pass IPython
5300 parameters. I can't figure out how to tell Emacs directly to pass
5304 parameters. I can't figure out how to tell Emacs directly to pass
5301 parameters to IPython, so a dummy shell script will do it.
5305 parameters to IPython, so a dummy shell script will do it.
5302
5306
5303 Other enhancements made for things to work better under Emacs'
5307 Other enhancements made for things to work better under Emacs'
5304 various types of terminals. Many thanks to Milan Zamazal
5308 various types of terminals. Many thanks to Milan Zamazal
5305 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5309 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5306
5310
5307 2002-03-01 Fernando Perez <fperez@colorado.edu>
5311 2002-03-01 Fernando Perez <fperez@colorado.edu>
5308
5312
5309 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5313 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5310 that loading of readline is now optional. This gives better
5314 that loading of readline is now optional. This gives better
5311 control to emacs users.
5315 control to emacs users.
5312
5316
5313 * IPython/ultraTB.py (__date__): Modified color escape sequences
5317 * IPython/ultraTB.py (__date__): Modified color escape sequences
5314 and now things work fine under xterm and in Emacs' term buffers
5318 and now things work fine under xterm and in Emacs' term buffers
5315 (though not shell ones). Well, in emacs you get colors, but all
5319 (though not shell ones). Well, in emacs you get colors, but all
5316 seem to be 'light' colors (no difference between dark and light
5320 seem to be 'light' colors (no difference between dark and light
5317 ones). But the garbage chars are gone, and also in xterms. It
5321 ones). But the garbage chars are gone, and also in xterms. It
5318 seems that now I'm using 'cleaner' ansi sequences.
5322 seems that now I'm using 'cleaner' ansi sequences.
5319
5323
5320 2002-02-21 Fernando Perez <fperez@colorado.edu>
5324 2002-02-21 Fernando Perez <fperez@colorado.edu>
5321
5325
5322 * Released 0.2.7 (mainly to publish the scoping fix).
5326 * Released 0.2.7 (mainly to publish the scoping fix).
5323
5327
5324 * IPython/Logger.py (Logger.logstate): added. A corresponding
5328 * IPython/Logger.py (Logger.logstate): added. A corresponding
5325 @logstate magic was created.
5329 @logstate magic was created.
5326
5330
5327 * IPython/Magic.py: fixed nested scoping problem under Python
5331 * IPython/Magic.py: fixed nested scoping problem under Python
5328 2.1.x (automagic wasn't working).
5332 2.1.x (automagic wasn't working).
5329
5333
5330 2002-02-20 Fernando Perez <fperez@colorado.edu>
5334 2002-02-20 Fernando Perez <fperez@colorado.edu>
5331
5335
5332 * Released 0.2.6.
5336 * Released 0.2.6.
5333
5337
5334 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5338 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5335 option so that logs can come out without any headers at all.
5339 option so that logs can come out without any headers at all.
5336
5340
5337 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5341 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5338 SciPy.
5342 SciPy.
5339
5343
5340 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5344 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5341 that embedded IPython calls don't require vars() to be explicitly
5345 that embedded IPython calls don't require vars() to be explicitly
5342 passed. Now they are extracted from the caller's frame (code
5346 passed. Now they are extracted from the caller's frame (code
5343 snatched from Eric Jones' weave). Added better documentation to
5347 snatched from Eric Jones' weave). Added better documentation to
5344 the section on embedding and the example file.
5348 the section on embedding and the example file.
5345
5349
5346 * IPython/genutils.py (page): Changed so that under emacs, it just
5350 * IPython/genutils.py (page): Changed so that under emacs, it just
5347 prints the string. You can then page up and down in the emacs
5351 prints the string. You can then page up and down in the emacs
5348 buffer itself. This is how the builtin help() works.
5352 buffer itself. This is how the builtin help() works.
5349
5353
5350 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5354 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5351 macro scoping: macros need to be executed in the user's namespace
5355 macro scoping: macros need to be executed in the user's namespace
5352 to work as if they had been typed by the user.
5356 to work as if they had been typed by the user.
5353
5357
5354 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5358 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5355 execute automatically (no need to type 'exec...'). They then
5359 execute automatically (no need to type 'exec...'). They then
5356 behave like 'true macros'. The printing system was also modified
5360 behave like 'true macros'. The printing system was also modified
5357 for this to work.
5361 for this to work.
5358
5362
5359 2002-02-19 Fernando Perez <fperez@colorado.edu>
5363 2002-02-19 Fernando Perez <fperez@colorado.edu>
5360
5364
5361 * IPython/genutils.py (page_file): new function for paging files
5365 * IPython/genutils.py (page_file): new function for paging files
5362 in an OS-independent way. Also necessary for file viewing to work
5366 in an OS-independent way. Also necessary for file viewing to work
5363 well inside Emacs buffers.
5367 well inside Emacs buffers.
5364 (page): Added checks for being in an emacs buffer.
5368 (page): Added checks for being in an emacs buffer.
5365 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5369 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5366 same bug in iplib.
5370 same bug in iplib.
5367
5371
5368 2002-02-18 Fernando Perez <fperez@colorado.edu>
5372 2002-02-18 Fernando Perez <fperez@colorado.edu>
5369
5373
5370 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5374 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5371 of readline so that IPython can work inside an Emacs buffer.
5375 of readline so that IPython can work inside an Emacs buffer.
5372
5376
5373 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5377 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5374 method signatures (they weren't really bugs, but it looks cleaner
5378 method signatures (they weren't really bugs, but it looks cleaner
5375 and keeps PyChecker happy).
5379 and keeps PyChecker happy).
5376
5380
5377 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5381 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5378 for implementing various user-defined hooks. Currently only
5382 for implementing various user-defined hooks. Currently only
5379 display is done.
5383 display is done.
5380
5384
5381 * IPython/Prompts.py (CachedOutput._display): changed display
5385 * IPython/Prompts.py (CachedOutput._display): changed display
5382 functions so that they can be dynamically changed by users easily.
5386 functions so that they can be dynamically changed by users easily.
5383
5387
5384 * IPython/Extensions/numeric_formats.py (num_display): added an
5388 * IPython/Extensions/numeric_formats.py (num_display): added an
5385 extension for printing NumPy arrays in flexible manners. It
5389 extension for printing NumPy arrays in flexible manners. It
5386 doesn't do anything yet, but all the structure is in
5390 doesn't do anything yet, but all the structure is in
5387 place. Ultimately the plan is to implement output format control
5391 place. Ultimately the plan is to implement output format control
5388 like in Octave.
5392 like in Octave.
5389
5393
5390 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5394 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5391 methods are found at run-time by all the automatic machinery.
5395 methods are found at run-time by all the automatic machinery.
5392
5396
5393 2002-02-17 Fernando Perez <fperez@colorado.edu>
5397 2002-02-17 Fernando Perez <fperez@colorado.edu>
5394
5398
5395 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5399 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5396 whole file a little.
5400 whole file a little.
5397
5401
5398 * ToDo: closed this document. Now there's a new_design.lyx
5402 * ToDo: closed this document. Now there's a new_design.lyx
5399 document for all new ideas. Added making a pdf of it for the
5403 document for all new ideas. Added making a pdf of it for the
5400 end-user distro.
5404 end-user distro.
5401
5405
5402 * IPython/Logger.py (Logger.switch_log): Created this to replace
5406 * IPython/Logger.py (Logger.switch_log): Created this to replace
5403 logon() and logoff(). It also fixes a nasty crash reported by
5407 logon() and logoff(). It also fixes a nasty crash reported by
5404 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5408 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5405
5409
5406 * IPython/iplib.py (complete): got auto-completion to work with
5410 * IPython/iplib.py (complete): got auto-completion to work with
5407 automagic (I had wanted this for a long time).
5411 automagic (I had wanted this for a long time).
5408
5412
5409 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5413 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5410 to @file, since file() is now a builtin and clashes with automagic
5414 to @file, since file() is now a builtin and clashes with automagic
5411 for @file.
5415 for @file.
5412
5416
5413 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5417 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5414 of this was previously in iplib, which had grown to more than 2000
5418 of this was previously in iplib, which had grown to more than 2000
5415 lines, way too long. No new functionality, but it makes managing
5419 lines, way too long. No new functionality, but it makes managing
5416 the code a bit easier.
5420 the code a bit easier.
5417
5421
5418 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5422 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5419 information to crash reports.
5423 information to crash reports.
5420
5424
5421 2002-02-12 Fernando Perez <fperez@colorado.edu>
5425 2002-02-12 Fernando Perez <fperez@colorado.edu>
5422
5426
5423 * Released 0.2.5.
5427 * Released 0.2.5.
5424
5428
5425 2002-02-11 Fernando Perez <fperez@colorado.edu>
5429 2002-02-11 Fernando Perez <fperez@colorado.edu>
5426
5430
5427 * Wrote a relatively complete Windows installer. It puts
5431 * Wrote a relatively complete Windows installer. It puts
5428 everything in place, creates Start Menu entries and fixes the
5432 everything in place, creates Start Menu entries and fixes the
5429 color issues. Nothing fancy, but it works.
5433 color issues. Nothing fancy, but it works.
5430
5434
5431 2002-02-10 Fernando Perez <fperez@colorado.edu>
5435 2002-02-10 Fernando Perez <fperez@colorado.edu>
5432
5436
5433 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5437 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5434 os.path.expanduser() call so that we can type @run ~/myfile.py and
5438 os.path.expanduser() call so that we can type @run ~/myfile.py and
5435 have thigs work as expected.
5439 have thigs work as expected.
5436
5440
5437 * IPython/genutils.py (page): fixed exception handling so things
5441 * IPython/genutils.py (page): fixed exception handling so things
5438 work both in Unix and Windows correctly. Quitting a pager triggers
5442 work both in Unix and Windows correctly. Quitting a pager triggers
5439 an IOError/broken pipe in Unix, and in windows not finding a pager
5443 an IOError/broken pipe in Unix, and in windows not finding a pager
5440 is also an IOError, so I had to actually look at the return value
5444 is also an IOError, so I had to actually look at the return value
5441 of the exception, not just the exception itself. Should be ok now.
5445 of the exception, not just the exception itself. Should be ok now.
5442
5446
5443 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5447 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5444 modified to allow case-insensitive color scheme changes.
5448 modified to allow case-insensitive color scheme changes.
5445
5449
5446 2002-02-09 Fernando Perez <fperez@colorado.edu>
5450 2002-02-09 Fernando Perez <fperez@colorado.edu>
5447
5451
5448 * IPython/genutils.py (native_line_ends): new function to leave
5452 * IPython/genutils.py (native_line_ends): new function to leave
5449 user config files with os-native line-endings.
5453 user config files with os-native line-endings.
5450
5454
5451 * README and manual updates.
5455 * README and manual updates.
5452
5456
5453 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5457 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5454 instead of StringType to catch Unicode strings.
5458 instead of StringType to catch Unicode strings.
5455
5459
5456 * IPython/genutils.py (filefind): fixed bug for paths with
5460 * IPython/genutils.py (filefind): fixed bug for paths with
5457 embedded spaces (very common in Windows).
5461 embedded spaces (very common in Windows).
5458
5462
5459 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5463 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5460 files under Windows, so that they get automatically associated
5464 files under Windows, so that they get automatically associated
5461 with a text editor. Windows makes it a pain to handle
5465 with a text editor. Windows makes it a pain to handle
5462 extension-less files.
5466 extension-less files.
5463
5467
5464 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5468 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5465 warning about readline only occur for Posix. In Windows there's no
5469 warning about readline only occur for Posix. In Windows there's no
5466 way to get readline, so why bother with the warning.
5470 way to get readline, so why bother with the warning.
5467
5471
5468 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5472 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5469 for __str__ instead of dir(self), since dir() changed in 2.2.
5473 for __str__ instead of dir(self), since dir() changed in 2.2.
5470
5474
5471 * Ported to Windows! Tested on XP, I suspect it should work fine
5475 * Ported to Windows! Tested on XP, I suspect it should work fine
5472 on NT/2000, but I don't think it will work on 98 et al. That
5476 on NT/2000, but I don't think it will work on 98 et al. That
5473 series of Windows is such a piece of junk anyway that I won't try
5477 series of Windows is such a piece of junk anyway that I won't try
5474 porting it there. The XP port was straightforward, showed a few
5478 porting it there. The XP port was straightforward, showed a few
5475 bugs here and there (fixed all), in particular some string
5479 bugs here and there (fixed all), in particular some string
5476 handling stuff which required considering Unicode strings (which
5480 handling stuff which required considering Unicode strings (which
5477 Windows uses). This is good, but hasn't been too tested :) No
5481 Windows uses). This is good, but hasn't been too tested :) No
5478 fancy installer yet, I'll put a note in the manual so people at
5482 fancy installer yet, I'll put a note in the manual so people at
5479 least make manually a shortcut.
5483 least make manually a shortcut.
5480
5484
5481 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5485 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5482 into a single one, "colors". This now controls both prompt and
5486 into a single one, "colors". This now controls both prompt and
5483 exception color schemes, and can be changed both at startup
5487 exception color schemes, and can be changed both at startup
5484 (either via command-line switches or via ipythonrc files) and at
5488 (either via command-line switches or via ipythonrc files) and at
5485 runtime, with @colors.
5489 runtime, with @colors.
5486 (Magic.magic_run): renamed @prun to @run and removed the old
5490 (Magic.magic_run): renamed @prun to @run and removed the old
5487 @run. The two were too similar to warrant keeping both.
5491 @run. The two were too similar to warrant keeping both.
5488
5492
5489 2002-02-03 Fernando Perez <fperez@colorado.edu>
5493 2002-02-03 Fernando Perez <fperez@colorado.edu>
5490
5494
5491 * IPython/iplib.py (install_first_time): Added comment on how to
5495 * IPython/iplib.py (install_first_time): Added comment on how to
5492 configure the color options for first-time users. Put a <return>
5496 configure the color options for first-time users. Put a <return>
5493 request at the end so that small-terminal users get a chance to
5497 request at the end so that small-terminal users get a chance to
5494 read the startup info.
5498 read the startup info.
5495
5499
5496 2002-01-23 Fernando Perez <fperez@colorado.edu>
5500 2002-01-23 Fernando Perez <fperez@colorado.edu>
5497
5501
5498 * IPython/iplib.py (CachedOutput.update): Changed output memory
5502 * IPython/iplib.py (CachedOutput.update): Changed output memory
5499 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5503 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5500 input history we still use _i. Did this b/c these variable are
5504 input history we still use _i. Did this b/c these variable are
5501 very commonly used in interactive work, so the less we need to
5505 very commonly used in interactive work, so the less we need to
5502 type the better off we are.
5506 type the better off we are.
5503 (Magic.magic_prun): updated @prun to better handle the namespaces
5507 (Magic.magic_prun): updated @prun to better handle the namespaces
5504 the file will run in, including a fix for __name__ not being set
5508 the file will run in, including a fix for __name__ not being set
5505 before.
5509 before.
5506
5510
5507 2002-01-20 Fernando Perez <fperez@colorado.edu>
5511 2002-01-20 Fernando Perez <fperez@colorado.edu>
5508
5512
5509 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5513 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5510 extra garbage for Python 2.2. Need to look more carefully into
5514 extra garbage for Python 2.2. Need to look more carefully into
5511 this later.
5515 this later.
5512
5516
5513 2002-01-19 Fernando Perez <fperez@colorado.edu>
5517 2002-01-19 Fernando Perez <fperez@colorado.edu>
5514
5518
5515 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5519 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5516 display SyntaxError exceptions properly formatted when they occur
5520 display SyntaxError exceptions properly formatted when they occur
5517 (they can be triggered by imported code).
5521 (they can be triggered by imported code).
5518
5522
5519 2002-01-18 Fernando Perez <fperez@colorado.edu>
5523 2002-01-18 Fernando Perez <fperez@colorado.edu>
5520
5524
5521 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5525 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5522 SyntaxError exceptions are reported nicely formatted, instead of
5526 SyntaxError exceptions are reported nicely formatted, instead of
5523 spitting out only offset information as before.
5527 spitting out only offset information as before.
5524 (Magic.magic_prun): Added the @prun function for executing
5528 (Magic.magic_prun): Added the @prun function for executing
5525 programs with command line args inside IPython.
5529 programs with command line args inside IPython.
5526
5530
5527 2002-01-16 Fernando Perez <fperez@colorado.edu>
5531 2002-01-16 Fernando Perez <fperez@colorado.edu>
5528
5532
5529 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5533 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5530 to *not* include the last item given in a range. This brings their
5534 to *not* include the last item given in a range. This brings their
5531 behavior in line with Python's slicing:
5535 behavior in line with Python's slicing:
5532 a[n1:n2] -> a[n1]...a[n2-1]
5536 a[n1:n2] -> a[n1]...a[n2-1]
5533 It may be a bit less convenient, but I prefer to stick to Python's
5537 It may be a bit less convenient, but I prefer to stick to Python's
5534 conventions *everywhere*, so users never have to wonder.
5538 conventions *everywhere*, so users never have to wonder.
5535 (Magic.magic_macro): Added @macro function to ease the creation of
5539 (Magic.magic_macro): Added @macro function to ease the creation of
5536 macros.
5540 macros.
5537
5541
5538 2002-01-05 Fernando Perez <fperez@colorado.edu>
5542 2002-01-05 Fernando Perez <fperez@colorado.edu>
5539
5543
5540 * Released 0.2.4.
5544 * Released 0.2.4.
5541
5545
5542 * IPython/iplib.py (Magic.magic_pdef):
5546 * IPython/iplib.py (Magic.magic_pdef):
5543 (InteractiveShell.safe_execfile): report magic lines and error
5547 (InteractiveShell.safe_execfile): report magic lines and error
5544 lines without line numbers so one can easily copy/paste them for
5548 lines without line numbers so one can easily copy/paste them for
5545 re-execution.
5549 re-execution.
5546
5550
5547 * Updated manual with recent changes.
5551 * Updated manual with recent changes.
5548
5552
5549 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5553 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5550 docstring printing when class? is called. Very handy for knowing
5554 docstring printing when class? is called. Very handy for knowing
5551 how to create class instances (as long as __init__ is well
5555 how to create class instances (as long as __init__ is well
5552 documented, of course :)
5556 documented, of course :)
5553 (Magic.magic_doc): print both class and constructor docstrings.
5557 (Magic.magic_doc): print both class and constructor docstrings.
5554 (Magic.magic_pdef): give constructor info if passed a class and
5558 (Magic.magic_pdef): give constructor info if passed a class and
5555 __call__ info for callable object instances.
5559 __call__ info for callable object instances.
5556
5560
5557 2002-01-04 Fernando Perez <fperez@colorado.edu>
5561 2002-01-04 Fernando Perez <fperez@colorado.edu>
5558
5562
5559 * Made deep_reload() off by default. It doesn't always work
5563 * Made deep_reload() off by default. It doesn't always work
5560 exactly as intended, so it's probably safer to have it off. It's
5564 exactly as intended, so it's probably safer to have it off. It's
5561 still available as dreload() anyway, so nothing is lost.
5565 still available as dreload() anyway, so nothing is lost.
5562
5566
5563 2002-01-02 Fernando Perez <fperez@colorado.edu>
5567 2002-01-02 Fernando Perez <fperez@colorado.edu>
5564
5568
5565 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5569 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5566 so I wanted an updated release).
5570 so I wanted an updated release).
5567
5571
5568 2001-12-27 Fernando Perez <fperez@colorado.edu>
5572 2001-12-27 Fernando Perez <fperez@colorado.edu>
5569
5573
5570 * IPython/iplib.py (InteractiveShell.interact): Added the original
5574 * IPython/iplib.py (InteractiveShell.interact): Added the original
5571 code from 'code.py' for this module in order to change the
5575 code from 'code.py' for this module in order to change the
5572 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5576 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5573 the history cache would break when the user hit Ctrl-C, and
5577 the history cache would break when the user hit Ctrl-C, and
5574 interact() offers no way to add any hooks to it.
5578 interact() offers no way to add any hooks to it.
5575
5579
5576 2001-12-23 Fernando Perez <fperez@colorado.edu>
5580 2001-12-23 Fernando Perez <fperez@colorado.edu>
5577
5581
5578 * setup.py: added check for 'MANIFEST' before trying to remove
5582 * setup.py: added check for 'MANIFEST' before trying to remove
5579 it. Thanks to Sean Reifschneider.
5583 it. Thanks to Sean Reifschneider.
5580
5584
5581 2001-12-22 Fernando Perez <fperez@colorado.edu>
5585 2001-12-22 Fernando Perez <fperez@colorado.edu>
5582
5586
5583 * Released 0.2.2.
5587 * Released 0.2.2.
5584
5588
5585 * Finished (reasonably) writing the manual. Later will add the
5589 * Finished (reasonably) writing the manual. Later will add the
5586 python-standard navigation stylesheets, but for the time being
5590 python-standard navigation stylesheets, but for the time being
5587 it's fairly complete. Distribution will include html and pdf
5591 it's fairly complete. Distribution will include html and pdf
5588 versions.
5592 versions.
5589
5593
5590 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5594 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5591 (MayaVi author).
5595 (MayaVi author).
5592
5596
5593 2001-12-21 Fernando Perez <fperez@colorado.edu>
5597 2001-12-21 Fernando Perez <fperez@colorado.edu>
5594
5598
5595 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5599 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5596 good public release, I think (with the manual and the distutils
5600 good public release, I think (with the manual and the distutils
5597 installer). The manual can use some work, but that can go
5601 installer). The manual can use some work, but that can go
5598 slowly. Otherwise I think it's quite nice for end users. Next
5602 slowly. Otherwise I think it's quite nice for end users. Next
5599 summer, rewrite the guts of it...
5603 summer, rewrite the guts of it...
5600
5604
5601 * Changed format of ipythonrc files to use whitespace as the
5605 * Changed format of ipythonrc files to use whitespace as the
5602 separator instead of an explicit '='. Cleaner.
5606 separator instead of an explicit '='. Cleaner.
5603
5607
5604 2001-12-20 Fernando Perez <fperez@colorado.edu>
5608 2001-12-20 Fernando Perez <fperez@colorado.edu>
5605
5609
5606 * Started a manual in LyX. For now it's just a quick merge of the
5610 * Started a manual in LyX. For now it's just a quick merge of the
5607 various internal docstrings and READMEs. Later it may grow into a
5611 various internal docstrings and READMEs. Later it may grow into a
5608 nice, full-blown manual.
5612 nice, full-blown manual.
5609
5613
5610 * Set up a distutils based installer. Installation should now be
5614 * Set up a distutils based installer. Installation should now be
5611 trivially simple for end-users.
5615 trivially simple for end-users.
5612
5616
5613 2001-12-11 Fernando Perez <fperez@colorado.edu>
5617 2001-12-11 Fernando Perez <fperez@colorado.edu>
5614
5618
5615 * Released 0.2.0. First public release, announced it at
5619 * Released 0.2.0. First public release, announced it at
5616 comp.lang.python. From now on, just bugfixes...
5620 comp.lang.python. From now on, just bugfixes...
5617
5621
5618 * Went through all the files, set copyright/license notices and
5622 * Went through all the files, set copyright/license notices and
5619 cleaned up things. Ready for release.
5623 cleaned up things. Ready for release.
5620
5624
5621 2001-12-10 Fernando Perez <fperez@colorado.edu>
5625 2001-12-10 Fernando Perez <fperez@colorado.edu>
5622
5626
5623 * Changed the first-time installer not to use tarfiles. It's more
5627 * Changed the first-time installer not to use tarfiles. It's more
5624 robust now and less unix-dependent. Also makes it easier for
5628 robust now and less unix-dependent. Also makes it easier for
5625 people to later upgrade versions.
5629 people to later upgrade versions.
5626
5630
5627 * Changed @exit to @abort to reflect the fact that it's pretty
5631 * Changed @exit to @abort to reflect the fact that it's pretty
5628 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5632 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5629 becomes significant only when IPyhton is embedded: in that case,
5633 becomes significant only when IPyhton is embedded: in that case,
5630 C-D closes IPython only, but @abort kills the enclosing program
5634 C-D closes IPython only, but @abort kills the enclosing program
5631 too (unless it had called IPython inside a try catching
5635 too (unless it had called IPython inside a try catching
5632 SystemExit).
5636 SystemExit).
5633
5637
5634 * Created Shell module which exposes the actuall IPython Shell
5638 * Created Shell module which exposes the actuall IPython Shell
5635 classes, currently the normal and the embeddable one. This at
5639 classes, currently the normal and the embeddable one. This at
5636 least offers a stable interface we won't need to change when
5640 least offers a stable interface we won't need to change when
5637 (later) the internals are rewritten. That rewrite will be confined
5641 (later) the internals are rewritten. That rewrite will be confined
5638 to iplib and ipmaker, but the Shell interface should remain as is.
5642 to iplib and ipmaker, but the Shell interface should remain as is.
5639
5643
5640 * Added embed module which offers an embeddable IPShell object,
5644 * Added embed module which offers an embeddable IPShell object,
5641 useful to fire up IPython *inside* a running program. Great for
5645 useful to fire up IPython *inside* a running program. Great for
5642 debugging or dynamical data analysis.
5646 debugging or dynamical data analysis.
5643
5647
5644 2001-12-08 Fernando Perez <fperez@colorado.edu>
5648 2001-12-08 Fernando Perez <fperez@colorado.edu>
5645
5649
5646 * Fixed small bug preventing seeing info from methods of defined
5650 * Fixed small bug preventing seeing info from methods of defined
5647 objects (incorrect namespace in _ofind()).
5651 objects (incorrect namespace in _ofind()).
5648
5652
5649 * Documentation cleanup. Moved the main usage docstrings to a
5653 * Documentation cleanup. Moved the main usage docstrings to a
5650 separate file, usage.py (cleaner to maintain, and hopefully in the
5654 separate file, usage.py (cleaner to maintain, and hopefully in the
5651 future some perlpod-like way of producing interactive, man and
5655 future some perlpod-like way of producing interactive, man and
5652 html docs out of it will be found).
5656 html docs out of it will be found).
5653
5657
5654 * Added @profile to see your profile at any time.
5658 * Added @profile to see your profile at any time.
5655
5659
5656 * Added @p as an alias for 'print'. It's especially convenient if
5660 * Added @p as an alias for 'print'. It's especially convenient if
5657 using automagic ('p x' prints x).
5661 using automagic ('p x' prints x).
5658
5662
5659 * Small cleanups and fixes after a pychecker run.
5663 * Small cleanups and fixes after a pychecker run.
5660
5664
5661 * Changed the @cd command to handle @cd - and @cd -<n> for
5665 * Changed the @cd command to handle @cd - and @cd -<n> for
5662 visiting any directory in _dh.
5666 visiting any directory in _dh.
5663
5667
5664 * Introduced _dh, a history of visited directories. @dhist prints
5668 * Introduced _dh, a history of visited directories. @dhist prints
5665 it out with numbers.
5669 it out with numbers.
5666
5670
5667 2001-12-07 Fernando Perez <fperez@colorado.edu>
5671 2001-12-07 Fernando Perez <fperez@colorado.edu>
5668
5672
5669 * Released 0.1.22
5673 * Released 0.1.22
5670
5674
5671 * Made initialization a bit more robust against invalid color
5675 * Made initialization a bit more robust against invalid color
5672 options in user input (exit, not traceback-crash).
5676 options in user input (exit, not traceback-crash).
5673
5677
5674 * Changed the bug crash reporter to write the report only in the
5678 * Changed the bug crash reporter to write the report only in the
5675 user's .ipython directory. That way IPython won't litter people's
5679 user's .ipython directory. That way IPython won't litter people's
5676 hard disks with crash files all over the place. Also print on
5680 hard disks with crash files all over the place. Also print on
5677 screen the necessary mail command.
5681 screen the necessary mail command.
5678
5682
5679 * With the new ultraTB, implemented LightBG color scheme for light
5683 * With the new ultraTB, implemented LightBG color scheme for light
5680 background terminals. A lot of people like white backgrounds, so I
5684 background terminals. A lot of people like white backgrounds, so I
5681 guess we should at least give them something readable.
5685 guess we should at least give them something readable.
5682
5686
5683 2001-12-06 Fernando Perez <fperez@colorado.edu>
5687 2001-12-06 Fernando Perez <fperez@colorado.edu>
5684
5688
5685 * Modified the structure of ultraTB. Now there's a proper class
5689 * Modified the structure of ultraTB. Now there's a proper class
5686 for tables of color schemes which allow adding schemes easily and
5690 for tables of color schemes which allow adding schemes easily and
5687 switching the active scheme without creating a new instance every
5691 switching the active scheme without creating a new instance every
5688 time (which was ridiculous). The syntax for creating new schemes
5692 time (which was ridiculous). The syntax for creating new schemes
5689 is also cleaner. I think ultraTB is finally done, with a clean
5693 is also cleaner. I think ultraTB is finally done, with a clean
5690 class structure. Names are also much cleaner (now there's proper
5694 class structure. Names are also much cleaner (now there's proper
5691 color tables, no need for every variable to also have 'color' in
5695 color tables, no need for every variable to also have 'color' in
5692 its name).
5696 its name).
5693
5697
5694 * Broke down genutils into separate files. Now genutils only
5698 * Broke down genutils into separate files. Now genutils only
5695 contains utility functions, and classes have been moved to their
5699 contains utility functions, and classes have been moved to their
5696 own files (they had enough independent functionality to warrant
5700 own files (they had enough independent functionality to warrant
5697 it): ConfigLoader, OutputTrap, Struct.
5701 it): ConfigLoader, OutputTrap, Struct.
5698
5702
5699 2001-12-05 Fernando Perez <fperez@colorado.edu>
5703 2001-12-05 Fernando Perez <fperez@colorado.edu>
5700
5704
5701 * IPython turns 21! Released version 0.1.21, as a candidate for
5705 * IPython turns 21! Released version 0.1.21, as a candidate for
5702 public consumption. If all goes well, release in a few days.
5706 public consumption. If all goes well, release in a few days.
5703
5707
5704 * Fixed path bug (files in Extensions/ directory wouldn't be found
5708 * Fixed path bug (files in Extensions/ directory wouldn't be found
5705 unless IPython/ was explicitly in sys.path).
5709 unless IPython/ was explicitly in sys.path).
5706
5710
5707 * Extended the FlexCompleter class as MagicCompleter to allow
5711 * Extended the FlexCompleter class as MagicCompleter to allow
5708 completion of @-starting lines.
5712 completion of @-starting lines.
5709
5713
5710 * Created __release__.py file as a central repository for release
5714 * Created __release__.py file as a central repository for release
5711 info that other files can read from.
5715 info that other files can read from.
5712
5716
5713 * Fixed small bug in logging: when logging was turned on in
5717 * Fixed small bug in logging: when logging was turned on in
5714 mid-session, old lines with special meanings (!@?) were being
5718 mid-session, old lines with special meanings (!@?) were being
5715 logged without the prepended comment, which is necessary since
5719 logged without the prepended comment, which is necessary since
5716 they are not truly valid python syntax. This should make session
5720 they are not truly valid python syntax. This should make session
5717 restores produce less errors.
5721 restores produce less errors.
5718
5722
5719 * The namespace cleanup forced me to make a FlexCompleter class
5723 * The namespace cleanup forced me to make a FlexCompleter class
5720 which is nothing but a ripoff of rlcompleter, but with selectable
5724 which is nothing but a ripoff of rlcompleter, but with selectable
5721 namespace (rlcompleter only works in __main__.__dict__). I'll try
5725 namespace (rlcompleter only works in __main__.__dict__). I'll try
5722 to submit a note to the authors to see if this change can be
5726 to submit a note to the authors to see if this change can be
5723 incorporated in future rlcompleter releases (Dec.6: done)
5727 incorporated in future rlcompleter releases (Dec.6: done)
5724
5728
5725 * More fixes to namespace handling. It was a mess! Now all
5729 * More fixes to namespace handling. It was a mess! Now all
5726 explicit references to __main__.__dict__ are gone (except when
5730 explicit references to __main__.__dict__ are gone (except when
5727 really needed) and everything is handled through the namespace
5731 really needed) and everything is handled through the namespace
5728 dicts in the IPython instance. We seem to be getting somewhere
5732 dicts in the IPython instance. We seem to be getting somewhere
5729 with this, finally...
5733 with this, finally...
5730
5734
5731 * Small documentation updates.
5735 * Small documentation updates.
5732
5736
5733 * Created the Extensions directory under IPython (with an
5737 * Created the Extensions directory under IPython (with an
5734 __init__.py). Put the PhysicalQ stuff there. This directory should
5738 __init__.py). Put the PhysicalQ stuff there. This directory should
5735 be used for all special-purpose extensions.
5739 be used for all special-purpose extensions.
5736
5740
5737 * File renaming:
5741 * File renaming:
5738 ipythonlib --> ipmaker
5742 ipythonlib --> ipmaker
5739 ipplib --> iplib
5743 ipplib --> iplib
5740 This makes a bit more sense in terms of what these files actually do.
5744 This makes a bit more sense in terms of what these files actually do.
5741
5745
5742 * Moved all the classes and functions in ipythonlib to ipplib, so
5746 * Moved all the classes and functions in ipythonlib to ipplib, so
5743 now ipythonlib only has make_IPython(). This will ease up its
5747 now ipythonlib only has make_IPython(). This will ease up its
5744 splitting in smaller functional chunks later.
5748 splitting in smaller functional chunks later.
5745
5749
5746 * Cleaned up (done, I think) output of @whos. Better column
5750 * Cleaned up (done, I think) output of @whos. Better column
5747 formatting, and now shows str(var) for as much as it can, which is
5751 formatting, and now shows str(var) for as much as it can, which is
5748 typically what one gets with a 'print var'.
5752 typically what one gets with a 'print var'.
5749
5753
5750 2001-12-04 Fernando Perez <fperez@colorado.edu>
5754 2001-12-04 Fernando Perez <fperez@colorado.edu>
5751
5755
5752 * Fixed namespace problems. Now builtin/IPyhton/user names get
5756 * Fixed namespace problems. Now builtin/IPyhton/user names get
5753 properly reported in their namespace. Internal namespace handling
5757 properly reported in their namespace. Internal namespace handling
5754 is finally getting decent (not perfect yet, but much better than
5758 is finally getting decent (not perfect yet, but much better than
5755 the ad-hoc mess we had).
5759 the ad-hoc mess we had).
5756
5760
5757 * Removed -exit option. If people just want to run a python
5761 * Removed -exit option. If people just want to run a python
5758 script, that's what the normal interpreter is for. Less
5762 script, that's what the normal interpreter is for. Less
5759 unnecessary options, less chances for bugs.
5763 unnecessary options, less chances for bugs.
5760
5764
5761 * Added a crash handler which generates a complete post-mortem if
5765 * Added a crash handler which generates a complete post-mortem if
5762 IPython crashes. This will help a lot in tracking bugs down the
5766 IPython crashes. This will help a lot in tracking bugs down the
5763 road.
5767 road.
5764
5768
5765 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5769 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5766 which were boud to functions being reassigned would bypass the
5770 which were boud to functions being reassigned would bypass the
5767 logger, breaking the sync of _il with the prompt counter. This
5771 logger, breaking the sync of _il with the prompt counter. This
5768 would then crash IPython later when a new line was logged.
5772 would then crash IPython later when a new line was logged.
5769
5773
5770 2001-12-02 Fernando Perez <fperez@colorado.edu>
5774 2001-12-02 Fernando Perez <fperez@colorado.edu>
5771
5775
5772 * Made IPython a package. This means people don't have to clutter
5776 * Made IPython a package. This means people don't have to clutter
5773 their sys.path with yet another directory. Changed the INSTALL
5777 their sys.path with yet another directory. Changed the INSTALL
5774 file accordingly.
5778 file accordingly.
5775
5779
5776 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5780 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5777 sorts its output (so @who shows it sorted) and @whos formats the
5781 sorts its output (so @who shows it sorted) and @whos formats the
5778 table according to the width of the first column. Nicer, easier to
5782 table according to the width of the first column. Nicer, easier to
5779 read. Todo: write a generic table_format() which takes a list of
5783 read. Todo: write a generic table_format() which takes a list of
5780 lists and prints it nicely formatted, with optional row/column
5784 lists and prints it nicely formatted, with optional row/column
5781 separators and proper padding and justification.
5785 separators and proper padding and justification.
5782
5786
5783 * Released 0.1.20
5787 * Released 0.1.20
5784
5788
5785 * Fixed bug in @log which would reverse the inputcache list (a
5789 * Fixed bug in @log which would reverse the inputcache list (a
5786 copy operation was missing).
5790 copy operation was missing).
5787
5791
5788 * Code cleanup. @config was changed to use page(). Better, since
5792 * Code cleanup. @config was changed to use page(). Better, since
5789 its output is always quite long.
5793 its output is always quite long.
5790
5794
5791 * Itpl is back as a dependency. I was having too many problems
5795 * Itpl is back as a dependency. I was having too many problems
5792 getting the parametric aliases to work reliably, and it's just
5796 getting the parametric aliases to work reliably, and it's just
5793 easier to code weird string operations with it than playing %()s
5797 easier to code weird string operations with it than playing %()s
5794 games. It's only ~6k, so I don't think it's too big a deal.
5798 games. It's only ~6k, so I don't think it's too big a deal.
5795
5799
5796 * Found (and fixed) a very nasty bug with history. !lines weren't
5800 * Found (and fixed) a very nasty bug with history. !lines weren't
5797 getting cached, and the out of sync caches would crash
5801 getting cached, and the out of sync caches would crash
5798 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5802 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5799 division of labor a bit better. Bug fixed, cleaner structure.
5803 division of labor a bit better. Bug fixed, cleaner structure.
5800
5804
5801 2001-12-01 Fernando Perez <fperez@colorado.edu>
5805 2001-12-01 Fernando Perez <fperez@colorado.edu>
5802
5806
5803 * Released 0.1.19
5807 * Released 0.1.19
5804
5808
5805 * Added option -n to @hist to prevent line number printing. Much
5809 * Added option -n to @hist to prevent line number printing. Much
5806 easier to copy/paste code this way.
5810 easier to copy/paste code this way.
5807
5811
5808 * Created global _il to hold the input list. Allows easy
5812 * Created global _il to hold the input list. Allows easy
5809 re-execution of blocks of code by slicing it (inspired by Janko's
5813 re-execution of blocks of code by slicing it (inspired by Janko's
5810 comment on 'macros').
5814 comment on 'macros').
5811
5815
5812 * Small fixes and doc updates.
5816 * Small fixes and doc updates.
5813
5817
5814 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5818 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5815 much too fragile with automagic. Handles properly multi-line
5819 much too fragile with automagic. Handles properly multi-line
5816 statements and takes parameters.
5820 statements and takes parameters.
5817
5821
5818 2001-11-30 Fernando Perez <fperez@colorado.edu>
5822 2001-11-30 Fernando Perez <fperez@colorado.edu>
5819
5823
5820 * Version 0.1.18 released.
5824 * Version 0.1.18 released.
5821
5825
5822 * Fixed nasty namespace bug in initial module imports.
5826 * Fixed nasty namespace bug in initial module imports.
5823
5827
5824 * Added copyright/license notes to all code files (except
5828 * Added copyright/license notes to all code files (except
5825 DPyGetOpt). For the time being, LGPL. That could change.
5829 DPyGetOpt). For the time being, LGPL. That could change.
5826
5830
5827 * Rewrote a much nicer README, updated INSTALL, cleaned up
5831 * Rewrote a much nicer README, updated INSTALL, cleaned up
5828 ipythonrc-* samples.
5832 ipythonrc-* samples.
5829
5833
5830 * Overall code/documentation cleanup. Basically ready for
5834 * Overall code/documentation cleanup. Basically ready for
5831 release. Only remaining thing: licence decision (LGPL?).
5835 release. Only remaining thing: licence decision (LGPL?).
5832
5836
5833 * Converted load_config to a class, ConfigLoader. Now recursion
5837 * Converted load_config to a class, ConfigLoader. Now recursion
5834 control is better organized. Doesn't include the same file twice.
5838 control is better organized. Doesn't include the same file twice.
5835
5839
5836 2001-11-29 Fernando Perez <fperez@colorado.edu>
5840 2001-11-29 Fernando Perez <fperez@colorado.edu>
5837
5841
5838 * Got input history working. Changed output history variables from
5842 * Got input history working. Changed output history variables from
5839 _p to _o so that _i is for input and _o for output. Just cleaner
5843 _p to _o so that _i is for input and _o for output. Just cleaner
5840 convention.
5844 convention.
5841
5845
5842 * Implemented parametric aliases. This pretty much allows the
5846 * Implemented parametric aliases. This pretty much allows the
5843 alias system to offer full-blown shell convenience, I think.
5847 alias system to offer full-blown shell convenience, I think.
5844
5848
5845 * Version 0.1.17 released, 0.1.18 opened.
5849 * Version 0.1.17 released, 0.1.18 opened.
5846
5850
5847 * dot_ipython/ipythonrc (alias): added documentation.
5851 * dot_ipython/ipythonrc (alias): added documentation.
5848 (xcolor): Fixed small bug (xcolors -> xcolor)
5852 (xcolor): Fixed small bug (xcolors -> xcolor)
5849
5853
5850 * Changed the alias system. Now alias is a magic command to define
5854 * Changed the alias system. Now alias is a magic command to define
5851 aliases just like the shell. Rationale: the builtin magics should
5855 aliases just like the shell. Rationale: the builtin magics should
5852 be there for things deeply connected to IPython's
5856 be there for things deeply connected to IPython's
5853 architecture. And this is a much lighter system for what I think
5857 architecture. And this is a much lighter system for what I think
5854 is the really important feature: allowing users to define quickly
5858 is the really important feature: allowing users to define quickly
5855 magics that will do shell things for them, so they can customize
5859 magics that will do shell things for them, so they can customize
5856 IPython easily to match their work habits. If someone is really
5860 IPython easily to match their work habits. If someone is really
5857 desperate to have another name for a builtin alias, they can
5861 desperate to have another name for a builtin alias, they can
5858 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5862 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5859 works.
5863 works.
5860
5864
5861 2001-11-28 Fernando Perez <fperez@colorado.edu>
5865 2001-11-28 Fernando Perez <fperez@colorado.edu>
5862
5866
5863 * Changed @file so that it opens the source file at the proper
5867 * Changed @file so that it opens the source file at the proper
5864 line. Since it uses less, if your EDITOR environment is
5868 line. Since it uses less, if your EDITOR environment is
5865 configured, typing v will immediately open your editor of choice
5869 configured, typing v will immediately open your editor of choice
5866 right at the line where the object is defined. Not as quick as
5870 right at the line where the object is defined. Not as quick as
5867 having a direct @edit command, but for all intents and purposes it
5871 having a direct @edit command, but for all intents and purposes it
5868 works. And I don't have to worry about writing @edit to deal with
5872 works. And I don't have to worry about writing @edit to deal with
5869 all the editors, less does that.
5873 all the editors, less does that.
5870
5874
5871 * Version 0.1.16 released, 0.1.17 opened.
5875 * Version 0.1.16 released, 0.1.17 opened.
5872
5876
5873 * Fixed some nasty bugs in the page/page_dumb combo that could
5877 * Fixed some nasty bugs in the page/page_dumb combo that could
5874 crash IPython.
5878 crash IPython.
5875
5879
5876 2001-11-27 Fernando Perez <fperez@colorado.edu>
5880 2001-11-27 Fernando Perez <fperez@colorado.edu>
5877
5881
5878 * Version 0.1.15 released, 0.1.16 opened.
5882 * Version 0.1.15 released, 0.1.16 opened.
5879
5883
5880 * Finally got ? and ?? to work for undefined things: now it's
5884 * Finally got ? and ?? to work for undefined things: now it's
5881 possible to type {}.get? and get information about the get method
5885 possible to type {}.get? and get information about the get method
5882 of dicts, or os.path? even if only os is defined (so technically
5886 of dicts, or os.path? even if only os is defined (so technically
5883 os.path isn't). Works at any level. For example, after import os,
5887 os.path isn't). Works at any level. For example, after import os,
5884 os?, os.path?, os.path.abspath? all work. This is great, took some
5888 os?, os.path?, os.path.abspath? all work. This is great, took some
5885 work in _ofind.
5889 work in _ofind.
5886
5890
5887 * Fixed more bugs with logging. The sanest way to do it was to add
5891 * Fixed more bugs with logging. The sanest way to do it was to add
5888 to @log a 'mode' parameter. Killed two in one shot (this mode
5892 to @log a 'mode' parameter. Killed two in one shot (this mode
5889 option was a request of Janko's). I think it's finally clean
5893 option was a request of Janko's). I think it's finally clean
5890 (famous last words).
5894 (famous last words).
5891
5895
5892 * Added a page_dumb() pager which does a decent job of paging on
5896 * Added a page_dumb() pager which does a decent job of paging on
5893 screen, if better things (like less) aren't available. One less
5897 screen, if better things (like less) aren't available. One less
5894 unix dependency (someday maybe somebody will port this to
5898 unix dependency (someday maybe somebody will port this to
5895 windows).
5899 windows).
5896
5900
5897 * Fixed problem in magic_log: would lock of logging out if log
5901 * Fixed problem in magic_log: would lock of logging out if log
5898 creation failed (because it would still think it had succeeded).
5902 creation failed (because it would still think it had succeeded).
5899
5903
5900 * Improved the page() function using curses to auto-detect screen
5904 * Improved the page() function using curses to auto-detect screen
5901 size. Now it can make a much better decision on whether to print
5905 size. Now it can make a much better decision on whether to print
5902 or page a string. Option screen_length was modified: a value 0
5906 or page a string. Option screen_length was modified: a value 0
5903 means auto-detect, and that's the default now.
5907 means auto-detect, and that's the default now.
5904
5908
5905 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5909 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5906 go out. I'll test it for a few days, then talk to Janko about
5910 go out. I'll test it for a few days, then talk to Janko about
5907 licences and announce it.
5911 licences and announce it.
5908
5912
5909 * Fixed the length of the auto-generated ---> prompt which appears
5913 * Fixed the length of the auto-generated ---> prompt which appears
5910 for auto-parens and auto-quotes. Getting this right isn't trivial,
5914 for auto-parens and auto-quotes. Getting this right isn't trivial,
5911 with all the color escapes, different prompt types and optional
5915 with all the color escapes, different prompt types and optional
5912 separators. But it seems to be working in all the combinations.
5916 separators. But it seems to be working in all the combinations.
5913
5917
5914 2001-11-26 Fernando Perez <fperez@colorado.edu>
5918 2001-11-26 Fernando Perez <fperez@colorado.edu>
5915
5919
5916 * Wrote a regexp filter to get option types from the option names
5920 * Wrote a regexp filter to get option types from the option names
5917 string. This eliminates the need to manually keep two duplicate
5921 string. This eliminates the need to manually keep two duplicate
5918 lists.
5922 lists.
5919
5923
5920 * Removed the unneeded check_option_names. Now options are handled
5924 * Removed the unneeded check_option_names. Now options are handled
5921 in a much saner manner and it's easy to visually check that things
5925 in a much saner manner and it's easy to visually check that things
5922 are ok.
5926 are ok.
5923
5927
5924 * Updated version numbers on all files I modified to carry a
5928 * Updated version numbers on all files I modified to carry a
5925 notice so Janko and Nathan have clear version markers.
5929 notice so Janko and Nathan have clear version markers.
5926
5930
5927 * Updated docstring for ultraTB with my changes. I should send
5931 * Updated docstring for ultraTB with my changes. I should send
5928 this to Nathan.
5932 this to Nathan.
5929
5933
5930 * Lots of small fixes. Ran everything through pychecker again.
5934 * Lots of small fixes. Ran everything through pychecker again.
5931
5935
5932 * Made loading of deep_reload an cmd line option. If it's not too
5936 * Made loading of deep_reload an cmd line option. If it's not too
5933 kosher, now people can just disable it. With -nodeep_reload it's
5937 kosher, now people can just disable it. With -nodeep_reload it's
5934 still available as dreload(), it just won't overwrite reload().
5938 still available as dreload(), it just won't overwrite reload().
5935
5939
5936 * Moved many options to the no| form (-opt and -noopt
5940 * Moved many options to the no| form (-opt and -noopt
5937 accepted). Cleaner.
5941 accepted). Cleaner.
5938
5942
5939 * Changed magic_log so that if called with no parameters, it uses
5943 * Changed magic_log so that if called with no parameters, it uses
5940 'rotate' mode. That way auto-generated logs aren't automatically
5944 'rotate' mode. That way auto-generated logs aren't automatically
5941 over-written. For normal logs, now a backup is made if it exists
5945 over-written. For normal logs, now a backup is made if it exists
5942 (only 1 level of backups). A new 'backup' mode was added to the
5946 (only 1 level of backups). A new 'backup' mode was added to the
5943 Logger class to support this. This was a request by Janko.
5947 Logger class to support this. This was a request by Janko.
5944
5948
5945 * Added @logoff/@logon to stop/restart an active log.
5949 * Added @logoff/@logon to stop/restart an active log.
5946
5950
5947 * Fixed a lot of bugs in log saving/replay. It was pretty
5951 * Fixed a lot of bugs in log saving/replay. It was pretty
5948 broken. Now special lines (!@,/) appear properly in the command
5952 broken. Now special lines (!@,/) appear properly in the command
5949 history after a log replay.
5953 history after a log replay.
5950
5954
5951 * Tried and failed to implement full session saving via pickle. My
5955 * Tried and failed to implement full session saving via pickle. My
5952 idea was to pickle __main__.__dict__, but modules can't be
5956 idea was to pickle __main__.__dict__, but modules can't be
5953 pickled. This would be a better alternative to replaying logs, but
5957 pickled. This would be a better alternative to replaying logs, but
5954 seems quite tricky to get to work. Changed -session to be called
5958 seems quite tricky to get to work. Changed -session to be called
5955 -logplay, which more accurately reflects what it does. And if we
5959 -logplay, which more accurately reflects what it does. And if we
5956 ever get real session saving working, -session is now available.
5960 ever get real session saving working, -session is now available.
5957
5961
5958 * Implemented color schemes for prompts also. As for tracebacks,
5962 * Implemented color schemes for prompts also. As for tracebacks,
5959 currently only NoColor and Linux are supported. But now the
5963 currently only NoColor and Linux are supported. But now the
5960 infrastructure is in place, based on a generic ColorScheme
5964 infrastructure is in place, based on a generic ColorScheme
5961 class. So writing and activating new schemes both for the prompts
5965 class. So writing and activating new schemes both for the prompts
5962 and the tracebacks should be straightforward.
5966 and the tracebacks should be straightforward.
5963
5967
5964 * Version 0.1.13 released, 0.1.14 opened.
5968 * Version 0.1.13 released, 0.1.14 opened.
5965
5969
5966 * Changed handling of options for output cache. Now counter is
5970 * Changed handling of options for output cache. Now counter is
5967 hardwired starting at 1 and one specifies the maximum number of
5971 hardwired starting at 1 and one specifies the maximum number of
5968 entries *in the outcache* (not the max prompt counter). This is
5972 entries *in the outcache* (not the max prompt counter). This is
5969 much better, since many statements won't increase the cache
5973 much better, since many statements won't increase the cache
5970 count. It also eliminated some confusing options, now there's only
5974 count. It also eliminated some confusing options, now there's only
5971 one: cache_size.
5975 one: cache_size.
5972
5976
5973 * Added 'alias' magic function and magic_alias option in the
5977 * Added 'alias' magic function and magic_alias option in the
5974 ipythonrc file. Now the user can easily define whatever names he
5978 ipythonrc file. Now the user can easily define whatever names he
5975 wants for the magic functions without having to play weird
5979 wants for the magic functions without having to play weird
5976 namespace games. This gives IPython a real shell-like feel.
5980 namespace games. This gives IPython a real shell-like feel.
5977
5981
5978 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5982 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5979 @ or not).
5983 @ or not).
5980
5984
5981 This was one of the last remaining 'visible' bugs (that I know
5985 This was one of the last remaining 'visible' bugs (that I know
5982 of). I think if I can clean up the session loading so it works
5986 of). I think if I can clean up the session loading so it works
5983 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5987 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5984 about licensing).
5988 about licensing).
5985
5989
5986 2001-11-25 Fernando Perez <fperez@colorado.edu>
5990 2001-11-25 Fernando Perez <fperez@colorado.edu>
5987
5991
5988 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5992 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5989 there's a cleaner distinction between what ? and ?? show.
5993 there's a cleaner distinction between what ? and ?? show.
5990
5994
5991 * Added screen_length option. Now the user can define his own
5995 * Added screen_length option. Now the user can define his own
5992 screen size for page() operations.
5996 screen size for page() operations.
5993
5997
5994 * Implemented magic shell-like functions with automatic code
5998 * Implemented magic shell-like functions with automatic code
5995 generation. Now adding another function is just a matter of adding
5999 generation. Now adding another function is just a matter of adding
5996 an entry to a dict, and the function is dynamically generated at
6000 an entry to a dict, and the function is dynamically generated at
5997 run-time. Python has some really cool features!
6001 run-time. Python has some really cool features!
5998
6002
5999 * Renamed many options to cleanup conventions a little. Now all
6003 * Renamed many options to cleanup conventions a little. Now all
6000 are lowercase, and only underscores where needed. Also in the code
6004 are lowercase, and only underscores where needed. Also in the code
6001 option name tables are clearer.
6005 option name tables are clearer.
6002
6006
6003 * Changed prompts a little. Now input is 'In [n]:' instead of
6007 * Changed prompts a little. Now input is 'In [n]:' instead of
6004 'In[n]:='. This allows it the numbers to be aligned with the
6008 'In[n]:='. This allows it the numbers to be aligned with the
6005 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6009 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6006 Python (it was a Mathematica thing). The '...' continuation prompt
6010 Python (it was a Mathematica thing). The '...' continuation prompt
6007 was also changed a little to align better.
6011 was also changed a little to align better.
6008
6012
6009 * Fixed bug when flushing output cache. Not all _p<n> variables
6013 * Fixed bug when flushing output cache. Not all _p<n> variables
6010 exist, so their deletion needs to be wrapped in a try:
6014 exist, so their deletion needs to be wrapped in a try:
6011
6015
6012 * Figured out how to properly use inspect.formatargspec() (it
6016 * Figured out how to properly use inspect.formatargspec() (it
6013 requires the args preceded by *). So I removed all the code from
6017 requires the args preceded by *). So I removed all the code from
6014 _get_pdef in Magic, which was just replicating that.
6018 _get_pdef in Magic, which was just replicating that.
6015
6019
6016 * Added test to prefilter to allow redefining magic function names
6020 * Added test to prefilter to allow redefining magic function names
6017 as variables. This is ok, since the @ form is always available,
6021 as variables. This is ok, since the @ form is always available,
6018 but whe should allow the user to define a variable called 'ls' if
6022 but whe should allow the user to define a variable called 'ls' if
6019 he needs it.
6023 he needs it.
6020
6024
6021 * Moved the ToDo information from README into a separate ToDo.
6025 * Moved the ToDo information from README into a separate ToDo.
6022
6026
6023 * General code cleanup and small bugfixes. I think it's close to a
6027 * General code cleanup and small bugfixes. I think it's close to a
6024 state where it can be released, obviously with a big 'beta'
6028 state where it can be released, obviously with a big 'beta'
6025 warning on it.
6029 warning on it.
6026
6030
6027 * Got the magic function split to work. Now all magics are defined
6031 * Got the magic function split to work. Now all magics are defined
6028 in a separate class. It just organizes things a bit, and now
6032 in a separate class. It just organizes things a bit, and now
6029 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6033 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6030 was too long).
6034 was too long).
6031
6035
6032 * Changed @clear to @reset to avoid potential confusions with
6036 * Changed @clear to @reset to avoid potential confusions with
6033 the shell command clear. Also renamed @cl to @clear, which does
6037 the shell command clear. Also renamed @cl to @clear, which does
6034 exactly what people expect it to from their shell experience.
6038 exactly what people expect it to from their shell experience.
6035
6039
6036 Added a check to the @reset command (since it's so
6040 Added a check to the @reset command (since it's so
6037 destructive, it's probably a good idea to ask for confirmation).
6041 destructive, it's probably a good idea to ask for confirmation).
6038 But now reset only works for full namespace resetting. Since the
6042 But now reset only works for full namespace resetting. Since the
6039 del keyword is already there for deleting a few specific
6043 del keyword is already there for deleting a few specific
6040 variables, I don't see the point of having a redundant magic
6044 variables, I don't see the point of having a redundant magic
6041 function for the same task.
6045 function for the same task.
6042
6046
6043 2001-11-24 Fernando Perez <fperez@colorado.edu>
6047 2001-11-24 Fernando Perez <fperez@colorado.edu>
6044
6048
6045 * Updated the builtin docs (esp. the ? ones).
6049 * Updated the builtin docs (esp. the ? ones).
6046
6050
6047 * Ran all the code through pychecker. Not terribly impressed with
6051 * Ran all the code through pychecker. Not terribly impressed with
6048 it: lots of spurious warnings and didn't really find anything of
6052 it: lots of spurious warnings and didn't really find anything of
6049 substance (just a few modules being imported and not used).
6053 substance (just a few modules being imported and not used).
6050
6054
6051 * Implemented the new ultraTB functionality into IPython. New
6055 * Implemented the new ultraTB functionality into IPython. New
6052 option: xcolors. This chooses color scheme. xmode now only selects
6056 option: xcolors. This chooses color scheme. xmode now only selects
6053 between Plain and Verbose. Better orthogonality.
6057 between Plain and Verbose. Better orthogonality.
6054
6058
6055 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6059 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6056 mode and color scheme for the exception handlers. Now it's
6060 mode and color scheme for the exception handlers. Now it's
6057 possible to have the verbose traceback with no coloring.
6061 possible to have the verbose traceback with no coloring.
6058
6062
6059 2001-11-23 Fernando Perez <fperez@colorado.edu>
6063 2001-11-23 Fernando Perez <fperez@colorado.edu>
6060
6064
6061 * Version 0.1.12 released, 0.1.13 opened.
6065 * Version 0.1.12 released, 0.1.13 opened.
6062
6066
6063 * Removed option to set auto-quote and auto-paren escapes by
6067 * Removed option to set auto-quote and auto-paren escapes by
6064 user. The chances of breaking valid syntax are just too high. If
6068 user. The chances of breaking valid syntax are just too high. If
6065 someone *really* wants, they can always dig into the code.
6069 someone *really* wants, they can always dig into the code.
6066
6070
6067 * Made prompt separators configurable.
6071 * Made prompt separators configurable.
6068
6072
6069 2001-11-22 Fernando Perez <fperez@colorado.edu>
6073 2001-11-22 Fernando Perez <fperez@colorado.edu>
6070
6074
6071 * Small bugfixes in many places.
6075 * Small bugfixes in many places.
6072
6076
6073 * Removed the MyCompleter class from ipplib. It seemed redundant
6077 * Removed the MyCompleter class from ipplib. It seemed redundant
6074 with the C-p,C-n history search functionality. Less code to
6078 with the C-p,C-n history search functionality. Less code to
6075 maintain.
6079 maintain.
6076
6080
6077 * Moved all the original ipython.py code into ipythonlib.py. Right
6081 * Moved all the original ipython.py code into ipythonlib.py. Right
6078 now it's just one big dump into a function called make_IPython, so
6082 now it's just one big dump into a function called make_IPython, so
6079 no real modularity has been gained. But at least it makes the
6083 no real modularity has been gained. But at least it makes the
6080 wrapper script tiny, and since ipythonlib is a module, it gets
6084 wrapper script tiny, and since ipythonlib is a module, it gets
6081 compiled and startup is much faster.
6085 compiled and startup is much faster.
6082
6086
6083 This is a reasobably 'deep' change, so we should test it for a
6087 This is a reasobably 'deep' change, so we should test it for a
6084 while without messing too much more with the code.
6088 while without messing too much more with the code.
6085
6089
6086 2001-11-21 Fernando Perez <fperez@colorado.edu>
6090 2001-11-21 Fernando Perez <fperez@colorado.edu>
6087
6091
6088 * Version 0.1.11 released, 0.1.12 opened for further work.
6092 * Version 0.1.11 released, 0.1.12 opened for further work.
6089
6093
6090 * Removed dependency on Itpl. It was only needed in one place. It
6094 * Removed dependency on Itpl. It was only needed in one place. It
6091 would be nice if this became part of python, though. It makes life
6095 would be nice if this became part of python, though. It makes life
6092 *a lot* easier in some cases.
6096 *a lot* easier in some cases.
6093
6097
6094 * Simplified the prefilter code a bit. Now all handlers are
6098 * Simplified the prefilter code a bit. Now all handlers are
6095 expected to explicitly return a value (at least a blank string).
6099 expected to explicitly return a value (at least a blank string).
6096
6100
6097 * Heavy edits in ipplib. Removed the help system altogether. Now
6101 * Heavy edits in ipplib. Removed the help system altogether. Now
6098 obj?/?? is used for inspecting objects, a magic @doc prints
6102 obj?/?? is used for inspecting objects, a magic @doc prints
6099 docstrings, and full-blown Python help is accessed via the 'help'
6103 docstrings, and full-blown Python help is accessed via the 'help'
6100 keyword. This cleans up a lot of code (less to maintain) and does
6104 keyword. This cleans up a lot of code (less to maintain) and does
6101 the job. Since 'help' is now a standard Python component, might as
6105 the job. Since 'help' is now a standard Python component, might as
6102 well use it and remove duplicate functionality.
6106 well use it and remove duplicate functionality.
6103
6107
6104 Also removed the option to use ipplib as a standalone program. By
6108 Also removed the option to use ipplib as a standalone program. By
6105 now it's too dependent on other parts of IPython to function alone.
6109 now it's too dependent on other parts of IPython to function alone.
6106
6110
6107 * Fixed bug in genutils.pager. It would crash if the pager was
6111 * Fixed bug in genutils.pager. It would crash if the pager was
6108 exited immediately after opening (broken pipe).
6112 exited immediately after opening (broken pipe).
6109
6113
6110 * Trimmed down the VerboseTB reporting a little. The header is
6114 * Trimmed down the VerboseTB reporting a little. The header is
6111 much shorter now and the repeated exception arguments at the end
6115 much shorter now and the repeated exception arguments at the end
6112 have been removed. For interactive use the old header seemed a bit
6116 have been removed. For interactive use the old header seemed a bit
6113 excessive.
6117 excessive.
6114
6118
6115 * Fixed small bug in output of @whos for variables with multi-word
6119 * Fixed small bug in output of @whos for variables with multi-word
6116 types (only first word was displayed).
6120 types (only first word was displayed).
6117
6121
6118 2001-11-17 Fernando Perez <fperez@colorado.edu>
6122 2001-11-17 Fernando Perez <fperez@colorado.edu>
6119
6123
6120 * Version 0.1.10 released, 0.1.11 opened for further work.
6124 * Version 0.1.10 released, 0.1.11 opened for further work.
6121
6125
6122 * Modified dirs and friends. dirs now *returns* the stack (not
6126 * Modified dirs and friends. dirs now *returns* the stack (not
6123 prints), so one can manipulate it as a variable. Convenient to
6127 prints), so one can manipulate it as a variable. Convenient to
6124 travel along many directories.
6128 travel along many directories.
6125
6129
6126 * Fixed bug in magic_pdef: would only work with functions with
6130 * Fixed bug in magic_pdef: would only work with functions with
6127 arguments with default values.
6131 arguments with default values.
6128
6132
6129 2001-11-14 Fernando Perez <fperez@colorado.edu>
6133 2001-11-14 Fernando Perez <fperez@colorado.edu>
6130
6134
6131 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6135 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6132 example with IPython. Various other minor fixes and cleanups.
6136 example with IPython. Various other minor fixes and cleanups.
6133
6137
6134 * Version 0.1.9 released, 0.1.10 opened for further work.
6138 * Version 0.1.9 released, 0.1.10 opened for further work.
6135
6139
6136 * Added sys.path to the list of directories searched in the
6140 * Added sys.path to the list of directories searched in the
6137 execfile= option. It used to be the current directory and the
6141 execfile= option. It used to be the current directory and the
6138 user's IPYTHONDIR only.
6142 user's IPYTHONDIR only.
6139
6143
6140 2001-11-13 Fernando Perez <fperez@colorado.edu>
6144 2001-11-13 Fernando Perez <fperez@colorado.edu>
6141
6145
6142 * Reinstated the raw_input/prefilter separation that Janko had
6146 * Reinstated the raw_input/prefilter separation that Janko had
6143 initially. This gives a more convenient setup for extending the
6147 initially. This gives a more convenient setup for extending the
6144 pre-processor from the outside: raw_input always gets a string,
6148 pre-processor from the outside: raw_input always gets a string,
6145 and prefilter has to process it. We can then redefine prefilter
6149 and prefilter has to process it. We can then redefine prefilter
6146 from the outside and implement extensions for special
6150 from the outside and implement extensions for special
6147 purposes.
6151 purposes.
6148
6152
6149 Today I got one for inputting PhysicalQuantity objects
6153 Today I got one for inputting PhysicalQuantity objects
6150 (from Scientific) without needing any function calls at
6154 (from Scientific) without needing any function calls at
6151 all. Extremely convenient, and it's all done as a user-level
6155 all. Extremely convenient, and it's all done as a user-level
6152 extension (no IPython code was touched). Now instead of:
6156 extension (no IPython code was touched). Now instead of:
6153 a = PhysicalQuantity(4.2,'m/s**2')
6157 a = PhysicalQuantity(4.2,'m/s**2')
6154 one can simply say
6158 one can simply say
6155 a = 4.2 m/s**2
6159 a = 4.2 m/s**2
6156 or even
6160 or even
6157 a = 4.2 m/s^2
6161 a = 4.2 m/s^2
6158
6162
6159 I use this, but it's also a proof of concept: IPython really is
6163 I use this, but it's also a proof of concept: IPython really is
6160 fully user-extensible, even at the level of the parsing of the
6164 fully user-extensible, even at the level of the parsing of the
6161 command line. It's not trivial, but it's perfectly doable.
6165 command line. It's not trivial, but it's perfectly doable.
6162
6166
6163 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6167 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6164 the problem of modules being loaded in the inverse order in which
6168 the problem of modules being loaded in the inverse order in which
6165 they were defined in
6169 they were defined in
6166
6170
6167 * Version 0.1.8 released, 0.1.9 opened for further work.
6171 * Version 0.1.8 released, 0.1.9 opened for further work.
6168
6172
6169 * Added magics pdef, source and file. They respectively show the
6173 * Added magics pdef, source and file. They respectively show the
6170 definition line ('prototype' in C), source code and full python
6174 definition line ('prototype' in C), source code and full python
6171 file for any callable object. The object inspector oinfo uses
6175 file for any callable object. The object inspector oinfo uses
6172 these to show the same information.
6176 these to show the same information.
6173
6177
6174 * Version 0.1.7 released, 0.1.8 opened for further work.
6178 * Version 0.1.7 released, 0.1.8 opened for further work.
6175
6179
6176 * Separated all the magic functions into a class called Magic. The
6180 * Separated all the magic functions into a class called Magic. The
6177 InteractiveShell class was becoming too big for Xemacs to handle
6181 InteractiveShell class was becoming too big for Xemacs to handle
6178 (de-indenting a line would lock it up for 10 seconds while it
6182 (de-indenting a line would lock it up for 10 seconds while it
6179 backtracked on the whole class!)
6183 backtracked on the whole class!)
6180
6184
6181 FIXME: didn't work. It can be done, but right now namespaces are
6185 FIXME: didn't work. It can be done, but right now namespaces are
6182 all messed up. Do it later (reverted it for now, so at least
6186 all messed up. Do it later (reverted it for now, so at least
6183 everything works as before).
6187 everything works as before).
6184
6188
6185 * Got the object introspection system (magic_oinfo) working! I
6189 * Got the object introspection system (magic_oinfo) working! I
6186 think this is pretty much ready for release to Janko, so he can
6190 think this is pretty much ready for release to Janko, so he can
6187 test it for a while and then announce it. Pretty much 100% of what
6191 test it for a while and then announce it. Pretty much 100% of what
6188 I wanted for the 'phase 1' release is ready. Happy, tired.
6192 I wanted for the 'phase 1' release is ready. Happy, tired.
6189
6193
6190 2001-11-12 Fernando Perez <fperez@colorado.edu>
6194 2001-11-12 Fernando Perez <fperez@colorado.edu>
6191
6195
6192 * Version 0.1.6 released, 0.1.7 opened for further work.
6196 * Version 0.1.6 released, 0.1.7 opened for further work.
6193
6197
6194 * Fixed bug in printing: it used to test for truth before
6198 * Fixed bug in printing: it used to test for truth before
6195 printing, so 0 wouldn't print. Now checks for None.
6199 printing, so 0 wouldn't print. Now checks for None.
6196
6200
6197 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6201 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6198 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6202 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6199 reaches by hand into the outputcache. Think of a better way to do
6203 reaches by hand into the outputcache. Think of a better way to do
6200 this later.
6204 this later.
6201
6205
6202 * Various small fixes thanks to Nathan's comments.
6206 * Various small fixes thanks to Nathan's comments.
6203
6207
6204 * Changed magic_pprint to magic_Pprint. This way it doesn't
6208 * Changed magic_pprint to magic_Pprint. This way it doesn't
6205 collide with pprint() and the name is consistent with the command
6209 collide with pprint() and the name is consistent with the command
6206 line option.
6210 line option.
6207
6211
6208 * Changed prompt counter behavior to be fully like
6212 * Changed prompt counter behavior to be fully like
6209 Mathematica's. That is, even input that doesn't return a result
6213 Mathematica's. That is, even input that doesn't return a result
6210 raises the prompt counter. The old behavior was kind of confusing
6214 raises the prompt counter. The old behavior was kind of confusing
6211 (getting the same prompt number several times if the operation
6215 (getting the same prompt number several times if the operation
6212 didn't return a result).
6216 didn't return a result).
6213
6217
6214 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6218 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6215
6219
6216 * Fixed -Classic mode (wasn't working anymore).
6220 * Fixed -Classic mode (wasn't working anymore).
6217
6221
6218 * Added colored prompts using Nathan's new code. Colors are
6222 * Added colored prompts using Nathan's new code. Colors are
6219 currently hardwired, they can be user-configurable. For
6223 currently hardwired, they can be user-configurable. For
6220 developers, they can be chosen in file ipythonlib.py, at the
6224 developers, they can be chosen in file ipythonlib.py, at the
6221 beginning of the CachedOutput class def.
6225 beginning of the CachedOutput class def.
6222
6226
6223 2001-11-11 Fernando Perez <fperez@colorado.edu>
6227 2001-11-11 Fernando Perez <fperez@colorado.edu>
6224
6228
6225 * Version 0.1.5 released, 0.1.6 opened for further work.
6229 * Version 0.1.5 released, 0.1.6 opened for further work.
6226
6230
6227 * Changed magic_env to *return* the environment as a dict (not to
6231 * Changed magic_env to *return* the environment as a dict (not to
6228 print it). This way it prints, but it can also be processed.
6232 print it). This way it prints, but it can also be processed.
6229
6233
6230 * Added Verbose exception reporting to interactive
6234 * Added Verbose exception reporting to interactive
6231 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6235 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6232 traceback. Had to make some changes to the ultraTB file. This is
6236 traceback. Had to make some changes to the ultraTB file. This is
6233 probably the last 'big' thing in my mental todo list. This ties
6237 probably the last 'big' thing in my mental todo list. This ties
6234 in with the next entry:
6238 in with the next entry:
6235
6239
6236 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6240 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6237 has to specify is Plain, Color or Verbose for all exception
6241 has to specify is Plain, Color or Verbose for all exception
6238 handling.
6242 handling.
6239
6243
6240 * Removed ShellServices option. All this can really be done via
6244 * Removed ShellServices option. All this can really be done via
6241 the magic system. It's easier to extend, cleaner and has automatic
6245 the magic system. It's easier to extend, cleaner and has automatic
6242 namespace protection and documentation.
6246 namespace protection and documentation.
6243
6247
6244 2001-11-09 Fernando Perez <fperez@colorado.edu>
6248 2001-11-09 Fernando Perez <fperez@colorado.edu>
6245
6249
6246 * Fixed bug in output cache flushing (missing parameter to
6250 * Fixed bug in output cache flushing (missing parameter to
6247 __init__). Other small bugs fixed (found using pychecker).
6251 __init__). Other small bugs fixed (found using pychecker).
6248
6252
6249 * Version 0.1.4 opened for bugfixing.
6253 * Version 0.1.4 opened for bugfixing.
6250
6254
6251 2001-11-07 Fernando Perez <fperez@colorado.edu>
6255 2001-11-07 Fernando Perez <fperez@colorado.edu>
6252
6256
6253 * Version 0.1.3 released, mainly because of the raw_input bug.
6257 * Version 0.1.3 released, mainly because of the raw_input bug.
6254
6258
6255 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6259 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6256 and when testing for whether things were callable, a call could
6260 and when testing for whether things were callable, a call could
6257 actually be made to certain functions. They would get called again
6261 actually be made to certain functions. They would get called again
6258 once 'really' executed, with a resulting double call. A disaster
6262 once 'really' executed, with a resulting double call. A disaster
6259 in many cases (list.reverse() would never work!).
6263 in many cases (list.reverse() would never work!).
6260
6264
6261 * Removed prefilter() function, moved its code to raw_input (which
6265 * Removed prefilter() function, moved its code to raw_input (which
6262 after all was just a near-empty caller for prefilter). This saves
6266 after all was just a near-empty caller for prefilter). This saves
6263 a function call on every prompt, and simplifies the class a tiny bit.
6267 a function call on every prompt, and simplifies the class a tiny bit.
6264
6268
6265 * Fix _ip to __ip name in magic example file.
6269 * Fix _ip to __ip name in magic example file.
6266
6270
6267 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6271 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6268 work with non-gnu versions of tar.
6272 work with non-gnu versions of tar.
6269
6273
6270 2001-11-06 Fernando Perez <fperez@colorado.edu>
6274 2001-11-06 Fernando Perez <fperez@colorado.edu>
6271
6275
6272 * Version 0.1.2. Just to keep track of the recent changes.
6276 * Version 0.1.2. Just to keep track of the recent changes.
6273
6277
6274 * Fixed nasty bug in output prompt routine. It used to check 'if
6278 * Fixed nasty bug in output prompt routine. It used to check 'if
6275 arg != None...'. Problem is, this fails if arg implements a
6279 arg != None...'. Problem is, this fails if arg implements a
6276 special comparison (__cmp__) which disallows comparing to
6280 special comparison (__cmp__) which disallows comparing to
6277 None. Found it when trying to use the PhysicalQuantity module from
6281 None. Found it when trying to use the PhysicalQuantity module from
6278 ScientificPython.
6282 ScientificPython.
6279
6283
6280 2001-11-05 Fernando Perez <fperez@colorado.edu>
6284 2001-11-05 Fernando Perez <fperez@colorado.edu>
6281
6285
6282 * Also added dirs. Now the pushd/popd/dirs family functions
6286 * Also added dirs. Now the pushd/popd/dirs family functions
6283 basically like the shell, with the added convenience of going home
6287 basically like the shell, with the added convenience of going home
6284 when called with no args.
6288 when called with no args.
6285
6289
6286 * pushd/popd slightly modified to mimic shell behavior more
6290 * pushd/popd slightly modified to mimic shell behavior more
6287 closely.
6291 closely.
6288
6292
6289 * Added env,pushd,popd from ShellServices as magic functions. I
6293 * Added env,pushd,popd from ShellServices as magic functions. I
6290 think the cleanest will be to port all desired functions from
6294 think the cleanest will be to port all desired functions from
6291 ShellServices as magics and remove ShellServices altogether. This
6295 ShellServices as magics and remove ShellServices altogether. This
6292 will provide a single, clean way of adding functionality
6296 will provide a single, clean way of adding functionality
6293 (shell-type or otherwise) to IP.
6297 (shell-type or otherwise) to IP.
6294
6298
6295 2001-11-04 Fernando Perez <fperez@colorado.edu>
6299 2001-11-04 Fernando Perez <fperez@colorado.edu>
6296
6300
6297 * Added .ipython/ directory to sys.path. This way users can keep
6301 * Added .ipython/ directory to sys.path. This way users can keep
6298 customizations there and access them via import.
6302 customizations there and access them via import.
6299
6303
6300 2001-11-03 Fernando Perez <fperez@colorado.edu>
6304 2001-11-03 Fernando Perez <fperez@colorado.edu>
6301
6305
6302 * Opened version 0.1.1 for new changes.
6306 * Opened version 0.1.1 for new changes.
6303
6307
6304 * Changed version number to 0.1.0: first 'public' release, sent to
6308 * Changed version number to 0.1.0: first 'public' release, sent to
6305 Nathan and Janko.
6309 Nathan and Janko.
6306
6310
6307 * Lots of small fixes and tweaks.
6311 * Lots of small fixes and tweaks.
6308
6312
6309 * Minor changes to whos format. Now strings are shown, snipped if
6313 * Minor changes to whos format. Now strings are shown, snipped if
6310 too long.
6314 too long.
6311
6315
6312 * Changed ShellServices to work on __main__ so they show up in @who
6316 * Changed ShellServices to work on __main__ so they show up in @who
6313
6317
6314 * Help also works with ? at the end of a line:
6318 * Help also works with ? at the end of a line:
6315 ?sin and sin?
6319 ?sin and sin?
6316 both produce the same effect. This is nice, as often I use the
6320 both produce the same effect. This is nice, as often I use the
6317 tab-complete to find the name of a method, but I used to then have
6321 tab-complete to find the name of a method, but I used to then have
6318 to go to the beginning of the line to put a ? if I wanted more
6322 to go to the beginning of the line to put a ? if I wanted more
6319 info. Now I can just add the ? and hit return. Convenient.
6323 info. Now I can just add the ? and hit return. Convenient.
6320
6324
6321 2001-11-02 Fernando Perez <fperez@colorado.edu>
6325 2001-11-02 Fernando Perez <fperez@colorado.edu>
6322
6326
6323 * Python version check (>=2.1) added.
6327 * Python version check (>=2.1) added.
6324
6328
6325 * Added LazyPython documentation. At this point the docs are quite
6329 * Added LazyPython documentation. At this point the docs are quite
6326 a mess. A cleanup is in order.
6330 a mess. A cleanup is in order.
6327
6331
6328 * Auto-installer created. For some bizarre reason, the zipfiles
6332 * Auto-installer created. For some bizarre reason, the zipfiles
6329 module isn't working on my system. So I made a tar version
6333 module isn't working on my system. So I made a tar version
6330 (hopefully the command line options in various systems won't kill
6334 (hopefully the command line options in various systems won't kill
6331 me).
6335 me).
6332
6336
6333 * Fixes to Struct in genutils. Now all dictionary-like methods are
6337 * Fixes to Struct in genutils. Now all dictionary-like methods are
6334 protected (reasonably).
6338 protected (reasonably).
6335
6339
6336 * Added pager function to genutils and changed ? to print usage
6340 * Added pager function to genutils and changed ? to print usage
6337 note through it (it was too long).
6341 note through it (it was too long).
6338
6342
6339 * Added the LazyPython functionality. Works great! I changed the
6343 * Added the LazyPython functionality. Works great! I changed the
6340 auto-quote escape to ';', it's on home row and next to '. But
6344 auto-quote escape to ';', it's on home row and next to '. But
6341 both auto-quote and auto-paren (still /) escapes are command-line
6345 both auto-quote and auto-paren (still /) escapes are command-line
6342 parameters.
6346 parameters.
6343
6347
6344
6348
6345 2001-11-01 Fernando Perez <fperez@colorado.edu>
6349 2001-11-01 Fernando Perez <fperez@colorado.edu>
6346
6350
6347 * Version changed to 0.0.7. Fairly large change: configuration now
6351 * Version changed to 0.0.7. Fairly large change: configuration now
6348 is all stored in a directory, by default .ipython. There, all
6352 is all stored in a directory, by default .ipython. There, all
6349 config files have normal looking names (not .names)
6353 config files have normal looking names (not .names)
6350
6354
6351 * Version 0.0.6 Released first to Lucas and Archie as a test
6355 * Version 0.0.6 Released first to Lucas and Archie as a test
6352 run. Since it's the first 'semi-public' release, change version to
6356 run. Since it's the first 'semi-public' release, change version to
6353 > 0.0.6 for any changes now.
6357 > 0.0.6 for any changes now.
6354
6358
6355 * Stuff I had put in the ipplib.py changelog:
6359 * Stuff I had put in the ipplib.py changelog:
6356
6360
6357 Changes to InteractiveShell:
6361 Changes to InteractiveShell:
6358
6362
6359 - Made the usage message a parameter.
6363 - Made the usage message a parameter.
6360
6364
6361 - Require the name of the shell variable to be given. It's a bit
6365 - Require the name of the shell variable to be given. It's a bit
6362 of a hack, but allows the name 'shell' not to be hardwired in the
6366 of a hack, but allows the name 'shell' not to be hardwired in the
6363 magic (@) handler, which is problematic b/c it requires
6367 magic (@) handler, which is problematic b/c it requires
6364 polluting the global namespace with 'shell'. This in turn is
6368 polluting the global namespace with 'shell'. This in turn is
6365 fragile: if a user redefines a variable called shell, things
6369 fragile: if a user redefines a variable called shell, things
6366 break.
6370 break.
6367
6371
6368 - magic @: all functions available through @ need to be defined
6372 - magic @: all functions available through @ need to be defined
6369 as magic_<name>, even though they can be called simply as
6373 as magic_<name>, even though they can be called simply as
6370 @<name>. This allows the special command @magic to gather
6374 @<name>. This allows the special command @magic to gather
6371 information automatically about all existing magic functions,
6375 information automatically about all existing magic functions,
6372 even if they are run-time user extensions, by parsing the shell
6376 even if they are run-time user extensions, by parsing the shell
6373 instance __dict__ looking for special magic_ names.
6377 instance __dict__ looking for special magic_ names.
6374
6378
6375 - mainloop: added *two* local namespace parameters. This allows
6379 - mainloop: added *two* local namespace parameters. This allows
6376 the class to differentiate between parameters which were there
6380 the class to differentiate between parameters which were there
6377 before and after command line initialization was processed. This
6381 before and after command line initialization was processed. This
6378 way, later @who can show things loaded at startup by the
6382 way, later @who can show things loaded at startup by the
6379 user. This trick was necessary to make session saving/reloading
6383 user. This trick was necessary to make session saving/reloading
6380 really work: ideally after saving/exiting/reloading a session,
6384 really work: ideally after saving/exiting/reloading a session,
6381 *everything* should look the same, including the output of @who. I
6385 *everything* should look the same, including the output of @who. I
6382 was only able to make this work with this double namespace
6386 was only able to make this work with this double namespace
6383 trick.
6387 trick.
6384
6388
6385 - added a header to the logfile which allows (almost) full
6389 - added a header to the logfile which allows (almost) full
6386 session restoring.
6390 session restoring.
6387
6391
6388 - prepend lines beginning with @ or !, with a and log
6392 - prepend lines beginning with @ or !, with a and log
6389 them. Why? !lines: may be useful to know what you did @lines:
6393 them. Why? !lines: may be useful to know what you did @lines:
6390 they may affect session state. So when restoring a session, at
6394 they may affect session state. So when restoring a session, at
6391 least inform the user of their presence. I couldn't quite get
6395 least inform the user of their presence. I couldn't quite get
6392 them to properly re-execute, but at least the user is warned.
6396 them to properly re-execute, but at least the user is warned.
6393
6397
6394 * Started ChangeLog.
6398 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now