##// END OF EJS Templates
Show the input object of the igrid browser as the window tile....
walter.doerwald -
Show More
@@ -1,752 +1,796 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_LABEL_LEFT_DCLICK, self.label_doubleclicked)
228 self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_DCLICK, self.label_doubleclicked)
228 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)
229 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)
230 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)
231 self.current_selection = set()
232 self.current_selection = set()
232 self.maxchars = 200
233 self.maxchars = 200
233
234
234 def on_label_leftclick(self, event):
235 def on_label_leftclick(self, event):
235 event.Skip()
236 event.Skip()
236
237
237 def error_output(self, text):
238 def error_output(self, text):
238 wx.Bell()
239 wx.Bell()
239 frame = self.GetParent().GetParent().GetParent()
240 frame = self.GetParent().GetParent().GetParent()
240 frame.SetStatusText(text)
241 frame.SetStatusText(text)
241
242
242 def _on_selected_range(self, event):
243 def _on_selected_range(self, event):
243 # Internal update to the selection tracking lists
244 # Internal update to the selection tracking lists
244 if event.Selecting():
245 if event.Selecting():
245 # adding to the list...
246 # adding to the list...
246 self.current_selection.update(xrange(event.GetTopRow(), event.GetBottomRow()+1))
247 self.current_selection.update(xrange(event.GetTopRow(), event.GetBottomRow()+1))
247 else:
248 else:
248 # removal from list
249 # removal from list
249 for index in xrange( event.GetTopRow(), event.GetBottomRow()+1):
250 for index in xrange( event.GetTopRow(), event.GetBottomRow()+1):
250 self.current_selection.discard(index)
251 self.current_selection.discard(index)
251 event.Skip()
252 event.Skip()
252
253
253 def _on_selected_cell(self, event):
254 def _on_selected_cell(self, event):
254 # Internal update to the selection tracking list
255 # Internal update to the selection tracking list
255 self.current_selection = set([event.GetRow()])
256 self.current_selection = set([event.GetRow()])
256 event.Skip()
257 event.Skip()
257
258
258 def sort(self, key, reverse=False):
259 def sort(self, key, reverse=False):
259 """
260 """
260 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
261 ``reverse`` is true the sort order is reversed.
262 ``reverse`` is true the sort order is reversed.
262 """
263 """
263 row = self.GetGridCursorRow()
264 row = self.GetGridCursorRow()
264 col = self.GetGridCursorCol()
265 col = self.GetGridCursorCol()
265 curitem = self.table.items[row] # Remember where the cursor is now
266 curitem = self.table.items[row] # Remember where the cursor is now
266 # Sort items
267 # Sort items
267 def realkey(item):
268 def realkey(item):
268 return key(item)
269 try:
270 return key(item)
271 except (KeyboardInterrupt, SystemExit):
272 raise
273 except Exception:
274 return None
269 try:
275 try:
270 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))
271 except TypeError, exc:
277 except TypeError, exc:
272 self.error_output("Exception encountered: %s" % exc)
278 self.error_output("Exception encountered: %s" % exc)
273 return
279 return
274 # Find out where the object under the cursor went
280 # Find out where the object under the cursor went
275 for (i, item) in enumerate(self.table.items):
281 for (i, item) in enumerate(self.table.items):
276 if item is curitem:
282 if item is curitem:
277 self.SetGridCursor(i,col)
283 self.SetGridCursor(i,col)
278 self.MakeCellVisible(i,col)
284 self.MakeCellVisible(i,col)
279 self.Refresh()
285 self.Refresh()
280
286
281 def sortattrasc(self):
287 def sortattrasc(self):
282 """
288 """
283 Sort in ascending order; sorting criteria is the current attribute
289 Sort in ascending order; sorting criteria is the current attribute
284 """
290 """
285 col = self.GetGridCursorCol()
291 col = self.GetGridCursorCol()
286 attr = self.table._displayattrs[col]
292 attr = self.table._displvayattrs[col]
287 frame = self.GetParent().GetParent().GetParent()
293 frame = self.GetParent().GetParent().GetParent()
288 if attr is ipipe.noitem:
294 if attr is ipipe.noitem:
289 self.error_output("no column under cursor")
295 self.error_output("no column under cursor")
290 return
296 return
291 frame.SetStatusText("sort by %s (ascending)" % attr.name())
297 frame.SetStatusText("sort by %s (ascending)" % attr.name())
292 def key(item):
298 def key(item):
293 try:
299 try:
294 return attr.value(item)
300 return attr.value(item)
295 except (KeyboardInterrupt, SystemExit):
301 except (KeyboardInterrupt, SystemExit):
296 raise
302 raise
297 except Exception:
303 except Exception:
298 return None
304 return None
299 self.sort(key)
305 self.sort(key)
300
306
301 def sortattrdesc(self):
307 def sortattrdesc(self):
302 """
308 """
303 Sort in descending order; sorting criteria is the current attribute
309 Sort in descending order; sorting criteria is the current attribute
304 """
310 """
305 col = self.GetGridCursorCol()
311 col = self.GetGridCursorCol()
306 attr = self.table._displayattrs[col]
312 attr = self.table._displayattrs[col]
307 frame = self.GetParent().GetParent().GetParent()
313 frame = self.GetParent().GetParent().GetParent()
308 if attr is ipipe.noitem:
314 if attr is ipipe.noitem:
309 self.error_output("no column under cursor")
315 self.error_output("no column under cursor")
310 return
316 return
311 frame.SetStatusText("sort by %s (descending)" % attr.name())
317 frame.SetStatusText("sort by %s (descending)" % attr.name())
312 def key(item):
318 def key(item):
313 try:
319 try:
314 return attr.value(item)
320 return attr.value(item)
315 except (KeyboardInterrupt, SystemExit):
321 except (KeyboardInterrupt, SystemExit):
316 raise
322 raise
317 except Exception:
323 except Exception:
318 return None
324 return None
319 self.sort(key, reverse=True)
325 self.sort(key, reverse=True)
320
326
321 def label_doubleclicked(self, event):
327 def label_doubleclicked(self, event):
322 row = event.GetRow()
328 row = event.GetRow()
323 col = event.GetCol()
329 col = event.GetCol()
324 if col == -1:
330 if col == -1:
325 self.enter(row)
331 self.enter(row)
326
332
327 def _getvalue(self, row, col):
333 def _getvalue(self, row, col):
328 """
334 """
329 Gets the text which is displayed at ``(row, col)``
335 Gets the text which is displayed at ``(row, col)``
330 """
336 """
331 try:
337 try:
332 value = self.table._displayattrs[col].value(self.table.items[row])
338 value = self.table._displayattrs[col].value(self.table.items[row])
333 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
339 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
334 except IndexError:
340 except IndexError:
335 raise IndexError
341 raise IndexError
336 except Exception, exc:
342 except Exception, exc:
337 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
343 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
338 return text
344 return text
339
345
340 def search(self, searchtext, startrow=0, startcol=0, search_forward=True):
346 def search(self, searchtext, startrow=0, startcol=0, search_forward=True):
341 """
347 """
342 search for ``searchtext``, starting in ``(startrow, startcol)``;
348 search for ``searchtext``, starting in ``(startrow, startcol)``;
343 if ``search_forward`` is true the direction is "forward"
349 if ``search_forward`` is true the direction is "forward"
344 """
350 """
345 row = startrow
351 row = startrow
346 searchtext = searchtext.lower()
352 searchtext = searchtext.lower()
347 if search_forward:
353 if search_forward:
348 while True:
354 while True:
349 for col in xrange(startcol, self.table.GetNumberCols()):
355 for col in xrange(startcol, self.table.GetNumberCols()):
350 try:
356 try:
351 foo = self.table.GetValue(row, col)
357 foo = self.table.GetValue(row, col)
352 text = self._getvalue(row, col)
358 text = self._getvalue(row, col)
353 if searchtext in text.string().lower():
359 if searchtext in text.string().lower():
354 self.SetGridCursor(row, col)
360 self.SetGridCursor(row, col)
355 self.MakeCellVisible(row, col)
361 self.MakeCellVisible(row, col)
356 return
362 return
357 except IndexError:
363 except IndexError:
358 return
364 return
359 startcol = 0
365 startcol = 0
360 row += 1
366 row += 1
361 else:
367 else:
362 while True:
368 while True:
363 for col in xrange(startcol, -1, -1):
369 for col in xrange(startcol, -1, -1):
364 try:
370 try:
365 foo = self.table.GetValue(row, col)
371 foo = self.table.GetValue(row, col)
366 text = self._getvalue(row, col)
372 text = self._getvalue(row, col)
367 if searchtext in text.string().lower():
373 if searchtext in text.string().lower():
368 self.SetGridCursor(row, col)
374 self.SetGridCursor(row, col)
369 self.MakeCellVisible(row, col)
375 self.MakeCellVisible(row, col)
370 return
376 return
371 except IndexError:
377 except IndexError:
372 return
378 return
373 startcol = self.table.GetNumberCols()-1
379 startcol = self.table.GetNumberCols()-1
374 row -= 1
380 row -= 1
375
381
376 def key_pressed(self, event):
382 def key_pressed(self, event):
377 """
383 """
378 Maps pressed keys to functions
384 Maps pressed keys to functions
379 """
385 """
380 frame = self.GetParent().GetParent().GetParent()
386 frame = self.GetParent().GetParent().GetParent()
381 frame.SetStatusText("")
387 frame.SetStatusText("")
382 sh = event.ShiftDown()
388 sh = event.ShiftDown()
383 ctrl = event.ControlDown()
389 ctrl = event.ControlDown()
384
390
385 keycode = event.GetKeyCode()
391 keycode = event.GetKeyCode()
386 if keycode == ord("P"):
392 if keycode == ord("P"):
387 row = self.GetGridCursorRow()
393 row = self.GetGridCursorRow()
388 if event.ShiftDown():
394 if event.ShiftDown():
389 col = self.GetGridCursorCol()
395 col = self.GetGridCursorCol()
390 self.pickattr(row, col)
396 self.pickattr(row, col)
391 else:
397 else:
392 self.pick(row)
398 self.pick(row)
393 elif keycode == ord("M"):
399 elif keycode == ord("M"):
394 if ctrl:
400 if ctrl:
395 col = self.GetGridCursorCol()
401 col = self.GetGridCursorCol()
396 self.pickrowsattr(sorted(self.current_selection), col)
402 self.pickrowsattr(sorted(self.current_selection), col)
397 else:
403 else:
398 self.pickrows(sorted(self.current_selection))
404 self.pickrows(sorted(self.current_selection))
399 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):
400 self.delete_current_notebook()
406 self.delete_current_notebook()
401 elif keycode == ord("E") and not (ctrl or sh):
407 elif keycode == ord("E") and not (ctrl or sh):
402 row = self.GetGridCursorRow()
408 row = self.GetGridCursorRow()
403 self.enter(row)
409 self.enter(row)
404 elif keycode == ord("E") and sh and not ctrl:
410 elif keycode == ord("E") and sh and not ctrl:
405 row = self.GetGridCursorRow()
411 row = self.GetGridCursorRow()
406 col = self.GetGridCursorCol()
412 col = self.GetGridCursorCol()
407 self.enterattr(row, col)
413 self.enterattr(row, col)
408 elif keycode == ord("E") and ctrl:
414 elif keycode == ord("E") and ctrl:
409 row = self.GetGridCursorRow()
415 row = self.GetGridCursorRow()
410 self.SetGridCursor(row, self.GetNumberCols()-1)
416 self.SetGridCursor(row, self.GetNumberCols()-1)
411 elif keycode == wx.WXK_HOME or (keycode == ord("A") and ctrl):
417 elif keycode == wx.WXK_HOME or (keycode == ord("A") and ctrl):
412 row = self.GetGridCursorRow()
418 row = self.GetGridCursorRow()
413 self.SetGridCursor(row, 0)
419 self.SetGridCursor(row, 0)
414 elif keycode == ord("C") and sh:
420 elif keycode == ord("C") and sh:
415 col = self.GetGridCursorCol()
421 col = self.GetGridCursorCol()
416 attr = self.table._displayattrs[col]
422 attr = self.table._displayattrs[col]
417 returnobj = []
423 returnobj = []
418 for i in xrange(self.GetNumberRows()):
424 for i in xrange(self.GetNumberRows()):
419 returnobj.append(self.table._displayattrs[col].value(self.table.items[i]))
425 returnobj.append(self.table._displayattrs[col].value(self.table.items[i]))
420 self.quit(returnobj)
426 self.quit(returnobj)
421 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):
422 self.quit()
428 self.quit()
423 elif keycode == ord("<"):
429 elif keycode == ord("<"):
424 row = self.GetGridCursorRow()
430 row = self.GetGridCursorRow()
425 col = self.GetGridCursorCol()
431 col = self.GetGridCursorCol()
426 if not event.ShiftDown():
432 if not event.ShiftDown():
427 newcol = col - 1
433 newcol = col - 1
428 if newcol >= 0:
434 if newcol >= 0:
429 self.SetGridCursor(row, col - 1)
435 self.SetGridCursor(row, col - 1)
430 else:
436 else:
431 newcol = col + 1
437 newcol = col + 1
432 if newcol < self.GetNumberCols():
438 if newcol < self.GetNumberCols():
433 self.SetGridCursor(row, col + 1)
439 self.SetGridCursor(row, col + 1)
434 elif keycode == ord("D"):
440 elif keycode == ord("D"):
435 col = self.GetGridCursorCol()
441 col = self.GetGridCursorCol()
436 row = self.GetGridCursorRow()
442 row = self.GetGridCursorRow()
437 if not sh:
443 if not sh:
438 self.detail(row, col)
444 self.detail(row, col)
439 else:
445 else:
440 self.detail_attr(row, col)
446 self.detail_attr(row, col)
441 elif keycode == ord("F") and ctrl:
447 elif keycode == ord("F") and ctrl:
442 frame.enter_searchtext(event)
448 frame.enter_searchtext(event)
443 elif keycode == wx.WXK_F3:
449 elif keycode == wx.WXK_F3:
444 if sh:
450 if sh:
445 frame.find_previous(event)
451 frame.find_previous(event)
446 else:
452 else:
447 frame.find_next(event)
453 frame.find_next(event)
448 elif keycode == ord("V"):
454 elif keycode == ord("V"):
449 if sh:
455 if sh:
450 self.sortattrdesc()
456 self.sortattrdesc()
451 else:
457 else:
452 self.sortattrasc()
458 self.sortattrasc()
459 elif keycode == wx.WXK_DOWN:
460 row = self.GetGridCursorRow()
461 try:
462 item = self.table.items[row+1]
463 except IndexError:
464 item = self.table.items[row]
465 self.set_footer(item)
466 event.Skip()
467 elif keycode == wx.WXK_UP:
468 row = self.GetGridCursorRow()
469 if row >= 1:
470 item = self.table.items[row-1]
471 else:
472 item = self.table.items[row]
473 self.set_footer(item)
474 event.Skip()
475 elif keycode == wx.WXK_RIGHT:
476 row = self.GetGridCursorRow()
477 item = self.table.items[row]
478 self.set_footer(item)
479 event.Skip()
480 elif keycode == wx.WXK_LEFT:
481 row = self.GetGridCursorRow()
482 item = self.table.items[row]
483 self.set_footer(item)
484 event.Skip()
453 else:
485 else:
454 event.Skip()
486 event.Skip()
455
487
456 def delete_current_notebook(self):
488 def delete_current_notebook(self):
457 """
489 """
458 deletes the current notebook tab
490 deletes the current notebook tab
459 """
491 """
460 panel = self.GetParent()
492 panel = self.GetParent()
461 nb = panel.GetParent()
493 nb = panel.GetParent()
462 current = nb.GetSelection()
494 current = nb.GetSelection()
463 count = nb.GetPageCount()
495 count = nb.GetPageCount()
464 if count > 1:
496 if count > 1:
465 for i in xrange(count-1, current-1, -1):
497 for i in xrange(count-1, current-1, -1):
466 nb.DeletePage(i)
498 nb.DeletePage(i)
467 nb.GetCurrentPage().grid.SetFocus()
499 nb.GetCurrentPage().grid.SetFocus()
468 else:
500 else:
469 frame = nb.GetParent()
501 frame = nb.GetParent()
470 frame.SetStatusText("This is the last level!")
502 frame.SetStatusText("This is the last level!")
471
503
472 def _doenter(self, value, *attrs):
504 def _doenter(self, value, *attrs):
473 """
505 """
474 "enter" a special item resulting in a new notebook tab
506 "enter" a special item resulting in a new notebook tab
475 """
507 """
476 panel = self.GetParent()
508 panel = self.GetParent()
477 nb = panel.GetParent()
509 nb = panel.GetParent()
478 frame = nb.GetParent()
510 frame = nb.GetParent()
479 current = nb.GetSelection()
511 current = nb.GetSelection()
480 count = nb.GetPageCount()
512 count = nb.GetPageCount()
481 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
482 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
483 frame._add_notebook(value, *attrs)
515 frame._add_notebook(value, *attrs)
484 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
485 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
486 nb.DeletePage(i)
518 nb.DeletePage(i)
487 frame._add_notebook(value)
519 frame._add_notebook(value)
488 except TypeError, exc:
520 except TypeError, exc:
489 if exc.__class__.__module__ == "exceptions":
521 if exc.__class__.__module__ == "exceptions":
490 msg = "%s: %s" % (exc.__class__.__name__, exc)
522 msg = "%s: %s" % (exc.__class__.__name__, exc)
491 else:
523 else:
492 msg = "%s.%s: %s" % (exc.__class__.__module__, exc.__class__.__name__, exc)
524 msg = "%s.%s: %s" % (exc.__class__.__module__, exc.__class__.__name__, exc)
493 frame.SetStatusText(msg)
525 frame.SetStatusText(msg)
494
526
495 def enterattr(self, row, col):
527 def enterattr(self, row, col):
496 try:
528 try:
497 attr = self.table._displayattrs[col]
529 attr = self.table._displayattrs[col]
498 value = attr.value(self.table.items[row])
530 value = attr.value(self.table.items[row])
499 except Exception, exc:
531 except Exception, exc:
500 self.error_output(str(exc))
532 self.error_output(str(exc))
501 else:
533 else:
502 self._doenter(value)
534 self._doenter(value)
503
535
536 def set_footer(self, item):
537 frame = self.GetParent().GetParent().GetParent()
538 frame.SetStatusText(" ".join([str(text) for (style, text) in ipipe.xformat(item, "footer", 20)[2]]))
539
504 def enter(self, row):
540 def enter(self, row):
505 try:
541 try:
506 value = self.table.items[row]
542 value = self.table.items[row]
507 except Exception, exc:
543 except Exception, exc:
508 self.error_output(str(exc))
544 self.error_output(str(exc))
509 else:
545 else:
510 self._doenter(value)
546 self._doenter(value)
511
547
512 def detail(self, row, col):
548 def detail(self, row, col):
513 """
549 """
514 shows a detail-view of the current cell
550 shows a detail-view of the current cell
515 """
551 """
516 try:
552 try:
517 attr = self.table._displayattrs[col]
553 attr = self.table._displayattrs[col]
518 item = self.table.items[row]
554 item = self.table.items[row]
519 except Exception, exc:
555 except Exception, exc:
520 self.error_output(str(exc))
556 self.error_output(str(exc))
521 else:
557 else:
522 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")]
523 self._doenter(attrs)
559 self._doenter(attrs)
524
560
525 def detail_attr(self, row, col):
561 def detail_attr(self, row, col):
526 try:
562 try:
527 attr = self.table._displayattrs[col]
563 attr = self.table._displayattrs[col]
528 item = attr.value(self.table.items[row])
564 item = attr.value(self.table.items[row])
529 except Exception, exc:
565 except Exception, exc:
530 self.error_output(str(exc))
566 self.error_output(str(exc))
531 else:
567 else:
532 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")]
533 self._doenter(attrs)
569 self._doenter(attrs)
534
570
535 def quit(self, returnobj=None):
571 def quit(self, returnobj=None):
536 """
572 """
537 quit
573 quit
538 """
574 """
539 frame = self.GetParent().GetParent().GetParent()
575 frame = self.GetParent().GetParent().GetParent()
540 if frame.helpdialog:
576 if frame.helpdialog:
541 frame.helpdialog.Destroy()
577 frame.helpdialog.Destroy()
542 frame.parent.returnobj = returnobj
578 frame.parent.returnobj = returnobj
543 frame.Close()
579 frame.Close()
544 frame.Destroy()
580 frame.Destroy()
545
581
546 def cell_doubleclicked(self, event):
582 def cell_doubleclicked(self, event):
547 self.enterattr(event.GetRow(), event.GetCol())
583 self.enterattr(event.GetRow(), event.GetCol())
584 event.Skip()
548
585
586 def cell_leftclicked(self, event):
587 row = event.GetRow()
588 item = self.table.items[row]
589 self.set_footer(item)
590 event.Skip()
591
549 def pick(self, row):
592 def pick(self, row):
550 """
593 """
551 pick a single row and return to the IPython prompt
594 pick a single row and return to the IPython prompt
552 """
595 """
553 try:
596 try:
554 value = self.table.items[row]
597 value = self.table.items[row]
555 except Exception, exc:
598 except Exception, exc:
556 self.error_output(str(exc))
599 self.error_output(str(exc))
557 else:
600 else:
558 self.quit(value)
601 self.quit(value)
559
602
560 def pickrows(self, rows):
603 def pickrows(self, rows):
561 """
604 """
562 pick multiple rows and return to the IPython prompt
605 pick multiple rows and return to the IPython prompt
563 """
606 """
564 try:
607 try:
565 value = [self.table.items[row] for row in rows]
608 value = [self.table.items[row] for row in rows]
566 except Exception, exc:
609 except Exception, exc:
567 self.error_output(str(exc))
610 self.error_output(str(exc))
568 else:
611 else:
569 self.quit(value)
612 self.quit(value)
570
613
571 def pickrowsattr(self, rows, col):
614 def pickrowsattr(self, rows, col):
572 """"
615 """"
573 pick one column from multiple rows
616 pick one column from multiple rows
574 """
617 """
575 values = []
618 values = []
576 try:
619 try:
577 attr = self.table._displayattrs[col]
620 attr = self.table._displayattrs[col]
578 for row in rows:
621 for row in rows:
579 try:
622 try:
580 values.append(attr.value(self.table.items[row]))
623 values.append(attr.value(self.table.items[row]))
581 except (SystemExit, KeyboardInterrupt):
624 except (SystemExit, KeyboardInterrupt):
582 raise
625 raise
583 except Exception:
626 except Exception:
584 raise #pass
627 raise #pass
585 except Exception, exc:
628 except Exception, exc:
586 self.error_output(str(exc))
629 self.error_output(str(exc))
587 else:
630 else:
588 self.quit(values)
631 self.quit(values)
589
632
590 def pickattr(self, row, col):
633 def pickattr(self, row, col):
591 try:
634 try:
592 attr = self.table._displayattrs[col]
635 attr = self.table._displayattrs[col]
593 value = attr.value(self.table.items[row])
636 value = attr.value(self.table.items[row])
594 except Exception, exc:
637 except Exception, exc:
595 self.error_output(str(exc))
638 self.error_output(str(exc))
596 else:
639 else:
597 self.quit(value)
640 self.quit(value)
598
641
599
642
600 class IGridPanel(wx.Panel):
643 class IGridPanel(wx.Panel):
601 # Each IGridPanel contains an IGridGrid
644 # Each IGridPanel contains an IGridGrid
602 def __init__(self, parent, input, *attrs):
645 def __init__(self, parent, input, *attrs):
603 wx.Panel.__init__(self, parent, -1)
646 wx.Panel.__init__(self, parent, -1)
604 self.grid = IGridGrid(self, input, *attrs)
647 self.grid = IGridGrid(self, input, *attrs)
605 sizer = wx.BoxSizer(wx.VERTICAL)
648 sizer = wx.BoxSizer(wx.VERTICAL)
606 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)
607 self.SetSizer(sizer)
650 self.SetSizer(sizer)
608 sizer.Fit(self)
651 sizer.Fit(self)
609 sizer.SetSizeHints(self)
652 sizer.SetSizeHints(self)
610
653
611
654
612 class IGridHTMLHelp(wx.Frame):
655 class IGridHTMLHelp(wx.Frame):
613 def __init__(self, parent, title, filename, size):
656 def __init__(self, parent, title, filename, size):
614 wx.Frame.__init__(self, parent, -1, title, size=size)
657 wx.Frame.__init__(self, parent, -1, title, size=size)
615 html = wx.html.HtmlWindow(self)
658 html = wx.html.HtmlWindow(self)
616 if "gtk2" in wx.PlatformInfo:
659 if "gtk2" in wx.PlatformInfo:
617 html.SetStandardFonts()
660 html.SetStandardFonts()
618 html.LoadFile(filename)
661 html.LoadFile(filename)
619
662
620
663
621 class IGridFrame(wx.Frame):
664 class IGridFrame(wx.Frame):
622 maxtitlelen = 30
665 maxtitlelen = 30
623
666
624 def __init__(self, parent, input):
667 def __init__(self, parent, input):
625 wx.Frame.__init__(self, None, title="IGrid", size=(640, 480))
668 title = " ".join([str(x[1]) for x in ipipe.xformat(input, "header", 20)[2]])
669 wx.Frame.__init__(self, None, title=title, size=(640, 480))
626 self.menubar = wx.MenuBar()
670 self.menubar = wx.MenuBar()
627 self.menucounter = 100
671 self.menucounter = 100
628 self.m_help = wx.Menu()
672 self.m_help = wx.Menu()
629 self.m_search = wx.Menu()
673 self.m_search = wx.Menu()
630 self.m_sort = wx.Menu()
674 self.m_sort = wx.Menu()
631 self.notebook = wx.Notebook(self, -1, style=0)
675 self.notebook = wx.Notebook(self, -1, style=0)
632 self.statusbar = self.CreateStatusBar(1, wx.ST_SIZEGRIP)
676 self.statusbar = self.CreateStatusBar(1, wx.ST_SIZEGRIP)
633 self.parent = parent
677 self.parent = parent
634 self._add_notebook(input)
678 self._add_notebook(input)
635 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
679 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
636 self.makemenu(self.m_sort, "&Sort (asc)", "Sort ascending", self.sortasc)
680 self.makemenu(self.m_sort, "&Sort (asc)", "Sort ascending", self.sortasc)
637 self.makemenu(self.m_sort, "Sort (&desc)", "Sort descending", self.sortdesc)
681 self.makemenu(self.m_sort, "Sort (&desc)", "Sort descending", self.sortdesc)
638 self.makemenu(self.m_help, "&Help", "Help", self.display_help)
682 self.makemenu(self.m_help, "&Help", "Help", self.display_help)
639 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)
640 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)
641 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)
642 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)
643 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)
644 self.menubar.Append(self.m_search, "&Find")
688 self.menubar.Append(self.m_search, "&Find")
645 self.menubar.Append(self.m_sort, "&Sort")
689 self.menubar.Append(self.m_sort, "&Sort")
646 self.menubar.Append(self.m_help, "&Help")
690 self.menubar.Append(self.m_help, "&Help")
647 self.SetMenuBar(self.menubar)
691 self.SetMenuBar(self.menubar)
648 self.searchtext = ""
692 self.searchtext = ""
649 self.helpdialog = None
693 self.helpdialog = None
650
694
651 def sortasc(self, event):
695 def sortasc(self, event):
652 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
696 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
653 grid.sortattrasc()
697 grid.sortattrasc()
654
698
655 def sortdesc(self, event):
699 def sortdesc(self, event):
656 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
700 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
657 grid.sortattrdesc()
701 grid.sortattrdesc()
658
702
659 def find_previous(self, event):
703 def find_previous(self, event):
660 """
704 """
661 find previous occurrences
705 find previous occurrences
662 """
706 """
663 if self.searchtext:
707 if self.searchtext:
664 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
708 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
665 row = grid.GetGridCursorRow()
709 row = grid.GetGridCursorRow()
666 col = grid.GetGridCursorCol()
710 col = grid.GetGridCursorCol()
667 if col-1 >= 0:
711 if col-1 >= 0:
668 grid.search(self.searchtext, row, col-1, False)
712 grid.search(self.searchtext, row, col-1, False)
669 else:
713 else:
670 grid.search(self.searchtext, row-1, grid.table.GetNumberCols()-1, False)
714 grid.search(self.searchtext, row-1, grid.table.GetNumberCols()-1, False)
671 else:
715 else:
672 self.enter_searchtext(event)
716 self.enter_searchtext(event)
673
717
674 def find_next(self, event):
718 def find_next(self, event):
675 """
719 """
676 find the next occurrence
720 find the next occurrence
677 """
721 """
678 if self.searchtext:
722 if self.searchtext:
679 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
723 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
680 row = grid.GetGridCursorRow()
724 row = grid.GetGridCursorRow()
681 col = grid.GetGridCursorCol()
725 col = grid.GetGridCursorCol()
682 if col+1 < grid.table.GetNumberCols():
726 if col+1 < grid.table.GetNumberCols():
683 grid.search(self.searchtext, row, col+1)
727 grid.search(self.searchtext, row, col+1)
684 else:
728 else:
685 grid.search(self.searchtext, row+1, 0)
729 grid.search(self.searchtext, row+1, 0)
686 else:
730 else:
687 self.enter_searchtext(event)
731 self.enter_searchtext(event)
688
732
689 def display_help(self, event):
733 def display_help(self, event):
690 """
734 """
691 Display a help dialog
735 Display a help dialog
692 """
736 """
693 if self.helpdialog:
737 if self.helpdialog:
694 self.helpdialog.Destroy()
738 self.helpdialog.Destroy()
695 filename = os.path.join(os.path.dirname(__file__), "igrid_help.html")
739 filename = os.path.join(os.path.dirname(__file__), "igrid_help.html")
696 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))
697 self.helpdialog.Show()
741 self.helpdialog.Show()
698
742
699 def display_help_in_browser(self, event):
743 def display_help_in_browser(self, event):
700 """
744 """
701 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
702 CSS this looks better)
746 CSS this looks better)
703 """
747 """
704 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")))
705 if not filename.startswith("file"):
749 if not filename.startswith("file"):
706 filename = "file:" + filename
750 filename = "file:" + filename
707 webbrowser.open(filename, new=1, autoraise=True)
751 webbrowser.open(filename, new=1, autoraise=True)
708
752
709 def enter_searchexpression(self, event):
753 def enter_searchexpression(self, event):
710 pass
754 pass
711
755
712 def makemenu(self, menu, label, help, cmd):
756 def makemenu(self, menu, label, help, cmd):
713 menu.Append(self.menucounter, label, help)
757 menu.Append(self.menucounter, label, help)
714 self.Bind(wx.EVT_MENU, cmd, id=self.menucounter)
758 self.Bind(wx.EVT_MENU, cmd, id=self.menucounter)
715 self.menucounter += 1
759 self.menucounter += 1
716
760
717 def _add_notebook(self, input, *attrs):
761 def _add_notebook(self, input, *attrs):
718 # Adds another notebook which has the starting object ``input``
762 # Adds another notebook which has the starting object ``input``
719 panel = IGridPanel(self.notebook, input, *attrs)
763 panel = IGridPanel(self.notebook, input, *attrs)
720 text = str(ipipe.xformat(input, "header", self.maxtitlelen)[2])
764 text = str(ipipe.xformat(input, "header", self.maxtitlelen)[2])
721 if len(text) >= self.maxtitlelen:
765 if len(text) >= self.maxtitlelen:
722 text = text[:self.maxtitlelen].rstrip(".") + "..."
766 text = text[:self.maxtitlelen].rstrip(".") + "..."
723 self.notebook.AddPage(panel, text, True)
767 self.notebook.AddPage(panel, text, True)
724 panel.grid.SetFocus()
768 panel.grid.SetFocus()
725 self.Layout()
769 self.Layout()
726
770
727 def OnCloseWindow(self, event):
771 def OnCloseWindow(self, event):
728 self.Destroy()
772 self.Destroy()
729
773
730 def enter_searchtext(self, event):
774 def enter_searchtext(self, event):
731 # Displays a dialog asking for the searchtext
775 # Displays a dialog asking for the searchtext
732 dlg = wx.TextEntryDialog(self, "Find:", "Find in list")
776 dlg = wx.TextEntryDialog(self, "Find:", "Find in list")
733 if dlg.ShowModal() == wx.ID_OK:
777 if dlg.ShowModal() == wx.ID_OK:
734 self.searchtext = dlg.GetValue()
778 self.searchtext = dlg.GetValue()
735 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)
736 dlg.Destroy()
780 dlg.Destroy()
737
781
738
782
739 class igrid(ipipe.Display):
783 class igrid(ipipe.Display):
740 """
784 """
741 This is a wx-based display object that can be used instead of ``ibrowse``
785 This is a wx-based display object that can be used instead of ``ibrowse``
742 (which is curses-based) or ``idump`` (which simply does a print).
786 (which is curses-based) or ``idump`` (which simply does a print).
743 """
787 """
744 def display(self):
788 def display(self):
745 self.returnobj = None
789 self.returnobj = None
746 app = wx.App()
790 app = wx.App()
747 self.frame = IGridFrame(self, self.input)
791 self.frame = IGridFrame(self, self.input)
748 self.frame.Show()
792 self.frame.Show()
749 app.SetTopWindow(self.frame)
793 app.SetTopWindow(self.frame)
750 self.frame.Raise()
794 self.frame.Raise()
751 app.MainLoop()
795 app.MainLoop()
752 return self.returnobj
796 return self.returnobj
@@ -1,6318 +1,6321 b''
1 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1 2007-03-16 Walter Doerwald <walter@livinglogic.de>
2
2
3 * setup.py: Add the igrid help files to the list of data files
3 * setup.py: Add the igrid help files to the list of data files
4 to be installed alongside igrid.
4 to be installed alongside igrid.
5 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
6 Show the input object of the igrid browser as the window tile.
7 Show the object the cursor is on in the statusbar.
5
8
6 2007-03-15 Ville Vainio <vivainio@gmail.com>
9 2007-03-15 Ville Vainio <vivainio@gmail.com>
7
10
8 * Extensions/ipy_stock_completers.py: Fixed exception
11 * Extensions/ipy_stock_completers.py: Fixed exception
9 on mismatching quotes in %run completer. Patch by
12 on mismatching quotes in %run completer. Patch by
10 JοΏ½rgen Stenarson. Closes #127.
13 JοΏ½rgen Stenarson. Closes #127.
11
14
12 2007-03-14 Ville Vainio <vivainio@gmail.com>
15 2007-03-14 Ville Vainio <vivainio@gmail.com>
13
16
14 * Extensions/ext_rehashdir.py: Do not do auto_alias
17 * Extensions/ext_rehashdir.py: Do not do auto_alias
15 in %rehashdir, it clobbers %store'd aliases.
18 in %rehashdir, it clobbers %store'd aliases.
16
19
17 * UserConfig/ipy_profile_sh.py: envpersist.py extension
20 * UserConfig/ipy_profile_sh.py: envpersist.py extension
18 (beefed up %env) imported for sh profile.
21 (beefed up %env) imported for sh profile.
19
22
20 2007-03-10 Walter Doerwald <walter@livinglogic.de>
23 2007-03-10 Walter Doerwald <walter@livinglogic.de>
21
24
22 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
25 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
23 as the default browser.
26 as the default browser.
24 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
27 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
25 As igrid displays all attributes it ever encounters, fetch() (which has
28 As igrid displays all attributes it ever encounters, fetch() (which has
26 been renamed to _fetch()) doesn't have to recalculate the display attributes
29 been renamed to _fetch()) doesn't have to recalculate the display attributes
27 every time a new item is fetched. This should speed up scrolling.
30 every time a new item is fetched. This should speed up scrolling.
28
31
29 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
32 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
30
33
31 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
34 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
32 Schmolck's recently reported tab-completion bug (my previous one
35 Schmolck's recently reported tab-completion bug (my previous one
33 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
36 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
34
37
35 2007-03-09 Walter Doerwald <walter@livinglogic.de>
38 2007-03-09 Walter Doerwald <walter@livinglogic.de>
36
39
37 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
40 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
38 Close help window if exiting igrid.
41 Close help window if exiting igrid.
39
42
40 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
43 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
41
44
42 * IPython/Extensions/ipy_defaults.py: Check if readline is available
45 * IPython/Extensions/ipy_defaults.py: Check if readline is available
43 before calling functions from readline.
46 before calling functions from readline.
44
47
45 2007-03-02 Walter Doerwald <walter@livinglogic.de>
48 2007-03-02 Walter Doerwald <walter@livinglogic.de>
46
49
47 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
50 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
48 igrid is a wxPython-based display object for ipipe. If your system has
51 igrid is a wxPython-based display object for ipipe. If your system has
49 wx installed igrid will be the default display. Without wx ipipe falls
52 wx installed igrid will be the default display. Without wx ipipe falls
50 back to ibrowse (which needs curses). If no curses is installed ipipe
53 back to ibrowse (which needs curses). If no curses is installed ipipe
51 falls back to idump.
54 falls back to idump.
52
55
53 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
56 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
54
57
55 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
58 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
56 my changes from yesterday, they introduced bugs. Will reactivate
59 my changes from yesterday, they introduced bugs. Will reactivate
57 once I get a correct solution, which will be much easier thanks to
60 once I get a correct solution, which will be much easier thanks to
58 Dan Milstein's new prefilter test suite.
61 Dan Milstein's new prefilter test suite.
59
62
60 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
63 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
61
64
62 * IPython/iplib.py (split_user_input): fix input splitting so we
65 * IPython/iplib.py (split_user_input): fix input splitting so we
63 don't attempt attribute accesses on things that can't possibly be
66 don't attempt attribute accesses on things that can't possibly be
64 valid Python attributes. After a bug report by Alex Schmolck.
67 valid Python attributes. After a bug report by Alex Schmolck.
65 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
68 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
66 %magic with explicit % prefix.
69 %magic with explicit % prefix.
67
70
68 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
71 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
69
72
70 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
73 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
71 avoid a DeprecationWarning from GTK.
74 avoid a DeprecationWarning from GTK.
72
75
73 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
76 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
74
77
75 * IPython/genutils.py (clock): I modified clock() to return total
78 * IPython/genutils.py (clock): I modified clock() to return total
76 time, user+system. This is a more commonly needed metric. I also
79 time, user+system. This is a more commonly needed metric. I also
77 introduced the new clocku/clocks to get only user/system time if
80 introduced the new clocku/clocks to get only user/system time if
78 one wants those instead.
81 one wants those instead.
79
82
80 ***WARNING: API CHANGE*** clock() used to return only user time,
83 ***WARNING: API CHANGE*** clock() used to return only user time,
81 so if you want exactly the same results as before, use clocku
84 so if you want exactly the same results as before, use clocku
82 instead.
85 instead.
83
86
84 2007-02-22 Ville Vainio <vivainio@gmail.com>
87 2007-02-22 Ville Vainio <vivainio@gmail.com>
85
88
86 * IPython/Extensions/ipy_p4.py: Extension for improved
89 * IPython/Extensions/ipy_p4.py: Extension for improved
87 p4 (perforce version control system) experience.
90 p4 (perforce version control system) experience.
88 Adds %p4 magic with p4 command completion and
91 Adds %p4 magic with p4 command completion and
89 automatic -G argument (marshall output as python dict)
92 automatic -G argument (marshall output as python dict)
90
93
91 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
94 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
92
95
93 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
96 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
94 stop marks.
97 stop marks.
95 (ClearingMixin): a simple mixin to easily make a Demo class clear
98 (ClearingMixin): a simple mixin to easily make a Demo class clear
96 the screen in between blocks and have empty marquees. The
99 the screen in between blocks and have empty marquees. The
97 ClearDemo and ClearIPDemo classes that use it are included.
100 ClearDemo and ClearIPDemo classes that use it are included.
98
101
99 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
102 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
100
103
101 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
104 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
102 protect against exceptions at Python shutdown time. Patch
105 protect against exceptions at Python shutdown time. Patch
103 sumbmitted to upstream.
106 sumbmitted to upstream.
104
107
105 2007-02-14 Walter Doerwald <walter@livinglogic.de>
108 2007-02-14 Walter Doerwald <walter@livinglogic.de>
106
109
107 * IPython/Extensions/ibrowse.py: If entering the first object level
110 * IPython/Extensions/ibrowse.py: If entering the first object level
108 (i.e. the object for which the browser has been started) fails,
111 (i.e. the object for which the browser has been started) fails,
109 now the error is raised directly (aborting the browser) instead of
112 now the error is raised directly (aborting the browser) instead of
110 running into an empty levels list later.
113 running into an empty levels list later.
111
114
112 2007-02-03 Walter Doerwald <walter@livinglogic.de>
115 2007-02-03 Walter Doerwald <walter@livinglogic.de>
113
116
114 * IPython/Extensions/ipipe.py: Add an xrepr implementation
117 * IPython/Extensions/ipipe.py: Add an xrepr implementation
115 for the noitem object.
118 for the noitem object.
116
119
117 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
120 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
118
121
119 * IPython/completer.py (Completer.attr_matches): Fix small
122 * IPython/completer.py (Completer.attr_matches): Fix small
120 tab-completion bug with Enthought Traits objects with units.
123 tab-completion bug with Enthought Traits objects with units.
121 Thanks to a bug report by Tom Denniston
124 Thanks to a bug report by Tom Denniston
122 <tom.denniston-AT-alum.dartmouth.org>.
125 <tom.denniston-AT-alum.dartmouth.org>.
123
126
124 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
127 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
125
128
126 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
129 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
127 bug where only .ipy or .py would be completed. Once the first
130 bug where only .ipy or .py would be completed. Once the first
128 argument to %run has been given, all completions are valid because
131 argument to %run has been given, all completions are valid because
129 they are the arguments to the script, which may well be non-python
132 they are the arguments to the script, which may well be non-python
130 filenames.
133 filenames.
131
134
132 * IPython/irunner.py (InteractiveRunner.run_source): major updates
135 * IPython/irunner.py (InteractiveRunner.run_source): major updates
133 to irunner to allow it to correctly support real doctesting of
136 to irunner to allow it to correctly support real doctesting of
134 out-of-process ipython code.
137 out-of-process ipython code.
135
138
136 * IPython/Magic.py (magic_cd): Make the setting of the terminal
139 * IPython/Magic.py (magic_cd): Make the setting of the terminal
137 title an option (-noterm_title) because it completely breaks
140 title an option (-noterm_title) because it completely breaks
138 doctesting.
141 doctesting.
139
142
140 * IPython/demo.py: fix IPythonDemo class that was not actually working.
143 * IPython/demo.py: fix IPythonDemo class that was not actually working.
141
144
142 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
145 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
143
146
144 * IPython/irunner.py (main): fix small bug where extensions were
147 * IPython/irunner.py (main): fix small bug where extensions were
145 not being correctly recognized.
148 not being correctly recognized.
146
149
147 2007-01-23 Walter Doerwald <walter@livinglogic.de>
150 2007-01-23 Walter Doerwald <walter@livinglogic.de>
148
151
149 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
152 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
150 a string containing a single line yields the string itself as the
153 a string containing a single line yields the string itself as the
151 only item.
154 only item.
152
155
153 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
156 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
154 object if it's the same as the one on the last level (This avoids
157 object if it's the same as the one on the last level (This avoids
155 infinite recursion for one line strings).
158 infinite recursion for one line strings).
156
159
157 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
160 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
158
161
159 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
162 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
160 all output streams before printing tracebacks. This ensures that
163 all output streams before printing tracebacks. This ensures that
161 user output doesn't end up interleaved with traceback output.
164 user output doesn't end up interleaved with traceback output.
162
165
163 2007-01-10 Ville Vainio <vivainio@gmail.com>
166 2007-01-10 Ville Vainio <vivainio@gmail.com>
164
167
165 * Extensions/envpersist.py: Turbocharged %env that remembers
168 * Extensions/envpersist.py: Turbocharged %env that remembers
166 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
169 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
167 "%env VISUAL=jed".
170 "%env VISUAL=jed".
168
171
169 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
172 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
170
173
171 * IPython/iplib.py (showtraceback): ensure that we correctly call
174 * IPython/iplib.py (showtraceback): ensure that we correctly call
172 custom handlers in all cases (some with pdb were slipping through,
175 custom handlers in all cases (some with pdb were slipping through,
173 but I'm not exactly sure why).
176 but I'm not exactly sure why).
174
177
175 * IPython/Debugger.py (Tracer.__init__): added new class to
178 * IPython/Debugger.py (Tracer.__init__): added new class to
176 support set_trace-like usage of IPython's enhanced debugger.
179 support set_trace-like usage of IPython's enhanced debugger.
177
180
178 2006-12-24 Ville Vainio <vivainio@gmail.com>
181 2006-12-24 Ville Vainio <vivainio@gmail.com>
179
182
180 * ipmaker.py: more informative message when ipy_user_conf
183 * ipmaker.py: more informative message when ipy_user_conf
181 import fails (suggest running %upgrade).
184 import fails (suggest running %upgrade).
182
185
183 * tools/run_ipy_in_profiler.py: Utility to see where
186 * tools/run_ipy_in_profiler.py: Utility to see where
184 the time during IPython startup is spent.
187 the time during IPython startup is spent.
185
188
186 2006-12-20 Ville Vainio <vivainio@gmail.com>
189 2006-12-20 Ville Vainio <vivainio@gmail.com>
187
190
188 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
191 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
189
192
190 * ipapi.py: Add new ipapi method, expand_alias.
193 * ipapi.py: Add new ipapi method, expand_alias.
191
194
192 * Release.py: Bump up version to 0.7.4.svn
195 * Release.py: Bump up version to 0.7.4.svn
193
196
194 2006-12-17 Ville Vainio <vivainio@gmail.com>
197 2006-12-17 Ville Vainio <vivainio@gmail.com>
195
198
196 * Extensions/jobctrl.py: Fixed &cmd arg arg...
199 * Extensions/jobctrl.py: Fixed &cmd arg arg...
197 to work properly on posix too
200 to work properly on posix too
198
201
199 * Release.py: Update revnum (version is still just 0.7.3).
202 * Release.py: Update revnum (version is still just 0.7.3).
200
203
201 2006-12-15 Ville Vainio <vivainio@gmail.com>
204 2006-12-15 Ville Vainio <vivainio@gmail.com>
202
205
203 * scripts/ipython_win_post_install: create ipython.py in
206 * scripts/ipython_win_post_install: create ipython.py in
204 prefix + "/scripts".
207 prefix + "/scripts".
205
208
206 * Release.py: Update version to 0.7.3.
209 * Release.py: Update version to 0.7.3.
207
210
208 2006-12-14 Ville Vainio <vivainio@gmail.com>
211 2006-12-14 Ville Vainio <vivainio@gmail.com>
209
212
210 * scripts/ipython_win_post_install: Overwrite old shortcuts
213 * scripts/ipython_win_post_install: Overwrite old shortcuts
211 if they already exist
214 if they already exist
212
215
213 * Release.py: release 0.7.3rc2
216 * Release.py: release 0.7.3rc2
214
217
215 2006-12-13 Ville Vainio <vivainio@gmail.com>
218 2006-12-13 Ville Vainio <vivainio@gmail.com>
216
219
217 * Branch and update Release.py for 0.7.3rc1
220 * Branch and update Release.py for 0.7.3rc1
218
221
219 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
222 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
220
223
221 * IPython/Shell.py (IPShellWX): update for current WX naming
224 * IPython/Shell.py (IPShellWX): update for current WX naming
222 conventions, to avoid a deprecation warning with current WX
225 conventions, to avoid a deprecation warning with current WX
223 versions. Thanks to a report by Danny Shevitz.
226 versions. Thanks to a report by Danny Shevitz.
224
227
225 2006-12-12 Ville Vainio <vivainio@gmail.com>
228 2006-12-12 Ville Vainio <vivainio@gmail.com>
226
229
227 * ipmaker.py: apply david cournapeau's patch to make
230 * ipmaker.py: apply david cournapeau's patch to make
228 import_some work properly even when ipythonrc does
231 import_some work properly even when ipythonrc does
229 import_some on empty list (it was an old bug!).
232 import_some on empty list (it was an old bug!).
230
233
231 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
234 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
232 Add deprecation note to ipythonrc and a url to wiki
235 Add deprecation note to ipythonrc and a url to wiki
233 in ipy_user_conf.py
236 in ipy_user_conf.py
234
237
235
238
236 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
239 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
237 as if it was typed on IPython command prompt, i.e.
240 as if it was typed on IPython command prompt, i.e.
238 as IPython script.
241 as IPython script.
239
242
240 * example-magic.py, magic_grepl.py: remove outdated examples
243 * example-magic.py, magic_grepl.py: remove outdated examples
241
244
242 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
245 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
243
246
244 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
247 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
245 is called before any exception has occurred.
248 is called before any exception has occurred.
246
249
247 2006-12-08 Ville Vainio <vivainio@gmail.com>
250 2006-12-08 Ville Vainio <vivainio@gmail.com>
248
251
249 * Extensions/ipy_stock_completers.py: fix cd completer
252 * Extensions/ipy_stock_completers.py: fix cd completer
250 to translate /'s to \'s again.
253 to translate /'s to \'s again.
251
254
252 * completer.py: prevent traceback on file completions w/
255 * completer.py: prevent traceback on file completions w/
253 backslash.
256 backslash.
254
257
255 * Release.py: Update release number to 0.7.3b3 for release
258 * Release.py: Update release number to 0.7.3b3 for release
256
259
257 2006-12-07 Ville Vainio <vivainio@gmail.com>
260 2006-12-07 Ville Vainio <vivainio@gmail.com>
258
261
259 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
262 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
260 while executing external code. Provides more shell-like behaviour
263 while executing external code. Provides more shell-like behaviour
261 and overall better response to ctrl + C / ctrl + break.
264 and overall better response to ctrl + C / ctrl + break.
262
265
263 * tools/make_tarball.py: new script to create tarball straight from svn
266 * tools/make_tarball.py: new script to create tarball straight from svn
264 (setup.py sdist doesn't work on win32).
267 (setup.py sdist doesn't work on win32).
265
268
266 * Extensions/ipy_stock_completers.py: fix cd completer to give up
269 * Extensions/ipy_stock_completers.py: fix cd completer to give up
267 on dirnames with spaces and use the default completer instead.
270 on dirnames with spaces and use the default completer instead.
268
271
269 * Revision.py: Change version to 0.7.3b2 for release.
272 * Revision.py: Change version to 0.7.3b2 for release.
270
273
271 2006-12-05 Ville Vainio <vivainio@gmail.com>
274 2006-12-05 Ville Vainio <vivainio@gmail.com>
272
275
273 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
276 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
274 pydb patch 4 (rm debug printing, py 2.5 checking)
277 pydb patch 4 (rm debug printing, py 2.5 checking)
275
278
276 2006-11-30 Walter Doerwald <walter@livinglogic.de>
279 2006-11-30 Walter Doerwald <walter@livinglogic.de>
277 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
280 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
278 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
281 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
279 "refreshfind" (mapped to "R") does the same but tries to go back to the same
282 "refreshfind" (mapped to "R") does the same but tries to go back to the same
280 object the cursor was on before the refresh. The command "markrange" is
283 object the cursor was on before the refresh. The command "markrange" is
281 mapped to "%" now.
284 mapped to "%" now.
282 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
285 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
283
286
284 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
287 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
285
288
286 * IPython/Magic.py (magic_debug): new %debug magic to activate the
289 * IPython/Magic.py (magic_debug): new %debug magic to activate the
287 interactive debugger on the last traceback, without having to call
290 interactive debugger on the last traceback, without having to call
288 %pdb and rerun your code. Made minor changes in various modules,
291 %pdb and rerun your code. Made minor changes in various modules,
289 should automatically recognize pydb if available.
292 should automatically recognize pydb if available.
290
293
291 2006-11-28 Ville Vainio <vivainio@gmail.com>
294 2006-11-28 Ville Vainio <vivainio@gmail.com>
292
295
293 * completer.py: If the text start with !, show file completions
296 * completer.py: If the text start with !, show file completions
294 properly. This helps when trying to complete command name
297 properly. This helps when trying to complete command name
295 for shell escapes.
298 for shell escapes.
296
299
297 2006-11-27 Ville Vainio <vivainio@gmail.com>
300 2006-11-27 Ville Vainio <vivainio@gmail.com>
298
301
299 * ipy_stock_completers.py: bzr completer submitted by Stefan van
302 * ipy_stock_completers.py: bzr completer submitted by Stefan van
300 der Walt. Clean up svn and hg completers by using a common
303 der Walt. Clean up svn and hg completers by using a common
301 vcs_completer.
304 vcs_completer.
302
305
303 2006-11-26 Ville Vainio <vivainio@gmail.com>
306 2006-11-26 Ville Vainio <vivainio@gmail.com>
304
307
305 * Remove ipconfig and %config; you should use _ip.options structure
308 * Remove ipconfig and %config; you should use _ip.options structure
306 directly instead!
309 directly instead!
307
310
308 * genutils.py: add wrap_deprecated function for deprecating callables
311 * genutils.py: add wrap_deprecated function for deprecating callables
309
312
310 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
313 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
311 _ip.system instead. ipalias is redundant.
314 _ip.system instead. ipalias is redundant.
312
315
313 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
316 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
314 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
317 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
315 explicit.
318 explicit.
316
319
317 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
320 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
318 completer. Try it by entering 'hg ' and pressing tab.
321 completer. Try it by entering 'hg ' and pressing tab.
319
322
320 * macro.py: Give Macro a useful __repr__ method
323 * macro.py: Give Macro a useful __repr__ method
321
324
322 * Magic.py: %whos abbreviates the typename of Macro for brevity.
325 * Magic.py: %whos abbreviates the typename of Macro for brevity.
323
326
324 2006-11-24 Walter Doerwald <walter@livinglogic.de>
327 2006-11-24 Walter Doerwald <walter@livinglogic.de>
325 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
328 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
326 we don't get a duplicate ipipe module, where registration of the xrepr
329 we don't get a duplicate ipipe module, where registration of the xrepr
327 implementation for Text is useless.
330 implementation for Text is useless.
328
331
329 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
332 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
330
333
331 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
334 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
332
335
333 2006-11-24 Ville Vainio <vivainio@gmail.com>
336 2006-11-24 Ville Vainio <vivainio@gmail.com>
334
337
335 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
338 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
336 try to use "cProfile" instead of the slower pure python
339 try to use "cProfile" instead of the slower pure python
337 "profile"
340 "profile"
338
341
339 2006-11-23 Ville Vainio <vivainio@gmail.com>
342 2006-11-23 Ville Vainio <vivainio@gmail.com>
340
343
341 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
344 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
342 Qt+IPython+Designer link in documentation.
345 Qt+IPython+Designer link in documentation.
343
346
344 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
347 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
345 correct Pdb object to %pydb.
348 correct Pdb object to %pydb.
346
349
347
350
348 2006-11-22 Walter Doerwald <walter@livinglogic.de>
351 2006-11-22 Walter Doerwald <walter@livinglogic.de>
349 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
352 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
350 generic xrepr(), otherwise the list implementation would kick in.
353 generic xrepr(), otherwise the list implementation would kick in.
351
354
352 2006-11-21 Ville Vainio <vivainio@gmail.com>
355 2006-11-21 Ville Vainio <vivainio@gmail.com>
353
356
354 * upgrade_dir.py: Now actually overwrites a nonmodified user file
357 * upgrade_dir.py: Now actually overwrites a nonmodified user file
355 with one from UserConfig.
358 with one from UserConfig.
356
359
357 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
360 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
358 it was missing which broke the sh profile.
361 it was missing which broke the sh profile.
359
362
360 * completer.py: file completer now uses explicit '/' instead
363 * completer.py: file completer now uses explicit '/' instead
361 of os.path.join, expansion of 'foo' was broken on win32
364 of os.path.join, expansion of 'foo' was broken on win32
362 if there was one directory with name 'foobar'.
365 if there was one directory with name 'foobar'.
363
366
364 * A bunch of patches from Kirill Smelkov:
367 * A bunch of patches from Kirill Smelkov:
365
368
366 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
369 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
367
370
368 * [patch 7/9] Implement %page -r (page in raw mode) -
371 * [patch 7/9] Implement %page -r (page in raw mode) -
369
372
370 * [patch 5/9] ScientificPython webpage has moved
373 * [patch 5/9] ScientificPython webpage has moved
371
374
372 * [patch 4/9] The manual mentions %ds, should be %dhist
375 * [patch 4/9] The manual mentions %ds, should be %dhist
373
376
374 * [patch 3/9] Kill old bits from %prun doc.
377 * [patch 3/9] Kill old bits from %prun doc.
375
378
376 * [patch 1/9] Fix typos here and there.
379 * [patch 1/9] Fix typos here and there.
377
380
378 2006-11-08 Ville Vainio <vivainio@gmail.com>
381 2006-11-08 Ville Vainio <vivainio@gmail.com>
379
382
380 * completer.py (attr_matches): catch all exceptions raised
383 * completer.py (attr_matches): catch all exceptions raised
381 by eval of expr with dots.
384 by eval of expr with dots.
382
385
383 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
386 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
384
387
385 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
388 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
386 input if it starts with whitespace. This allows you to paste
389 input if it starts with whitespace. This allows you to paste
387 indented input from any editor without manually having to type in
390 indented input from any editor without manually having to type in
388 the 'if 1:', which is convenient when working interactively.
391 the 'if 1:', which is convenient when working interactively.
389 Slightly modifed version of a patch by Bo Peng
392 Slightly modifed version of a patch by Bo Peng
390 <bpeng-AT-rice.edu>.
393 <bpeng-AT-rice.edu>.
391
394
392 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
395 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
393
396
394 * IPython/irunner.py (main): modified irunner so it automatically
397 * IPython/irunner.py (main): modified irunner so it automatically
395 recognizes the right runner to use based on the extension (.py for
398 recognizes the right runner to use based on the extension (.py for
396 python, .ipy for ipython and .sage for sage).
399 python, .ipy for ipython and .sage for sage).
397
400
398 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
401 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
399 visible in ipapi as ip.config(), to programatically control the
402 visible in ipapi as ip.config(), to programatically control the
400 internal rc object. There's an accompanying %config magic for
403 internal rc object. There's an accompanying %config magic for
401 interactive use, which has been enhanced to match the
404 interactive use, which has been enhanced to match the
402 funtionality in ipconfig.
405 funtionality in ipconfig.
403
406
404 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
407 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
405 so it's not just a toggle, it now takes an argument. Add support
408 so it's not just a toggle, it now takes an argument. Add support
406 for a customizable header when making system calls, as the new
409 for a customizable header when making system calls, as the new
407 system_header variable in the ipythonrc file.
410 system_header variable in the ipythonrc file.
408
411
409 2006-11-03 Walter Doerwald <walter@livinglogic.de>
412 2006-11-03 Walter Doerwald <walter@livinglogic.de>
410
413
411 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
414 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
412 generic functions (using Philip J. Eby's simplegeneric package).
415 generic functions (using Philip J. Eby's simplegeneric package).
413 This makes it possible to customize the display of third-party classes
416 This makes it possible to customize the display of third-party classes
414 without having to monkeypatch them. xiter() no longer supports a mode
417 without having to monkeypatch them. xiter() no longer supports a mode
415 argument and the XMode class has been removed. The same functionality can
418 argument and the XMode class has been removed. The same functionality can
416 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
419 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
417 One consequence of the switch to generic functions is that xrepr() and
420 One consequence of the switch to generic functions is that xrepr() and
418 xattrs() implementation must define the default value for the mode
421 xattrs() implementation must define the default value for the mode
419 argument themselves and xattrs() implementations must return real
422 argument themselves and xattrs() implementations must return real
420 descriptors.
423 descriptors.
421
424
422 * IPython/external: This new subpackage will contain all third-party
425 * IPython/external: This new subpackage will contain all third-party
423 packages that are bundled with IPython. (The first one is simplegeneric).
426 packages that are bundled with IPython. (The first one is simplegeneric).
424
427
425 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
428 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
426 directory which as been dropped in r1703.
429 directory which as been dropped in r1703.
427
430
428 * IPython/Extensions/ipipe.py (iless): Fixed.
431 * IPython/Extensions/ipipe.py (iless): Fixed.
429
432
430 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
433 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
431
434
432 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
435 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
433
436
434 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
437 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
435 handling in variable expansion so that shells and magics recognize
438 handling in variable expansion so that shells and magics recognize
436 function local scopes correctly. Bug reported by Brian.
439 function local scopes correctly. Bug reported by Brian.
437
440
438 * scripts/ipython: remove the very first entry in sys.path which
441 * scripts/ipython: remove the very first entry in sys.path which
439 Python auto-inserts for scripts, so that sys.path under IPython is
442 Python auto-inserts for scripts, so that sys.path under IPython is
440 as similar as possible to that under plain Python.
443 as similar as possible to that under plain Python.
441
444
442 * IPython/completer.py (IPCompleter.file_matches): Fix
445 * IPython/completer.py (IPCompleter.file_matches): Fix
443 tab-completion so that quotes are not closed unless the completion
446 tab-completion so that quotes are not closed unless the completion
444 is unambiguous. After a request by Stefan. Minor cleanups in
447 is unambiguous. After a request by Stefan. Minor cleanups in
445 ipy_stock_completers.
448 ipy_stock_completers.
446
449
447 2006-11-02 Ville Vainio <vivainio@gmail.com>
450 2006-11-02 Ville Vainio <vivainio@gmail.com>
448
451
449 * ipy_stock_completers.py: Add %run and %cd completers.
452 * ipy_stock_completers.py: Add %run and %cd completers.
450
453
451 * completer.py: Try running custom completer for both
454 * completer.py: Try running custom completer for both
452 "foo" and "%foo" if the command is just "foo". Ignore case
455 "foo" and "%foo" if the command is just "foo". Ignore case
453 when filtering possible completions.
456 when filtering possible completions.
454
457
455 * UserConfig/ipy_user_conf.py: install stock completers as default
458 * UserConfig/ipy_user_conf.py: install stock completers as default
456
459
457 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
460 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
458 simplified readline history save / restore through a wrapper
461 simplified readline history save / restore through a wrapper
459 function
462 function
460
463
461
464
462 2006-10-31 Ville Vainio <vivainio@gmail.com>
465 2006-10-31 Ville Vainio <vivainio@gmail.com>
463
466
464 * strdispatch.py, completer.py, ipy_stock_completers.py:
467 * strdispatch.py, completer.py, ipy_stock_completers.py:
465 Allow str_key ("command") in completer hooks. Implement
468 Allow str_key ("command") in completer hooks. Implement
466 trivial completer for 'import' (stdlib modules only). Rename
469 trivial completer for 'import' (stdlib modules only). Rename
467 ipy_linux_package_managers.py to ipy_stock_completers.py.
470 ipy_linux_package_managers.py to ipy_stock_completers.py.
468 SVN completer.
471 SVN completer.
469
472
470 * Extensions/ledit.py: %magic line editor for easily and
473 * Extensions/ledit.py: %magic line editor for easily and
471 incrementally manipulating lists of strings. The magic command
474 incrementally manipulating lists of strings. The magic command
472 name is %led.
475 name is %led.
473
476
474 2006-10-30 Ville Vainio <vivainio@gmail.com>
477 2006-10-30 Ville Vainio <vivainio@gmail.com>
475
478
476 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
479 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
477 Bernsteins's patches for pydb integration.
480 Bernsteins's patches for pydb integration.
478 http://bashdb.sourceforge.net/pydb/
481 http://bashdb.sourceforge.net/pydb/
479
482
480 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
483 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
481 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
484 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
482 custom completer hook to allow the users to implement their own
485 custom completer hook to allow the users to implement their own
483 completers. See ipy_linux_package_managers.py for example. The
486 completers. See ipy_linux_package_managers.py for example. The
484 hook name is 'complete_command'.
487 hook name is 'complete_command'.
485
488
486 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
489 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
487
490
488 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
491 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
489 Numeric leftovers.
492 Numeric leftovers.
490
493
491 * ipython.el (py-execute-region): apply Stefan's patch to fix
494 * ipython.el (py-execute-region): apply Stefan's patch to fix
492 garbled results if the python shell hasn't been previously started.
495 garbled results if the python shell hasn't been previously started.
493
496
494 * IPython/genutils.py (arg_split): moved to genutils, since it's a
497 * IPython/genutils.py (arg_split): moved to genutils, since it's a
495 pretty generic function and useful for other things.
498 pretty generic function and useful for other things.
496
499
497 * IPython/OInspect.py (getsource): Add customizable source
500 * IPython/OInspect.py (getsource): Add customizable source
498 extractor. After a request/patch form W. Stein (SAGE).
501 extractor. After a request/patch form W. Stein (SAGE).
499
502
500 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
503 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
501 window size to a more reasonable value from what pexpect does,
504 window size to a more reasonable value from what pexpect does,
502 since their choice causes wrapping bugs with long input lines.
505 since their choice causes wrapping bugs with long input lines.
503
506
504 2006-10-28 Ville Vainio <vivainio@gmail.com>
507 2006-10-28 Ville Vainio <vivainio@gmail.com>
505
508
506 * Magic.py (%run): Save and restore the readline history from
509 * Magic.py (%run): Save and restore the readline history from
507 file around %run commands to prevent side effects from
510 file around %run commands to prevent side effects from
508 %runned programs that might use readline (e.g. pydb).
511 %runned programs that might use readline (e.g. pydb).
509
512
510 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
513 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
511 invoking the pydb enhanced debugger.
514 invoking the pydb enhanced debugger.
512
515
513 2006-10-23 Walter Doerwald <walter@livinglogic.de>
516 2006-10-23 Walter Doerwald <walter@livinglogic.de>
514
517
515 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
518 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
516 call the base class method and propagate the return value to
519 call the base class method and propagate the return value to
517 ifile. This is now done by path itself.
520 ifile. This is now done by path itself.
518
521
519 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
522 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
520
523
521 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
524 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
522 api: set_crash_handler(), to expose the ability to change the
525 api: set_crash_handler(), to expose the ability to change the
523 internal crash handler.
526 internal crash handler.
524
527
525 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
528 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
526 the various parameters of the crash handler so that apps using
529 the various parameters of the crash handler so that apps using
527 IPython as their engine can customize crash handling. Ipmlemented
530 IPython as their engine can customize crash handling. Ipmlemented
528 at the request of SAGE.
531 at the request of SAGE.
529
532
530 2006-10-14 Ville Vainio <vivainio@gmail.com>
533 2006-10-14 Ville Vainio <vivainio@gmail.com>
531
534
532 * Magic.py, ipython.el: applied first "safe" part of Rocky
535 * Magic.py, ipython.el: applied first "safe" part of Rocky
533 Bernstein's patch set for pydb integration.
536 Bernstein's patch set for pydb integration.
534
537
535 * Magic.py (%unalias, %alias): %store'd aliases can now be
538 * Magic.py (%unalias, %alias): %store'd aliases can now be
536 removed with '%unalias'. %alias w/o args now shows most
539 removed with '%unalias'. %alias w/o args now shows most
537 interesting (stored / manually defined) aliases last
540 interesting (stored / manually defined) aliases last
538 where they catch the eye w/o scrolling.
541 where they catch the eye w/o scrolling.
539
542
540 * Magic.py (%rehashx), ext_rehashdir.py: files with
543 * Magic.py (%rehashx), ext_rehashdir.py: files with
541 'py' extension are always considered executable, even
544 'py' extension are always considered executable, even
542 when not in PATHEXT environment variable.
545 when not in PATHEXT environment variable.
543
546
544 2006-10-12 Ville Vainio <vivainio@gmail.com>
547 2006-10-12 Ville Vainio <vivainio@gmail.com>
545
548
546 * jobctrl.py: Add new "jobctrl" extension for spawning background
549 * jobctrl.py: Add new "jobctrl" extension for spawning background
547 processes with "&find /". 'import jobctrl' to try it out. Requires
550 processes with "&find /". 'import jobctrl' to try it out. Requires
548 'subprocess' module, standard in python 2.4+.
551 'subprocess' module, standard in python 2.4+.
549
552
550 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
553 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
551 so if foo -> bar and bar -> baz, then foo -> baz.
554 so if foo -> bar and bar -> baz, then foo -> baz.
552
555
553 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
556 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
554
557
555 * IPython/Magic.py (Magic.parse_options): add a new posix option
558 * IPython/Magic.py (Magic.parse_options): add a new posix option
556 to allow parsing of input args in magics that doesn't strip quotes
559 to allow parsing of input args in magics that doesn't strip quotes
557 (if posix=False). This also closes %timeit bug reported by
560 (if posix=False). This also closes %timeit bug reported by
558 Stefan.
561 Stefan.
559
562
560 2006-10-03 Ville Vainio <vivainio@gmail.com>
563 2006-10-03 Ville Vainio <vivainio@gmail.com>
561
564
562 * iplib.py (raw_input, interact): Return ValueError catching for
565 * iplib.py (raw_input, interact): Return ValueError catching for
563 raw_input. Fixes infinite loop for sys.stdin.close() or
566 raw_input. Fixes infinite loop for sys.stdin.close() or
564 sys.stdout.close().
567 sys.stdout.close().
565
568
566 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
569 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
567
570
568 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
571 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
569 to help in handling doctests. irunner is now pretty useful for
572 to help in handling doctests. irunner is now pretty useful for
570 running standalone scripts and simulate a full interactive session
573 running standalone scripts and simulate a full interactive session
571 in a format that can be then pasted as a doctest.
574 in a format that can be then pasted as a doctest.
572
575
573 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
576 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
574 on top of the default (useless) ones. This also fixes the nasty
577 on top of the default (useless) ones. This also fixes the nasty
575 way in which 2.5's Quitter() exits (reverted [1785]).
578 way in which 2.5's Quitter() exits (reverted [1785]).
576
579
577 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
580 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
578 2.5.
581 2.5.
579
582
580 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
583 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
581 color scheme is updated as well when color scheme is changed
584 color scheme is updated as well when color scheme is changed
582 interactively.
585 interactively.
583
586
584 2006-09-27 Ville Vainio <vivainio@gmail.com>
587 2006-09-27 Ville Vainio <vivainio@gmail.com>
585
588
586 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
589 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
587 infinite loop and just exit. It's a hack, but will do for a while.
590 infinite loop and just exit. It's a hack, but will do for a while.
588
591
589 2006-08-25 Walter Doerwald <walter@livinglogic.de>
592 2006-08-25 Walter Doerwald <walter@livinglogic.de>
590
593
591 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
594 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
592 the constructor, this makes it possible to get a list of only directories
595 the constructor, this makes it possible to get a list of only directories
593 or only files.
596 or only files.
594
597
595 2006-08-12 Ville Vainio <vivainio@gmail.com>
598 2006-08-12 Ville Vainio <vivainio@gmail.com>
596
599
597 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
600 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
598 they broke unittest
601 they broke unittest
599
602
600 2006-08-11 Ville Vainio <vivainio@gmail.com>
603 2006-08-11 Ville Vainio <vivainio@gmail.com>
601
604
602 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
605 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
603 by resolving issue properly, i.e. by inheriting FakeModule
606 by resolving issue properly, i.e. by inheriting FakeModule
604 from types.ModuleType. Pickling ipython interactive data
607 from types.ModuleType. Pickling ipython interactive data
605 should still work as usual (testing appreciated).
608 should still work as usual (testing appreciated).
606
609
607 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
610 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
608
611
609 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
612 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
610 running under python 2.3 with code from 2.4 to fix a bug with
613 running under python 2.3 with code from 2.4 to fix a bug with
611 help(). Reported by the Debian maintainers, Norbert Tretkowski
614 help(). Reported by the Debian maintainers, Norbert Tretkowski
612 <norbert-AT-tretkowski.de> and Alexandre Fayolle
615 <norbert-AT-tretkowski.de> and Alexandre Fayolle
613 <afayolle-AT-debian.org>.
616 <afayolle-AT-debian.org>.
614
617
615 2006-08-04 Walter Doerwald <walter@livinglogic.de>
618 2006-08-04 Walter Doerwald <walter@livinglogic.de>
616
619
617 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
620 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
618 (which was displaying "quit" twice).
621 (which was displaying "quit" twice).
619
622
620 2006-07-28 Walter Doerwald <walter@livinglogic.de>
623 2006-07-28 Walter Doerwald <walter@livinglogic.de>
621
624
622 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
625 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
623 the mode argument).
626 the mode argument).
624
627
625 2006-07-27 Walter Doerwald <walter@livinglogic.de>
628 2006-07-27 Walter Doerwald <walter@livinglogic.de>
626
629
627 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
630 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
628 not running under IPython.
631 not running under IPython.
629
632
630 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
633 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
631 and make it iterable (iterating over the attribute itself). Add two new
634 and make it iterable (iterating over the attribute itself). Add two new
632 magic strings for __xattrs__(): If the string starts with "-", the attribute
635 magic strings for __xattrs__(): If the string starts with "-", the attribute
633 will not be displayed in ibrowse's detail view (but it can still be
636 will not be displayed in ibrowse's detail view (but it can still be
634 iterated over). This makes it possible to add attributes that are large
637 iterated over). This makes it possible to add attributes that are large
635 lists or generator methods to the detail view. Replace magic attribute names
638 lists or generator methods to the detail view. Replace magic attribute names
636 and _attrname() and _getattr() with "descriptors": For each type of magic
639 and _attrname() and _getattr() with "descriptors": For each type of magic
637 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
640 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
638 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
641 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
639 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
642 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
640 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
643 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
641 are still supported.
644 are still supported.
642
645
643 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
646 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
644 fails in ibrowse.fetch(), the exception object is added as the last item
647 fails in ibrowse.fetch(), the exception object is added as the last item
645 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
648 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
646 a generator throws an exception midway through execution.
649 a generator throws an exception midway through execution.
647
650
648 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
651 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
649 encoding into methods.
652 encoding into methods.
650
653
651 2006-07-26 Ville Vainio <vivainio@gmail.com>
654 2006-07-26 Ville Vainio <vivainio@gmail.com>
652
655
653 * iplib.py: history now stores multiline input as single
656 * iplib.py: history now stores multiline input as single
654 history entries. Patch by Jorgen Cederlof.
657 history entries. Patch by Jorgen Cederlof.
655
658
656 2006-07-18 Walter Doerwald <walter@livinglogic.de>
659 2006-07-18 Walter Doerwald <walter@livinglogic.de>
657
660
658 * IPython/Extensions/ibrowse.py: Make cursor visible over
661 * IPython/Extensions/ibrowse.py: Make cursor visible over
659 non existing attributes.
662 non existing attributes.
660
663
661 2006-07-14 Walter Doerwald <walter@livinglogic.de>
664 2006-07-14 Walter Doerwald <walter@livinglogic.de>
662
665
663 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
666 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
664 error output of the running command doesn't mess up the screen.
667 error output of the running command doesn't mess up the screen.
665
668
666 2006-07-13 Walter Doerwald <walter@livinglogic.de>
669 2006-07-13 Walter Doerwald <walter@livinglogic.de>
667
670
668 * IPython/Extensions/ipipe.py (isort): Make isort usable without
671 * IPython/Extensions/ipipe.py (isort): Make isort usable without
669 argument. This sorts the items themselves.
672 argument. This sorts the items themselves.
670
673
671 2006-07-12 Walter Doerwald <walter@livinglogic.de>
674 2006-07-12 Walter Doerwald <walter@livinglogic.de>
672
675
673 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
676 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
674 Compile expression strings into code objects. This should speed
677 Compile expression strings into code objects. This should speed
675 up ifilter and friends somewhat.
678 up ifilter and friends somewhat.
676
679
677 2006-07-08 Ville Vainio <vivainio@gmail.com>
680 2006-07-08 Ville Vainio <vivainio@gmail.com>
678
681
679 * Magic.py: %cpaste now strips > from the beginning of lines
682 * Magic.py: %cpaste now strips > from the beginning of lines
680 to ease pasting quoted code from emails. Contributed by
683 to ease pasting quoted code from emails. Contributed by
681 Stefan van der Walt.
684 Stefan van der Walt.
682
685
683 2006-06-29 Ville Vainio <vivainio@gmail.com>
686 2006-06-29 Ville Vainio <vivainio@gmail.com>
684
687
685 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
688 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
686 mode, patch contributed by Darren Dale. NEEDS TESTING!
689 mode, patch contributed by Darren Dale. NEEDS TESTING!
687
690
688 2006-06-28 Walter Doerwald <walter@livinglogic.de>
691 2006-06-28 Walter Doerwald <walter@livinglogic.de>
689
692
690 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
693 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
691 a blue background. Fix fetching new display rows when the browser
694 a blue background. Fix fetching new display rows when the browser
692 scrolls more than a screenful (e.g. by using the goto command).
695 scrolls more than a screenful (e.g. by using the goto command).
693
696
694 2006-06-27 Ville Vainio <vivainio@gmail.com>
697 2006-06-27 Ville Vainio <vivainio@gmail.com>
695
698
696 * Magic.py (_inspect, _ofind) Apply David Huard's
699 * Magic.py (_inspect, _ofind) Apply David Huard's
697 patch for displaying the correct docstring for 'property'
700 patch for displaying the correct docstring for 'property'
698 attributes.
701 attributes.
699
702
700 2006-06-23 Walter Doerwald <walter@livinglogic.de>
703 2006-06-23 Walter Doerwald <walter@livinglogic.de>
701
704
702 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
705 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
703 commands into the methods implementing them.
706 commands into the methods implementing them.
704
707
705 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
708 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
706
709
707 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
710 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
708 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
711 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
709 autoindent support was authored by Jin Liu.
712 autoindent support was authored by Jin Liu.
710
713
711 2006-06-22 Walter Doerwald <walter@livinglogic.de>
714 2006-06-22 Walter Doerwald <walter@livinglogic.de>
712
715
713 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
716 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
714 for keymaps with a custom class that simplifies handling.
717 for keymaps with a custom class that simplifies handling.
715
718
716 2006-06-19 Walter Doerwald <walter@livinglogic.de>
719 2006-06-19 Walter Doerwald <walter@livinglogic.de>
717
720
718 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
721 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
719 resizing. This requires Python 2.5 to work.
722 resizing. This requires Python 2.5 to work.
720
723
721 2006-06-16 Walter Doerwald <walter@livinglogic.de>
724 2006-06-16 Walter Doerwald <walter@livinglogic.de>
722
725
723 * IPython/Extensions/ibrowse.py: Add two new commands to
726 * IPython/Extensions/ibrowse.py: Add two new commands to
724 ibrowse: "hideattr" (mapped to "h") hides the attribute under
727 ibrowse: "hideattr" (mapped to "h") hides the attribute under
725 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
728 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
726 attributes again. Remapped the help command to "?". Display
729 attributes again. Remapped the help command to "?". Display
727 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
730 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
728 as keys for the "home" and "end" commands. Add three new commands
731 as keys for the "home" and "end" commands. Add three new commands
729 to the input mode for "find" and friends: "delend" (CTRL-K)
732 to the input mode for "find" and friends: "delend" (CTRL-K)
730 deletes to the end of line. "incsearchup" searches upwards in the
733 deletes to the end of line. "incsearchup" searches upwards in the
731 command history for an input that starts with the text before the cursor.
734 command history for an input that starts with the text before the cursor.
732 "incsearchdown" does the same downwards. Removed a bogus mapping of
735 "incsearchdown" does the same downwards. Removed a bogus mapping of
733 the x key to "delete".
736 the x key to "delete".
734
737
735 2006-06-15 Ville Vainio <vivainio@gmail.com>
738 2006-06-15 Ville Vainio <vivainio@gmail.com>
736
739
737 * iplib.py, hooks.py: Added new generate_prompt hook that can be
740 * iplib.py, hooks.py: Added new generate_prompt hook that can be
738 used to create prompts dynamically, instead of the "old" way of
741 used to create prompts dynamically, instead of the "old" way of
739 assigning "magic" strings to prompt_in1 and prompt_in2. The old
742 assigning "magic" strings to prompt_in1 and prompt_in2. The old
740 way still works (it's invoked by the default hook), of course.
743 way still works (it's invoked by the default hook), of course.
741
744
742 * Prompts.py: added generate_output_prompt hook for altering output
745 * Prompts.py: added generate_output_prompt hook for altering output
743 prompt
746 prompt
744
747
745 * Release.py: Changed version string to 0.7.3.svn.
748 * Release.py: Changed version string to 0.7.3.svn.
746
749
747 2006-06-15 Walter Doerwald <walter@livinglogic.de>
750 2006-06-15 Walter Doerwald <walter@livinglogic.de>
748
751
749 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
752 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
750 the call to fetch() always tries to fetch enough data for at least one
753 the call to fetch() always tries to fetch enough data for at least one
751 full screen. This makes it possible to simply call moveto(0,0,True) in
754 full screen. This makes it possible to simply call moveto(0,0,True) in
752 the constructor. Fix typos and removed the obsolete goto attribute.
755 the constructor. Fix typos and removed the obsolete goto attribute.
753
756
754 2006-06-12 Ville Vainio <vivainio@gmail.com>
757 2006-06-12 Ville Vainio <vivainio@gmail.com>
755
758
756 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
759 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
757 allowing $variable interpolation within multiline statements,
760 allowing $variable interpolation within multiline statements,
758 though so far only with "sh" profile for a testing period.
761 though so far only with "sh" profile for a testing period.
759 The patch also enables splitting long commands with \ but it
762 The patch also enables splitting long commands with \ but it
760 doesn't work properly yet.
763 doesn't work properly yet.
761
764
762 2006-06-12 Walter Doerwald <walter@livinglogic.de>
765 2006-06-12 Walter Doerwald <walter@livinglogic.de>
763
766
764 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
767 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
765 input history and the position of the cursor in the input history for
768 input history and the position of the cursor in the input history for
766 the find, findbackwards and goto command.
769 the find, findbackwards and goto command.
767
770
768 2006-06-10 Walter Doerwald <walter@livinglogic.de>
771 2006-06-10 Walter Doerwald <walter@livinglogic.de>
769
772
770 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
773 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
771 implements the basic functionality of browser commands that require
774 implements the basic functionality of browser commands that require
772 input. Reimplement the goto, find and findbackwards commands as
775 input. Reimplement the goto, find and findbackwards commands as
773 subclasses of _CommandInput. Add an input history and keymaps to those
776 subclasses of _CommandInput. Add an input history and keymaps to those
774 commands. Add "\r" as a keyboard shortcut for the enterdefault and
777 commands. Add "\r" as a keyboard shortcut for the enterdefault and
775 execute commands.
778 execute commands.
776
779
777 2006-06-07 Ville Vainio <vivainio@gmail.com>
780 2006-06-07 Ville Vainio <vivainio@gmail.com>
778
781
779 * iplib.py: ipython mybatch.ipy exits ipython immediately after
782 * iplib.py: ipython mybatch.ipy exits ipython immediately after
780 running the batch files instead of leaving the session open.
783 running the batch files instead of leaving the session open.
781
784
782 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
785 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
783
786
784 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
787 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
785 the original fix was incomplete. Patch submitted by W. Maier.
788 the original fix was incomplete. Patch submitted by W. Maier.
786
789
787 2006-06-07 Ville Vainio <vivainio@gmail.com>
790 2006-06-07 Ville Vainio <vivainio@gmail.com>
788
791
789 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
792 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
790 Confirmation prompts can be supressed by 'quiet' option.
793 Confirmation prompts can be supressed by 'quiet' option.
791 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
794 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
792
795
793 2006-06-06 *** Released version 0.7.2
796 2006-06-06 *** Released version 0.7.2
794
797
795 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
798 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
796
799
797 * IPython/Release.py (version): Made 0.7.2 final for release.
800 * IPython/Release.py (version): Made 0.7.2 final for release.
798 Repo tagged and release cut.
801 Repo tagged and release cut.
799
802
800 2006-06-05 Ville Vainio <vivainio@gmail.com>
803 2006-06-05 Ville Vainio <vivainio@gmail.com>
801
804
802 * Magic.py (magic_rehashx): Honor no_alias list earlier in
805 * Magic.py (magic_rehashx): Honor no_alias list earlier in
803 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
806 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
804
807
805 * upgrade_dir.py: try import 'path' module a bit harder
808 * upgrade_dir.py: try import 'path' module a bit harder
806 (for %upgrade)
809 (for %upgrade)
807
810
808 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
811 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
809
812
810 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
813 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
811 instead of looping 20 times.
814 instead of looping 20 times.
812
815
813 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
816 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
814 correctly at initialization time. Bug reported by Krishna Mohan
817 correctly at initialization time. Bug reported by Krishna Mohan
815 Gundu <gkmohan-AT-gmail.com> on the user list.
818 Gundu <gkmohan-AT-gmail.com> on the user list.
816
819
817 * IPython/Release.py (version): Mark 0.7.2 version to start
820 * IPython/Release.py (version): Mark 0.7.2 version to start
818 testing for release on 06/06.
821 testing for release on 06/06.
819
822
820 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
823 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
821
824
822 * scripts/irunner: thin script interface so users don't have to
825 * scripts/irunner: thin script interface so users don't have to
823 find the module and call it as an executable, since modules rarely
826 find the module and call it as an executable, since modules rarely
824 live in people's PATH.
827 live in people's PATH.
825
828
826 * IPython/irunner.py (InteractiveRunner.__init__): added
829 * IPython/irunner.py (InteractiveRunner.__init__): added
827 delaybeforesend attribute to control delays with newer versions of
830 delaybeforesend attribute to control delays with newer versions of
828 pexpect. Thanks to detailed help from pexpect's author, Noah
831 pexpect. Thanks to detailed help from pexpect's author, Noah
829 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
832 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
830 correctly (it works in NoColor mode).
833 correctly (it works in NoColor mode).
831
834
832 * IPython/iplib.py (handle_normal): fix nasty crash reported on
835 * IPython/iplib.py (handle_normal): fix nasty crash reported on
833 SAGE list, from improper log() calls.
836 SAGE list, from improper log() calls.
834
837
835 2006-05-31 Ville Vainio <vivainio@gmail.com>
838 2006-05-31 Ville Vainio <vivainio@gmail.com>
836
839
837 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
840 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
838 with args in parens to work correctly with dirs that have spaces.
841 with args in parens to work correctly with dirs that have spaces.
839
842
840 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
843 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
841
844
842 * IPython/Logger.py (Logger.logstart): add option to log raw input
845 * IPython/Logger.py (Logger.logstart): add option to log raw input
843 instead of the processed one. A -r flag was added to the
846 instead of the processed one. A -r flag was added to the
844 %logstart magic used for controlling logging.
847 %logstart magic used for controlling logging.
845
848
846 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
849 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
847
850
848 * IPython/iplib.py (InteractiveShell.__init__): add check for the
851 * IPython/iplib.py (InteractiveShell.__init__): add check for the
849 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
852 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
850 recognize the option. After a bug report by Will Maier. This
853 recognize the option. After a bug report by Will Maier. This
851 closes #64 (will do it after confirmation from W. Maier).
854 closes #64 (will do it after confirmation from W. Maier).
852
855
853 * IPython/irunner.py: New module to run scripts as if manually
856 * IPython/irunner.py: New module to run scripts as if manually
854 typed into an interactive environment, based on pexpect. After a
857 typed into an interactive environment, based on pexpect. After a
855 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
858 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
856 ipython-user list. Simple unittests in the tests/ directory.
859 ipython-user list. Simple unittests in the tests/ directory.
857
860
858 * tools/release: add Will Maier, OpenBSD port maintainer, to
861 * tools/release: add Will Maier, OpenBSD port maintainer, to
859 recepients list. We are now officially part of the OpenBSD ports:
862 recepients list. We are now officially part of the OpenBSD ports:
860 http://www.openbsd.org/ports.html ! Many thanks to Will for the
863 http://www.openbsd.org/ports.html ! Many thanks to Will for the
861 work.
864 work.
862
865
863 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
866 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
864
867
865 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
868 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
866 so that it doesn't break tkinter apps.
869 so that it doesn't break tkinter apps.
867
870
868 * IPython/iplib.py (_prefilter): fix bug where aliases would
871 * IPython/iplib.py (_prefilter): fix bug where aliases would
869 shadow variables when autocall was fully off. Reported by SAGE
872 shadow variables when autocall was fully off. Reported by SAGE
870 author William Stein.
873 author William Stein.
871
874
872 * IPython/OInspect.py (Inspector.__init__): add a flag to control
875 * IPython/OInspect.py (Inspector.__init__): add a flag to control
873 at what detail level strings are computed when foo? is requested.
876 at what detail level strings are computed when foo? is requested.
874 This allows users to ask for example that the string form of an
877 This allows users to ask for example that the string form of an
875 object is only computed when foo?? is called, or even never, by
878 object is only computed when foo?? is called, or even never, by
876 setting the object_info_string_level >= 2 in the configuration
879 setting the object_info_string_level >= 2 in the configuration
877 file. This new option has been added and documented. After a
880 file. This new option has been added and documented. After a
878 request by SAGE to be able to control the printing of very large
881 request by SAGE to be able to control the printing of very large
879 objects more easily.
882 objects more easily.
880
883
881 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
884 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
882
885
883 * IPython/ipmaker.py (make_IPython): remove the ipython call path
886 * IPython/ipmaker.py (make_IPython): remove the ipython call path
884 from sys.argv, to be 100% consistent with how Python itself works
887 from sys.argv, to be 100% consistent with how Python itself works
885 (as seen for example with python -i file.py). After a bug report
888 (as seen for example with python -i file.py). After a bug report
886 by Jeffrey Collins.
889 by Jeffrey Collins.
887
890
888 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
891 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
889 nasty bug which was preventing custom namespaces with -pylab,
892 nasty bug which was preventing custom namespaces with -pylab,
890 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
893 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
891 compatibility (long gone from mpl).
894 compatibility (long gone from mpl).
892
895
893 * IPython/ipapi.py (make_session): name change: create->make. We
896 * IPython/ipapi.py (make_session): name change: create->make. We
894 use make in other places (ipmaker,...), it's shorter and easier to
897 use make in other places (ipmaker,...), it's shorter and easier to
895 type and say, etc. I'm trying to clean things before 0.7.2 so
898 type and say, etc. I'm trying to clean things before 0.7.2 so
896 that I can keep things stable wrt to ipapi in the chainsaw branch.
899 that I can keep things stable wrt to ipapi in the chainsaw branch.
897
900
898 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
901 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
899 python-mode recognizes our debugger mode. Add support for
902 python-mode recognizes our debugger mode. Add support for
900 autoindent inside (X)emacs. After a patch sent in by Jin Liu
903 autoindent inside (X)emacs. After a patch sent in by Jin Liu
901 <m.liu.jin-AT-gmail.com> originally written by
904 <m.liu.jin-AT-gmail.com> originally written by
902 doxgen-AT-newsmth.net (with minor modifications for xemacs
905 doxgen-AT-newsmth.net (with minor modifications for xemacs
903 compatibility)
906 compatibility)
904
907
905 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
908 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
906 tracebacks when walking the stack so that the stack tracking system
909 tracebacks when walking the stack so that the stack tracking system
907 in emacs' python-mode can identify the frames correctly.
910 in emacs' python-mode can identify the frames correctly.
908
911
909 * IPython/ipmaker.py (make_IPython): make the internal (and
912 * IPython/ipmaker.py (make_IPython): make the internal (and
910 default config) autoedit_syntax value false by default. Too many
913 default config) autoedit_syntax value false by default. Too many
911 users have complained to me (both on and off-list) about problems
914 users have complained to me (both on and off-list) about problems
912 with this option being on by default, so I'm making it default to
915 with this option being on by default, so I'm making it default to
913 off. It can still be enabled by anyone via the usual mechanisms.
916 off. It can still be enabled by anyone via the usual mechanisms.
914
917
915 * IPython/completer.py (Completer.attr_matches): add support for
918 * IPython/completer.py (Completer.attr_matches): add support for
916 PyCrust-style _getAttributeNames magic method. Patch contributed
919 PyCrust-style _getAttributeNames magic method. Patch contributed
917 by <mscott-AT-goldenspud.com>. Closes #50.
920 by <mscott-AT-goldenspud.com>. Closes #50.
918
921
919 * IPython/iplib.py (InteractiveShell.__init__): remove the
922 * IPython/iplib.py (InteractiveShell.__init__): remove the
920 deletion of exit/quit from __builtin__, which can break
923 deletion of exit/quit from __builtin__, which can break
921 third-party tools like the Zope debugging console. The
924 third-party tools like the Zope debugging console. The
922 %exit/%quit magics remain. In general, it's probably a good idea
925 %exit/%quit magics remain. In general, it's probably a good idea
923 not to delete anything from __builtin__, since we never know what
926 not to delete anything from __builtin__, since we never know what
924 that will break. In any case, python now (for 2.5) will support
927 that will break. In any case, python now (for 2.5) will support
925 'real' exit/quit, so this issue is moot. Closes #55.
928 'real' exit/quit, so this issue is moot. Closes #55.
926
929
927 * IPython/genutils.py (with_obj): rename the 'with' function to
930 * IPython/genutils.py (with_obj): rename the 'with' function to
928 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
931 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
929 becomes a language keyword. Closes #53.
932 becomes a language keyword. Closes #53.
930
933
931 * IPython/FakeModule.py (FakeModule.__init__): add a proper
934 * IPython/FakeModule.py (FakeModule.__init__): add a proper
932 __file__ attribute to this so it fools more things into thinking
935 __file__ attribute to this so it fools more things into thinking
933 it is a real module. Closes #59.
936 it is a real module. Closes #59.
934
937
935 * IPython/Magic.py (magic_edit): add -n option to open the editor
938 * IPython/Magic.py (magic_edit): add -n option to open the editor
936 at a specific line number. After a patch by Stefan van der Walt.
939 at a specific line number. After a patch by Stefan van der Walt.
937
940
938 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
941 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
939
942
940 * IPython/iplib.py (edit_syntax_error): fix crash when for some
943 * IPython/iplib.py (edit_syntax_error): fix crash when for some
941 reason the file could not be opened. After automatic crash
944 reason the file could not be opened. After automatic crash
942 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
945 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
943 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
946 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
944 (_should_recompile): Don't fire editor if using %bg, since there
947 (_should_recompile): Don't fire editor if using %bg, since there
945 is no file in the first place. From the same report as above.
948 is no file in the first place. From the same report as above.
946 (raw_input): protect against faulty third-party prefilters. After
949 (raw_input): protect against faulty third-party prefilters. After
947 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
950 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
948 while running under SAGE.
951 while running under SAGE.
949
952
950 2006-05-23 Ville Vainio <vivainio@gmail.com>
953 2006-05-23 Ville Vainio <vivainio@gmail.com>
951
954
952 * ipapi.py: Stripped down ip.to_user_ns() to work only as
955 * ipapi.py: Stripped down ip.to_user_ns() to work only as
953 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
956 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
954 now returns None (again), unless dummy is specifically allowed by
957 now returns None (again), unless dummy is specifically allowed by
955 ipapi.get(allow_dummy=True).
958 ipapi.get(allow_dummy=True).
956
959
957 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
960 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
958
961
959 * IPython: remove all 2.2-compatibility objects and hacks from
962 * IPython: remove all 2.2-compatibility objects and hacks from
960 everywhere, since we only support 2.3 at this point. Docs
963 everywhere, since we only support 2.3 at this point. Docs
961 updated.
964 updated.
962
965
963 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
966 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
964 Anything requiring extra validation can be turned into a Python
967 Anything requiring extra validation can be turned into a Python
965 property in the future. I used a property for the db one b/c
968 property in the future. I used a property for the db one b/c
966 there was a nasty circularity problem with the initialization
969 there was a nasty circularity problem with the initialization
967 order, which right now I don't have time to clean up.
970 order, which right now I don't have time to clean up.
968
971
969 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
972 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
970 another locking bug reported by Jorgen. I'm not 100% sure though,
973 another locking bug reported by Jorgen. I'm not 100% sure though,
971 so more testing is needed...
974 so more testing is needed...
972
975
973 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
976 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
974
977
975 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
978 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
976 local variables from any routine in user code (typically executed
979 local variables from any routine in user code (typically executed
977 with %run) directly into the interactive namespace. Very useful
980 with %run) directly into the interactive namespace. Very useful
978 when doing complex debugging.
981 when doing complex debugging.
979 (IPythonNotRunning): Changed the default None object to a dummy
982 (IPythonNotRunning): Changed the default None object to a dummy
980 whose attributes can be queried as well as called without
983 whose attributes can be queried as well as called without
981 exploding, to ease writing code which works transparently both in
984 exploding, to ease writing code which works transparently both in
982 and out of ipython and uses some of this API.
985 and out of ipython and uses some of this API.
983
986
984 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
987 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
985
988
986 * IPython/hooks.py (result_display): Fix the fact that our display
989 * IPython/hooks.py (result_display): Fix the fact that our display
987 hook was using str() instead of repr(), as the default python
990 hook was using str() instead of repr(), as the default python
988 console does. This had gone unnoticed b/c it only happened if
991 console does. This had gone unnoticed b/c it only happened if
989 %Pprint was off, but the inconsistency was there.
992 %Pprint was off, but the inconsistency was there.
990
993
991 2006-05-15 Ville Vainio <vivainio@gmail.com>
994 2006-05-15 Ville Vainio <vivainio@gmail.com>
992
995
993 * Oinspect.py: Only show docstring for nonexisting/binary files
996 * Oinspect.py: Only show docstring for nonexisting/binary files
994 when doing object??, closing ticket #62
997 when doing object??, closing ticket #62
995
998
996 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
999 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
997
1000
998 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1001 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
999 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1002 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1000 was being released in a routine which hadn't checked if it had
1003 was being released in a routine which hadn't checked if it had
1001 been the one to acquire it.
1004 been the one to acquire it.
1002
1005
1003 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1006 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1004
1007
1005 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1008 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1006
1009
1007 2006-04-11 Ville Vainio <vivainio@gmail.com>
1010 2006-04-11 Ville Vainio <vivainio@gmail.com>
1008
1011
1009 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1012 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1010 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1013 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1011 prefilters, allowing stuff like magics and aliases in the file.
1014 prefilters, allowing stuff like magics and aliases in the file.
1012
1015
1013 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1016 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1014 added. Supported now are "%clear in" and "%clear out" (clear input and
1017 added. Supported now are "%clear in" and "%clear out" (clear input and
1015 output history, respectively). Also fixed CachedOutput.flush to
1018 output history, respectively). Also fixed CachedOutput.flush to
1016 properly flush the output cache.
1019 properly flush the output cache.
1017
1020
1018 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1021 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1019 half-success (and fail explicitly).
1022 half-success (and fail explicitly).
1020
1023
1021 2006-03-28 Ville Vainio <vivainio@gmail.com>
1024 2006-03-28 Ville Vainio <vivainio@gmail.com>
1022
1025
1023 * iplib.py: Fix quoting of aliases so that only argless ones
1026 * iplib.py: Fix quoting of aliases so that only argless ones
1024 are quoted
1027 are quoted
1025
1028
1026 2006-03-28 Ville Vainio <vivainio@gmail.com>
1029 2006-03-28 Ville Vainio <vivainio@gmail.com>
1027
1030
1028 * iplib.py: Quote aliases with spaces in the name.
1031 * iplib.py: Quote aliases with spaces in the name.
1029 "c:\program files\blah\bin" is now legal alias target.
1032 "c:\program files\blah\bin" is now legal alias target.
1030
1033
1031 * ext_rehashdir.py: Space no longer allowed as arg
1034 * ext_rehashdir.py: Space no longer allowed as arg
1032 separator, since space is legal in path names.
1035 separator, since space is legal in path names.
1033
1036
1034 2006-03-16 Ville Vainio <vivainio@gmail.com>
1037 2006-03-16 Ville Vainio <vivainio@gmail.com>
1035
1038
1036 * upgrade_dir.py: Take path.py from Extensions, correcting
1039 * upgrade_dir.py: Take path.py from Extensions, correcting
1037 %upgrade magic
1040 %upgrade magic
1038
1041
1039 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1042 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1040
1043
1041 * hooks.py: Only enclose editor binary in quotes if legal and
1044 * hooks.py: Only enclose editor binary in quotes if legal and
1042 necessary (space in the name, and is an existing file). Fixes a bug
1045 necessary (space in the name, and is an existing file). Fixes a bug
1043 reported by Zachary Pincus.
1046 reported by Zachary Pincus.
1044
1047
1045 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1048 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1046
1049
1047 * Manual: thanks to a tip on proper color handling for Emacs, by
1050 * Manual: thanks to a tip on proper color handling for Emacs, by
1048 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1051 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1049
1052
1050 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1053 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1051 by applying the provided patch. Thanks to Liu Jin
1054 by applying the provided patch. Thanks to Liu Jin
1052 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1055 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1053 XEmacs/Linux, I'm trusting the submitter that it actually helps
1056 XEmacs/Linux, I'm trusting the submitter that it actually helps
1054 under win32/GNU Emacs. Will revisit if any problems are reported.
1057 under win32/GNU Emacs. Will revisit if any problems are reported.
1055
1058
1056 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1059 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1057
1060
1058 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1061 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1059 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1062 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1060
1063
1061 2006-03-12 Ville Vainio <vivainio@gmail.com>
1064 2006-03-12 Ville Vainio <vivainio@gmail.com>
1062
1065
1063 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1066 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1064 Torsten Marek.
1067 Torsten Marek.
1065
1068
1066 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1069 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1067
1070
1068 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1071 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1069 line ranges works again.
1072 line ranges works again.
1070
1073
1071 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1074 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1072
1075
1073 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1076 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1074 and friends, after a discussion with Zach Pincus on ipython-user.
1077 and friends, after a discussion with Zach Pincus on ipython-user.
1075 I'm not 100% sure, but after thinking about it quite a bit, it may
1078 I'm not 100% sure, but after thinking about it quite a bit, it may
1076 be OK. Testing with the multithreaded shells didn't reveal any
1079 be OK. Testing with the multithreaded shells didn't reveal any
1077 problems, but let's keep an eye out.
1080 problems, but let's keep an eye out.
1078
1081
1079 In the process, I fixed a few things which were calling
1082 In the process, I fixed a few things which were calling
1080 self.InteractiveTB() directly (like safe_execfile), which is a
1083 self.InteractiveTB() directly (like safe_execfile), which is a
1081 mistake: ALL exception reporting should be done by calling
1084 mistake: ALL exception reporting should be done by calling
1082 self.showtraceback(), which handles state and tab-completion and
1085 self.showtraceback(), which handles state and tab-completion and
1083 more.
1086 more.
1084
1087
1085 2006-03-01 Ville Vainio <vivainio@gmail.com>
1088 2006-03-01 Ville Vainio <vivainio@gmail.com>
1086
1089
1087 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1090 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1088 To use, do "from ipipe import *".
1091 To use, do "from ipipe import *".
1089
1092
1090 2006-02-24 Ville Vainio <vivainio@gmail.com>
1093 2006-02-24 Ville Vainio <vivainio@gmail.com>
1091
1094
1092 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1095 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1093 "cleanly" and safely than the older upgrade mechanism.
1096 "cleanly" and safely than the older upgrade mechanism.
1094
1097
1095 2006-02-21 Ville Vainio <vivainio@gmail.com>
1098 2006-02-21 Ville Vainio <vivainio@gmail.com>
1096
1099
1097 * Magic.py: %save works again.
1100 * Magic.py: %save works again.
1098
1101
1099 2006-02-15 Ville Vainio <vivainio@gmail.com>
1102 2006-02-15 Ville Vainio <vivainio@gmail.com>
1100
1103
1101 * Magic.py: %Pprint works again
1104 * Magic.py: %Pprint works again
1102
1105
1103 * Extensions/ipy_sane_defaults.py: Provide everything provided
1106 * Extensions/ipy_sane_defaults.py: Provide everything provided
1104 in default ipythonrc, to make it possible to have a completely empty
1107 in default ipythonrc, to make it possible to have a completely empty
1105 ipythonrc (and thus completely rc-file free configuration)
1108 ipythonrc (and thus completely rc-file free configuration)
1106
1109
1107 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1110 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1108
1111
1109 * IPython/hooks.py (editor): quote the call to the editor command,
1112 * IPython/hooks.py (editor): quote the call to the editor command,
1110 to allow commands with spaces in them. Problem noted by watching
1113 to allow commands with spaces in them. Problem noted by watching
1111 Ian Oswald's video about textpad under win32 at
1114 Ian Oswald's video about textpad under win32 at
1112 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1115 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1113
1116
1114 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1117 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1115 describing magics (we haven't used @ for a loong time).
1118 describing magics (we haven't used @ for a loong time).
1116
1119
1117 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1120 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1118 contributed by marienz to close
1121 contributed by marienz to close
1119 http://www.scipy.net/roundup/ipython/issue53.
1122 http://www.scipy.net/roundup/ipython/issue53.
1120
1123
1121 2006-02-10 Ville Vainio <vivainio@gmail.com>
1124 2006-02-10 Ville Vainio <vivainio@gmail.com>
1122
1125
1123 * genutils.py: getoutput now works in win32 too
1126 * genutils.py: getoutput now works in win32 too
1124
1127
1125 * completer.py: alias and magic completion only invoked
1128 * completer.py: alias and magic completion only invoked
1126 at the first "item" in the line, to avoid "cd %store"
1129 at the first "item" in the line, to avoid "cd %store"
1127 nonsense.
1130 nonsense.
1128
1131
1129 2006-02-09 Ville Vainio <vivainio@gmail.com>
1132 2006-02-09 Ville Vainio <vivainio@gmail.com>
1130
1133
1131 * test/*: Added a unit testing framework (finally).
1134 * test/*: Added a unit testing framework (finally).
1132 '%run runtests.py' to run test_*.
1135 '%run runtests.py' to run test_*.
1133
1136
1134 * ipapi.py: Exposed runlines and set_custom_exc
1137 * ipapi.py: Exposed runlines and set_custom_exc
1135
1138
1136 2006-02-07 Ville Vainio <vivainio@gmail.com>
1139 2006-02-07 Ville Vainio <vivainio@gmail.com>
1137
1140
1138 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1141 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1139 instead use "f(1 2)" as before.
1142 instead use "f(1 2)" as before.
1140
1143
1141 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1144 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1142
1145
1143 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1146 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1144 facilities, for demos processed by the IPython input filter
1147 facilities, for demos processed by the IPython input filter
1145 (IPythonDemo), and for running a script one-line-at-a-time as a
1148 (IPythonDemo), and for running a script one-line-at-a-time as a
1146 demo, both for pure Python (LineDemo) and for IPython-processed
1149 demo, both for pure Python (LineDemo) and for IPython-processed
1147 input (IPythonLineDemo). After a request by Dave Kohel, from the
1150 input (IPythonLineDemo). After a request by Dave Kohel, from the
1148 SAGE team.
1151 SAGE team.
1149 (Demo.edit): added an edit() method to the demo objects, to edit
1152 (Demo.edit): added an edit() method to the demo objects, to edit
1150 the in-memory copy of the last executed block.
1153 the in-memory copy of the last executed block.
1151
1154
1152 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1155 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1153 processing to %edit, %macro and %save. These commands can now be
1156 processing to %edit, %macro and %save. These commands can now be
1154 invoked on the unprocessed input as it was typed by the user
1157 invoked on the unprocessed input as it was typed by the user
1155 (without any prefilters applied). After requests by the SAGE team
1158 (without any prefilters applied). After requests by the SAGE team
1156 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1159 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1157
1160
1158 2006-02-01 Ville Vainio <vivainio@gmail.com>
1161 2006-02-01 Ville Vainio <vivainio@gmail.com>
1159
1162
1160 * setup.py, eggsetup.py: easy_install ipython==dev works
1163 * setup.py, eggsetup.py: easy_install ipython==dev works
1161 correctly now (on Linux)
1164 correctly now (on Linux)
1162
1165
1163 * ipy_user_conf,ipmaker: user config changes, removed spurious
1166 * ipy_user_conf,ipmaker: user config changes, removed spurious
1164 warnings
1167 warnings
1165
1168
1166 * iplib: if rc.banner is string, use it as is.
1169 * iplib: if rc.banner is string, use it as is.
1167
1170
1168 * Magic: %pycat accepts a string argument and pages it's contents.
1171 * Magic: %pycat accepts a string argument and pages it's contents.
1169
1172
1170
1173
1171 2006-01-30 Ville Vainio <vivainio@gmail.com>
1174 2006-01-30 Ville Vainio <vivainio@gmail.com>
1172
1175
1173 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1176 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1174 Now %store and bookmarks work through PickleShare, meaning that
1177 Now %store and bookmarks work through PickleShare, meaning that
1175 concurrent access is possible and all ipython sessions see the
1178 concurrent access is possible and all ipython sessions see the
1176 same database situation all the time, instead of snapshot of
1179 same database situation all the time, instead of snapshot of
1177 the situation when the session was started. Hence, %bookmark
1180 the situation when the session was started. Hence, %bookmark
1178 results are immediately accessible from othes sessions. The database
1181 results are immediately accessible from othes sessions. The database
1179 is also available for use by user extensions. See:
1182 is also available for use by user extensions. See:
1180 http://www.python.org/pypi/pickleshare
1183 http://www.python.org/pypi/pickleshare
1181
1184
1182 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1185 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1183
1186
1184 * aliases can now be %store'd
1187 * aliases can now be %store'd
1185
1188
1186 * path.py moved to Extensions so that pickleshare does not need
1189 * path.py moved to Extensions so that pickleshare does not need
1187 IPython-specific import. Extensions added to pythonpath right
1190 IPython-specific import. Extensions added to pythonpath right
1188 at __init__.
1191 at __init__.
1189
1192
1190 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1193 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1191 called with _ip.system and the pre-transformed command string.
1194 called with _ip.system and the pre-transformed command string.
1192
1195
1193 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1196 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1194
1197
1195 * IPython/iplib.py (interact): Fix that we were not catching
1198 * IPython/iplib.py (interact): Fix that we were not catching
1196 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1199 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1197 logic here had to change, but it's fixed now.
1200 logic here had to change, but it's fixed now.
1198
1201
1199 2006-01-29 Ville Vainio <vivainio@gmail.com>
1202 2006-01-29 Ville Vainio <vivainio@gmail.com>
1200
1203
1201 * iplib.py: Try to import pyreadline on Windows.
1204 * iplib.py: Try to import pyreadline on Windows.
1202
1205
1203 2006-01-27 Ville Vainio <vivainio@gmail.com>
1206 2006-01-27 Ville Vainio <vivainio@gmail.com>
1204
1207
1205 * iplib.py: Expose ipapi as _ip in builtin namespace.
1208 * iplib.py: Expose ipapi as _ip in builtin namespace.
1206 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1209 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1207 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1210 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1208 syntax now produce _ip.* variant of the commands.
1211 syntax now produce _ip.* variant of the commands.
1209
1212
1210 * "_ip.options().autoedit_syntax = 2" automatically throws
1213 * "_ip.options().autoedit_syntax = 2" automatically throws
1211 user to editor for syntax error correction without prompting.
1214 user to editor for syntax error correction without prompting.
1212
1215
1213 2006-01-27 Ville Vainio <vivainio@gmail.com>
1216 2006-01-27 Ville Vainio <vivainio@gmail.com>
1214
1217
1215 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1218 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1216 'ipython' at argv[0]) executed through command line.
1219 'ipython' at argv[0]) executed through command line.
1217 NOTE: this DEPRECATES calling ipython with multiple scripts
1220 NOTE: this DEPRECATES calling ipython with multiple scripts
1218 ("ipython a.py b.py c.py")
1221 ("ipython a.py b.py c.py")
1219
1222
1220 * iplib.py, hooks.py: Added configurable input prefilter,
1223 * iplib.py, hooks.py: Added configurable input prefilter,
1221 named 'input_prefilter'. See ext_rescapture.py for example
1224 named 'input_prefilter'. See ext_rescapture.py for example
1222 usage.
1225 usage.
1223
1226
1224 * ext_rescapture.py, Magic.py: Better system command output capture
1227 * ext_rescapture.py, Magic.py: Better system command output capture
1225 through 'var = !ls' (deprecates user-visible %sc). Same notation
1228 through 'var = !ls' (deprecates user-visible %sc). Same notation
1226 applies for magics, 'var = %alias' assigns alias list to var.
1229 applies for magics, 'var = %alias' assigns alias list to var.
1227
1230
1228 * ipapi.py: added meta() for accessing extension-usable data store.
1231 * ipapi.py: added meta() for accessing extension-usable data store.
1229
1232
1230 * iplib.py: added InteractiveShell.getapi(). New magics should be
1233 * iplib.py: added InteractiveShell.getapi(). New magics should be
1231 written doing self.getapi() instead of using the shell directly.
1234 written doing self.getapi() instead of using the shell directly.
1232
1235
1233 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1236 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1234 %store foo >> ~/myfoo.txt to store variables to files (in clean
1237 %store foo >> ~/myfoo.txt to store variables to files (in clean
1235 textual form, not a restorable pickle).
1238 textual form, not a restorable pickle).
1236
1239
1237 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1240 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1238
1241
1239 * usage.py, Magic.py: added %quickref
1242 * usage.py, Magic.py: added %quickref
1240
1243
1241 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1244 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1242
1245
1243 * GetoptErrors when invoking magics etc. with wrong args
1246 * GetoptErrors when invoking magics etc. with wrong args
1244 are now more helpful:
1247 are now more helpful:
1245 GetoptError: option -l not recognized (allowed: "qb" )
1248 GetoptError: option -l not recognized (allowed: "qb" )
1246
1249
1247 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1250 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1248
1251
1249 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1252 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1250 computationally intensive blocks don't appear to stall the demo.
1253 computationally intensive blocks don't appear to stall the demo.
1251
1254
1252 2006-01-24 Ville Vainio <vivainio@gmail.com>
1255 2006-01-24 Ville Vainio <vivainio@gmail.com>
1253
1256
1254 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1257 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1255 value to manipulate resulting history entry.
1258 value to manipulate resulting history entry.
1256
1259
1257 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1260 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1258 to instance methods of IPApi class, to make extending an embedded
1261 to instance methods of IPApi class, to make extending an embedded
1259 IPython feasible. See ext_rehashdir.py for example usage.
1262 IPython feasible. See ext_rehashdir.py for example usage.
1260
1263
1261 * Merged 1071-1076 from branches/0.7.1
1264 * Merged 1071-1076 from branches/0.7.1
1262
1265
1263
1266
1264 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1267 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1265
1268
1266 * tools/release (daystamp): Fix build tools to use the new
1269 * tools/release (daystamp): Fix build tools to use the new
1267 eggsetup.py script to build lightweight eggs.
1270 eggsetup.py script to build lightweight eggs.
1268
1271
1269 * Applied changesets 1062 and 1064 before 0.7.1 release.
1272 * Applied changesets 1062 and 1064 before 0.7.1 release.
1270
1273
1271 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1274 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1272 see the raw input history (without conversions like %ls ->
1275 see the raw input history (without conversions like %ls ->
1273 ipmagic("ls")). After a request from W. Stein, SAGE
1276 ipmagic("ls")). After a request from W. Stein, SAGE
1274 (http://modular.ucsd.edu/sage) developer. This information is
1277 (http://modular.ucsd.edu/sage) developer. This information is
1275 stored in the input_hist_raw attribute of the IPython instance, so
1278 stored in the input_hist_raw attribute of the IPython instance, so
1276 developers can access it if needed (it's an InputList instance).
1279 developers can access it if needed (it's an InputList instance).
1277
1280
1278 * Versionstring = 0.7.2.svn
1281 * Versionstring = 0.7.2.svn
1279
1282
1280 * eggsetup.py: A separate script for constructing eggs, creates
1283 * eggsetup.py: A separate script for constructing eggs, creates
1281 proper launch scripts even on Windows (an .exe file in
1284 proper launch scripts even on Windows (an .exe file in
1282 \python24\scripts).
1285 \python24\scripts).
1283
1286
1284 * ipapi.py: launch_new_instance, launch entry point needed for the
1287 * ipapi.py: launch_new_instance, launch entry point needed for the
1285 egg.
1288 egg.
1286
1289
1287 2006-01-23 Ville Vainio <vivainio@gmail.com>
1290 2006-01-23 Ville Vainio <vivainio@gmail.com>
1288
1291
1289 * Added %cpaste magic for pasting python code
1292 * Added %cpaste magic for pasting python code
1290
1293
1291 2006-01-22 Ville Vainio <vivainio@gmail.com>
1294 2006-01-22 Ville Vainio <vivainio@gmail.com>
1292
1295
1293 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1296 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1294
1297
1295 * Versionstring = 0.7.2.svn
1298 * Versionstring = 0.7.2.svn
1296
1299
1297 * eggsetup.py: A separate script for constructing eggs, creates
1300 * eggsetup.py: A separate script for constructing eggs, creates
1298 proper launch scripts even on Windows (an .exe file in
1301 proper launch scripts even on Windows (an .exe file in
1299 \python24\scripts).
1302 \python24\scripts).
1300
1303
1301 * ipapi.py: launch_new_instance, launch entry point needed for the
1304 * ipapi.py: launch_new_instance, launch entry point needed for the
1302 egg.
1305 egg.
1303
1306
1304 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1307 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1305
1308
1306 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1309 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1307 %pfile foo would print the file for foo even if it was a binary.
1310 %pfile foo would print the file for foo even if it was a binary.
1308 Now, extensions '.so' and '.dll' are skipped.
1311 Now, extensions '.so' and '.dll' are skipped.
1309
1312
1310 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1313 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1311 bug, where macros would fail in all threaded modes. I'm not 100%
1314 bug, where macros would fail in all threaded modes. I'm not 100%
1312 sure, so I'm going to put out an rc instead of making a release
1315 sure, so I'm going to put out an rc instead of making a release
1313 today, and wait for feedback for at least a few days.
1316 today, and wait for feedback for at least a few days.
1314
1317
1315 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1318 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1316 it...) the handling of pasting external code with autoindent on.
1319 it...) the handling of pasting external code with autoindent on.
1317 To get out of a multiline input, the rule will appear for most
1320 To get out of a multiline input, the rule will appear for most
1318 users unchanged: two blank lines or change the indent level
1321 users unchanged: two blank lines or change the indent level
1319 proposed by IPython. But there is a twist now: you can
1322 proposed by IPython. But there is a twist now: you can
1320 add/subtract only *one or two spaces*. If you add/subtract three
1323 add/subtract only *one or two spaces*. If you add/subtract three
1321 or more (unless you completely delete the line), IPython will
1324 or more (unless you completely delete the line), IPython will
1322 accept that line, and you'll need to enter a second one of pure
1325 accept that line, and you'll need to enter a second one of pure
1323 whitespace. I know it sounds complicated, but I can't find a
1326 whitespace. I know it sounds complicated, but I can't find a
1324 different solution that covers all the cases, with the right
1327 different solution that covers all the cases, with the right
1325 heuristics. Hopefully in actual use, nobody will really notice
1328 heuristics. Hopefully in actual use, nobody will really notice
1326 all these strange rules and things will 'just work'.
1329 all these strange rules and things will 'just work'.
1327
1330
1328 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1331 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1329
1332
1330 * IPython/iplib.py (interact): catch exceptions which can be
1333 * IPython/iplib.py (interact): catch exceptions which can be
1331 triggered asynchronously by signal handlers. Thanks to an
1334 triggered asynchronously by signal handlers. Thanks to an
1332 automatic crash report, submitted by Colin Kingsley
1335 automatic crash report, submitted by Colin Kingsley
1333 <tercel-AT-gentoo.org>.
1336 <tercel-AT-gentoo.org>.
1334
1337
1335 2006-01-20 Ville Vainio <vivainio@gmail.com>
1338 2006-01-20 Ville Vainio <vivainio@gmail.com>
1336
1339
1337 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1340 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1338 (%rehashdir, very useful, try it out) of how to extend ipython
1341 (%rehashdir, very useful, try it out) of how to extend ipython
1339 with new magics. Also added Extensions dir to pythonpath to make
1342 with new magics. Also added Extensions dir to pythonpath to make
1340 importing extensions easy.
1343 importing extensions easy.
1341
1344
1342 * %store now complains when trying to store interactively declared
1345 * %store now complains when trying to store interactively declared
1343 classes / instances of those classes.
1346 classes / instances of those classes.
1344
1347
1345 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1348 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1346 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1349 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1347 if they exist, and ipy_user_conf.py with some defaults is created for
1350 if they exist, and ipy_user_conf.py with some defaults is created for
1348 the user.
1351 the user.
1349
1352
1350 * Startup rehashing done by the config file, not InterpreterExec.
1353 * Startup rehashing done by the config file, not InterpreterExec.
1351 This means system commands are available even without selecting the
1354 This means system commands are available even without selecting the
1352 pysh profile. It's the sensible default after all.
1355 pysh profile. It's the sensible default after all.
1353
1356
1354 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1357 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1355
1358
1356 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1359 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1357 multiline code with autoindent on working. But I am really not
1360 multiline code with autoindent on working. But I am really not
1358 sure, so this needs more testing. Will commit a debug-enabled
1361 sure, so this needs more testing. Will commit a debug-enabled
1359 version for now, while I test it some more, so that Ville and
1362 version for now, while I test it some more, so that Ville and
1360 others may also catch any problems. Also made
1363 others may also catch any problems. Also made
1361 self.indent_current_str() a method, to ensure that there's no
1364 self.indent_current_str() a method, to ensure that there's no
1362 chance of the indent space count and the corresponding string
1365 chance of the indent space count and the corresponding string
1363 falling out of sync. All code needing the string should just call
1366 falling out of sync. All code needing the string should just call
1364 the method.
1367 the method.
1365
1368
1366 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1369 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1367
1370
1368 * IPython/Magic.py (magic_edit): fix check for when users don't
1371 * IPython/Magic.py (magic_edit): fix check for when users don't
1369 save their output files, the try/except was in the wrong section.
1372 save their output files, the try/except was in the wrong section.
1370
1373
1371 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1374 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1372
1375
1373 * IPython/Magic.py (magic_run): fix __file__ global missing from
1376 * IPython/Magic.py (magic_run): fix __file__ global missing from
1374 script's namespace when executed via %run. After a report by
1377 script's namespace when executed via %run. After a report by
1375 Vivian.
1378 Vivian.
1376
1379
1377 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1380 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1378 when using python 2.4. The parent constructor changed in 2.4, and
1381 when using python 2.4. The parent constructor changed in 2.4, and
1379 we need to track it directly (we can't call it, as it messes up
1382 we need to track it directly (we can't call it, as it messes up
1380 readline and tab-completion inside our pdb would stop working).
1383 readline and tab-completion inside our pdb would stop working).
1381 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1384 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1382
1385
1383 2006-01-16 Ville Vainio <vivainio@gmail.com>
1386 2006-01-16 Ville Vainio <vivainio@gmail.com>
1384
1387
1385 * Ipython/magic.py: Reverted back to old %edit functionality
1388 * Ipython/magic.py: Reverted back to old %edit functionality
1386 that returns file contents on exit.
1389 that returns file contents on exit.
1387
1390
1388 * IPython/path.py: Added Jason Orendorff's "path" module to
1391 * IPython/path.py: Added Jason Orendorff's "path" module to
1389 IPython tree, http://www.jorendorff.com/articles/python/path/.
1392 IPython tree, http://www.jorendorff.com/articles/python/path/.
1390 You can get path objects conveniently through %sc, and !!, e.g.:
1393 You can get path objects conveniently through %sc, and !!, e.g.:
1391 sc files=ls
1394 sc files=ls
1392 for p in files.paths: # or files.p
1395 for p in files.paths: # or files.p
1393 print p,p.mtime
1396 print p,p.mtime
1394
1397
1395 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1398 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1396 now work again without considering the exclusion regexp -
1399 now work again without considering the exclusion regexp -
1397 hence, things like ',foo my/path' turn to 'foo("my/path")'
1400 hence, things like ',foo my/path' turn to 'foo("my/path")'
1398 instead of syntax error.
1401 instead of syntax error.
1399
1402
1400
1403
1401 2006-01-14 Ville Vainio <vivainio@gmail.com>
1404 2006-01-14 Ville Vainio <vivainio@gmail.com>
1402
1405
1403 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1406 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1404 ipapi decorators for python 2.4 users, options() provides access to rc
1407 ipapi decorators for python 2.4 users, options() provides access to rc
1405 data.
1408 data.
1406
1409
1407 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1410 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1408 as path separators (even on Linux ;-). Space character after
1411 as path separators (even on Linux ;-). Space character after
1409 backslash (as yielded by tab completer) is still space;
1412 backslash (as yielded by tab completer) is still space;
1410 "%cd long\ name" works as expected.
1413 "%cd long\ name" works as expected.
1411
1414
1412 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1415 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1413 as "chain of command", with priority. API stays the same,
1416 as "chain of command", with priority. API stays the same,
1414 TryNext exception raised by a hook function signals that
1417 TryNext exception raised by a hook function signals that
1415 current hook failed and next hook should try handling it, as
1418 current hook failed and next hook should try handling it, as
1416 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1419 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1417 requested configurable display hook, which is now implemented.
1420 requested configurable display hook, which is now implemented.
1418
1421
1419 2006-01-13 Ville Vainio <vivainio@gmail.com>
1422 2006-01-13 Ville Vainio <vivainio@gmail.com>
1420
1423
1421 * IPython/platutils*.py: platform specific utility functions,
1424 * IPython/platutils*.py: platform specific utility functions,
1422 so far only set_term_title is implemented (change terminal
1425 so far only set_term_title is implemented (change terminal
1423 label in windowing systems). %cd now changes the title to
1426 label in windowing systems). %cd now changes the title to
1424 current dir.
1427 current dir.
1425
1428
1426 * IPython/Release.py: Added myself to "authors" list,
1429 * IPython/Release.py: Added myself to "authors" list,
1427 had to create new files.
1430 had to create new files.
1428
1431
1429 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1432 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1430 shell escape; not a known bug but had potential to be one in the
1433 shell escape; not a known bug but had potential to be one in the
1431 future.
1434 future.
1432
1435
1433 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1436 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1434 extension API for IPython! See the module for usage example. Fix
1437 extension API for IPython! See the module for usage example. Fix
1435 OInspect for docstring-less magic functions.
1438 OInspect for docstring-less magic functions.
1436
1439
1437
1440
1438 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1441 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1439
1442
1440 * IPython/iplib.py (raw_input): temporarily deactivate all
1443 * IPython/iplib.py (raw_input): temporarily deactivate all
1441 attempts at allowing pasting of code with autoindent on. It
1444 attempts at allowing pasting of code with autoindent on. It
1442 introduced bugs (reported by Prabhu) and I can't seem to find a
1445 introduced bugs (reported by Prabhu) and I can't seem to find a
1443 robust combination which works in all cases. Will have to revisit
1446 robust combination which works in all cases. Will have to revisit
1444 later.
1447 later.
1445
1448
1446 * IPython/genutils.py: remove isspace() function. We've dropped
1449 * IPython/genutils.py: remove isspace() function. We've dropped
1447 2.2 compatibility, so it's OK to use the string method.
1450 2.2 compatibility, so it's OK to use the string method.
1448
1451
1449 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1452 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1450
1453
1451 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1454 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1452 matching what NOT to autocall on, to include all python binary
1455 matching what NOT to autocall on, to include all python binary
1453 operators (including things like 'and', 'or', 'is' and 'in').
1456 operators (including things like 'and', 'or', 'is' and 'in').
1454 Prompted by a bug report on 'foo & bar', but I realized we had
1457 Prompted by a bug report on 'foo & bar', but I realized we had
1455 many more potential bug cases with other operators. The regexp is
1458 many more potential bug cases with other operators. The regexp is
1456 self.re_exclude_auto, it's fairly commented.
1459 self.re_exclude_auto, it's fairly commented.
1457
1460
1458 2006-01-12 Ville Vainio <vivainio@gmail.com>
1461 2006-01-12 Ville Vainio <vivainio@gmail.com>
1459
1462
1460 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1463 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1461 Prettified and hardened string/backslash quoting with ipsystem(),
1464 Prettified and hardened string/backslash quoting with ipsystem(),
1462 ipalias() and ipmagic(). Now even \ characters are passed to
1465 ipalias() and ipmagic(). Now even \ characters are passed to
1463 %magics, !shell escapes and aliases exactly as they are in the
1466 %magics, !shell escapes and aliases exactly as they are in the
1464 ipython command line. Should improve backslash experience,
1467 ipython command line. Should improve backslash experience,
1465 particularly in Windows (path delimiter for some commands that
1468 particularly in Windows (path delimiter for some commands that
1466 won't understand '/'), but Unix benefits as well (regexps). %cd
1469 won't understand '/'), but Unix benefits as well (regexps). %cd
1467 magic still doesn't support backslash path delimiters, though. Also
1470 magic still doesn't support backslash path delimiters, though. Also
1468 deleted all pretense of supporting multiline command strings in
1471 deleted all pretense of supporting multiline command strings in
1469 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1472 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1470
1473
1471 * doc/build_doc_instructions.txt added. Documentation on how to
1474 * doc/build_doc_instructions.txt added. Documentation on how to
1472 use doc/update_manual.py, added yesterday. Both files contributed
1475 use doc/update_manual.py, added yesterday. Both files contributed
1473 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1476 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1474 doc/*.sh for deprecation at a later date.
1477 doc/*.sh for deprecation at a later date.
1475
1478
1476 * /ipython.py Added ipython.py to root directory for
1479 * /ipython.py Added ipython.py to root directory for
1477 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1480 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1478 ipython.py) and development convenience (no need to keep doing
1481 ipython.py) and development convenience (no need to keep doing
1479 "setup.py install" between changes).
1482 "setup.py install" between changes).
1480
1483
1481 * Made ! and !! shell escapes work (again) in multiline expressions:
1484 * Made ! and !! shell escapes work (again) in multiline expressions:
1482 if 1:
1485 if 1:
1483 !ls
1486 !ls
1484 !!ls
1487 !!ls
1485
1488
1486 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1489 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1487
1490
1488 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1491 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1489 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1492 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1490 module in case-insensitive installation. Was causing crashes
1493 module in case-insensitive installation. Was causing crashes
1491 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1494 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1492
1495
1493 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1496 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1494 <marienz-AT-gentoo.org>, closes
1497 <marienz-AT-gentoo.org>, closes
1495 http://www.scipy.net/roundup/ipython/issue51.
1498 http://www.scipy.net/roundup/ipython/issue51.
1496
1499
1497 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1500 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1498
1501
1499 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1502 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1500 problem of excessive CPU usage under *nix and keyboard lag under
1503 problem of excessive CPU usage under *nix and keyboard lag under
1501 win32.
1504 win32.
1502
1505
1503 2006-01-10 *** Released version 0.7.0
1506 2006-01-10 *** Released version 0.7.0
1504
1507
1505 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1508 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1506
1509
1507 * IPython/Release.py (revision): tag version number to 0.7.0,
1510 * IPython/Release.py (revision): tag version number to 0.7.0,
1508 ready for release.
1511 ready for release.
1509
1512
1510 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1513 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1511 it informs the user of the name of the temp. file used. This can
1514 it informs the user of the name of the temp. file used. This can
1512 help if you decide later to reuse that same file, so you know
1515 help if you decide later to reuse that same file, so you know
1513 where to copy the info from.
1516 where to copy the info from.
1514
1517
1515 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1518 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1516
1519
1517 * setup_bdist_egg.py: little script to build an egg. Added
1520 * setup_bdist_egg.py: little script to build an egg. Added
1518 support in the release tools as well.
1521 support in the release tools as well.
1519
1522
1520 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1523 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1521
1524
1522 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1525 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1523 version selection (new -wxversion command line and ipythonrc
1526 version selection (new -wxversion command line and ipythonrc
1524 parameter). Patch contributed by Arnd Baecker
1527 parameter). Patch contributed by Arnd Baecker
1525 <arnd.baecker-AT-web.de>.
1528 <arnd.baecker-AT-web.de>.
1526
1529
1527 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1530 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1528 embedded instances, for variables defined at the interactive
1531 embedded instances, for variables defined at the interactive
1529 prompt of the embedded ipython. Reported by Arnd.
1532 prompt of the embedded ipython. Reported by Arnd.
1530
1533
1531 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1534 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1532 it can be used as a (stateful) toggle, or with a direct parameter.
1535 it can be used as a (stateful) toggle, or with a direct parameter.
1533
1536
1534 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1537 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1535 could be triggered in certain cases and cause the traceback
1538 could be triggered in certain cases and cause the traceback
1536 printer not to work.
1539 printer not to work.
1537
1540
1538 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1541 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1539
1542
1540 * IPython/iplib.py (_should_recompile): Small fix, closes
1543 * IPython/iplib.py (_should_recompile): Small fix, closes
1541 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1544 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1542
1545
1543 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1546 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1544
1547
1545 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1548 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1546 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1549 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1547 Moad for help with tracking it down.
1550 Moad for help with tracking it down.
1548
1551
1549 * IPython/iplib.py (handle_auto): fix autocall handling for
1552 * IPython/iplib.py (handle_auto): fix autocall handling for
1550 objects which support BOTH __getitem__ and __call__ (so that f [x]
1553 objects which support BOTH __getitem__ and __call__ (so that f [x]
1551 is left alone, instead of becoming f([x]) automatically).
1554 is left alone, instead of becoming f([x]) automatically).
1552
1555
1553 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1556 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1554 Ville's patch.
1557 Ville's patch.
1555
1558
1556 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1559 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1557
1560
1558 * IPython/iplib.py (handle_auto): changed autocall semantics to
1561 * IPython/iplib.py (handle_auto): changed autocall semantics to
1559 include 'smart' mode, where the autocall transformation is NOT
1562 include 'smart' mode, where the autocall transformation is NOT
1560 applied if there are no arguments on the line. This allows you to
1563 applied if there are no arguments on the line. This allows you to
1561 just type 'foo' if foo is a callable to see its internal form,
1564 just type 'foo' if foo is a callable to see its internal form,
1562 instead of having it called with no arguments (typically a
1565 instead of having it called with no arguments (typically a
1563 mistake). The old 'full' autocall still exists: for that, you
1566 mistake). The old 'full' autocall still exists: for that, you
1564 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1567 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1565
1568
1566 * IPython/completer.py (Completer.attr_matches): add
1569 * IPython/completer.py (Completer.attr_matches): add
1567 tab-completion support for Enthoughts' traits. After a report by
1570 tab-completion support for Enthoughts' traits. After a report by
1568 Arnd and a patch by Prabhu.
1571 Arnd and a patch by Prabhu.
1569
1572
1570 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1573 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1571
1574
1572 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1575 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1573 Schmolck's patch to fix inspect.getinnerframes().
1576 Schmolck's patch to fix inspect.getinnerframes().
1574
1577
1575 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1578 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1576 for embedded instances, regarding handling of namespaces and items
1579 for embedded instances, regarding handling of namespaces and items
1577 added to the __builtin__ one. Multiple embedded instances and
1580 added to the __builtin__ one. Multiple embedded instances and
1578 recursive embeddings should work better now (though I'm not sure
1581 recursive embeddings should work better now (though I'm not sure
1579 I've got all the corner cases fixed, that code is a bit of a brain
1582 I've got all the corner cases fixed, that code is a bit of a brain
1580 twister).
1583 twister).
1581
1584
1582 * IPython/Magic.py (magic_edit): added support to edit in-memory
1585 * IPython/Magic.py (magic_edit): added support to edit in-memory
1583 macros (automatically creates the necessary temp files). %edit
1586 macros (automatically creates the necessary temp files). %edit
1584 also doesn't return the file contents anymore, it's just noise.
1587 also doesn't return the file contents anymore, it's just noise.
1585
1588
1586 * IPython/completer.py (Completer.attr_matches): revert change to
1589 * IPython/completer.py (Completer.attr_matches): revert change to
1587 complete only on attributes listed in __all__. I realized it
1590 complete only on attributes listed in __all__. I realized it
1588 cripples the tab-completion system as a tool for exploring the
1591 cripples the tab-completion system as a tool for exploring the
1589 internals of unknown libraries (it renders any non-__all__
1592 internals of unknown libraries (it renders any non-__all__
1590 attribute off-limits). I got bit by this when trying to see
1593 attribute off-limits). I got bit by this when trying to see
1591 something inside the dis module.
1594 something inside the dis module.
1592
1595
1593 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1596 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1594
1597
1595 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1598 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1596 namespace for users and extension writers to hold data in. This
1599 namespace for users and extension writers to hold data in. This
1597 follows the discussion in
1600 follows the discussion in
1598 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1601 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1599
1602
1600 * IPython/completer.py (IPCompleter.complete): small patch to help
1603 * IPython/completer.py (IPCompleter.complete): small patch to help
1601 tab-completion under Emacs, after a suggestion by John Barnard
1604 tab-completion under Emacs, after a suggestion by John Barnard
1602 <barnarj-AT-ccf.org>.
1605 <barnarj-AT-ccf.org>.
1603
1606
1604 * IPython/Magic.py (Magic.extract_input_slices): added support for
1607 * IPython/Magic.py (Magic.extract_input_slices): added support for
1605 the slice notation in magics to use N-M to represent numbers N...M
1608 the slice notation in magics to use N-M to represent numbers N...M
1606 (closed endpoints). This is used by %macro and %save.
1609 (closed endpoints). This is used by %macro and %save.
1607
1610
1608 * IPython/completer.py (Completer.attr_matches): for modules which
1611 * IPython/completer.py (Completer.attr_matches): for modules which
1609 define __all__, complete only on those. After a patch by Jeffrey
1612 define __all__, complete only on those. After a patch by Jeffrey
1610 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1613 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1611 speed up this routine.
1614 speed up this routine.
1612
1615
1613 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1616 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1614 don't know if this is the end of it, but the behavior now is
1617 don't know if this is the end of it, but the behavior now is
1615 certainly much more correct. Note that coupled with macros,
1618 certainly much more correct. Note that coupled with macros,
1616 slightly surprising (at first) behavior may occur: a macro will in
1619 slightly surprising (at first) behavior may occur: a macro will in
1617 general expand to multiple lines of input, so upon exiting, the
1620 general expand to multiple lines of input, so upon exiting, the
1618 in/out counters will both be bumped by the corresponding amount
1621 in/out counters will both be bumped by the corresponding amount
1619 (as if the macro's contents had been typed interactively). Typing
1622 (as if the macro's contents had been typed interactively). Typing
1620 %hist will reveal the intermediate (silently processed) lines.
1623 %hist will reveal the intermediate (silently processed) lines.
1621
1624
1622 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1625 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1623 pickle to fail (%run was overwriting __main__ and not restoring
1626 pickle to fail (%run was overwriting __main__ and not restoring
1624 it, but pickle relies on __main__ to operate).
1627 it, but pickle relies on __main__ to operate).
1625
1628
1626 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1629 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1627 using properties, but forgot to make the main InteractiveShell
1630 using properties, but forgot to make the main InteractiveShell
1628 class a new-style class. Properties fail silently, and
1631 class a new-style class. Properties fail silently, and
1629 mysteriously, with old-style class (getters work, but
1632 mysteriously, with old-style class (getters work, but
1630 setters don't do anything).
1633 setters don't do anything).
1631
1634
1632 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1635 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1633
1636
1634 * IPython/Magic.py (magic_history): fix history reporting bug (I
1637 * IPython/Magic.py (magic_history): fix history reporting bug (I
1635 know some nasties are still there, I just can't seem to find a
1638 know some nasties are still there, I just can't seem to find a
1636 reproducible test case to track them down; the input history is
1639 reproducible test case to track them down; the input history is
1637 falling out of sync...)
1640 falling out of sync...)
1638
1641
1639 * IPython/iplib.py (handle_shell_escape): fix bug where both
1642 * IPython/iplib.py (handle_shell_escape): fix bug where both
1640 aliases and system accesses where broken for indented code (such
1643 aliases and system accesses where broken for indented code (such
1641 as loops).
1644 as loops).
1642
1645
1643 * IPython/genutils.py (shell): fix small but critical bug for
1646 * IPython/genutils.py (shell): fix small but critical bug for
1644 win32 system access.
1647 win32 system access.
1645
1648
1646 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1649 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1647
1650
1648 * IPython/iplib.py (showtraceback): remove use of the
1651 * IPython/iplib.py (showtraceback): remove use of the
1649 sys.last_{type/value/traceback} structures, which are non
1652 sys.last_{type/value/traceback} structures, which are non
1650 thread-safe.
1653 thread-safe.
1651 (_prefilter): change control flow to ensure that we NEVER
1654 (_prefilter): change control flow to ensure that we NEVER
1652 introspect objects when autocall is off. This will guarantee that
1655 introspect objects when autocall is off. This will guarantee that
1653 having an input line of the form 'x.y', where access to attribute
1656 having an input line of the form 'x.y', where access to attribute
1654 'y' has side effects, doesn't trigger the side effect TWICE. It
1657 'y' has side effects, doesn't trigger the side effect TWICE. It
1655 is important to note that, with autocall on, these side effects
1658 is important to note that, with autocall on, these side effects
1656 can still happen.
1659 can still happen.
1657 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1660 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1658 trio. IPython offers these three kinds of special calls which are
1661 trio. IPython offers these three kinds of special calls which are
1659 not python code, and it's a good thing to have their call method
1662 not python code, and it's a good thing to have their call method
1660 be accessible as pure python functions (not just special syntax at
1663 be accessible as pure python functions (not just special syntax at
1661 the command line). It gives us a better internal implementation
1664 the command line). It gives us a better internal implementation
1662 structure, as well as exposing these for user scripting more
1665 structure, as well as exposing these for user scripting more
1663 cleanly.
1666 cleanly.
1664
1667
1665 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1668 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1666 file. Now that they'll be more likely to be used with the
1669 file. Now that they'll be more likely to be used with the
1667 persistance system (%store), I want to make sure their module path
1670 persistance system (%store), I want to make sure their module path
1668 doesn't change in the future, so that we don't break things for
1671 doesn't change in the future, so that we don't break things for
1669 users' persisted data.
1672 users' persisted data.
1670
1673
1671 * IPython/iplib.py (autoindent_update): move indentation
1674 * IPython/iplib.py (autoindent_update): move indentation
1672 management into the _text_ processing loop, not the keyboard
1675 management into the _text_ processing loop, not the keyboard
1673 interactive one. This is necessary to correctly process non-typed
1676 interactive one. This is necessary to correctly process non-typed
1674 multiline input (such as macros).
1677 multiline input (such as macros).
1675
1678
1676 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1679 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1677 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1680 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1678 which was producing problems in the resulting manual.
1681 which was producing problems in the resulting manual.
1679 (magic_whos): improve reporting of instances (show their class,
1682 (magic_whos): improve reporting of instances (show their class,
1680 instead of simply printing 'instance' which isn't terribly
1683 instead of simply printing 'instance' which isn't terribly
1681 informative).
1684 informative).
1682
1685
1683 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1686 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1684 (minor mods) to support network shares under win32.
1687 (minor mods) to support network shares under win32.
1685
1688
1686 * IPython/winconsole.py (get_console_size): add new winconsole
1689 * IPython/winconsole.py (get_console_size): add new winconsole
1687 module and fixes to page_dumb() to improve its behavior under
1690 module and fixes to page_dumb() to improve its behavior under
1688 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1691 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1689
1692
1690 * IPython/Magic.py (Macro): simplified Macro class to just
1693 * IPython/Magic.py (Macro): simplified Macro class to just
1691 subclass list. We've had only 2.2 compatibility for a very long
1694 subclass list. We've had only 2.2 compatibility for a very long
1692 time, yet I was still avoiding subclassing the builtin types. No
1695 time, yet I was still avoiding subclassing the builtin types. No
1693 more (I'm also starting to use properties, though I won't shift to
1696 more (I'm also starting to use properties, though I won't shift to
1694 2.3-specific features quite yet).
1697 2.3-specific features quite yet).
1695 (magic_store): added Ville's patch for lightweight variable
1698 (magic_store): added Ville's patch for lightweight variable
1696 persistence, after a request on the user list by Matt Wilkie
1699 persistence, after a request on the user list by Matt Wilkie
1697 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1700 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1698 details.
1701 details.
1699
1702
1700 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1703 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1701 changed the default logfile name from 'ipython.log' to
1704 changed the default logfile name from 'ipython.log' to
1702 'ipython_log.py'. These logs are real python files, and now that
1705 'ipython_log.py'. These logs are real python files, and now that
1703 we have much better multiline support, people are more likely to
1706 we have much better multiline support, people are more likely to
1704 want to use them as such. Might as well name them correctly.
1707 want to use them as such. Might as well name them correctly.
1705
1708
1706 * IPython/Magic.py: substantial cleanup. While we can't stop
1709 * IPython/Magic.py: substantial cleanup. While we can't stop
1707 using magics as mixins, due to the existing customizations 'out
1710 using magics as mixins, due to the existing customizations 'out
1708 there' which rely on the mixin naming conventions, at least I
1711 there' which rely on the mixin naming conventions, at least I
1709 cleaned out all cross-class name usage. So once we are OK with
1712 cleaned out all cross-class name usage. So once we are OK with
1710 breaking compatibility, the two systems can be separated.
1713 breaking compatibility, the two systems can be separated.
1711
1714
1712 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1715 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1713 anymore, and the class is a fair bit less hideous as well. New
1716 anymore, and the class is a fair bit less hideous as well. New
1714 features were also introduced: timestamping of input, and logging
1717 features were also introduced: timestamping of input, and logging
1715 of output results. These are user-visible with the -t and -o
1718 of output results. These are user-visible with the -t and -o
1716 options to %logstart. Closes
1719 options to %logstart. Closes
1717 http://www.scipy.net/roundup/ipython/issue11 and a request by
1720 http://www.scipy.net/roundup/ipython/issue11 and a request by
1718 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1721 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1719
1722
1720 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1723 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1721
1724
1722 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1725 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1723 better handle backslashes in paths. See the thread 'More Windows
1726 better handle backslashes in paths. See the thread 'More Windows
1724 questions part 2 - \/ characters revisited' on the iypthon user
1727 questions part 2 - \/ characters revisited' on the iypthon user
1725 list:
1728 list:
1726 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1729 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1727
1730
1728 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1731 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1729
1732
1730 (InteractiveShell.__init__): change threaded shells to not use the
1733 (InteractiveShell.__init__): change threaded shells to not use the
1731 ipython crash handler. This was causing more problems than not,
1734 ipython crash handler. This was causing more problems than not,
1732 as exceptions in the main thread (GUI code, typically) would
1735 as exceptions in the main thread (GUI code, typically) would
1733 always show up as a 'crash', when they really weren't.
1736 always show up as a 'crash', when they really weren't.
1734
1737
1735 The colors and exception mode commands (%colors/%xmode) have been
1738 The colors and exception mode commands (%colors/%xmode) have been
1736 synchronized to also take this into account, so users can get
1739 synchronized to also take this into account, so users can get
1737 verbose exceptions for their threaded code as well. I also added
1740 verbose exceptions for their threaded code as well. I also added
1738 support for activating pdb inside this exception handler as well,
1741 support for activating pdb inside this exception handler as well,
1739 so now GUI authors can use IPython's enhanced pdb at runtime.
1742 so now GUI authors can use IPython's enhanced pdb at runtime.
1740
1743
1741 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1744 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1742 true by default, and add it to the shipped ipythonrc file. Since
1745 true by default, and add it to the shipped ipythonrc file. Since
1743 this asks the user before proceeding, I think it's OK to make it
1746 this asks the user before proceeding, I think it's OK to make it
1744 true by default.
1747 true by default.
1745
1748
1746 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1749 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1747 of the previous special-casing of input in the eval loop. I think
1750 of the previous special-casing of input in the eval loop. I think
1748 this is cleaner, as they really are commands and shouldn't have
1751 this is cleaner, as they really are commands and shouldn't have
1749 a special role in the middle of the core code.
1752 a special role in the middle of the core code.
1750
1753
1751 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1754 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1752
1755
1753 * IPython/iplib.py (edit_syntax_error): added support for
1756 * IPython/iplib.py (edit_syntax_error): added support for
1754 automatically reopening the editor if the file had a syntax error
1757 automatically reopening the editor if the file had a syntax error
1755 in it. Thanks to scottt who provided the patch at:
1758 in it. Thanks to scottt who provided the patch at:
1756 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1759 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1757 version committed).
1760 version committed).
1758
1761
1759 * IPython/iplib.py (handle_normal): add suport for multi-line
1762 * IPython/iplib.py (handle_normal): add suport for multi-line
1760 input with emtpy lines. This fixes
1763 input with emtpy lines. This fixes
1761 http://www.scipy.net/roundup/ipython/issue43 and a similar
1764 http://www.scipy.net/roundup/ipython/issue43 and a similar
1762 discussion on the user list.
1765 discussion on the user list.
1763
1766
1764 WARNING: a behavior change is necessarily introduced to support
1767 WARNING: a behavior change is necessarily introduced to support
1765 blank lines: now a single blank line with whitespace does NOT
1768 blank lines: now a single blank line with whitespace does NOT
1766 break the input loop, which means that when autoindent is on, by
1769 break the input loop, which means that when autoindent is on, by
1767 default hitting return on the next (indented) line does NOT exit.
1770 default hitting return on the next (indented) line does NOT exit.
1768
1771
1769 Instead, to exit a multiline input you can either have:
1772 Instead, to exit a multiline input you can either have:
1770
1773
1771 - TWO whitespace lines (just hit return again), or
1774 - TWO whitespace lines (just hit return again), or
1772 - a single whitespace line of a different length than provided
1775 - a single whitespace line of a different length than provided
1773 by the autoindent (add or remove a space).
1776 by the autoindent (add or remove a space).
1774
1777
1775 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1778 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1776 module to better organize all readline-related functionality.
1779 module to better organize all readline-related functionality.
1777 I've deleted FlexCompleter and put all completion clases here.
1780 I've deleted FlexCompleter and put all completion clases here.
1778
1781
1779 * IPython/iplib.py (raw_input): improve indentation management.
1782 * IPython/iplib.py (raw_input): improve indentation management.
1780 It is now possible to paste indented code with autoindent on, and
1783 It is now possible to paste indented code with autoindent on, and
1781 the code is interpreted correctly (though it still looks bad on
1784 the code is interpreted correctly (though it still looks bad on
1782 screen, due to the line-oriented nature of ipython).
1785 screen, due to the line-oriented nature of ipython).
1783 (MagicCompleter.complete): change behavior so that a TAB key on an
1786 (MagicCompleter.complete): change behavior so that a TAB key on an
1784 otherwise empty line actually inserts a tab, instead of completing
1787 otherwise empty line actually inserts a tab, instead of completing
1785 on the entire global namespace. This makes it easier to use the
1788 on the entire global namespace. This makes it easier to use the
1786 TAB key for indentation. After a request by Hans Meine
1789 TAB key for indentation. After a request by Hans Meine
1787 <hans_meine-AT-gmx.net>
1790 <hans_meine-AT-gmx.net>
1788 (_prefilter): add support so that typing plain 'exit' or 'quit'
1791 (_prefilter): add support so that typing plain 'exit' or 'quit'
1789 does a sensible thing. Originally I tried to deviate as little as
1792 does a sensible thing. Originally I tried to deviate as little as
1790 possible from the default python behavior, but even that one may
1793 possible from the default python behavior, but even that one may
1791 change in this direction (thread on python-dev to that effect).
1794 change in this direction (thread on python-dev to that effect).
1792 Regardless, ipython should do the right thing even if CPython's
1795 Regardless, ipython should do the right thing even if CPython's
1793 '>>>' prompt doesn't.
1796 '>>>' prompt doesn't.
1794 (InteractiveShell): removed subclassing code.InteractiveConsole
1797 (InteractiveShell): removed subclassing code.InteractiveConsole
1795 class. By now we'd overridden just about all of its methods: I've
1798 class. By now we'd overridden just about all of its methods: I've
1796 copied the remaining two over, and now ipython is a standalone
1799 copied the remaining two over, and now ipython is a standalone
1797 class. This will provide a clearer picture for the chainsaw
1800 class. This will provide a clearer picture for the chainsaw
1798 branch refactoring.
1801 branch refactoring.
1799
1802
1800 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1803 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1801
1804
1802 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1805 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1803 failures for objects which break when dir() is called on them.
1806 failures for objects which break when dir() is called on them.
1804
1807
1805 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1808 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1806 distinct local and global namespaces in the completer API. This
1809 distinct local and global namespaces in the completer API. This
1807 change allows us to properly handle completion with distinct
1810 change allows us to properly handle completion with distinct
1808 scopes, including in embedded instances (this had never really
1811 scopes, including in embedded instances (this had never really
1809 worked correctly).
1812 worked correctly).
1810
1813
1811 Note: this introduces a change in the constructor for
1814 Note: this introduces a change in the constructor for
1812 MagicCompleter, as a new global_namespace parameter is now the
1815 MagicCompleter, as a new global_namespace parameter is now the
1813 second argument (the others were bumped one position).
1816 second argument (the others were bumped one position).
1814
1817
1815 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1818 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1816
1819
1817 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1820 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1818 embedded instances (which can be done now thanks to Vivian's
1821 embedded instances (which can be done now thanks to Vivian's
1819 frame-handling fixes for pdb).
1822 frame-handling fixes for pdb).
1820 (InteractiveShell.__init__): Fix namespace handling problem in
1823 (InteractiveShell.__init__): Fix namespace handling problem in
1821 embedded instances. We were overwriting __main__ unconditionally,
1824 embedded instances. We were overwriting __main__ unconditionally,
1822 and this should only be done for 'full' (non-embedded) IPython;
1825 and this should only be done for 'full' (non-embedded) IPython;
1823 embedded instances must respect the caller's __main__. Thanks to
1826 embedded instances must respect the caller's __main__. Thanks to
1824 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1827 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1825
1828
1826 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1829 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1827
1830
1828 * setup.py: added download_url to setup(). This registers the
1831 * setup.py: added download_url to setup(). This registers the
1829 download address at PyPI, which is not only useful to humans
1832 download address at PyPI, which is not only useful to humans
1830 browsing the site, but is also picked up by setuptools (the Eggs
1833 browsing the site, but is also picked up by setuptools (the Eggs
1831 machinery). Thanks to Ville and R. Kern for the info/discussion
1834 machinery). Thanks to Ville and R. Kern for the info/discussion
1832 on this.
1835 on this.
1833
1836
1834 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1837 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1835
1838
1836 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1839 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1837 This brings a lot of nice functionality to the pdb mode, which now
1840 This brings a lot of nice functionality to the pdb mode, which now
1838 has tab-completion, syntax highlighting, and better stack handling
1841 has tab-completion, syntax highlighting, and better stack handling
1839 than before. Many thanks to Vivian De Smedt
1842 than before. Many thanks to Vivian De Smedt
1840 <vivian-AT-vdesmedt.com> for the original patches.
1843 <vivian-AT-vdesmedt.com> for the original patches.
1841
1844
1842 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1845 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1843
1846
1844 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1847 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1845 sequence to consistently accept the banner argument. The
1848 sequence to consistently accept the banner argument. The
1846 inconsistency was tripping SAGE, thanks to Gary Zablackis
1849 inconsistency was tripping SAGE, thanks to Gary Zablackis
1847 <gzabl-AT-yahoo.com> for the report.
1850 <gzabl-AT-yahoo.com> for the report.
1848
1851
1849 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1852 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1850
1853
1851 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1854 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1852 Fix bug where a naked 'alias' call in the ipythonrc file would
1855 Fix bug where a naked 'alias' call in the ipythonrc file would
1853 cause a crash. Bug reported by Jorgen Stenarson.
1856 cause a crash. Bug reported by Jorgen Stenarson.
1854
1857
1855 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1858 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1856
1859
1857 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1860 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1858 startup time.
1861 startup time.
1859
1862
1860 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1863 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1861 instances had introduced a bug with globals in normal code. Now
1864 instances had introduced a bug with globals in normal code. Now
1862 it's working in all cases.
1865 it's working in all cases.
1863
1866
1864 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1867 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1865 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1868 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1866 has been introduced to set the default case sensitivity of the
1869 has been introduced to set the default case sensitivity of the
1867 searches. Users can still select either mode at runtime on a
1870 searches. Users can still select either mode at runtime on a
1868 per-search basis.
1871 per-search basis.
1869
1872
1870 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1873 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1871
1874
1872 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1875 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1873 attributes in wildcard searches for subclasses. Modified version
1876 attributes in wildcard searches for subclasses. Modified version
1874 of a patch by Jorgen.
1877 of a patch by Jorgen.
1875
1878
1876 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1879 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1877
1880
1878 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1881 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1879 embedded instances. I added a user_global_ns attribute to the
1882 embedded instances. I added a user_global_ns attribute to the
1880 InteractiveShell class to handle this.
1883 InteractiveShell class to handle this.
1881
1884
1882 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1885 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1883
1886
1884 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1887 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1885 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1888 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1886 (reported under win32, but may happen also in other platforms).
1889 (reported under win32, but may happen also in other platforms).
1887 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1890 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1888
1891
1889 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1892 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1890
1893
1891 * IPython/Magic.py (magic_psearch): new support for wildcard
1894 * IPython/Magic.py (magic_psearch): new support for wildcard
1892 patterns. Now, typing ?a*b will list all names which begin with a
1895 patterns. Now, typing ?a*b will list all names which begin with a
1893 and end in b, for example. The %psearch magic has full
1896 and end in b, for example. The %psearch magic has full
1894 docstrings. Many thanks to JΓΆrgen Stenarson
1897 docstrings. Many thanks to JΓΆrgen Stenarson
1895 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1898 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1896 implementing this functionality.
1899 implementing this functionality.
1897
1900
1898 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1901 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1899
1902
1900 * Manual: fixed long-standing annoyance of double-dashes (as in
1903 * Manual: fixed long-standing annoyance of double-dashes (as in
1901 --prefix=~, for example) being stripped in the HTML version. This
1904 --prefix=~, for example) being stripped in the HTML version. This
1902 is a latex2html bug, but a workaround was provided. Many thanks
1905 is a latex2html bug, but a workaround was provided. Many thanks
1903 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1906 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1904 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1907 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1905 rolling. This seemingly small issue had tripped a number of users
1908 rolling. This seemingly small issue had tripped a number of users
1906 when first installing, so I'm glad to see it gone.
1909 when first installing, so I'm glad to see it gone.
1907
1910
1908 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1911 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1909
1912
1910 * IPython/Extensions/numeric_formats.py: fix missing import,
1913 * IPython/Extensions/numeric_formats.py: fix missing import,
1911 reported by Stephen Walton.
1914 reported by Stephen Walton.
1912
1915
1913 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1916 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1914
1917
1915 * IPython/demo.py: finish demo module, fully documented now.
1918 * IPython/demo.py: finish demo module, fully documented now.
1916
1919
1917 * IPython/genutils.py (file_read): simple little utility to read a
1920 * IPython/genutils.py (file_read): simple little utility to read a
1918 file and ensure it's closed afterwards.
1921 file and ensure it's closed afterwards.
1919
1922
1920 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1923 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1921
1924
1922 * IPython/demo.py (Demo.__init__): added support for individually
1925 * IPython/demo.py (Demo.__init__): added support for individually
1923 tagging blocks for automatic execution.
1926 tagging blocks for automatic execution.
1924
1927
1925 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1928 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1926 syntax-highlighted python sources, requested by John.
1929 syntax-highlighted python sources, requested by John.
1927
1930
1928 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1931 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1929
1932
1930 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1933 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1931 finishing.
1934 finishing.
1932
1935
1933 * IPython/genutils.py (shlex_split): moved from Magic to here,
1936 * IPython/genutils.py (shlex_split): moved from Magic to here,
1934 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1937 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1935
1938
1936 * IPython/demo.py (Demo.__init__): added support for silent
1939 * IPython/demo.py (Demo.__init__): added support for silent
1937 blocks, improved marks as regexps, docstrings written.
1940 blocks, improved marks as regexps, docstrings written.
1938 (Demo.__init__): better docstring, added support for sys.argv.
1941 (Demo.__init__): better docstring, added support for sys.argv.
1939
1942
1940 * IPython/genutils.py (marquee): little utility used by the demo
1943 * IPython/genutils.py (marquee): little utility used by the demo
1941 code, handy in general.
1944 code, handy in general.
1942
1945
1943 * IPython/demo.py (Demo.__init__): new class for interactive
1946 * IPython/demo.py (Demo.__init__): new class for interactive
1944 demos. Not documented yet, I just wrote it in a hurry for
1947 demos. Not documented yet, I just wrote it in a hurry for
1945 scipy'05. Will docstring later.
1948 scipy'05. Will docstring later.
1946
1949
1947 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1950 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1948
1951
1949 * IPython/Shell.py (sigint_handler): Drastic simplification which
1952 * IPython/Shell.py (sigint_handler): Drastic simplification which
1950 also seems to make Ctrl-C work correctly across threads! This is
1953 also seems to make Ctrl-C work correctly across threads! This is
1951 so simple, that I can't beleive I'd missed it before. Needs more
1954 so simple, that I can't beleive I'd missed it before. Needs more
1952 testing, though.
1955 testing, though.
1953 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1956 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1954 like this before...
1957 like this before...
1955
1958
1956 * IPython/genutils.py (get_home_dir): add protection against
1959 * IPython/genutils.py (get_home_dir): add protection against
1957 non-dirs in win32 registry.
1960 non-dirs in win32 registry.
1958
1961
1959 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1962 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1960 bug where dict was mutated while iterating (pysh crash).
1963 bug where dict was mutated while iterating (pysh crash).
1961
1964
1962 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1965 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1963
1966
1964 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1967 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1965 spurious newlines added by this routine. After a report by
1968 spurious newlines added by this routine. After a report by
1966 F. Mantegazza.
1969 F. Mantegazza.
1967
1970
1968 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1971 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1969
1972
1970 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1973 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1971 calls. These were a leftover from the GTK 1.x days, and can cause
1974 calls. These were a leftover from the GTK 1.x days, and can cause
1972 problems in certain cases (after a report by John Hunter).
1975 problems in certain cases (after a report by John Hunter).
1973
1976
1974 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1977 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1975 os.getcwd() fails at init time. Thanks to patch from David Remahl
1978 os.getcwd() fails at init time. Thanks to patch from David Remahl
1976 <chmod007-AT-mac.com>.
1979 <chmod007-AT-mac.com>.
1977 (InteractiveShell.__init__): prevent certain special magics from
1980 (InteractiveShell.__init__): prevent certain special magics from
1978 being shadowed by aliases. Closes
1981 being shadowed by aliases. Closes
1979 http://www.scipy.net/roundup/ipython/issue41.
1982 http://www.scipy.net/roundup/ipython/issue41.
1980
1983
1981 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1984 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1982
1985
1983 * IPython/iplib.py (InteractiveShell.complete): Added new
1986 * IPython/iplib.py (InteractiveShell.complete): Added new
1984 top-level completion method to expose the completion mechanism
1987 top-level completion method to expose the completion mechanism
1985 beyond readline-based environments.
1988 beyond readline-based environments.
1986
1989
1987 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1990 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1988
1991
1989 * tools/ipsvnc (svnversion): fix svnversion capture.
1992 * tools/ipsvnc (svnversion): fix svnversion capture.
1990
1993
1991 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1994 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1992 attribute to self, which was missing. Before, it was set by a
1995 attribute to self, which was missing. Before, it was set by a
1993 routine which in certain cases wasn't being called, so the
1996 routine which in certain cases wasn't being called, so the
1994 instance could end up missing the attribute. This caused a crash.
1997 instance could end up missing the attribute. This caused a crash.
1995 Closes http://www.scipy.net/roundup/ipython/issue40.
1998 Closes http://www.scipy.net/roundup/ipython/issue40.
1996
1999
1997 2005-08-16 Fernando Perez <fperez@colorado.edu>
2000 2005-08-16 Fernando Perez <fperez@colorado.edu>
1998
2001
1999 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2002 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2000 contains non-string attribute. Closes
2003 contains non-string attribute. Closes
2001 http://www.scipy.net/roundup/ipython/issue38.
2004 http://www.scipy.net/roundup/ipython/issue38.
2002
2005
2003 2005-08-14 Fernando Perez <fperez@colorado.edu>
2006 2005-08-14 Fernando Perez <fperez@colorado.edu>
2004
2007
2005 * tools/ipsvnc: Minor improvements, to add changeset info.
2008 * tools/ipsvnc: Minor improvements, to add changeset info.
2006
2009
2007 2005-08-12 Fernando Perez <fperez@colorado.edu>
2010 2005-08-12 Fernando Perez <fperez@colorado.edu>
2008
2011
2009 * IPython/iplib.py (runsource): remove self.code_to_run_src
2012 * IPython/iplib.py (runsource): remove self.code_to_run_src
2010 attribute. I realized this is nothing more than
2013 attribute. I realized this is nothing more than
2011 '\n'.join(self.buffer), and having the same data in two different
2014 '\n'.join(self.buffer), and having the same data in two different
2012 places is just asking for synchronization bugs. This may impact
2015 places is just asking for synchronization bugs. This may impact
2013 people who have custom exception handlers, so I need to warn
2016 people who have custom exception handlers, so I need to warn
2014 ipython-dev about it (F. Mantegazza may use them).
2017 ipython-dev about it (F. Mantegazza may use them).
2015
2018
2016 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2019 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2017
2020
2018 * IPython/genutils.py: fix 2.2 compatibility (generators)
2021 * IPython/genutils.py: fix 2.2 compatibility (generators)
2019
2022
2020 2005-07-18 Fernando Perez <fperez@colorado.edu>
2023 2005-07-18 Fernando Perez <fperez@colorado.edu>
2021
2024
2022 * IPython/genutils.py (get_home_dir): fix to help users with
2025 * IPython/genutils.py (get_home_dir): fix to help users with
2023 invalid $HOME under win32.
2026 invalid $HOME under win32.
2024
2027
2025 2005-07-17 Fernando Perez <fperez@colorado.edu>
2028 2005-07-17 Fernando Perez <fperez@colorado.edu>
2026
2029
2027 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2030 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2028 some old hacks and clean up a bit other routines; code should be
2031 some old hacks and clean up a bit other routines; code should be
2029 simpler and a bit faster.
2032 simpler and a bit faster.
2030
2033
2031 * IPython/iplib.py (interact): removed some last-resort attempts
2034 * IPython/iplib.py (interact): removed some last-resort attempts
2032 to survive broken stdout/stderr. That code was only making it
2035 to survive broken stdout/stderr. That code was only making it
2033 harder to abstract out the i/o (necessary for gui integration),
2036 harder to abstract out the i/o (necessary for gui integration),
2034 and the crashes it could prevent were extremely rare in practice
2037 and the crashes it could prevent were extremely rare in practice
2035 (besides being fully user-induced in a pretty violent manner).
2038 (besides being fully user-induced in a pretty violent manner).
2036
2039
2037 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2040 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2038 Nothing major yet, but the code is simpler to read; this should
2041 Nothing major yet, but the code is simpler to read; this should
2039 make it easier to do more serious modifications in the future.
2042 make it easier to do more serious modifications in the future.
2040
2043
2041 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2044 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2042 which broke in .15 (thanks to a report by Ville).
2045 which broke in .15 (thanks to a report by Ville).
2043
2046
2044 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2047 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2045 be quite correct, I know next to nothing about unicode). This
2048 be quite correct, I know next to nothing about unicode). This
2046 will allow unicode strings to be used in prompts, amongst other
2049 will allow unicode strings to be used in prompts, amongst other
2047 cases. It also will prevent ipython from crashing when unicode
2050 cases. It also will prevent ipython from crashing when unicode
2048 shows up unexpectedly in many places. If ascii encoding fails, we
2051 shows up unexpectedly in many places. If ascii encoding fails, we
2049 assume utf_8. Currently the encoding is not a user-visible
2052 assume utf_8. Currently the encoding is not a user-visible
2050 setting, though it could be made so if there is demand for it.
2053 setting, though it could be made so if there is demand for it.
2051
2054
2052 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2055 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2053
2056
2054 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2057 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2055
2058
2056 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2059 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2057
2060
2058 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2061 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2059 code can work transparently for 2.2/2.3.
2062 code can work transparently for 2.2/2.3.
2060
2063
2061 2005-07-16 Fernando Perez <fperez@colorado.edu>
2064 2005-07-16 Fernando Perez <fperez@colorado.edu>
2062
2065
2063 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2066 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2064 out of the color scheme table used for coloring exception
2067 out of the color scheme table used for coloring exception
2065 tracebacks. This allows user code to add new schemes at runtime.
2068 tracebacks. This allows user code to add new schemes at runtime.
2066 This is a minimally modified version of the patch at
2069 This is a minimally modified version of the patch at
2067 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2070 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2068 for the contribution.
2071 for the contribution.
2069
2072
2070 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2073 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2071 slightly modified version of the patch in
2074 slightly modified version of the patch in
2072 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2075 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2073 to remove the previous try/except solution (which was costlier).
2076 to remove the previous try/except solution (which was costlier).
2074 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2077 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2075
2078
2076 2005-06-08 Fernando Perez <fperez@colorado.edu>
2079 2005-06-08 Fernando Perez <fperez@colorado.edu>
2077
2080
2078 * IPython/iplib.py (write/write_err): Add methods to abstract all
2081 * IPython/iplib.py (write/write_err): Add methods to abstract all
2079 I/O a bit more.
2082 I/O a bit more.
2080
2083
2081 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2084 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2082 warning, reported by Aric Hagberg, fix by JD Hunter.
2085 warning, reported by Aric Hagberg, fix by JD Hunter.
2083
2086
2084 2005-06-02 *** Released version 0.6.15
2087 2005-06-02 *** Released version 0.6.15
2085
2088
2086 2005-06-01 Fernando Perez <fperez@colorado.edu>
2089 2005-06-01 Fernando Perez <fperez@colorado.edu>
2087
2090
2088 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2091 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2089 tab-completion of filenames within open-quoted strings. Note that
2092 tab-completion of filenames within open-quoted strings. Note that
2090 this requires that in ~/.ipython/ipythonrc, users change the
2093 this requires that in ~/.ipython/ipythonrc, users change the
2091 readline delimiters configuration to read:
2094 readline delimiters configuration to read:
2092
2095
2093 readline_remove_delims -/~
2096 readline_remove_delims -/~
2094
2097
2095
2098
2096 2005-05-31 *** Released version 0.6.14
2099 2005-05-31 *** Released version 0.6.14
2097
2100
2098 2005-05-29 Fernando Perez <fperez@colorado.edu>
2101 2005-05-29 Fernando Perez <fperez@colorado.edu>
2099
2102
2100 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2103 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2101 with files not on the filesystem. Reported by Eliyahu Sandler
2104 with files not on the filesystem. Reported by Eliyahu Sandler
2102 <eli@gondolin.net>
2105 <eli@gondolin.net>
2103
2106
2104 2005-05-22 Fernando Perez <fperez@colorado.edu>
2107 2005-05-22 Fernando Perez <fperez@colorado.edu>
2105
2108
2106 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2109 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2107 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2110 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2108
2111
2109 2005-05-19 Fernando Perez <fperez@colorado.edu>
2112 2005-05-19 Fernando Perez <fperez@colorado.edu>
2110
2113
2111 * IPython/iplib.py (safe_execfile): close a file which could be
2114 * IPython/iplib.py (safe_execfile): close a file which could be
2112 left open (causing problems in win32, which locks open files).
2115 left open (causing problems in win32, which locks open files).
2113 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2116 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2114
2117
2115 2005-05-18 Fernando Perez <fperez@colorado.edu>
2118 2005-05-18 Fernando Perez <fperez@colorado.edu>
2116
2119
2117 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2120 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2118 keyword arguments correctly to safe_execfile().
2121 keyword arguments correctly to safe_execfile().
2119
2122
2120 2005-05-13 Fernando Perez <fperez@colorado.edu>
2123 2005-05-13 Fernando Perez <fperez@colorado.edu>
2121
2124
2122 * ipython.1: Added info about Qt to manpage, and threads warning
2125 * ipython.1: Added info about Qt to manpage, and threads warning
2123 to usage page (invoked with --help).
2126 to usage page (invoked with --help).
2124
2127
2125 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2128 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2126 new matcher (it goes at the end of the priority list) to do
2129 new matcher (it goes at the end of the priority list) to do
2127 tab-completion on named function arguments. Submitted by George
2130 tab-completion on named function arguments. Submitted by George
2128 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2131 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2129 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2132 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2130 for more details.
2133 for more details.
2131
2134
2132 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2135 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2133 SystemExit exceptions in the script being run. Thanks to a report
2136 SystemExit exceptions in the script being run. Thanks to a report
2134 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2137 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2135 producing very annoying behavior when running unit tests.
2138 producing very annoying behavior when running unit tests.
2136
2139
2137 2005-05-12 Fernando Perez <fperez@colorado.edu>
2140 2005-05-12 Fernando Perez <fperez@colorado.edu>
2138
2141
2139 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2142 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2140 which I'd broken (again) due to a changed regexp. In the process,
2143 which I'd broken (again) due to a changed regexp. In the process,
2141 added ';' as an escape to auto-quote the whole line without
2144 added ';' as an escape to auto-quote the whole line without
2142 splitting its arguments. Thanks to a report by Jerry McRae
2145 splitting its arguments. Thanks to a report by Jerry McRae
2143 <qrs0xyc02-AT-sneakemail.com>.
2146 <qrs0xyc02-AT-sneakemail.com>.
2144
2147
2145 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2148 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2146 possible crashes caused by a TokenError. Reported by Ed Schofield
2149 possible crashes caused by a TokenError. Reported by Ed Schofield
2147 <schofield-AT-ftw.at>.
2150 <schofield-AT-ftw.at>.
2148
2151
2149 2005-05-06 Fernando Perez <fperez@colorado.edu>
2152 2005-05-06 Fernando Perez <fperez@colorado.edu>
2150
2153
2151 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2154 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2152
2155
2153 2005-04-29 Fernando Perez <fperez@colorado.edu>
2156 2005-04-29 Fernando Perez <fperez@colorado.edu>
2154
2157
2155 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2158 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2156 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2159 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2157 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2160 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2158 which provides support for Qt interactive usage (similar to the
2161 which provides support for Qt interactive usage (similar to the
2159 existing one for WX and GTK). This had been often requested.
2162 existing one for WX and GTK). This had been often requested.
2160
2163
2161 2005-04-14 *** Released version 0.6.13
2164 2005-04-14 *** Released version 0.6.13
2162
2165
2163 2005-04-08 Fernando Perez <fperez@colorado.edu>
2166 2005-04-08 Fernando Perez <fperez@colorado.edu>
2164
2167
2165 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2168 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2166 from _ofind, which gets called on almost every input line. Now,
2169 from _ofind, which gets called on almost every input line. Now,
2167 we only try to get docstrings if they are actually going to be
2170 we only try to get docstrings if they are actually going to be
2168 used (the overhead of fetching unnecessary docstrings can be
2171 used (the overhead of fetching unnecessary docstrings can be
2169 noticeable for certain objects, such as Pyro proxies).
2172 noticeable for certain objects, such as Pyro proxies).
2170
2173
2171 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2174 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2172 for completers. For some reason I had been passing them the state
2175 for completers. For some reason I had been passing them the state
2173 variable, which completers never actually need, and was in
2176 variable, which completers never actually need, and was in
2174 conflict with the rlcompleter API. Custom completers ONLY need to
2177 conflict with the rlcompleter API. Custom completers ONLY need to
2175 take the text parameter.
2178 take the text parameter.
2176
2179
2177 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2180 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2178 work correctly in pysh. I've also moved all the logic which used
2181 work correctly in pysh. I've also moved all the logic which used
2179 to be in pysh.py here, which will prevent problems with future
2182 to be in pysh.py here, which will prevent problems with future
2180 upgrades. However, this time I must warn users to update their
2183 upgrades. However, this time I must warn users to update their
2181 pysh profile to include the line
2184 pysh profile to include the line
2182
2185
2183 import_all IPython.Extensions.InterpreterExec
2186 import_all IPython.Extensions.InterpreterExec
2184
2187
2185 because otherwise things won't work for them. They MUST also
2188 because otherwise things won't work for them. They MUST also
2186 delete pysh.py and the line
2189 delete pysh.py and the line
2187
2190
2188 execfile pysh.py
2191 execfile pysh.py
2189
2192
2190 from their ipythonrc-pysh.
2193 from their ipythonrc-pysh.
2191
2194
2192 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2195 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2193 robust in the face of objects whose dir() returns non-strings
2196 robust in the face of objects whose dir() returns non-strings
2194 (which it shouldn't, but some broken libs like ITK do). Thanks to
2197 (which it shouldn't, but some broken libs like ITK do). Thanks to
2195 a patch by John Hunter (implemented differently, though). Also
2198 a patch by John Hunter (implemented differently, though). Also
2196 minor improvements by using .extend instead of + on lists.
2199 minor improvements by using .extend instead of + on lists.
2197
2200
2198 * pysh.py:
2201 * pysh.py:
2199
2202
2200 2005-04-06 Fernando Perez <fperez@colorado.edu>
2203 2005-04-06 Fernando Perez <fperez@colorado.edu>
2201
2204
2202 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2205 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2203 by default, so that all users benefit from it. Those who don't
2206 by default, so that all users benefit from it. Those who don't
2204 want it can still turn it off.
2207 want it can still turn it off.
2205
2208
2206 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2209 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2207 config file, I'd forgotten about this, so users were getting it
2210 config file, I'd forgotten about this, so users were getting it
2208 off by default.
2211 off by default.
2209
2212
2210 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2213 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2211 consistency. Now magics can be called in multiline statements,
2214 consistency. Now magics can be called in multiline statements,
2212 and python variables can be expanded in magic calls via $var.
2215 and python variables can be expanded in magic calls via $var.
2213 This makes the magic system behave just like aliases or !system
2216 This makes the magic system behave just like aliases or !system
2214 calls.
2217 calls.
2215
2218
2216 2005-03-28 Fernando Perez <fperez@colorado.edu>
2219 2005-03-28 Fernando Perez <fperez@colorado.edu>
2217
2220
2218 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2221 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2219 expensive string additions for building command. Add support for
2222 expensive string additions for building command. Add support for
2220 trailing ';' when autocall is used.
2223 trailing ';' when autocall is used.
2221
2224
2222 2005-03-26 Fernando Perez <fperez@colorado.edu>
2225 2005-03-26 Fernando Perez <fperez@colorado.edu>
2223
2226
2224 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2227 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2225 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2228 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2226 ipython.el robust against prompts with any number of spaces
2229 ipython.el robust against prompts with any number of spaces
2227 (including 0) after the ':' character.
2230 (including 0) after the ':' character.
2228
2231
2229 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2232 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2230 continuation prompt, which misled users to think the line was
2233 continuation prompt, which misled users to think the line was
2231 already indented. Closes debian Bug#300847, reported to me by
2234 already indented. Closes debian Bug#300847, reported to me by
2232 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2235 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2233
2236
2234 2005-03-23 Fernando Perez <fperez@colorado.edu>
2237 2005-03-23 Fernando Perez <fperez@colorado.edu>
2235
2238
2236 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2239 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2237 properly aligned if they have embedded newlines.
2240 properly aligned if they have embedded newlines.
2238
2241
2239 * IPython/iplib.py (runlines): Add a public method to expose
2242 * IPython/iplib.py (runlines): Add a public method to expose
2240 IPython's code execution machinery, so that users can run strings
2243 IPython's code execution machinery, so that users can run strings
2241 as if they had been typed at the prompt interactively.
2244 as if they had been typed at the prompt interactively.
2242 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2245 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2243 methods which can call the system shell, but with python variable
2246 methods which can call the system shell, but with python variable
2244 expansion. The three such methods are: __IPYTHON__.system,
2247 expansion. The three such methods are: __IPYTHON__.system,
2245 .getoutput and .getoutputerror. These need to be documented in a
2248 .getoutput and .getoutputerror. These need to be documented in a
2246 'public API' section (to be written) of the manual.
2249 'public API' section (to be written) of the manual.
2247
2250
2248 2005-03-20 Fernando Perez <fperez@colorado.edu>
2251 2005-03-20 Fernando Perez <fperez@colorado.edu>
2249
2252
2250 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2253 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2251 for custom exception handling. This is quite powerful, and it
2254 for custom exception handling. This is quite powerful, and it
2252 allows for user-installable exception handlers which can trap
2255 allows for user-installable exception handlers which can trap
2253 custom exceptions at runtime and treat them separately from
2256 custom exceptions at runtime and treat them separately from
2254 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2257 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2255 Mantegazza <mantegazza-AT-ill.fr>.
2258 Mantegazza <mantegazza-AT-ill.fr>.
2256 (InteractiveShell.set_custom_completer): public API function to
2259 (InteractiveShell.set_custom_completer): public API function to
2257 add new completers at runtime.
2260 add new completers at runtime.
2258
2261
2259 2005-03-19 Fernando Perez <fperez@colorado.edu>
2262 2005-03-19 Fernando Perez <fperez@colorado.edu>
2260
2263
2261 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2264 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2262 allow objects which provide their docstrings via non-standard
2265 allow objects which provide their docstrings via non-standard
2263 mechanisms (like Pyro proxies) to still be inspected by ipython's
2266 mechanisms (like Pyro proxies) to still be inspected by ipython's
2264 ? system.
2267 ? system.
2265
2268
2266 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2269 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2267 automatic capture system. I tried quite hard to make it work
2270 automatic capture system. I tried quite hard to make it work
2268 reliably, and simply failed. I tried many combinations with the
2271 reliably, and simply failed. I tried many combinations with the
2269 subprocess module, but eventually nothing worked in all needed
2272 subprocess module, but eventually nothing worked in all needed
2270 cases (not blocking stdin for the child, duplicating stdout
2273 cases (not blocking stdin for the child, duplicating stdout
2271 without blocking, etc). The new %sc/%sx still do capture to these
2274 without blocking, etc). The new %sc/%sx still do capture to these
2272 magical list/string objects which make shell use much more
2275 magical list/string objects which make shell use much more
2273 conveninent, so not all is lost.
2276 conveninent, so not all is lost.
2274
2277
2275 XXX - FIX MANUAL for the change above!
2278 XXX - FIX MANUAL for the change above!
2276
2279
2277 (runsource): I copied code.py's runsource() into ipython to modify
2280 (runsource): I copied code.py's runsource() into ipython to modify
2278 it a bit. Now the code object and source to be executed are
2281 it a bit. Now the code object and source to be executed are
2279 stored in ipython. This makes this info accessible to third-party
2282 stored in ipython. This makes this info accessible to third-party
2280 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2283 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2281 Mantegazza <mantegazza-AT-ill.fr>.
2284 Mantegazza <mantegazza-AT-ill.fr>.
2282
2285
2283 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2286 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2284 history-search via readline (like C-p/C-n). I'd wanted this for a
2287 history-search via readline (like C-p/C-n). I'd wanted this for a
2285 long time, but only recently found out how to do it. For users
2288 long time, but only recently found out how to do it. For users
2286 who already have their ipythonrc files made and want this, just
2289 who already have their ipythonrc files made and want this, just
2287 add:
2290 add:
2288
2291
2289 readline_parse_and_bind "\e[A": history-search-backward
2292 readline_parse_and_bind "\e[A": history-search-backward
2290 readline_parse_and_bind "\e[B": history-search-forward
2293 readline_parse_and_bind "\e[B": history-search-forward
2291
2294
2292 2005-03-18 Fernando Perez <fperez@colorado.edu>
2295 2005-03-18 Fernando Perez <fperez@colorado.edu>
2293
2296
2294 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2297 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2295 LSString and SList classes which allow transparent conversions
2298 LSString and SList classes which allow transparent conversions
2296 between list mode and whitespace-separated string.
2299 between list mode and whitespace-separated string.
2297 (magic_r): Fix recursion problem in %r.
2300 (magic_r): Fix recursion problem in %r.
2298
2301
2299 * IPython/genutils.py (LSString): New class to be used for
2302 * IPython/genutils.py (LSString): New class to be used for
2300 automatic storage of the results of all alias/system calls in _o
2303 automatic storage of the results of all alias/system calls in _o
2301 and _e (stdout/err). These provide a .l/.list attribute which
2304 and _e (stdout/err). These provide a .l/.list attribute which
2302 does automatic splitting on newlines. This means that for most
2305 does automatic splitting on newlines. This means that for most
2303 uses, you'll never need to do capturing of output with %sc/%sx
2306 uses, you'll never need to do capturing of output with %sc/%sx
2304 anymore, since ipython keeps this always done for you. Note that
2307 anymore, since ipython keeps this always done for you. Note that
2305 only the LAST results are stored, the _o/e variables are
2308 only the LAST results are stored, the _o/e variables are
2306 overwritten on each call. If you need to save their contents
2309 overwritten on each call. If you need to save their contents
2307 further, simply bind them to any other name.
2310 further, simply bind them to any other name.
2308
2311
2309 2005-03-17 Fernando Perez <fperez@colorado.edu>
2312 2005-03-17 Fernando Perez <fperez@colorado.edu>
2310
2313
2311 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2314 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2312 prompt namespace handling.
2315 prompt namespace handling.
2313
2316
2314 2005-03-16 Fernando Perez <fperez@colorado.edu>
2317 2005-03-16 Fernando Perez <fperez@colorado.edu>
2315
2318
2316 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2319 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2317 classic prompts to be '>>> ' (final space was missing, and it
2320 classic prompts to be '>>> ' (final space was missing, and it
2318 trips the emacs python mode).
2321 trips the emacs python mode).
2319 (BasePrompt.__str__): Added safe support for dynamic prompt
2322 (BasePrompt.__str__): Added safe support for dynamic prompt
2320 strings. Now you can set your prompt string to be '$x', and the
2323 strings. Now you can set your prompt string to be '$x', and the
2321 value of x will be printed from your interactive namespace. The
2324 value of x will be printed from your interactive namespace. The
2322 interpolation syntax includes the full Itpl support, so
2325 interpolation syntax includes the full Itpl support, so
2323 ${foo()+x+bar()} is a valid prompt string now, and the function
2326 ${foo()+x+bar()} is a valid prompt string now, and the function
2324 calls will be made at runtime.
2327 calls will be made at runtime.
2325
2328
2326 2005-03-15 Fernando Perez <fperez@colorado.edu>
2329 2005-03-15 Fernando Perez <fperez@colorado.edu>
2327
2330
2328 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2331 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2329 avoid name clashes in pylab. %hist still works, it just forwards
2332 avoid name clashes in pylab. %hist still works, it just forwards
2330 the call to %history.
2333 the call to %history.
2331
2334
2332 2005-03-02 *** Released version 0.6.12
2335 2005-03-02 *** Released version 0.6.12
2333
2336
2334 2005-03-02 Fernando Perez <fperez@colorado.edu>
2337 2005-03-02 Fernando Perez <fperez@colorado.edu>
2335
2338
2336 * IPython/iplib.py (handle_magic): log magic calls properly as
2339 * IPython/iplib.py (handle_magic): log magic calls properly as
2337 ipmagic() function calls.
2340 ipmagic() function calls.
2338
2341
2339 * IPython/Magic.py (magic_time): Improved %time to support
2342 * IPython/Magic.py (magic_time): Improved %time to support
2340 statements and provide wall-clock as well as CPU time.
2343 statements and provide wall-clock as well as CPU time.
2341
2344
2342 2005-02-27 Fernando Perez <fperez@colorado.edu>
2345 2005-02-27 Fernando Perez <fperez@colorado.edu>
2343
2346
2344 * IPython/hooks.py: New hooks module, to expose user-modifiable
2347 * IPython/hooks.py: New hooks module, to expose user-modifiable
2345 IPython functionality in a clean manner. For now only the editor
2348 IPython functionality in a clean manner. For now only the editor
2346 hook is actually written, and other thigns which I intend to turn
2349 hook is actually written, and other thigns which I intend to turn
2347 into proper hooks aren't yet there. The display and prefilter
2350 into proper hooks aren't yet there. The display and prefilter
2348 stuff, for example, should be hooks. But at least now the
2351 stuff, for example, should be hooks. But at least now the
2349 framework is in place, and the rest can be moved here with more
2352 framework is in place, and the rest can be moved here with more
2350 time later. IPython had had a .hooks variable for a long time for
2353 time later. IPython had had a .hooks variable for a long time for
2351 this purpose, but I'd never actually used it for anything.
2354 this purpose, but I'd never actually used it for anything.
2352
2355
2353 2005-02-26 Fernando Perez <fperez@colorado.edu>
2356 2005-02-26 Fernando Perez <fperez@colorado.edu>
2354
2357
2355 * IPython/ipmaker.py (make_IPython): make the default ipython
2358 * IPython/ipmaker.py (make_IPython): make the default ipython
2356 directory be called _ipython under win32, to follow more the
2359 directory be called _ipython under win32, to follow more the
2357 naming peculiarities of that platform (where buggy software like
2360 naming peculiarities of that platform (where buggy software like
2358 Visual Sourcesafe breaks with .named directories). Reported by
2361 Visual Sourcesafe breaks with .named directories). Reported by
2359 Ville Vainio.
2362 Ville Vainio.
2360
2363
2361 2005-02-23 Fernando Perez <fperez@colorado.edu>
2364 2005-02-23 Fernando Perez <fperez@colorado.edu>
2362
2365
2363 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2366 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2364 auto_aliases for win32 which were causing problems. Users can
2367 auto_aliases for win32 which were causing problems. Users can
2365 define the ones they personally like.
2368 define the ones they personally like.
2366
2369
2367 2005-02-21 Fernando Perez <fperez@colorado.edu>
2370 2005-02-21 Fernando Perez <fperez@colorado.edu>
2368
2371
2369 * IPython/Magic.py (magic_time): new magic to time execution of
2372 * IPython/Magic.py (magic_time): new magic to time execution of
2370 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2373 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2371
2374
2372 2005-02-19 Fernando Perez <fperez@colorado.edu>
2375 2005-02-19 Fernando Perez <fperez@colorado.edu>
2373
2376
2374 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2377 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2375 into keys (for prompts, for example).
2378 into keys (for prompts, for example).
2376
2379
2377 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2380 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2378 prompts in case users want them. This introduces a small behavior
2381 prompts in case users want them. This introduces a small behavior
2379 change: ipython does not automatically add a space to all prompts
2382 change: ipython does not automatically add a space to all prompts
2380 anymore. To get the old prompts with a space, users should add it
2383 anymore. To get the old prompts with a space, users should add it
2381 manually to their ipythonrc file, so for example prompt_in1 should
2384 manually to their ipythonrc file, so for example prompt_in1 should
2382 now read 'In [\#]: ' instead of 'In [\#]:'.
2385 now read 'In [\#]: ' instead of 'In [\#]:'.
2383 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2386 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2384 file) to control left-padding of secondary prompts.
2387 file) to control left-padding of secondary prompts.
2385
2388
2386 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2389 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2387 the profiler can't be imported. Fix for Debian, which removed
2390 the profiler can't be imported. Fix for Debian, which removed
2388 profile.py because of License issues. I applied a slightly
2391 profile.py because of License issues. I applied a slightly
2389 modified version of the original Debian patch at
2392 modified version of the original Debian patch at
2390 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2393 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2391
2394
2392 2005-02-17 Fernando Perez <fperez@colorado.edu>
2395 2005-02-17 Fernando Perez <fperez@colorado.edu>
2393
2396
2394 * IPython/genutils.py (native_line_ends): Fix bug which would
2397 * IPython/genutils.py (native_line_ends): Fix bug which would
2395 cause improper line-ends under win32 b/c I was not opening files
2398 cause improper line-ends under win32 b/c I was not opening files
2396 in binary mode. Bug report and fix thanks to Ville.
2399 in binary mode. Bug report and fix thanks to Ville.
2397
2400
2398 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2401 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2399 trying to catch spurious foo[1] autocalls. My fix actually broke
2402 trying to catch spurious foo[1] autocalls. My fix actually broke
2400 ',/' autoquote/call with explicit escape (bad regexp).
2403 ',/' autoquote/call with explicit escape (bad regexp).
2401
2404
2402 2005-02-15 *** Released version 0.6.11
2405 2005-02-15 *** Released version 0.6.11
2403
2406
2404 2005-02-14 Fernando Perez <fperez@colorado.edu>
2407 2005-02-14 Fernando Perez <fperez@colorado.edu>
2405
2408
2406 * IPython/background_jobs.py: New background job management
2409 * IPython/background_jobs.py: New background job management
2407 subsystem. This is implemented via a new set of classes, and
2410 subsystem. This is implemented via a new set of classes, and
2408 IPython now provides a builtin 'jobs' object for background job
2411 IPython now provides a builtin 'jobs' object for background job
2409 execution. A convenience %bg magic serves as a lightweight
2412 execution. A convenience %bg magic serves as a lightweight
2410 frontend for starting the more common type of calls. This was
2413 frontend for starting the more common type of calls. This was
2411 inspired by discussions with B. Granger and the BackgroundCommand
2414 inspired by discussions with B. Granger and the BackgroundCommand
2412 class described in the book Python Scripting for Computational
2415 class described in the book Python Scripting for Computational
2413 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2416 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2414 (although ultimately no code from this text was used, as IPython's
2417 (although ultimately no code from this text was used, as IPython's
2415 system is a separate implementation).
2418 system is a separate implementation).
2416
2419
2417 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2420 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2418 to control the completion of single/double underscore names
2421 to control the completion of single/double underscore names
2419 separately. As documented in the example ipytonrc file, the
2422 separately. As documented in the example ipytonrc file, the
2420 readline_omit__names variable can now be set to 2, to omit even
2423 readline_omit__names variable can now be set to 2, to omit even
2421 single underscore names. Thanks to a patch by Brian Wong
2424 single underscore names. Thanks to a patch by Brian Wong
2422 <BrianWong-AT-AirgoNetworks.Com>.
2425 <BrianWong-AT-AirgoNetworks.Com>.
2423 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2426 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2424 be autocalled as foo([1]) if foo were callable. A problem for
2427 be autocalled as foo([1]) if foo were callable. A problem for
2425 things which are both callable and implement __getitem__.
2428 things which are both callable and implement __getitem__.
2426 (init_readline): Fix autoindentation for win32. Thanks to a patch
2429 (init_readline): Fix autoindentation for win32. Thanks to a patch
2427 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2430 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2428
2431
2429 2005-02-12 Fernando Perez <fperez@colorado.edu>
2432 2005-02-12 Fernando Perez <fperez@colorado.edu>
2430
2433
2431 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2434 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2432 which I had written long ago to sort out user error messages which
2435 which I had written long ago to sort out user error messages which
2433 may occur during startup. This seemed like a good idea initially,
2436 may occur during startup. This seemed like a good idea initially,
2434 but it has proven a disaster in retrospect. I don't want to
2437 but it has proven a disaster in retrospect. I don't want to
2435 change much code for now, so my fix is to set the internal 'debug'
2438 change much code for now, so my fix is to set the internal 'debug'
2436 flag to true everywhere, whose only job was precisely to control
2439 flag to true everywhere, whose only job was precisely to control
2437 this subsystem. This closes issue 28 (as well as avoiding all
2440 this subsystem. This closes issue 28 (as well as avoiding all
2438 sorts of strange hangups which occur from time to time).
2441 sorts of strange hangups which occur from time to time).
2439
2442
2440 2005-02-07 Fernando Perez <fperez@colorado.edu>
2443 2005-02-07 Fernando Perez <fperez@colorado.edu>
2441
2444
2442 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2445 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2443 previous call produced a syntax error.
2446 previous call produced a syntax error.
2444
2447
2445 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2448 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2446 classes without constructor.
2449 classes without constructor.
2447
2450
2448 2005-02-06 Fernando Perez <fperez@colorado.edu>
2451 2005-02-06 Fernando Perez <fperez@colorado.edu>
2449
2452
2450 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2453 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2451 completions with the results of each matcher, so we return results
2454 completions with the results of each matcher, so we return results
2452 to the user from all namespaces. This breaks with ipython
2455 to the user from all namespaces. This breaks with ipython
2453 tradition, but I think it's a nicer behavior. Now you get all
2456 tradition, but I think it's a nicer behavior. Now you get all
2454 possible completions listed, from all possible namespaces (python,
2457 possible completions listed, from all possible namespaces (python,
2455 filesystem, magics...) After a request by John Hunter
2458 filesystem, magics...) After a request by John Hunter
2456 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2459 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2457
2460
2458 2005-02-05 Fernando Perez <fperez@colorado.edu>
2461 2005-02-05 Fernando Perez <fperez@colorado.edu>
2459
2462
2460 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2463 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2461 the call had quote characters in it (the quotes were stripped).
2464 the call had quote characters in it (the quotes were stripped).
2462
2465
2463 2005-01-31 Fernando Perez <fperez@colorado.edu>
2466 2005-01-31 Fernando Perez <fperez@colorado.edu>
2464
2467
2465 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2468 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2466 Itpl.itpl() to make the code more robust against psyco
2469 Itpl.itpl() to make the code more robust against psyco
2467 optimizations.
2470 optimizations.
2468
2471
2469 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2472 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2470 of causing an exception. Quicker, cleaner.
2473 of causing an exception. Quicker, cleaner.
2471
2474
2472 2005-01-28 Fernando Perez <fperez@colorado.edu>
2475 2005-01-28 Fernando Perez <fperez@colorado.edu>
2473
2476
2474 * scripts/ipython_win_post_install.py (install): hardcode
2477 * scripts/ipython_win_post_install.py (install): hardcode
2475 sys.prefix+'python.exe' as the executable path. It turns out that
2478 sys.prefix+'python.exe' as the executable path. It turns out that
2476 during the post-installation run, sys.executable resolves to the
2479 during the post-installation run, sys.executable resolves to the
2477 name of the binary installer! I should report this as a distutils
2480 name of the binary installer! I should report this as a distutils
2478 bug, I think. I updated the .10 release with this tiny fix, to
2481 bug, I think. I updated the .10 release with this tiny fix, to
2479 avoid annoying the lists further.
2482 avoid annoying the lists further.
2480
2483
2481 2005-01-27 *** Released version 0.6.10
2484 2005-01-27 *** Released version 0.6.10
2482
2485
2483 2005-01-27 Fernando Perez <fperez@colorado.edu>
2486 2005-01-27 Fernando Perez <fperez@colorado.edu>
2484
2487
2485 * IPython/numutils.py (norm): Added 'inf' as optional name for
2488 * IPython/numutils.py (norm): Added 'inf' as optional name for
2486 L-infinity norm, included references to mathworld.com for vector
2489 L-infinity norm, included references to mathworld.com for vector
2487 norm definitions.
2490 norm definitions.
2488 (amin/amax): added amin/amax for array min/max. Similar to what
2491 (amin/amax): added amin/amax for array min/max. Similar to what
2489 pylab ships with after the recent reorganization of names.
2492 pylab ships with after the recent reorganization of names.
2490 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2493 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2491
2494
2492 * ipython.el: committed Alex's recent fixes and improvements.
2495 * ipython.el: committed Alex's recent fixes and improvements.
2493 Tested with python-mode from CVS, and it looks excellent. Since
2496 Tested with python-mode from CVS, and it looks excellent. Since
2494 python-mode hasn't released anything in a while, I'm temporarily
2497 python-mode hasn't released anything in a while, I'm temporarily
2495 putting a copy of today's CVS (v 4.70) of python-mode in:
2498 putting a copy of today's CVS (v 4.70) of python-mode in:
2496 http://ipython.scipy.org/tmp/python-mode.el
2499 http://ipython.scipy.org/tmp/python-mode.el
2497
2500
2498 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2501 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2499 sys.executable for the executable name, instead of assuming it's
2502 sys.executable for the executable name, instead of assuming it's
2500 called 'python.exe' (the post-installer would have produced broken
2503 called 'python.exe' (the post-installer would have produced broken
2501 setups on systems with a differently named python binary).
2504 setups on systems with a differently named python binary).
2502
2505
2503 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2506 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2504 references to os.linesep, to make the code more
2507 references to os.linesep, to make the code more
2505 platform-independent. This is also part of the win32 coloring
2508 platform-independent. This is also part of the win32 coloring
2506 fixes.
2509 fixes.
2507
2510
2508 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2511 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2509 lines, which actually cause coloring bugs because the length of
2512 lines, which actually cause coloring bugs because the length of
2510 the line is very difficult to correctly compute with embedded
2513 the line is very difficult to correctly compute with embedded
2511 escapes. This was the source of all the coloring problems under
2514 escapes. This was the source of all the coloring problems under
2512 Win32. I think that _finally_, Win32 users have a properly
2515 Win32. I think that _finally_, Win32 users have a properly
2513 working ipython in all respects. This would never have happened
2516 working ipython in all respects. This would never have happened
2514 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2517 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2515
2518
2516 2005-01-26 *** Released version 0.6.9
2519 2005-01-26 *** Released version 0.6.9
2517
2520
2518 2005-01-25 Fernando Perez <fperez@colorado.edu>
2521 2005-01-25 Fernando Perez <fperez@colorado.edu>
2519
2522
2520 * setup.py: finally, we have a true Windows installer, thanks to
2523 * setup.py: finally, we have a true Windows installer, thanks to
2521 the excellent work of Viktor Ransmayr
2524 the excellent work of Viktor Ransmayr
2522 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2525 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2523 Windows users. The setup routine is quite a bit cleaner thanks to
2526 Windows users. The setup routine is quite a bit cleaner thanks to
2524 this, and the post-install script uses the proper functions to
2527 this, and the post-install script uses the proper functions to
2525 allow a clean de-installation using the standard Windows Control
2528 allow a clean de-installation using the standard Windows Control
2526 Panel.
2529 Panel.
2527
2530
2528 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2531 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2529 environment variable under all OSes (including win32) if
2532 environment variable under all OSes (including win32) if
2530 available. This will give consistency to win32 users who have set
2533 available. This will give consistency to win32 users who have set
2531 this variable for any reason. If os.environ['HOME'] fails, the
2534 this variable for any reason. If os.environ['HOME'] fails, the
2532 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2535 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2533
2536
2534 2005-01-24 Fernando Perez <fperez@colorado.edu>
2537 2005-01-24 Fernando Perez <fperez@colorado.edu>
2535
2538
2536 * IPython/numutils.py (empty_like): add empty_like(), similar to
2539 * IPython/numutils.py (empty_like): add empty_like(), similar to
2537 zeros_like() but taking advantage of the new empty() Numeric routine.
2540 zeros_like() but taking advantage of the new empty() Numeric routine.
2538
2541
2539 2005-01-23 *** Released version 0.6.8
2542 2005-01-23 *** Released version 0.6.8
2540
2543
2541 2005-01-22 Fernando Perez <fperez@colorado.edu>
2544 2005-01-22 Fernando Perez <fperez@colorado.edu>
2542
2545
2543 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2546 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2544 automatic show() calls. After discussing things with JDH, it
2547 automatic show() calls. After discussing things with JDH, it
2545 turns out there are too many corner cases where this can go wrong.
2548 turns out there are too many corner cases where this can go wrong.
2546 It's best not to try to be 'too smart', and simply have ipython
2549 It's best not to try to be 'too smart', and simply have ipython
2547 reproduce as much as possible the default behavior of a normal
2550 reproduce as much as possible the default behavior of a normal
2548 python shell.
2551 python shell.
2549
2552
2550 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2553 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2551 line-splitting regexp and _prefilter() to avoid calling getattr()
2554 line-splitting regexp and _prefilter() to avoid calling getattr()
2552 on assignments. This closes
2555 on assignments. This closes
2553 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2556 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2554 readline uses getattr(), so a simple <TAB> keypress is still
2557 readline uses getattr(), so a simple <TAB> keypress is still
2555 enough to trigger getattr() calls on an object.
2558 enough to trigger getattr() calls on an object.
2556
2559
2557 2005-01-21 Fernando Perez <fperez@colorado.edu>
2560 2005-01-21 Fernando Perez <fperez@colorado.edu>
2558
2561
2559 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2562 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2560 docstring under pylab so it doesn't mask the original.
2563 docstring under pylab so it doesn't mask the original.
2561
2564
2562 2005-01-21 *** Released version 0.6.7
2565 2005-01-21 *** Released version 0.6.7
2563
2566
2564 2005-01-21 Fernando Perez <fperez@colorado.edu>
2567 2005-01-21 Fernando Perez <fperez@colorado.edu>
2565
2568
2566 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2569 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2567 signal handling for win32 users in multithreaded mode.
2570 signal handling for win32 users in multithreaded mode.
2568
2571
2569 2005-01-17 Fernando Perez <fperez@colorado.edu>
2572 2005-01-17 Fernando Perez <fperez@colorado.edu>
2570
2573
2571 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2574 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2572 instances with no __init__. After a crash report by Norbert Nemec
2575 instances with no __init__. After a crash report by Norbert Nemec
2573 <Norbert-AT-nemec-online.de>.
2576 <Norbert-AT-nemec-online.de>.
2574
2577
2575 2005-01-14 Fernando Perez <fperez@colorado.edu>
2578 2005-01-14 Fernando Perez <fperez@colorado.edu>
2576
2579
2577 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2580 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2578 names for verbose exceptions, when multiple dotted names and the
2581 names for verbose exceptions, when multiple dotted names and the
2579 'parent' object were present on the same line.
2582 'parent' object were present on the same line.
2580
2583
2581 2005-01-11 Fernando Perez <fperez@colorado.edu>
2584 2005-01-11 Fernando Perez <fperez@colorado.edu>
2582
2585
2583 * IPython/genutils.py (flag_calls): new utility to trap and flag
2586 * IPython/genutils.py (flag_calls): new utility to trap and flag
2584 calls in functions. I need it to clean up matplotlib support.
2587 calls in functions. I need it to clean up matplotlib support.
2585 Also removed some deprecated code in genutils.
2588 Also removed some deprecated code in genutils.
2586
2589
2587 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2590 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2588 that matplotlib scripts called with %run, which don't call show()
2591 that matplotlib scripts called with %run, which don't call show()
2589 themselves, still have their plotting windows open.
2592 themselves, still have their plotting windows open.
2590
2593
2591 2005-01-05 Fernando Perez <fperez@colorado.edu>
2594 2005-01-05 Fernando Perez <fperez@colorado.edu>
2592
2595
2593 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2596 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2594 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2597 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2595
2598
2596 2004-12-19 Fernando Perez <fperez@colorado.edu>
2599 2004-12-19 Fernando Perez <fperez@colorado.edu>
2597
2600
2598 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2601 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2599 parent_runcode, which was an eyesore. The same result can be
2602 parent_runcode, which was an eyesore. The same result can be
2600 obtained with Python's regular superclass mechanisms.
2603 obtained with Python's regular superclass mechanisms.
2601
2604
2602 2004-12-17 Fernando Perez <fperez@colorado.edu>
2605 2004-12-17 Fernando Perez <fperez@colorado.edu>
2603
2606
2604 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2607 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2605 reported by Prabhu.
2608 reported by Prabhu.
2606 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2609 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2607 sys.stderr) instead of explicitly calling sys.stderr. This helps
2610 sys.stderr) instead of explicitly calling sys.stderr. This helps
2608 maintain our I/O abstractions clean, for future GUI embeddings.
2611 maintain our I/O abstractions clean, for future GUI embeddings.
2609
2612
2610 * IPython/genutils.py (info): added new utility for sys.stderr
2613 * IPython/genutils.py (info): added new utility for sys.stderr
2611 unified info message handling (thin wrapper around warn()).
2614 unified info message handling (thin wrapper around warn()).
2612
2615
2613 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2616 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2614 composite (dotted) names on verbose exceptions.
2617 composite (dotted) names on verbose exceptions.
2615 (VerboseTB.nullrepr): harden against another kind of errors which
2618 (VerboseTB.nullrepr): harden against another kind of errors which
2616 Python's inspect module can trigger, and which were crashing
2619 Python's inspect module can trigger, and which were crashing
2617 IPython. Thanks to a report by Marco Lombardi
2620 IPython. Thanks to a report by Marco Lombardi
2618 <mlombard-AT-ma010192.hq.eso.org>.
2621 <mlombard-AT-ma010192.hq.eso.org>.
2619
2622
2620 2004-12-13 *** Released version 0.6.6
2623 2004-12-13 *** Released version 0.6.6
2621
2624
2622 2004-12-12 Fernando Perez <fperez@colorado.edu>
2625 2004-12-12 Fernando Perez <fperez@colorado.edu>
2623
2626
2624 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2627 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2625 generated by pygtk upon initialization if it was built without
2628 generated by pygtk upon initialization if it was built without
2626 threads (for matplotlib users). After a crash reported by
2629 threads (for matplotlib users). After a crash reported by
2627 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2630 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2628
2631
2629 * IPython/ipmaker.py (make_IPython): fix small bug in the
2632 * IPython/ipmaker.py (make_IPython): fix small bug in the
2630 import_some parameter for multiple imports.
2633 import_some parameter for multiple imports.
2631
2634
2632 * IPython/iplib.py (ipmagic): simplified the interface of
2635 * IPython/iplib.py (ipmagic): simplified the interface of
2633 ipmagic() to take a single string argument, just as it would be
2636 ipmagic() to take a single string argument, just as it would be
2634 typed at the IPython cmd line.
2637 typed at the IPython cmd line.
2635 (ipalias): Added new ipalias() with an interface identical to
2638 (ipalias): Added new ipalias() with an interface identical to
2636 ipmagic(). This completes exposing a pure python interface to the
2639 ipmagic(). This completes exposing a pure python interface to the
2637 alias and magic system, which can be used in loops or more complex
2640 alias and magic system, which can be used in loops or more complex
2638 code where IPython's automatic line mangling is not active.
2641 code where IPython's automatic line mangling is not active.
2639
2642
2640 * IPython/genutils.py (timing): changed interface of timing to
2643 * IPython/genutils.py (timing): changed interface of timing to
2641 simply run code once, which is the most common case. timings()
2644 simply run code once, which is the most common case. timings()
2642 remains unchanged, for the cases where you want multiple runs.
2645 remains unchanged, for the cases where you want multiple runs.
2643
2646
2644 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2647 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2645 bug where Python2.2 crashes with exec'ing code which does not end
2648 bug where Python2.2 crashes with exec'ing code which does not end
2646 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2649 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2647 before.
2650 before.
2648
2651
2649 2004-12-10 Fernando Perez <fperez@colorado.edu>
2652 2004-12-10 Fernando Perez <fperez@colorado.edu>
2650
2653
2651 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2654 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2652 -t to -T, to accomodate the new -t flag in %run (the %run and
2655 -t to -T, to accomodate the new -t flag in %run (the %run and
2653 %prun options are kind of intermixed, and it's not easy to change
2656 %prun options are kind of intermixed, and it's not easy to change
2654 this with the limitations of python's getopt).
2657 this with the limitations of python's getopt).
2655
2658
2656 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2659 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2657 the execution of scripts. It's not as fine-tuned as timeit.py,
2660 the execution of scripts. It's not as fine-tuned as timeit.py,
2658 but it works from inside ipython (and under 2.2, which lacks
2661 but it works from inside ipython (and under 2.2, which lacks
2659 timeit.py). Optionally a number of runs > 1 can be given for
2662 timeit.py). Optionally a number of runs > 1 can be given for
2660 timing very short-running code.
2663 timing very short-running code.
2661
2664
2662 * IPython/genutils.py (uniq_stable): new routine which returns a
2665 * IPython/genutils.py (uniq_stable): new routine which returns a
2663 list of unique elements in any iterable, but in stable order of
2666 list of unique elements in any iterable, but in stable order of
2664 appearance. I needed this for the ultraTB fixes, and it's a handy
2667 appearance. I needed this for the ultraTB fixes, and it's a handy
2665 utility.
2668 utility.
2666
2669
2667 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2670 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2668 dotted names in Verbose exceptions. This had been broken since
2671 dotted names in Verbose exceptions. This had been broken since
2669 the very start, now x.y will properly be printed in a Verbose
2672 the very start, now x.y will properly be printed in a Verbose
2670 traceback, instead of x being shown and y appearing always as an
2673 traceback, instead of x being shown and y appearing always as an
2671 'undefined global'. Getting this to work was a bit tricky,
2674 'undefined global'. Getting this to work was a bit tricky,
2672 because by default python tokenizers are stateless. Saved by
2675 because by default python tokenizers are stateless. Saved by
2673 python's ability to easily add a bit of state to an arbitrary
2676 python's ability to easily add a bit of state to an arbitrary
2674 function (without needing to build a full-blown callable object).
2677 function (without needing to build a full-blown callable object).
2675
2678
2676 Also big cleanup of this code, which had horrendous runtime
2679 Also big cleanup of this code, which had horrendous runtime
2677 lookups of zillions of attributes for colorization. Moved all
2680 lookups of zillions of attributes for colorization. Moved all
2678 this code into a few templates, which make it cleaner and quicker.
2681 this code into a few templates, which make it cleaner and quicker.
2679
2682
2680 Printout quality was also improved for Verbose exceptions: one
2683 Printout quality was also improved for Verbose exceptions: one
2681 variable per line, and memory addresses are printed (this can be
2684 variable per line, and memory addresses are printed (this can be
2682 quite handy in nasty debugging situations, which is what Verbose
2685 quite handy in nasty debugging situations, which is what Verbose
2683 is for).
2686 is for).
2684
2687
2685 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2688 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2686 the command line as scripts to be loaded by embedded instances.
2689 the command line as scripts to be loaded by embedded instances.
2687 Doing so has the potential for an infinite recursion if there are
2690 Doing so has the potential for an infinite recursion if there are
2688 exceptions thrown in the process. This fixes a strange crash
2691 exceptions thrown in the process. This fixes a strange crash
2689 reported by Philippe MULLER <muller-AT-irit.fr>.
2692 reported by Philippe MULLER <muller-AT-irit.fr>.
2690
2693
2691 2004-12-09 Fernando Perez <fperez@colorado.edu>
2694 2004-12-09 Fernando Perez <fperez@colorado.edu>
2692
2695
2693 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2696 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2694 to reflect new names in matplotlib, which now expose the
2697 to reflect new names in matplotlib, which now expose the
2695 matlab-compatible interface via a pylab module instead of the
2698 matlab-compatible interface via a pylab module instead of the
2696 'matlab' name. The new code is backwards compatible, so users of
2699 'matlab' name. The new code is backwards compatible, so users of
2697 all matplotlib versions are OK. Patch by J. Hunter.
2700 all matplotlib versions are OK. Patch by J. Hunter.
2698
2701
2699 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2702 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2700 of __init__ docstrings for instances (class docstrings are already
2703 of __init__ docstrings for instances (class docstrings are already
2701 automatically printed). Instances with customized docstrings
2704 automatically printed). Instances with customized docstrings
2702 (indep. of the class) are also recognized and all 3 separate
2705 (indep. of the class) are also recognized and all 3 separate
2703 docstrings are printed (instance, class, constructor). After some
2706 docstrings are printed (instance, class, constructor). After some
2704 comments/suggestions by J. Hunter.
2707 comments/suggestions by J. Hunter.
2705
2708
2706 2004-12-05 Fernando Perez <fperez@colorado.edu>
2709 2004-12-05 Fernando Perez <fperez@colorado.edu>
2707
2710
2708 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2711 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2709 warnings when tab-completion fails and triggers an exception.
2712 warnings when tab-completion fails and triggers an exception.
2710
2713
2711 2004-12-03 Fernando Perez <fperez@colorado.edu>
2714 2004-12-03 Fernando Perez <fperez@colorado.edu>
2712
2715
2713 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2716 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2714 be triggered when using 'run -p'. An incorrect option flag was
2717 be triggered when using 'run -p'. An incorrect option flag was
2715 being set ('d' instead of 'D').
2718 being set ('d' instead of 'D').
2716 (manpage): fix missing escaped \- sign.
2719 (manpage): fix missing escaped \- sign.
2717
2720
2718 2004-11-30 *** Released version 0.6.5
2721 2004-11-30 *** Released version 0.6.5
2719
2722
2720 2004-11-30 Fernando Perez <fperez@colorado.edu>
2723 2004-11-30 Fernando Perez <fperez@colorado.edu>
2721
2724
2722 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2725 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2723 setting with -d option.
2726 setting with -d option.
2724
2727
2725 * setup.py (docfiles): Fix problem where the doc glob I was using
2728 * setup.py (docfiles): Fix problem where the doc glob I was using
2726 was COMPLETELY BROKEN. It was giving the right files by pure
2729 was COMPLETELY BROKEN. It was giving the right files by pure
2727 accident, but failed once I tried to include ipython.el. Note:
2730 accident, but failed once I tried to include ipython.el. Note:
2728 glob() does NOT allow you to do exclusion on multiple endings!
2731 glob() does NOT allow you to do exclusion on multiple endings!
2729
2732
2730 2004-11-29 Fernando Perez <fperez@colorado.edu>
2733 2004-11-29 Fernando Perez <fperez@colorado.edu>
2731
2734
2732 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2735 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2733 the manpage as the source. Better formatting & consistency.
2736 the manpage as the source. Better formatting & consistency.
2734
2737
2735 * IPython/Magic.py (magic_run): Added new -d option, to run
2738 * IPython/Magic.py (magic_run): Added new -d option, to run
2736 scripts under the control of the python pdb debugger. Note that
2739 scripts under the control of the python pdb debugger. Note that
2737 this required changing the %prun option -d to -D, to avoid a clash
2740 this required changing the %prun option -d to -D, to avoid a clash
2738 (since %run must pass options to %prun, and getopt is too dumb to
2741 (since %run must pass options to %prun, and getopt is too dumb to
2739 handle options with string values with embedded spaces). Thanks
2742 handle options with string values with embedded spaces). Thanks
2740 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2743 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2741 (magic_who_ls): added type matching to %who and %whos, so that one
2744 (magic_who_ls): added type matching to %who and %whos, so that one
2742 can filter their output to only include variables of certain
2745 can filter their output to only include variables of certain
2743 types. Another suggestion by Matthew.
2746 types. Another suggestion by Matthew.
2744 (magic_whos): Added memory summaries in kb and Mb for arrays.
2747 (magic_whos): Added memory summaries in kb and Mb for arrays.
2745 (magic_who): Improve formatting (break lines every 9 vars).
2748 (magic_who): Improve formatting (break lines every 9 vars).
2746
2749
2747 2004-11-28 Fernando Perez <fperez@colorado.edu>
2750 2004-11-28 Fernando Perez <fperez@colorado.edu>
2748
2751
2749 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2752 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2750 cache when empty lines were present.
2753 cache when empty lines were present.
2751
2754
2752 2004-11-24 Fernando Perez <fperez@colorado.edu>
2755 2004-11-24 Fernando Perez <fperez@colorado.edu>
2753
2756
2754 * IPython/usage.py (__doc__): document the re-activated threading
2757 * IPython/usage.py (__doc__): document the re-activated threading
2755 options for WX and GTK.
2758 options for WX and GTK.
2756
2759
2757 2004-11-23 Fernando Perez <fperez@colorado.edu>
2760 2004-11-23 Fernando Perez <fperez@colorado.edu>
2758
2761
2759 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2762 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2760 the -wthread and -gthread options, along with a new -tk one to try
2763 the -wthread and -gthread options, along with a new -tk one to try
2761 and coordinate Tk threading with wx/gtk. The tk support is very
2764 and coordinate Tk threading with wx/gtk. The tk support is very
2762 platform dependent, since it seems to require Tcl and Tk to be
2765 platform dependent, since it seems to require Tcl and Tk to be
2763 built with threads (Fedora1/2 appears NOT to have it, but in
2766 built with threads (Fedora1/2 appears NOT to have it, but in
2764 Prabhu's Debian boxes it works OK). But even with some Tk
2767 Prabhu's Debian boxes it works OK). But even with some Tk
2765 limitations, this is a great improvement.
2768 limitations, this is a great improvement.
2766
2769
2767 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2770 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2768 info in user prompts. Patch by Prabhu.
2771 info in user prompts. Patch by Prabhu.
2769
2772
2770 2004-11-18 Fernando Perez <fperez@colorado.edu>
2773 2004-11-18 Fernando Perez <fperez@colorado.edu>
2771
2774
2772 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2775 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2773 EOFErrors and bail, to avoid infinite loops if a non-terminating
2776 EOFErrors and bail, to avoid infinite loops if a non-terminating
2774 file is fed into ipython. Patch submitted in issue 19 by user,
2777 file is fed into ipython. Patch submitted in issue 19 by user,
2775 many thanks.
2778 many thanks.
2776
2779
2777 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2780 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2778 autoquote/parens in continuation prompts, which can cause lots of
2781 autoquote/parens in continuation prompts, which can cause lots of
2779 problems. Closes roundup issue 20.
2782 problems. Closes roundup issue 20.
2780
2783
2781 2004-11-17 Fernando Perez <fperez@colorado.edu>
2784 2004-11-17 Fernando Perez <fperez@colorado.edu>
2782
2785
2783 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2786 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2784 reported as debian bug #280505. I'm not sure my local changelog
2787 reported as debian bug #280505. I'm not sure my local changelog
2785 entry has the proper debian format (Jack?).
2788 entry has the proper debian format (Jack?).
2786
2789
2787 2004-11-08 *** Released version 0.6.4
2790 2004-11-08 *** Released version 0.6.4
2788
2791
2789 2004-11-08 Fernando Perez <fperez@colorado.edu>
2792 2004-11-08 Fernando Perez <fperez@colorado.edu>
2790
2793
2791 * IPython/iplib.py (init_readline): Fix exit message for Windows
2794 * IPython/iplib.py (init_readline): Fix exit message for Windows
2792 when readline is active. Thanks to a report by Eric Jones
2795 when readline is active. Thanks to a report by Eric Jones
2793 <eric-AT-enthought.com>.
2796 <eric-AT-enthought.com>.
2794
2797
2795 2004-11-07 Fernando Perez <fperez@colorado.edu>
2798 2004-11-07 Fernando Perez <fperez@colorado.edu>
2796
2799
2797 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2800 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2798 sometimes seen by win2k/cygwin users.
2801 sometimes seen by win2k/cygwin users.
2799
2802
2800 2004-11-06 Fernando Perez <fperez@colorado.edu>
2803 2004-11-06 Fernando Perez <fperez@colorado.edu>
2801
2804
2802 * IPython/iplib.py (interact): Change the handling of %Exit from
2805 * IPython/iplib.py (interact): Change the handling of %Exit from
2803 trying to propagate a SystemExit to an internal ipython flag.
2806 trying to propagate a SystemExit to an internal ipython flag.
2804 This is less elegant than using Python's exception mechanism, but
2807 This is less elegant than using Python's exception mechanism, but
2805 I can't get that to work reliably with threads, so under -pylab
2808 I can't get that to work reliably with threads, so under -pylab
2806 %Exit was hanging IPython. Cross-thread exception handling is
2809 %Exit was hanging IPython. Cross-thread exception handling is
2807 really a bitch. Thaks to a bug report by Stephen Walton
2810 really a bitch. Thaks to a bug report by Stephen Walton
2808 <stephen.walton-AT-csun.edu>.
2811 <stephen.walton-AT-csun.edu>.
2809
2812
2810 2004-11-04 Fernando Perez <fperez@colorado.edu>
2813 2004-11-04 Fernando Perez <fperez@colorado.edu>
2811
2814
2812 * IPython/iplib.py (raw_input_original): store a pointer to the
2815 * IPython/iplib.py (raw_input_original): store a pointer to the
2813 true raw_input to harden against code which can modify it
2816 true raw_input to harden against code which can modify it
2814 (wx.py.PyShell does this and would otherwise crash ipython).
2817 (wx.py.PyShell does this and would otherwise crash ipython).
2815 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2818 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2816
2819
2817 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2820 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2818 Ctrl-C problem, which does not mess up the input line.
2821 Ctrl-C problem, which does not mess up the input line.
2819
2822
2820 2004-11-03 Fernando Perez <fperez@colorado.edu>
2823 2004-11-03 Fernando Perez <fperez@colorado.edu>
2821
2824
2822 * IPython/Release.py: Changed licensing to BSD, in all files.
2825 * IPython/Release.py: Changed licensing to BSD, in all files.
2823 (name): lowercase name for tarball/RPM release.
2826 (name): lowercase name for tarball/RPM release.
2824
2827
2825 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2828 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2826 use throughout ipython.
2829 use throughout ipython.
2827
2830
2828 * IPython/Magic.py (Magic._ofind): Switch to using the new
2831 * IPython/Magic.py (Magic._ofind): Switch to using the new
2829 OInspect.getdoc() function.
2832 OInspect.getdoc() function.
2830
2833
2831 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2834 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2832 of the line currently being canceled via Ctrl-C. It's extremely
2835 of the line currently being canceled via Ctrl-C. It's extremely
2833 ugly, but I don't know how to do it better (the problem is one of
2836 ugly, but I don't know how to do it better (the problem is one of
2834 handling cross-thread exceptions).
2837 handling cross-thread exceptions).
2835
2838
2836 2004-10-28 Fernando Perez <fperez@colorado.edu>
2839 2004-10-28 Fernando Perez <fperez@colorado.edu>
2837
2840
2838 * IPython/Shell.py (signal_handler): add signal handlers to trap
2841 * IPython/Shell.py (signal_handler): add signal handlers to trap
2839 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2842 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2840 report by Francesc Alted.
2843 report by Francesc Alted.
2841
2844
2842 2004-10-21 Fernando Perez <fperez@colorado.edu>
2845 2004-10-21 Fernando Perez <fperez@colorado.edu>
2843
2846
2844 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2847 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2845 to % for pysh syntax extensions.
2848 to % for pysh syntax extensions.
2846
2849
2847 2004-10-09 Fernando Perez <fperez@colorado.edu>
2850 2004-10-09 Fernando Perez <fperez@colorado.edu>
2848
2851
2849 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2852 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2850 arrays to print a more useful summary, without calling str(arr).
2853 arrays to print a more useful summary, without calling str(arr).
2851 This avoids the problem of extremely lengthy computations which
2854 This avoids the problem of extremely lengthy computations which
2852 occur if arr is large, and appear to the user as a system lockup
2855 occur if arr is large, and appear to the user as a system lockup
2853 with 100% cpu activity. After a suggestion by Kristian Sandberg
2856 with 100% cpu activity. After a suggestion by Kristian Sandberg
2854 <Kristian.Sandberg@colorado.edu>.
2857 <Kristian.Sandberg@colorado.edu>.
2855 (Magic.__init__): fix bug in global magic escapes not being
2858 (Magic.__init__): fix bug in global magic escapes not being
2856 correctly set.
2859 correctly set.
2857
2860
2858 2004-10-08 Fernando Perez <fperez@colorado.edu>
2861 2004-10-08 Fernando Perez <fperez@colorado.edu>
2859
2862
2860 * IPython/Magic.py (__license__): change to absolute imports of
2863 * IPython/Magic.py (__license__): change to absolute imports of
2861 ipython's own internal packages, to start adapting to the absolute
2864 ipython's own internal packages, to start adapting to the absolute
2862 import requirement of PEP-328.
2865 import requirement of PEP-328.
2863
2866
2864 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2867 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2865 files, and standardize author/license marks through the Release
2868 files, and standardize author/license marks through the Release
2866 module instead of having per/file stuff (except for files with
2869 module instead of having per/file stuff (except for files with
2867 particular licenses, like the MIT/PSF-licensed codes).
2870 particular licenses, like the MIT/PSF-licensed codes).
2868
2871
2869 * IPython/Debugger.py: remove dead code for python 2.1
2872 * IPython/Debugger.py: remove dead code for python 2.1
2870
2873
2871 2004-10-04 Fernando Perez <fperez@colorado.edu>
2874 2004-10-04 Fernando Perez <fperez@colorado.edu>
2872
2875
2873 * IPython/iplib.py (ipmagic): New function for accessing magics
2876 * IPython/iplib.py (ipmagic): New function for accessing magics
2874 via a normal python function call.
2877 via a normal python function call.
2875
2878
2876 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2879 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2877 from '@' to '%', to accomodate the new @decorator syntax of python
2880 from '@' to '%', to accomodate the new @decorator syntax of python
2878 2.4.
2881 2.4.
2879
2882
2880 2004-09-29 Fernando Perez <fperez@colorado.edu>
2883 2004-09-29 Fernando Perez <fperez@colorado.edu>
2881
2884
2882 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2885 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2883 matplotlib.use to prevent running scripts which try to switch
2886 matplotlib.use to prevent running scripts which try to switch
2884 interactive backends from within ipython. This will just crash
2887 interactive backends from within ipython. This will just crash
2885 the python interpreter, so we can't allow it (but a detailed error
2888 the python interpreter, so we can't allow it (but a detailed error
2886 is given to the user).
2889 is given to the user).
2887
2890
2888 2004-09-28 Fernando Perez <fperez@colorado.edu>
2891 2004-09-28 Fernando Perez <fperez@colorado.edu>
2889
2892
2890 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2893 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2891 matplotlib-related fixes so that using @run with non-matplotlib
2894 matplotlib-related fixes so that using @run with non-matplotlib
2892 scripts doesn't pop up spurious plot windows. This requires
2895 scripts doesn't pop up spurious plot windows. This requires
2893 matplotlib >= 0.63, where I had to make some changes as well.
2896 matplotlib >= 0.63, where I had to make some changes as well.
2894
2897
2895 * IPython/ipmaker.py (make_IPython): update version requirement to
2898 * IPython/ipmaker.py (make_IPython): update version requirement to
2896 python 2.2.
2899 python 2.2.
2897
2900
2898 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2901 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2899 banner arg for embedded customization.
2902 banner arg for embedded customization.
2900
2903
2901 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2904 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2902 explicit uses of __IP as the IPython's instance name. Now things
2905 explicit uses of __IP as the IPython's instance name. Now things
2903 are properly handled via the shell.name value. The actual code
2906 are properly handled via the shell.name value. The actual code
2904 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2907 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2905 is much better than before. I'll clean things completely when the
2908 is much better than before. I'll clean things completely when the
2906 magic stuff gets a real overhaul.
2909 magic stuff gets a real overhaul.
2907
2910
2908 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2911 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2909 minor changes to debian dir.
2912 minor changes to debian dir.
2910
2913
2911 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2914 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2912 pointer to the shell itself in the interactive namespace even when
2915 pointer to the shell itself in the interactive namespace even when
2913 a user-supplied dict is provided. This is needed for embedding
2916 a user-supplied dict is provided. This is needed for embedding
2914 purposes (found by tests with Michel Sanner).
2917 purposes (found by tests with Michel Sanner).
2915
2918
2916 2004-09-27 Fernando Perez <fperez@colorado.edu>
2919 2004-09-27 Fernando Perez <fperez@colorado.edu>
2917
2920
2918 * IPython/UserConfig/ipythonrc: remove []{} from
2921 * IPython/UserConfig/ipythonrc: remove []{} from
2919 readline_remove_delims, so that things like [modname.<TAB> do
2922 readline_remove_delims, so that things like [modname.<TAB> do
2920 proper completion. This disables [].TAB, but that's a less common
2923 proper completion. This disables [].TAB, but that's a less common
2921 case than module names in list comprehensions, for example.
2924 case than module names in list comprehensions, for example.
2922 Thanks to a report by Andrea Riciputi.
2925 Thanks to a report by Andrea Riciputi.
2923
2926
2924 2004-09-09 Fernando Perez <fperez@colorado.edu>
2927 2004-09-09 Fernando Perez <fperez@colorado.edu>
2925
2928
2926 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2929 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2927 blocking problems in win32 and osx. Fix by John.
2930 blocking problems in win32 and osx. Fix by John.
2928
2931
2929 2004-09-08 Fernando Perez <fperez@colorado.edu>
2932 2004-09-08 Fernando Perez <fperez@colorado.edu>
2930
2933
2931 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2934 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2932 for Win32 and OSX. Fix by John Hunter.
2935 for Win32 and OSX. Fix by John Hunter.
2933
2936
2934 2004-08-30 *** Released version 0.6.3
2937 2004-08-30 *** Released version 0.6.3
2935
2938
2936 2004-08-30 Fernando Perez <fperez@colorado.edu>
2939 2004-08-30 Fernando Perez <fperez@colorado.edu>
2937
2940
2938 * setup.py (isfile): Add manpages to list of dependent files to be
2941 * setup.py (isfile): Add manpages to list of dependent files to be
2939 updated.
2942 updated.
2940
2943
2941 2004-08-27 Fernando Perez <fperez@colorado.edu>
2944 2004-08-27 Fernando Perez <fperez@colorado.edu>
2942
2945
2943 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2946 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2944 for now. They don't really work with standalone WX/GTK code
2947 for now. They don't really work with standalone WX/GTK code
2945 (though matplotlib IS working fine with both of those backends).
2948 (though matplotlib IS working fine with both of those backends).
2946 This will neeed much more testing. I disabled most things with
2949 This will neeed much more testing. I disabled most things with
2947 comments, so turning it back on later should be pretty easy.
2950 comments, so turning it back on later should be pretty easy.
2948
2951
2949 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2952 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2950 autocalling of expressions like r'foo', by modifying the line
2953 autocalling of expressions like r'foo', by modifying the line
2951 split regexp. Closes
2954 split regexp. Closes
2952 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2955 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2953 Riley <ipythonbugs-AT-sabi.net>.
2956 Riley <ipythonbugs-AT-sabi.net>.
2954 (InteractiveShell.mainloop): honor --nobanner with banner
2957 (InteractiveShell.mainloop): honor --nobanner with banner
2955 extensions.
2958 extensions.
2956
2959
2957 * IPython/Shell.py: Significant refactoring of all classes, so
2960 * IPython/Shell.py: Significant refactoring of all classes, so
2958 that we can really support ALL matplotlib backends and threading
2961 that we can really support ALL matplotlib backends and threading
2959 models (John spotted a bug with Tk which required this). Now we
2962 models (John spotted a bug with Tk which required this). Now we
2960 should support single-threaded, WX-threads and GTK-threads, both
2963 should support single-threaded, WX-threads and GTK-threads, both
2961 for generic code and for matplotlib.
2964 for generic code and for matplotlib.
2962
2965
2963 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2966 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2964 -pylab, to simplify things for users. Will also remove the pylab
2967 -pylab, to simplify things for users. Will also remove the pylab
2965 profile, since now all of matplotlib configuration is directly
2968 profile, since now all of matplotlib configuration is directly
2966 handled here. This also reduces startup time.
2969 handled here. This also reduces startup time.
2967
2970
2968 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2971 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2969 shell wasn't being correctly called. Also in IPShellWX.
2972 shell wasn't being correctly called. Also in IPShellWX.
2970
2973
2971 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2974 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2972 fine-tune banner.
2975 fine-tune banner.
2973
2976
2974 * IPython/numutils.py (spike): Deprecate these spike functions,
2977 * IPython/numutils.py (spike): Deprecate these spike functions,
2975 delete (long deprecated) gnuplot_exec handler.
2978 delete (long deprecated) gnuplot_exec handler.
2976
2979
2977 2004-08-26 Fernando Perez <fperez@colorado.edu>
2980 2004-08-26 Fernando Perez <fperez@colorado.edu>
2978
2981
2979 * ipython.1: Update for threading options, plus some others which
2982 * ipython.1: Update for threading options, plus some others which
2980 were missing.
2983 were missing.
2981
2984
2982 * IPython/ipmaker.py (__call__): Added -wthread option for
2985 * IPython/ipmaker.py (__call__): Added -wthread option for
2983 wxpython thread handling. Make sure threading options are only
2986 wxpython thread handling. Make sure threading options are only
2984 valid at the command line.
2987 valid at the command line.
2985
2988
2986 * scripts/ipython: moved shell selection into a factory function
2989 * scripts/ipython: moved shell selection into a factory function
2987 in Shell.py, to keep the starter script to a minimum.
2990 in Shell.py, to keep the starter script to a minimum.
2988
2991
2989 2004-08-25 Fernando Perez <fperez@colorado.edu>
2992 2004-08-25 Fernando Perez <fperez@colorado.edu>
2990
2993
2991 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2994 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2992 John. Along with some recent changes he made to matplotlib, the
2995 John. Along with some recent changes he made to matplotlib, the
2993 next versions of both systems should work very well together.
2996 next versions of both systems should work very well together.
2994
2997
2995 2004-08-24 Fernando Perez <fperez@colorado.edu>
2998 2004-08-24 Fernando Perez <fperez@colorado.edu>
2996
2999
2997 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3000 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2998 tried to switch the profiling to using hotshot, but I'm getting
3001 tried to switch the profiling to using hotshot, but I'm getting
2999 strange errors from prof.runctx() there. I may be misreading the
3002 strange errors from prof.runctx() there. I may be misreading the
3000 docs, but it looks weird. For now the profiling code will
3003 docs, but it looks weird. For now the profiling code will
3001 continue to use the standard profiler.
3004 continue to use the standard profiler.
3002
3005
3003 2004-08-23 Fernando Perez <fperez@colorado.edu>
3006 2004-08-23 Fernando Perez <fperez@colorado.edu>
3004
3007
3005 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3008 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3006 threaded shell, by John Hunter. It's not quite ready yet, but
3009 threaded shell, by John Hunter. It's not quite ready yet, but
3007 close.
3010 close.
3008
3011
3009 2004-08-22 Fernando Perez <fperez@colorado.edu>
3012 2004-08-22 Fernando Perez <fperez@colorado.edu>
3010
3013
3011 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3014 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3012 in Magic and ultraTB.
3015 in Magic and ultraTB.
3013
3016
3014 * ipython.1: document threading options in manpage.
3017 * ipython.1: document threading options in manpage.
3015
3018
3016 * scripts/ipython: Changed name of -thread option to -gthread,
3019 * scripts/ipython: Changed name of -thread option to -gthread,
3017 since this is GTK specific. I want to leave the door open for a
3020 since this is GTK specific. I want to leave the door open for a
3018 -wthread option for WX, which will most likely be necessary. This
3021 -wthread option for WX, which will most likely be necessary. This
3019 change affects usage and ipmaker as well.
3022 change affects usage and ipmaker as well.
3020
3023
3021 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3024 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3022 handle the matplotlib shell issues. Code by John Hunter
3025 handle the matplotlib shell issues. Code by John Hunter
3023 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3026 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3024 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3027 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3025 broken (and disabled for end users) for now, but it puts the
3028 broken (and disabled for end users) for now, but it puts the
3026 infrastructure in place.
3029 infrastructure in place.
3027
3030
3028 2004-08-21 Fernando Perez <fperez@colorado.edu>
3031 2004-08-21 Fernando Perez <fperez@colorado.edu>
3029
3032
3030 * ipythonrc-pylab: Add matplotlib support.
3033 * ipythonrc-pylab: Add matplotlib support.
3031
3034
3032 * matplotlib_config.py: new files for matplotlib support, part of
3035 * matplotlib_config.py: new files for matplotlib support, part of
3033 the pylab profile.
3036 the pylab profile.
3034
3037
3035 * IPython/usage.py (__doc__): documented the threading options.
3038 * IPython/usage.py (__doc__): documented the threading options.
3036
3039
3037 2004-08-20 Fernando Perez <fperez@colorado.edu>
3040 2004-08-20 Fernando Perez <fperez@colorado.edu>
3038
3041
3039 * ipython: Modified the main calling routine to handle the -thread
3042 * ipython: Modified the main calling routine to handle the -thread
3040 and -mpthread options. This needs to be done as a top-level hack,
3043 and -mpthread options. This needs to be done as a top-level hack,
3041 because it determines which class to instantiate for IPython
3044 because it determines which class to instantiate for IPython
3042 itself.
3045 itself.
3043
3046
3044 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3047 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3045 classes to support multithreaded GTK operation without blocking,
3048 classes to support multithreaded GTK operation without blocking,
3046 and matplotlib with all backends. This is a lot of still very
3049 and matplotlib with all backends. This is a lot of still very
3047 experimental code, and threads are tricky. So it may still have a
3050 experimental code, and threads are tricky. So it may still have a
3048 few rough edges... This code owes a lot to
3051 few rough edges... This code owes a lot to
3049 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3052 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3050 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3053 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3051 to John Hunter for all the matplotlib work.
3054 to John Hunter for all the matplotlib work.
3052
3055
3053 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3056 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3054 options for gtk thread and matplotlib support.
3057 options for gtk thread and matplotlib support.
3055
3058
3056 2004-08-16 Fernando Perez <fperez@colorado.edu>
3059 2004-08-16 Fernando Perez <fperez@colorado.edu>
3057
3060
3058 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3061 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3059 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3062 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3060 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3063 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3061
3064
3062 2004-08-11 Fernando Perez <fperez@colorado.edu>
3065 2004-08-11 Fernando Perez <fperez@colorado.edu>
3063
3066
3064 * setup.py (isfile): Fix build so documentation gets updated for
3067 * setup.py (isfile): Fix build so documentation gets updated for
3065 rpms (it was only done for .tgz builds).
3068 rpms (it was only done for .tgz builds).
3066
3069
3067 2004-08-10 Fernando Perez <fperez@colorado.edu>
3070 2004-08-10 Fernando Perez <fperez@colorado.edu>
3068
3071
3069 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3072 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3070
3073
3071 * iplib.py : Silence syntax error exceptions in tab-completion.
3074 * iplib.py : Silence syntax error exceptions in tab-completion.
3072
3075
3073 2004-08-05 Fernando Perez <fperez@colorado.edu>
3076 2004-08-05 Fernando Perez <fperez@colorado.edu>
3074
3077
3075 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3078 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3076 'color off' mark for continuation prompts. This was causing long
3079 'color off' mark for continuation prompts. This was causing long
3077 continuation lines to mis-wrap.
3080 continuation lines to mis-wrap.
3078
3081
3079 2004-08-01 Fernando Perez <fperez@colorado.edu>
3082 2004-08-01 Fernando Perez <fperez@colorado.edu>
3080
3083
3081 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3084 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3082 for building ipython to be a parameter. All this is necessary
3085 for building ipython to be a parameter. All this is necessary
3083 right now to have a multithreaded version, but this insane
3086 right now to have a multithreaded version, but this insane
3084 non-design will be cleaned up soon. For now, it's a hack that
3087 non-design will be cleaned up soon. For now, it's a hack that
3085 works.
3088 works.
3086
3089
3087 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3090 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3088 args in various places. No bugs so far, but it's a dangerous
3091 args in various places. No bugs so far, but it's a dangerous
3089 practice.
3092 practice.
3090
3093
3091 2004-07-31 Fernando Perez <fperez@colorado.edu>
3094 2004-07-31 Fernando Perez <fperez@colorado.edu>
3092
3095
3093 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3096 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3094 fix completion of files with dots in their names under most
3097 fix completion of files with dots in their names under most
3095 profiles (pysh was OK because the completion order is different).
3098 profiles (pysh was OK because the completion order is different).
3096
3099
3097 2004-07-27 Fernando Perez <fperez@colorado.edu>
3100 2004-07-27 Fernando Perez <fperez@colorado.edu>
3098
3101
3099 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3102 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3100 keywords manually, b/c the one in keyword.py was removed in python
3103 keywords manually, b/c the one in keyword.py was removed in python
3101 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3104 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3102 This is NOT a bug under python 2.3 and earlier.
3105 This is NOT a bug under python 2.3 and earlier.
3103
3106
3104 2004-07-26 Fernando Perez <fperez@colorado.edu>
3107 2004-07-26 Fernando Perez <fperez@colorado.edu>
3105
3108
3106 * IPython/ultraTB.py (VerboseTB.text): Add another
3109 * IPython/ultraTB.py (VerboseTB.text): Add another
3107 linecache.checkcache() call to try to prevent inspect.py from
3110 linecache.checkcache() call to try to prevent inspect.py from
3108 crashing under python 2.3. I think this fixes
3111 crashing under python 2.3. I think this fixes
3109 http://www.scipy.net/roundup/ipython/issue17.
3112 http://www.scipy.net/roundup/ipython/issue17.
3110
3113
3111 2004-07-26 *** Released version 0.6.2
3114 2004-07-26 *** Released version 0.6.2
3112
3115
3113 2004-07-26 Fernando Perez <fperez@colorado.edu>
3116 2004-07-26 Fernando Perez <fperez@colorado.edu>
3114
3117
3115 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3118 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3116 fail for any number.
3119 fail for any number.
3117 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3120 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3118 empty bookmarks.
3121 empty bookmarks.
3119
3122
3120 2004-07-26 *** Released version 0.6.1
3123 2004-07-26 *** Released version 0.6.1
3121
3124
3122 2004-07-26 Fernando Perez <fperez@colorado.edu>
3125 2004-07-26 Fernando Perez <fperez@colorado.edu>
3123
3126
3124 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3127 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3125
3128
3126 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3129 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3127 escaping '()[]{}' in filenames.
3130 escaping '()[]{}' in filenames.
3128
3131
3129 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3132 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3130 Python 2.2 users who lack a proper shlex.split.
3133 Python 2.2 users who lack a proper shlex.split.
3131
3134
3132 2004-07-19 Fernando Perez <fperez@colorado.edu>
3135 2004-07-19 Fernando Perez <fperez@colorado.edu>
3133
3136
3134 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3137 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3135 for reading readline's init file. I follow the normal chain:
3138 for reading readline's init file. I follow the normal chain:
3136 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3139 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3137 report by Mike Heeter. This closes
3140 report by Mike Heeter. This closes
3138 http://www.scipy.net/roundup/ipython/issue16.
3141 http://www.scipy.net/roundup/ipython/issue16.
3139
3142
3140 2004-07-18 Fernando Perez <fperez@colorado.edu>
3143 2004-07-18 Fernando Perez <fperez@colorado.edu>
3141
3144
3142 * IPython/iplib.py (__init__): Add better handling of '\' under
3145 * IPython/iplib.py (__init__): Add better handling of '\' under
3143 Win32 for filenames. After a patch by Ville.
3146 Win32 for filenames. After a patch by Ville.
3144
3147
3145 2004-07-17 Fernando Perez <fperez@colorado.edu>
3148 2004-07-17 Fernando Perez <fperez@colorado.edu>
3146
3149
3147 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3150 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3148 autocalling would be triggered for 'foo is bar' if foo is
3151 autocalling would be triggered for 'foo is bar' if foo is
3149 callable. I also cleaned up the autocall detection code to use a
3152 callable. I also cleaned up the autocall detection code to use a
3150 regexp, which is faster. Bug reported by Alexander Schmolck.
3153 regexp, which is faster. Bug reported by Alexander Schmolck.
3151
3154
3152 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3155 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3153 '?' in them would confuse the help system. Reported by Alex
3156 '?' in them would confuse the help system. Reported by Alex
3154 Schmolck.
3157 Schmolck.
3155
3158
3156 2004-07-16 Fernando Perez <fperez@colorado.edu>
3159 2004-07-16 Fernando Perez <fperez@colorado.edu>
3157
3160
3158 * IPython/GnuplotInteractive.py (__all__): added plot2.
3161 * IPython/GnuplotInteractive.py (__all__): added plot2.
3159
3162
3160 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3163 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3161 plotting dictionaries, lists or tuples of 1d arrays.
3164 plotting dictionaries, lists or tuples of 1d arrays.
3162
3165
3163 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3166 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3164 optimizations.
3167 optimizations.
3165
3168
3166 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3169 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3167 the information which was there from Janko's original IPP code:
3170 the information which was there from Janko's original IPP code:
3168
3171
3169 03.05.99 20:53 porto.ifm.uni-kiel.de
3172 03.05.99 20:53 porto.ifm.uni-kiel.de
3170 --Started changelog.
3173 --Started changelog.
3171 --make clear do what it say it does
3174 --make clear do what it say it does
3172 --added pretty output of lines from inputcache
3175 --added pretty output of lines from inputcache
3173 --Made Logger a mixin class, simplifies handling of switches
3176 --Made Logger a mixin class, simplifies handling of switches
3174 --Added own completer class. .string<TAB> expands to last history
3177 --Added own completer class. .string<TAB> expands to last history
3175 line which starts with string. The new expansion is also present
3178 line which starts with string. The new expansion is also present
3176 with Ctrl-r from the readline library. But this shows, who this
3179 with Ctrl-r from the readline library. But this shows, who this
3177 can be done for other cases.
3180 can be done for other cases.
3178 --Added convention that all shell functions should accept a
3181 --Added convention that all shell functions should accept a
3179 parameter_string This opens the door for different behaviour for
3182 parameter_string This opens the door for different behaviour for
3180 each function. @cd is a good example of this.
3183 each function. @cd is a good example of this.
3181
3184
3182 04.05.99 12:12 porto.ifm.uni-kiel.de
3185 04.05.99 12:12 porto.ifm.uni-kiel.de
3183 --added logfile rotation
3186 --added logfile rotation
3184 --added new mainloop method which freezes first the namespace
3187 --added new mainloop method which freezes first the namespace
3185
3188
3186 07.05.99 21:24 porto.ifm.uni-kiel.de
3189 07.05.99 21:24 porto.ifm.uni-kiel.de
3187 --added the docreader classes. Now there is a help system.
3190 --added the docreader classes. Now there is a help system.
3188 -This is only a first try. Currently it's not easy to put new
3191 -This is only a first try. Currently it's not easy to put new
3189 stuff in the indices. But this is the way to go. Info would be
3192 stuff in the indices. But this is the way to go. Info would be
3190 better, but HTML is every where and not everybody has an info
3193 better, but HTML is every where and not everybody has an info
3191 system installed and it's not so easy to change html-docs to info.
3194 system installed and it's not so easy to change html-docs to info.
3192 --added global logfile option
3195 --added global logfile option
3193 --there is now a hook for object inspection method pinfo needs to
3196 --there is now a hook for object inspection method pinfo needs to
3194 be provided for this. Can be reached by two '??'.
3197 be provided for this. Can be reached by two '??'.
3195
3198
3196 08.05.99 20:51 porto.ifm.uni-kiel.de
3199 08.05.99 20:51 porto.ifm.uni-kiel.de
3197 --added a README
3200 --added a README
3198 --bug in rc file. Something has changed so functions in the rc
3201 --bug in rc file. Something has changed so functions in the rc
3199 file need to reference the shell and not self. Not clear if it's a
3202 file need to reference the shell and not self. Not clear if it's a
3200 bug or feature.
3203 bug or feature.
3201 --changed rc file for new behavior
3204 --changed rc file for new behavior
3202
3205
3203 2004-07-15 Fernando Perez <fperez@colorado.edu>
3206 2004-07-15 Fernando Perez <fperez@colorado.edu>
3204
3207
3205 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3208 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3206 cache was falling out of sync in bizarre manners when multi-line
3209 cache was falling out of sync in bizarre manners when multi-line
3207 input was present. Minor optimizations and cleanup.
3210 input was present. Minor optimizations and cleanup.
3208
3211
3209 (Logger): Remove old Changelog info for cleanup. This is the
3212 (Logger): Remove old Changelog info for cleanup. This is the
3210 information which was there from Janko's original code:
3213 information which was there from Janko's original code:
3211
3214
3212 Changes to Logger: - made the default log filename a parameter
3215 Changes to Logger: - made the default log filename a parameter
3213
3216
3214 - put a check for lines beginning with !@? in log(). Needed
3217 - put a check for lines beginning with !@? in log(). Needed
3215 (even if the handlers properly log their lines) for mid-session
3218 (even if the handlers properly log their lines) for mid-session
3216 logging activation to work properly. Without this, lines logged
3219 logging activation to work properly. Without this, lines logged
3217 in mid session, which get read from the cache, would end up
3220 in mid session, which get read from the cache, would end up
3218 'bare' (with !@? in the open) in the log. Now they are caught
3221 'bare' (with !@? in the open) in the log. Now they are caught
3219 and prepended with a #.
3222 and prepended with a #.
3220
3223
3221 * IPython/iplib.py (InteractiveShell.init_readline): added check
3224 * IPython/iplib.py (InteractiveShell.init_readline): added check
3222 in case MagicCompleter fails to be defined, so we don't crash.
3225 in case MagicCompleter fails to be defined, so we don't crash.
3223
3226
3224 2004-07-13 Fernando Perez <fperez@colorado.edu>
3227 2004-07-13 Fernando Perez <fperez@colorado.edu>
3225
3228
3226 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3229 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3227 of EPS if the requested filename ends in '.eps'.
3230 of EPS if the requested filename ends in '.eps'.
3228
3231
3229 2004-07-04 Fernando Perez <fperez@colorado.edu>
3232 2004-07-04 Fernando Perez <fperez@colorado.edu>
3230
3233
3231 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3234 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3232 escaping of quotes when calling the shell.
3235 escaping of quotes when calling the shell.
3233
3236
3234 2004-07-02 Fernando Perez <fperez@colorado.edu>
3237 2004-07-02 Fernando Perez <fperez@colorado.edu>
3235
3238
3236 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3239 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3237 gettext not working because we were clobbering '_'. Fixes
3240 gettext not working because we were clobbering '_'. Fixes
3238 http://www.scipy.net/roundup/ipython/issue6.
3241 http://www.scipy.net/roundup/ipython/issue6.
3239
3242
3240 2004-07-01 Fernando Perez <fperez@colorado.edu>
3243 2004-07-01 Fernando Perez <fperez@colorado.edu>
3241
3244
3242 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3245 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3243 into @cd. Patch by Ville.
3246 into @cd. Patch by Ville.
3244
3247
3245 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3248 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3246 new function to store things after ipmaker runs. Patch by Ville.
3249 new function to store things after ipmaker runs. Patch by Ville.
3247 Eventually this will go away once ipmaker is removed and the class
3250 Eventually this will go away once ipmaker is removed and the class
3248 gets cleaned up, but for now it's ok. Key functionality here is
3251 gets cleaned up, but for now it's ok. Key functionality here is
3249 the addition of the persistent storage mechanism, a dict for
3252 the addition of the persistent storage mechanism, a dict for
3250 keeping data across sessions (for now just bookmarks, but more can
3253 keeping data across sessions (for now just bookmarks, but more can
3251 be implemented later).
3254 be implemented later).
3252
3255
3253 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3256 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3254 persistent across sections. Patch by Ville, I modified it
3257 persistent across sections. Patch by Ville, I modified it
3255 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3258 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3256 added a '-l' option to list all bookmarks.
3259 added a '-l' option to list all bookmarks.
3257
3260
3258 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3261 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3259 center for cleanup. Registered with atexit.register(). I moved
3262 center for cleanup. Registered with atexit.register(). I moved
3260 here the old exit_cleanup(). After a patch by Ville.
3263 here the old exit_cleanup(). After a patch by Ville.
3261
3264
3262 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3265 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3263 characters in the hacked shlex_split for python 2.2.
3266 characters in the hacked shlex_split for python 2.2.
3264
3267
3265 * IPython/iplib.py (file_matches): more fixes to filenames with
3268 * IPython/iplib.py (file_matches): more fixes to filenames with
3266 whitespace in them. It's not perfect, but limitations in python's
3269 whitespace in them. It's not perfect, but limitations in python's
3267 readline make it impossible to go further.
3270 readline make it impossible to go further.
3268
3271
3269 2004-06-29 Fernando Perez <fperez@colorado.edu>
3272 2004-06-29 Fernando Perez <fperez@colorado.edu>
3270
3273
3271 * IPython/iplib.py (file_matches): escape whitespace correctly in
3274 * IPython/iplib.py (file_matches): escape whitespace correctly in
3272 filename completions. Bug reported by Ville.
3275 filename completions. Bug reported by Ville.
3273
3276
3274 2004-06-28 Fernando Perez <fperez@colorado.edu>
3277 2004-06-28 Fernando Perez <fperez@colorado.edu>
3275
3278
3276 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3279 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3277 the history file will be called 'history-PROFNAME' (or just
3280 the history file will be called 'history-PROFNAME' (or just
3278 'history' if no profile is loaded). I was getting annoyed at
3281 'history' if no profile is loaded). I was getting annoyed at
3279 getting my Numerical work history clobbered by pysh sessions.
3282 getting my Numerical work history clobbered by pysh sessions.
3280
3283
3281 * IPython/iplib.py (InteractiveShell.__init__): Internal
3284 * IPython/iplib.py (InteractiveShell.__init__): Internal
3282 getoutputerror() function so that we can honor the system_verbose
3285 getoutputerror() function so that we can honor the system_verbose
3283 flag for _all_ system calls. I also added escaping of #
3286 flag for _all_ system calls. I also added escaping of #
3284 characters here to avoid confusing Itpl.
3287 characters here to avoid confusing Itpl.
3285
3288
3286 * IPython/Magic.py (shlex_split): removed call to shell in
3289 * IPython/Magic.py (shlex_split): removed call to shell in
3287 parse_options and replaced it with shlex.split(). The annoying
3290 parse_options and replaced it with shlex.split(). The annoying
3288 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3291 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3289 to backport it from 2.3, with several frail hacks (the shlex
3292 to backport it from 2.3, with several frail hacks (the shlex
3290 module is rather limited in 2.2). Thanks to a suggestion by Ville
3293 module is rather limited in 2.2). Thanks to a suggestion by Ville
3291 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3294 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3292 problem.
3295 problem.
3293
3296
3294 (Magic.magic_system_verbose): new toggle to print the actual
3297 (Magic.magic_system_verbose): new toggle to print the actual
3295 system calls made by ipython. Mainly for debugging purposes.
3298 system calls made by ipython. Mainly for debugging purposes.
3296
3299
3297 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3300 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3298 doesn't support persistence. Reported (and fix suggested) by
3301 doesn't support persistence. Reported (and fix suggested) by
3299 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3302 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3300
3303
3301 2004-06-26 Fernando Perez <fperez@colorado.edu>
3304 2004-06-26 Fernando Perez <fperez@colorado.edu>
3302
3305
3303 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3306 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3304 continue prompts.
3307 continue prompts.
3305
3308
3306 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3309 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3307 function (basically a big docstring) and a few more things here to
3310 function (basically a big docstring) and a few more things here to
3308 speedup startup. pysh.py is now very lightweight. We want because
3311 speedup startup. pysh.py is now very lightweight. We want because
3309 it gets execfile'd, while InterpreterExec gets imported, so
3312 it gets execfile'd, while InterpreterExec gets imported, so
3310 byte-compilation saves time.
3313 byte-compilation saves time.
3311
3314
3312 2004-06-25 Fernando Perez <fperez@colorado.edu>
3315 2004-06-25 Fernando Perez <fperez@colorado.edu>
3313
3316
3314 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3317 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3315 -NUM', which was recently broken.
3318 -NUM', which was recently broken.
3316
3319
3317 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3320 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3318 in multi-line input (but not !!, which doesn't make sense there).
3321 in multi-line input (but not !!, which doesn't make sense there).
3319
3322
3320 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3323 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3321 It's just too useful, and people can turn it off in the less
3324 It's just too useful, and people can turn it off in the less
3322 common cases where it's a problem.
3325 common cases where it's a problem.
3323
3326
3324 2004-06-24 Fernando Perez <fperez@colorado.edu>
3327 2004-06-24 Fernando Perez <fperez@colorado.edu>
3325
3328
3326 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3329 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3327 special syntaxes (like alias calling) is now allied in multi-line
3330 special syntaxes (like alias calling) is now allied in multi-line
3328 input. This is still _very_ experimental, but it's necessary for
3331 input. This is still _very_ experimental, but it's necessary for
3329 efficient shell usage combining python looping syntax with system
3332 efficient shell usage combining python looping syntax with system
3330 calls. For now it's restricted to aliases, I don't think it
3333 calls. For now it's restricted to aliases, I don't think it
3331 really even makes sense to have this for magics.
3334 really even makes sense to have this for magics.
3332
3335
3333 2004-06-23 Fernando Perez <fperez@colorado.edu>
3336 2004-06-23 Fernando Perez <fperez@colorado.edu>
3334
3337
3335 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3338 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3336 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3339 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3337
3340
3338 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3341 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3339 extensions under Windows (after code sent by Gary Bishop). The
3342 extensions under Windows (after code sent by Gary Bishop). The
3340 extensions considered 'executable' are stored in IPython's rc
3343 extensions considered 'executable' are stored in IPython's rc
3341 structure as win_exec_ext.
3344 structure as win_exec_ext.
3342
3345
3343 * IPython/genutils.py (shell): new function, like system() but
3346 * IPython/genutils.py (shell): new function, like system() but
3344 without return value. Very useful for interactive shell work.
3347 without return value. Very useful for interactive shell work.
3345
3348
3346 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3349 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3347 delete aliases.
3350 delete aliases.
3348
3351
3349 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3352 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3350 sure that the alias table doesn't contain python keywords.
3353 sure that the alias table doesn't contain python keywords.
3351
3354
3352 2004-06-21 Fernando Perez <fperez@colorado.edu>
3355 2004-06-21 Fernando Perez <fperez@colorado.edu>
3353
3356
3354 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3357 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3355 non-existent items are found in $PATH. Reported by Thorsten.
3358 non-existent items are found in $PATH. Reported by Thorsten.
3356
3359
3357 2004-06-20 Fernando Perez <fperez@colorado.edu>
3360 2004-06-20 Fernando Perez <fperez@colorado.edu>
3358
3361
3359 * IPython/iplib.py (complete): modified the completer so that the
3362 * IPython/iplib.py (complete): modified the completer so that the
3360 order of priorities can be easily changed at runtime.
3363 order of priorities can be easily changed at runtime.
3361
3364
3362 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3365 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3363 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3366 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3364
3367
3365 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3368 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3366 expand Python variables prepended with $ in all system calls. The
3369 expand Python variables prepended with $ in all system calls. The
3367 same was done to InteractiveShell.handle_shell_escape. Now all
3370 same was done to InteractiveShell.handle_shell_escape. Now all
3368 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3371 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3369 expansion of python variables and expressions according to the
3372 expansion of python variables and expressions according to the
3370 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3373 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3371
3374
3372 Though PEP-215 has been rejected, a similar (but simpler) one
3375 Though PEP-215 has been rejected, a similar (but simpler) one
3373 seems like it will go into Python 2.4, PEP-292 -
3376 seems like it will go into Python 2.4, PEP-292 -
3374 http://www.python.org/peps/pep-0292.html.
3377 http://www.python.org/peps/pep-0292.html.
3375
3378
3376 I'll keep the full syntax of PEP-215, since IPython has since the
3379 I'll keep the full syntax of PEP-215, since IPython has since the
3377 start used Ka-Ping Yee's reference implementation discussed there
3380 start used Ka-Ping Yee's reference implementation discussed there
3378 (Itpl), and I actually like the powerful semantics it offers.
3381 (Itpl), and I actually like the powerful semantics it offers.
3379
3382
3380 In order to access normal shell variables, the $ has to be escaped
3383 In order to access normal shell variables, the $ has to be escaped
3381 via an extra $. For example:
3384 via an extra $. For example:
3382
3385
3383 In [7]: PATH='a python variable'
3386 In [7]: PATH='a python variable'
3384
3387
3385 In [8]: !echo $PATH
3388 In [8]: !echo $PATH
3386 a python variable
3389 a python variable
3387
3390
3388 In [9]: !echo $$PATH
3391 In [9]: !echo $$PATH
3389 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3392 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3390
3393
3391 (Magic.parse_options): escape $ so the shell doesn't evaluate
3394 (Magic.parse_options): escape $ so the shell doesn't evaluate
3392 things prematurely.
3395 things prematurely.
3393
3396
3394 * IPython/iplib.py (InteractiveShell.call_alias): added the
3397 * IPython/iplib.py (InteractiveShell.call_alias): added the
3395 ability for aliases to expand python variables via $.
3398 ability for aliases to expand python variables via $.
3396
3399
3397 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3400 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3398 system, now there's a @rehash/@rehashx pair of magics. These work
3401 system, now there's a @rehash/@rehashx pair of magics. These work
3399 like the csh rehash command, and can be invoked at any time. They
3402 like the csh rehash command, and can be invoked at any time. They
3400 build a table of aliases to everything in the user's $PATH
3403 build a table of aliases to everything in the user's $PATH
3401 (@rehash uses everything, @rehashx is slower but only adds
3404 (@rehash uses everything, @rehashx is slower but only adds
3402 executable files). With this, the pysh.py-based shell profile can
3405 executable files). With this, the pysh.py-based shell profile can
3403 now simply call rehash upon startup, and full access to all
3406 now simply call rehash upon startup, and full access to all
3404 programs in the user's path is obtained.
3407 programs in the user's path is obtained.
3405
3408
3406 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3409 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3407 functionality is now fully in place. I removed the old dynamic
3410 functionality is now fully in place. I removed the old dynamic
3408 code generation based approach, in favor of a much lighter one
3411 code generation based approach, in favor of a much lighter one
3409 based on a simple dict. The advantage is that this allows me to
3412 based on a simple dict. The advantage is that this allows me to
3410 now have thousands of aliases with negligible cost (unthinkable
3413 now have thousands of aliases with negligible cost (unthinkable
3411 with the old system).
3414 with the old system).
3412
3415
3413 2004-06-19 Fernando Perez <fperez@colorado.edu>
3416 2004-06-19 Fernando Perez <fperez@colorado.edu>
3414
3417
3415 * IPython/iplib.py (__init__): extended MagicCompleter class to
3418 * IPython/iplib.py (__init__): extended MagicCompleter class to
3416 also complete (last in priority) on user aliases.
3419 also complete (last in priority) on user aliases.
3417
3420
3418 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3421 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3419 call to eval.
3422 call to eval.
3420 (ItplNS.__init__): Added a new class which functions like Itpl,
3423 (ItplNS.__init__): Added a new class which functions like Itpl,
3421 but allows configuring the namespace for the evaluation to occur
3424 but allows configuring the namespace for the evaluation to occur
3422 in.
3425 in.
3423
3426
3424 2004-06-18 Fernando Perez <fperez@colorado.edu>
3427 2004-06-18 Fernando Perez <fperez@colorado.edu>
3425
3428
3426 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3429 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3427 better message when 'exit' or 'quit' are typed (a common newbie
3430 better message when 'exit' or 'quit' are typed (a common newbie
3428 confusion).
3431 confusion).
3429
3432
3430 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3433 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3431 check for Windows users.
3434 check for Windows users.
3432
3435
3433 * IPython/iplib.py (InteractiveShell.user_setup): removed
3436 * IPython/iplib.py (InteractiveShell.user_setup): removed
3434 disabling of colors for Windows. I'll test at runtime and issue a
3437 disabling of colors for Windows. I'll test at runtime and issue a
3435 warning if Gary's readline isn't found, as to nudge users to
3438 warning if Gary's readline isn't found, as to nudge users to
3436 download it.
3439 download it.
3437
3440
3438 2004-06-16 Fernando Perez <fperez@colorado.edu>
3441 2004-06-16 Fernando Perez <fperez@colorado.edu>
3439
3442
3440 * IPython/genutils.py (Stream.__init__): changed to print errors
3443 * IPython/genutils.py (Stream.__init__): changed to print errors
3441 to sys.stderr. I had a circular dependency here. Now it's
3444 to sys.stderr. I had a circular dependency here. Now it's
3442 possible to run ipython as IDLE's shell (consider this pre-alpha,
3445 possible to run ipython as IDLE's shell (consider this pre-alpha,
3443 since true stdout things end up in the starting terminal instead
3446 since true stdout things end up in the starting terminal instead
3444 of IDLE's out).
3447 of IDLE's out).
3445
3448
3446 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3449 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3447 users who haven't # updated their prompt_in2 definitions. Remove
3450 users who haven't # updated their prompt_in2 definitions. Remove
3448 eventually.
3451 eventually.
3449 (multiple_replace): added credit to original ASPN recipe.
3452 (multiple_replace): added credit to original ASPN recipe.
3450
3453
3451 2004-06-15 Fernando Perez <fperez@colorado.edu>
3454 2004-06-15 Fernando Perez <fperez@colorado.edu>
3452
3455
3453 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3456 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3454 list of auto-defined aliases.
3457 list of auto-defined aliases.
3455
3458
3456 2004-06-13 Fernando Perez <fperez@colorado.edu>
3459 2004-06-13 Fernando Perez <fperez@colorado.edu>
3457
3460
3458 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3461 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3459 install was really requested (so setup.py can be used for other
3462 install was really requested (so setup.py can be used for other
3460 things under Windows).
3463 things under Windows).
3461
3464
3462 2004-06-10 Fernando Perez <fperez@colorado.edu>
3465 2004-06-10 Fernando Perez <fperez@colorado.edu>
3463
3466
3464 * IPython/Logger.py (Logger.create_log): Manually remove any old
3467 * IPython/Logger.py (Logger.create_log): Manually remove any old
3465 backup, since os.remove may fail under Windows. Fixes bug
3468 backup, since os.remove may fail under Windows. Fixes bug
3466 reported by Thorsten.
3469 reported by Thorsten.
3467
3470
3468 2004-06-09 Fernando Perez <fperez@colorado.edu>
3471 2004-06-09 Fernando Perez <fperez@colorado.edu>
3469
3472
3470 * examples/example-embed.py: fixed all references to %n (replaced
3473 * examples/example-embed.py: fixed all references to %n (replaced
3471 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3474 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3472 for all examples and the manual as well.
3475 for all examples and the manual as well.
3473
3476
3474 2004-06-08 Fernando Perez <fperez@colorado.edu>
3477 2004-06-08 Fernando Perez <fperez@colorado.edu>
3475
3478
3476 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3479 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3477 alignment and color management. All 3 prompt subsystems now
3480 alignment and color management. All 3 prompt subsystems now
3478 inherit from BasePrompt.
3481 inherit from BasePrompt.
3479
3482
3480 * tools/release: updates for windows installer build and tag rpms
3483 * tools/release: updates for windows installer build and tag rpms
3481 with python version (since paths are fixed).
3484 with python version (since paths are fixed).
3482
3485
3483 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3486 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3484 which will become eventually obsolete. Also fixed the default
3487 which will become eventually obsolete. Also fixed the default
3485 prompt_in2 to use \D, so at least new users start with the correct
3488 prompt_in2 to use \D, so at least new users start with the correct
3486 defaults.
3489 defaults.
3487 WARNING: Users with existing ipythonrc files will need to apply
3490 WARNING: Users with existing ipythonrc files will need to apply
3488 this fix manually!
3491 this fix manually!
3489
3492
3490 * setup.py: make windows installer (.exe). This is finally the
3493 * setup.py: make windows installer (.exe). This is finally the
3491 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3494 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3492 which I hadn't included because it required Python 2.3 (or recent
3495 which I hadn't included because it required Python 2.3 (or recent
3493 distutils).
3496 distutils).
3494
3497
3495 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3498 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3496 usage of new '\D' escape.
3499 usage of new '\D' escape.
3497
3500
3498 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3501 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3499 lacks os.getuid())
3502 lacks os.getuid())
3500 (CachedOutput.set_colors): Added the ability to turn coloring
3503 (CachedOutput.set_colors): Added the ability to turn coloring
3501 on/off with @colors even for manually defined prompt colors. It
3504 on/off with @colors even for manually defined prompt colors. It
3502 uses a nasty global, but it works safely and via the generic color
3505 uses a nasty global, but it works safely and via the generic color
3503 handling mechanism.
3506 handling mechanism.
3504 (Prompt2.__init__): Introduced new escape '\D' for continuation
3507 (Prompt2.__init__): Introduced new escape '\D' for continuation
3505 prompts. It represents the counter ('\#') as dots.
3508 prompts. It represents the counter ('\#') as dots.
3506 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3509 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3507 need to update their ipythonrc files and replace '%n' with '\D' in
3510 need to update their ipythonrc files and replace '%n' with '\D' in
3508 their prompt_in2 settings everywhere. Sorry, but there's
3511 their prompt_in2 settings everywhere. Sorry, but there's
3509 otherwise no clean way to get all prompts to properly align. The
3512 otherwise no clean way to get all prompts to properly align. The
3510 ipythonrc shipped with IPython has been updated.
3513 ipythonrc shipped with IPython has been updated.
3511
3514
3512 2004-06-07 Fernando Perez <fperez@colorado.edu>
3515 2004-06-07 Fernando Perez <fperez@colorado.edu>
3513
3516
3514 * setup.py (isfile): Pass local_icons option to latex2html, so the
3517 * setup.py (isfile): Pass local_icons option to latex2html, so the
3515 resulting HTML file is self-contained. Thanks to
3518 resulting HTML file is self-contained. Thanks to
3516 dryice-AT-liu.com.cn for the tip.
3519 dryice-AT-liu.com.cn for the tip.
3517
3520
3518 * pysh.py: I created a new profile 'shell', which implements a
3521 * pysh.py: I created a new profile 'shell', which implements a
3519 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3522 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3520 system shell, nor will it become one anytime soon. It's mainly
3523 system shell, nor will it become one anytime soon. It's mainly
3521 meant to illustrate the use of the new flexible bash-like prompts.
3524 meant to illustrate the use of the new flexible bash-like prompts.
3522 I guess it could be used by hardy souls for true shell management,
3525 I guess it could be used by hardy souls for true shell management,
3523 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3526 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3524 profile. This uses the InterpreterExec extension provided by
3527 profile. This uses the InterpreterExec extension provided by
3525 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3528 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3526
3529
3527 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3530 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3528 auto-align itself with the length of the previous input prompt
3531 auto-align itself with the length of the previous input prompt
3529 (taking into account the invisible color escapes).
3532 (taking into account the invisible color escapes).
3530 (CachedOutput.__init__): Large restructuring of this class. Now
3533 (CachedOutput.__init__): Large restructuring of this class. Now
3531 all three prompts (primary1, primary2, output) are proper objects,
3534 all three prompts (primary1, primary2, output) are proper objects,
3532 managed by the 'parent' CachedOutput class. The code is still a
3535 managed by the 'parent' CachedOutput class. The code is still a
3533 bit hackish (all prompts share state via a pointer to the cache),
3536 bit hackish (all prompts share state via a pointer to the cache),
3534 but it's overall far cleaner than before.
3537 but it's overall far cleaner than before.
3535
3538
3536 * IPython/genutils.py (getoutputerror): modified to add verbose,
3539 * IPython/genutils.py (getoutputerror): modified to add verbose,
3537 debug and header options. This makes the interface of all getout*
3540 debug and header options. This makes the interface of all getout*
3538 functions uniform.
3541 functions uniform.
3539 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3542 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3540
3543
3541 * IPython/Magic.py (Magic.default_option): added a function to
3544 * IPython/Magic.py (Magic.default_option): added a function to
3542 allow registering default options for any magic command. This
3545 allow registering default options for any magic command. This
3543 makes it easy to have profiles which customize the magics globally
3546 makes it easy to have profiles which customize the magics globally
3544 for a certain use. The values set through this function are
3547 for a certain use. The values set through this function are
3545 picked up by the parse_options() method, which all magics should
3548 picked up by the parse_options() method, which all magics should
3546 use to parse their options.
3549 use to parse their options.
3547
3550
3548 * IPython/genutils.py (warn): modified the warnings framework to
3551 * IPython/genutils.py (warn): modified the warnings framework to
3549 use the Term I/O class. I'm trying to slowly unify all of
3552 use the Term I/O class. I'm trying to slowly unify all of
3550 IPython's I/O operations to pass through Term.
3553 IPython's I/O operations to pass through Term.
3551
3554
3552 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3555 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3553 the secondary prompt to correctly match the length of the primary
3556 the secondary prompt to correctly match the length of the primary
3554 one for any prompt. Now multi-line code will properly line up
3557 one for any prompt. Now multi-line code will properly line up
3555 even for path dependent prompts, such as the new ones available
3558 even for path dependent prompts, such as the new ones available
3556 via the prompt_specials.
3559 via the prompt_specials.
3557
3560
3558 2004-06-06 Fernando Perez <fperez@colorado.edu>
3561 2004-06-06 Fernando Perez <fperez@colorado.edu>
3559
3562
3560 * IPython/Prompts.py (prompt_specials): Added the ability to have
3563 * IPython/Prompts.py (prompt_specials): Added the ability to have
3561 bash-like special sequences in the prompts, which get
3564 bash-like special sequences in the prompts, which get
3562 automatically expanded. Things like hostname, current working
3565 automatically expanded. Things like hostname, current working
3563 directory and username are implemented already, but it's easy to
3566 directory and username are implemented already, but it's easy to
3564 add more in the future. Thanks to a patch by W.J. van der Laan
3567 add more in the future. Thanks to a patch by W.J. van der Laan
3565 <gnufnork-AT-hetdigitalegat.nl>
3568 <gnufnork-AT-hetdigitalegat.nl>
3566 (prompt_specials): Added color support for prompt strings, so
3569 (prompt_specials): Added color support for prompt strings, so
3567 users can define arbitrary color setups for their prompts.
3570 users can define arbitrary color setups for their prompts.
3568
3571
3569 2004-06-05 Fernando Perez <fperez@colorado.edu>
3572 2004-06-05 Fernando Perez <fperez@colorado.edu>
3570
3573
3571 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3574 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3572 code to load Gary Bishop's readline and configure it
3575 code to load Gary Bishop's readline and configure it
3573 automatically. Thanks to Gary for help on this.
3576 automatically. Thanks to Gary for help on this.
3574
3577
3575 2004-06-01 Fernando Perez <fperez@colorado.edu>
3578 2004-06-01 Fernando Perez <fperez@colorado.edu>
3576
3579
3577 * IPython/Logger.py (Logger.create_log): fix bug for logging
3580 * IPython/Logger.py (Logger.create_log): fix bug for logging
3578 with no filename (previous fix was incomplete).
3581 with no filename (previous fix was incomplete).
3579
3582
3580 2004-05-25 Fernando Perez <fperez@colorado.edu>
3583 2004-05-25 Fernando Perez <fperez@colorado.edu>
3581
3584
3582 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3585 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3583 parens would get passed to the shell.
3586 parens would get passed to the shell.
3584
3587
3585 2004-05-20 Fernando Perez <fperez@colorado.edu>
3588 2004-05-20 Fernando Perez <fperez@colorado.edu>
3586
3589
3587 * IPython/Magic.py (Magic.magic_prun): changed default profile
3590 * IPython/Magic.py (Magic.magic_prun): changed default profile
3588 sort order to 'time' (the more common profiling need).
3591 sort order to 'time' (the more common profiling need).
3589
3592
3590 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3593 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3591 so that source code shown is guaranteed in sync with the file on
3594 so that source code shown is guaranteed in sync with the file on
3592 disk (also changed in psource). Similar fix to the one for
3595 disk (also changed in psource). Similar fix to the one for
3593 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3596 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3594 <yann.ledu-AT-noos.fr>.
3597 <yann.ledu-AT-noos.fr>.
3595
3598
3596 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3599 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3597 with a single option would not be correctly parsed. Closes
3600 with a single option would not be correctly parsed. Closes
3598 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3601 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3599 introduced in 0.6.0 (on 2004-05-06).
3602 introduced in 0.6.0 (on 2004-05-06).
3600
3603
3601 2004-05-13 *** Released version 0.6.0
3604 2004-05-13 *** Released version 0.6.0
3602
3605
3603 2004-05-13 Fernando Perez <fperez@colorado.edu>
3606 2004-05-13 Fernando Perez <fperez@colorado.edu>
3604
3607
3605 * debian/: Added debian/ directory to CVS, so that debian support
3608 * debian/: Added debian/ directory to CVS, so that debian support
3606 is publicly accessible. The debian package is maintained by Jack
3609 is publicly accessible. The debian package is maintained by Jack
3607 Moffit <jack-AT-xiph.org>.
3610 Moffit <jack-AT-xiph.org>.
3608
3611
3609 * Documentation: included the notes about an ipython-based system
3612 * Documentation: included the notes about an ipython-based system
3610 shell (the hypothetical 'pysh') into the new_design.pdf document,
3613 shell (the hypothetical 'pysh') into the new_design.pdf document,
3611 so that these ideas get distributed to users along with the
3614 so that these ideas get distributed to users along with the
3612 official documentation.
3615 official documentation.
3613
3616
3614 2004-05-10 Fernando Perez <fperez@colorado.edu>
3617 2004-05-10 Fernando Perez <fperez@colorado.edu>
3615
3618
3616 * IPython/Logger.py (Logger.create_log): fix recently introduced
3619 * IPython/Logger.py (Logger.create_log): fix recently introduced
3617 bug (misindented line) where logstart would fail when not given an
3620 bug (misindented line) where logstart would fail when not given an
3618 explicit filename.
3621 explicit filename.
3619
3622
3620 2004-05-09 Fernando Perez <fperez@colorado.edu>
3623 2004-05-09 Fernando Perez <fperez@colorado.edu>
3621
3624
3622 * IPython/Magic.py (Magic.parse_options): skip system call when
3625 * IPython/Magic.py (Magic.parse_options): skip system call when
3623 there are no options to look for. Faster, cleaner for the common
3626 there are no options to look for. Faster, cleaner for the common
3624 case.
3627 case.
3625
3628
3626 * Documentation: many updates to the manual: describing Windows
3629 * Documentation: many updates to the manual: describing Windows
3627 support better, Gnuplot updates, credits, misc small stuff. Also
3630 support better, Gnuplot updates, credits, misc small stuff. Also
3628 updated the new_design doc a bit.
3631 updated the new_design doc a bit.
3629
3632
3630 2004-05-06 *** Released version 0.6.0.rc1
3633 2004-05-06 *** Released version 0.6.0.rc1
3631
3634
3632 2004-05-06 Fernando Perez <fperez@colorado.edu>
3635 2004-05-06 Fernando Perez <fperez@colorado.edu>
3633
3636
3634 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3637 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3635 operations to use the vastly more efficient list/''.join() method.
3638 operations to use the vastly more efficient list/''.join() method.
3636 (FormattedTB.text): Fix
3639 (FormattedTB.text): Fix
3637 http://www.scipy.net/roundup/ipython/issue12 - exception source
3640 http://www.scipy.net/roundup/ipython/issue12 - exception source
3638 extract not updated after reload. Thanks to Mike Salib
3641 extract not updated after reload. Thanks to Mike Salib
3639 <msalib-AT-mit.edu> for pinning the source of the problem.
3642 <msalib-AT-mit.edu> for pinning the source of the problem.
3640 Fortunately, the solution works inside ipython and doesn't require
3643 Fortunately, the solution works inside ipython and doesn't require
3641 any changes to python proper.
3644 any changes to python proper.
3642
3645
3643 * IPython/Magic.py (Magic.parse_options): Improved to process the
3646 * IPython/Magic.py (Magic.parse_options): Improved to process the
3644 argument list as a true shell would (by actually using the
3647 argument list as a true shell would (by actually using the
3645 underlying system shell). This way, all @magics automatically get
3648 underlying system shell). This way, all @magics automatically get
3646 shell expansion for variables. Thanks to a comment by Alex
3649 shell expansion for variables. Thanks to a comment by Alex
3647 Schmolck.
3650 Schmolck.
3648
3651
3649 2004-04-04 Fernando Perez <fperez@colorado.edu>
3652 2004-04-04 Fernando Perez <fperez@colorado.edu>
3650
3653
3651 * IPython/iplib.py (InteractiveShell.interact): Added a special
3654 * IPython/iplib.py (InteractiveShell.interact): Added a special
3652 trap for a debugger quit exception, which is basically impossible
3655 trap for a debugger quit exception, which is basically impossible
3653 to handle by normal mechanisms, given what pdb does to the stack.
3656 to handle by normal mechanisms, given what pdb does to the stack.
3654 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3657 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3655
3658
3656 2004-04-03 Fernando Perez <fperez@colorado.edu>
3659 2004-04-03 Fernando Perez <fperez@colorado.edu>
3657
3660
3658 * IPython/genutils.py (Term): Standardized the names of the Term
3661 * IPython/genutils.py (Term): Standardized the names of the Term
3659 class streams to cin/cout/cerr, following C++ naming conventions
3662 class streams to cin/cout/cerr, following C++ naming conventions
3660 (I can't use in/out/err because 'in' is not a valid attribute
3663 (I can't use in/out/err because 'in' is not a valid attribute
3661 name).
3664 name).
3662
3665
3663 * IPython/iplib.py (InteractiveShell.interact): don't increment
3666 * IPython/iplib.py (InteractiveShell.interact): don't increment
3664 the prompt if there's no user input. By Daniel 'Dang' Griffith
3667 the prompt if there's no user input. By Daniel 'Dang' Griffith
3665 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3668 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3666 Francois Pinard.
3669 Francois Pinard.
3667
3670
3668 2004-04-02 Fernando Perez <fperez@colorado.edu>
3671 2004-04-02 Fernando Perez <fperez@colorado.edu>
3669
3672
3670 * IPython/genutils.py (Stream.__init__): Modified to survive at
3673 * IPython/genutils.py (Stream.__init__): Modified to survive at
3671 least importing in contexts where stdin/out/err aren't true file
3674 least importing in contexts where stdin/out/err aren't true file
3672 objects, such as PyCrust (they lack fileno() and mode). However,
3675 objects, such as PyCrust (they lack fileno() and mode). However,
3673 the recovery facilities which rely on these things existing will
3676 the recovery facilities which rely on these things existing will
3674 not work.
3677 not work.
3675
3678
3676 2004-04-01 Fernando Perez <fperez@colorado.edu>
3679 2004-04-01 Fernando Perez <fperez@colorado.edu>
3677
3680
3678 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3681 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3679 use the new getoutputerror() function, so it properly
3682 use the new getoutputerror() function, so it properly
3680 distinguishes stdout/err.
3683 distinguishes stdout/err.
3681
3684
3682 * IPython/genutils.py (getoutputerror): added a function to
3685 * IPython/genutils.py (getoutputerror): added a function to
3683 capture separately the standard output and error of a command.
3686 capture separately the standard output and error of a command.
3684 After a comment from dang on the mailing lists. This code is
3687 After a comment from dang on the mailing lists. This code is
3685 basically a modified version of commands.getstatusoutput(), from
3688 basically a modified version of commands.getstatusoutput(), from
3686 the standard library.
3689 the standard library.
3687
3690
3688 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3691 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3689 '!!' as a special syntax (shorthand) to access @sx.
3692 '!!' as a special syntax (shorthand) to access @sx.
3690
3693
3691 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3694 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3692 command and return its output as a list split on '\n'.
3695 command and return its output as a list split on '\n'.
3693
3696
3694 2004-03-31 Fernando Perez <fperez@colorado.edu>
3697 2004-03-31 Fernando Perez <fperez@colorado.edu>
3695
3698
3696 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3699 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3697 method to dictionaries used as FakeModule instances if they lack
3700 method to dictionaries used as FakeModule instances if they lack
3698 it. At least pydoc in python2.3 breaks for runtime-defined
3701 it. At least pydoc in python2.3 breaks for runtime-defined
3699 functions without this hack. At some point I need to _really_
3702 functions without this hack. At some point I need to _really_
3700 understand what FakeModule is doing, because it's a gross hack.
3703 understand what FakeModule is doing, because it's a gross hack.
3701 But it solves Arnd's problem for now...
3704 But it solves Arnd's problem for now...
3702
3705
3703 2004-02-27 Fernando Perez <fperez@colorado.edu>
3706 2004-02-27 Fernando Perez <fperez@colorado.edu>
3704
3707
3705 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3708 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3706 mode would behave erratically. Also increased the number of
3709 mode would behave erratically. Also increased the number of
3707 possible logs in rotate mod to 999. Thanks to Rod Holland
3710 possible logs in rotate mod to 999. Thanks to Rod Holland
3708 <rhh@StructureLABS.com> for the report and fixes.
3711 <rhh@StructureLABS.com> for the report and fixes.
3709
3712
3710 2004-02-26 Fernando Perez <fperez@colorado.edu>
3713 2004-02-26 Fernando Perez <fperez@colorado.edu>
3711
3714
3712 * IPython/genutils.py (page): Check that the curses module really
3715 * IPython/genutils.py (page): Check that the curses module really
3713 has the initscr attribute before trying to use it. For some
3716 has the initscr attribute before trying to use it. For some
3714 reason, the Solaris curses module is missing this. I think this
3717 reason, the Solaris curses module is missing this. I think this
3715 should be considered a Solaris python bug, but I'm not sure.
3718 should be considered a Solaris python bug, but I'm not sure.
3716
3719
3717 2004-01-17 Fernando Perez <fperez@colorado.edu>
3720 2004-01-17 Fernando Perez <fperez@colorado.edu>
3718
3721
3719 * IPython/genutils.py (Stream.__init__): Changes to try to make
3722 * IPython/genutils.py (Stream.__init__): Changes to try to make
3720 ipython robust against stdin/out/err being closed by the user.
3723 ipython robust against stdin/out/err being closed by the user.
3721 This is 'user error' (and blocks a normal python session, at least
3724 This is 'user error' (and blocks a normal python session, at least
3722 the stdout case). However, Ipython should be able to survive such
3725 the stdout case). However, Ipython should be able to survive such
3723 instances of abuse as gracefully as possible. To simplify the
3726 instances of abuse as gracefully as possible. To simplify the
3724 coding and maintain compatibility with Gary Bishop's Term
3727 coding and maintain compatibility with Gary Bishop's Term
3725 contributions, I've made use of classmethods for this. I think
3728 contributions, I've made use of classmethods for this. I think
3726 this introduces a dependency on python 2.2.
3729 this introduces a dependency on python 2.2.
3727
3730
3728 2004-01-13 Fernando Perez <fperez@colorado.edu>
3731 2004-01-13 Fernando Perez <fperez@colorado.edu>
3729
3732
3730 * IPython/numutils.py (exp_safe): simplified the code a bit and
3733 * IPython/numutils.py (exp_safe): simplified the code a bit and
3731 removed the need for importing the kinds module altogether.
3734 removed the need for importing the kinds module altogether.
3732
3735
3733 2004-01-06 Fernando Perez <fperez@colorado.edu>
3736 2004-01-06 Fernando Perez <fperez@colorado.edu>
3734
3737
3735 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3738 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3736 a magic function instead, after some community feedback. No
3739 a magic function instead, after some community feedback. No
3737 special syntax will exist for it, but its name is deliberately
3740 special syntax will exist for it, but its name is deliberately
3738 very short.
3741 very short.
3739
3742
3740 2003-12-20 Fernando Perez <fperez@colorado.edu>
3743 2003-12-20 Fernando Perez <fperez@colorado.edu>
3741
3744
3742 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3745 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3743 new functionality, to automagically assign the result of a shell
3746 new functionality, to automagically assign the result of a shell
3744 command to a variable. I'll solicit some community feedback on
3747 command to a variable. I'll solicit some community feedback on
3745 this before making it permanent.
3748 this before making it permanent.
3746
3749
3747 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3750 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3748 requested about callables for which inspect couldn't obtain a
3751 requested about callables for which inspect couldn't obtain a
3749 proper argspec. Thanks to a crash report sent by Etienne
3752 proper argspec. Thanks to a crash report sent by Etienne
3750 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3753 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3751
3754
3752 2003-12-09 Fernando Perez <fperez@colorado.edu>
3755 2003-12-09 Fernando Perez <fperez@colorado.edu>
3753
3756
3754 * IPython/genutils.py (page): patch for the pager to work across
3757 * IPython/genutils.py (page): patch for the pager to work across
3755 various versions of Windows. By Gary Bishop.
3758 various versions of Windows. By Gary Bishop.
3756
3759
3757 2003-12-04 Fernando Perez <fperez@colorado.edu>
3760 2003-12-04 Fernando Perez <fperez@colorado.edu>
3758
3761
3759 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3762 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3760 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3763 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3761 While I tested this and it looks ok, there may still be corner
3764 While I tested this and it looks ok, there may still be corner
3762 cases I've missed.
3765 cases I've missed.
3763
3766
3764 2003-12-01 Fernando Perez <fperez@colorado.edu>
3767 2003-12-01 Fernando Perez <fperez@colorado.edu>
3765
3768
3766 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3769 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3767 where a line like 'p,q=1,2' would fail because the automagic
3770 where a line like 'p,q=1,2' would fail because the automagic
3768 system would be triggered for @p.
3771 system would be triggered for @p.
3769
3772
3770 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3773 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3771 cleanups, code unmodified.
3774 cleanups, code unmodified.
3772
3775
3773 * IPython/genutils.py (Term): added a class for IPython to handle
3776 * IPython/genutils.py (Term): added a class for IPython to handle
3774 output. In most cases it will just be a proxy for stdout/err, but
3777 output. In most cases it will just be a proxy for stdout/err, but
3775 having this allows modifications to be made for some platforms,
3778 having this allows modifications to be made for some platforms,
3776 such as handling color escapes under Windows. All of this code
3779 such as handling color escapes under Windows. All of this code
3777 was contributed by Gary Bishop, with minor modifications by me.
3780 was contributed by Gary Bishop, with minor modifications by me.
3778 The actual changes affect many files.
3781 The actual changes affect many files.
3779
3782
3780 2003-11-30 Fernando Perez <fperez@colorado.edu>
3783 2003-11-30 Fernando Perez <fperez@colorado.edu>
3781
3784
3782 * IPython/iplib.py (file_matches): new completion code, courtesy
3785 * IPython/iplib.py (file_matches): new completion code, courtesy
3783 of Jeff Collins. This enables filename completion again under
3786 of Jeff Collins. This enables filename completion again under
3784 python 2.3, which disabled it at the C level.
3787 python 2.3, which disabled it at the C level.
3785
3788
3786 2003-11-11 Fernando Perez <fperez@colorado.edu>
3789 2003-11-11 Fernando Perez <fperez@colorado.edu>
3787
3790
3788 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3791 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3789 for Numeric.array(map(...)), but often convenient.
3792 for Numeric.array(map(...)), but often convenient.
3790
3793
3791 2003-11-05 Fernando Perez <fperez@colorado.edu>
3794 2003-11-05 Fernando Perez <fperez@colorado.edu>
3792
3795
3793 * IPython/numutils.py (frange): Changed a call from int() to
3796 * IPython/numutils.py (frange): Changed a call from int() to
3794 int(round()) to prevent a problem reported with arange() in the
3797 int(round()) to prevent a problem reported with arange() in the
3795 numpy list.
3798 numpy list.
3796
3799
3797 2003-10-06 Fernando Perez <fperez@colorado.edu>
3800 2003-10-06 Fernando Perez <fperez@colorado.edu>
3798
3801
3799 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3802 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3800 prevent crashes if sys lacks an argv attribute (it happens with
3803 prevent crashes if sys lacks an argv attribute (it happens with
3801 embedded interpreters which build a bare-bones sys module).
3804 embedded interpreters which build a bare-bones sys module).
3802 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3805 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3803
3806
3804 2003-09-24 Fernando Perez <fperez@colorado.edu>
3807 2003-09-24 Fernando Perez <fperez@colorado.edu>
3805
3808
3806 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3809 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3807 to protect against poorly written user objects where __getattr__
3810 to protect against poorly written user objects where __getattr__
3808 raises exceptions other than AttributeError. Thanks to a bug
3811 raises exceptions other than AttributeError. Thanks to a bug
3809 report by Oliver Sander <osander-AT-gmx.de>.
3812 report by Oliver Sander <osander-AT-gmx.de>.
3810
3813
3811 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3814 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3812 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3815 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3813
3816
3814 2003-09-09 Fernando Perez <fperez@colorado.edu>
3817 2003-09-09 Fernando Perez <fperez@colorado.edu>
3815
3818
3816 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3819 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3817 unpacking a list whith a callable as first element would
3820 unpacking a list whith a callable as first element would
3818 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3821 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3819 Collins.
3822 Collins.
3820
3823
3821 2003-08-25 *** Released version 0.5.0
3824 2003-08-25 *** Released version 0.5.0
3822
3825
3823 2003-08-22 Fernando Perez <fperez@colorado.edu>
3826 2003-08-22 Fernando Perez <fperez@colorado.edu>
3824
3827
3825 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3828 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3826 improperly defined user exceptions. Thanks to feedback from Mark
3829 improperly defined user exceptions. Thanks to feedback from Mark
3827 Russell <mrussell-AT-verio.net>.
3830 Russell <mrussell-AT-verio.net>.
3828
3831
3829 2003-08-20 Fernando Perez <fperez@colorado.edu>
3832 2003-08-20 Fernando Perez <fperez@colorado.edu>
3830
3833
3831 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3834 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3832 printing so that it would print multi-line string forms starting
3835 printing so that it would print multi-line string forms starting
3833 with a new line. This way the formatting is better respected for
3836 with a new line. This way the formatting is better respected for
3834 objects which work hard to make nice string forms.
3837 objects which work hard to make nice string forms.
3835
3838
3836 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3839 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3837 autocall would overtake data access for objects with both
3840 autocall would overtake data access for objects with both
3838 __getitem__ and __call__.
3841 __getitem__ and __call__.
3839
3842
3840 2003-08-19 *** Released version 0.5.0-rc1
3843 2003-08-19 *** Released version 0.5.0-rc1
3841
3844
3842 2003-08-19 Fernando Perez <fperez@colorado.edu>
3845 2003-08-19 Fernando Perez <fperez@colorado.edu>
3843
3846
3844 * IPython/deep_reload.py (load_tail): single tiny change here
3847 * IPython/deep_reload.py (load_tail): single tiny change here
3845 seems to fix the long-standing bug of dreload() failing to work
3848 seems to fix the long-standing bug of dreload() failing to work
3846 for dotted names. But this module is pretty tricky, so I may have
3849 for dotted names. But this module is pretty tricky, so I may have
3847 missed some subtlety. Needs more testing!.
3850 missed some subtlety. Needs more testing!.
3848
3851
3849 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3852 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3850 exceptions which have badly implemented __str__ methods.
3853 exceptions which have badly implemented __str__ methods.
3851 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3854 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3852 which I've been getting reports about from Python 2.3 users. I
3855 which I've been getting reports about from Python 2.3 users. I
3853 wish I had a simple test case to reproduce the problem, so I could
3856 wish I had a simple test case to reproduce the problem, so I could
3854 either write a cleaner workaround or file a bug report if
3857 either write a cleaner workaround or file a bug report if
3855 necessary.
3858 necessary.
3856
3859
3857 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3860 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3858 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3861 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3859 a bug report by Tjabo Kloppenburg.
3862 a bug report by Tjabo Kloppenburg.
3860
3863
3861 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3864 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3862 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3865 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3863 seems rather unstable. Thanks to a bug report by Tjabo
3866 seems rather unstable. Thanks to a bug report by Tjabo
3864 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3867 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3865
3868
3866 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3869 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3867 this out soon because of the critical fixes in the inner loop for
3870 this out soon because of the critical fixes in the inner loop for
3868 generators.
3871 generators.
3869
3872
3870 * IPython/Magic.py (Magic.getargspec): removed. This (and
3873 * IPython/Magic.py (Magic.getargspec): removed. This (and
3871 _get_def) have been obsoleted by OInspect for a long time, I
3874 _get_def) have been obsoleted by OInspect for a long time, I
3872 hadn't noticed that they were dead code.
3875 hadn't noticed that they were dead code.
3873 (Magic._ofind): restored _ofind functionality for a few literals
3876 (Magic._ofind): restored _ofind functionality for a few literals
3874 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3877 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3875 for things like "hello".capitalize?, since that would require a
3878 for things like "hello".capitalize?, since that would require a
3876 potentially dangerous eval() again.
3879 potentially dangerous eval() again.
3877
3880
3878 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3881 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3879 logic a bit more to clean up the escapes handling and minimize the
3882 logic a bit more to clean up the escapes handling and minimize the
3880 use of _ofind to only necessary cases. The interactive 'feel' of
3883 use of _ofind to only necessary cases. The interactive 'feel' of
3881 IPython should have improved quite a bit with the changes in
3884 IPython should have improved quite a bit with the changes in
3882 _prefilter and _ofind (besides being far safer than before).
3885 _prefilter and _ofind (besides being far safer than before).
3883
3886
3884 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3887 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3885 obscure, never reported). Edit would fail to find the object to
3888 obscure, never reported). Edit would fail to find the object to
3886 edit under some circumstances.
3889 edit under some circumstances.
3887 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3890 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3888 which were causing double-calling of generators. Those eval calls
3891 which were causing double-calling of generators. Those eval calls
3889 were _very_ dangerous, since code with side effects could be
3892 were _very_ dangerous, since code with side effects could be
3890 triggered. As they say, 'eval is evil'... These were the
3893 triggered. As they say, 'eval is evil'... These were the
3891 nastiest evals in IPython. Besides, _ofind is now far simpler,
3894 nastiest evals in IPython. Besides, _ofind is now far simpler,
3892 and it should also be quite a bit faster. Its use of inspect is
3895 and it should also be quite a bit faster. Its use of inspect is
3893 also safer, so perhaps some of the inspect-related crashes I've
3896 also safer, so perhaps some of the inspect-related crashes I've
3894 seen lately with Python 2.3 might be taken care of. That will
3897 seen lately with Python 2.3 might be taken care of. That will
3895 need more testing.
3898 need more testing.
3896
3899
3897 2003-08-17 Fernando Perez <fperez@colorado.edu>
3900 2003-08-17 Fernando Perez <fperez@colorado.edu>
3898
3901
3899 * IPython/iplib.py (InteractiveShell._prefilter): significant
3902 * IPython/iplib.py (InteractiveShell._prefilter): significant
3900 simplifications to the logic for handling user escapes. Faster
3903 simplifications to the logic for handling user escapes. Faster
3901 and simpler code.
3904 and simpler code.
3902
3905
3903 2003-08-14 Fernando Perez <fperez@colorado.edu>
3906 2003-08-14 Fernando Perez <fperez@colorado.edu>
3904
3907
3905 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3908 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3906 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3909 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3907 but it should be quite a bit faster. And the recursive version
3910 but it should be quite a bit faster. And the recursive version
3908 generated O(log N) intermediate storage for all rank>1 arrays,
3911 generated O(log N) intermediate storage for all rank>1 arrays,
3909 even if they were contiguous.
3912 even if they were contiguous.
3910 (l1norm): Added this function.
3913 (l1norm): Added this function.
3911 (norm): Added this function for arbitrary norms (including
3914 (norm): Added this function for arbitrary norms (including
3912 l-infinity). l1 and l2 are still special cases for convenience
3915 l-infinity). l1 and l2 are still special cases for convenience
3913 and speed.
3916 and speed.
3914
3917
3915 2003-08-03 Fernando Perez <fperez@colorado.edu>
3918 2003-08-03 Fernando Perez <fperez@colorado.edu>
3916
3919
3917 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3920 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3918 exceptions, which now raise PendingDeprecationWarnings in Python
3921 exceptions, which now raise PendingDeprecationWarnings in Python
3919 2.3. There were some in Magic and some in Gnuplot2.
3922 2.3. There were some in Magic and some in Gnuplot2.
3920
3923
3921 2003-06-30 Fernando Perez <fperez@colorado.edu>
3924 2003-06-30 Fernando Perez <fperez@colorado.edu>
3922
3925
3923 * IPython/genutils.py (page): modified to call curses only for
3926 * IPython/genutils.py (page): modified to call curses only for
3924 terminals where TERM=='xterm'. After problems under many other
3927 terminals where TERM=='xterm'. After problems under many other
3925 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3928 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3926
3929
3927 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3930 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3928 would be triggered when readline was absent. This was just an old
3931 would be triggered when readline was absent. This was just an old
3929 debugging statement I'd forgotten to take out.
3932 debugging statement I'd forgotten to take out.
3930
3933
3931 2003-06-20 Fernando Perez <fperez@colorado.edu>
3934 2003-06-20 Fernando Perez <fperez@colorado.edu>
3932
3935
3933 * IPython/genutils.py (clock): modified to return only user time
3936 * IPython/genutils.py (clock): modified to return only user time
3934 (not counting system time), after a discussion on scipy. While
3937 (not counting system time), after a discussion on scipy. While
3935 system time may be a useful quantity occasionally, it may much
3938 system time may be a useful quantity occasionally, it may much
3936 more easily be skewed by occasional swapping or other similar
3939 more easily be skewed by occasional swapping or other similar
3937 activity.
3940 activity.
3938
3941
3939 2003-06-05 Fernando Perez <fperez@colorado.edu>
3942 2003-06-05 Fernando Perez <fperez@colorado.edu>
3940
3943
3941 * IPython/numutils.py (identity): new function, for building
3944 * IPython/numutils.py (identity): new function, for building
3942 arbitrary rank Kronecker deltas (mostly backwards compatible with
3945 arbitrary rank Kronecker deltas (mostly backwards compatible with
3943 Numeric.identity)
3946 Numeric.identity)
3944
3947
3945 2003-06-03 Fernando Perez <fperez@colorado.edu>
3948 2003-06-03 Fernando Perez <fperez@colorado.edu>
3946
3949
3947 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3950 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3948 arguments passed to magics with spaces, to allow trailing '\' to
3951 arguments passed to magics with spaces, to allow trailing '\' to
3949 work normally (mainly for Windows users).
3952 work normally (mainly for Windows users).
3950
3953
3951 2003-05-29 Fernando Perez <fperez@colorado.edu>
3954 2003-05-29 Fernando Perez <fperez@colorado.edu>
3952
3955
3953 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3956 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3954 instead of pydoc.help. This fixes a bizarre behavior where
3957 instead of pydoc.help. This fixes a bizarre behavior where
3955 printing '%s' % locals() would trigger the help system. Now
3958 printing '%s' % locals() would trigger the help system. Now
3956 ipython behaves like normal python does.
3959 ipython behaves like normal python does.
3957
3960
3958 Note that if one does 'from pydoc import help', the bizarre
3961 Note that if one does 'from pydoc import help', the bizarre
3959 behavior returns, but this will also happen in normal python, so
3962 behavior returns, but this will also happen in normal python, so
3960 it's not an ipython bug anymore (it has to do with how pydoc.help
3963 it's not an ipython bug anymore (it has to do with how pydoc.help
3961 is implemented).
3964 is implemented).
3962
3965
3963 2003-05-22 Fernando Perez <fperez@colorado.edu>
3966 2003-05-22 Fernando Perez <fperez@colorado.edu>
3964
3967
3965 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3968 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3966 return [] instead of None when nothing matches, also match to end
3969 return [] instead of None when nothing matches, also match to end
3967 of line. Patch by Gary Bishop.
3970 of line. Patch by Gary Bishop.
3968
3971
3969 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3972 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3970 protection as before, for files passed on the command line. This
3973 protection as before, for files passed on the command line. This
3971 prevents the CrashHandler from kicking in if user files call into
3974 prevents the CrashHandler from kicking in if user files call into
3972 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3975 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3973 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3976 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3974
3977
3975 2003-05-20 *** Released version 0.4.0
3978 2003-05-20 *** Released version 0.4.0
3976
3979
3977 2003-05-20 Fernando Perez <fperez@colorado.edu>
3980 2003-05-20 Fernando Perez <fperez@colorado.edu>
3978
3981
3979 * setup.py: added support for manpages. It's a bit hackish b/c of
3982 * setup.py: added support for manpages. It's a bit hackish b/c of
3980 a bug in the way the bdist_rpm distutils target handles gzipped
3983 a bug in the way the bdist_rpm distutils target handles gzipped
3981 manpages, but it works. After a patch by Jack.
3984 manpages, but it works. After a patch by Jack.
3982
3985
3983 2003-05-19 Fernando Perez <fperez@colorado.edu>
3986 2003-05-19 Fernando Perez <fperez@colorado.edu>
3984
3987
3985 * IPython/numutils.py: added a mockup of the kinds module, since
3988 * IPython/numutils.py: added a mockup of the kinds module, since
3986 it was recently removed from Numeric. This way, numutils will
3989 it was recently removed from Numeric. This way, numutils will
3987 work for all users even if they are missing kinds.
3990 work for all users even if they are missing kinds.
3988
3991
3989 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3992 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3990 failure, which can occur with SWIG-wrapped extensions. After a
3993 failure, which can occur with SWIG-wrapped extensions. After a
3991 crash report from Prabhu.
3994 crash report from Prabhu.
3992
3995
3993 2003-05-16 Fernando Perez <fperez@colorado.edu>
3996 2003-05-16 Fernando Perez <fperez@colorado.edu>
3994
3997
3995 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3998 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3996 protect ipython from user code which may call directly
3999 protect ipython from user code which may call directly
3997 sys.excepthook (this looks like an ipython crash to the user, even
4000 sys.excepthook (this looks like an ipython crash to the user, even
3998 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4001 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3999 This is especially important to help users of WxWindows, but may
4002 This is especially important to help users of WxWindows, but may
4000 also be useful in other cases.
4003 also be useful in other cases.
4001
4004
4002 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4005 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4003 an optional tb_offset to be specified, and to preserve exception
4006 an optional tb_offset to be specified, and to preserve exception
4004 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4007 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4005
4008
4006 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4009 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4007
4010
4008 2003-05-15 Fernando Perez <fperez@colorado.edu>
4011 2003-05-15 Fernando Perez <fperez@colorado.edu>
4009
4012
4010 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4013 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4011 installing for a new user under Windows.
4014 installing for a new user under Windows.
4012
4015
4013 2003-05-12 Fernando Perez <fperez@colorado.edu>
4016 2003-05-12 Fernando Perez <fperez@colorado.edu>
4014
4017
4015 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4018 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4016 handler for Emacs comint-based lines. Currently it doesn't do
4019 handler for Emacs comint-based lines. Currently it doesn't do
4017 much (but importantly, it doesn't update the history cache). In
4020 much (but importantly, it doesn't update the history cache). In
4018 the future it may be expanded if Alex needs more functionality
4021 the future it may be expanded if Alex needs more functionality
4019 there.
4022 there.
4020
4023
4021 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4024 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4022 info to crash reports.
4025 info to crash reports.
4023
4026
4024 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4027 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4025 just like Python's -c. Also fixed crash with invalid -color
4028 just like Python's -c. Also fixed crash with invalid -color
4026 option value at startup. Thanks to Will French
4029 option value at startup. Thanks to Will French
4027 <wfrench-AT-bestweb.net> for the bug report.
4030 <wfrench-AT-bestweb.net> for the bug report.
4028
4031
4029 2003-05-09 Fernando Perez <fperez@colorado.edu>
4032 2003-05-09 Fernando Perez <fperez@colorado.edu>
4030
4033
4031 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4034 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4032 to EvalDict (it's a mapping, after all) and simplified its code
4035 to EvalDict (it's a mapping, after all) and simplified its code
4033 quite a bit, after a nice discussion on c.l.py where Gustavo
4036 quite a bit, after a nice discussion on c.l.py where Gustavo
4034 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4037 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4035
4038
4036 2003-04-30 Fernando Perez <fperez@colorado.edu>
4039 2003-04-30 Fernando Perez <fperez@colorado.edu>
4037
4040
4038 * IPython/genutils.py (timings_out): modified it to reduce its
4041 * IPython/genutils.py (timings_out): modified it to reduce its
4039 overhead in the common reps==1 case.
4042 overhead in the common reps==1 case.
4040
4043
4041 2003-04-29 Fernando Perez <fperez@colorado.edu>
4044 2003-04-29 Fernando Perez <fperez@colorado.edu>
4042
4045
4043 * IPython/genutils.py (timings_out): Modified to use the resource
4046 * IPython/genutils.py (timings_out): Modified to use the resource
4044 module, which avoids the wraparound problems of time.clock().
4047 module, which avoids the wraparound problems of time.clock().
4045
4048
4046 2003-04-17 *** Released version 0.2.15pre4
4049 2003-04-17 *** Released version 0.2.15pre4
4047
4050
4048 2003-04-17 Fernando Perez <fperez@colorado.edu>
4051 2003-04-17 Fernando Perez <fperez@colorado.edu>
4049
4052
4050 * setup.py (scriptfiles): Split windows-specific stuff over to a
4053 * setup.py (scriptfiles): Split windows-specific stuff over to a
4051 separate file, in an attempt to have a Windows GUI installer.
4054 separate file, in an attempt to have a Windows GUI installer.
4052 That didn't work, but part of the groundwork is done.
4055 That didn't work, but part of the groundwork is done.
4053
4056
4054 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4057 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4055 indent/unindent with 4 spaces. Particularly useful in combination
4058 indent/unindent with 4 spaces. Particularly useful in combination
4056 with the new auto-indent option.
4059 with the new auto-indent option.
4057
4060
4058 2003-04-16 Fernando Perez <fperez@colorado.edu>
4061 2003-04-16 Fernando Perez <fperez@colorado.edu>
4059
4062
4060 * IPython/Magic.py: various replacements of self.rc for
4063 * IPython/Magic.py: various replacements of self.rc for
4061 self.shell.rc. A lot more remains to be done to fully disentangle
4064 self.shell.rc. A lot more remains to be done to fully disentangle
4062 this class from the main Shell class.
4065 this class from the main Shell class.
4063
4066
4064 * IPython/GnuplotRuntime.py: added checks for mouse support so
4067 * IPython/GnuplotRuntime.py: added checks for mouse support so
4065 that we don't try to enable it if the current gnuplot doesn't
4068 that we don't try to enable it if the current gnuplot doesn't
4066 really support it. Also added checks so that we don't try to
4069 really support it. Also added checks so that we don't try to
4067 enable persist under Windows (where Gnuplot doesn't recognize the
4070 enable persist under Windows (where Gnuplot doesn't recognize the
4068 option).
4071 option).
4069
4072
4070 * IPython/iplib.py (InteractiveShell.interact): Added optional
4073 * IPython/iplib.py (InteractiveShell.interact): Added optional
4071 auto-indenting code, after a patch by King C. Shu
4074 auto-indenting code, after a patch by King C. Shu
4072 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4075 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4073 get along well with pasting indented code. If I ever figure out
4076 get along well with pasting indented code. If I ever figure out
4074 how to make that part go well, it will become on by default.
4077 how to make that part go well, it will become on by default.
4075
4078
4076 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4079 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4077 crash ipython if there was an unmatched '%' in the user's prompt
4080 crash ipython if there was an unmatched '%' in the user's prompt
4078 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4081 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4079
4082
4080 * IPython/iplib.py (InteractiveShell.interact): removed the
4083 * IPython/iplib.py (InteractiveShell.interact): removed the
4081 ability to ask the user whether he wants to crash or not at the
4084 ability to ask the user whether he wants to crash or not at the
4082 'last line' exception handler. Calling functions at that point
4085 'last line' exception handler. Calling functions at that point
4083 changes the stack, and the error reports would have incorrect
4086 changes the stack, and the error reports would have incorrect
4084 tracebacks.
4087 tracebacks.
4085
4088
4086 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4089 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4087 pass through a peger a pretty-printed form of any object. After a
4090 pass through a peger a pretty-printed form of any object. After a
4088 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4091 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4089
4092
4090 2003-04-14 Fernando Perez <fperez@colorado.edu>
4093 2003-04-14 Fernando Perez <fperez@colorado.edu>
4091
4094
4092 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4095 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4093 all files in ~ would be modified at first install (instead of
4096 all files in ~ would be modified at first install (instead of
4094 ~/.ipython). This could be potentially disastrous, as the
4097 ~/.ipython). This could be potentially disastrous, as the
4095 modification (make line-endings native) could damage binary files.
4098 modification (make line-endings native) could damage binary files.
4096
4099
4097 2003-04-10 Fernando Perez <fperez@colorado.edu>
4100 2003-04-10 Fernando Perez <fperez@colorado.edu>
4098
4101
4099 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4102 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4100 handle only lines which are invalid python. This now means that
4103 handle only lines which are invalid python. This now means that
4101 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4104 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4102 for the bug report.
4105 for the bug report.
4103
4106
4104 2003-04-01 Fernando Perez <fperez@colorado.edu>
4107 2003-04-01 Fernando Perez <fperez@colorado.edu>
4105
4108
4106 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4109 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4107 where failing to set sys.last_traceback would crash pdb.pm().
4110 where failing to set sys.last_traceback would crash pdb.pm().
4108 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4111 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4109 report.
4112 report.
4110
4113
4111 2003-03-25 Fernando Perez <fperez@colorado.edu>
4114 2003-03-25 Fernando Perez <fperez@colorado.edu>
4112
4115
4113 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4116 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4114 before printing it (it had a lot of spurious blank lines at the
4117 before printing it (it had a lot of spurious blank lines at the
4115 end).
4118 end).
4116
4119
4117 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4120 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4118 output would be sent 21 times! Obviously people don't use this
4121 output would be sent 21 times! Obviously people don't use this
4119 too often, or I would have heard about it.
4122 too often, or I would have heard about it.
4120
4123
4121 2003-03-24 Fernando Perez <fperez@colorado.edu>
4124 2003-03-24 Fernando Perez <fperez@colorado.edu>
4122
4125
4123 * setup.py (scriptfiles): renamed the data_files parameter from
4126 * setup.py (scriptfiles): renamed the data_files parameter from
4124 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4127 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4125 for the patch.
4128 for the patch.
4126
4129
4127 2003-03-20 Fernando Perez <fperez@colorado.edu>
4130 2003-03-20 Fernando Perez <fperez@colorado.edu>
4128
4131
4129 * IPython/genutils.py (error): added error() and fatal()
4132 * IPython/genutils.py (error): added error() and fatal()
4130 functions.
4133 functions.
4131
4134
4132 2003-03-18 *** Released version 0.2.15pre3
4135 2003-03-18 *** Released version 0.2.15pre3
4133
4136
4134 2003-03-18 Fernando Perez <fperez@colorado.edu>
4137 2003-03-18 Fernando Perez <fperez@colorado.edu>
4135
4138
4136 * setupext/install_data_ext.py
4139 * setupext/install_data_ext.py
4137 (install_data_ext.initialize_options): Class contributed by Jack
4140 (install_data_ext.initialize_options): Class contributed by Jack
4138 Moffit for fixing the old distutils hack. He is sending this to
4141 Moffit for fixing the old distutils hack. He is sending this to
4139 the distutils folks so in the future we may not need it as a
4142 the distutils folks so in the future we may not need it as a
4140 private fix.
4143 private fix.
4141
4144
4142 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4145 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4143 changes for Debian packaging. See his patch for full details.
4146 changes for Debian packaging. See his patch for full details.
4144 The old distutils hack of making the ipythonrc* files carry a
4147 The old distutils hack of making the ipythonrc* files carry a
4145 bogus .py extension is gone, at last. Examples were moved to a
4148 bogus .py extension is gone, at last. Examples were moved to a
4146 separate subdir under doc/, and the separate executable scripts
4149 separate subdir under doc/, and the separate executable scripts
4147 now live in their own directory. Overall a great cleanup. The
4150 now live in their own directory. Overall a great cleanup. The
4148 manual was updated to use the new files, and setup.py has been
4151 manual was updated to use the new files, and setup.py has been
4149 fixed for this setup.
4152 fixed for this setup.
4150
4153
4151 * IPython/PyColorize.py (Parser.usage): made non-executable and
4154 * IPython/PyColorize.py (Parser.usage): made non-executable and
4152 created a pycolor wrapper around it to be included as a script.
4155 created a pycolor wrapper around it to be included as a script.
4153
4156
4154 2003-03-12 *** Released version 0.2.15pre2
4157 2003-03-12 *** Released version 0.2.15pre2
4155
4158
4156 2003-03-12 Fernando Perez <fperez@colorado.edu>
4159 2003-03-12 Fernando Perez <fperez@colorado.edu>
4157
4160
4158 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4161 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4159 long-standing problem with garbage characters in some terminals.
4162 long-standing problem with garbage characters in some terminals.
4160 The issue was really that the \001 and \002 escapes must _only_ be
4163 The issue was really that the \001 and \002 escapes must _only_ be
4161 passed to input prompts (which call readline), but _never_ to
4164 passed to input prompts (which call readline), but _never_ to
4162 normal text to be printed on screen. I changed ColorANSI to have
4165 normal text to be printed on screen. I changed ColorANSI to have
4163 two classes: TermColors and InputTermColors, each with the
4166 two classes: TermColors and InputTermColors, each with the
4164 appropriate escapes for input prompts or normal text. The code in
4167 appropriate escapes for input prompts or normal text. The code in
4165 Prompts.py got slightly more complicated, but this very old and
4168 Prompts.py got slightly more complicated, but this very old and
4166 annoying bug is finally fixed.
4169 annoying bug is finally fixed.
4167
4170
4168 All the credit for nailing down the real origin of this problem
4171 All the credit for nailing down the real origin of this problem
4169 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4172 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4170 *Many* thanks to him for spending quite a bit of effort on this.
4173 *Many* thanks to him for spending quite a bit of effort on this.
4171
4174
4172 2003-03-05 *** Released version 0.2.15pre1
4175 2003-03-05 *** Released version 0.2.15pre1
4173
4176
4174 2003-03-03 Fernando Perez <fperez@colorado.edu>
4177 2003-03-03 Fernando Perez <fperez@colorado.edu>
4175
4178
4176 * IPython/FakeModule.py: Moved the former _FakeModule to a
4179 * IPython/FakeModule.py: Moved the former _FakeModule to a
4177 separate file, because it's also needed by Magic (to fix a similar
4180 separate file, because it's also needed by Magic (to fix a similar
4178 pickle-related issue in @run).
4181 pickle-related issue in @run).
4179
4182
4180 2003-03-02 Fernando Perez <fperez@colorado.edu>
4183 2003-03-02 Fernando Perez <fperez@colorado.edu>
4181
4184
4182 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4185 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4183 the autocall option at runtime.
4186 the autocall option at runtime.
4184 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4187 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4185 across Magic.py to start separating Magic from InteractiveShell.
4188 across Magic.py to start separating Magic from InteractiveShell.
4186 (Magic._ofind): Fixed to return proper namespace for dotted
4189 (Magic._ofind): Fixed to return proper namespace for dotted
4187 names. Before, a dotted name would always return 'not currently
4190 names. Before, a dotted name would always return 'not currently
4188 defined', because it would find the 'parent'. s.x would be found,
4191 defined', because it would find the 'parent'. s.x would be found,
4189 but since 'x' isn't defined by itself, it would get confused.
4192 but since 'x' isn't defined by itself, it would get confused.
4190 (Magic.magic_run): Fixed pickling problems reported by Ralf
4193 (Magic.magic_run): Fixed pickling problems reported by Ralf
4191 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4194 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4192 that I'd used when Mike Heeter reported similar issues at the
4195 that I'd used when Mike Heeter reported similar issues at the
4193 top-level, but now for @run. It boils down to injecting the
4196 top-level, but now for @run. It boils down to injecting the
4194 namespace where code is being executed with something that looks
4197 namespace where code is being executed with something that looks
4195 enough like a module to fool pickle.dump(). Since a pickle stores
4198 enough like a module to fool pickle.dump(). Since a pickle stores
4196 a named reference to the importing module, we need this for
4199 a named reference to the importing module, we need this for
4197 pickles to save something sensible.
4200 pickles to save something sensible.
4198
4201
4199 * IPython/ipmaker.py (make_IPython): added an autocall option.
4202 * IPython/ipmaker.py (make_IPython): added an autocall option.
4200
4203
4201 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4204 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4202 the auto-eval code. Now autocalling is an option, and the code is
4205 the auto-eval code. Now autocalling is an option, and the code is
4203 also vastly safer. There is no more eval() involved at all.
4206 also vastly safer. There is no more eval() involved at all.
4204
4207
4205 2003-03-01 Fernando Perez <fperez@colorado.edu>
4208 2003-03-01 Fernando Perez <fperez@colorado.edu>
4206
4209
4207 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4210 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4208 dict with named keys instead of a tuple.
4211 dict with named keys instead of a tuple.
4209
4212
4210 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4213 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4211
4214
4212 * setup.py (make_shortcut): Fixed message about directories
4215 * setup.py (make_shortcut): Fixed message about directories
4213 created during Windows installation (the directories were ok, just
4216 created during Windows installation (the directories were ok, just
4214 the printed message was misleading). Thanks to Chris Liechti
4217 the printed message was misleading). Thanks to Chris Liechti
4215 <cliechti-AT-gmx.net> for the heads up.
4218 <cliechti-AT-gmx.net> for the heads up.
4216
4219
4217 2003-02-21 Fernando Perez <fperez@colorado.edu>
4220 2003-02-21 Fernando Perez <fperez@colorado.edu>
4218
4221
4219 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4222 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4220 of ValueError exception when checking for auto-execution. This
4223 of ValueError exception when checking for auto-execution. This
4221 one is raised by things like Numeric arrays arr.flat when the
4224 one is raised by things like Numeric arrays arr.flat when the
4222 array is non-contiguous.
4225 array is non-contiguous.
4223
4226
4224 2003-01-31 Fernando Perez <fperez@colorado.edu>
4227 2003-01-31 Fernando Perez <fperez@colorado.edu>
4225
4228
4226 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4229 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4227 not return any value at all (even though the command would get
4230 not return any value at all (even though the command would get
4228 executed).
4231 executed).
4229 (xsys): Flush stdout right after printing the command to ensure
4232 (xsys): Flush stdout right after printing the command to ensure
4230 proper ordering of commands and command output in the total
4233 proper ordering of commands and command output in the total
4231 output.
4234 output.
4232 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4235 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4233 system/getoutput as defaults. The old ones are kept for
4236 system/getoutput as defaults. The old ones are kept for
4234 compatibility reasons, so no code which uses this library needs
4237 compatibility reasons, so no code which uses this library needs
4235 changing.
4238 changing.
4236
4239
4237 2003-01-27 *** Released version 0.2.14
4240 2003-01-27 *** Released version 0.2.14
4238
4241
4239 2003-01-25 Fernando Perez <fperez@colorado.edu>
4242 2003-01-25 Fernando Perez <fperez@colorado.edu>
4240
4243
4241 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4244 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4242 functions defined in previous edit sessions could not be re-edited
4245 functions defined in previous edit sessions could not be re-edited
4243 (because the temp files were immediately removed). Now temp files
4246 (because the temp files were immediately removed). Now temp files
4244 are removed only at IPython's exit.
4247 are removed only at IPython's exit.
4245 (Magic.magic_run): Improved @run to perform shell-like expansions
4248 (Magic.magic_run): Improved @run to perform shell-like expansions
4246 on its arguments (~users and $VARS). With this, @run becomes more
4249 on its arguments (~users and $VARS). With this, @run becomes more
4247 like a normal command-line.
4250 like a normal command-line.
4248
4251
4249 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4252 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4250 bugs related to embedding and cleaned up that code. A fairly
4253 bugs related to embedding and cleaned up that code. A fairly
4251 important one was the impossibility to access the global namespace
4254 important one was the impossibility to access the global namespace
4252 through the embedded IPython (only local variables were visible).
4255 through the embedded IPython (only local variables were visible).
4253
4256
4254 2003-01-14 Fernando Perez <fperez@colorado.edu>
4257 2003-01-14 Fernando Perez <fperez@colorado.edu>
4255
4258
4256 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4259 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4257 auto-calling to be a bit more conservative. Now it doesn't get
4260 auto-calling to be a bit more conservative. Now it doesn't get
4258 triggered if any of '!=()<>' are in the rest of the input line, to
4261 triggered if any of '!=()<>' are in the rest of the input line, to
4259 allow comparing callables. Thanks to Alex for the heads up.
4262 allow comparing callables. Thanks to Alex for the heads up.
4260
4263
4261 2003-01-07 Fernando Perez <fperez@colorado.edu>
4264 2003-01-07 Fernando Perez <fperez@colorado.edu>
4262
4265
4263 * IPython/genutils.py (page): fixed estimation of the number of
4266 * IPython/genutils.py (page): fixed estimation of the number of
4264 lines in a string to be paged to simply count newlines. This
4267 lines in a string to be paged to simply count newlines. This
4265 prevents over-guessing due to embedded escape sequences. A better
4268 prevents over-guessing due to embedded escape sequences. A better
4266 long-term solution would involve stripping out the control chars
4269 long-term solution would involve stripping out the control chars
4267 for the count, but it's potentially so expensive I just don't
4270 for the count, but it's potentially so expensive I just don't
4268 think it's worth doing.
4271 think it's worth doing.
4269
4272
4270 2002-12-19 *** Released version 0.2.14pre50
4273 2002-12-19 *** Released version 0.2.14pre50
4271
4274
4272 2002-12-19 Fernando Perez <fperez@colorado.edu>
4275 2002-12-19 Fernando Perez <fperez@colorado.edu>
4273
4276
4274 * tools/release (version): Changed release scripts to inform
4277 * tools/release (version): Changed release scripts to inform
4275 Andrea and build a NEWS file with a list of recent changes.
4278 Andrea and build a NEWS file with a list of recent changes.
4276
4279
4277 * IPython/ColorANSI.py (__all__): changed terminal detection
4280 * IPython/ColorANSI.py (__all__): changed terminal detection
4278 code. Seems to work better for xterms without breaking
4281 code. Seems to work better for xterms without breaking
4279 konsole. Will need more testing to determine if WinXP and Mac OSX
4282 konsole. Will need more testing to determine if WinXP and Mac OSX
4280 also work ok.
4283 also work ok.
4281
4284
4282 2002-12-18 *** Released version 0.2.14pre49
4285 2002-12-18 *** Released version 0.2.14pre49
4283
4286
4284 2002-12-18 Fernando Perez <fperez@colorado.edu>
4287 2002-12-18 Fernando Perez <fperez@colorado.edu>
4285
4288
4286 * Docs: added new info about Mac OSX, from Andrea.
4289 * Docs: added new info about Mac OSX, from Andrea.
4287
4290
4288 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4291 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4289 allow direct plotting of python strings whose format is the same
4292 allow direct plotting of python strings whose format is the same
4290 of gnuplot data files.
4293 of gnuplot data files.
4291
4294
4292 2002-12-16 Fernando Perez <fperez@colorado.edu>
4295 2002-12-16 Fernando Perez <fperez@colorado.edu>
4293
4296
4294 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4297 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4295 value of exit question to be acknowledged.
4298 value of exit question to be acknowledged.
4296
4299
4297 2002-12-03 Fernando Perez <fperez@colorado.edu>
4300 2002-12-03 Fernando Perez <fperez@colorado.edu>
4298
4301
4299 * IPython/ipmaker.py: removed generators, which had been added
4302 * IPython/ipmaker.py: removed generators, which had been added
4300 by mistake in an earlier debugging run. This was causing trouble
4303 by mistake in an earlier debugging run. This was causing trouble
4301 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4304 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4302 for pointing this out.
4305 for pointing this out.
4303
4306
4304 2002-11-17 Fernando Perez <fperez@colorado.edu>
4307 2002-11-17 Fernando Perez <fperez@colorado.edu>
4305
4308
4306 * Manual: updated the Gnuplot section.
4309 * Manual: updated the Gnuplot section.
4307
4310
4308 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4311 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4309 a much better split of what goes in Runtime and what goes in
4312 a much better split of what goes in Runtime and what goes in
4310 Interactive.
4313 Interactive.
4311
4314
4312 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4315 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4313 being imported from iplib.
4316 being imported from iplib.
4314
4317
4315 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4318 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4316 for command-passing. Now the global Gnuplot instance is called
4319 for command-passing. Now the global Gnuplot instance is called
4317 'gp' instead of 'g', which was really a far too fragile and
4320 'gp' instead of 'g', which was really a far too fragile and
4318 common name.
4321 common name.
4319
4322
4320 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4323 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4321 bounding boxes generated by Gnuplot for square plots.
4324 bounding boxes generated by Gnuplot for square plots.
4322
4325
4323 * IPython/genutils.py (popkey): new function added. I should
4326 * IPython/genutils.py (popkey): new function added. I should
4324 suggest this on c.l.py as a dict method, it seems useful.
4327 suggest this on c.l.py as a dict method, it seems useful.
4325
4328
4326 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4329 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4327 to transparently handle PostScript generation. MUCH better than
4330 to transparently handle PostScript generation. MUCH better than
4328 the previous plot_eps/replot_eps (which I removed now). The code
4331 the previous plot_eps/replot_eps (which I removed now). The code
4329 is also fairly clean and well documented now (including
4332 is also fairly clean and well documented now (including
4330 docstrings).
4333 docstrings).
4331
4334
4332 2002-11-13 Fernando Perez <fperez@colorado.edu>
4335 2002-11-13 Fernando Perez <fperez@colorado.edu>
4333
4336
4334 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4337 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4335 (inconsistent with options).
4338 (inconsistent with options).
4336
4339
4337 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4340 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4338 manually disabled, I don't know why. Fixed it.
4341 manually disabled, I don't know why. Fixed it.
4339 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4342 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4340 eps output.
4343 eps output.
4341
4344
4342 2002-11-12 Fernando Perez <fperez@colorado.edu>
4345 2002-11-12 Fernando Perez <fperez@colorado.edu>
4343
4346
4344 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4347 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4345 don't propagate up to caller. Fixes crash reported by François
4348 don't propagate up to caller. Fixes crash reported by François
4346 Pinard.
4349 Pinard.
4347
4350
4348 2002-11-09 Fernando Perez <fperez@colorado.edu>
4351 2002-11-09 Fernando Perez <fperez@colorado.edu>
4349
4352
4350 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4353 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4351 history file for new users.
4354 history file for new users.
4352 (make_IPython): fixed bug where initial install would leave the
4355 (make_IPython): fixed bug where initial install would leave the
4353 user running in the .ipython dir.
4356 user running in the .ipython dir.
4354 (make_IPython): fixed bug where config dir .ipython would be
4357 (make_IPython): fixed bug where config dir .ipython would be
4355 created regardless of the given -ipythondir option. Thanks to Cory
4358 created regardless of the given -ipythondir option. Thanks to Cory
4356 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4359 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4357
4360
4358 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4361 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4359 type confirmations. Will need to use it in all of IPython's code
4362 type confirmations. Will need to use it in all of IPython's code
4360 consistently.
4363 consistently.
4361
4364
4362 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4365 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4363 context to print 31 lines instead of the default 5. This will make
4366 context to print 31 lines instead of the default 5. This will make
4364 the crash reports extremely detailed in case the problem is in
4367 the crash reports extremely detailed in case the problem is in
4365 libraries I don't have access to.
4368 libraries I don't have access to.
4366
4369
4367 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4370 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4368 line of defense' code to still crash, but giving users fair
4371 line of defense' code to still crash, but giving users fair
4369 warning. I don't want internal errors to go unreported: if there's
4372 warning. I don't want internal errors to go unreported: if there's
4370 an internal problem, IPython should crash and generate a full
4373 an internal problem, IPython should crash and generate a full
4371 report.
4374 report.
4372
4375
4373 2002-11-08 Fernando Perez <fperez@colorado.edu>
4376 2002-11-08 Fernando Perez <fperez@colorado.edu>
4374
4377
4375 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4378 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4376 otherwise uncaught exceptions which can appear if people set
4379 otherwise uncaught exceptions which can appear if people set
4377 sys.stdout to something badly broken. Thanks to a crash report
4380 sys.stdout to something badly broken. Thanks to a crash report
4378 from henni-AT-mail.brainbot.com.
4381 from henni-AT-mail.brainbot.com.
4379
4382
4380 2002-11-04 Fernando Perez <fperez@colorado.edu>
4383 2002-11-04 Fernando Perez <fperez@colorado.edu>
4381
4384
4382 * IPython/iplib.py (InteractiveShell.interact): added
4385 * IPython/iplib.py (InteractiveShell.interact): added
4383 __IPYTHON__active to the builtins. It's a flag which goes on when
4386 __IPYTHON__active to the builtins. It's a flag which goes on when
4384 the interaction starts and goes off again when it stops. This
4387 the interaction starts and goes off again when it stops. This
4385 allows embedding code to detect being inside IPython. Before this
4388 allows embedding code to detect being inside IPython. Before this
4386 was done via __IPYTHON__, but that only shows that an IPython
4389 was done via __IPYTHON__, but that only shows that an IPython
4387 instance has been created.
4390 instance has been created.
4388
4391
4389 * IPython/Magic.py (Magic.magic_env): I realized that in a
4392 * IPython/Magic.py (Magic.magic_env): I realized that in a
4390 UserDict, instance.data holds the data as a normal dict. So I
4393 UserDict, instance.data holds the data as a normal dict. So I
4391 modified @env to return os.environ.data instead of rebuilding a
4394 modified @env to return os.environ.data instead of rebuilding a
4392 dict by hand.
4395 dict by hand.
4393
4396
4394 2002-11-02 Fernando Perez <fperez@colorado.edu>
4397 2002-11-02 Fernando Perez <fperez@colorado.edu>
4395
4398
4396 * IPython/genutils.py (warn): changed so that level 1 prints no
4399 * IPython/genutils.py (warn): changed so that level 1 prints no
4397 header. Level 2 is now the default (with 'WARNING' header, as
4400 header. Level 2 is now the default (with 'WARNING' header, as
4398 before). I think I tracked all places where changes were needed in
4401 before). I think I tracked all places where changes were needed in
4399 IPython, but outside code using the old level numbering may have
4402 IPython, but outside code using the old level numbering may have
4400 broken.
4403 broken.
4401
4404
4402 * IPython/iplib.py (InteractiveShell.runcode): added this to
4405 * IPython/iplib.py (InteractiveShell.runcode): added this to
4403 handle the tracebacks in SystemExit traps correctly. The previous
4406 handle the tracebacks in SystemExit traps correctly. The previous
4404 code (through interact) was printing more of the stack than
4407 code (through interact) was printing more of the stack than
4405 necessary, showing IPython internal code to the user.
4408 necessary, showing IPython internal code to the user.
4406
4409
4407 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4410 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4408 default. Now that the default at the confirmation prompt is yes,
4411 default. Now that the default at the confirmation prompt is yes,
4409 it's not so intrusive. François' argument that ipython sessions
4412 it's not so intrusive. François' argument that ipython sessions
4410 tend to be complex enough not to lose them from an accidental C-d,
4413 tend to be complex enough not to lose them from an accidental C-d,
4411 is a valid one.
4414 is a valid one.
4412
4415
4413 * IPython/iplib.py (InteractiveShell.interact): added a
4416 * IPython/iplib.py (InteractiveShell.interact): added a
4414 showtraceback() call to the SystemExit trap, and modified the exit
4417 showtraceback() call to the SystemExit trap, and modified the exit
4415 confirmation to have yes as the default.
4418 confirmation to have yes as the default.
4416
4419
4417 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4420 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4418 this file. It's been gone from the code for a long time, this was
4421 this file. It's been gone from the code for a long time, this was
4419 simply leftover junk.
4422 simply leftover junk.
4420
4423
4421 2002-11-01 Fernando Perez <fperez@colorado.edu>
4424 2002-11-01 Fernando Perez <fperez@colorado.edu>
4422
4425
4423 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4426 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4424 added. If set, IPython now traps EOF and asks for
4427 added. If set, IPython now traps EOF and asks for
4425 confirmation. After a request by François Pinard.
4428 confirmation. After a request by François Pinard.
4426
4429
4427 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4430 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4428 of @abort, and with a new (better) mechanism for handling the
4431 of @abort, and with a new (better) mechanism for handling the
4429 exceptions.
4432 exceptions.
4430
4433
4431 2002-10-27 Fernando Perez <fperez@colorado.edu>
4434 2002-10-27 Fernando Perez <fperez@colorado.edu>
4432
4435
4433 * IPython/usage.py (__doc__): updated the --help information and
4436 * IPython/usage.py (__doc__): updated the --help information and
4434 the ipythonrc file to indicate that -log generates
4437 the ipythonrc file to indicate that -log generates
4435 ./ipython.log. Also fixed the corresponding info in @logstart.
4438 ./ipython.log. Also fixed the corresponding info in @logstart.
4436 This and several other fixes in the manuals thanks to reports by
4439 This and several other fixes in the manuals thanks to reports by
4437 François Pinard <pinard-AT-iro.umontreal.ca>.
4440 François Pinard <pinard-AT-iro.umontreal.ca>.
4438
4441
4439 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4442 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4440 refer to @logstart (instead of @log, which doesn't exist).
4443 refer to @logstart (instead of @log, which doesn't exist).
4441
4444
4442 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4445 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4443 AttributeError crash. Thanks to Christopher Armstrong
4446 AttributeError crash. Thanks to Christopher Armstrong
4444 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4447 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4445 introduced recently (in 0.2.14pre37) with the fix to the eval
4448 introduced recently (in 0.2.14pre37) with the fix to the eval
4446 problem mentioned below.
4449 problem mentioned below.
4447
4450
4448 2002-10-17 Fernando Perez <fperez@colorado.edu>
4451 2002-10-17 Fernando Perez <fperez@colorado.edu>
4449
4452
4450 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4453 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4451 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4454 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4452
4455
4453 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4456 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4454 this function to fix a problem reported by Alex Schmolck. He saw
4457 this function to fix a problem reported by Alex Schmolck. He saw
4455 it with list comprehensions and generators, which were getting
4458 it with list comprehensions and generators, which were getting
4456 called twice. The real problem was an 'eval' call in testing for
4459 called twice. The real problem was an 'eval' call in testing for
4457 automagic which was evaluating the input line silently.
4460 automagic which was evaluating the input line silently.
4458
4461
4459 This is a potentially very nasty bug, if the input has side
4462 This is a potentially very nasty bug, if the input has side
4460 effects which must not be repeated. The code is much cleaner now,
4463 effects which must not be repeated. The code is much cleaner now,
4461 without any blanket 'except' left and with a regexp test for
4464 without any blanket 'except' left and with a regexp test for
4462 actual function names.
4465 actual function names.
4463
4466
4464 But an eval remains, which I'm not fully comfortable with. I just
4467 But an eval remains, which I'm not fully comfortable with. I just
4465 don't know how to find out if an expression could be a callable in
4468 don't know how to find out if an expression could be a callable in
4466 the user's namespace without doing an eval on the string. However
4469 the user's namespace without doing an eval on the string. However
4467 that string is now much more strictly checked so that no code
4470 that string is now much more strictly checked so that no code
4468 slips by, so the eval should only happen for things that can
4471 slips by, so the eval should only happen for things that can
4469 really be only function/method names.
4472 really be only function/method names.
4470
4473
4471 2002-10-15 Fernando Perez <fperez@colorado.edu>
4474 2002-10-15 Fernando Perez <fperez@colorado.edu>
4472
4475
4473 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4476 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4474 OSX information to main manual, removed README_Mac_OSX file from
4477 OSX information to main manual, removed README_Mac_OSX file from
4475 distribution. Also updated credits for recent additions.
4478 distribution. Also updated credits for recent additions.
4476
4479
4477 2002-10-10 Fernando Perez <fperez@colorado.edu>
4480 2002-10-10 Fernando Perez <fperez@colorado.edu>
4478
4481
4479 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4482 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4480 terminal-related issues. Many thanks to Andrea Riciputi
4483 terminal-related issues. Many thanks to Andrea Riciputi
4481 <andrea.riciputi-AT-libero.it> for writing it.
4484 <andrea.riciputi-AT-libero.it> for writing it.
4482
4485
4483 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4486 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4484 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4487 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4485
4488
4486 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4489 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4487 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4490 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4488 <syver-en-AT-online.no> who both submitted patches for this problem.
4491 <syver-en-AT-online.no> who both submitted patches for this problem.
4489
4492
4490 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4493 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4491 global embedding to make sure that things don't overwrite user
4494 global embedding to make sure that things don't overwrite user
4492 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4495 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4493
4496
4494 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4497 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4495 compatibility. Thanks to Hayden Callow
4498 compatibility. Thanks to Hayden Callow
4496 <h.callow-AT-elec.canterbury.ac.nz>
4499 <h.callow-AT-elec.canterbury.ac.nz>
4497
4500
4498 2002-10-04 Fernando Perez <fperez@colorado.edu>
4501 2002-10-04 Fernando Perez <fperez@colorado.edu>
4499
4502
4500 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4503 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4501 Gnuplot.File objects.
4504 Gnuplot.File objects.
4502
4505
4503 2002-07-23 Fernando Perez <fperez@colorado.edu>
4506 2002-07-23 Fernando Perez <fperez@colorado.edu>
4504
4507
4505 * IPython/genutils.py (timing): Added timings() and timing() for
4508 * IPython/genutils.py (timing): Added timings() and timing() for
4506 quick access to the most commonly needed data, the execution
4509 quick access to the most commonly needed data, the execution
4507 times. Old timing() renamed to timings_out().
4510 times. Old timing() renamed to timings_out().
4508
4511
4509 2002-07-18 Fernando Perez <fperez@colorado.edu>
4512 2002-07-18 Fernando Perez <fperez@colorado.edu>
4510
4513
4511 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4514 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4512 bug with nested instances disrupting the parent's tab completion.
4515 bug with nested instances disrupting the parent's tab completion.
4513
4516
4514 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4517 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4515 all_completions code to begin the emacs integration.
4518 all_completions code to begin the emacs integration.
4516
4519
4517 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4520 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4518 argument to allow titling individual arrays when plotting.
4521 argument to allow titling individual arrays when plotting.
4519
4522
4520 2002-07-15 Fernando Perez <fperez@colorado.edu>
4523 2002-07-15 Fernando Perez <fperez@colorado.edu>
4521
4524
4522 * setup.py (make_shortcut): changed to retrieve the value of
4525 * setup.py (make_shortcut): changed to retrieve the value of
4523 'Program Files' directory from the registry (this value changes in
4526 'Program Files' directory from the registry (this value changes in
4524 non-english versions of Windows). Thanks to Thomas Fanslau
4527 non-english versions of Windows). Thanks to Thomas Fanslau
4525 <tfanslau-AT-gmx.de> for the report.
4528 <tfanslau-AT-gmx.de> for the report.
4526
4529
4527 2002-07-10 Fernando Perez <fperez@colorado.edu>
4530 2002-07-10 Fernando Perez <fperez@colorado.edu>
4528
4531
4529 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4532 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4530 a bug in pdb, which crashes if a line with only whitespace is
4533 a bug in pdb, which crashes if a line with only whitespace is
4531 entered. Bug report submitted to sourceforge.
4534 entered. Bug report submitted to sourceforge.
4532
4535
4533 2002-07-09 Fernando Perez <fperez@colorado.edu>
4536 2002-07-09 Fernando Perez <fperez@colorado.edu>
4534
4537
4535 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4538 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4536 reporting exceptions (it's a bug in inspect.py, I just set a
4539 reporting exceptions (it's a bug in inspect.py, I just set a
4537 workaround).
4540 workaround).
4538
4541
4539 2002-07-08 Fernando Perez <fperez@colorado.edu>
4542 2002-07-08 Fernando Perez <fperez@colorado.edu>
4540
4543
4541 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4544 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4542 __IPYTHON__ in __builtins__ to show up in user_ns.
4545 __IPYTHON__ in __builtins__ to show up in user_ns.
4543
4546
4544 2002-07-03 Fernando Perez <fperez@colorado.edu>
4547 2002-07-03 Fernando Perez <fperez@colorado.edu>
4545
4548
4546 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4549 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4547 name from @gp_set_instance to @gp_set_default.
4550 name from @gp_set_instance to @gp_set_default.
4548
4551
4549 * IPython/ipmaker.py (make_IPython): default editor value set to
4552 * IPython/ipmaker.py (make_IPython): default editor value set to
4550 '0' (a string), to match the rc file. Otherwise will crash when
4553 '0' (a string), to match the rc file. Otherwise will crash when
4551 .strip() is called on it.
4554 .strip() is called on it.
4552
4555
4553
4556
4554 2002-06-28 Fernando Perez <fperez@colorado.edu>
4557 2002-06-28 Fernando Perez <fperez@colorado.edu>
4555
4558
4556 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4559 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4557 of files in current directory when a file is executed via
4560 of files in current directory when a file is executed via
4558 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4561 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4559
4562
4560 * setup.py (manfiles): fix for rpm builds, submitted by RA
4563 * setup.py (manfiles): fix for rpm builds, submitted by RA
4561 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4564 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4562
4565
4563 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4566 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4564 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4567 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4565 string!). A. Schmolck caught this one.
4568 string!). A. Schmolck caught this one.
4566
4569
4567 2002-06-27 Fernando Perez <fperez@colorado.edu>
4570 2002-06-27 Fernando Perez <fperez@colorado.edu>
4568
4571
4569 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4572 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4570 defined files at the cmd line. __name__ wasn't being set to
4573 defined files at the cmd line. __name__ wasn't being set to
4571 __main__.
4574 __main__.
4572
4575
4573 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4576 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4574 regular lists and tuples besides Numeric arrays.
4577 regular lists and tuples besides Numeric arrays.
4575
4578
4576 * IPython/Prompts.py (CachedOutput.__call__): Added output
4579 * IPython/Prompts.py (CachedOutput.__call__): Added output
4577 supression for input ending with ';'. Similar to Mathematica and
4580 supression for input ending with ';'. Similar to Mathematica and
4578 Matlab. The _* vars and Out[] list are still updated, just like
4581 Matlab. The _* vars and Out[] list are still updated, just like
4579 Mathematica behaves.
4582 Mathematica behaves.
4580
4583
4581 2002-06-25 Fernando Perez <fperez@colorado.edu>
4584 2002-06-25 Fernando Perez <fperez@colorado.edu>
4582
4585
4583 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4586 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4584 .ini extensions for profiels under Windows.
4587 .ini extensions for profiels under Windows.
4585
4588
4586 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4589 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4587 string form. Fix contributed by Alexander Schmolck
4590 string form. Fix contributed by Alexander Schmolck
4588 <a.schmolck-AT-gmx.net>
4591 <a.schmolck-AT-gmx.net>
4589
4592
4590 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4593 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4591 pre-configured Gnuplot instance.
4594 pre-configured Gnuplot instance.
4592
4595
4593 2002-06-21 Fernando Perez <fperez@colorado.edu>
4596 2002-06-21 Fernando Perez <fperez@colorado.edu>
4594
4597
4595 * IPython/numutils.py (exp_safe): new function, works around the
4598 * IPython/numutils.py (exp_safe): new function, works around the
4596 underflow problems in Numeric.
4599 underflow problems in Numeric.
4597 (log2): New fn. Safe log in base 2: returns exact integer answer
4600 (log2): New fn. Safe log in base 2: returns exact integer answer
4598 for exact integer powers of 2.
4601 for exact integer powers of 2.
4599
4602
4600 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4603 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4601 properly.
4604 properly.
4602
4605
4603 2002-06-20 Fernando Perez <fperez@colorado.edu>
4606 2002-06-20 Fernando Perez <fperez@colorado.edu>
4604
4607
4605 * IPython/genutils.py (timing): new function like
4608 * IPython/genutils.py (timing): new function like
4606 Mathematica's. Similar to time_test, but returns more info.
4609 Mathematica's. Similar to time_test, but returns more info.
4607
4610
4608 2002-06-18 Fernando Perez <fperez@colorado.edu>
4611 2002-06-18 Fernando Perez <fperez@colorado.edu>
4609
4612
4610 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4613 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4611 according to Mike Heeter's suggestions.
4614 according to Mike Heeter's suggestions.
4612
4615
4613 2002-06-16 Fernando Perez <fperez@colorado.edu>
4616 2002-06-16 Fernando Perez <fperez@colorado.edu>
4614
4617
4615 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4618 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4616 system. GnuplotMagic is gone as a user-directory option. New files
4619 system. GnuplotMagic is gone as a user-directory option. New files
4617 make it easier to use all the gnuplot stuff both from external
4620 make it easier to use all the gnuplot stuff both from external
4618 programs as well as from IPython. Had to rewrite part of
4621 programs as well as from IPython. Had to rewrite part of
4619 hardcopy() b/c of a strange bug: often the ps files simply don't
4622 hardcopy() b/c of a strange bug: often the ps files simply don't
4620 get created, and require a repeat of the command (often several
4623 get created, and require a repeat of the command (often several
4621 times).
4624 times).
4622
4625
4623 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4626 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4624 resolve output channel at call time, so that if sys.stderr has
4627 resolve output channel at call time, so that if sys.stderr has
4625 been redirected by user this gets honored.
4628 been redirected by user this gets honored.
4626
4629
4627 2002-06-13 Fernando Perez <fperez@colorado.edu>
4630 2002-06-13 Fernando Perez <fperez@colorado.edu>
4628
4631
4629 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4632 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4630 IPShell. Kept a copy with the old names to avoid breaking people's
4633 IPShell. Kept a copy with the old names to avoid breaking people's
4631 embedded code.
4634 embedded code.
4632
4635
4633 * IPython/ipython: simplified it to the bare minimum after
4636 * IPython/ipython: simplified it to the bare minimum after
4634 Holger's suggestions. Added info about how to use it in
4637 Holger's suggestions. Added info about how to use it in
4635 PYTHONSTARTUP.
4638 PYTHONSTARTUP.
4636
4639
4637 * IPython/Shell.py (IPythonShell): changed the options passing
4640 * IPython/Shell.py (IPythonShell): changed the options passing
4638 from a string with funky %s replacements to a straight list. Maybe
4641 from a string with funky %s replacements to a straight list. Maybe
4639 a bit more typing, but it follows sys.argv conventions, so there's
4642 a bit more typing, but it follows sys.argv conventions, so there's
4640 less special-casing to remember.
4643 less special-casing to remember.
4641
4644
4642 2002-06-12 Fernando Perez <fperez@colorado.edu>
4645 2002-06-12 Fernando Perez <fperez@colorado.edu>
4643
4646
4644 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4647 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4645 command. Thanks to a suggestion by Mike Heeter.
4648 command. Thanks to a suggestion by Mike Heeter.
4646 (Magic.magic_pfile): added behavior to look at filenames if given
4649 (Magic.magic_pfile): added behavior to look at filenames if given
4647 arg is not a defined object.
4650 arg is not a defined object.
4648 (Magic.magic_save): New @save function to save code snippets. Also
4651 (Magic.magic_save): New @save function to save code snippets. Also
4649 a Mike Heeter idea.
4652 a Mike Heeter idea.
4650
4653
4651 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4654 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4652 plot() and replot(). Much more convenient now, especially for
4655 plot() and replot(). Much more convenient now, especially for
4653 interactive use.
4656 interactive use.
4654
4657
4655 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4658 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4656 filenames.
4659 filenames.
4657
4660
4658 2002-06-02 Fernando Perez <fperez@colorado.edu>
4661 2002-06-02 Fernando Perez <fperez@colorado.edu>
4659
4662
4660 * IPython/Struct.py (Struct.__init__): modified to admit
4663 * IPython/Struct.py (Struct.__init__): modified to admit
4661 initialization via another struct.
4664 initialization via another struct.
4662
4665
4663 * IPython/genutils.py (SystemExec.__init__): New stateful
4666 * IPython/genutils.py (SystemExec.__init__): New stateful
4664 interface to xsys and bq. Useful for writing system scripts.
4667 interface to xsys and bq. Useful for writing system scripts.
4665
4668
4666 2002-05-30 Fernando Perez <fperez@colorado.edu>
4669 2002-05-30 Fernando Perez <fperez@colorado.edu>
4667
4670
4668 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4671 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4669 documents. This will make the user download smaller (it's getting
4672 documents. This will make the user download smaller (it's getting
4670 too big).
4673 too big).
4671
4674
4672 2002-05-29 Fernando Perez <fperez@colorado.edu>
4675 2002-05-29 Fernando Perez <fperez@colorado.edu>
4673
4676
4674 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4677 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4675 fix problems with shelve and pickle. Seems to work, but I don't
4678 fix problems with shelve and pickle. Seems to work, but I don't
4676 know if corner cases break it. Thanks to Mike Heeter
4679 know if corner cases break it. Thanks to Mike Heeter
4677 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4680 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4678
4681
4679 2002-05-24 Fernando Perez <fperez@colorado.edu>
4682 2002-05-24 Fernando Perez <fperez@colorado.edu>
4680
4683
4681 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4684 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4682 macros having broken.
4685 macros having broken.
4683
4686
4684 2002-05-21 Fernando Perez <fperez@colorado.edu>
4687 2002-05-21 Fernando Perez <fperez@colorado.edu>
4685
4688
4686 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4689 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4687 introduced logging bug: all history before logging started was
4690 introduced logging bug: all history before logging started was
4688 being written one character per line! This came from the redesign
4691 being written one character per line! This came from the redesign
4689 of the input history as a special list which slices to strings,
4692 of the input history as a special list which slices to strings,
4690 not to lists.
4693 not to lists.
4691
4694
4692 2002-05-20 Fernando Perez <fperez@colorado.edu>
4695 2002-05-20 Fernando Perez <fperez@colorado.edu>
4693
4696
4694 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4697 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4695 be an attribute of all classes in this module. The design of these
4698 be an attribute of all classes in this module. The design of these
4696 classes needs some serious overhauling.
4699 classes needs some serious overhauling.
4697
4700
4698 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4701 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4699 which was ignoring '_' in option names.
4702 which was ignoring '_' in option names.
4700
4703
4701 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4704 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4702 'Verbose_novars' to 'Context' and made it the new default. It's a
4705 'Verbose_novars' to 'Context' and made it the new default. It's a
4703 bit more readable and also safer than verbose.
4706 bit more readable and also safer than verbose.
4704
4707
4705 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4708 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4706 triple-quoted strings.
4709 triple-quoted strings.
4707
4710
4708 * IPython/OInspect.py (__all__): new module exposing the object
4711 * IPython/OInspect.py (__all__): new module exposing the object
4709 introspection facilities. Now the corresponding magics are dummy
4712 introspection facilities. Now the corresponding magics are dummy
4710 wrappers around this. Having this module will make it much easier
4713 wrappers around this. Having this module will make it much easier
4711 to put these functions into our modified pdb.
4714 to put these functions into our modified pdb.
4712 This new object inspector system uses the new colorizing module,
4715 This new object inspector system uses the new colorizing module,
4713 so source code and other things are nicely syntax highlighted.
4716 so source code and other things are nicely syntax highlighted.
4714
4717
4715 2002-05-18 Fernando Perez <fperez@colorado.edu>
4718 2002-05-18 Fernando Perez <fperez@colorado.edu>
4716
4719
4717 * IPython/ColorANSI.py: Split the coloring tools into a separate
4720 * IPython/ColorANSI.py: Split the coloring tools into a separate
4718 module so I can use them in other code easier (they were part of
4721 module so I can use them in other code easier (they were part of
4719 ultraTB).
4722 ultraTB).
4720
4723
4721 2002-05-17 Fernando Perez <fperez@colorado.edu>
4724 2002-05-17 Fernando Perez <fperez@colorado.edu>
4722
4725
4723 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4726 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4724 fixed it to set the global 'g' also to the called instance, as
4727 fixed it to set the global 'g' also to the called instance, as
4725 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4728 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4726 user's 'g' variables).
4729 user's 'g' variables).
4727
4730
4728 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4731 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4729 global variables (aliases to _ih,_oh) so that users which expect
4732 global variables (aliases to _ih,_oh) so that users which expect
4730 In[5] or Out[7] to work aren't unpleasantly surprised.
4733 In[5] or Out[7] to work aren't unpleasantly surprised.
4731 (InputList.__getslice__): new class to allow executing slices of
4734 (InputList.__getslice__): new class to allow executing slices of
4732 input history directly. Very simple class, complements the use of
4735 input history directly. Very simple class, complements the use of
4733 macros.
4736 macros.
4734
4737
4735 2002-05-16 Fernando Perez <fperez@colorado.edu>
4738 2002-05-16 Fernando Perez <fperez@colorado.edu>
4736
4739
4737 * setup.py (docdirbase): make doc directory be just doc/IPython
4740 * setup.py (docdirbase): make doc directory be just doc/IPython
4738 without version numbers, it will reduce clutter for users.
4741 without version numbers, it will reduce clutter for users.
4739
4742
4740 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4743 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4741 execfile call to prevent possible memory leak. See for details:
4744 execfile call to prevent possible memory leak. See for details:
4742 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4745 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4743
4746
4744 2002-05-15 Fernando Perez <fperez@colorado.edu>
4747 2002-05-15 Fernando Perez <fperez@colorado.edu>
4745
4748
4746 * IPython/Magic.py (Magic.magic_psource): made the object
4749 * IPython/Magic.py (Magic.magic_psource): made the object
4747 introspection names be more standard: pdoc, pdef, pfile and
4750 introspection names be more standard: pdoc, pdef, pfile and
4748 psource. They all print/page their output, and it makes
4751 psource. They all print/page their output, and it makes
4749 remembering them easier. Kept old names for compatibility as
4752 remembering them easier. Kept old names for compatibility as
4750 aliases.
4753 aliases.
4751
4754
4752 2002-05-14 Fernando Perez <fperez@colorado.edu>
4755 2002-05-14 Fernando Perez <fperez@colorado.edu>
4753
4756
4754 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4757 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4755 what the mouse problem was. The trick is to use gnuplot with temp
4758 what the mouse problem was. The trick is to use gnuplot with temp
4756 files and NOT with pipes (for data communication), because having
4759 files and NOT with pipes (for data communication), because having
4757 both pipes and the mouse on is bad news.
4760 both pipes and the mouse on is bad news.
4758
4761
4759 2002-05-13 Fernando Perez <fperez@colorado.edu>
4762 2002-05-13 Fernando Perez <fperez@colorado.edu>
4760
4763
4761 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4764 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4762 bug. Information would be reported about builtins even when
4765 bug. Information would be reported about builtins even when
4763 user-defined functions overrode them.
4766 user-defined functions overrode them.
4764
4767
4765 2002-05-11 Fernando Perez <fperez@colorado.edu>
4768 2002-05-11 Fernando Perez <fperez@colorado.edu>
4766
4769
4767 * IPython/__init__.py (__all__): removed FlexCompleter from
4770 * IPython/__init__.py (__all__): removed FlexCompleter from
4768 __all__ so that things don't fail in platforms without readline.
4771 __all__ so that things don't fail in platforms without readline.
4769
4772
4770 2002-05-10 Fernando Perez <fperez@colorado.edu>
4773 2002-05-10 Fernando Perez <fperez@colorado.edu>
4771
4774
4772 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4775 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4773 it requires Numeric, effectively making Numeric a dependency for
4776 it requires Numeric, effectively making Numeric a dependency for
4774 IPython.
4777 IPython.
4775
4778
4776 * Released 0.2.13
4779 * Released 0.2.13
4777
4780
4778 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4781 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4779 profiler interface. Now all the major options from the profiler
4782 profiler interface. Now all the major options from the profiler
4780 module are directly supported in IPython, both for single
4783 module are directly supported in IPython, both for single
4781 expressions (@prun) and for full programs (@run -p).
4784 expressions (@prun) and for full programs (@run -p).
4782
4785
4783 2002-05-09 Fernando Perez <fperez@colorado.edu>
4786 2002-05-09 Fernando Perez <fperez@colorado.edu>
4784
4787
4785 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4788 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4786 magic properly formatted for screen.
4789 magic properly formatted for screen.
4787
4790
4788 * setup.py (make_shortcut): Changed things to put pdf version in
4791 * setup.py (make_shortcut): Changed things to put pdf version in
4789 doc/ instead of doc/manual (had to change lyxport a bit).
4792 doc/ instead of doc/manual (had to change lyxport a bit).
4790
4793
4791 * IPython/Magic.py (Profile.string_stats): made profile runs go
4794 * IPython/Magic.py (Profile.string_stats): made profile runs go
4792 through pager (they are long and a pager allows searching, saving,
4795 through pager (they are long and a pager allows searching, saving,
4793 etc.)
4796 etc.)
4794
4797
4795 2002-05-08 Fernando Perez <fperez@colorado.edu>
4798 2002-05-08 Fernando Perez <fperez@colorado.edu>
4796
4799
4797 * Released 0.2.12
4800 * Released 0.2.12
4798
4801
4799 2002-05-06 Fernando Perez <fperez@colorado.edu>
4802 2002-05-06 Fernando Perez <fperez@colorado.edu>
4800
4803
4801 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4804 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4802 introduced); 'hist n1 n2' was broken.
4805 introduced); 'hist n1 n2' was broken.
4803 (Magic.magic_pdb): added optional on/off arguments to @pdb
4806 (Magic.magic_pdb): added optional on/off arguments to @pdb
4804 (Magic.magic_run): added option -i to @run, which executes code in
4807 (Magic.magic_run): added option -i to @run, which executes code in
4805 the IPython namespace instead of a clean one. Also added @irun as
4808 the IPython namespace instead of a clean one. Also added @irun as
4806 an alias to @run -i.
4809 an alias to @run -i.
4807
4810
4808 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4811 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4809 fixed (it didn't really do anything, the namespaces were wrong).
4812 fixed (it didn't really do anything, the namespaces were wrong).
4810
4813
4811 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4814 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4812
4815
4813 * IPython/__init__.py (__all__): Fixed package namespace, now
4816 * IPython/__init__.py (__all__): Fixed package namespace, now
4814 'import IPython' does give access to IPython.<all> as
4817 'import IPython' does give access to IPython.<all> as
4815 expected. Also renamed __release__ to Release.
4818 expected. Also renamed __release__ to Release.
4816
4819
4817 * IPython/Debugger.py (__license__): created new Pdb class which
4820 * IPython/Debugger.py (__license__): created new Pdb class which
4818 functions like a drop-in for the normal pdb.Pdb but does NOT
4821 functions like a drop-in for the normal pdb.Pdb but does NOT
4819 import readline by default. This way it doesn't muck up IPython's
4822 import readline by default. This way it doesn't muck up IPython's
4820 readline handling, and now tab-completion finally works in the
4823 readline handling, and now tab-completion finally works in the
4821 debugger -- sort of. It completes things globally visible, but the
4824 debugger -- sort of. It completes things globally visible, but the
4822 completer doesn't track the stack as pdb walks it. That's a bit
4825 completer doesn't track the stack as pdb walks it. That's a bit
4823 tricky, and I'll have to implement it later.
4826 tricky, and I'll have to implement it later.
4824
4827
4825 2002-05-05 Fernando Perez <fperez@colorado.edu>
4828 2002-05-05 Fernando Perez <fperez@colorado.edu>
4826
4829
4827 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4830 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4828 magic docstrings when printed via ? (explicit \'s were being
4831 magic docstrings when printed via ? (explicit \'s were being
4829 printed).
4832 printed).
4830
4833
4831 * IPython/ipmaker.py (make_IPython): fixed namespace
4834 * IPython/ipmaker.py (make_IPython): fixed namespace
4832 identification bug. Now variables loaded via logs or command-line
4835 identification bug. Now variables loaded via logs or command-line
4833 files are recognized in the interactive namespace by @who.
4836 files are recognized in the interactive namespace by @who.
4834
4837
4835 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4838 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4836 log replay system stemming from the string form of Structs.
4839 log replay system stemming from the string form of Structs.
4837
4840
4838 * IPython/Magic.py (Macro.__init__): improved macros to properly
4841 * IPython/Magic.py (Macro.__init__): improved macros to properly
4839 handle magic commands in them.
4842 handle magic commands in them.
4840 (Magic.magic_logstart): usernames are now expanded so 'logstart
4843 (Magic.magic_logstart): usernames are now expanded so 'logstart
4841 ~/mylog' now works.
4844 ~/mylog' now works.
4842
4845
4843 * IPython/iplib.py (complete): fixed bug where paths starting with
4846 * IPython/iplib.py (complete): fixed bug where paths starting with
4844 '/' would be completed as magic names.
4847 '/' would be completed as magic names.
4845
4848
4846 2002-05-04 Fernando Perez <fperez@colorado.edu>
4849 2002-05-04 Fernando Perez <fperez@colorado.edu>
4847
4850
4848 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4851 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4849 allow running full programs under the profiler's control.
4852 allow running full programs under the profiler's control.
4850
4853
4851 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4854 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4852 mode to report exceptions verbosely but without formatting
4855 mode to report exceptions verbosely but without formatting
4853 variables. This addresses the issue of ipython 'freezing' (it's
4856 variables. This addresses the issue of ipython 'freezing' (it's
4854 not frozen, but caught in an expensive formatting loop) when huge
4857 not frozen, but caught in an expensive formatting loop) when huge
4855 variables are in the context of an exception.
4858 variables are in the context of an exception.
4856 (VerboseTB.text): Added '--->' markers at line where exception was
4859 (VerboseTB.text): Added '--->' markers at line where exception was
4857 triggered. Much clearer to read, especially in NoColor modes.
4860 triggered. Much clearer to read, especially in NoColor modes.
4858
4861
4859 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4862 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4860 implemented in reverse when changing to the new parse_options().
4863 implemented in reverse when changing to the new parse_options().
4861
4864
4862 2002-05-03 Fernando Perez <fperez@colorado.edu>
4865 2002-05-03 Fernando Perez <fperez@colorado.edu>
4863
4866
4864 * IPython/Magic.py (Magic.parse_options): new function so that
4867 * IPython/Magic.py (Magic.parse_options): new function so that
4865 magics can parse options easier.
4868 magics can parse options easier.
4866 (Magic.magic_prun): new function similar to profile.run(),
4869 (Magic.magic_prun): new function similar to profile.run(),
4867 suggested by Chris Hart.
4870 suggested by Chris Hart.
4868 (Magic.magic_cd): fixed behavior so that it only changes if
4871 (Magic.magic_cd): fixed behavior so that it only changes if
4869 directory actually is in history.
4872 directory actually is in history.
4870
4873
4871 * IPython/usage.py (__doc__): added information about potential
4874 * IPython/usage.py (__doc__): added information about potential
4872 slowness of Verbose exception mode when there are huge data
4875 slowness of Verbose exception mode when there are huge data
4873 structures to be formatted (thanks to Archie Paulson).
4876 structures to be formatted (thanks to Archie Paulson).
4874
4877
4875 * IPython/ipmaker.py (make_IPython): Changed default logging
4878 * IPython/ipmaker.py (make_IPython): Changed default logging
4876 (when simply called with -log) to use curr_dir/ipython.log in
4879 (when simply called with -log) to use curr_dir/ipython.log in
4877 rotate mode. Fixed crash which was occuring with -log before
4880 rotate mode. Fixed crash which was occuring with -log before
4878 (thanks to Jim Boyle).
4881 (thanks to Jim Boyle).
4879
4882
4880 2002-05-01 Fernando Perez <fperez@colorado.edu>
4883 2002-05-01 Fernando Perez <fperez@colorado.edu>
4881
4884
4882 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4885 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4883 was nasty -- though somewhat of a corner case).
4886 was nasty -- though somewhat of a corner case).
4884
4887
4885 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4888 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4886 text (was a bug).
4889 text (was a bug).
4887
4890
4888 2002-04-30 Fernando Perez <fperez@colorado.edu>
4891 2002-04-30 Fernando Perez <fperez@colorado.edu>
4889
4892
4890 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4893 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4891 a print after ^D or ^C from the user so that the In[] prompt
4894 a print after ^D or ^C from the user so that the In[] prompt
4892 doesn't over-run the gnuplot one.
4895 doesn't over-run the gnuplot one.
4893
4896
4894 2002-04-29 Fernando Perez <fperez@colorado.edu>
4897 2002-04-29 Fernando Perez <fperez@colorado.edu>
4895
4898
4896 * Released 0.2.10
4899 * Released 0.2.10
4897
4900
4898 * IPython/__release__.py (version): get date dynamically.
4901 * IPython/__release__.py (version): get date dynamically.
4899
4902
4900 * Misc. documentation updates thanks to Arnd's comments. Also ran
4903 * Misc. documentation updates thanks to Arnd's comments. Also ran
4901 a full spellcheck on the manual (hadn't been done in a while).
4904 a full spellcheck on the manual (hadn't been done in a while).
4902
4905
4903 2002-04-27 Fernando Perez <fperez@colorado.edu>
4906 2002-04-27 Fernando Perez <fperez@colorado.edu>
4904
4907
4905 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4908 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4906 starting a log in mid-session would reset the input history list.
4909 starting a log in mid-session would reset the input history list.
4907
4910
4908 2002-04-26 Fernando Perez <fperez@colorado.edu>
4911 2002-04-26 Fernando Perez <fperez@colorado.edu>
4909
4912
4910 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4913 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4911 all files were being included in an update. Now anything in
4914 all files were being included in an update. Now anything in
4912 UserConfig that matches [A-Za-z]*.py will go (this excludes
4915 UserConfig that matches [A-Za-z]*.py will go (this excludes
4913 __init__.py)
4916 __init__.py)
4914
4917
4915 2002-04-25 Fernando Perez <fperez@colorado.edu>
4918 2002-04-25 Fernando Perez <fperez@colorado.edu>
4916
4919
4917 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4920 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4918 to __builtins__ so that any form of embedded or imported code can
4921 to __builtins__ so that any form of embedded or imported code can
4919 test for being inside IPython.
4922 test for being inside IPython.
4920
4923
4921 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4924 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4922 changed to GnuplotMagic because it's now an importable module,
4925 changed to GnuplotMagic because it's now an importable module,
4923 this makes the name follow that of the standard Gnuplot module.
4926 this makes the name follow that of the standard Gnuplot module.
4924 GnuplotMagic can now be loaded at any time in mid-session.
4927 GnuplotMagic can now be loaded at any time in mid-session.
4925
4928
4926 2002-04-24 Fernando Perez <fperez@colorado.edu>
4929 2002-04-24 Fernando Perez <fperez@colorado.edu>
4927
4930
4928 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4931 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4929 the globals (IPython has its own namespace) and the
4932 the globals (IPython has its own namespace) and the
4930 PhysicalQuantity stuff is much better anyway.
4933 PhysicalQuantity stuff is much better anyway.
4931
4934
4932 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4935 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4933 embedding example to standard user directory for
4936 embedding example to standard user directory for
4934 distribution. Also put it in the manual.
4937 distribution. Also put it in the manual.
4935
4938
4936 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4939 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4937 instance as first argument (so it doesn't rely on some obscure
4940 instance as first argument (so it doesn't rely on some obscure
4938 hidden global).
4941 hidden global).
4939
4942
4940 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4943 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4941 delimiters. While it prevents ().TAB from working, it allows
4944 delimiters. While it prevents ().TAB from working, it allows
4942 completions in open (... expressions. This is by far a more common
4945 completions in open (... expressions. This is by far a more common
4943 case.
4946 case.
4944
4947
4945 2002-04-23 Fernando Perez <fperez@colorado.edu>
4948 2002-04-23 Fernando Perez <fperez@colorado.edu>
4946
4949
4947 * IPython/Extensions/InterpreterPasteInput.py: new
4950 * IPython/Extensions/InterpreterPasteInput.py: new
4948 syntax-processing module for pasting lines with >>> or ... at the
4951 syntax-processing module for pasting lines with >>> or ... at the
4949 start.
4952 start.
4950
4953
4951 * IPython/Extensions/PhysicalQ_Interactive.py
4954 * IPython/Extensions/PhysicalQ_Interactive.py
4952 (PhysicalQuantityInteractive.__int__): fixed to work with either
4955 (PhysicalQuantityInteractive.__int__): fixed to work with either
4953 Numeric or math.
4956 Numeric or math.
4954
4957
4955 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4958 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4956 provided profiles. Now we have:
4959 provided profiles. Now we have:
4957 -math -> math module as * and cmath with its own namespace.
4960 -math -> math module as * and cmath with its own namespace.
4958 -numeric -> Numeric as *, plus gnuplot & grace
4961 -numeric -> Numeric as *, plus gnuplot & grace
4959 -physics -> same as before
4962 -physics -> same as before
4960
4963
4961 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4964 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4962 user-defined magics wouldn't be found by @magic if they were
4965 user-defined magics wouldn't be found by @magic if they were
4963 defined as class methods. Also cleaned up the namespace search
4966 defined as class methods. Also cleaned up the namespace search
4964 logic and the string building (to use %s instead of many repeated
4967 logic and the string building (to use %s instead of many repeated
4965 string adds).
4968 string adds).
4966
4969
4967 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4970 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4968 of user-defined magics to operate with class methods (cleaner, in
4971 of user-defined magics to operate with class methods (cleaner, in
4969 line with the gnuplot code).
4972 line with the gnuplot code).
4970
4973
4971 2002-04-22 Fernando Perez <fperez@colorado.edu>
4974 2002-04-22 Fernando Perez <fperez@colorado.edu>
4972
4975
4973 * setup.py: updated dependency list so that manual is updated when
4976 * setup.py: updated dependency list so that manual is updated when
4974 all included files change.
4977 all included files change.
4975
4978
4976 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4979 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4977 the delimiter removal option (the fix is ugly right now).
4980 the delimiter removal option (the fix is ugly right now).
4978
4981
4979 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4982 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4980 all of the math profile (quicker loading, no conflict between
4983 all of the math profile (quicker loading, no conflict between
4981 g-9.8 and g-gnuplot).
4984 g-9.8 and g-gnuplot).
4982
4985
4983 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4986 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4984 name of post-mortem files to IPython_crash_report.txt.
4987 name of post-mortem files to IPython_crash_report.txt.
4985
4988
4986 * Cleanup/update of the docs. Added all the new readline info and
4989 * Cleanup/update of the docs. Added all the new readline info and
4987 formatted all lists as 'real lists'.
4990 formatted all lists as 'real lists'.
4988
4991
4989 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4992 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4990 tab-completion options, since the full readline parse_and_bind is
4993 tab-completion options, since the full readline parse_and_bind is
4991 now accessible.
4994 now accessible.
4992
4995
4993 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4996 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4994 handling of readline options. Now users can specify any string to
4997 handling of readline options. Now users can specify any string to
4995 be passed to parse_and_bind(), as well as the delimiters to be
4998 be passed to parse_and_bind(), as well as the delimiters to be
4996 removed.
4999 removed.
4997 (InteractiveShell.__init__): Added __name__ to the global
5000 (InteractiveShell.__init__): Added __name__ to the global
4998 namespace so that things like Itpl which rely on its existence
5001 namespace so that things like Itpl which rely on its existence
4999 don't crash.
5002 don't crash.
5000 (InteractiveShell._prefilter): Defined the default with a _ so
5003 (InteractiveShell._prefilter): Defined the default with a _ so
5001 that prefilter() is easier to override, while the default one
5004 that prefilter() is easier to override, while the default one
5002 remains available.
5005 remains available.
5003
5006
5004 2002-04-18 Fernando Perez <fperez@colorado.edu>
5007 2002-04-18 Fernando Perez <fperez@colorado.edu>
5005
5008
5006 * Added information about pdb in the docs.
5009 * Added information about pdb in the docs.
5007
5010
5008 2002-04-17 Fernando Perez <fperez@colorado.edu>
5011 2002-04-17 Fernando Perez <fperez@colorado.edu>
5009
5012
5010 * IPython/ipmaker.py (make_IPython): added rc_override option to
5013 * IPython/ipmaker.py (make_IPython): added rc_override option to
5011 allow passing config options at creation time which may override
5014 allow passing config options at creation time which may override
5012 anything set in the config files or command line. This is
5015 anything set in the config files or command line. This is
5013 particularly useful for configuring embedded instances.
5016 particularly useful for configuring embedded instances.
5014
5017
5015 2002-04-15 Fernando Perez <fperez@colorado.edu>
5018 2002-04-15 Fernando Perez <fperez@colorado.edu>
5016
5019
5017 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5020 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5018 crash embedded instances because of the input cache falling out of
5021 crash embedded instances because of the input cache falling out of
5019 sync with the output counter.
5022 sync with the output counter.
5020
5023
5021 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5024 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5022 mode which calls pdb after an uncaught exception in IPython itself.
5025 mode which calls pdb after an uncaught exception in IPython itself.
5023
5026
5024 2002-04-14 Fernando Perez <fperez@colorado.edu>
5027 2002-04-14 Fernando Perez <fperez@colorado.edu>
5025
5028
5026 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5029 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5027 readline, fix it back after each call.
5030 readline, fix it back after each call.
5028
5031
5029 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5032 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5030 method to force all access via __call__(), which guarantees that
5033 method to force all access via __call__(), which guarantees that
5031 traceback references are properly deleted.
5034 traceback references are properly deleted.
5032
5035
5033 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5036 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5034 improve printing when pprint is in use.
5037 improve printing when pprint is in use.
5035
5038
5036 2002-04-13 Fernando Perez <fperez@colorado.edu>
5039 2002-04-13 Fernando Perez <fperez@colorado.edu>
5037
5040
5038 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5041 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5039 exceptions aren't caught anymore. If the user triggers one, he
5042 exceptions aren't caught anymore. If the user triggers one, he
5040 should know why he's doing it and it should go all the way up,
5043 should know why he's doing it and it should go all the way up,
5041 just like any other exception. So now @abort will fully kill the
5044 just like any other exception. So now @abort will fully kill the
5042 embedded interpreter and the embedding code (unless that happens
5045 embedded interpreter and the embedding code (unless that happens
5043 to catch SystemExit).
5046 to catch SystemExit).
5044
5047
5045 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5048 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5046 and a debugger() method to invoke the interactive pdb debugger
5049 and a debugger() method to invoke the interactive pdb debugger
5047 after printing exception information. Also added the corresponding
5050 after printing exception information. Also added the corresponding
5048 -pdb option and @pdb magic to control this feature, and updated
5051 -pdb option and @pdb magic to control this feature, and updated
5049 the docs. After a suggestion from Christopher Hart
5052 the docs. After a suggestion from Christopher Hart
5050 (hart-AT-caltech.edu).
5053 (hart-AT-caltech.edu).
5051
5054
5052 2002-04-12 Fernando Perez <fperez@colorado.edu>
5055 2002-04-12 Fernando Perez <fperez@colorado.edu>
5053
5056
5054 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5057 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5055 the exception handlers defined by the user (not the CrashHandler)
5058 the exception handlers defined by the user (not the CrashHandler)
5056 so that user exceptions don't trigger an ipython bug report.
5059 so that user exceptions don't trigger an ipython bug report.
5057
5060
5058 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5061 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5059 configurable (it should have always been so).
5062 configurable (it should have always been so).
5060
5063
5061 2002-03-26 Fernando Perez <fperez@colorado.edu>
5064 2002-03-26 Fernando Perez <fperez@colorado.edu>
5062
5065
5063 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5066 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5064 and there to fix embedding namespace issues. This should all be
5067 and there to fix embedding namespace issues. This should all be
5065 done in a more elegant way.
5068 done in a more elegant way.
5066
5069
5067 2002-03-25 Fernando Perez <fperez@colorado.edu>
5070 2002-03-25 Fernando Perez <fperez@colorado.edu>
5068
5071
5069 * IPython/genutils.py (get_home_dir): Try to make it work under
5072 * IPython/genutils.py (get_home_dir): Try to make it work under
5070 win9x also.
5073 win9x also.
5071
5074
5072 2002-03-20 Fernando Perez <fperez@colorado.edu>
5075 2002-03-20 Fernando Perez <fperez@colorado.edu>
5073
5076
5074 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5077 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5075 sys.displayhook untouched upon __init__.
5078 sys.displayhook untouched upon __init__.
5076
5079
5077 2002-03-19 Fernando Perez <fperez@colorado.edu>
5080 2002-03-19 Fernando Perez <fperez@colorado.edu>
5078
5081
5079 * Released 0.2.9 (for embedding bug, basically).
5082 * Released 0.2.9 (for embedding bug, basically).
5080
5083
5081 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5084 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5082 exceptions so that enclosing shell's state can be restored.
5085 exceptions so that enclosing shell's state can be restored.
5083
5086
5084 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5087 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5085 naming conventions in the .ipython/ dir.
5088 naming conventions in the .ipython/ dir.
5086
5089
5087 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5090 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5088 from delimiters list so filenames with - in them get expanded.
5091 from delimiters list so filenames with - in them get expanded.
5089
5092
5090 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5093 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5091 sys.displayhook not being properly restored after an embedded call.
5094 sys.displayhook not being properly restored after an embedded call.
5092
5095
5093 2002-03-18 Fernando Perez <fperez@colorado.edu>
5096 2002-03-18 Fernando Perez <fperez@colorado.edu>
5094
5097
5095 * Released 0.2.8
5098 * Released 0.2.8
5096
5099
5097 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5100 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5098 some files weren't being included in a -upgrade.
5101 some files weren't being included in a -upgrade.
5099 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5102 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5100 on' so that the first tab completes.
5103 on' so that the first tab completes.
5101 (InteractiveShell.handle_magic): fixed bug with spaces around
5104 (InteractiveShell.handle_magic): fixed bug with spaces around
5102 quotes breaking many magic commands.
5105 quotes breaking many magic commands.
5103
5106
5104 * setup.py: added note about ignoring the syntax error messages at
5107 * setup.py: added note about ignoring the syntax error messages at
5105 installation.
5108 installation.
5106
5109
5107 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5110 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5108 streamlining the gnuplot interface, now there's only one magic @gp.
5111 streamlining the gnuplot interface, now there's only one magic @gp.
5109
5112
5110 2002-03-17 Fernando Perez <fperez@colorado.edu>
5113 2002-03-17 Fernando Perez <fperez@colorado.edu>
5111
5114
5112 * IPython/UserConfig/magic_gnuplot.py: new name for the
5115 * IPython/UserConfig/magic_gnuplot.py: new name for the
5113 example-magic_pm.py file. Much enhanced system, now with a shell
5116 example-magic_pm.py file. Much enhanced system, now with a shell
5114 for communicating directly with gnuplot, one command at a time.
5117 for communicating directly with gnuplot, one command at a time.
5115
5118
5116 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5119 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5117 setting __name__=='__main__'.
5120 setting __name__=='__main__'.
5118
5121
5119 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5122 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5120 mini-shell for accessing gnuplot from inside ipython. Should
5123 mini-shell for accessing gnuplot from inside ipython. Should
5121 extend it later for grace access too. Inspired by Arnd's
5124 extend it later for grace access too. Inspired by Arnd's
5122 suggestion.
5125 suggestion.
5123
5126
5124 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5127 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5125 calling magic functions with () in their arguments. Thanks to Arnd
5128 calling magic functions with () in their arguments. Thanks to Arnd
5126 Baecker for pointing this to me.
5129 Baecker for pointing this to me.
5127
5130
5128 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5131 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5129 infinitely for integer or complex arrays (only worked with floats).
5132 infinitely for integer or complex arrays (only worked with floats).
5130
5133
5131 2002-03-16 Fernando Perez <fperez@colorado.edu>
5134 2002-03-16 Fernando Perez <fperez@colorado.edu>
5132
5135
5133 * setup.py: Merged setup and setup_windows into a single script
5136 * setup.py: Merged setup and setup_windows into a single script
5134 which properly handles things for windows users.
5137 which properly handles things for windows users.
5135
5138
5136 2002-03-15 Fernando Perez <fperez@colorado.edu>
5139 2002-03-15 Fernando Perez <fperez@colorado.edu>
5137
5140
5138 * Big change to the manual: now the magics are all automatically
5141 * Big change to the manual: now the magics are all automatically
5139 documented. This information is generated from their docstrings
5142 documented. This information is generated from their docstrings
5140 and put in a latex file included by the manual lyx file. This way
5143 and put in a latex file included by the manual lyx file. This way
5141 we get always up to date information for the magics. The manual
5144 we get always up to date information for the magics. The manual
5142 now also has proper version information, also auto-synced.
5145 now also has proper version information, also auto-synced.
5143
5146
5144 For this to work, an undocumented --magic_docstrings option was added.
5147 For this to work, an undocumented --magic_docstrings option was added.
5145
5148
5146 2002-03-13 Fernando Perez <fperez@colorado.edu>
5149 2002-03-13 Fernando Perez <fperez@colorado.edu>
5147
5150
5148 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5151 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5149 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5152 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5150
5153
5151 2002-03-12 Fernando Perez <fperez@colorado.edu>
5154 2002-03-12 Fernando Perez <fperez@colorado.edu>
5152
5155
5153 * IPython/ultraTB.py (TermColors): changed color escapes again to
5156 * IPython/ultraTB.py (TermColors): changed color escapes again to
5154 fix the (old, reintroduced) line-wrapping bug. Basically, if
5157 fix the (old, reintroduced) line-wrapping bug. Basically, if
5155 \001..\002 aren't given in the color escapes, lines get wrapped
5158 \001..\002 aren't given in the color escapes, lines get wrapped
5156 weirdly. But giving those screws up old xterms and emacs terms. So
5159 weirdly. But giving those screws up old xterms and emacs terms. So
5157 I added some logic for emacs terms to be ok, but I can't identify old
5160 I added some logic for emacs terms to be ok, but I can't identify old
5158 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5161 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5159
5162
5160 2002-03-10 Fernando Perez <fperez@colorado.edu>
5163 2002-03-10 Fernando Perez <fperez@colorado.edu>
5161
5164
5162 * IPython/usage.py (__doc__): Various documentation cleanups and
5165 * IPython/usage.py (__doc__): Various documentation cleanups and
5163 updates, both in usage docstrings and in the manual.
5166 updates, both in usage docstrings and in the manual.
5164
5167
5165 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5168 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5166 handling of caching. Set minimum acceptabe value for having a
5169 handling of caching. Set minimum acceptabe value for having a
5167 cache at 20 values.
5170 cache at 20 values.
5168
5171
5169 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5172 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5170 install_first_time function to a method, renamed it and added an
5173 install_first_time function to a method, renamed it and added an
5171 'upgrade' mode. Now people can update their config directory with
5174 'upgrade' mode. Now people can update their config directory with
5172 a simple command line switch (-upgrade, also new).
5175 a simple command line switch (-upgrade, also new).
5173
5176
5174 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5177 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5175 @file (convenient for automagic users under Python >= 2.2).
5178 @file (convenient for automagic users under Python >= 2.2).
5176 Removed @files (it seemed more like a plural than an abbrev. of
5179 Removed @files (it seemed more like a plural than an abbrev. of
5177 'file show').
5180 'file show').
5178
5181
5179 * IPython/iplib.py (install_first_time): Fixed crash if there were
5182 * IPython/iplib.py (install_first_time): Fixed crash if there were
5180 backup files ('~') in .ipython/ install directory.
5183 backup files ('~') in .ipython/ install directory.
5181
5184
5182 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5185 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5183 system. Things look fine, but these changes are fairly
5186 system. Things look fine, but these changes are fairly
5184 intrusive. Test them for a few days.
5187 intrusive. Test them for a few days.
5185
5188
5186 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5189 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5187 the prompts system. Now all in/out prompt strings are user
5190 the prompts system. Now all in/out prompt strings are user
5188 controllable. This is particularly useful for embedding, as one
5191 controllable. This is particularly useful for embedding, as one
5189 can tag embedded instances with particular prompts.
5192 can tag embedded instances with particular prompts.
5190
5193
5191 Also removed global use of sys.ps1/2, which now allows nested
5194 Also removed global use of sys.ps1/2, which now allows nested
5192 embeddings without any problems. Added command-line options for
5195 embeddings without any problems. Added command-line options for
5193 the prompt strings.
5196 the prompt strings.
5194
5197
5195 2002-03-08 Fernando Perez <fperez@colorado.edu>
5198 2002-03-08 Fernando Perez <fperez@colorado.edu>
5196
5199
5197 * IPython/UserConfig/example-embed-short.py (ipshell): added
5200 * IPython/UserConfig/example-embed-short.py (ipshell): added
5198 example file with the bare minimum code for embedding.
5201 example file with the bare minimum code for embedding.
5199
5202
5200 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5203 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5201 functionality for the embeddable shell to be activated/deactivated
5204 functionality for the embeddable shell to be activated/deactivated
5202 either globally or at each call.
5205 either globally or at each call.
5203
5206
5204 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5207 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5205 rewriting the prompt with '--->' for auto-inputs with proper
5208 rewriting the prompt with '--->' for auto-inputs with proper
5206 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5209 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5207 this is handled by the prompts class itself, as it should.
5210 this is handled by the prompts class itself, as it should.
5208
5211
5209 2002-03-05 Fernando Perez <fperez@colorado.edu>
5212 2002-03-05 Fernando Perez <fperez@colorado.edu>
5210
5213
5211 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5214 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5212 @logstart to avoid name clashes with the math log function.
5215 @logstart to avoid name clashes with the math log function.
5213
5216
5214 * Big updates to X/Emacs section of the manual.
5217 * Big updates to X/Emacs section of the manual.
5215
5218
5216 * Removed ipython_emacs. Milan explained to me how to pass
5219 * Removed ipython_emacs. Milan explained to me how to pass
5217 arguments to ipython through Emacs. Some day I'm going to end up
5220 arguments to ipython through Emacs. Some day I'm going to end up
5218 learning some lisp...
5221 learning some lisp...
5219
5222
5220 2002-03-04 Fernando Perez <fperez@colorado.edu>
5223 2002-03-04 Fernando Perez <fperez@colorado.edu>
5221
5224
5222 * IPython/ipython_emacs: Created script to be used as the
5225 * IPython/ipython_emacs: Created script to be used as the
5223 py-python-command Emacs variable so we can pass IPython
5226 py-python-command Emacs variable so we can pass IPython
5224 parameters. I can't figure out how to tell Emacs directly to pass
5227 parameters. I can't figure out how to tell Emacs directly to pass
5225 parameters to IPython, so a dummy shell script will do it.
5228 parameters to IPython, so a dummy shell script will do it.
5226
5229
5227 Other enhancements made for things to work better under Emacs'
5230 Other enhancements made for things to work better under Emacs'
5228 various types of terminals. Many thanks to Milan Zamazal
5231 various types of terminals. Many thanks to Milan Zamazal
5229 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5232 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5230
5233
5231 2002-03-01 Fernando Perez <fperez@colorado.edu>
5234 2002-03-01 Fernando Perez <fperez@colorado.edu>
5232
5235
5233 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5236 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5234 that loading of readline is now optional. This gives better
5237 that loading of readline is now optional. This gives better
5235 control to emacs users.
5238 control to emacs users.
5236
5239
5237 * IPython/ultraTB.py (__date__): Modified color escape sequences
5240 * IPython/ultraTB.py (__date__): Modified color escape sequences
5238 and now things work fine under xterm and in Emacs' term buffers
5241 and now things work fine under xterm and in Emacs' term buffers
5239 (though not shell ones). Well, in emacs you get colors, but all
5242 (though not shell ones). Well, in emacs you get colors, but all
5240 seem to be 'light' colors (no difference between dark and light
5243 seem to be 'light' colors (no difference between dark and light
5241 ones). But the garbage chars are gone, and also in xterms. It
5244 ones). But the garbage chars are gone, and also in xterms. It
5242 seems that now I'm using 'cleaner' ansi sequences.
5245 seems that now I'm using 'cleaner' ansi sequences.
5243
5246
5244 2002-02-21 Fernando Perez <fperez@colorado.edu>
5247 2002-02-21 Fernando Perez <fperez@colorado.edu>
5245
5248
5246 * Released 0.2.7 (mainly to publish the scoping fix).
5249 * Released 0.2.7 (mainly to publish the scoping fix).
5247
5250
5248 * IPython/Logger.py (Logger.logstate): added. A corresponding
5251 * IPython/Logger.py (Logger.logstate): added. A corresponding
5249 @logstate magic was created.
5252 @logstate magic was created.
5250
5253
5251 * IPython/Magic.py: fixed nested scoping problem under Python
5254 * IPython/Magic.py: fixed nested scoping problem under Python
5252 2.1.x (automagic wasn't working).
5255 2.1.x (automagic wasn't working).
5253
5256
5254 2002-02-20 Fernando Perez <fperez@colorado.edu>
5257 2002-02-20 Fernando Perez <fperez@colorado.edu>
5255
5258
5256 * Released 0.2.6.
5259 * Released 0.2.6.
5257
5260
5258 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5261 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5259 option so that logs can come out without any headers at all.
5262 option so that logs can come out without any headers at all.
5260
5263
5261 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5264 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5262 SciPy.
5265 SciPy.
5263
5266
5264 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5267 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5265 that embedded IPython calls don't require vars() to be explicitly
5268 that embedded IPython calls don't require vars() to be explicitly
5266 passed. Now they are extracted from the caller's frame (code
5269 passed. Now they are extracted from the caller's frame (code
5267 snatched from Eric Jones' weave). Added better documentation to
5270 snatched from Eric Jones' weave). Added better documentation to
5268 the section on embedding and the example file.
5271 the section on embedding and the example file.
5269
5272
5270 * IPython/genutils.py (page): Changed so that under emacs, it just
5273 * IPython/genutils.py (page): Changed so that under emacs, it just
5271 prints the string. You can then page up and down in the emacs
5274 prints the string. You can then page up and down in the emacs
5272 buffer itself. This is how the builtin help() works.
5275 buffer itself. This is how the builtin help() works.
5273
5276
5274 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5277 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5275 macro scoping: macros need to be executed in the user's namespace
5278 macro scoping: macros need to be executed in the user's namespace
5276 to work as if they had been typed by the user.
5279 to work as if they had been typed by the user.
5277
5280
5278 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5281 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5279 execute automatically (no need to type 'exec...'). They then
5282 execute automatically (no need to type 'exec...'). They then
5280 behave like 'true macros'. The printing system was also modified
5283 behave like 'true macros'. The printing system was also modified
5281 for this to work.
5284 for this to work.
5282
5285
5283 2002-02-19 Fernando Perez <fperez@colorado.edu>
5286 2002-02-19 Fernando Perez <fperez@colorado.edu>
5284
5287
5285 * IPython/genutils.py (page_file): new function for paging files
5288 * IPython/genutils.py (page_file): new function for paging files
5286 in an OS-independent way. Also necessary for file viewing to work
5289 in an OS-independent way. Also necessary for file viewing to work
5287 well inside Emacs buffers.
5290 well inside Emacs buffers.
5288 (page): Added checks for being in an emacs buffer.
5291 (page): Added checks for being in an emacs buffer.
5289 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5292 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5290 same bug in iplib.
5293 same bug in iplib.
5291
5294
5292 2002-02-18 Fernando Perez <fperez@colorado.edu>
5295 2002-02-18 Fernando Perez <fperez@colorado.edu>
5293
5296
5294 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5297 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5295 of readline so that IPython can work inside an Emacs buffer.
5298 of readline so that IPython can work inside an Emacs buffer.
5296
5299
5297 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5300 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5298 method signatures (they weren't really bugs, but it looks cleaner
5301 method signatures (they weren't really bugs, but it looks cleaner
5299 and keeps PyChecker happy).
5302 and keeps PyChecker happy).
5300
5303
5301 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5304 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5302 for implementing various user-defined hooks. Currently only
5305 for implementing various user-defined hooks. Currently only
5303 display is done.
5306 display is done.
5304
5307
5305 * IPython/Prompts.py (CachedOutput._display): changed display
5308 * IPython/Prompts.py (CachedOutput._display): changed display
5306 functions so that they can be dynamically changed by users easily.
5309 functions so that they can be dynamically changed by users easily.
5307
5310
5308 * IPython/Extensions/numeric_formats.py (num_display): added an
5311 * IPython/Extensions/numeric_formats.py (num_display): added an
5309 extension for printing NumPy arrays in flexible manners. It
5312 extension for printing NumPy arrays in flexible manners. It
5310 doesn't do anything yet, but all the structure is in
5313 doesn't do anything yet, but all the structure is in
5311 place. Ultimately the plan is to implement output format control
5314 place. Ultimately the plan is to implement output format control
5312 like in Octave.
5315 like in Octave.
5313
5316
5314 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5317 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5315 methods are found at run-time by all the automatic machinery.
5318 methods are found at run-time by all the automatic machinery.
5316
5319
5317 2002-02-17 Fernando Perez <fperez@colorado.edu>
5320 2002-02-17 Fernando Perez <fperez@colorado.edu>
5318
5321
5319 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5322 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5320 whole file a little.
5323 whole file a little.
5321
5324
5322 * ToDo: closed this document. Now there's a new_design.lyx
5325 * ToDo: closed this document. Now there's a new_design.lyx
5323 document for all new ideas. Added making a pdf of it for the
5326 document for all new ideas. Added making a pdf of it for the
5324 end-user distro.
5327 end-user distro.
5325
5328
5326 * IPython/Logger.py (Logger.switch_log): Created this to replace
5329 * IPython/Logger.py (Logger.switch_log): Created this to replace
5327 logon() and logoff(). It also fixes a nasty crash reported by
5330 logon() and logoff(). It also fixes a nasty crash reported by
5328 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5331 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5329
5332
5330 * IPython/iplib.py (complete): got auto-completion to work with
5333 * IPython/iplib.py (complete): got auto-completion to work with
5331 automagic (I had wanted this for a long time).
5334 automagic (I had wanted this for a long time).
5332
5335
5333 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5336 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5334 to @file, since file() is now a builtin and clashes with automagic
5337 to @file, since file() is now a builtin and clashes with automagic
5335 for @file.
5338 for @file.
5336
5339
5337 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5340 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5338 of this was previously in iplib, which had grown to more than 2000
5341 of this was previously in iplib, which had grown to more than 2000
5339 lines, way too long. No new functionality, but it makes managing
5342 lines, way too long. No new functionality, but it makes managing
5340 the code a bit easier.
5343 the code a bit easier.
5341
5344
5342 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5345 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5343 information to crash reports.
5346 information to crash reports.
5344
5347
5345 2002-02-12 Fernando Perez <fperez@colorado.edu>
5348 2002-02-12 Fernando Perez <fperez@colorado.edu>
5346
5349
5347 * Released 0.2.5.
5350 * Released 0.2.5.
5348
5351
5349 2002-02-11 Fernando Perez <fperez@colorado.edu>
5352 2002-02-11 Fernando Perez <fperez@colorado.edu>
5350
5353
5351 * Wrote a relatively complete Windows installer. It puts
5354 * Wrote a relatively complete Windows installer. It puts
5352 everything in place, creates Start Menu entries and fixes the
5355 everything in place, creates Start Menu entries and fixes the
5353 color issues. Nothing fancy, but it works.
5356 color issues. Nothing fancy, but it works.
5354
5357
5355 2002-02-10 Fernando Perez <fperez@colorado.edu>
5358 2002-02-10 Fernando Perez <fperez@colorado.edu>
5356
5359
5357 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5360 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5358 os.path.expanduser() call so that we can type @run ~/myfile.py and
5361 os.path.expanduser() call so that we can type @run ~/myfile.py and
5359 have thigs work as expected.
5362 have thigs work as expected.
5360
5363
5361 * IPython/genutils.py (page): fixed exception handling so things
5364 * IPython/genutils.py (page): fixed exception handling so things
5362 work both in Unix and Windows correctly. Quitting a pager triggers
5365 work both in Unix and Windows correctly. Quitting a pager triggers
5363 an IOError/broken pipe in Unix, and in windows not finding a pager
5366 an IOError/broken pipe in Unix, and in windows not finding a pager
5364 is also an IOError, so I had to actually look at the return value
5367 is also an IOError, so I had to actually look at the return value
5365 of the exception, not just the exception itself. Should be ok now.
5368 of the exception, not just the exception itself. Should be ok now.
5366
5369
5367 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5370 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5368 modified to allow case-insensitive color scheme changes.
5371 modified to allow case-insensitive color scheme changes.
5369
5372
5370 2002-02-09 Fernando Perez <fperez@colorado.edu>
5373 2002-02-09 Fernando Perez <fperez@colorado.edu>
5371
5374
5372 * IPython/genutils.py (native_line_ends): new function to leave
5375 * IPython/genutils.py (native_line_ends): new function to leave
5373 user config files with os-native line-endings.
5376 user config files with os-native line-endings.
5374
5377
5375 * README and manual updates.
5378 * README and manual updates.
5376
5379
5377 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5380 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5378 instead of StringType to catch Unicode strings.
5381 instead of StringType to catch Unicode strings.
5379
5382
5380 * IPython/genutils.py (filefind): fixed bug for paths with
5383 * IPython/genutils.py (filefind): fixed bug for paths with
5381 embedded spaces (very common in Windows).
5384 embedded spaces (very common in Windows).
5382
5385
5383 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5386 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5384 files under Windows, so that they get automatically associated
5387 files under Windows, so that they get automatically associated
5385 with a text editor. Windows makes it a pain to handle
5388 with a text editor. Windows makes it a pain to handle
5386 extension-less files.
5389 extension-less files.
5387
5390
5388 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5391 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5389 warning about readline only occur for Posix. In Windows there's no
5392 warning about readline only occur for Posix. In Windows there's no
5390 way to get readline, so why bother with the warning.
5393 way to get readline, so why bother with the warning.
5391
5394
5392 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5395 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5393 for __str__ instead of dir(self), since dir() changed in 2.2.
5396 for __str__ instead of dir(self), since dir() changed in 2.2.
5394
5397
5395 * Ported to Windows! Tested on XP, I suspect it should work fine
5398 * Ported to Windows! Tested on XP, I suspect it should work fine
5396 on NT/2000, but I don't think it will work on 98 et al. That
5399 on NT/2000, but I don't think it will work on 98 et al. That
5397 series of Windows is such a piece of junk anyway that I won't try
5400 series of Windows is such a piece of junk anyway that I won't try
5398 porting it there. The XP port was straightforward, showed a few
5401 porting it there. The XP port was straightforward, showed a few
5399 bugs here and there (fixed all), in particular some string
5402 bugs here and there (fixed all), in particular some string
5400 handling stuff which required considering Unicode strings (which
5403 handling stuff which required considering Unicode strings (which
5401 Windows uses). This is good, but hasn't been too tested :) No
5404 Windows uses). This is good, but hasn't been too tested :) No
5402 fancy installer yet, I'll put a note in the manual so people at
5405 fancy installer yet, I'll put a note in the manual so people at
5403 least make manually a shortcut.
5406 least make manually a shortcut.
5404
5407
5405 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5408 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5406 into a single one, "colors". This now controls both prompt and
5409 into a single one, "colors". This now controls both prompt and
5407 exception color schemes, and can be changed both at startup
5410 exception color schemes, and can be changed both at startup
5408 (either via command-line switches or via ipythonrc files) and at
5411 (either via command-line switches or via ipythonrc files) and at
5409 runtime, with @colors.
5412 runtime, with @colors.
5410 (Magic.magic_run): renamed @prun to @run and removed the old
5413 (Magic.magic_run): renamed @prun to @run and removed the old
5411 @run. The two were too similar to warrant keeping both.
5414 @run. The two were too similar to warrant keeping both.
5412
5415
5413 2002-02-03 Fernando Perez <fperez@colorado.edu>
5416 2002-02-03 Fernando Perez <fperez@colorado.edu>
5414
5417
5415 * IPython/iplib.py (install_first_time): Added comment on how to
5418 * IPython/iplib.py (install_first_time): Added comment on how to
5416 configure the color options for first-time users. Put a <return>
5419 configure the color options for first-time users. Put a <return>
5417 request at the end so that small-terminal users get a chance to
5420 request at the end so that small-terminal users get a chance to
5418 read the startup info.
5421 read the startup info.
5419
5422
5420 2002-01-23 Fernando Perez <fperez@colorado.edu>
5423 2002-01-23 Fernando Perez <fperez@colorado.edu>
5421
5424
5422 * IPython/iplib.py (CachedOutput.update): Changed output memory
5425 * IPython/iplib.py (CachedOutput.update): Changed output memory
5423 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5426 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5424 input history we still use _i. Did this b/c these variable are
5427 input history we still use _i. Did this b/c these variable are
5425 very commonly used in interactive work, so the less we need to
5428 very commonly used in interactive work, so the less we need to
5426 type the better off we are.
5429 type the better off we are.
5427 (Magic.magic_prun): updated @prun to better handle the namespaces
5430 (Magic.magic_prun): updated @prun to better handle the namespaces
5428 the file will run in, including a fix for __name__ not being set
5431 the file will run in, including a fix for __name__ not being set
5429 before.
5432 before.
5430
5433
5431 2002-01-20 Fernando Perez <fperez@colorado.edu>
5434 2002-01-20 Fernando Perez <fperez@colorado.edu>
5432
5435
5433 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5436 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5434 extra garbage for Python 2.2. Need to look more carefully into
5437 extra garbage for Python 2.2. Need to look more carefully into
5435 this later.
5438 this later.
5436
5439
5437 2002-01-19 Fernando Perez <fperez@colorado.edu>
5440 2002-01-19 Fernando Perez <fperez@colorado.edu>
5438
5441
5439 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5442 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5440 display SyntaxError exceptions properly formatted when they occur
5443 display SyntaxError exceptions properly formatted when they occur
5441 (they can be triggered by imported code).
5444 (they can be triggered by imported code).
5442
5445
5443 2002-01-18 Fernando Perez <fperez@colorado.edu>
5446 2002-01-18 Fernando Perez <fperez@colorado.edu>
5444
5447
5445 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5448 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5446 SyntaxError exceptions are reported nicely formatted, instead of
5449 SyntaxError exceptions are reported nicely formatted, instead of
5447 spitting out only offset information as before.
5450 spitting out only offset information as before.
5448 (Magic.magic_prun): Added the @prun function for executing
5451 (Magic.magic_prun): Added the @prun function for executing
5449 programs with command line args inside IPython.
5452 programs with command line args inside IPython.
5450
5453
5451 2002-01-16 Fernando Perez <fperez@colorado.edu>
5454 2002-01-16 Fernando Perez <fperez@colorado.edu>
5452
5455
5453 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5456 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5454 to *not* include the last item given in a range. This brings their
5457 to *not* include the last item given in a range. This brings their
5455 behavior in line with Python's slicing:
5458 behavior in line with Python's slicing:
5456 a[n1:n2] -> a[n1]...a[n2-1]
5459 a[n1:n2] -> a[n1]...a[n2-1]
5457 It may be a bit less convenient, but I prefer to stick to Python's
5460 It may be a bit less convenient, but I prefer to stick to Python's
5458 conventions *everywhere*, so users never have to wonder.
5461 conventions *everywhere*, so users never have to wonder.
5459 (Magic.magic_macro): Added @macro function to ease the creation of
5462 (Magic.magic_macro): Added @macro function to ease the creation of
5460 macros.
5463 macros.
5461
5464
5462 2002-01-05 Fernando Perez <fperez@colorado.edu>
5465 2002-01-05 Fernando Perez <fperez@colorado.edu>
5463
5466
5464 * Released 0.2.4.
5467 * Released 0.2.4.
5465
5468
5466 * IPython/iplib.py (Magic.magic_pdef):
5469 * IPython/iplib.py (Magic.magic_pdef):
5467 (InteractiveShell.safe_execfile): report magic lines and error
5470 (InteractiveShell.safe_execfile): report magic lines and error
5468 lines without line numbers so one can easily copy/paste them for
5471 lines without line numbers so one can easily copy/paste them for
5469 re-execution.
5472 re-execution.
5470
5473
5471 * Updated manual with recent changes.
5474 * Updated manual with recent changes.
5472
5475
5473 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5476 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5474 docstring printing when class? is called. Very handy for knowing
5477 docstring printing when class? is called. Very handy for knowing
5475 how to create class instances (as long as __init__ is well
5478 how to create class instances (as long as __init__ is well
5476 documented, of course :)
5479 documented, of course :)
5477 (Magic.magic_doc): print both class and constructor docstrings.
5480 (Magic.magic_doc): print both class and constructor docstrings.
5478 (Magic.magic_pdef): give constructor info if passed a class and
5481 (Magic.magic_pdef): give constructor info if passed a class and
5479 __call__ info for callable object instances.
5482 __call__ info for callable object instances.
5480
5483
5481 2002-01-04 Fernando Perez <fperez@colorado.edu>
5484 2002-01-04 Fernando Perez <fperez@colorado.edu>
5482
5485
5483 * Made deep_reload() off by default. It doesn't always work
5486 * Made deep_reload() off by default. It doesn't always work
5484 exactly as intended, so it's probably safer to have it off. It's
5487 exactly as intended, so it's probably safer to have it off. It's
5485 still available as dreload() anyway, so nothing is lost.
5488 still available as dreload() anyway, so nothing is lost.
5486
5489
5487 2002-01-02 Fernando Perez <fperez@colorado.edu>
5490 2002-01-02 Fernando Perez <fperez@colorado.edu>
5488
5491
5489 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5492 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5490 so I wanted an updated release).
5493 so I wanted an updated release).
5491
5494
5492 2001-12-27 Fernando Perez <fperez@colorado.edu>
5495 2001-12-27 Fernando Perez <fperez@colorado.edu>
5493
5496
5494 * IPython/iplib.py (InteractiveShell.interact): Added the original
5497 * IPython/iplib.py (InteractiveShell.interact): Added the original
5495 code from 'code.py' for this module in order to change the
5498 code from 'code.py' for this module in order to change the
5496 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5499 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5497 the history cache would break when the user hit Ctrl-C, and
5500 the history cache would break when the user hit Ctrl-C, and
5498 interact() offers no way to add any hooks to it.
5501 interact() offers no way to add any hooks to it.
5499
5502
5500 2001-12-23 Fernando Perez <fperez@colorado.edu>
5503 2001-12-23 Fernando Perez <fperez@colorado.edu>
5501
5504
5502 * setup.py: added check for 'MANIFEST' before trying to remove
5505 * setup.py: added check for 'MANIFEST' before trying to remove
5503 it. Thanks to Sean Reifschneider.
5506 it. Thanks to Sean Reifschneider.
5504
5507
5505 2001-12-22 Fernando Perez <fperez@colorado.edu>
5508 2001-12-22 Fernando Perez <fperez@colorado.edu>
5506
5509
5507 * Released 0.2.2.
5510 * Released 0.2.2.
5508
5511
5509 * Finished (reasonably) writing the manual. Later will add the
5512 * Finished (reasonably) writing the manual. Later will add the
5510 python-standard navigation stylesheets, but for the time being
5513 python-standard navigation stylesheets, but for the time being
5511 it's fairly complete. Distribution will include html and pdf
5514 it's fairly complete. Distribution will include html and pdf
5512 versions.
5515 versions.
5513
5516
5514 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5517 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5515 (MayaVi author).
5518 (MayaVi author).
5516
5519
5517 2001-12-21 Fernando Perez <fperez@colorado.edu>
5520 2001-12-21 Fernando Perez <fperez@colorado.edu>
5518
5521
5519 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5522 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5520 good public release, I think (with the manual and the distutils
5523 good public release, I think (with the manual and the distutils
5521 installer). The manual can use some work, but that can go
5524 installer). The manual can use some work, but that can go
5522 slowly. Otherwise I think it's quite nice for end users. Next
5525 slowly. Otherwise I think it's quite nice for end users. Next
5523 summer, rewrite the guts of it...
5526 summer, rewrite the guts of it...
5524
5527
5525 * Changed format of ipythonrc files to use whitespace as the
5528 * Changed format of ipythonrc files to use whitespace as the
5526 separator instead of an explicit '='. Cleaner.
5529 separator instead of an explicit '='. Cleaner.
5527
5530
5528 2001-12-20 Fernando Perez <fperez@colorado.edu>
5531 2001-12-20 Fernando Perez <fperez@colorado.edu>
5529
5532
5530 * Started a manual in LyX. For now it's just a quick merge of the
5533 * Started a manual in LyX. For now it's just a quick merge of the
5531 various internal docstrings and READMEs. Later it may grow into a
5534 various internal docstrings and READMEs. Later it may grow into a
5532 nice, full-blown manual.
5535 nice, full-blown manual.
5533
5536
5534 * Set up a distutils based installer. Installation should now be
5537 * Set up a distutils based installer. Installation should now be
5535 trivially simple for end-users.
5538 trivially simple for end-users.
5536
5539
5537 2001-12-11 Fernando Perez <fperez@colorado.edu>
5540 2001-12-11 Fernando Perez <fperez@colorado.edu>
5538
5541
5539 * Released 0.2.0. First public release, announced it at
5542 * Released 0.2.0. First public release, announced it at
5540 comp.lang.python. From now on, just bugfixes...
5543 comp.lang.python. From now on, just bugfixes...
5541
5544
5542 * Went through all the files, set copyright/license notices and
5545 * Went through all the files, set copyright/license notices and
5543 cleaned up things. Ready for release.
5546 cleaned up things. Ready for release.
5544
5547
5545 2001-12-10 Fernando Perez <fperez@colorado.edu>
5548 2001-12-10 Fernando Perez <fperez@colorado.edu>
5546
5549
5547 * Changed the first-time installer not to use tarfiles. It's more
5550 * Changed the first-time installer not to use tarfiles. It's more
5548 robust now and less unix-dependent. Also makes it easier for
5551 robust now and less unix-dependent. Also makes it easier for
5549 people to later upgrade versions.
5552 people to later upgrade versions.
5550
5553
5551 * Changed @exit to @abort to reflect the fact that it's pretty
5554 * Changed @exit to @abort to reflect the fact that it's pretty
5552 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5555 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5553 becomes significant only when IPyhton is embedded: in that case,
5556 becomes significant only when IPyhton is embedded: in that case,
5554 C-D closes IPython only, but @abort kills the enclosing program
5557 C-D closes IPython only, but @abort kills the enclosing program
5555 too (unless it had called IPython inside a try catching
5558 too (unless it had called IPython inside a try catching
5556 SystemExit).
5559 SystemExit).
5557
5560
5558 * Created Shell module which exposes the actuall IPython Shell
5561 * Created Shell module which exposes the actuall IPython Shell
5559 classes, currently the normal and the embeddable one. This at
5562 classes, currently the normal and the embeddable one. This at
5560 least offers a stable interface we won't need to change when
5563 least offers a stable interface we won't need to change when
5561 (later) the internals are rewritten. That rewrite will be confined
5564 (later) the internals are rewritten. That rewrite will be confined
5562 to iplib and ipmaker, but the Shell interface should remain as is.
5565 to iplib and ipmaker, but the Shell interface should remain as is.
5563
5566
5564 * Added embed module which offers an embeddable IPShell object,
5567 * Added embed module which offers an embeddable IPShell object,
5565 useful to fire up IPython *inside* a running program. Great for
5568 useful to fire up IPython *inside* a running program. Great for
5566 debugging or dynamical data analysis.
5569 debugging or dynamical data analysis.
5567
5570
5568 2001-12-08 Fernando Perez <fperez@colorado.edu>
5571 2001-12-08 Fernando Perez <fperez@colorado.edu>
5569
5572
5570 * Fixed small bug preventing seeing info from methods of defined
5573 * Fixed small bug preventing seeing info from methods of defined
5571 objects (incorrect namespace in _ofind()).
5574 objects (incorrect namespace in _ofind()).
5572
5575
5573 * Documentation cleanup. Moved the main usage docstrings to a
5576 * Documentation cleanup. Moved the main usage docstrings to a
5574 separate file, usage.py (cleaner to maintain, and hopefully in the
5577 separate file, usage.py (cleaner to maintain, and hopefully in the
5575 future some perlpod-like way of producing interactive, man and
5578 future some perlpod-like way of producing interactive, man and
5576 html docs out of it will be found).
5579 html docs out of it will be found).
5577
5580
5578 * Added @profile to see your profile at any time.
5581 * Added @profile to see your profile at any time.
5579
5582
5580 * Added @p as an alias for 'print'. It's especially convenient if
5583 * Added @p as an alias for 'print'. It's especially convenient if
5581 using automagic ('p x' prints x).
5584 using automagic ('p x' prints x).
5582
5585
5583 * Small cleanups and fixes after a pychecker run.
5586 * Small cleanups and fixes after a pychecker run.
5584
5587
5585 * Changed the @cd command to handle @cd - and @cd -<n> for
5588 * Changed the @cd command to handle @cd - and @cd -<n> for
5586 visiting any directory in _dh.
5589 visiting any directory in _dh.
5587
5590
5588 * Introduced _dh, a history of visited directories. @dhist prints
5591 * Introduced _dh, a history of visited directories. @dhist prints
5589 it out with numbers.
5592 it out with numbers.
5590
5593
5591 2001-12-07 Fernando Perez <fperez@colorado.edu>
5594 2001-12-07 Fernando Perez <fperez@colorado.edu>
5592
5595
5593 * Released 0.1.22
5596 * Released 0.1.22
5594
5597
5595 * Made initialization a bit more robust against invalid color
5598 * Made initialization a bit more robust against invalid color
5596 options in user input (exit, not traceback-crash).
5599 options in user input (exit, not traceback-crash).
5597
5600
5598 * Changed the bug crash reporter to write the report only in the
5601 * Changed the bug crash reporter to write the report only in the
5599 user's .ipython directory. That way IPython won't litter people's
5602 user's .ipython directory. That way IPython won't litter people's
5600 hard disks with crash files all over the place. Also print on
5603 hard disks with crash files all over the place. Also print on
5601 screen the necessary mail command.
5604 screen the necessary mail command.
5602
5605
5603 * With the new ultraTB, implemented LightBG color scheme for light
5606 * With the new ultraTB, implemented LightBG color scheme for light
5604 background terminals. A lot of people like white backgrounds, so I
5607 background terminals. A lot of people like white backgrounds, so I
5605 guess we should at least give them something readable.
5608 guess we should at least give them something readable.
5606
5609
5607 2001-12-06 Fernando Perez <fperez@colorado.edu>
5610 2001-12-06 Fernando Perez <fperez@colorado.edu>
5608
5611
5609 * Modified the structure of ultraTB. Now there's a proper class
5612 * Modified the structure of ultraTB. Now there's a proper class
5610 for tables of color schemes which allow adding schemes easily and
5613 for tables of color schemes which allow adding schemes easily and
5611 switching the active scheme without creating a new instance every
5614 switching the active scheme without creating a new instance every
5612 time (which was ridiculous). The syntax for creating new schemes
5615 time (which was ridiculous). The syntax for creating new schemes
5613 is also cleaner. I think ultraTB is finally done, with a clean
5616 is also cleaner. I think ultraTB is finally done, with a clean
5614 class structure. Names are also much cleaner (now there's proper
5617 class structure. Names are also much cleaner (now there's proper
5615 color tables, no need for every variable to also have 'color' in
5618 color tables, no need for every variable to also have 'color' in
5616 its name).
5619 its name).
5617
5620
5618 * Broke down genutils into separate files. Now genutils only
5621 * Broke down genutils into separate files. Now genutils only
5619 contains utility functions, and classes have been moved to their
5622 contains utility functions, and classes have been moved to their
5620 own files (they had enough independent functionality to warrant
5623 own files (they had enough independent functionality to warrant
5621 it): ConfigLoader, OutputTrap, Struct.
5624 it): ConfigLoader, OutputTrap, Struct.
5622
5625
5623 2001-12-05 Fernando Perez <fperez@colorado.edu>
5626 2001-12-05 Fernando Perez <fperez@colorado.edu>
5624
5627
5625 * IPython turns 21! Released version 0.1.21, as a candidate for
5628 * IPython turns 21! Released version 0.1.21, as a candidate for
5626 public consumption. If all goes well, release in a few days.
5629 public consumption. If all goes well, release in a few days.
5627
5630
5628 * Fixed path bug (files in Extensions/ directory wouldn't be found
5631 * Fixed path bug (files in Extensions/ directory wouldn't be found
5629 unless IPython/ was explicitly in sys.path).
5632 unless IPython/ was explicitly in sys.path).
5630
5633
5631 * Extended the FlexCompleter class as MagicCompleter to allow
5634 * Extended the FlexCompleter class as MagicCompleter to allow
5632 completion of @-starting lines.
5635 completion of @-starting lines.
5633
5636
5634 * Created __release__.py file as a central repository for release
5637 * Created __release__.py file as a central repository for release
5635 info that other files can read from.
5638 info that other files can read from.
5636
5639
5637 * Fixed small bug in logging: when logging was turned on in
5640 * Fixed small bug in logging: when logging was turned on in
5638 mid-session, old lines with special meanings (!@?) were being
5641 mid-session, old lines with special meanings (!@?) were being
5639 logged without the prepended comment, which is necessary since
5642 logged without the prepended comment, which is necessary since
5640 they are not truly valid python syntax. This should make session
5643 they are not truly valid python syntax. This should make session
5641 restores produce less errors.
5644 restores produce less errors.
5642
5645
5643 * The namespace cleanup forced me to make a FlexCompleter class
5646 * The namespace cleanup forced me to make a FlexCompleter class
5644 which is nothing but a ripoff of rlcompleter, but with selectable
5647 which is nothing but a ripoff of rlcompleter, but with selectable
5645 namespace (rlcompleter only works in __main__.__dict__). I'll try
5648 namespace (rlcompleter only works in __main__.__dict__). I'll try
5646 to submit a note to the authors to see if this change can be
5649 to submit a note to the authors to see if this change can be
5647 incorporated in future rlcompleter releases (Dec.6: done)
5650 incorporated in future rlcompleter releases (Dec.6: done)
5648
5651
5649 * More fixes to namespace handling. It was a mess! Now all
5652 * More fixes to namespace handling. It was a mess! Now all
5650 explicit references to __main__.__dict__ are gone (except when
5653 explicit references to __main__.__dict__ are gone (except when
5651 really needed) and everything is handled through the namespace
5654 really needed) and everything is handled through the namespace
5652 dicts in the IPython instance. We seem to be getting somewhere
5655 dicts in the IPython instance. We seem to be getting somewhere
5653 with this, finally...
5656 with this, finally...
5654
5657
5655 * Small documentation updates.
5658 * Small documentation updates.
5656
5659
5657 * Created the Extensions directory under IPython (with an
5660 * Created the Extensions directory under IPython (with an
5658 __init__.py). Put the PhysicalQ stuff there. This directory should
5661 __init__.py). Put the PhysicalQ stuff there. This directory should
5659 be used for all special-purpose extensions.
5662 be used for all special-purpose extensions.
5660
5663
5661 * File renaming:
5664 * File renaming:
5662 ipythonlib --> ipmaker
5665 ipythonlib --> ipmaker
5663 ipplib --> iplib
5666 ipplib --> iplib
5664 This makes a bit more sense in terms of what these files actually do.
5667 This makes a bit more sense in terms of what these files actually do.
5665
5668
5666 * Moved all the classes and functions in ipythonlib to ipplib, so
5669 * Moved all the classes and functions in ipythonlib to ipplib, so
5667 now ipythonlib only has make_IPython(). This will ease up its
5670 now ipythonlib only has make_IPython(). This will ease up its
5668 splitting in smaller functional chunks later.
5671 splitting in smaller functional chunks later.
5669
5672
5670 * Cleaned up (done, I think) output of @whos. Better column
5673 * Cleaned up (done, I think) output of @whos. Better column
5671 formatting, and now shows str(var) for as much as it can, which is
5674 formatting, and now shows str(var) for as much as it can, which is
5672 typically what one gets with a 'print var'.
5675 typically what one gets with a 'print var'.
5673
5676
5674 2001-12-04 Fernando Perez <fperez@colorado.edu>
5677 2001-12-04 Fernando Perez <fperez@colorado.edu>
5675
5678
5676 * Fixed namespace problems. Now builtin/IPyhton/user names get
5679 * Fixed namespace problems. Now builtin/IPyhton/user names get
5677 properly reported in their namespace. Internal namespace handling
5680 properly reported in their namespace. Internal namespace handling
5678 is finally getting decent (not perfect yet, but much better than
5681 is finally getting decent (not perfect yet, but much better than
5679 the ad-hoc mess we had).
5682 the ad-hoc mess we had).
5680
5683
5681 * Removed -exit option. If people just want to run a python
5684 * Removed -exit option. If people just want to run a python
5682 script, that's what the normal interpreter is for. Less
5685 script, that's what the normal interpreter is for. Less
5683 unnecessary options, less chances for bugs.
5686 unnecessary options, less chances for bugs.
5684
5687
5685 * Added a crash handler which generates a complete post-mortem if
5688 * Added a crash handler which generates a complete post-mortem if
5686 IPython crashes. This will help a lot in tracking bugs down the
5689 IPython crashes. This will help a lot in tracking bugs down the
5687 road.
5690 road.
5688
5691
5689 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5692 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5690 which were boud to functions being reassigned would bypass the
5693 which were boud to functions being reassigned would bypass the
5691 logger, breaking the sync of _il with the prompt counter. This
5694 logger, breaking the sync of _il with the prompt counter. This
5692 would then crash IPython later when a new line was logged.
5695 would then crash IPython later when a new line was logged.
5693
5696
5694 2001-12-02 Fernando Perez <fperez@colorado.edu>
5697 2001-12-02 Fernando Perez <fperez@colorado.edu>
5695
5698
5696 * Made IPython a package. This means people don't have to clutter
5699 * Made IPython a package. This means people don't have to clutter
5697 their sys.path with yet another directory. Changed the INSTALL
5700 their sys.path with yet another directory. Changed the INSTALL
5698 file accordingly.
5701 file accordingly.
5699
5702
5700 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5703 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5701 sorts its output (so @who shows it sorted) and @whos formats the
5704 sorts its output (so @who shows it sorted) and @whos formats the
5702 table according to the width of the first column. Nicer, easier to
5705 table according to the width of the first column. Nicer, easier to
5703 read. Todo: write a generic table_format() which takes a list of
5706 read. Todo: write a generic table_format() which takes a list of
5704 lists and prints it nicely formatted, with optional row/column
5707 lists and prints it nicely formatted, with optional row/column
5705 separators and proper padding and justification.
5708 separators and proper padding and justification.
5706
5709
5707 * Released 0.1.20
5710 * Released 0.1.20
5708
5711
5709 * Fixed bug in @log which would reverse the inputcache list (a
5712 * Fixed bug in @log which would reverse the inputcache list (a
5710 copy operation was missing).
5713 copy operation was missing).
5711
5714
5712 * Code cleanup. @config was changed to use page(). Better, since
5715 * Code cleanup. @config was changed to use page(). Better, since
5713 its output is always quite long.
5716 its output is always quite long.
5714
5717
5715 * Itpl is back as a dependency. I was having too many problems
5718 * Itpl is back as a dependency. I was having too many problems
5716 getting the parametric aliases to work reliably, and it's just
5719 getting the parametric aliases to work reliably, and it's just
5717 easier to code weird string operations with it than playing %()s
5720 easier to code weird string operations with it than playing %()s
5718 games. It's only ~6k, so I don't think it's too big a deal.
5721 games. It's only ~6k, so I don't think it's too big a deal.
5719
5722
5720 * Found (and fixed) a very nasty bug with history. !lines weren't
5723 * Found (and fixed) a very nasty bug with history. !lines weren't
5721 getting cached, and the out of sync caches would crash
5724 getting cached, and the out of sync caches would crash
5722 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5725 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5723 division of labor a bit better. Bug fixed, cleaner structure.
5726 division of labor a bit better. Bug fixed, cleaner structure.
5724
5727
5725 2001-12-01 Fernando Perez <fperez@colorado.edu>
5728 2001-12-01 Fernando Perez <fperez@colorado.edu>
5726
5729
5727 * Released 0.1.19
5730 * Released 0.1.19
5728
5731
5729 * Added option -n to @hist to prevent line number printing. Much
5732 * Added option -n to @hist to prevent line number printing. Much
5730 easier to copy/paste code this way.
5733 easier to copy/paste code this way.
5731
5734
5732 * Created global _il to hold the input list. Allows easy
5735 * Created global _il to hold the input list. Allows easy
5733 re-execution of blocks of code by slicing it (inspired by Janko's
5736 re-execution of blocks of code by slicing it (inspired by Janko's
5734 comment on 'macros').
5737 comment on 'macros').
5735
5738
5736 * Small fixes and doc updates.
5739 * Small fixes and doc updates.
5737
5740
5738 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5741 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5739 much too fragile with automagic. Handles properly multi-line
5742 much too fragile with automagic. Handles properly multi-line
5740 statements and takes parameters.
5743 statements and takes parameters.
5741
5744
5742 2001-11-30 Fernando Perez <fperez@colorado.edu>
5745 2001-11-30 Fernando Perez <fperez@colorado.edu>
5743
5746
5744 * Version 0.1.18 released.
5747 * Version 0.1.18 released.
5745
5748
5746 * Fixed nasty namespace bug in initial module imports.
5749 * Fixed nasty namespace bug in initial module imports.
5747
5750
5748 * Added copyright/license notes to all code files (except
5751 * Added copyright/license notes to all code files (except
5749 DPyGetOpt). For the time being, LGPL. That could change.
5752 DPyGetOpt). For the time being, LGPL. That could change.
5750
5753
5751 * Rewrote a much nicer README, updated INSTALL, cleaned up
5754 * Rewrote a much nicer README, updated INSTALL, cleaned up
5752 ipythonrc-* samples.
5755 ipythonrc-* samples.
5753
5756
5754 * Overall code/documentation cleanup. Basically ready for
5757 * Overall code/documentation cleanup. Basically ready for
5755 release. Only remaining thing: licence decision (LGPL?).
5758 release. Only remaining thing: licence decision (LGPL?).
5756
5759
5757 * Converted load_config to a class, ConfigLoader. Now recursion
5760 * Converted load_config to a class, ConfigLoader. Now recursion
5758 control is better organized. Doesn't include the same file twice.
5761 control is better organized. Doesn't include the same file twice.
5759
5762
5760 2001-11-29 Fernando Perez <fperez@colorado.edu>
5763 2001-11-29 Fernando Perez <fperez@colorado.edu>
5761
5764
5762 * Got input history working. Changed output history variables from
5765 * Got input history working. Changed output history variables from
5763 _p to _o so that _i is for input and _o for output. Just cleaner
5766 _p to _o so that _i is for input and _o for output. Just cleaner
5764 convention.
5767 convention.
5765
5768
5766 * Implemented parametric aliases. This pretty much allows the
5769 * Implemented parametric aliases. This pretty much allows the
5767 alias system to offer full-blown shell convenience, I think.
5770 alias system to offer full-blown shell convenience, I think.
5768
5771
5769 * Version 0.1.17 released, 0.1.18 opened.
5772 * Version 0.1.17 released, 0.1.18 opened.
5770
5773
5771 * dot_ipython/ipythonrc (alias): added documentation.
5774 * dot_ipython/ipythonrc (alias): added documentation.
5772 (xcolor): Fixed small bug (xcolors -> xcolor)
5775 (xcolor): Fixed small bug (xcolors -> xcolor)
5773
5776
5774 * Changed the alias system. Now alias is a magic command to define
5777 * Changed the alias system. Now alias is a magic command to define
5775 aliases just like the shell. Rationale: the builtin magics should
5778 aliases just like the shell. Rationale: the builtin magics should
5776 be there for things deeply connected to IPython's
5779 be there for things deeply connected to IPython's
5777 architecture. And this is a much lighter system for what I think
5780 architecture. And this is a much lighter system for what I think
5778 is the really important feature: allowing users to define quickly
5781 is the really important feature: allowing users to define quickly
5779 magics that will do shell things for them, so they can customize
5782 magics that will do shell things for them, so they can customize
5780 IPython easily to match their work habits. If someone is really
5783 IPython easily to match their work habits. If someone is really
5781 desperate to have another name for a builtin alias, they can
5784 desperate to have another name for a builtin alias, they can
5782 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5785 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5783 works.
5786 works.
5784
5787
5785 2001-11-28 Fernando Perez <fperez@colorado.edu>
5788 2001-11-28 Fernando Perez <fperez@colorado.edu>
5786
5789
5787 * Changed @file so that it opens the source file at the proper
5790 * Changed @file so that it opens the source file at the proper
5788 line. Since it uses less, if your EDITOR environment is
5791 line. Since it uses less, if your EDITOR environment is
5789 configured, typing v will immediately open your editor of choice
5792 configured, typing v will immediately open your editor of choice
5790 right at the line where the object is defined. Not as quick as
5793 right at the line where the object is defined. Not as quick as
5791 having a direct @edit command, but for all intents and purposes it
5794 having a direct @edit command, but for all intents and purposes it
5792 works. And I don't have to worry about writing @edit to deal with
5795 works. And I don't have to worry about writing @edit to deal with
5793 all the editors, less does that.
5796 all the editors, less does that.
5794
5797
5795 * Version 0.1.16 released, 0.1.17 opened.
5798 * Version 0.1.16 released, 0.1.17 opened.
5796
5799
5797 * Fixed some nasty bugs in the page/page_dumb combo that could
5800 * Fixed some nasty bugs in the page/page_dumb combo that could
5798 crash IPython.
5801 crash IPython.
5799
5802
5800 2001-11-27 Fernando Perez <fperez@colorado.edu>
5803 2001-11-27 Fernando Perez <fperez@colorado.edu>
5801
5804
5802 * Version 0.1.15 released, 0.1.16 opened.
5805 * Version 0.1.15 released, 0.1.16 opened.
5803
5806
5804 * Finally got ? and ?? to work for undefined things: now it's
5807 * Finally got ? and ?? to work for undefined things: now it's
5805 possible to type {}.get? and get information about the get method
5808 possible to type {}.get? and get information about the get method
5806 of dicts, or os.path? even if only os is defined (so technically
5809 of dicts, or os.path? even if only os is defined (so technically
5807 os.path isn't). Works at any level. For example, after import os,
5810 os.path isn't). Works at any level. For example, after import os,
5808 os?, os.path?, os.path.abspath? all work. This is great, took some
5811 os?, os.path?, os.path.abspath? all work. This is great, took some
5809 work in _ofind.
5812 work in _ofind.
5810
5813
5811 * Fixed more bugs with logging. The sanest way to do it was to add
5814 * Fixed more bugs with logging. The sanest way to do it was to add
5812 to @log a 'mode' parameter. Killed two in one shot (this mode
5815 to @log a 'mode' parameter. Killed two in one shot (this mode
5813 option was a request of Janko's). I think it's finally clean
5816 option was a request of Janko's). I think it's finally clean
5814 (famous last words).
5817 (famous last words).
5815
5818
5816 * Added a page_dumb() pager which does a decent job of paging on
5819 * Added a page_dumb() pager which does a decent job of paging on
5817 screen, if better things (like less) aren't available. One less
5820 screen, if better things (like less) aren't available. One less
5818 unix dependency (someday maybe somebody will port this to
5821 unix dependency (someday maybe somebody will port this to
5819 windows).
5822 windows).
5820
5823
5821 * Fixed problem in magic_log: would lock of logging out if log
5824 * Fixed problem in magic_log: would lock of logging out if log
5822 creation failed (because it would still think it had succeeded).
5825 creation failed (because it would still think it had succeeded).
5823
5826
5824 * Improved the page() function using curses to auto-detect screen
5827 * Improved the page() function using curses to auto-detect screen
5825 size. Now it can make a much better decision on whether to print
5828 size. Now it can make a much better decision on whether to print
5826 or page a string. Option screen_length was modified: a value 0
5829 or page a string. Option screen_length was modified: a value 0
5827 means auto-detect, and that's the default now.
5830 means auto-detect, and that's the default now.
5828
5831
5829 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5832 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5830 go out. I'll test it for a few days, then talk to Janko about
5833 go out. I'll test it for a few days, then talk to Janko about
5831 licences and announce it.
5834 licences and announce it.
5832
5835
5833 * Fixed the length of the auto-generated ---> prompt which appears
5836 * Fixed the length of the auto-generated ---> prompt which appears
5834 for auto-parens and auto-quotes. Getting this right isn't trivial,
5837 for auto-parens and auto-quotes. Getting this right isn't trivial,
5835 with all the color escapes, different prompt types and optional
5838 with all the color escapes, different prompt types and optional
5836 separators. But it seems to be working in all the combinations.
5839 separators. But it seems to be working in all the combinations.
5837
5840
5838 2001-11-26 Fernando Perez <fperez@colorado.edu>
5841 2001-11-26 Fernando Perez <fperez@colorado.edu>
5839
5842
5840 * Wrote a regexp filter to get option types from the option names
5843 * Wrote a regexp filter to get option types from the option names
5841 string. This eliminates the need to manually keep two duplicate
5844 string. This eliminates the need to manually keep two duplicate
5842 lists.
5845 lists.
5843
5846
5844 * Removed the unneeded check_option_names. Now options are handled
5847 * Removed the unneeded check_option_names. Now options are handled
5845 in a much saner manner and it's easy to visually check that things
5848 in a much saner manner and it's easy to visually check that things
5846 are ok.
5849 are ok.
5847
5850
5848 * Updated version numbers on all files I modified to carry a
5851 * Updated version numbers on all files I modified to carry a
5849 notice so Janko and Nathan have clear version markers.
5852 notice so Janko and Nathan have clear version markers.
5850
5853
5851 * Updated docstring for ultraTB with my changes. I should send
5854 * Updated docstring for ultraTB with my changes. I should send
5852 this to Nathan.
5855 this to Nathan.
5853
5856
5854 * Lots of small fixes. Ran everything through pychecker again.
5857 * Lots of small fixes. Ran everything through pychecker again.
5855
5858
5856 * Made loading of deep_reload an cmd line option. If it's not too
5859 * Made loading of deep_reload an cmd line option. If it's not too
5857 kosher, now people can just disable it. With -nodeep_reload it's
5860 kosher, now people can just disable it. With -nodeep_reload it's
5858 still available as dreload(), it just won't overwrite reload().
5861 still available as dreload(), it just won't overwrite reload().
5859
5862
5860 * Moved many options to the no| form (-opt and -noopt
5863 * Moved many options to the no| form (-opt and -noopt
5861 accepted). Cleaner.
5864 accepted). Cleaner.
5862
5865
5863 * Changed magic_log so that if called with no parameters, it uses
5866 * Changed magic_log so that if called with no parameters, it uses
5864 'rotate' mode. That way auto-generated logs aren't automatically
5867 'rotate' mode. That way auto-generated logs aren't automatically
5865 over-written. For normal logs, now a backup is made if it exists
5868 over-written. For normal logs, now a backup is made if it exists
5866 (only 1 level of backups). A new 'backup' mode was added to the
5869 (only 1 level of backups). A new 'backup' mode was added to the
5867 Logger class to support this. This was a request by Janko.
5870 Logger class to support this. This was a request by Janko.
5868
5871
5869 * Added @logoff/@logon to stop/restart an active log.
5872 * Added @logoff/@logon to stop/restart an active log.
5870
5873
5871 * Fixed a lot of bugs in log saving/replay. It was pretty
5874 * Fixed a lot of bugs in log saving/replay. It was pretty
5872 broken. Now special lines (!@,/) appear properly in the command
5875 broken. Now special lines (!@,/) appear properly in the command
5873 history after a log replay.
5876 history after a log replay.
5874
5877
5875 * Tried and failed to implement full session saving via pickle. My
5878 * Tried and failed to implement full session saving via pickle. My
5876 idea was to pickle __main__.__dict__, but modules can't be
5879 idea was to pickle __main__.__dict__, but modules can't be
5877 pickled. This would be a better alternative to replaying logs, but
5880 pickled. This would be a better alternative to replaying logs, but
5878 seems quite tricky to get to work. Changed -session to be called
5881 seems quite tricky to get to work. Changed -session to be called
5879 -logplay, which more accurately reflects what it does. And if we
5882 -logplay, which more accurately reflects what it does. And if we
5880 ever get real session saving working, -session is now available.
5883 ever get real session saving working, -session is now available.
5881
5884
5882 * Implemented color schemes for prompts also. As for tracebacks,
5885 * Implemented color schemes for prompts also. As for tracebacks,
5883 currently only NoColor and Linux are supported. But now the
5886 currently only NoColor and Linux are supported. But now the
5884 infrastructure is in place, based on a generic ColorScheme
5887 infrastructure is in place, based on a generic ColorScheme
5885 class. So writing and activating new schemes both for the prompts
5888 class. So writing and activating new schemes both for the prompts
5886 and the tracebacks should be straightforward.
5889 and the tracebacks should be straightforward.
5887
5890
5888 * Version 0.1.13 released, 0.1.14 opened.
5891 * Version 0.1.13 released, 0.1.14 opened.
5889
5892
5890 * Changed handling of options for output cache. Now counter is
5893 * Changed handling of options for output cache. Now counter is
5891 hardwired starting at 1 and one specifies the maximum number of
5894 hardwired starting at 1 and one specifies the maximum number of
5892 entries *in the outcache* (not the max prompt counter). This is
5895 entries *in the outcache* (not the max prompt counter). This is
5893 much better, since many statements won't increase the cache
5896 much better, since many statements won't increase the cache
5894 count. It also eliminated some confusing options, now there's only
5897 count. It also eliminated some confusing options, now there's only
5895 one: cache_size.
5898 one: cache_size.
5896
5899
5897 * Added 'alias' magic function and magic_alias option in the
5900 * Added 'alias' magic function and magic_alias option in the
5898 ipythonrc file. Now the user can easily define whatever names he
5901 ipythonrc file. Now the user can easily define whatever names he
5899 wants for the magic functions without having to play weird
5902 wants for the magic functions without having to play weird
5900 namespace games. This gives IPython a real shell-like feel.
5903 namespace games. This gives IPython a real shell-like feel.
5901
5904
5902 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5905 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5903 @ or not).
5906 @ or not).
5904
5907
5905 This was one of the last remaining 'visible' bugs (that I know
5908 This was one of the last remaining 'visible' bugs (that I know
5906 of). I think if I can clean up the session loading so it works
5909 of). I think if I can clean up the session loading so it works
5907 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5910 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5908 about licensing).
5911 about licensing).
5909
5912
5910 2001-11-25 Fernando Perez <fperez@colorado.edu>
5913 2001-11-25 Fernando Perez <fperez@colorado.edu>
5911
5914
5912 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5915 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5913 there's a cleaner distinction between what ? and ?? show.
5916 there's a cleaner distinction between what ? and ?? show.
5914
5917
5915 * Added screen_length option. Now the user can define his own
5918 * Added screen_length option. Now the user can define his own
5916 screen size for page() operations.
5919 screen size for page() operations.
5917
5920
5918 * Implemented magic shell-like functions with automatic code
5921 * Implemented magic shell-like functions with automatic code
5919 generation. Now adding another function is just a matter of adding
5922 generation. Now adding another function is just a matter of adding
5920 an entry to a dict, and the function is dynamically generated at
5923 an entry to a dict, and the function is dynamically generated at
5921 run-time. Python has some really cool features!
5924 run-time. Python has some really cool features!
5922
5925
5923 * Renamed many options to cleanup conventions a little. Now all
5926 * Renamed many options to cleanup conventions a little. Now all
5924 are lowercase, and only underscores where needed. Also in the code
5927 are lowercase, and only underscores where needed. Also in the code
5925 option name tables are clearer.
5928 option name tables are clearer.
5926
5929
5927 * Changed prompts a little. Now input is 'In [n]:' instead of
5930 * Changed prompts a little. Now input is 'In [n]:' instead of
5928 'In[n]:='. This allows it the numbers to be aligned with the
5931 'In[n]:='. This allows it the numbers to be aligned with the
5929 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5932 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5930 Python (it was a Mathematica thing). The '...' continuation prompt
5933 Python (it was a Mathematica thing). The '...' continuation prompt
5931 was also changed a little to align better.
5934 was also changed a little to align better.
5932
5935
5933 * Fixed bug when flushing output cache. Not all _p<n> variables
5936 * Fixed bug when flushing output cache. Not all _p<n> variables
5934 exist, so their deletion needs to be wrapped in a try:
5937 exist, so their deletion needs to be wrapped in a try:
5935
5938
5936 * Figured out how to properly use inspect.formatargspec() (it
5939 * Figured out how to properly use inspect.formatargspec() (it
5937 requires the args preceded by *). So I removed all the code from
5940 requires the args preceded by *). So I removed all the code from
5938 _get_pdef in Magic, which was just replicating that.
5941 _get_pdef in Magic, which was just replicating that.
5939
5942
5940 * Added test to prefilter to allow redefining magic function names
5943 * Added test to prefilter to allow redefining magic function names
5941 as variables. This is ok, since the @ form is always available,
5944 as variables. This is ok, since the @ form is always available,
5942 but whe should allow the user to define a variable called 'ls' if
5945 but whe should allow the user to define a variable called 'ls' if
5943 he needs it.
5946 he needs it.
5944
5947
5945 * Moved the ToDo information from README into a separate ToDo.
5948 * Moved the ToDo information from README into a separate ToDo.
5946
5949
5947 * General code cleanup and small bugfixes. I think it's close to a
5950 * General code cleanup and small bugfixes. I think it's close to a
5948 state where it can be released, obviously with a big 'beta'
5951 state where it can be released, obviously with a big 'beta'
5949 warning on it.
5952 warning on it.
5950
5953
5951 * Got the magic function split to work. Now all magics are defined
5954 * Got the magic function split to work. Now all magics are defined
5952 in a separate class. It just organizes things a bit, and now
5955 in a separate class. It just organizes things a bit, and now
5953 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5956 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5954 was too long).
5957 was too long).
5955
5958
5956 * Changed @clear to @reset to avoid potential confusions with
5959 * Changed @clear to @reset to avoid potential confusions with
5957 the shell command clear. Also renamed @cl to @clear, which does
5960 the shell command clear. Also renamed @cl to @clear, which does
5958 exactly what people expect it to from their shell experience.
5961 exactly what people expect it to from their shell experience.
5959
5962
5960 Added a check to the @reset command (since it's so
5963 Added a check to the @reset command (since it's so
5961 destructive, it's probably a good idea to ask for confirmation).
5964 destructive, it's probably a good idea to ask for confirmation).
5962 But now reset only works for full namespace resetting. Since the
5965 But now reset only works for full namespace resetting. Since the
5963 del keyword is already there for deleting a few specific
5966 del keyword is already there for deleting a few specific
5964 variables, I don't see the point of having a redundant magic
5967 variables, I don't see the point of having a redundant magic
5965 function for the same task.
5968 function for the same task.
5966
5969
5967 2001-11-24 Fernando Perez <fperez@colorado.edu>
5970 2001-11-24 Fernando Perez <fperez@colorado.edu>
5968
5971
5969 * Updated the builtin docs (esp. the ? ones).
5972 * Updated the builtin docs (esp. the ? ones).
5970
5973
5971 * Ran all the code through pychecker. Not terribly impressed with
5974 * Ran all the code through pychecker. Not terribly impressed with
5972 it: lots of spurious warnings and didn't really find anything of
5975 it: lots of spurious warnings and didn't really find anything of
5973 substance (just a few modules being imported and not used).
5976 substance (just a few modules being imported and not used).
5974
5977
5975 * Implemented the new ultraTB functionality into IPython. New
5978 * Implemented the new ultraTB functionality into IPython. New
5976 option: xcolors. This chooses color scheme. xmode now only selects
5979 option: xcolors. This chooses color scheme. xmode now only selects
5977 between Plain and Verbose. Better orthogonality.
5980 between Plain and Verbose. Better orthogonality.
5978
5981
5979 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5982 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5980 mode and color scheme for the exception handlers. Now it's
5983 mode and color scheme for the exception handlers. Now it's
5981 possible to have the verbose traceback with no coloring.
5984 possible to have the verbose traceback with no coloring.
5982
5985
5983 2001-11-23 Fernando Perez <fperez@colorado.edu>
5986 2001-11-23 Fernando Perez <fperez@colorado.edu>
5984
5987
5985 * Version 0.1.12 released, 0.1.13 opened.
5988 * Version 0.1.12 released, 0.1.13 opened.
5986
5989
5987 * Removed option to set auto-quote and auto-paren escapes by
5990 * Removed option to set auto-quote and auto-paren escapes by
5988 user. The chances of breaking valid syntax are just too high. If
5991 user. The chances of breaking valid syntax are just too high. If
5989 someone *really* wants, they can always dig into the code.
5992 someone *really* wants, they can always dig into the code.
5990
5993
5991 * Made prompt separators configurable.
5994 * Made prompt separators configurable.
5992
5995
5993 2001-11-22 Fernando Perez <fperez@colorado.edu>
5996 2001-11-22 Fernando Perez <fperez@colorado.edu>
5994
5997
5995 * Small bugfixes in many places.
5998 * Small bugfixes in many places.
5996
5999
5997 * Removed the MyCompleter class from ipplib. It seemed redundant
6000 * Removed the MyCompleter class from ipplib. It seemed redundant
5998 with the C-p,C-n history search functionality. Less code to
6001 with the C-p,C-n history search functionality. Less code to
5999 maintain.
6002 maintain.
6000
6003
6001 * Moved all the original ipython.py code into ipythonlib.py. Right
6004 * Moved all the original ipython.py code into ipythonlib.py. Right
6002 now it's just one big dump into a function called make_IPython, so
6005 now it's just one big dump into a function called make_IPython, so
6003 no real modularity has been gained. But at least it makes the
6006 no real modularity has been gained. But at least it makes the
6004 wrapper script tiny, and since ipythonlib is a module, it gets
6007 wrapper script tiny, and since ipythonlib is a module, it gets
6005 compiled and startup is much faster.
6008 compiled and startup is much faster.
6006
6009
6007 This is a reasobably 'deep' change, so we should test it for a
6010 This is a reasobably 'deep' change, so we should test it for a
6008 while without messing too much more with the code.
6011 while without messing too much more with the code.
6009
6012
6010 2001-11-21 Fernando Perez <fperez@colorado.edu>
6013 2001-11-21 Fernando Perez <fperez@colorado.edu>
6011
6014
6012 * Version 0.1.11 released, 0.1.12 opened for further work.
6015 * Version 0.1.11 released, 0.1.12 opened for further work.
6013
6016
6014 * Removed dependency on Itpl. It was only needed in one place. It
6017 * Removed dependency on Itpl. It was only needed in one place. It
6015 would be nice if this became part of python, though. It makes life
6018 would be nice if this became part of python, though. It makes life
6016 *a lot* easier in some cases.
6019 *a lot* easier in some cases.
6017
6020
6018 * Simplified the prefilter code a bit. Now all handlers are
6021 * Simplified the prefilter code a bit. Now all handlers are
6019 expected to explicitly return a value (at least a blank string).
6022 expected to explicitly return a value (at least a blank string).
6020
6023
6021 * Heavy edits in ipplib. Removed the help system altogether. Now
6024 * Heavy edits in ipplib. Removed the help system altogether. Now
6022 obj?/?? is used for inspecting objects, a magic @doc prints
6025 obj?/?? is used for inspecting objects, a magic @doc prints
6023 docstrings, and full-blown Python help is accessed via the 'help'
6026 docstrings, and full-blown Python help is accessed via the 'help'
6024 keyword. This cleans up a lot of code (less to maintain) and does
6027 keyword. This cleans up a lot of code (less to maintain) and does
6025 the job. Since 'help' is now a standard Python component, might as
6028 the job. Since 'help' is now a standard Python component, might as
6026 well use it and remove duplicate functionality.
6029 well use it and remove duplicate functionality.
6027
6030
6028 Also removed the option to use ipplib as a standalone program. By
6031 Also removed the option to use ipplib as a standalone program. By
6029 now it's too dependent on other parts of IPython to function alone.
6032 now it's too dependent on other parts of IPython to function alone.
6030
6033
6031 * Fixed bug in genutils.pager. It would crash if the pager was
6034 * Fixed bug in genutils.pager. It would crash if the pager was
6032 exited immediately after opening (broken pipe).
6035 exited immediately after opening (broken pipe).
6033
6036
6034 * Trimmed down the VerboseTB reporting a little. The header is
6037 * Trimmed down the VerboseTB reporting a little. The header is
6035 much shorter now and the repeated exception arguments at the end
6038 much shorter now and the repeated exception arguments at the end
6036 have been removed. For interactive use the old header seemed a bit
6039 have been removed. For interactive use the old header seemed a bit
6037 excessive.
6040 excessive.
6038
6041
6039 * Fixed small bug in output of @whos for variables with multi-word
6042 * Fixed small bug in output of @whos for variables with multi-word
6040 types (only first word was displayed).
6043 types (only first word was displayed).
6041
6044
6042 2001-11-17 Fernando Perez <fperez@colorado.edu>
6045 2001-11-17 Fernando Perez <fperez@colorado.edu>
6043
6046
6044 * Version 0.1.10 released, 0.1.11 opened for further work.
6047 * Version 0.1.10 released, 0.1.11 opened for further work.
6045
6048
6046 * Modified dirs and friends. dirs now *returns* the stack (not
6049 * Modified dirs and friends. dirs now *returns* the stack (not
6047 prints), so one can manipulate it as a variable. Convenient to
6050 prints), so one can manipulate it as a variable. Convenient to
6048 travel along many directories.
6051 travel along many directories.
6049
6052
6050 * Fixed bug in magic_pdef: would only work with functions with
6053 * Fixed bug in magic_pdef: would only work with functions with
6051 arguments with default values.
6054 arguments with default values.
6052
6055
6053 2001-11-14 Fernando Perez <fperez@colorado.edu>
6056 2001-11-14 Fernando Perez <fperez@colorado.edu>
6054
6057
6055 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6058 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6056 example with IPython. Various other minor fixes and cleanups.
6059 example with IPython. Various other minor fixes and cleanups.
6057
6060
6058 * Version 0.1.9 released, 0.1.10 opened for further work.
6061 * Version 0.1.9 released, 0.1.10 opened for further work.
6059
6062
6060 * Added sys.path to the list of directories searched in the
6063 * Added sys.path to the list of directories searched in the
6061 execfile= option. It used to be the current directory and the
6064 execfile= option. It used to be the current directory and the
6062 user's IPYTHONDIR only.
6065 user's IPYTHONDIR only.
6063
6066
6064 2001-11-13 Fernando Perez <fperez@colorado.edu>
6067 2001-11-13 Fernando Perez <fperez@colorado.edu>
6065
6068
6066 * Reinstated the raw_input/prefilter separation that Janko had
6069 * Reinstated the raw_input/prefilter separation that Janko had
6067 initially. This gives a more convenient setup for extending the
6070 initially. This gives a more convenient setup for extending the
6068 pre-processor from the outside: raw_input always gets a string,
6071 pre-processor from the outside: raw_input always gets a string,
6069 and prefilter has to process it. We can then redefine prefilter
6072 and prefilter has to process it. We can then redefine prefilter
6070 from the outside and implement extensions for special
6073 from the outside and implement extensions for special
6071 purposes.
6074 purposes.
6072
6075
6073 Today I got one for inputting PhysicalQuantity objects
6076 Today I got one for inputting PhysicalQuantity objects
6074 (from Scientific) without needing any function calls at
6077 (from Scientific) without needing any function calls at
6075 all. Extremely convenient, and it's all done as a user-level
6078 all. Extremely convenient, and it's all done as a user-level
6076 extension (no IPython code was touched). Now instead of:
6079 extension (no IPython code was touched). Now instead of:
6077 a = PhysicalQuantity(4.2,'m/s**2')
6080 a = PhysicalQuantity(4.2,'m/s**2')
6078 one can simply say
6081 one can simply say
6079 a = 4.2 m/s**2
6082 a = 4.2 m/s**2
6080 or even
6083 or even
6081 a = 4.2 m/s^2
6084 a = 4.2 m/s^2
6082
6085
6083 I use this, but it's also a proof of concept: IPython really is
6086 I use this, but it's also a proof of concept: IPython really is
6084 fully user-extensible, even at the level of the parsing of the
6087 fully user-extensible, even at the level of the parsing of the
6085 command line. It's not trivial, but it's perfectly doable.
6088 command line. It's not trivial, but it's perfectly doable.
6086
6089
6087 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6090 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6088 the problem of modules being loaded in the inverse order in which
6091 the problem of modules being loaded in the inverse order in which
6089 they were defined in
6092 they were defined in
6090
6093
6091 * Version 0.1.8 released, 0.1.9 opened for further work.
6094 * Version 0.1.8 released, 0.1.9 opened for further work.
6092
6095
6093 * Added magics pdef, source and file. They respectively show the
6096 * Added magics pdef, source and file. They respectively show the
6094 definition line ('prototype' in C), source code and full python
6097 definition line ('prototype' in C), source code and full python
6095 file for any callable object. The object inspector oinfo uses
6098 file for any callable object. The object inspector oinfo uses
6096 these to show the same information.
6099 these to show the same information.
6097
6100
6098 * Version 0.1.7 released, 0.1.8 opened for further work.
6101 * Version 0.1.7 released, 0.1.8 opened for further work.
6099
6102
6100 * Separated all the magic functions into a class called Magic. The
6103 * Separated all the magic functions into a class called Magic. The
6101 InteractiveShell class was becoming too big for Xemacs to handle
6104 InteractiveShell class was becoming too big for Xemacs to handle
6102 (de-indenting a line would lock it up for 10 seconds while it
6105 (de-indenting a line would lock it up for 10 seconds while it
6103 backtracked on the whole class!)
6106 backtracked on the whole class!)
6104
6107
6105 FIXME: didn't work. It can be done, but right now namespaces are
6108 FIXME: didn't work. It can be done, but right now namespaces are
6106 all messed up. Do it later (reverted it for now, so at least
6109 all messed up. Do it later (reverted it for now, so at least
6107 everything works as before).
6110 everything works as before).
6108
6111
6109 * Got the object introspection system (magic_oinfo) working! I
6112 * Got the object introspection system (magic_oinfo) working! I
6110 think this is pretty much ready for release to Janko, so he can
6113 think this is pretty much ready for release to Janko, so he can
6111 test it for a while and then announce it. Pretty much 100% of what
6114 test it for a while and then announce it. Pretty much 100% of what
6112 I wanted for the 'phase 1' release is ready. Happy, tired.
6115 I wanted for the 'phase 1' release is ready. Happy, tired.
6113
6116
6114 2001-11-12 Fernando Perez <fperez@colorado.edu>
6117 2001-11-12 Fernando Perez <fperez@colorado.edu>
6115
6118
6116 * Version 0.1.6 released, 0.1.7 opened for further work.
6119 * Version 0.1.6 released, 0.1.7 opened for further work.
6117
6120
6118 * Fixed bug in printing: it used to test for truth before
6121 * Fixed bug in printing: it used to test for truth before
6119 printing, so 0 wouldn't print. Now checks for None.
6122 printing, so 0 wouldn't print. Now checks for None.
6120
6123
6121 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6124 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6122 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6125 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6123 reaches by hand into the outputcache. Think of a better way to do
6126 reaches by hand into the outputcache. Think of a better way to do
6124 this later.
6127 this later.
6125
6128
6126 * Various small fixes thanks to Nathan's comments.
6129 * Various small fixes thanks to Nathan's comments.
6127
6130
6128 * Changed magic_pprint to magic_Pprint. This way it doesn't
6131 * Changed magic_pprint to magic_Pprint. This way it doesn't
6129 collide with pprint() and the name is consistent with the command
6132 collide with pprint() and the name is consistent with the command
6130 line option.
6133 line option.
6131
6134
6132 * Changed prompt counter behavior to be fully like
6135 * Changed prompt counter behavior to be fully like
6133 Mathematica's. That is, even input that doesn't return a result
6136 Mathematica's. That is, even input that doesn't return a result
6134 raises the prompt counter. The old behavior was kind of confusing
6137 raises the prompt counter. The old behavior was kind of confusing
6135 (getting the same prompt number several times if the operation
6138 (getting the same prompt number several times if the operation
6136 didn't return a result).
6139 didn't return a result).
6137
6140
6138 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6141 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6139
6142
6140 * Fixed -Classic mode (wasn't working anymore).
6143 * Fixed -Classic mode (wasn't working anymore).
6141
6144
6142 * Added colored prompts using Nathan's new code. Colors are
6145 * Added colored prompts using Nathan's new code. Colors are
6143 currently hardwired, they can be user-configurable. For
6146 currently hardwired, they can be user-configurable. For
6144 developers, they can be chosen in file ipythonlib.py, at the
6147 developers, they can be chosen in file ipythonlib.py, at the
6145 beginning of the CachedOutput class def.
6148 beginning of the CachedOutput class def.
6146
6149
6147 2001-11-11 Fernando Perez <fperez@colorado.edu>
6150 2001-11-11 Fernando Perez <fperez@colorado.edu>
6148
6151
6149 * Version 0.1.5 released, 0.1.6 opened for further work.
6152 * Version 0.1.5 released, 0.1.6 opened for further work.
6150
6153
6151 * Changed magic_env to *return* the environment as a dict (not to
6154 * Changed magic_env to *return* the environment as a dict (not to
6152 print it). This way it prints, but it can also be processed.
6155 print it). This way it prints, but it can also be processed.
6153
6156
6154 * Added Verbose exception reporting to interactive
6157 * Added Verbose exception reporting to interactive
6155 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6158 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6156 traceback. Had to make some changes to the ultraTB file. This is
6159 traceback. Had to make some changes to the ultraTB file. This is
6157 probably the last 'big' thing in my mental todo list. This ties
6160 probably the last 'big' thing in my mental todo list. This ties
6158 in with the next entry:
6161 in with the next entry:
6159
6162
6160 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6163 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6161 has to specify is Plain, Color or Verbose for all exception
6164 has to specify is Plain, Color or Verbose for all exception
6162 handling.
6165 handling.
6163
6166
6164 * Removed ShellServices option. All this can really be done via
6167 * Removed ShellServices option. All this can really be done via
6165 the magic system. It's easier to extend, cleaner and has automatic
6168 the magic system. It's easier to extend, cleaner and has automatic
6166 namespace protection and documentation.
6169 namespace protection and documentation.
6167
6170
6168 2001-11-09 Fernando Perez <fperez@colorado.edu>
6171 2001-11-09 Fernando Perez <fperez@colorado.edu>
6169
6172
6170 * Fixed bug in output cache flushing (missing parameter to
6173 * Fixed bug in output cache flushing (missing parameter to
6171 __init__). Other small bugs fixed (found using pychecker).
6174 __init__). Other small bugs fixed (found using pychecker).
6172
6175
6173 * Version 0.1.4 opened for bugfixing.
6176 * Version 0.1.4 opened for bugfixing.
6174
6177
6175 2001-11-07 Fernando Perez <fperez@colorado.edu>
6178 2001-11-07 Fernando Perez <fperez@colorado.edu>
6176
6179
6177 * Version 0.1.3 released, mainly because of the raw_input bug.
6180 * Version 0.1.3 released, mainly because of the raw_input bug.
6178
6181
6179 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6182 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6180 and when testing for whether things were callable, a call could
6183 and when testing for whether things were callable, a call could
6181 actually be made to certain functions. They would get called again
6184 actually be made to certain functions. They would get called again
6182 once 'really' executed, with a resulting double call. A disaster
6185 once 'really' executed, with a resulting double call. A disaster
6183 in many cases (list.reverse() would never work!).
6186 in many cases (list.reverse() would never work!).
6184
6187
6185 * Removed prefilter() function, moved its code to raw_input (which
6188 * Removed prefilter() function, moved its code to raw_input (which
6186 after all was just a near-empty caller for prefilter). This saves
6189 after all was just a near-empty caller for prefilter). This saves
6187 a function call on every prompt, and simplifies the class a tiny bit.
6190 a function call on every prompt, and simplifies the class a tiny bit.
6188
6191
6189 * Fix _ip to __ip name in magic example file.
6192 * Fix _ip to __ip name in magic example file.
6190
6193
6191 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6194 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6192 work with non-gnu versions of tar.
6195 work with non-gnu versions of tar.
6193
6196
6194 2001-11-06 Fernando Perez <fperez@colorado.edu>
6197 2001-11-06 Fernando Perez <fperez@colorado.edu>
6195
6198
6196 * Version 0.1.2. Just to keep track of the recent changes.
6199 * Version 0.1.2. Just to keep track of the recent changes.
6197
6200
6198 * Fixed nasty bug in output prompt routine. It used to check 'if
6201 * Fixed nasty bug in output prompt routine. It used to check 'if
6199 arg != None...'. Problem is, this fails if arg implements a
6202 arg != None...'. Problem is, this fails if arg implements a
6200 special comparison (__cmp__) which disallows comparing to
6203 special comparison (__cmp__) which disallows comparing to
6201 None. Found it when trying to use the PhysicalQuantity module from
6204 None. Found it when trying to use the PhysicalQuantity module from
6202 ScientificPython.
6205 ScientificPython.
6203
6206
6204 2001-11-05 Fernando Perez <fperez@colorado.edu>
6207 2001-11-05 Fernando Perez <fperez@colorado.edu>
6205
6208
6206 * Also added dirs. Now the pushd/popd/dirs family functions
6209 * Also added dirs. Now the pushd/popd/dirs family functions
6207 basically like the shell, with the added convenience of going home
6210 basically like the shell, with the added convenience of going home
6208 when called with no args.
6211 when called with no args.
6209
6212
6210 * pushd/popd slightly modified to mimic shell behavior more
6213 * pushd/popd slightly modified to mimic shell behavior more
6211 closely.
6214 closely.
6212
6215
6213 * Added env,pushd,popd from ShellServices as magic functions. I
6216 * Added env,pushd,popd from ShellServices as magic functions. I
6214 think the cleanest will be to port all desired functions from
6217 think the cleanest will be to port all desired functions from
6215 ShellServices as magics and remove ShellServices altogether. This
6218 ShellServices as magics and remove ShellServices altogether. This
6216 will provide a single, clean way of adding functionality
6219 will provide a single, clean way of adding functionality
6217 (shell-type or otherwise) to IP.
6220 (shell-type or otherwise) to IP.
6218
6221
6219 2001-11-04 Fernando Perez <fperez@colorado.edu>
6222 2001-11-04 Fernando Perez <fperez@colorado.edu>
6220
6223
6221 * Added .ipython/ directory to sys.path. This way users can keep
6224 * Added .ipython/ directory to sys.path. This way users can keep
6222 customizations there and access them via import.
6225 customizations there and access them via import.
6223
6226
6224 2001-11-03 Fernando Perez <fperez@colorado.edu>
6227 2001-11-03 Fernando Perez <fperez@colorado.edu>
6225
6228
6226 * Opened version 0.1.1 for new changes.
6229 * Opened version 0.1.1 for new changes.
6227
6230
6228 * Changed version number to 0.1.0: first 'public' release, sent to
6231 * Changed version number to 0.1.0: first 'public' release, sent to
6229 Nathan and Janko.
6232 Nathan and Janko.
6230
6233
6231 * Lots of small fixes and tweaks.
6234 * Lots of small fixes and tweaks.
6232
6235
6233 * Minor changes to whos format. Now strings are shown, snipped if
6236 * Minor changes to whos format. Now strings are shown, snipped if
6234 too long.
6237 too long.
6235
6238
6236 * Changed ShellServices to work on __main__ so they show up in @who
6239 * Changed ShellServices to work on __main__ so they show up in @who
6237
6240
6238 * Help also works with ? at the end of a line:
6241 * Help also works with ? at the end of a line:
6239 ?sin and sin?
6242 ?sin and sin?
6240 both produce the same effect. This is nice, as often I use the
6243 both produce the same effect. This is nice, as often I use the
6241 tab-complete to find the name of a method, but I used to then have
6244 tab-complete to find the name of a method, but I used to then have
6242 to go to the beginning of the line to put a ? if I wanted more
6245 to go to the beginning of the line to put a ? if I wanted more
6243 info. Now I can just add the ? and hit return. Convenient.
6246 info. Now I can just add the ? and hit return. Convenient.
6244
6247
6245 2001-11-02 Fernando Perez <fperez@colorado.edu>
6248 2001-11-02 Fernando Perez <fperez@colorado.edu>
6246
6249
6247 * Python version check (>=2.1) added.
6250 * Python version check (>=2.1) added.
6248
6251
6249 * Added LazyPython documentation. At this point the docs are quite
6252 * Added LazyPython documentation. At this point the docs are quite
6250 a mess. A cleanup is in order.
6253 a mess. A cleanup is in order.
6251
6254
6252 * Auto-installer created. For some bizarre reason, the zipfiles
6255 * Auto-installer created. For some bizarre reason, the zipfiles
6253 module isn't working on my system. So I made a tar version
6256 module isn't working on my system. So I made a tar version
6254 (hopefully the command line options in various systems won't kill
6257 (hopefully the command line options in various systems won't kill
6255 me).
6258 me).
6256
6259
6257 * Fixes to Struct in genutils. Now all dictionary-like methods are
6260 * Fixes to Struct in genutils. Now all dictionary-like methods are
6258 protected (reasonably).
6261 protected (reasonably).
6259
6262
6260 * Added pager function to genutils and changed ? to print usage
6263 * Added pager function to genutils and changed ? to print usage
6261 note through it (it was too long).
6264 note through it (it was too long).
6262
6265
6263 * Added the LazyPython functionality. Works great! I changed the
6266 * Added the LazyPython functionality. Works great! I changed the
6264 auto-quote escape to ';', it's on home row and next to '. But
6267 auto-quote escape to ';', it's on home row and next to '. But
6265 both auto-quote and auto-paren (still /) escapes are command-line
6268 both auto-quote and auto-paren (still /) escapes are command-line
6266 parameters.
6269 parameters.
6267
6270
6268
6271
6269 2001-11-01 Fernando Perez <fperez@colorado.edu>
6272 2001-11-01 Fernando Perez <fperez@colorado.edu>
6270
6273
6271 * Version changed to 0.0.7. Fairly large change: configuration now
6274 * Version changed to 0.0.7. Fairly large change: configuration now
6272 is all stored in a directory, by default .ipython. There, all
6275 is all stored in a directory, by default .ipython. There, all
6273 config files have normal looking names (not .names)
6276 config files have normal looking names (not .names)
6274
6277
6275 * Version 0.0.6 Released first to Lucas and Archie as a test
6278 * Version 0.0.6 Released first to Lucas and Archie as a test
6276 run. Since it's the first 'semi-public' release, change version to
6279 run. Since it's the first 'semi-public' release, change version to
6277 > 0.0.6 for any changes now.
6280 > 0.0.6 for any changes now.
6278
6281
6279 * Stuff I had put in the ipplib.py changelog:
6282 * Stuff I had put in the ipplib.py changelog:
6280
6283
6281 Changes to InteractiveShell:
6284 Changes to InteractiveShell:
6282
6285
6283 - Made the usage message a parameter.
6286 - Made the usage message a parameter.
6284
6287
6285 - Require the name of the shell variable to be given. It's a bit
6288 - Require the name of the shell variable to be given. It's a bit
6286 of a hack, but allows the name 'shell' not to be hardwired in the
6289 of a hack, but allows the name 'shell' not to be hardwired in the
6287 magic (@) handler, which is problematic b/c it requires
6290 magic (@) handler, which is problematic b/c it requires
6288 polluting the global namespace with 'shell'. This in turn is
6291 polluting the global namespace with 'shell'. This in turn is
6289 fragile: if a user redefines a variable called shell, things
6292 fragile: if a user redefines a variable called shell, things
6290 break.
6293 break.
6291
6294
6292 - magic @: all functions available through @ need to be defined
6295 - magic @: all functions available through @ need to be defined
6293 as magic_<name>, even though they can be called simply as
6296 as magic_<name>, even though they can be called simply as
6294 @<name>. This allows the special command @magic to gather
6297 @<name>. This allows the special command @magic to gather
6295 information automatically about all existing magic functions,
6298 information automatically about all existing magic functions,
6296 even if they are run-time user extensions, by parsing the shell
6299 even if they are run-time user extensions, by parsing the shell
6297 instance __dict__ looking for special magic_ names.
6300 instance __dict__ looking for special magic_ names.
6298
6301
6299 - mainloop: added *two* local namespace parameters. This allows
6302 - mainloop: added *two* local namespace parameters. This allows
6300 the class to differentiate between parameters which were there
6303 the class to differentiate between parameters which were there
6301 before and after command line initialization was processed. This
6304 before and after command line initialization was processed. This
6302 way, later @who can show things loaded at startup by the
6305 way, later @who can show things loaded at startup by the
6303 user. This trick was necessary to make session saving/reloading
6306 user. This trick was necessary to make session saving/reloading
6304 really work: ideally after saving/exiting/reloading a session,
6307 really work: ideally after saving/exiting/reloading a session,
6305 *everything* should look the same, including the output of @who. I
6308 *everything* should look the same, including the output of @who. I
6306 was only able to make this work with this double namespace
6309 was only able to make this work with this double namespace
6307 trick.
6310 trick.
6308
6311
6309 - added a header to the logfile which allows (almost) full
6312 - added a header to the logfile which allows (almost) full
6310 session restoring.
6313 session restoring.
6311
6314
6312 - prepend lines beginning with @ or !, with a and log
6315 - prepend lines beginning with @ or !, with a and log
6313 them. Why? !lines: may be useful to know what you did @lines:
6316 them. Why? !lines: may be useful to know what you did @lines:
6314 they may affect session state. So when restoring a session, at
6317 they may affect session state. So when restoring a session, at
6315 least inform the user of their presence. I couldn't quite get
6318 least inform the user of their presence. I couldn't quite get
6316 them to properly re-execute, but at least the user is warned.
6319 them to properly re-execute, but at least the user is warned.
6317
6320
6318 * Started ChangeLog.
6321 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now