##// END OF EJS Templates
Fix picking.
walter.doerwald -
Show More
@@ -1,805 +1,805 b''
1 1 # -*- coding: iso-8859-1 -*-
2 2
3 3 import ipipe, os, webbrowser, urllib
4 4 import wx
5 5 import wx.grid, wx.html
6 6
7 7 try:
8 8 sorted
9 9 except NameError:
10 10 from ipipe import sorted
11 11
12 12
13 13 __all__ = ["igrid"]
14 14
15 15
16 16 class IGridRenderer(wx.grid.PyGridCellRenderer):
17 17 """
18 18 This is a custom renderer for our IGridGrid
19 19 """
20 20 def __init__(self, table):
21 21 self.maxchars = 200
22 22 self.table = table
23 23 self.colormap = (
24 24 ( 0, 0, 0),
25 25 (174, 0, 0),
26 26 ( 0, 174, 0),
27 27 (174, 174, 0),
28 28 ( 0, 0, 174),
29 29 (174, 0, 174),
30 30 ( 0, 174, 174),
31 31 ( 64, 64, 64)
32 32 )
33 33
34 34 wx.grid.PyGridCellRenderer.__init__(self)
35 35
36 36 def _getvalue(self, row, col):
37 37 try:
38 38 value = self.table._displayattrs[col].value(self.table.items[row])
39 39 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
40 40 except Exception, exc:
41 41 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
42 42 return (align, text)
43 43
44 44 def GetBestSize(self, grid, attr, dc, row, col):
45 45 text = grid.GetCellValue(row, col)
46 46 (align, text) = self._getvalue(row, col)
47 47 dc.SetFont(attr.GetFont())
48 48 (w, h) = dc.GetTextExtent(str(text))
49 49 return wx.Size(min(w+2, 600), h+2) # add border
50 50
51 51 def Draw(self, grid, attr, dc, rect, row, col, isSelected):
52 52 """
53 53 Takes care of drawing everything in the cell; aligns the text
54 54 """
55 55 text = grid.GetCellValue(row, col)
56 56 (align, text) = self._getvalue(row, col)
57 57 if isSelected:
58 58 bg = grid.GetSelectionBackground()
59 59 else:
60 60 bg = ["white", (240, 240, 240)][row%2]
61 61 dc.SetTextBackground(bg)
62 62 dc.SetBrush(wx.Brush(bg, wx.SOLID))
63 63 dc.SetPen(wx.TRANSPARENT_PEN)
64 64 dc.SetFont(attr.GetFont())
65 65 dc.DrawRectangleRect(rect)
66 66 dc.SetClippingRect(rect)
67 67 # Format the text
68 68 if align == -1: # left alignment
69 69 (width, height) = dc.GetTextExtent(str(text))
70 70 x = rect[0]+1
71 71 y = rect[1]+0.5*(rect[3]-height)
72 72
73 73 for (style, part) in text:
74 74 if isSelected:
75 75 fg = grid.GetSelectionForeground()
76 76 else:
77 77 fg = self.colormap[style.fg]
78 78 dc.SetTextForeground(fg)
79 79 (w, h) = dc.GetTextExtent(part)
80 80 dc.DrawText(part, x, y)
81 81 x += w
82 82 elif align == 0: # center alignment
83 83 (width, height) = dc.GetTextExtent(str(text))
84 84 x = rect[0]+0.5*(rect[2]-width)
85 85 y = rect[1]+0.5*(rect[3]-height)
86 86 for (style, part) in text:
87 87 if isSelected:
88 88 fg = grid.GetSelectionForeground()
89 89 else:
90 90 fg = self.colormap[style.fg]
91 91 dc.SetTextForeground(fg)
92 92 (w, h) = dc.GetTextExtent(part)
93 93 dc.DrawText(part, x, y)
94 94 x += w
95 95 else: # right alignment
96 96 (width, height) = dc.GetTextExtent(str(text))
97 97 x = rect[0]+rect[2]-1
98 98 y = rect[1]+0.5*(rect[3]-height)
99 99 for (style, part) in reversed(text):
100 100 (w, h) = dc.GetTextExtent(part)
101 101 x -= w
102 102 if isSelected:
103 103 fg = grid.GetSelectionForeground()
104 104 else:
105 105 fg = self.colormap[style.fg]
106 106 dc.SetTextForeground(fg)
107 107 dc.DrawText(part, x, y)
108 108 dc.DestroyClippingRegion()
109 109
110 110 def Clone(self):
111 111 return IGridRenderer(self.table)
112 112
113 113
114 114 class IGridTable(wx.grid.PyGridTableBase):
115 115 # The data table for the ``IGridGrid``. Some dirty tricks were used here:
116 116 # ``GetValue()`` does not get any values (or at least it does not return
117 117 # anything, accessing the values is done by the renderer)
118 118 # but rather tries to fetch the objects which were requested into the table.
119 119 # General behaviour is: Fetch the first X objects. If the user scrolls down
120 120 # to the last object another bunch of X objects is fetched (if possible)
121 121 def __init__(self, input, fontsize, *attrs):
122 122 wx.grid.PyGridTableBase.__init__(self)
123 123 self.input = input
124 124 self.iterator = ipipe.xiter(input)
125 125 self.items = []
126 126 self.attrs = [ipipe.upgradexattr(attr) for attr in attrs]
127 127 self._displayattrs = self.attrs[:]
128 128 self._displayattrset = set(self.attrs)
129 129 self._sizing = False
130 130 self.fontsize = fontsize
131 131 self._fetch(1)
132 132
133 133 def GetAttr(self, *args):
134 134 attr = wx.grid.GridCellAttr()
135 135 attr.SetFont(wx.Font(self.fontsize, wx.TELETYPE, wx.NORMAL, wx.NORMAL))
136 136 return attr
137 137
138 138 def GetNumberRows(self):
139 139 return len(self.items)
140 140
141 141 def GetNumberCols(self):
142 142 return len(self._displayattrs)
143 143
144 144 def GetColLabelValue(self, col):
145 145 if col < len(self._displayattrs):
146 146 return self._displayattrs[col].name()
147 147 else:
148 148 return ""
149 149
150 150 def GetRowLabelValue(self, row):
151 151 return str(row)
152 152
153 153 def IsEmptyCell(self, row, col):
154 154 return False
155 155
156 156 def _append(self, item):
157 157 self.items.append(item)
158 158 # Nothing to do if the set of attributes has been fixed by the user
159 159 if not self.attrs:
160 160 for attr in ipipe.xattrs(item):
161 161 attr = ipipe.upgradexattr(attr)
162 162 if attr not in self._displayattrset:
163 163 self._displayattrs.append(attr)
164 164 self._displayattrset.add(attr)
165 165
166 166 def _fetch(self, count):
167 167 # Try to fill ``self.items`` with at least ``count`` objects.
168 168 have = len(self.items)
169 169 while self.iterator is not None and have < count:
170 170 try:
171 171 item = self.iterator.next()
172 172 except StopIteration:
173 173 self.iterator = None
174 174 break
175 175 except (KeyboardInterrupt, SystemExit):
176 176 raise
177 177 except Exception, exc:
178 178 have += 1
179 179 self._append(item)
180 180 self.iterator = None
181 181 break
182 182 else:
183 183 have += 1
184 184 self._append(item)
185 185
186 186 def GetValue(self, row, col):
187 187 # some kind of dummy-function: does not return anything but "";
188 188 # (The value isn't use anyway)
189 189 # its main task is to trigger the fetch of new objects
190 190 had_cols = self._displayattrs[:]
191 191 had_rows = len(self.items)
192 192 if row == had_rows - 1 and self.iterator is not None and not self._sizing:
193 193 self._fetch(row + 20)
194 194 have_rows = len(self.items)
195 195 have_cols = len(self._displayattrs)
196 196 if have_rows > had_rows:
197 197 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, have_rows - had_rows)
198 198 self.GetView().ProcessTableMessage(msg)
199 199 self._sizing = True
200 200 self.GetView().AutoSizeColumns(False)
201 201 self._sizing = False
202 202 if row >= have_rows:
203 203 return ""
204 204 if self._displayattrs != had_cols:
205 205 msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED, have_cols - len(had_cols))
206 206 self.GetView().ProcessTableMessage(msg)
207 207 return ""
208 208
209 209 def SetValue(self, row, col, value):
210 210 pass
211 211
212 212
213 213 class IGridGrid(wx.grid.Grid):
214 214 # The actual grid
215 215 # all methods for selecting/sorting/picking/... data are implemented here
216 216 def __init__(self, panel, input, *attrs):
217 217 wx.grid.Grid.__init__(self, panel)
218 218 fontsize = 9
219 219 self.input = input
220 220 self.table = IGridTable(self.input, fontsize, *attrs)
221 221 self.SetTable(self.table, True)
222 222 self.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
223 223 self.SetDefaultRenderer(IGridRenderer(self.table))
224 224 self.EnableEditing(False)
225 225 self.Bind(wx.EVT_KEY_DOWN, self.key_pressed)
226 226 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.cell_doubleclicked)
227 227 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.cell_leftclicked)
228 228 self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_DCLICK, self.label_doubleclicked)
229 229 self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_CLICK, self.on_label_leftclick)
230 230 self.Bind(wx.grid.EVT_GRID_RANGE_SELECT, self._on_selected_range)
231 231 self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self._on_selected_cell)
232 232 self.current_selection = set()
233 233 self.maxchars = 200
234 234
235 235 def on_label_leftclick(self, event):
236 236 event.Skip()
237 237
238 238 def error_output(self, text):
239 239 wx.Bell()
240 240 frame = self.GetParent().GetParent().GetParent()
241 241 frame.SetStatusText(text)
242 242
243 243 def _on_selected_range(self, event):
244 244 # Internal update to the selection tracking lists
245 245 if event.Selecting():
246 246 # adding to the list...
247 247 self.current_selection.update(xrange(event.GetTopRow(), event.GetBottomRow()+1))
248 248 else:
249 249 # removal from list
250 250 for index in xrange( event.GetTopRow(), event.GetBottomRow()+1):
251 251 self.current_selection.discard(index)
252 252 event.Skip()
253 253
254 254 def _on_selected_cell(self, event):
255 255 # Internal update to the selection tracking list
256 256 self.current_selection = set([event.GetRow()])
257 257 event.Skip()
258 258
259 259 def sort(self, key, reverse=False):
260 260 """
261 261 Sort the current list of items using the key function ``key``. If
262 262 ``reverse`` is true the sort order is reversed.
263 263 """
264 264 row = self.GetGridCursorRow()
265 265 col = self.GetGridCursorCol()
266 266 curitem = self.table.items[row] # Remember where the cursor is now
267 267 # Sort items
268 268 def realkey(item):
269 269 try:
270 270 return key(item)
271 271 except (KeyboardInterrupt, SystemExit):
272 272 raise
273 273 except Exception:
274 274 return None
275 275 try:
276 276 self.table.items = ipipe.deque(sorted(self.table.items, key=realkey, reverse=reverse))
277 277 except TypeError, exc:
278 278 self.error_output("Exception encountered: %s" % exc)
279 279 return
280 280 # Find out where the object under the cursor went
281 281 for (i, item) in enumerate(self.table.items):
282 282 if item is curitem:
283 283 self.SetGridCursor(i,col)
284 284 self.MakeCellVisible(i,col)
285 285 self.Refresh()
286 286
287 287 def sortattrasc(self):
288 288 """
289 289 Sort in ascending order; sorting criteria is the current attribute
290 290 """
291 291 col = self.GetGridCursorCol()
292 292 attr = self.table._displayattrs[col]
293 293 frame = self.GetParent().GetParent().GetParent()
294 294 if attr is ipipe.noitem:
295 295 self.error_output("no column under cursor")
296 296 return
297 297 frame.SetStatusText("sort by %s (ascending)" % attr.name())
298 298 def key(item):
299 299 try:
300 300 return attr.value(item)
301 301 except (KeyboardInterrupt, SystemExit):
302 302 raise
303 303 except Exception:
304 304 return None
305 305 self.sort(key)
306 306
307 307 def sortattrdesc(self):
308 308 """
309 309 Sort in descending order; sorting criteria is the current attribute
310 310 """
311 311 col = self.GetGridCursorCol()
312 312 attr = self.table._displayattrs[col]
313 313 frame = self.GetParent().GetParent().GetParent()
314 314 if attr is ipipe.noitem:
315 315 self.error_output("no column under cursor")
316 316 return
317 317 frame.SetStatusText("sort by %s (descending)" % attr.name())
318 318 def key(item):
319 319 try:
320 320 return attr.value(item)
321 321 except (KeyboardInterrupt, SystemExit):
322 322 raise
323 323 except Exception:
324 324 return None
325 325 self.sort(key, reverse=True)
326 326
327 327 def label_doubleclicked(self, event):
328 328 row = event.GetRow()
329 329 col = event.GetCol()
330 330 if col == -1:
331 331 self.enter(row)
332 332
333 333 def _getvalue(self, row, col):
334 334 """
335 335 Gets the text which is displayed at ``(row, col)``
336 336 """
337 337 try:
338 338 value = self.table._displayattrs[col].value(self.table.items[row])
339 339 (align, width, text) = ipipe.xformat(value, "cell", self.maxchars)
340 340 except IndexError:
341 341 raise IndexError
342 342 except Exception, exc:
343 343 (align, width, text) = ipipe.xformat(exc, "cell", self.maxchars)
344 344 return text
345 345
346 346 def search(self, searchtext, startrow=0, startcol=0, search_forward=True):
347 347 """
348 348 search for ``searchtext``, starting in ``(startrow, startcol)``;
349 349 if ``search_forward`` is true the direction is "forward"
350 350 """
351 351 row = startrow
352 352 searchtext = searchtext.lower()
353 353 if search_forward:
354 354 while True:
355 355 for col in xrange(startcol, self.table.GetNumberCols()):
356 356 try:
357 357 foo = self.table.GetValue(row, col)
358 358 text = self._getvalue(row, col)
359 359 if searchtext in text.string().lower():
360 360 self.SetGridCursor(row, col)
361 361 self.MakeCellVisible(row, col)
362 362 return
363 363 except IndexError:
364 364 return
365 365 startcol = 0
366 366 row += 1
367 367 else:
368 368 while True:
369 369 for col in xrange(startcol, -1, -1):
370 370 try:
371 371 foo = self.table.GetValue(row, col)
372 372 text = self._getvalue(row, col)
373 373 if searchtext in text.string().lower():
374 374 self.SetGridCursor(row, col)
375 375 self.MakeCellVisible(row, col)
376 376 return
377 377 except IndexError:
378 378 return
379 379 startcol = self.table.GetNumberCols()-1
380 380 row -= 1
381 381
382 382 def key_pressed(self, event):
383 383 """
384 384 Maps pressed keys to functions
385 385 """
386 386 frame = self.GetParent().GetParent().GetParent()
387 387 frame.SetStatusText("")
388 388 sh = event.ShiftDown()
389 389 ctrl = event.ControlDown()
390 390
391 391 keycode = event.GetKeyCode()
392 392 if keycode == ord("P"):
393 393 row = self.GetGridCursorRow()
394 394 if event.ShiftDown():
395 395 col = self.GetGridCursorCol()
396 396 self.pickattr(row, col)
397 397 else:
398 398 self.pick(row)
399 399 elif keycode == ord("M"):
400 400 if ctrl:
401 401 col = self.GetGridCursorCol()
402 402 self.pickrowsattr(sorted(self.current_selection), col)
403 403 else:
404 404 self.pickrows(sorted(self.current_selection))
405 405 elif keycode in (wx.WXK_BACK, wx.WXK_DELETE, ord("X")) and not (ctrl or sh):
406 406 self.delete_current_notebook()
407 407 elif keycode == ord("E") and not (ctrl or sh):
408 408 row = self.GetGridCursorRow()
409 409 self.enter(row)
410 410 elif keycode == ord("E") and sh and not ctrl:
411 411 row = self.GetGridCursorRow()
412 412 col = self.GetGridCursorCol()
413 413 self.enterattr(row, col)
414 414 elif keycode == ord("E") and ctrl:
415 415 row = self.GetGridCursorRow()
416 416 self.SetGridCursor(row, self.GetNumberCols()-1)
417 417 elif keycode == wx.WXK_HOME or (keycode == ord("A") and ctrl):
418 418 row = self.GetGridCursorRow()
419 419 self.SetGridCursor(row, 0)
420 420 elif keycode == ord("C") and sh:
421 421 col = self.GetGridCursorCol()
422 422 attr = self.table._displayattrs[col]
423 returnobj = []
423 result = []
424 424 for i in xrange(self.GetNumberRows()):
425 returnobj.append(self.table._displayattrs[col].value(self.table.items[i]))
426 self.quit(returnobj)
425 result.append(self.table._displayattrs[col].value(self.table.items[i]))
426 self.quit(result)
427 427 elif keycode in (wx.WXK_ESCAPE, ord("Q")) and not (ctrl or sh):
428 428 self.quit()
429 429 elif keycode == ord("<"):
430 430 row = self.GetGridCursorRow()
431 431 col = self.GetGridCursorCol()
432 432 if not event.ShiftDown():
433 433 newcol = col - 1
434 434 if newcol >= 0:
435 435 self.SetGridCursor(row, col - 1)
436 436 else:
437 437 newcol = col + 1
438 438 if newcol < self.GetNumberCols():
439 439 self.SetGridCursor(row, col + 1)
440 440 elif keycode == ord("D"):
441 441 col = self.GetGridCursorCol()
442 442 row = self.GetGridCursorRow()
443 443 if not sh:
444 444 self.detail(row, col)
445 445 else:
446 446 self.detail_attr(row, col)
447 447 elif keycode == ord("F") and ctrl:
448 448 frame.enter_searchtext(event)
449 449 elif keycode == wx.WXK_F3:
450 450 if sh:
451 451 frame.find_previous(event)
452 452 else:
453 453 frame.find_next(event)
454 454 elif keycode == ord("V"):
455 455 if sh:
456 456 self.sortattrdesc()
457 457 else:
458 458 self.sortattrasc()
459 459 elif keycode == wx.WXK_DOWN:
460 460 row = self.GetGridCursorRow()
461 461 try:
462 462 item = self.table.items[row+1]
463 463 except IndexError:
464 464 item = self.table.items[row]
465 465 self.set_footer(item)
466 466 event.Skip()
467 467 elif keycode == wx.WXK_UP:
468 468 row = self.GetGridCursorRow()
469 469 if row >= 1:
470 470 item = self.table.items[row-1]
471 471 else:
472 472 item = self.table.items[row]
473 473 self.set_footer(item)
474 474 event.Skip()
475 475 elif keycode == wx.WXK_RIGHT:
476 476 row = self.GetGridCursorRow()
477 477 item = self.table.items[row]
478 478 self.set_footer(item)
479 479 event.Skip()
480 480 elif keycode == wx.WXK_LEFT:
481 481 row = self.GetGridCursorRow()
482 482 item = self.table.items[row]
483 483 self.set_footer(item)
484 484 event.Skip()
485 485 else:
486 486 event.Skip()
487 487
488 488 def delete_current_notebook(self):
489 489 """
490 490 deletes the current notebook tab
491 491 """
492 492 panel = self.GetParent()
493 493 nb = panel.GetParent()
494 494 current = nb.GetSelection()
495 495 count = nb.GetPageCount()
496 496 if count > 1:
497 497 for i in xrange(count-1, current-1, -1):
498 498 nb.DeletePage(i)
499 499 nb.GetCurrentPage().grid.SetFocus()
500 500 else:
501 501 frame = nb.GetParent()
502 502 frame.SetStatusText("This is the last level!")
503 503
504 504 def _doenter(self, value, *attrs):
505 505 """
506 506 "enter" a special item resulting in a new notebook tab
507 507 """
508 508 panel = self.GetParent()
509 509 nb = panel.GetParent()
510 510 frame = nb.GetParent()
511 511 current = nb.GetSelection()
512 512 count = nb.GetPageCount()
513 513 try: # if we want to enter something non-iterable, e.g. a function
514 514 if current + 1 == count and value is not self.input: # we have an event in the last tab
515 515 frame._add_notebook(value, *attrs)
516 516 elif value != self.input: # we have to delete all tabs newer than [panel] first
517 517 for i in xrange(count-1, current, -1): # some tabs don't close if we don't close in *reverse* order
518 518 nb.DeletePage(i)
519 519 frame._add_notebook(value)
520 520 except TypeError, exc:
521 521 if exc.__class__.__module__ == "exceptions":
522 522 msg = "%s: %s" % (exc.__class__.__name__, exc)
523 523 else:
524 524 msg = "%s.%s: %s" % (exc.__class__.__module__, exc.__class__.__name__, exc)
525 525 frame.SetStatusText(msg)
526 526
527 527 def enterattr(self, row, col):
528 528 try:
529 529 attr = self.table._displayattrs[col]
530 530 value = attr.value(self.table.items[row])
531 531 except Exception, exc:
532 532 self.error_output(str(exc))
533 533 else:
534 534 self._doenter(value)
535 535
536 536 def set_footer(self, item):
537 537 frame = self.GetParent().GetParent().GetParent()
538 538 frame.SetStatusText(" ".join([str(text) for (style, text) in ipipe.xformat(item, "footer", 20)[2]]))
539 539
540 540 def enter(self, row):
541 541 try:
542 542 value = self.table.items[row]
543 543 except Exception, exc:
544 544 self.error_output(str(exc))
545 545 else:
546 546 self._doenter(value)
547 547
548 548 def detail(self, row, col):
549 549 """
550 550 shows a detail-view of the current cell
551 551 """
552 552 try:
553 553 attr = self.table._displayattrs[col]
554 554 item = self.table.items[row]
555 555 except Exception, exc:
556 556 self.error_output(str(exc))
557 557 else:
558 558 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
559 559 self._doenter(attrs)
560 560
561 561 def detail_attr(self, row, col):
562 562 try:
563 563 attr = self.table._displayattrs[col]
564 564 item = attr.value(self.table.items[row])
565 565 except Exception, exc:
566 566 self.error_output(str(exc))
567 567 else:
568 568 attrs = [ipipe.AttributeDetail(item, attr) for attr in ipipe.xattrs(item, "detail")]
569 569 self._doenter(attrs)
570 570
571 def quit(self, returnobj=None):
571 def quit(self, result=None):
572 572 """
573 573 quit
574 574 """
575 575 frame = self.GetParent().GetParent().GetParent()
576 576 if frame.helpdialog:
577 577 frame.helpdialog.Destroy()
578 frame.parent.returnobj = returnobj
578 frame.parent.result = result
579 579 frame.Close()
580 580 frame.Destroy()
581 581
582 582 def cell_doubleclicked(self, event):
583 583 self.enterattr(event.GetRow(), event.GetCol())
584 584 event.Skip()
585 585
586 586 def cell_leftclicked(self, event):
587 587 row = event.GetRow()
588 588 item = self.table.items[row]
589 589 self.set_footer(item)
590 590 event.Skip()
591 591
592 592 def pick(self, row):
593 593 """
594 594 pick a single row and return to the IPython prompt
595 595 """
596 596 try:
597 597 value = self.table.items[row]
598 598 except Exception, exc:
599 599 self.error_output(str(exc))
600 600 else:
601 601 self.quit(value)
602 602
603 603 def pickrows(self, rows):
604 604 """
605 605 pick multiple rows and return to the IPython prompt
606 606 """
607 607 try:
608 608 value = [self.table.items[row] for row in rows]
609 609 except Exception, exc:
610 610 self.error_output(str(exc))
611 611 else:
612 612 self.quit(value)
613 613
614 614 def pickrowsattr(self, rows, col):
615 615 """"
616 616 pick one column from multiple rows
617 617 """
618 618 values = []
619 619 try:
620 620 attr = self.table._displayattrs[col]
621 621 for row in rows:
622 622 try:
623 623 values.append(attr.value(self.table.items[row]))
624 624 except (SystemExit, KeyboardInterrupt):
625 625 raise
626 626 except Exception:
627 627 raise #pass
628 628 except Exception, exc:
629 629 self.error_output(str(exc))
630 630 else:
631 631 self.quit(values)
632 632
633 633 def pickattr(self, row, col):
634 634 try:
635 635 attr = self.table._displayattrs[col]
636 636 value = attr.value(self.table.items[row])
637 637 except Exception, exc:
638 638 self.error_output(str(exc))
639 639 else:
640 640 self.quit(value)
641 641
642 642
643 643 class IGridPanel(wx.Panel):
644 644 # Each IGridPanel contains an IGridGrid
645 645 def __init__(self, parent, input, *attrs):
646 646 wx.Panel.__init__(self, parent, -1)
647 647 self.grid = IGridGrid(self, input, *attrs)
648 648 sizer = wx.BoxSizer(wx.VERTICAL)
649 649 sizer.Add(self.grid, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
650 650 self.SetSizer(sizer)
651 651 sizer.Fit(self)
652 652 sizer.SetSizeHints(self)
653 653
654 654
655 655 class IGridHTMLHelp(wx.Frame):
656 656 def __init__(self, parent, title, filename, size):
657 657 wx.Frame.__init__(self, parent, -1, title, size=size)
658 658 html = wx.html.HtmlWindow(self)
659 659 if "gtk2" in wx.PlatformInfo:
660 660 html.SetStandardFonts()
661 661 html.LoadFile(filename)
662 662
663 663
664 664 class IGridFrame(wx.Frame):
665 665 maxtitlelen = 30
666 666
667 667 def __init__(self, parent, input):
668 668 title = " ".join([str(text) for (style, text) in ipipe.xformat(input, "header", 20)[2]])
669 669 wx.Frame.__init__(self, None, title=title, size=(640, 480))
670 670 self.menubar = wx.MenuBar()
671 671 self.menucounter = 100
672 672 self.m_help = wx.Menu()
673 673 self.m_search = wx.Menu()
674 674 self.m_sort = wx.Menu()
675 675 self.notebook = wx.Notebook(self, -1, style=0)
676 676 self.statusbar = self.CreateStatusBar(1, wx.ST_SIZEGRIP)
677 677 self.parent = parent
678 678 self._add_notebook(input)
679 679 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
680 680 self.makemenu(self.m_sort, "&Sort (asc)", "Sort ascending", self.sortasc)
681 681 self.makemenu(self.m_sort, "Sort (&desc)", "Sort descending", self.sortdesc)
682 682 self.makemenu(self.m_help, "&Help", "Help", self.display_help)
683 683 self.makemenu(self.m_help, "&Show help in browser", "Show help in browser", self.display_help_in_browser)
684 684 self.makemenu(self.m_search, "&Find text", "Find text", self.enter_searchtext)
685 685 self.makemenu(self.m_search, "Find by &expression", "Find by expression", self.enter_searchexpression)
686 686 self.makemenu(self.m_search, "Find &next", "Find next", self.find_next)
687 687 self.makemenu(self.m_search, "Find &previous", "Find previous", self.find_previous)
688 688 self.menubar.Append(self.m_search, "&Find")
689 689 self.menubar.Append(self.m_sort, "&Sort")
690 690 self.menubar.Append(self.m_help, "&Help")
691 691 self.SetMenuBar(self.menubar)
692 692 self.searchtext = ""
693 693 self.helpdialog = None
694 694
695 695 def sortasc(self, event):
696 696 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
697 697 grid.sortattrasc()
698 698
699 699 def sortdesc(self, event):
700 700 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
701 701 grid.sortattrdesc()
702 702
703 703 def find_previous(self, event):
704 704 """
705 705 find previous occurrences
706 706 """
707 707 if self.searchtext:
708 708 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
709 709 row = grid.GetGridCursorRow()
710 710 col = grid.GetGridCursorCol()
711 711 if col-1 >= 0:
712 712 grid.search(self.searchtext, row, col-1, False)
713 713 else:
714 714 grid.search(self.searchtext, row-1, grid.table.GetNumberCols()-1, False)
715 715 else:
716 716 self.enter_searchtext(event)
717 717
718 718 def find_next(self, event):
719 719 """
720 720 find the next occurrence
721 721 """
722 722 if self.searchtext:
723 723 grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
724 724 row = grid.GetGridCursorRow()
725 725 col = grid.GetGridCursorCol()
726 726 if col+1 < grid.table.GetNumberCols():
727 727 grid.search(self.searchtext, row, col+1)
728 728 else:
729 729 grid.search(self.searchtext, row+1, 0)
730 730 else:
731 731 self.enter_searchtext(event)
732 732
733 733 def display_help(self, event):
734 734 """
735 735 Display a help dialog
736 736 """
737 737 if self.helpdialog:
738 738 self.helpdialog.Destroy()
739 739 filename = os.path.join(os.path.dirname(__file__), "igrid_help.html")
740 740 self.helpdialog = IGridHTMLHelp(None, title="Help", filename=filename, size=wx.Size(600,400))
741 741 self.helpdialog.Show()
742 742
743 743 def display_help_in_browser(self, event):
744 744 """
745 745 Show the help-HTML in a browser (as a ``HtmlWindow`` does not understand
746 746 CSS this looks better)
747 747 """
748 748 filename = urllib.pathname2url(os.path.abspath(os.path.join(os.path.dirname(__file__), "igrid_help.html")))
749 749 if not filename.startswith("file"):
750 750 filename = "file:" + filename
751 751 webbrowser.open(filename, new=1, autoraise=True)
752 752
753 753 def enter_searchexpression(self, event):
754 754 pass
755 755
756 756 def makemenu(self, menu, label, help, cmd):
757 757 menu.Append(self.menucounter, label, help)
758 758 self.Bind(wx.EVT_MENU, cmd, id=self.menucounter)
759 759 self.menucounter += 1
760 760
761 761 def _add_notebook(self, input, *attrs):
762 762 # Adds another notebook which has the starting object ``input``
763 763 panel = IGridPanel(self.notebook, input, *attrs)
764 764 text = str(ipipe.xformat(input, "header", self.maxtitlelen)[2])
765 765 if len(text) >= self.maxtitlelen:
766 766 text = text[:self.maxtitlelen].rstrip(".") + "..."
767 767 self.notebook.AddPage(panel, text, True)
768 768 panel.grid.SetFocus()
769 769 self.Layout()
770 770
771 771 def OnCloseWindow(self, event):
772 772 self.Destroy()
773 773
774 774 def enter_searchtext(self, event):
775 775 # Displays a dialog asking for the searchtext
776 776 dlg = wx.TextEntryDialog(self, "Find:", "Find in list")
777 777 if dlg.ShowModal() == wx.ID_OK:
778 778 self.searchtext = dlg.GetValue()
779 779 self.notebook.GetPage(self.notebook.GetSelection()).grid.search(self.searchtext, 0, 0)
780 780 dlg.Destroy()
781 781
782 782
783 783 class App(wx.App):
784 784 def __init__(self, input):
785 785 self.input = input
786 self.result = None # Result to be returned to IPython. Set by quit().
786 787 wx.App.__init__(self)
787 788
788 789 def OnInit(self):
789 790 frame = IGridFrame(self, self.input)
790 791 frame.Show()
791 792 self.SetTopWindow(frame)
792 793 frame.Raise()
793 794 return True
794 795
795 796
796 797 class igrid(ipipe.Display):
797 798 """
798 799 This is a wx-based display object that can be used instead of ``ibrowse``
799 800 (which is curses-based) or ``idump`` (which simply does a print).
800 801 """
801 802 def display(self):
802 self.returnobj = None
803 803 app = App(self.input)
804 804 app.MainLoop()
805 return self.returnobj
805 return app.result
@@ -1,6394 +1,6398 b''
1 2007-03-24 Walter Doerwald <walter@livinglogic.de>
2
3 * IPython/Extensions/igrid.py: Fix picking.
4
1 5 2007-03-23 Walter Doerwald <walter@livinglogic.de>
2 6
3 7 * IPython/Extensions/path.py: Updated to version 2.2.
4 8
5 9 2007-03-23 Ville Vainio <vivainio@gmail.com>
6 10
7 11 * iplib.py: recursive alias expansion now works better, so that
8 12 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
9 13 doesn't trip up the process, if 'd' has been aliased to 'ls'.
10 14
11 15 * Extensions/ipy_gnuglobal.py added, provides %global magic
12 16 for users of http://www.gnu.org/software/global
13 17
14 18 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
15 19 Closes #52. Patch by Stefan van der Walt.
16 20
17 21 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
18 22
19 23 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
20 24 respect the __file__ attribute when using %run. Thanks to a bug
21 25 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
22 26
23 27 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
24 28
25 29 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
26 30 input. Patch sent by Stefan.
27 31
28 32 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
29 33 * IPython/Extensions/ipy_stock_completer.py
30 34 shlex_split, fix bug in shlex_split. len function
31 35 call was missing in if statement. Caused shlex_split to
32 36 sometimes return "" as last element.
33 37
34 38 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
35 39
36 40 * IPython/completer.py
37 41 (IPCompleter.file_matches.single_dir_expand): fix a problem
38 42 reported by Stefan, where directories containign a single subdir
39 43 would be completed too early.
40 44
41 45 * IPython/Shell.py (_load_pylab): Make the execution of 'from
42 46 pylab import *' when -pylab is given be optional. A new flag,
43 47 pylab_import_all controls this behavior, the default is True for
44 48 backwards compatibility.
45 49
46 50 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
47 51 modified) R. Bernstein's patch for fully syntax highlighted
48 52 tracebacks. The functionality is also available under ultraTB for
49 53 non-ipython users (someone using ultraTB but outside an ipython
50 54 session). They can select the color scheme by setting the
51 55 module-level global DEFAULT_SCHEME. The highlight functionality
52 56 also works when debugging.
53 57
54 58 * IPython/genutils.py (IOStream.close): small patch by
55 59 R. Bernstein for improved pydb support.
56 60
57 61 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
58 62 DaveS <davls@telus.net> to improve support of debugging under
59 63 NTEmacs, including improved pydb behavior.
60 64
61 65 * IPython/Magic.py (magic_prun): Fix saving of profile info for
62 66 Python 2.5, where the stats object API changed a little. Thanks
63 67 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
64 68
65 69 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
66 70 Pernetty's patch to improve support for (X)Emacs under Win32.
67 71
68 72 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
69 73
70 74 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
71 75 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
72 76 a report by Nik Tautenhahn.
73 77
74 78 2007-03-16 Walter Doerwald <walter@livinglogic.de>
75 79
76 80 * setup.py: Add the igrid help files to the list of data files
77 81 to be installed alongside igrid.
78 82 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
79 83 Show the input object of the igrid browser as the window tile.
80 84 Show the object the cursor is on in the statusbar.
81 85
82 86 2007-03-15 Ville Vainio <vivainio@gmail.com>
83 87
84 88 * Extensions/ipy_stock_completers.py: Fixed exception
85 89 on mismatching quotes in %run completer. Patch by
86 90 JοΏ½rgen Stenarson. Closes #127.
87 91
88 92 2007-03-14 Ville Vainio <vivainio@gmail.com>
89 93
90 94 * Extensions/ext_rehashdir.py: Do not do auto_alias
91 95 in %rehashdir, it clobbers %store'd aliases.
92 96
93 97 * UserConfig/ipy_profile_sh.py: envpersist.py extension
94 98 (beefed up %env) imported for sh profile.
95 99
96 100 2007-03-10 Walter Doerwald <walter@livinglogic.de>
97 101
98 102 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
99 103 as the default browser.
100 104 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
101 105 As igrid displays all attributes it ever encounters, fetch() (which has
102 106 been renamed to _fetch()) doesn't have to recalculate the display attributes
103 107 every time a new item is fetched. This should speed up scrolling.
104 108
105 109 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
106 110
107 111 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
108 112 Schmolck's recently reported tab-completion bug (my previous one
109 113 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
110 114
111 115 2007-03-09 Walter Doerwald <walter@livinglogic.de>
112 116
113 117 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
114 118 Close help window if exiting igrid.
115 119
116 120 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
117 121
118 122 * IPython/Extensions/ipy_defaults.py: Check if readline is available
119 123 before calling functions from readline.
120 124
121 125 2007-03-02 Walter Doerwald <walter@livinglogic.de>
122 126
123 127 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
124 128 igrid is a wxPython-based display object for ipipe. If your system has
125 129 wx installed igrid will be the default display. Without wx ipipe falls
126 130 back to ibrowse (which needs curses). If no curses is installed ipipe
127 131 falls back to idump.
128 132
129 133 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
130 134
131 135 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
132 136 my changes from yesterday, they introduced bugs. Will reactivate
133 137 once I get a correct solution, which will be much easier thanks to
134 138 Dan Milstein's new prefilter test suite.
135 139
136 140 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
137 141
138 142 * IPython/iplib.py (split_user_input): fix input splitting so we
139 143 don't attempt attribute accesses on things that can't possibly be
140 144 valid Python attributes. After a bug report by Alex Schmolck.
141 145 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
142 146 %magic with explicit % prefix.
143 147
144 148 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
145 149
146 150 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
147 151 avoid a DeprecationWarning from GTK.
148 152
149 153 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
150 154
151 155 * IPython/genutils.py (clock): I modified clock() to return total
152 156 time, user+system. This is a more commonly needed metric. I also
153 157 introduced the new clocku/clocks to get only user/system time if
154 158 one wants those instead.
155 159
156 160 ***WARNING: API CHANGE*** clock() used to return only user time,
157 161 so if you want exactly the same results as before, use clocku
158 162 instead.
159 163
160 164 2007-02-22 Ville Vainio <vivainio@gmail.com>
161 165
162 166 * IPython/Extensions/ipy_p4.py: Extension for improved
163 167 p4 (perforce version control system) experience.
164 168 Adds %p4 magic with p4 command completion and
165 169 automatic -G argument (marshall output as python dict)
166 170
167 171 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
168 172
169 173 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
170 174 stop marks.
171 175 (ClearingMixin): a simple mixin to easily make a Demo class clear
172 176 the screen in between blocks and have empty marquees. The
173 177 ClearDemo and ClearIPDemo classes that use it are included.
174 178
175 179 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
176 180
177 181 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
178 182 protect against exceptions at Python shutdown time. Patch
179 183 sumbmitted to upstream.
180 184
181 185 2007-02-14 Walter Doerwald <walter@livinglogic.de>
182 186
183 187 * IPython/Extensions/ibrowse.py: If entering the first object level
184 188 (i.e. the object for which the browser has been started) fails,
185 189 now the error is raised directly (aborting the browser) instead of
186 190 running into an empty levels list later.
187 191
188 192 2007-02-03 Walter Doerwald <walter@livinglogic.de>
189 193
190 194 * IPython/Extensions/ipipe.py: Add an xrepr implementation
191 195 for the noitem object.
192 196
193 197 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
194 198
195 199 * IPython/completer.py (Completer.attr_matches): Fix small
196 200 tab-completion bug with Enthought Traits objects with units.
197 201 Thanks to a bug report by Tom Denniston
198 202 <tom.denniston-AT-alum.dartmouth.org>.
199 203
200 204 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
201 205
202 206 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
203 207 bug where only .ipy or .py would be completed. Once the first
204 208 argument to %run has been given, all completions are valid because
205 209 they are the arguments to the script, which may well be non-python
206 210 filenames.
207 211
208 212 * IPython/irunner.py (InteractiveRunner.run_source): major updates
209 213 to irunner to allow it to correctly support real doctesting of
210 214 out-of-process ipython code.
211 215
212 216 * IPython/Magic.py (magic_cd): Make the setting of the terminal
213 217 title an option (-noterm_title) because it completely breaks
214 218 doctesting.
215 219
216 220 * IPython/demo.py: fix IPythonDemo class that was not actually working.
217 221
218 222 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
219 223
220 224 * IPython/irunner.py (main): fix small bug where extensions were
221 225 not being correctly recognized.
222 226
223 227 2007-01-23 Walter Doerwald <walter@livinglogic.de>
224 228
225 229 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
226 230 a string containing a single line yields the string itself as the
227 231 only item.
228 232
229 233 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
230 234 object if it's the same as the one on the last level (This avoids
231 235 infinite recursion for one line strings).
232 236
233 237 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
234 238
235 239 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
236 240 all output streams before printing tracebacks. This ensures that
237 241 user output doesn't end up interleaved with traceback output.
238 242
239 243 2007-01-10 Ville Vainio <vivainio@gmail.com>
240 244
241 245 * Extensions/envpersist.py: Turbocharged %env that remembers
242 246 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
243 247 "%env VISUAL=jed".
244 248
245 249 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
246 250
247 251 * IPython/iplib.py (showtraceback): ensure that we correctly call
248 252 custom handlers in all cases (some with pdb were slipping through,
249 253 but I'm not exactly sure why).
250 254
251 255 * IPython/Debugger.py (Tracer.__init__): added new class to
252 256 support set_trace-like usage of IPython's enhanced debugger.
253 257
254 258 2006-12-24 Ville Vainio <vivainio@gmail.com>
255 259
256 260 * ipmaker.py: more informative message when ipy_user_conf
257 261 import fails (suggest running %upgrade).
258 262
259 263 * tools/run_ipy_in_profiler.py: Utility to see where
260 264 the time during IPython startup is spent.
261 265
262 266 2006-12-20 Ville Vainio <vivainio@gmail.com>
263 267
264 268 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
265 269
266 270 * ipapi.py: Add new ipapi method, expand_alias.
267 271
268 272 * Release.py: Bump up version to 0.7.4.svn
269 273
270 274 2006-12-17 Ville Vainio <vivainio@gmail.com>
271 275
272 276 * Extensions/jobctrl.py: Fixed &cmd arg arg...
273 277 to work properly on posix too
274 278
275 279 * Release.py: Update revnum (version is still just 0.7.3).
276 280
277 281 2006-12-15 Ville Vainio <vivainio@gmail.com>
278 282
279 283 * scripts/ipython_win_post_install: create ipython.py in
280 284 prefix + "/scripts".
281 285
282 286 * Release.py: Update version to 0.7.3.
283 287
284 288 2006-12-14 Ville Vainio <vivainio@gmail.com>
285 289
286 290 * scripts/ipython_win_post_install: Overwrite old shortcuts
287 291 if they already exist
288 292
289 293 * Release.py: release 0.7.3rc2
290 294
291 295 2006-12-13 Ville Vainio <vivainio@gmail.com>
292 296
293 297 * Branch and update Release.py for 0.7.3rc1
294 298
295 299 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
296 300
297 301 * IPython/Shell.py (IPShellWX): update for current WX naming
298 302 conventions, to avoid a deprecation warning with current WX
299 303 versions. Thanks to a report by Danny Shevitz.
300 304
301 305 2006-12-12 Ville Vainio <vivainio@gmail.com>
302 306
303 307 * ipmaker.py: apply david cournapeau's patch to make
304 308 import_some work properly even when ipythonrc does
305 309 import_some on empty list (it was an old bug!).
306 310
307 311 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
308 312 Add deprecation note to ipythonrc and a url to wiki
309 313 in ipy_user_conf.py
310 314
311 315
312 316 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
313 317 as if it was typed on IPython command prompt, i.e.
314 318 as IPython script.
315 319
316 320 * example-magic.py, magic_grepl.py: remove outdated examples
317 321
318 322 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
319 323
320 324 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
321 325 is called before any exception has occurred.
322 326
323 327 2006-12-08 Ville Vainio <vivainio@gmail.com>
324 328
325 329 * Extensions/ipy_stock_completers.py: fix cd completer
326 330 to translate /'s to \'s again.
327 331
328 332 * completer.py: prevent traceback on file completions w/
329 333 backslash.
330 334
331 335 * Release.py: Update release number to 0.7.3b3 for release
332 336
333 337 2006-12-07 Ville Vainio <vivainio@gmail.com>
334 338
335 339 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
336 340 while executing external code. Provides more shell-like behaviour
337 341 and overall better response to ctrl + C / ctrl + break.
338 342
339 343 * tools/make_tarball.py: new script to create tarball straight from svn
340 344 (setup.py sdist doesn't work on win32).
341 345
342 346 * Extensions/ipy_stock_completers.py: fix cd completer to give up
343 347 on dirnames with spaces and use the default completer instead.
344 348
345 349 * Revision.py: Change version to 0.7.3b2 for release.
346 350
347 351 2006-12-05 Ville Vainio <vivainio@gmail.com>
348 352
349 353 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
350 354 pydb patch 4 (rm debug printing, py 2.5 checking)
351 355
352 356 2006-11-30 Walter Doerwald <walter@livinglogic.de>
353 357 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
354 358 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
355 359 "refreshfind" (mapped to "R") does the same but tries to go back to the same
356 360 object the cursor was on before the refresh. The command "markrange" is
357 361 mapped to "%" now.
358 362 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
359 363
360 364 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
361 365
362 366 * IPython/Magic.py (magic_debug): new %debug magic to activate the
363 367 interactive debugger on the last traceback, without having to call
364 368 %pdb and rerun your code. Made minor changes in various modules,
365 369 should automatically recognize pydb if available.
366 370
367 371 2006-11-28 Ville Vainio <vivainio@gmail.com>
368 372
369 373 * completer.py: If the text start with !, show file completions
370 374 properly. This helps when trying to complete command name
371 375 for shell escapes.
372 376
373 377 2006-11-27 Ville Vainio <vivainio@gmail.com>
374 378
375 379 * ipy_stock_completers.py: bzr completer submitted by Stefan van
376 380 der Walt. Clean up svn and hg completers by using a common
377 381 vcs_completer.
378 382
379 383 2006-11-26 Ville Vainio <vivainio@gmail.com>
380 384
381 385 * Remove ipconfig and %config; you should use _ip.options structure
382 386 directly instead!
383 387
384 388 * genutils.py: add wrap_deprecated function for deprecating callables
385 389
386 390 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
387 391 _ip.system instead. ipalias is redundant.
388 392
389 393 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
390 394 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
391 395 explicit.
392 396
393 397 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
394 398 completer. Try it by entering 'hg ' and pressing tab.
395 399
396 400 * macro.py: Give Macro a useful __repr__ method
397 401
398 402 * Magic.py: %whos abbreviates the typename of Macro for brevity.
399 403
400 404 2006-11-24 Walter Doerwald <walter@livinglogic.de>
401 405 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
402 406 we don't get a duplicate ipipe module, where registration of the xrepr
403 407 implementation for Text is useless.
404 408
405 409 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
406 410
407 411 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
408 412
409 413 2006-11-24 Ville Vainio <vivainio@gmail.com>
410 414
411 415 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
412 416 try to use "cProfile" instead of the slower pure python
413 417 "profile"
414 418
415 419 2006-11-23 Ville Vainio <vivainio@gmail.com>
416 420
417 421 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
418 422 Qt+IPython+Designer link in documentation.
419 423
420 424 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
421 425 correct Pdb object to %pydb.
422 426
423 427
424 428 2006-11-22 Walter Doerwald <walter@livinglogic.de>
425 429 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
426 430 generic xrepr(), otherwise the list implementation would kick in.
427 431
428 432 2006-11-21 Ville Vainio <vivainio@gmail.com>
429 433
430 434 * upgrade_dir.py: Now actually overwrites a nonmodified user file
431 435 with one from UserConfig.
432 436
433 437 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
434 438 it was missing which broke the sh profile.
435 439
436 440 * completer.py: file completer now uses explicit '/' instead
437 441 of os.path.join, expansion of 'foo' was broken on win32
438 442 if there was one directory with name 'foobar'.
439 443
440 444 * A bunch of patches from Kirill Smelkov:
441 445
442 446 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
443 447
444 448 * [patch 7/9] Implement %page -r (page in raw mode) -
445 449
446 450 * [patch 5/9] ScientificPython webpage has moved
447 451
448 452 * [patch 4/9] The manual mentions %ds, should be %dhist
449 453
450 454 * [patch 3/9] Kill old bits from %prun doc.
451 455
452 456 * [patch 1/9] Fix typos here and there.
453 457
454 458 2006-11-08 Ville Vainio <vivainio@gmail.com>
455 459
456 460 * completer.py (attr_matches): catch all exceptions raised
457 461 by eval of expr with dots.
458 462
459 463 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
460 464
461 465 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
462 466 input if it starts with whitespace. This allows you to paste
463 467 indented input from any editor without manually having to type in
464 468 the 'if 1:', which is convenient when working interactively.
465 469 Slightly modifed version of a patch by Bo Peng
466 470 <bpeng-AT-rice.edu>.
467 471
468 472 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
469 473
470 474 * IPython/irunner.py (main): modified irunner so it automatically
471 475 recognizes the right runner to use based on the extension (.py for
472 476 python, .ipy for ipython and .sage for sage).
473 477
474 478 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
475 479 visible in ipapi as ip.config(), to programatically control the
476 480 internal rc object. There's an accompanying %config magic for
477 481 interactive use, which has been enhanced to match the
478 482 funtionality in ipconfig.
479 483
480 484 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
481 485 so it's not just a toggle, it now takes an argument. Add support
482 486 for a customizable header when making system calls, as the new
483 487 system_header variable in the ipythonrc file.
484 488
485 489 2006-11-03 Walter Doerwald <walter@livinglogic.de>
486 490
487 491 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
488 492 generic functions (using Philip J. Eby's simplegeneric package).
489 493 This makes it possible to customize the display of third-party classes
490 494 without having to monkeypatch them. xiter() no longer supports a mode
491 495 argument and the XMode class has been removed. The same functionality can
492 496 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
493 497 One consequence of the switch to generic functions is that xrepr() and
494 498 xattrs() implementation must define the default value for the mode
495 499 argument themselves and xattrs() implementations must return real
496 500 descriptors.
497 501
498 502 * IPython/external: This new subpackage will contain all third-party
499 503 packages that are bundled with IPython. (The first one is simplegeneric).
500 504
501 505 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
502 506 directory which as been dropped in r1703.
503 507
504 508 * IPython/Extensions/ipipe.py (iless): Fixed.
505 509
506 510 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
507 511
508 512 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
509 513
510 514 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
511 515 handling in variable expansion so that shells and magics recognize
512 516 function local scopes correctly. Bug reported by Brian.
513 517
514 518 * scripts/ipython: remove the very first entry in sys.path which
515 519 Python auto-inserts for scripts, so that sys.path under IPython is
516 520 as similar as possible to that under plain Python.
517 521
518 522 * IPython/completer.py (IPCompleter.file_matches): Fix
519 523 tab-completion so that quotes are not closed unless the completion
520 524 is unambiguous. After a request by Stefan. Minor cleanups in
521 525 ipy_stock_completers.
522 526
523 527 2006-11-02 Ville Vainio <vivainio@gmail.com>
524 528
525 529 * ipy_stock_completers.py: Add %run and %cd completers.
526 530
527 531 * completer.py: Try running custom completer for both
528 532 "foo" and "%foo" if the command is just "foo". Ignore case
529 533 when filtering possible completions.
530 534
531 535 * UserConfig/ipy_user_conf.py: install stock completers as default
532 536
533 537 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
534 538 simplified readline history save / restore through a wrapper
535 539 function
536 540
537 541
538 542 2006-10-31 Ville Vainio <vivainio@gmail.com>
539 543
540 544 * strdispatch.py, completer.py, ipy_stock_completers.py:
541 545 Allow str_key ("command") in completer hooks. Implement
542 546 trivial completer for 'import' (stdlib modules only). Rename
543 547 ipy_linux_package_managers.py to ipy_stock_completers.py.
544 548 SVN completer.
545 549
546 550 * Extensions/ledit.py: %magic line editor for easily and
547 551 incrementally manipulating lists of strings. The magic command
548 552 name is %led.
549 553
550 554 2006-10-30 Ville Vainio <vivainio@gmail.com>
551 555
552 556 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
553 557 Bernsteins's patches for pydb integration.
554 558 http://bashdb.sourceforge.net/pydb/
555 559
556 560 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
557 561 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
558 562 custom completer hook to allow the users to implement their own
559 563 completers. See ipy_linux_package_managers.py for example. The
560 564 hook name is 'complete_command'.
561 565
562 566 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
563 567
564 568 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
565 569 Numeric leftovers.
566 570
567 571 * ipython.el (py-execute-region): apply Stefan's patch to fix
568 572 garbled results if the python shell hasn't been previously started.
569 573
570 574 * IPython/genutils.py (arg_split): moved to genutils, since it's a
571 575 pretty generic function and useful for other things.
572 576
573 577 * IPython/OInspect.py (getsource): Add customizable source
574 578 extractor. After a request/patch form W. Stein (SAGE).
575 579
576 580 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
577 581 window size to a more reasonable value from what pexpect does,
578 582 since their choice causes wrapping bugs with long input lines.
579 583
580 584 2006-10-28 Ville Vainio <vivainio@gmail.com>
581 585
582 586 * Magic.py (%run): Save and restore the readline history from
583 587 file around %run commands to prevent side effects from
584 588 %runned programs that might use readline (e.g. pydb).
585 589
586 590 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
587 591 invoking the pydb enhanced debugger.
588 592
589 593 2006-10-23 Walter Doerwald <walter@livinglogic.de>
590 594
591 595 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
592 596 call the base class method and propagate the return value to
593 597 ifile. This is now done by path itself.
594 598
595 599 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
596 600
597 601 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
598 602 api: set_crash_handler(), to expose the ability to change the
599 603 internal crash handler.
600 604
601 605 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
602 606 the various parameters of the crash handler so that apps using
603 607 IPython as their engine can customize crash handling. Ipmlemented
604 608 at the request of SAGE.
605 609
606 610 2006-10-14 Ville Vainio <vivainio@gmail.com>
607 611
608 612 * Magic.py, ipython.el: applied first "safe" part of Rocky
609 613 Bernstein's patch set for pydb integration.
610 614
611 615 * Magic.py (%unalias, %alias): %store'd aliases can now be
612 616 removed with '%unalias'. %alias w/o args now shows most
613 617 interesting (stored / manually defined) aliases last
614 618 where they catch the eye w/o scrolling.
615 619
616 620 * Magic.py (%rehashx), ext_rehashdir.py: files with
617 621 'py' extension are always considered executable, even
618 622 when not in PATHEXT environment variable.
619 623
620 624 2006-10-12 Ville Vainio <vivainio@gmail.com>
621 625
622 626 * jobctrl.py: Add new "jobctrl" extension for spawning background
623 627 processes with "&find /". 'import jobctrl' to try it out. Requires
624 628 'subprocess' module, standard in python 2.4+.
625 629
626 630 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
627 631 so if foo -> bar and bar -> baz, then foo -> baz.
628 632
629 633 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
630 634
631 635 * IPython/Magic.py (Magic.parse_options): add a new posix option
632 636 to allow parsing of input args in magics that doesn't strip quotes
633 637 (if posix=False). This also closes %timeit bug reported by
634 638 Stefan.
635 639
636 640 2006-10-03 Ville Vainio <vivainio@gmail.com>
637 641
638 642 * iplib.py (raw_input, interact): Return ValueError catching for
639 643 raw_input. Fixes infinite loop for sys.stdin.close() or
640 644 sys.stdout.close().
641 645
642 646 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
643 647
644 648 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
645 649 to help in handling doctests. irunner is now pretty useful for
646 650 running standalone scripts and simulate a full interactive session
647 651 in a format that can be then pasted as a doctest.
648 652
649 653 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
650 654 on top of the default (useless) ones. This also fixes the nasty
651 655 way in which 2.5's Quitter() exits (reverted [1785]).
652 656
653 657 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
654 658 2.5.
655 659
656 660 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
657 661 color scheme is updated as well when color scheme is changed
658 662 interactively.
659 663
660 664 2006-09-27 Ville Vainio <vivainio@gmail.com>
661 665
662 666 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
663 667 infinite loop and just exit. It's a hack, but will do for a while.
664 668
665 669 2006-08-25 Walter Doerwald <walter@livinglogic.de>
666 670
667 671 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
668 672 the constructor, this makes it possible to get a list of only directories
669 673 or only files.
670 674
671 675 2006-08-12 Ville Vainio <vivainio@gmail.com>
672 676
673 677 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
674 678 they broke unittest
675 679
676 680 2006-08-11 Ville Vainio <vivainio@gmail.com>
677 681
678 682 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
679 683 by resolving issue properly, i.e. by inheriting FakeModule
680 684 from types.ModuleType. Pickling ipython interactive data
681 685 should still work as usual (testing appreciated).
682 686
683 687 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
684 688
685 689 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
686 690 running under python 2.3 with code from 2.4 to fix a bug with
687 691 help(). Reported by the Debian maintainers, Norbert Tretkowski
688 692 <norbert-AT-tretkowski.de> and Alexandre Fayolle
689 693 <afayolle-AT-debian.org>.
690 694
691 695 2006-08-04 Walter Doerwald <walter@livinglogic.de>
692 696
693 697 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
694 698 (which was displaying "quit" twice).
695 699
696 700 2006-07-28 Walter Doerwald <walter@livinglogic.de>
697 701
698 702 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
699 703 the mode argument).
700 704
701 705 2006-07-27 Walter Doerwald <walter@livinglogic.de>
702 706
703 707 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
704 708 not running under IPython.
705 709
706 710 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
707 711 and make it iterable (iterating over the attribute itself). Add two new
708 712 magic strings for __xattrs__(): If the string starts with "-", the attribute
709 713 will not be displayed in ibrowse's detail view (but it can still be
710 714 iterated over). This makes it possible to add attributes that are large
711 715 lists or generator methods to the detail view. Replace magic attribute names
712 716 and _attrname() and _getattr() with "descriptors": For each type of magic
713 717 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
714 718 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
715 719 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
716 720 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
717 721 are still supported.
718 722
719 723 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
720 724 fails in ibrowse.fetch(), the exception object is added as the last item
721 725 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
722 726 a generator throws an exception midway through execution.
723 727
724 728 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
725 729 encoding into methods.
726 730
727 731 2006-07-26 Ville Vainio <vivainio@gmail.com>
728 732
729 733 * iplib.py: history now stores multiline input as single
730 734 history entries. Patch by Jorgen Cederlof.
731 735
732 736 2006-07-18 Walter Doerwald <walter@livinglogic.de>
733 737
734 738 * IPython/Extensions/ibrowse.py: Make cursor visible over
735 739 non existing attributes.
736 740
737 741 2006-07-14 Walter Doerwald <walter@livinglogic.de>
738 742
739 743 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
740 744 error output of the running command doesn't mess up the screen.
741 745
742 746 2006-07-13 Walter Doerwald <walter@livinglogic.de>
743 747
744 748 * IPython/Extensions/ipipe.py (isort): Make isort usable without
745 749 argument. This sorts the items themselves.
746 750
747 751 2006-07-12 Walter Doerwald <walter@livinglogic.de>
748 752
749 753 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
750 754 Compile expression strings into code objects. This should speed
751 755 up ifilter and friends somewhat.
752 756
753 757 2006-07-08 Ville Vainio <vivainio@gmail.com>
754 758
755 759 * Magic.py: %cpaste now strips > from the beginning of lines
756 760 to ease pasting quoted code from emails. Contributed by
757 761 Stefan van der Walt.
758 762
759 763 2006-06-29 Ville Vainio <vivainio@gmail.com>
760 764
761 765 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
762 766 mode, patch contributed by Darren Dale. NEEDS TESTING!
763 767
764 768 2006-06-28 Walter Doerwald <walter@livinglogic.de>
765 769
766 770 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
767 771 a blue background. Fix fetching new display rows when the browser
768 772 scrolls more than a screenful (e.g. by using the goto command).
769 773
770 774 2006-06-27 Ville Vainio <vivainio@gmail.com>
771 775
772 776 * Magic.py (_inspect, _ofind) Apply David Huard's
773 777 patch for displaying the correct docstring for 'property'
774 778 attributes.
775 779
776 780 2006-06-23 Walter Doerwald <walter@livinglogic.de>
777 781
778 782 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
779 783 commands into the methods implementing them.
780 784
781 785 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
782 786
783 787 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
784 788 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
785 789 autoindent support was authored by Jin Liu.
786 790
787 791 2006-06-22 Walter Doerwald <walter@livinglogic.de>
788 792
789 793 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
790 794 for keymaps with a custom class that simplifies handling.
791 795
792 796 2006-06-19 Walter Doerwald <walter@livinglogic.de>
793 797
794 798 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
795 799 resizing. This requires Python 2.5 to work.
796 800
797 801 2006-06-16 Walter Doerwald <walter@livinglogic.de>
798 802
799 803 * IPython/Extensions/ibrowse.py: Add two new commands to
800 804 ibrowse: "hideattr" (mapped to "h") hides the attribute under
801 805 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
802 806 attributes again. Remapped the help command to "?". Display
803 807 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
804 808 as keys for the "home" and "end" commands. Add three new commands
805 809 to the input mode for "find" and friends: "delend" (CTRL-K)
806 810 deletes to the end of line. "incsearchup" searches upwards in the
807 811 command history for an input that starts with the text before the cursor.
808 812 "incsearchdown" does the same downwards. Removed a bogus mapping of
809 813 the x key to "delete".
810 814
811 815 2006-06-15 Ville Vainio <vivainio@gmail.com>
812 816
813 817 * iplib.py, hooks.py: Added new generate_prompt hook that can be
814 818 used to create prompts dynamically, instead of the "old" way of
815 819 assigning "magic" strings to prompt_in1 and prompt_in2. The old
816 820 way still works (it's invoked by the default hook), of course.
817 821
818 822 * Prompts.py: added generate_output_prompt hook for altering output
819 823 prompt
820 824
821 825 * Release.py: Changed version string to 0.7.3.svn.
822 826
823 827 2006-06-15 Walter Doerwald <walter@livinglogic.de>
824 828
825 829 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
826 830 the call to fetch() always tries to fetch enough data for at least one
827 831 full screen. This makes it possible to simply call moveto(0,0,True) in
828 832 the constructor. Fix typos and removed the obsolete goto attribute.
829 833
830 834 2006-06-12 Ville Vainio <vivainio@gmail.com>
831 835
832 836 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
833 837 allowing $variable interpolation within multiline statements,
834 838 though so far only with "sh" profile for a testing period.
835 839 The patch also enables splitting long commands with \ but it
836 840 doesn't work properly yet.
837 841
838 842 2006-06-12 Walter Doerwald <walter@livinglogic.de>
839 843
840 844 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
841 845 input history and the position of the cursor in the input history for
842 846 the find, findbackwards and goto command.
843 847
844 848 2006-06-10 Walter Doerwald <walter@livinglogic.de>
845 849
846 850 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
847 851 implements the basic functionality of browser commands that require
848 852 input. Reimplement the goto, find and findbackwards commands as
849 853 subclasses of _CommandInput. Add an input history and keymaps to those
850 854 commands. Add "\r" as a keyboard shortcut for the enterdefault and
851 855 execute commands.
852 856
853 857 2006-06-07 Ville Vainio <vivainio@gmail.com>
854 858
855 859 * iplib.py: ipython mybatch.ipy exits ipython immediately after
856 860 running the batch files instead of leaving the session open.
857 861
858 862 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
859 863
860 864 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
861 865 the original fix was incomplete. Patch submitted by W. Maier.
862 866
863 867 2006-06-07 Ville Vainio <vivainio@gmail.com>
864 868
865 869 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
866 870 Confirmation prompts can be supressed by 'quiet' option.
867 871 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
868 872
869 873 2006-06-06 *** Released version 0.7.2
870 874
871 875 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
872 876
873 877 * IPython/Release.py (version): Made 0.7.2 final for release.
874 878 Repo tagged and release cut.
875 879
876 880 2006-06-05 Ville Vainio <vivainio@gmail.com>
877 881
878 882 * Magic.py (magic_rehashx): Honor no_alias list earlier in
879 883 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
880 884
881 885 * upgrade_dir.py: try import 'path' module a bit harder
882 886 (for %upgrade)
883 887
884 888 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
885 889
886 890 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
887 891 instead of looping 20 times.
888 892
889 893 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
890 894 correctly at initialization time. Bug reported by Krishna Mohan
891 895 Gundu <gkmohan-AT-gmail.com> on the user list.
892 896
893 897 * IPython/Release.py (version): Mark 0.7.2 version to start
894 898 testing for release on 06/06.
895 899
896 900 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
897 901
898 902 * scripts/irunner: thin script interface so users don't have to
899 903 find the module and call it as an executable, since modules rarely
900 904 live in people's PATH.
901 905
902 906 * IPython/irunner.py (InteractiveRunner.__init__): added
903 907 delaybeforesend attribute to control delays with newer versions of
904 908 pexpect. Thanks to detailed help from pexpect's author, Noah
905 909 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
906 910 correctly (it works in NoColor mode).
907 911
908 912 * IPython/iplib.py (handle_normal): fix nasty crash reported on
909 913 SAGE list, from improper log() calls.
910 914
911 915 2006-05-31 Ville Vainio <vivainio@gmail.com>
912 916
913 917 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
914 918 with args in parens to work correctly with dirs that have spaces.
915 919
916 920 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
917 921
918 922 * IPython/Logger.py (Logger.logstart): add option to log raw input
919 923 instead of the processed one. A -r flag was added to the
920 924 %logstart magic used for controlling logging.
921 925
922 926 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
923 927
924 928 * IPython/iplib.py (InteractiveShell.__init__): add check for the
925 929 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
926 930 recognize the option. After a bug report by Will Maier. This
927 931 closes #64 (will do it after confirmation from W. Maier).
928 932
929 933 * IPython/irunner.py: New module to run scripts as if manually
930 934 typed into an interactive environment, based on pexpect. After a
931 935 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
932 936 ipython-user list. Simple unittests in the tests/ directory.
933 937
934 938 * tools/release: add Will Maier, OpenBSD port maintainer, to
935 939 recepients list. We are now officially part of the OpenBSD ports:
936 940 http://www.openbsd.org/ports.html ! Many thanks to Will for the
937 941 work.
938 942
939 943 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
940 944
941 945 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
942 946 so that it doesn't break tkinter apps.
943 947
944 948 * IPython/iplib.py (_prefilter): fix bug where aliases would
945 949 shadow variables when autocall was fully off. Reported by SAGE
946 950 author William Stein.
947 951
948 952 * IPython/OInspect.py (Inspector.__init__): add a flag to control
949 953 at what detail level strings are computed when foo? is requested.
950 954 This allows users to ask for example that the string form of an
951 955 object is only computed when foo?? is called, or even never, by
952 956 setting the object_info_string_level >= 2 in the configuration
953 957 file. This new option has been added and documented. After a
954 958 request by SAGE to be able to control the printing of very large
955 959 objects more easily.
956 960
957 961 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
958 962
959 963 * IPython/ipmaker.py (make_IPython): remove the ipython call path
960 964 from sys.argv, to be 100% consistent with how Python itself works
961 965 (as seen for example with python -i file.py). After a bug report
962 966 by Jeffrey Collins.
963 967
964 968 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
965 969 nasty bug which was preventing custom namespaces with -pylab,
966 970 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
967 971 compatibility (long gone from mpl).
968 972
969 973 * IPython/ipapi.py (make_session): name change: create->make. We
970 974 use make in other places (ipmaker,...), it's shorter and easier to
971 975 type and say, etc. I'm trying to clean things before 0.7.2 so
972 976 that I can keep things stable wrt to ipapi in the chainsaw branch.
973 977
974 978 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
975 979 python-mode recognizes our debugger mode. Add support for
976 980 autoindent inside (X)emacs. After a patch sent in by Jin Liu
977 981 <m.liu.jin-AT-gmail.com> originally written by
978 982 doxgen-AT-newsmth.net (with minor modifications for xemacs
979 983 compatibility)
980 984
981 985 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
982 986 tracebacks when walking the stack so that the stack tracking system
983 987 in emacs' python-mode can identify the frames correctly.
984 988
985 989 * IPython/ipmaker.py (make_IPython): make the internal (and
986 990 default config) autoedit_syntax value false by default. Too many
987 991 users have complained to me (both on and off-list) about problems
988 992 with this option being on by default, so I'm making it default to
989 993 off. It can still be enabled by anyone via the usual mechanisms.
990 994
991 995 * IPython/completer.py (Completer.attr_matches): add support for
992 996 PyCrust-style _getAttributeNames magic method. Patch contributed
993 997 by <mscott-AT-goldenspud.com>. Closes #50.
994 998
995 999 * IPython/iplib.py (InteractiveShell.__init__): remove the
996 1000 deletion of exit/quit from __builtin__, which can break
997 1001 third-party tools like the Zope debugging console. The
998 1002 %exit/%quit magics remain. In general, it's probably a good idea
999 1003 not to delete anything from __builtin__, since we never know what
1000 1004 that will break. In any case, python now (for 2.5) will support
1001 1005 'real' exit/quit, so this issue is moot. Closes #55.
1002 1006
1003 1007 * IPython/genutils.py (with_obj): rename the 'with' function to
1004 1008 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1005 1009 becomes a language keyword. Closes #53.
1006 1010
1007 1011 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1008 1012 __file__ attribute to this so it fools more things into thinking
1009 1013 it is a real module. Closes #59.
1010 1014
1011 1015 * IPython/Magic.py (magic_edit): add -n option to open the editor
1012 1016 at a specific line number. After a patch by Stefan van der Walt.
1013 1017
1014 1018 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1015 1019
1016 1020 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1017 1021 reason the file could not be opened. After automatic crash
1018 1022 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1019 1023 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1020 1024 (_should_recompile): Don't fire editor if using %bg, since there
1021 1025 is no file in the first place. From the same report as above.
1022 1026 (raw_input): protect against faulty third-party prefilters. After
1023 1027 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1024 1028 while running under SAGE.
1025 1029
1026 1030 2006-05-23 Ville Vainio <vivainio@gmail.com>
1027 1031
1028 1032 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1029 1033 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1030 1034 now returns None (again), unless dummy is specifically allowed by
1031 1035 ipapi.get(allow_dummy=True).
1032 1036
1033 1037 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1034 1038
1035 1039 * IPython: remove all 2.2-compatibility objects and hacks from
1036 1040 everywhere, since we only support 2.3 at this point. Docs
1037 1041 updated.
1038 1042
1039 1043 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1040 1044 Anything requiring extra validation can be turned into a Python
1041 1045 property in the future. I used a property for the db one b/c
1042 1046 there was a nasty circularity problem with the initialization
1043 1047 order, which right now I don't have time to clean up.
1044 1048
1045 1049 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1046 1050 another locking bug reported by Jorgen. I'm not 100% sure though,
1047 1051 so more testing is needed...
1048 1052
1049 1053 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1050 1054
1051 1055 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1052 1056 local variables from any routine in user code (typically executed
1053 1057 with %run) directly into the interactive namespace. Very useful
1054 1058 when doing complex debugging.
1055 1059 (IPythonNotRunning): Changed the default None object to a dummy
1056 1060 whose attributes can be queried as well as called without
1057 1061 exploding, to ease writing code which works transparently both in
1058 1062 and out of ipython and uses some of this API.
1059 1063
1060 1064 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1061 1065
1062 1066 * IPython/hooks.py (result_display): Fix the fact that our display
1063 1067 hook was using str() instead of repr(), as the default python
1064 1068 console does. This had gone unnoticed b/c it only happened if
1065 1069 %Pprint was off, but the inconsistency was there.
1066 1070
1067 1071 2006-05-15 Ville Vainio <vivainio@gmail.com>
1068 1072
1069 1073 * Oinspect.py: Only show docstring for nonexisting/binary files
1070 1074 when doing object??, closing ticket #62
1071 1075
1072 1076 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1073 1077
1074 1078 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1075 1079 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1076 1080 was being released in a routine which hadn't checked if it had
1077 1081 been the one to acquire it.
1078 1082
1079 1083 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1080 1084
1081 1085 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1082 1086
1083 1087 2006-04-11 Ville Vainio <vivainio@gmail.com>
1084 1088
1085 1089 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1086 1090 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1087 1091 prefilters, allowing stuff like magics and aliases in the file.
1088 1092
1089 1093 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1090 1094 added. Supported now are "%clear in" and "%clear out" (clear input and
1091 1095 output history, respectively). Also fixed CachedOutput.flush to
1092 1096 properly flush the output cache.
1093 1097
1094 1098 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1095 1099 half-success (and fail explicitly).
1096 1100
1097 1101 2006-03-28 Ville Vainio <vivainio@gmail.com>
1098 1102
1099 1103 * iplib.py: Fix quoting of aliases so that only argless ones
1100 1104 are quoted
1101 1105
1102 1106 2006-03-28 Ville Vainio <vivainio@gmail.com>
1103 1107
1104 1108 * iplib.py: Quote aliases with spaces in the name.
1105 1109 "c:\program files\blah\bin" is now legal alias target.
1106 1110
1107 1111 * ext_rehashdir.py: Space no longer allowed as arg
1108 1112 separator, since space is legal in path names.
1109 1113
1110 1114 2006-03-16 Ville Vainio <vivainio@gmail.com>
1111 1115
1112 1116 * upgrade_dir.py: Take path.py from Extensions, correcting
1113 1117 %upgrade magic
1114 1118
1115 1119 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1116 1120
1117 1121 * hooks.py: Only enclose editor binary in quotes if legal and
1118 1122 necessary (space in the name, and is an existing file). Fixes a bug
1119 1123 reported by Zachary Pincus.
1120 1124
1121 1125 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1122 1126
1123 1127 * Manual: thanks to a tip on proper color handling for Emacs, by
1124 1128 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1125 1129
1126 1130 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1127 1131 by applying the provided patch. Thanks to Liu Jin
1128 1132 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1129 1133 XEmacs/Linux, I'm trusting the submitter that it actually helps
1130 1134 under win32/GNU Emacs. Will revisit if any problems are reported.
1131 1135
1132 1136 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1133 1137
1134 1138 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1135 1139 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1136 1140
1137 1141 2006-03-12 Ville Vainio <vivainio@gmail.com>
1138 1142
1139 1143 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1140 1144 Torsten Marek.
1141 1145
1142 1146 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1143 1147
1144 1148 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1145 1149 line ranges works again.
1146 1150
1147 1151 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1148 1152
1149 1153 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1150 1154 and friends, after a discussion with Zach Pincus on ipython-user.
1151 1155 I'm not 100% sure, but after thinking about it quite a bit, it may
1152 1156 be OK. Testing with the multithreaded shells didn't reveal any
1153 1157 problems, but let's keep an eye out.
1154 1158
1155 1159 In the process, I fixed a few things which were calling
1156 1160 self.InteractiveTB() directly (like safe_execfile), which is a
1157 1161 mistake: ALL exception reporting should be done by calling
1158 1162 self.showtraceback(), which handles state and tab-completion and
1159 1163 more.
1160 1164
1161 1165 2006-03-01 Ville Vainio <vivainio@gmail.com>
1162 1166
1163 1167 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1164 1168 To use, do "from ipipe import *".
1165 1169
1166 1170 2006-02-24 Ville Vainio <vivainio@gmail.com>
1167 1171
1168 1172 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1169 1173 "cleanly" and safely than the older upgrade mechanism.
1170 1174
1171 1175 2006-02-21 Ville Vainio <vivainio@gmail.com>
1172 1176
1173 1177 * Magic.py: %save works again.
1174 1178
1175 1179 2006-02-15 Ville Vainio <vivainio@gmail.com>
1176 1180
1177 1181 * Magic.py: %Pprint works again
1178 1182
1179 1183 * Extensions/ipy_sane_defaults.py: Provide everything provided
1180 1184 in default ipythonrc, to make it possible to have a completely empty
1181 1185 ipythonrc (and thus completely rc-file free configuration)
1182 1186
1183 1187 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1184 1188
1185 1189 * IPython/hooks.py (editor): quote the call to the editor command,
1186 1190 to allow commands with spaces in them. Problem noted by watching
1187 1191 Ian Oswald's video about textpad under win32 at
1188 1192 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1189 1193
1190 1194 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1191 1195 describing magics (we haven't used @ for a loong time).
1192 1196
1193 1197 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1194 1198 contributed by marienz to close
1195 1199 http://www.scipy.net/roundup/ipython/issue53.
1196 1200
1197 1201 2006-02-10 Ville Vainio <vivainio@gmail.com>
1198 1202
1199 1203 * genutils.py: getoutput now works in win32 too
1200 1204
1201 1205 * completer.py: alias and magic completion only invoked
1202 1206 at the first "item" in the line, to avoid "cd %store"
1203 1207 nonsense.
1204 1208
1205 1209 2006-02-09 Ville Vainio <vivainio@gmail.com>
1206 1210
1207 1211 * test/*: Added a unit testing framework (finally).
1208 1212 '%run runtests.py' to run test_*.
1209 1213
1210 1214 * ipapi.py: Exposed runlines and set_custom_exc
1211 1215
1212 1216 2006-02-07 Ville Vainio <vivainio@gmail.com>
1213 1217
1214 1218 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1215 1219 instead use "f(1 2)" as before.
1216 1220
1217 1221 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1218 1222
1219 1223 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1220 1224 facilities, for demos processed by the IPython input filter
1221 1225 (IPythonDemo), and for running a script one-line-at-a-time as a
1222 1226 demo, both for pure Python (LineDemo) and for IPython-processed
1223 1227 input (IPythonLineDemo). After a request by Dave Kohel, from the
1224 1228 SAGE team.
1225 1229 (Demo.edit): added an edit() method to the demo objects, to edit
1226 1230 the in-memory copy of the last executed block.
1227 1231
1228 1232 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1229 1233 processing to %edit, %macro and %save. These commands can now be
1230 1234 invoked on the unprocessed input as it was typed by the user
1231 1235 (without any prefilters applied). After requests by the SAGE team
1232 1236 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1233 1237
1234 1238 2006-02-01 Ville Vainio <vivainio@gmail.com>
1235 1239
1236 1240 * setup.py, eggsetup.py: easy_install ipython==dev works
1237 1241 correctly now (on Linux)
1238 1242
1239 1243 * ipy_user_conf,ipmaker: user config changes, removed spurious
1240 1244 warnings
1241 1245
1242 1246 * iplib: if rc.banner is string, use it as is.
1243 1247
1244 1248 * Magic: %pycat accepts a string argument and pages it's contents.
1245 1249
1246 1250
1247 1251 2006-01-30 Ville Vainio <vivainio@gmail.com>
1248 1252
1249 1253 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1250 1254 Now %store and bookmarks work through PickleShare, meaning that
1251 1255 concurrent access is possible and all ipython sessions see the
1252 1256 same database situation all the time, instead of snapshot of
1253 1257 the situation when the session was started. Hence, %bookmark
1254 1258 results are immediately accessible from othes sessions. The database
1255 1259 is also available for use by user extensions. See:
1256 1260 http://www.python.org/pypi/pickleshare
1257 1261
1258 1262 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1259 1263
1260 1264 * aliases can now be %store'd
1261 1265
1262 1266 * path.py moved to Extensions so that pickleshare does not need
1263 1267 IPython-specific import. Extensions added to pythonpath right
1264 1268 at __init__.
1265 1269
1266 1270 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1267 1271 called with _ip.system and the pre-transformed command string.
1268 1272
1269 1273 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1270 1274
1271 1275 * IPython/iplib.py (interact): Fix that we were not catching
1272 1276 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1273 1277 logic here had to change, but it's fixed now.
1274 1278
1275 1279 2006-01-29 Ville Vainio <vivainio@gmail.com>
1276 1280
1277 1281 * iplib.py: Try to import pyreadline on Windows.
1278 1282
1279 1283 2006-01-27 Ville Vainio <vivainio@gmail.com>
1280 1284
1281 1285 * iplib.py: Expose ipapi as _ip in builtin namespace.
1282 1286 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1283 1287 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1284 1288 syntax now produce _ip.* variant of the commands.
1285 1289
1286 1290 * "_ip.options().autoedit_syntax = 2" automatically throws
1287 1291 user to editor for syntax error correction without prompting.
1288 1292
1289 1293 2006-01-27 Ville Vainio <vivainio@gmail.com>
1290 1294
1291 1295 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1292 1296 'ipython' at argv[0]) executed through command line.
1293 1297 NOTE: this DEPRECATES calling ipython with multiple scripts
1294 1298 ("ipython a.py b.py c.py")
1295 1299
1296 1300 * iplib.py, hooks.py: Added configurable input prefilter,
1297 1301 named 'input_prefilter'. See ext_rescapture.py for example
1298 1302 usage.
1299 1303
1300 1304 * ext_rescapture.py, Magic.py: Better system command output capture
1301 1305 through 'var = !ls' (deprecates user-visible %sc). Same notation
1302 1306 applies for magics, 'var = %alias' assigns alias list to var.
1303 1307
1304 1308 * ipapi.py: added meta() for accessing extension-usable data store.
1305 1309
1306 1310 * iplib.py: added InteractiveShell.getapi(). New magics should be
1307 1311 written doing self.getapi() instead of using the shell directly.
1308 1312
1309 1313 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1310 1314 %store foo >> ~/myfoo.txt to store variables to files (in clean
1311 1315 textual form, not a restorable pickle).
1312 1316
1313 1317 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1314 1318
1315 1319 * usage.py, Magic.py: added %quickref
1316 1320
1317 1321 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1318 1322
1319 1323 * GetoptErrors when invoking magics etc. with wrong args
1320 1324 are now more helpful:
1321 1325 GetoptError: option -l not recognized (allowed: "qb" )
1322 1326
1323 1327 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1324 1328
1325 1329 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1326 1330 computationally intensive blocks don't appear to stall the demo.
1327 1331
1328 1332 2006-01-24 Ville Vainio <vivainio@gmail.com>
1329 1333
1330 1334 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1331 1335 value to manipulate resulting history entry.
1332 1336
1333 1337 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1334 1338 to instance methods of IPApi class, to make extending an embedded
1335 1339 IPython feasible. See ext_rehashdir.py for example usage.
1336 1340
1337 1341 * Merged 1071-1076 from branches/0.7.1
1338 1342
1339 1343
1340 1344 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1341 1345
1342 1346 * tools/release (daystamp): Fix build tools to use the new
1343 1347 eggsetup.py script to build lightweight eggs.
1344 1348
1345 1349 * Applied changesets 1062 and 1064 before 0.7.1 release.
1346 1350
1347 1351 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1348 1352 see the raw input history (without conversions like %ls ->
1349 1353 ipmagic("ls")). After a request from W. Stein, SAGE
1350 1354 (http://modular.ucsd.edu/sage) developer. This information is
1351 1355 stored in the input_hist_raw attribute of the IPython instance, so
1352 1356 developers can access it if needed (it's an InputList instance).
1353 1357
1354 1358 * Versionstring = 0.7.2.svn
1355 1359
1356 1360 * eggsetup.py: A separate script for constructing eggs, creates
1357 1361 proper launch scripts even on Windows (an .exe file in
1358 1362 \python24\scripts).
1359 1363
1360 1364 * ipapi.py: launch_new_instance, launch entry point needed for the
1361 1365 egg.
1362 1366
1363 1367 2006-01-23 Ville Vainio <vivainio@gmail.com>
1364 1368
1365 1369 * Added %cpaste magic for pasting python code
1366 1370
1367 1371 2006-01-22 Ville Vainio <vivainio@gmail.com>
1368 1372
1369 1373 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1370 1374
1371 1375 * Versionstring = 0.7.2.svn
1372 1376
1373 1377 * eggsetup.py: A separate script for constructing eggs, creates
1374 1378 proper launch scripts even on Windows (an .exe file in
1375 1379 \python24\scripts).
1376 1380
1377 1381 * ipapi.py: launch_new_instance, launch entry point needed for the
1378 1382 egg.
1379 1383
1380 1384 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1381 1385
1382 1386 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1383 1387 %pfile foo would print the file for foo even if it was a binary.
1384 1388 Now, extensions '.so' and '.dll' are skipped.
1385 1389
1386 1390 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1387 1391 bug, where macros would fail in all threaded modes. I'm not 100%
1388 1392 sure, so I'm going to put out an rc instead of making a release
1389 1393 today, and wait for feedback for at least a few days.
1390 1394
1391 1395 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1392 1396 it...) the handling of pasting external code with autoindent on.
1393 1397 To get out of a multiline input, the rule will appear for most
1394 1398 users unchanged: two blank lines or change the indent level
1395 1399 proposed by IPython. But there is a twist now: you can
1396 1400 add/subtract only *one or two spaces*. If you add/subtract three
1397 1401 or more (unless you completely delete the line), IPython will
1398 1402 accept that line, and you'll need to enter a second one of pure
1399 1403 whitespace. I know it sounds complicated, but I can't find a
1400 1404 different solution that covers all the cases, with the right
1401 1405 heuristics. Hopefully in actual use, nobody will really notice
1402 1406 all these strange rules and things will 'just work'.
1403 1407
1404 1408 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1405 1409
1406 1410 * IPython/iplib.py (interact): catch exceptions which can be
1407 1411 triggered asynchronously by signal handlers. Thanks to an
1408 1412 automatic crash report, submitted by Colin Kingsley
1409 1413 <tercel-AT-gentoo.org>.
1410 1414
1411 1415 2006-01-20 Ville Vainio <vivainio@gmail.com>
1412 1416
1413 1417 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1414 1418 (%rehashdir, very useful, try it out) of how to extend ipython
1415 1419 with new magics. Also added Extensions dir to pythonpath to make
1416 1420 importing extensions easy.
1417 1421
1418 1422 * %store now complains when trying to store interactively declared
1419 1423 classes / instances of those classes.
1420 1424
1421 1425 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1422 1426 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1423 1427 if they exist, and ipy_user_conf.py with some defaults is created for
1424 1428 the user.
1425 1429
1426 1430 * Startup rehashing done by the config file, not InterpreterExec.
1427 1431 This means system commands are available even without selecting the
1428 1432 pysh profile. It's the sensible default after all.
1429 1433
1430 1434 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1431 1435
1432 1436 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1433 1437 multiline code with autoindent on working. But I am really not
1434 1438 sure, so this needs more testing. Will commit a debug-enabled
1435 1439 version for now, while I test it some more, so that Ville and
1436 1440 others may also catch any problems. Also made
1437 1441 self.indent_current_str() a method, to ensure that there's no
1438 1442 chance of the indent space count and the corresponding string
1439 1443 falling out of sync. All code needing the string should just call
1440 1444 the method.
1441 1445
1442 1446 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1443 1447
1444 1448 * IPython/Magic.py (magic_edit): fix check for when users don't
1445 1449 save their output files, the try/except was in the wrong section.
1446 1450
1447 1451 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1448 1452
1449 1453 * IPython/Magic.py (magic_run): fix __file__ global missing from
1450 1454 script's namespace when executed via %run. After a report by
1451 1455 Vivian.
1452 1456
1453 1457 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1454 1458 when using python 2.4. The parent constructor changed in 2.4, and
1455 1459 we need to track it directly (we can't call it, as it messes up
1456 1460 readline and tab-completion inside our pdb would stop working).
1457 1461 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1458 1462
1459 1463 2006-01-16 Ville Vainio <vivainio@gmail.com>
1460 1464
1461 1465 * Ipython/magic.py: Reverted back to old %edit functionality
1462 1466 that returns file contents on exit.
1463 1467
1464 1468 * IPython/path.py: Added Jason Orendorff's "path" module to
1465 1469 IPython tree, http://www.jorendorff.com/articles/python/path/.
1466 1470 You can get path objects conveniently through %sc, and !!, e.g.:
1467 1471 sc files=ls
1468 1472 for p in files.paths: # or files.p
1469 1473 print p,p.mtime
1470 1474
1471 1475 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1472 1476 now work again without considering the exclusion regexp -
1473 1477 hence, things like ',foo my/path' turn to 'foo("my/path")'
1474 1478 instead of syntax error.
1475 1479
1476 1480
1477 1481 2006-01-14 Ville Vainio <vivainio@gmail.com>
1478 1482
1479 1483 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1480 1484 ipapi decorators for python 2.4 users, options() provides access to rc
1481 1485 data.
1482 1486
1483 1487 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1484 1488 as path separators (even on Linux ;-). Space character after
1485 1489 backslash (as yielded by tab completer) is still space;
1486 1490 "%cd long\ name" works as expected.
1487 1491
1488 1492 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1489 1493 as "chain of command", with priority. API stays the same,
1490 1494 TryNext exception raised by a hook function signals that
1491 1495 current hook failed and next hook should try handling it, as
1492 1496 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1493 1497 requested configurable display hook, which is now implemented.
1494 1498
1495 1499 2006-01-13 Ville Vainio <vivainio@gmail.com>
1496 1500
1497 1501 * IPython/platutils*.py: platform specific utility functions,
1498 1502 so far only set_term_title is implemented (change terminal
1499 1503 label in windowing systems). %cd now changes the title to
1500 1504 current dir.
1501 1505
1502 1506 * IPython/Release.py: Added myself to "authors" list,
1503 1507 had to create new files.
1504 1508
1505 1509 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1506 1510 shell escape; not a known bug but had potential to be one in the
1507 1511 future.
1508 1512
1509 1513 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1510 1514 extension API for IPython! See the module for usage example. Fix
1511 1515 OInspect for docstring-less magic functions.
1512 1516
1513 1517
1514 1518 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1515 1519
1516 1520 * IPython/iplib.py (raw_input): temporarily deactivate all
1517 1521 attempts at allowing pasting of code with autoindent on. It
1518 1522 introduced bugs (reported by Prabhu) and I can't seem to find a
1519 1523 robust combination which works in all cases. Will have to revisit
1520 1524 later.
1521 1525
1522 1526 * IPython/genutils.py: remove isspace() function. We've dropped
1523 1527 2.2 compatibility, so it's OK to use the string method.
1524 1528
1525 1529 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1526 1530
1527 1531 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1528 1532 matching what NOT to autocall on, to include all python binary
1529 1533 operators (including things like 'and', 'or', 'is' and 'in').
1530 1534 Prompted by a bug report on 'foo & bar', but I realized we had
1531 1535 many more potential bug cases with other operators. The regexp is
1532 1536 self.re_exclude_auto, it's fairly commented.
1533 1537
1534 1538 2006-01-12 Ville Vainio <vivainio@gmail.com>
1535 1539
1536 1540 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1537 1541 Prettified and hardened string/backslash quoting with ipsystem(),
1538 1542 ipalias() and ipmagic(). Now even \ characters are passed to
1539 1543 %magics, !shell escapes and aliases exactly as they are in the
1540 1544 ipython command line. Should improve backslash experience,
1541 1545 particularly in Windows (path delimiter for some commands that
1542 1546 won't understand '/'), but Unix benefits as well (regexps). %cd
1543 1547 magic still doesn't support backslash path delimiters, though. Also
1544 1548 deleted all pretense of supporting multiline command strings in
1545 1549 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1546 1550
1547 1551 * doc/build_doc_instructions.txt added. Documentation on how to
1548 1552 use doc/update_manual.py, added yesterday. Both files contributed
1549 1553 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1550 1554 doc/*.sh for deprecation at a later date.
1551 1555
1552 1556 * /ipython.py Added ipython.py to root directory for
1553 1557 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1554 1558 ipython.py) and development convenience (no need to keep doing
1555 1559 "setup.py install" between changes).
1556 1560
1557 1561 * Made ! and !! shell escapes work (again) in multiline expressions:
1558 1562 if 1:
1559 1563 !ls
1560 1564 !!ls
1561 1565
1562 1566 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1563 1567
1564 1568 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1565 1569 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1566 1570 module in case-insensitive installation. Was causing crashes
1567 1571 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1568 1572
1569 1573 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1570 1574 <marienz-AT-gentoo.org>, closes
1571 1575 http://www.scipy.net/roundup/ipython/issue51.
1572 1576
1573 1577 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1574 1578
1575 1579 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1576 1580 problem of excessive CPU usage under *nix and keyboard lag under
1577 1581 win32.
1578 1582
1579 1583 2006-01-10 *** Released version 0.7.0
1580 1584
1581 1585 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1582 1586
1583 1587 * IPython/Release.py (revision): tag version number to 0.7.0,
1584 1588 ready for release.
1585 1589
1586 1590 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1587 1591 it informs the user of the name of the temp. file used. This can
1588 1592 help if you decide later to reuse that same file, so you know
1589 1593 where to copy the info from.
1590 1594
1591 1595 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1592 1596
1593 1597 * setup_bdist_egg.py: little script to build an egg. Added
1594 1598 support in the release tools as well.
1595 1599
1596 1600 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1597 1601
1598 1602 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1599 1603 version selection (new -wxversion command line and ipythonrc
1600 1604 parameter). Patch contributed by Arnd Baecker
1601 1605 <arnd.baecker-AT-web.de>.
1602 1606
1603 1607 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1604 1608 embedded instances, for variables defined at the interactive
1605 1609 prompt of the embedded ipython. Reported by Arnd.
1606 1610
1607 1611 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1608 1612 it can be used as a (stateful) toggle, or with a direct parameter.
1609 1613
1610 1614 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1611 1615 could be triggered in certain cases and cause the traceback
1612 1616 printer not to work.
1613 1617
1614 1618 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1615 1619
1616 1620 * IPython/iplib.py (_should_recompile): Small fix, closes
1617 1621 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1618 1622
1619 1623 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1620 1624
1621 1625 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1622 1626 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1623 1627 Moad for help with tracking it down.
1624 1628
1625 1629 * IPython/iplib.py (handle_auto): fix autocall handling for
1626 1630 objects which support BOTH __getitem__ and __call__ (so that f [x]
1627 1631 is left alone, instead of becoming f([x]) automatically).
1628 1632
1629 1633 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1630 1634 Ville's patch.
1631 1635
1632 1636 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1633 1637
1634 1638 * IPython/iplib.py (handle_auto): changed autocall semantics to
1635 1639 include 'smart' mode, where the autocall transformation is NOT
1636 1640 applied if there are no arguments on the line. This allows you to
1637 1641 just type 'foo' if foo is a callable to see its internal form,
1638 1642 instead of having it called with no arguments (typically a
1639 1643 mistake). The old 'full' autocall still exists: for that, you
1640 1644 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1641 1645
1642 1646 * IPython/completer.py (Completer.attr_matches): add
1643 1647 tab-completion support for Enthoughts' traits. After a report by
1644 1648 Arnd and a patch by Prabhu.
1645 1649
1646 1650 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1647 1651
1648 1652 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1649 1653 Schmolck's patch to fix inspect.getinnerframes().
1650 1654
1651 1655 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1652 1656 for embedded instances, regarding handling of namespaces and items
1653 1657 added to the __builtin__ one. Multiple embedded instances and
1654 1658 recursive embeddings should work better now (though I'm not sure
1655 1659 I've got all the corner cases fixed, that code is a bit of a brain
1656 1660 twister).
1657 1661
1658 1662 * IPython/Magic.py (magic_edit): added support to edit in-memory
1659 1663 macros (automatically creates the necessary temp files). %edit
1660 1664 also doesn't return the file contents anymore, it's just noise.
1661 1665
1662 1666 * IPython/completer.py (Completer.attr_matches): revert change to
1663 1667 complete only on attributes listed in __all__. I realized it
1664 1668 cripples the tab-completion system as a tool for exploring the
1665 1669 internals of unknown libraries (it renders any non-__all__
1666 1670 attribute off-limits). I got bit by this when trying to see
1667 1671 something inside the dis module.
1668 1672
1669 1673 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1670 1674
1671 1675 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1672 1676 namespace for users and extension writers to hold data in. This
1673 1677 follows the discussion in
1674 1678 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1675 1679
1676 1680 * IPython/completer.py (IPCompleter.complete): small patch to help
1677 1681 tab-completion under Emacs, after a suggestion by John Barnard
1678 1682 <barnarj-AT-ccf.org>.
1679 1683
1680 1684 * IPython/Magic.py (Magic.extract_input_slices): added support for
1681 1685 the slice notation in magics to use N-M to represent numbers N...M
1682 1686 (closed endpoints). This is used by %macro and %save.
1683 1687
1684 1688 * IPython/completer.py (Completer.attr_matches): for modules which
1685 1689 define __all__, complete only on those. After a patch by Jeffrey
1686 1690 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1687 1691 speed up this routine.
1688 1692
1689 1693 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1690 1694 don't know if this is the end of it, but the behavior now is
1691 1695 certainly much more correct. Note that coupled with macros,
1692 1696 slightly surprising (at first) behavior may occur: a macro will in
1693 1697 general expand to multiple lines of input, so upon exiting, the
1694 1698 in/out counters will both be bumped by the corresponding amount
1695 1699 (as if the macro's contents had been typed interactively). Typing
1696 1700 %hist will reveal the intermediate (silently processed) lines.
1697 1701
1698 1702 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1699 1703 pickle to fail (%run was overwriting __main__ and not restoring
1700 1704 it, but pickle relies on __main__ to operate).
1701 1705
1702 1706 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1703 1707 using properties, but forgot to make the main InteractiveShell
1704 1708 class a new-style class. Properties fail silently, and
1705 1709 mysteriously, with old-style class (getters work, but
1706 1710 setters don't do anything).
1707 1711
1708 1712 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1709 1713
1710 1714 * IPython/Magic.py (magic_history): fix history reporting bug (I
1711 1715 know some nasties are still there, I just can't seem to find a
1712 1716 reproducible test case to track them down; the input history is
1713 1717 falling out of sync...)
1714 1718
1715 1719 * IPython/iplib.py (handle_shell_escape): fix bug where both
1716 1720 aliases and system accesses where broken for indented code (such
1717 1721 as loops).
1718 1722
1719 1723 * IPython/genutils.py (shell): fix small but critical bug for
1720 1724 win32 system access.
1721 1725
1722 1726 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1723 1727
1724 1728 * IPython/iplib.py (showtraceback): remove use of the
1725 1729 sys.last_{type/value/traceback} structures, which are non
1726 1730 thread-safe.
1727 1731 (_prefilter): change control flow to ensure that we NEVER
1728 1732 introspect objects when autocall is off. This will guarantee that
1729 1733 having an input line of the form 'x.y', where access to attribute
1730 1734 'y' has side effects, doesn't trigger the side effect TWICE. It
1731 1735 is important to note that, with autocall on, these side effects
1732 1736 can still happen.
1733 1737 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1734 1738 trio. IPython offers these three kinds of special calls which are
1735 1739 not python code, and it's a good thing to have their call method
1736 1740 be accessible as pure python functions (not just special syntax at
1737 1741 the command line). It gives us a better internal implementation
1738 1742 structure, as well as exposing these for user scripting more
1739 1743 cleanly.
1740 1744
1741 1745 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1742 1746 file. Now that they'll be more likely to be used with the
1743 1747 persistance system (%store), I want to make sure their module path
1744 1748 doesn't change in the future, so that we don't break things for
1745 1749 users' persisted data.
1746 1750
1747 1751 * IPython/iplib.py (autoindent_update): move indentation
1748 1752 management into the _text_ processing loop, not the keyboard
1749 1753 interactive one. This is necessary to correctly process non-typed
1750 1754 multiline input (such as macros).
1751 1755
1752 1756 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1753 1757 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1754 1758 which was producing problems in the resulting manual.
1755 1759 (magic_whos): improve reporting of instances (show their class,
1756 1760 instead of simply printing 'instance' which isn't terribly
1757 1761 informative).
1758 1762
1759 1763 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1760 1764 (minor mods) to support network shares under win32.
1761 1765
1762 1766 * IPython/winconsole.py (get_console_size): add new winconsole
1763 1767 module and fixes to page_dumb() to improve its behavior under
1764 1768 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1765 1769
1766 1770 * IPython/Magic.py (Macro): simplified Macro class to just
1767 1771 subclass list. We've had only 2.2 compatibility for a very long
1768 1772 time, yet I was still avoiding subclassing the builtin types. No
1769 1773 more (I'm also starting to use properties, though I won't shift to
1770 1774 2.3-specific features quite yet).
1771 1775 (magic_store): added Ville's patch for lightweight variable
1772 1776 persistence, after a request on the user list by Matt Wilkie
1773 1777 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1774 1778 details.
1775 1779
1776 1780 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1777 1781 changed the default logfile name from 'ipython.log' to
1778 1782 'ipython_log.py'. These logs are real python files, and now that
1779 1783 we have much better multiline support, people are more likely to
1780 1784 want to use them as such. Might as well name them correctly.
1781 1785
1782 1786 * IPython/Magic.py: substantial cleanup. While we can't stop
1783 1787 using magics as mixins, due to the existing customizations 'out
1784 1788 there' which rely on the mixin naming conventions, at least I
1785 1789 cleaned out all cross-class name usage. So once we are OK with
1786 1790 breaking compatibility, the two systems can be separated.
1787 1791
1788 1792 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1789 1793 anymore, and the class is a fair bit less hideous as well. New
1790 1794 features were also introduced: timestamping of input, and logging
1791 1795 of output results. These are user-visible with the -t and -o
1792 1796 options to %logstart. Closes
1793 1797 http://www.scipy.net/roundup/ipython/issue11 and a request by
1794 1798 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1795 1799
1796 1800 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1797 1801
1798 1802 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1799 1803 better handle backslashes in paths. See the thread 'More Windows
1800 1804 questions part 2 - \/ characters revisited' on the iypthon user
1801 1805 list:
1802 1806 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1803 1807
1804 1808 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1805 1809
1806 1810 (InteractiveShell.__init__): change threaded shells to not use the
1807 1811 ipython crash handler. This was causing more problems than not,
1808 1812 as exceptions in the main thread (GUI code, typically) would
1809 1813 always show up as a 'crash', when they really weren't.
1810 1814
1811 1815 The colors and exception mode commands (%colors/%xmode) have been
1812 1816 synchronized to also take this into account, so users can get
1813 1817 verbose exceptions for their threaded code as well. I also added
1814 1818 support for activating pdb inside this exception handler as well,
1815 1819 so now GUI authors can use IPython's enhanced pdb at runtime.
1816 1820
1817 1821 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1818 1822 true by default, and add it to the shipped ipythonrc file. Since
1819 1823 this asks the user before proceeding, I think it's OK to make it
1820 1824 true by default.
1821 1825
1822 1826 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1823 1827 of the previous special-casing of input in the eval loop. I think
1824 1828 this is cleaner, as they really are commands and shouldn't have
1825 1829 a special role in the middle of the core code.
1826 1830
1827 1831 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1828 1832
1829 1833 * IPython/iplib.py (edit_syntax_error): added support for
1830 1834 automatically reopening the editor if the file had a syntax error
1831 1835 in it. Thanks to scottt who provided the patch at:
1832 1836 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1833 1837 version committed).
1834 1838
1835 1839 * IPython/iplib.py (handle_normal): add suport for multi-line
1836 1840 input with emtpy lines. This fixes
1837 1841 http://www.scipy.net/roundup/ipython/issue43 and a similar
1838 1842 discussion on the user list.
1839 1843
1840 1844 WARNING: a behavior change is necessarily introduced to support
1841 1845 blank lines: now a single blank line with whitespace does NOT
1842 1846 break the input loop, which means that when autoindent is on, by
1843 1847 default hitting return on the next (indented) line does NOT exit.
1844 1848
1845 1849 Instead, to exit a multiline input you can either have:
1846 1850
1847 1851 - TWO whitespace lines (just hit return again), or
1848 1852 - a single whitespace line of a different length than provided
1849 1853 by the autoindent (add or remove a space).
1850 1854
1851 1855 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1852 1856 module to better organize all readline-related functionality.
1853 1857 I've deleted FlexCompleter and put all completion clases here.
1854 1858
1855 1859 * IPython/iplib.py (raw_input): improve indentation management.
1856 1860 It is now possible to paste indented code with autoindent on, and
1857 1861 the code is interpreted correctly (though it still looks bad on
1858 1862 screen, due to the line-oriented nature of ipython).
1859 1863 (MagicCompleter.complete): change behavior so that a TAB key on an
1860 1864 otherwise empty line actually inserts a tab, instead of completing
1861 1865 on the entire global namespace. This makes it easier to use the
1862 1866 TAB key for indentation. After a request by Hans Meine
1863 1867 <hans_meine-AT-gmx.net>
1864 1868 (_prefilter): add support so that typing plain 'exit' or 'quit'
1865 1869 does a sensible thing. Originally I tried to deviate as little as
1866 1870 possible from the default python behavior, but even that one may
1867 1871 change in this direction (thread on python-dev to that effect).
1868 1872 Regardless, ipython should do the right thing even if CPython's
1869 1873 '>>>' prompt doesn't.
1870 1874 (InteractiveShell): removed subclassing code.InteractiveConsole
1871 1875 class. By now we'd overridden just about all of its methods: I've
1872 1876 copied the remaining two over, and now ipython is a standalone
1873 1877 class. This will provide a clearer picture for the chainsaw
1874 1878 branch refactoring.
1875 1879
1876 1880 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1877 1881
1878 1882 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1879 1883 failures for objects which break when dir() is called on them.
1880 1884
1881 1885 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1882 1886 distinct local and global namespaces in the completer API. This
1883 1887 change allows us to properly handle completion with distinct
1884 1888 scopes, including in embedded instances (this had never really
1885 1889 worked correctly).
1886 1890
1887 1891 Note: this introduces a change in the constructor for
1888 1892 MagicCompleter, as a new global_namespace parameter is now the
1889 1893 second argument (the others were bumped one position).
1890 1894
1891 1895 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1892 1896
1893 1897 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1894 1898 embedded instances (which can be done now thanks to Vivian's
1895 1899 frame-handling fixes for pdb).
1896 1900 (InteractiveShell.__init__): Fix namespace handling problem in
1897 1901 embedded instances. We were overwriting __main__ unconditionally,
1898 1902 and this should only be done for 'full' (non-embedded) IPython;
1899 1903 embedded instances must respect the caller's __main__. Thanks to
1900 1904 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1901 1905
1902 1906 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1903 1907
1904 1908 * setup.py: added download_url to setup(). This registers the
1905 1909 download address at PyPI, which is not only useful to humans
1906 1910 browsing the site, but is also picked up by setuptools (the Eggs
1907 1911 machinery). Thanks to Ville and R. Kern for the info/discussion
1908 1912 on this.
1909 1913
1910 1914 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1911 1915
1912 1916 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1913 1917 This brings a lot of nice functionality to the pdb mode, which now
1914 1918 has tab-completion, syntax highlighting, and better stack handling
1915 1919 than before. Many thanks to Vivian De Smedt
1916 1920 <vivian-AT-vdesmedt.com> for the original patches.
1917 1921
1918 1922 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1919 1923
1920 1924 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1921 1925 sequence to consistently accept the banner argument. The
1922 1926 inconsistency was tripping SAGE, thanks to Gary Zablackis
1923 1927 <gzabl-AT-yahoo.com> for the report.
1924 1928
1925 1929 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1926 1930
1927 1931 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1928 1932 Fix bug where a naked 'alias' call in the ipythonrc file would
1929 1933 cause a crash. Bug reported by Jorgen Stenarson.
1930 1934
1931 1935 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1932 1936
1933 1937 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1934 1938 startup time.
1935 1939
1936 1940 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1937 1941 instances had introduced a bug with globals in normal code. Now
1938 1942 it's working in all cases.
1939 1943
1940 1944 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1941 1945 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1942 1946 has been introduced to set the default case sensitivity of the
1943 1947 searches. Users can still select either mode at runtime on a
1944 1948 per-search basis.
1945 1949
1946 1950 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1947 1951
1948 1952 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1949 1953 attributes in wildcard searches for subclasses. Modified version
1950 1954 of a patch by Jorgen.
1951 1955
1952 1956 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1953 1957
1954 1958 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1955 1959 embedded instances. I added a user_global_ns attribute to the
1956 1960 InteractiveShell class to handle this.
1957 1961
1958 1962 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1959 1963
1960 1964 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1961 1965 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1962 1966 (reported under win32, but may happen also in other platforms).
1963 1967 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1964 1968
1965 1969 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1966 1970
1967 1971 * IPython/Magic.py (magic_psearch): new support for wildcard
1968 1972 patterns. Now, typing ?a*b will list all names which begin with a
1969 1973 and end in b, for example. The %psearch magic has full
1970 1974 docstrings. Many thanks to JΓΆrgen Stenarson
1971 1975 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1972 1976 implementing this functionality.
1973 1977
1974 1978 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1975 1979
1976 1980 * Manual: fixed long-standing annoyance of double-dashes (as in
1977 1981 --prefix=~, for example) being stripped in the HTML version. This
1978 1982 is a latex2html bug, but a workaround was provided. Many thanks
1979 1983 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1980 1984 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1981 1985 rolling. This seemingly small issue had tripped a number of users
1982 1986 when first installing, so I'm glad to see it gone.
1983 1987
1984 1988 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1985 1989
1986 1990 * IPython/Extensions/numeric_formats.py: fix missing import,
1987 1991 reported by Stephen Walton.
1988 1992
1989 1993 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1990 1994
1991 1995 * IPython/demo.py: finish demo module, fully documented now.
1992 1996
1993 1997 * IPython/genutils.py (file_read): simple little utility to read a
1994 1998 file and ensure it's closed afterwards.
1995 1999
1996 2000 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1997 2001
1998 2002 * IPython/demo.py (Demo.__init__): added support for individually
1999 2003 tagging blocks for automatic execution.
2000 2004
2001 2005 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2002 2006 syntax-highlighted python sources, requested by John.
2003 2007
2004 2008 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2005 2009
2006 2010 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2007 2011 finishing.
2008 2012
2009 2013 * IPython/genutils.py (shlex_split): moved from Magic to here,
2010 2014 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2011 2015
2012 2016 * IPython/demo.py (Demo.__init__): added support for silent
2013 2017 blocks, improved marks as regexps, docstrings written.
2014 2018 (Demo.__init__): better docstring, added support for sys.argv.
2015 2019
2016 2020 * IPython/genutils.py (marquee): little utility used by the demo
2017 2021 code, handy in general.
2018 2022
2019 2023 * IPython/demo.py (Demo.__init__): new class for interactive
2020 2024 demos. Not documented yet, I just wrote it in a hurry for
2021 2025 scipy'05. Will docstring later.
2022 2026
2023 2027 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2024 2028
2025 2029 * IPython/Shell.py (sigint_handler): Drastic simplification which
2026 2030 also seems to make Ctrl-C work correctly across threads! This is
2027 2031 so simple, that I can't beleive I'd missed it before. Needs more
2028 2032 testing, though.
2029 2033 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2030 2034 like this before...
2031 2035
2032 2036 * IPython/genutils.py (get_home_dir): add protection against
2033 2037 non-dirs in win32 registry.
2034 2038
2035 2039 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2036 2040 bug where dict was mutated while iterating (pysh crash).
2037 2041
2038 2042 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2039 2043
2040 2044 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2041 2045 spurious newlines added by this routine. After a report by
2042 2046 F. Mantegazza.
2043 2047
2044 2048 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2045 2049
2046 2050 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2047 2051 calls. These were a leftover from the GTK 1.x days, and can cause
2048 2052 problems in certain cases (after a report by John Hunter).
2049 2053
2050 2054 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2051 2055 os.getcwd() fails at init time. Thanks to patch from David Remahl
2052 2056 <chmod007-AT-mac.com>.
2053 2057 (InteractiveShell.__init__): prevent certain special magics from
2054 2058 being shadowed by aliases. Closes
2055 2059 http://www.scipy.net/roundup/ipython/issue41.
2056 2060
2057 2061 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2058 2062
2059 2063 * IPython/iplib.py (InteractiveShell.complete): Added new
2060 2064 top-level completion method to expose the completion mechanism
2061 2065 beyond readline-based environments.
2062 2066
2063 2067 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2064 2068
2065 2069 * tools/ipsvnc (svnversion): fix svnversion capture.
2066 2070
2067 2071 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2068 2072 attribute to self, which was missing. Before, it was set by a
2069 2073 routine which in certain cases wasn't being called, so the
2070 2074 instance could end up missing the attribute. This caused a crash.
2071 2075 Closes http://www.scipy.net/roundup/ipython/issue40.
2072 2076
2073 2077 2005-08-16 Fernando Perez <fperez@colorado.edu>
2074 2078
2075 2079 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2076 2080 contains non-string attribute. Closes
2077 2081 http://www.scipy.net/roundup/ipython/issue38.
2078 2082
2079 2083 2005-08-14 Fernando Perez <fperez@colorado.edu>
2080 2084
2081 2085 * tools/ipsvnc: Minor improvements, to add changeset info.
2082 2086
2083 2087 2005-08-12 Fernando Perez <fperez@colorado.edu>
2084 2088
2085 2089 * IPython/iplib.py (runsource): remove self.code_to_run_src
2086 2090 attribute. I realized this is nothing more than
2087 2091 '\n'.join(self.buffer), and having the same data in two different
2088 2092 places is just asking for synchronization bugs. This may impact
2089 2093 people who have custom exception handlers, so I need to warn
2090 2094 ipython-dev about it (F. Mantegazza may use them).
2091 2095
2092 2096 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2093 2097
2094 2098 * IPython/genutils.py: fix 2.2 compatibility (generators)
2095 2099
2096 2100 2005-07-18 Fernando Perez <fperez@colorado.edu>
2097 2101
2098 2102 * IPython/genutils.py (get_home_dir): fix to help users with
2099 2103 invalid $HOME under win32.
2100 2104
2101 2105 2005-07-17 Fernando Perez <fperez@colorado.edu>
2102 2106
2103 2107 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2104 2108 some old hacks and clean up a bit other routines; code should be
2105 2109 simpler and a bit faster.
2106 2110
2107 2111 * IPython/iplib.py (interact): removed some last-resort attempts
2108 2112 to survive broken stdout/stderr. That code was only making it
2109 2113 harder to abstract out the i/o (necessary for gui integration),
2110 2114 and the crashes it could prevent were extremely rare in practice
2111 2115 (besides being fully user-induced in a pretty violent manner).
2112 2116
2113 2117 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2114 2118 Nothing major yet, but the code is simpler to read; this should
2115 2119 make it easier to do more serious modifications in the future.
2116 2120
2117 2121 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2118 2122 which broke in .15 (thanks to a report by Ville).
2119 2123
2120 2124 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2121 2125 be quite correct, I know next to nothing about unicode). This
2122 2126 will allow unicode strings to be used in prompts, amongst other
2123 2127 cases. It also will prevent ipython from crashing when unicode
2124 2128 shows up unexpectedly in many places. If ascii encoding fails, we
2125 2129 assume utf_8. Currently the encoding is not a user-visible
2126 2130 setting, though it could be made so if there is demand for it.
2127 2131
2128 2132 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2129 2133
2130 2134 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2131 2135
2132 2136 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2133 2137
2134 2138 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2135 2139 code can work transparently for 2.2/2.3.
2136 2140
2137 2141 2005-07-16 Fernando Perez <fperez@colorado.edu>
2138 2142
2139 2143 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2140 2144 out of the color scheme table used for coloring exception
2141 2145 tracebacks. This allows user code to add new schemes at runtime.
2142 2146 This is a minimally modified version of the patch at
2143 2147 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2144 2148 for the contribution.
2145 2149
2146 2150 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2147 2151 slightly modified version of the patch in
2148 2152 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2149 2153 to remove the previous try/except solution (which was costlier).
2150 2154 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2151 2155
2152 2156 2005-06-08 Fernando Perez <fperez@colorado.edu>
2153 2157
2154 2158 * IPython/iplib.py (write/write_err): Add methods to abstract all
2155 2159 I/O a bit more.
2156 2160
2157 2161 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2158 2162 warning, reported by Aric Hagberg, fix by JD Hunter.
2159 2163
2160 2164 2005-06-02 *** Released version 0.6.15
2161 2165
2162 2166 2005-06-01 Fernando Perez <fperez@colorado.edu>
2163 2167
2164 2168 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2165 2169 tab-completion of filenames within open-quoted strings. Note that
2166 2170 this requires that in ~/.ipython/ipythonrc, users change the
2167 2171 readline delimiters configuration to read:
2168 2172
2169 2173 readline_remove_delims -/~
2170 2174
2171 2175
2172 2176 2005-05-31 *** Released version 0.6.14
2173 2177
2174 2178 2005-05-29 Fernando Perez <fperez@colorado.edu>
2175 2179
2176 2180 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2177 2181 with files not on the filesystem. Reported by Eliyahu Sandler
2178 2182 <eli@gondolin.net>
2179 2183
2180 2184 2005-05-22 Fernando Perez <fperez@colorado.edu>
2181 2185
2182 2186 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2183 2187 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2184 2188
2185 2189 2005-05-19 Fernando Perez <fperez@colorado.edu>
2186 2190
2187 2191 * IPython/iplib.py (safe_execfile): close a file which could be
2188 2192 left open (causing problems in win32, which locks open files).
2189 2193 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2190 2194
2191 2195 2005-05-18 Fernando Perez <fperez@colorado.edu>
2192 2196
2193 2197 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2194 2198 keyword arguments correctly to safe_execfile().
2195 2199
2196 2200 2005-05-13 Fernando Perez <fperez@colorado.edu>
2197 2201
2198 2202 * ipython.1: Added info about Qt to manpage, and threads warning
2199 2203 to usage page (invoked with --help).
2200 2204
2201 2205 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2202 2206 new matcher (it goes at the end of the priority list) to do
2203 2207 tab-completion on named function arguments. Submitted by George
2204 2208 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2205 2209 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2206 2210 for more details.
2207 2211
2208 2212 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2209 2213 SystemExit exceptions in the script being run. Thanks to a report
2210 2214 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2211 2215 producing very annoying behavior when running unit tests.
2212 2216
2213 2217 2005-05-12 Fernando Perez <fperez@colorado.edu>
2214 2218
2215 2219 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2216 2220 which I'd broken (again) due to a changed regexp. In the process,
2217 2221 added ';' as an escape to auto-quote the whole line without
2218 2222 splitting its arguments. Thanks to a report by Jerry McRae
2219 2223 <qrs0xyc02-AT-sneakemail.com>.
2220 2224
2221 2225 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2222 2226 possible crashes caused by a TokenError. Reported by Ed Schofield
2223 2227 <schofield-AT-ftw.at>.
2224 2228
2225 2229 2005-05-06 Fernando Perez <fperez@colorado.edu>
2226 2230
2227 2231 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2228 2232
2229 2233 2005-04-29 Fernando Perez <fperez@colorado.edu>
2230 2234
2231 2235 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2232 2236 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2233 2237 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2234 2238 which provides support for Qt interactive usage (similar to the
2235 2239 existing one for WX and GTK). This had been often requested.
2236 2240
2237 2241 2005-04-14 *** Released version 0.6.13
2238 2242
2239 2243 2005-04-08 Fernando Perez <fperez@colorado.edu>
2240 2244
2241 2245 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2242 2246 from _ofind, which gets called on almost every input line. Now,
2243 2247 we only try to get docstrings if they are actually going to be
2244 2248 used (the overhead of fetching unnecessary docstrings can be
2245 2249 noticeable for certain objects, such as Pyro proxies).
2246 2250
2247 2251 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2248 2252 for completers. For some reason I had been passing them the state
2249 2253 variable, which completers never actually need, and was in
2250 2254 conflict with the rlcompleter API. Custom completers ONLY need to
2251 2255 take the text parameter.
2252 2256
2253 2257 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2254 2258 work correctly in pysh. I've also moved all the logic which used
2255 2259 to be in pysh.py here, which will prevent problems with future
2256 2260 upgrades. However, this time I must warn users to update their
2257 2261 pysh profile to include the line
2258 2262
2259 2263 import_all IPython.Extensions.InterpreterExec
2260 2264
2261 2265 because otherwise things won't work for them. They MUST also
2262 2266 delete pysh.py and the line
2263 2267
2264 2268 execfile pysh.py
2265 2269
2266 2270 from their ipythonrc-pysh.
2267 2271
2268 2272 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2269 2273 robust in the face of objects whose dir() returns non-strings
2270 2274 (which it shouldn't, but some broken libs like ITK do). Thanks to
2271 2275 a patch by John Hunter (implemented differently, though). Also
2272 2276 minor improvements by using .extend instead of + on lists.
2273 2277
2274 2278 * pysh.py:
2275 2279
2276 2280 2005-04-06 Fernando Perez <fperez@colorado.edu>
2277 2281
2278 2282 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2279 2283 by default, so that all users benefit from it. Those who don't
2280 2284 want it can still turn it off.
2281 2285
2282 2286 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2283 2287 config file, I'd forgotten about this, so users were getting it
2284 2288 off by default.
2285 2289
2286 2290 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2287 2291 consistency. Now magics can be called in multiline statements,
2288 2292 and python variables can be expanded in magic calls via $var.
2289 2293 This makes the magic system behave just like aliases or !system
2290 2294 calls.
2291 2295
2292 2296 2005-03-28 Fernando Perez <fperez@colorado.edu>
2293 2297
2294 2298 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2295 2299 expensive string additions for building command. Add support for
2296 2300 trailing ';' when autocall is used.
2297 2301
2298 2302 2005-03-26 Fernando Perez <fperez@colorado.edu>
2299 2303
2300 2304 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2301 2305 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2302 2306 ipython.el robust against prompts with any number of spaces
2303 2307 (including 0) after the ':' character.
2304 2308
2305 2309 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2306 2310 continuation prompt, which misled users to think the line was
2307 2311 already indented. Closes debian Bug#300847, reported to me by
2308 2312 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2309 2313
2310 2314 2005-03-23 Fernando Perez <fperez@colorado.edu>
2311 2315
2312 2316 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2313 2317 properly aligned if they have embedded newlines.
2314 2318
2315 2319 * IPython/iplib.py (runlines): Add a public method to expose
2316 2320 IPython's code execution machinery, so that users can run strings
2317 2321 as if they had been typed at the prompt interactively.
2318 2322 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2319 2323 methods which can call the system shell, but with python variable
2320 2324 expansion. The three such methods are: __IPYTHON__.system,
2321 2325 .getoutput and .getoutputerror. These need to be documented in a
2322 2326 'public API' section (to be written) of the manual.
2323 2327
2324 2328 2005-03-20 Fernando Perez <fperez@colorado.edu>
2325 2329
2326 2330 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2327 2331 for custom exception handling. This is quite powerful, and it
2328 2332 allows for user-installable exception handlers which can trap
2329 2333 custom exceptions at runtime and treat them separately from
2330 2334 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2331 2335 Mantegazza <mantegazza-AT-ill.fr>.
2332 2336 (InteractiveShell.set_custom_completer): public API function to
2333 2337 add new completers at runtime.
2334 2338
2335 2339 2005-03-19 Fernando Perez <fperez@colorado.edu>
2336 2340
2337 2341 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2338 2342 allow objects which provide their docstrings via non-standard
2339 2343 mechanisms (like Pyro proxies) to still be inspected by ipython's
2340 2344 ? system.
2341 2345
2342 2346 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2343 2347 automatic capture system. I tried quite hard to make it work
2344 2348 reliably, and simply failed. I tried many combinations with the
2345 2349 subprocess module, but eventually nothing worked in all needed
2346 2350 cases (not blocking stdin for the child, duplicating stdout
2347 2351 without blocking, etc). The new %sc/%sx still do capture to these
2348 2352 magical list/string objects which make shell use much more
2349 2353 conveninent, so not all is lost.
2350 2354
2351 2355 XXX - FIX MANUAL for the change above!
2352 2356
2353 2357 (runsource): I copied code.py's runsource() into ipython to modify
2354 2358 it a bit. Now the code object and source to be executed are
2355 2359 stored in ipython. This makes this info accessible to third-party
2356 2360 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2357 2361 Mantegazza <mantegazza-AT-ill.fr>.
2358 2362
2359 2363 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2360 2364 history-search via readline (like C-p/C-n). I'd wanted this for a
2361 2365 long time, but only recently found out how to do it. For users
2362 2366 who already have their ipythonrc files made and want this, just
2363 2367 add:
2364 2368
2365 2369 readline_parse_and_bind "\e[A": history-search-backward
2366 2370 readline_parse_and_bind "\e[B": history-search-forward
2367 2371
2368 2372 2005-03-18 Fernando Perez <fperez@colorado.edu>
2369 2373
2370 2374 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2371 2375 LSString and SList classes which allow transparent conversions
2372 2376 between list mode and whitespace-separated string.
2373 2377 (magic_r): Fix recursion problem in %r.
2374 2378
2375 2379 * IPython/genutils.py (LSString): New class to be used for
2376 2380 automatic storage of the results of all alias/system calls in _o
2377 2381 and _e (stdout/err). These provide a .l/.list attribute which
2378 2382 does automatic splitting on newlines. This means that for most
2379 2383 uses, you'll never need to do capturing of output with %sc/%sx
2380 2384 anymore, since ipython keeps this always done for you. Note that
2381 2385 only the LAST results are stored, the _o/e variables are
2382 2386 overwritten on each call. If you need to save their contents
2383 2387 further, simply bind them to any other name.
2384 2388
2385 2389 2005-03-17 Fernando Perez <fperez@colorado.edu>
2386 2390
2387 2391 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2388 2392 prompt namespace handling.
2389 2393
2390 2394 2005-03-16 Fernando Perez <fperez@colorado.edu>
2391 2395
2392 2396 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2393 2397 classic prompts to be '>>> ' (final space was missing, and it
2394 2398 trips the emacs python mode).
2395 2399 (BasePrompt.__str__): Added safe support for dynamic prompt
2396 2400 strings. Now you can set your prompt string to be '$x', and the
2397 2401 value of x will be printed from your interactive namespace. The
2398 2402 interpolation syntax includes the full Itpl support, so
2399 2403 ${foo()+x+bar()} is a valid prompt string now, and the function
2400 2404 calls will be made at runtime.
2401 2405
2402 2406 2005-03-15 Fernando Perez <fperez@colorado.edu>
2403 2407
2404 2408 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2405 2409 avoid name clashes in pylab. %hist still works, it just forwards
2406 2410 the call to %history.
2407 2411
2408 2412 2005-03-02 *** Released version 0.6.12
2409 2413
2410 2414 2005-03-02 Fernando Perez <fperez@colorado.edu>
2411 2415
2412 2416 * IPython/iplib.py (handle_magic): log magic calls properly as
2413 2417 ipmagic() function calls.
2414 2418
2415 2419 * IPython/Magic.py (magic_time): Improved %time to support
2416 2420 statements and provide wall-clock as well as CPU time.
2417 2421
2418 2422 2005-02-27 Fernando Perez <fperez@colorado.edu>
2419 2423
2420 2424 * IPython/hooks.py: New hooks module, to expose user-modifiable
2421 2425 IPython functionality in a clean manner. For now only the editor
2422 2426 hook is actually written, and other thigns which I intend to turn
2423 2427 into proper hooks aren't yet there. The display and prefilter
2424 2428 stuff, for example, should be hooks. But at least now the
2425 2429 framework is in place, and the rest can be moved here with more
2426 2430 time later. IPython had had a .hooks variable for a long time for
2427 2431 this purpose, but I'd never actually used it for anything.
2428 2432
2429 2433 2005-02-26 Fernando Perez <fperez@colorado.edu>
2430 2434
2431 2435 * IPython/ipmaker.py (make_IPython): make the default ipython
2432 2436 directory be called _ipython under win32, to follow more the
2433 2437 naming peculiarities of that platform (where buggy software like
2434 2438 Visual Sourcesafe breaks with .named directories). Reported by
2435 2439 Ville Vainio.
2436 2440
2437 2441 2005-02-23 Fernando Perez <fperez@colorado.edu>
2438 2442
2439 2443 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2440 2444 auto_aliases for win32 which were causing problems. Users can
2441 2445 define the ones they personally like.
2442 2446
2443 2447 2005-02-21 Fernando Perez <fperez@colorado.edu>
2444 2448
2445 2449 * IPython/Magic.py (magic_time): new magic to time execution of
2446 2450 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2447 2451
2448 2452 2005-02-19 Fernando Perez <fperez@colorado.edu>
2449 2453
2450 2454 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2451 2455 into keys (for prompts, for example).
2452 2456
2453 2457 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2454 2458 prompts in case users want them. This introduces a small behavior
2455 2459 change: ipython does not automatically add a space to all prompts
2456 2460 anymore. To get the old prompts with a space, users should add it
2457 2461 manually to their ipythonrc file, so for example prompt_in1 should
2458 2462 now read 'In [\#]: ' instead of 'In [\#]:'.
2459 2463 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2460 2464 file) to control left-padding of secondary prompts.
2461 2465
2462 2466 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2463 2467 the profiler can't be imported. Fix for Debian, which removed
2464 2468 profile.py because of License issues. I applied a slightly
2465 2469 modified version of the original Debian patch at
2466 2470 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2467 2471
2468 2472 2005-02-17 Fernando Perez <fperez@colorado.edu>
2469 2473
2470 2474 * IPython/genutils.py (native_line_ends): Fix bug which would
2471 2475 cause improper line-ends under win32 b/c I was not opening files
2472 2476 in binary mode. Bug report and fix thanks to Ville.
2473 2477
2474 2478 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2475 2479 trying to catch spurious foo[1] autocalls. My fix actually broke
2476 2480 ',/' autoquote/call with explicit escape (bad regexp).
2477 2481
2478 2482 2005-02-15 *** Released version 0.6.11
2479 2483
2480 2484 2005-02-14 Fernando Perez <fperez@colorado.edu>
2481 2485
2482 2486 * IPython/background_jobs.py: New background job management
2483 2487 subsystem. This is implemented via a new set of classes, and
2484 2488 IPython now provides a builtin 'jobs' object for background job
2485 2489 execution. A convenience %bg magic serves as a lightweight
2486 2490 frontend for starting the more common type of calls. This was
2487 2491 inspired by discussions with B. Granger and the BackgroundCommand
2488 2492 class described in the book Python Scripting for Computational
2489 2493 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2490 2494 (although ultimately no code from this text was used, as IPython's
2491 2495 system is a separate implementation).
2492 2496
2493 2497 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2494 2498 to control the completion of single/double underscore names
2495 2499 separately. As documented in the example ipytonrc file, the
2496 2500 readline_omit__names variable can now be set to 2, to omit even
2497 2501 single underscore names. Thanks to a patch by Brian Wong
2498 2502 <BrianWong-AT-AirgoNetworks.Com>.
2499 2503 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2500 2504 be autocalled as foo([1]) if foo were callable. A problem for
2501 2505 things which are both callable and implement __getitem__.
2502 2506 (init_readline): Fix autoindentation for win32. Thanks to a patch
2503 2507 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2504 2508
2505 2509 2005-02-12 Fernando Perez <fperez@colorado.edu>
2506 2510
2507 2511 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2508 2512 which I had written long ago to sort out user error messages which
2509 2513 may occur during startup. This seemed like a good idea initially,
2510 2514 but it has proven a disaster in retrospect. I don't want to
2511 2515 change much code for now, so my fix is to set the internal 'debug'
2512 2516 flag to true everywhere, whose only job was precisely to control
2513 2517 this subsystem. This closes issue 28 (as well as avoiding all
2514 2518 sorts of strange hangups which occur from time to time).
2515 2519
2516 2520 2005-02-07 Fernando Perez <fperez@colorado.edu>
2517 2521
2518 2522 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2519 2523 previous call produced a syntax error.
2520 2524
2521 2525 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2522 2526 classes without constructor.
2523 2527
2524 2528 2005-02-06 Fernando Perez <fperez@colorado.edu>
2525 2529
2526 2530 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2527 2531 completions with the results of each matcher, so we return results
2528 2532 to the user from all namespaces. This breaks with ipython
2529 2533 tradition, but I think it's a nicer behavior. Now you get all
2530 2534 possible completions listed, from all possible namespaces (python,
2531 2535 filesystem, magics...) After a request by John Hunter
2532 2536 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2533 2537
2534 2538 2005-02-05 Fernando Perez <fperez@colorado.edu>
2535 2539
2536 2540 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2537 2541 the call had quote characters in it (the quotes were stripped).
2538 2542
2539 2543 2005-01-31 Fernando Perez <fperez@colorado.edu>
2540 2544
2541 2545 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2542 2546 Itpl.itpl() to make the code more robust against psyco
2543 2547 optimizations.
2544 2548
2545 2549 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2546 2550 of causing an exception. Quicker, cleaner.
2547 2551
2548 2552 2005-01-28 Fernando Perez <fperez@colorado.edu>
2549 2553
2550 2554 * scripts/ipython_win_post_install.py (install): hardcode
2551 2555 sys.prefix+'python.exe' as the executable path. It turns out that
2552 2556 during the post-installation run, sys.executable resolves to the
2553 2557 name of the binary installer! I should report this as a distutils
2554 2558 bug, I think. I updated the .10 release with this tiny fix, to
2555 2559 avoid annoying the lists further.
2556 2560
2557 2561 2005-01-27 *** Released version 0.6.10
2558 2562
2559 2563 2005-01-27 Fernando Perez <fperez@colorado.edu>
2560 2564
2561 2565 * IPython/numutils.py (norm): Added 'inf' as optional name for
2562 2566 L-infinity norm, included references to mathworld.com for vector
2563 2567 norm definitions.
2564 2568 (amin/amax): added amin/amax for array min/max. Similar to what
2565 2569 pylab ships with after the recent reorganization of names.
2566 2570 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2567 2571
2568 2572 * ipython.el: committed Alex's recent fixes and improvements.
2569 2573 Tested with python-mode from CVS, and it looks excellent. Since
2570 2574 python-mode hasn't released anything in a while, I'm temporarily
2571 2575 putting a copy of today's CVS (v 4.70) of python-mode in:
2572 2576 http://ipython.scipy.org/tmp/python-mode.el
2573 2577
2574 2578 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2575 2579 sys.executable for the executable name, instead of assuming it's
2576 2580 called 'python.exe' (the post-installer would have produced broken
2577 2581 setups on systems with a differently named python binary).
2578 2582
2579 2583 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2580 2584 references to os.linesep, to make the code more
2581 2585 platform-independent. This is also part of the win32 coloring
2582 2586 fixes.
2583 2587
2584 2588 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2585 2589 lines, which actually cause coloring bugs because the length of
2586 2590 the line is very difficult to correctly compute with embedded
2587 2591 escapes. This was the source of all the coloring problems under
2588 2592 Win32. I think that _finally_, Win32 users have a properly
2589 2593 working ipython in all respects. This would never have happened
2590 2594 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2591 2595
2592 2596 2005-01-26 *** Released version 0.6.9
2593 2597
2594 2598 2005-01-25 Fernando Perez <fperez@colorado.edu>
2595 2599
2596 2600 * setup.py: finally, we have a true Windows installer, thanks to
2597 2601 the excellent work of Viktor Ransmayr
2598 2602 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2599 2603 Windows users. The setup routine is quite a bit cleaner thanks to
2600 2604 this, and the post-install script uses the proper functions to
2601 2605 allow a clean de-installation using the standard Windows Control
2602 2606 Panel.
2603 2607
2604 2608 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2605 2609 environment variable under all OSes (including win32) if
2606 2610 available. This will give consistency to win32 users who have set
2607 2611 this variable for any reason. If os.environ['HOME'] fails, the
2608 2612 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2609 2613
2610 2614 2005-01-24 Fernando Perez <fperez@colorado.edu>
2611 2615
2612 2616 * IPython/numutils.py (empty_like): add empty_like(), similar to
2613 2617 zeros_like() but taking advantage of the new empty() Numeric routine.
2614 2618
2615 2619 2005-01-23 *** Released version 0.6.8
2616 2620
2617 2621 2005-01-22 Fernando Perez <fperez@colorado.edu>
2618 2622
2619 2623 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2620 2624 automatic show() calls. After discussing things with JDH, it
2621 2625 turns out there are too many corner cases where this can go wrong.
2622 2626 It's best not to try to be 'too smart', and simply have ipython
2623 2627 reproduce as much as possible the default behavior of a normal
2624 2628 python shell.
2625 2629
2626 2630 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2627 2631 line-splitting regexp and _prefilter() to avoid calling getattr()
2628 2632 on assignments. This closes
2629 2633 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2630 2634 readline uses getattr(), so a simple <TAB> keypress is still
2631 2635 enough to trigger getattr() calls on an object.
2632 2636
2633 2637 2005-01-21 Fernando Perez <fperez@colorado.edu>
2634 2638
2635 2639 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2636 2640 docstring under pylab so it doesn't mask the original.
2637 2641
2638 2642 2005-01-21 *** Released version 0.6.7
2639 2643
2640 2644 2005-01-21 Fernando Perez <fperez@colorado.edu>
2641 2645
2642 2646 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2643 2647 signal handling for win32 users in multithreaded mode.
2644 2648
2645 2649 2005-01-17 Fernando Perez <fperez@colorado.edu>
2646 2650
2647 2651 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2648 2652 instances with no __init__. After a crash report by Norbert Nemec
2649 2653 <Norbert-AT-nemec-online.de>.
2650 2654
2651 2655 2005-01-14 Fernando Perez <fperez@colorado.edu>
2652 2656
2653 2657 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2654 2658 names for verbose exceptions, when multiple dotted names and the
2655 2659 'parent' object were present on the same line.
2656 2660
2657 2661 2005-01-11 Fernando Perez <fperez@colorado.edu>
2658 2662
2659 2663 * IPython/genutils.py (flag_calls): new utility to trap and flag
2660 2664 calls in functions. I need it to clean up matplotlib support.
2661 2665 Also removed some deprecated code in genutils.
2662 2666
2663 2667 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2664 2668 that matplotlib scripts called with %run, which don't call show()
2665 2669 themselves, still have their plotting windows open.
2666 2670
2667 2671 2005-01-05 Fernando Perez <fperez@colorado.edu>
2668 2672
2669 2673 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2670 2674 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2671 2675
2672 2676 2004-12-19 Fernando Perez <fperez@colorado.edu>
2673 2677
2674 2678 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2675 2679 parent_runcode, which was an eyesore. The same result can be
2676 2680 obtained with Python's regular superclass mechanisms.
2677 2681
2678 2682 2004-12-17 Fernando Perez <fperez@colorado.edu>
2679 2683
2680 2684 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2681 2685 reported by Prabhu.
2682 2686 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2683 2687 sys.stderr) instead of explicitly calling sys.stderr. This helps
2684 2688 maintain our I/O abstractions clean, for future GUI embeddings.
2685 2689
2686 2690 * IPython/genutils.py (info): added new utility for sys.stderr
2687 2691 unified info message handling (thin wrapper around warn()).
2688 2692
2689 2693 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2690 2694 composite (dotted) names on verbose exceptions.
2691 2695 (VerboseTB.nullrepr): harden against another kind of errors which
2692 2696 Python's inspect module can trigger, and which were crashing
2693 2697 IPython. Thanks to a report by Marco Lombardi
2694 2698 <mlombard-AT-ma010192.hq.eso.org>.
2695 2699
2696 2700 2004-12-13 *** Released version 0.6.6
2697 2701
2698 2702 2004-12-12 Fernando Perez <fperez@colorado.edu>
2699 2703
2700 2704 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2701 2705 generated by pygtk upon initialization if it was built without
2702 2706 threads (for matplotlib users). After a crash reported by
2703 2707 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2704 2708
2705 2709 * IPython/ipmaker.py (make_IPython): fix small bug in the
2706 2710 import_some parameter for multiple imports.
2707 2711
2708 2712 * IPython/iplib.py (ipmagic): simplified the interface of
2709 2713 ipmagic() to take a single string argument, just as it would be
2710 2714 typed at the IPython cmd line.
2711 2715 (ipalias): Added new ipalias() with an interface identical to
2712 2716 ipmagic(). This completes exposing a pure python interface to the
2713 2717 alias and magic system, which can be used in loops or more complex
2714 2718 code where IPython's automatic line mangling is not active.
2715 2719
2716 2720 * IPython/genutils.py (timing): changed interface of timing to
2717 2721 simply run code once, which is the most common case. timings()
2718 2722 remains unchanged, for the cases where you want multiple runs.
2719 2723
2720 2724 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2721 2725 bug where Python2.2 crashes with exec'ing code which does not end
2722 2726 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2723 2727 before.
2724 2728
2725 2729 2004-12-10 Fernando Perez <fperez@colorado.edu>
2726 2730
2727 2731 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2728 2732 -t to -T, to accomodate the new -t flag in %run (the %run and
2729 2733 %prun options are kind of intermixed, and it's not easy to change
2730 2734 this with the limitations of python's getopt).
2731 2735
2732 2736 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2733 2737 the execution of scripts. It's not as fine-tuned as timeit.py,
2734 2738 but it works from inside ipython (and under 2.2, which lacks
2735 2739 timeit.py). Optionally a number of runs > 1 can be given for
2736 2740 timing very short-running code.
2737 2741
2738 2742 * IPython/genutils.py (uniq_stable): new routine which returns a
2739 2743 list of unique elements in any iterable, but in stable order of
2740 2744 appearance. I needed this for the ultraTB fixes, and it's a handy
2741 2745 utility.
2742 2746
2743 2747 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2744 2748 dotted names in Verbose exceptions. This had been broken since
2745 2749 the very start, now x.y will properly be printed in a Verbose
2746 2750 traceback, instead of x being shown and y appearing always as an
2747 2751 'undefined global'. Getting this to work was a bit tricky,
2748 2752 because by default python tokenizers are stateless. Saved by
2749 2753 python's ability to easily add a bit of state to an arbitrary
2750 2754 function (without needing to build a full-blown callable object).
2751 2755
2752 2756 Also big cleanup of this code, which had horrendous runtime
2753 2757 lookups of zillions of attributes for colorization. Moved all
2754 2758 this code into a few templates, which make it cleaner and quicker.
2755 2759
2756 2760 Printout quality was also improved for Verbose exceptions: one
2757 2761 variable per line, and memory addresses are printed (this can be
2758 2762 quite handy in nasty debugging situations, which is what Verbose
2759 2763 is for).
2760 2764
2761 2765 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2762 2766 the command line as scripts to be loaded by embedded instances.
2763 2767 Doing so has the potential for an infinite recursion if there are
2764 2768 exceptions thrown in the process. This fixes a strange crash
2765 2769 reported by Philippe MULLER <muller-AT-irit.fr>.
2766 2770
2767 2771 2004-12-09 Fernando Perez <fperez@colorado.edu>
2768 2772
2769 2773 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2770 2774 to reflect new names in matplotlib, which now expose the
2771 2775 matlab-compatible interface via a pylab module instead of the
2772 2776 'matlab' name. The new code is backwards compatible, so users of
2773 2777 all matplotlib versions are OK. Patch by J. Hunter.
2774 2778
2775 2779 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2776 2780 of __init__ docstrings for instances (class docstrings are already
2777 2781 automatically printed). Instances with customized docstrings
2778 2782 (indep. of the class) are also recognized and all 3 separate
2779 2783 docstrings are printed (instance, class, constructor). After some
2780 2784 comments/suggestions by J. Hunter.
2781 2785
2782 2786 2004-12-05 Fernando Perez <fperez@colorado.edu>
2783 2787
2784 2788 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2785 2789 warnings when tab-completion fails and triggers an exception.
2786 2790
2787 2791 2004-12-03 Fernando Perez <fperez@colorado.edu>
2788 2792
2789 2793 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2790 2794 be triggered when using 'run -p'. An incorrect option flag was
2791 2795 being set ('d' instead of 'D').
2792 2796 (manpage): fix missing escaped \- sign.
2793 2797
2794 2798 2004-11-30 *** Released version 0.6.5
2795 2799
2796 2800 2004-11-30 Fernando Perez <fperez@colorado.edu>
2797 2801
2798 2802 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2799 2803 setting with -d option.
2800 2804
2801 2805 * setup.py (docfiles): Fix problem where the doc glob I was using
2802 2806 was COMPLETELY BROKEN. It was giving the right files by pure
2803 2807 accident, but failed once I tried to include ipython.el. Note:
2804 2808 glob() does NOT allow you to do exclusion on multiple endings!
2805 2809
2806 2810 2004-11-29 Fernando Perez <fperez@colorado.edu>
2807 2811
2808 2812 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2809 2813 the manpage as the source. Better formatting & consistency.
2810 2814
2811 2815 * IPython/Magic.py (magic_run): Added new -d option, to run
2812 2816 scripts under the control of the python pdb debugger. Note that
2813 2817 this required changing the %prun option -d to -D, to avoid a clash
2814 2818 (since %run must pass options to %prun, and getopt is too dumb to
2815 2819 handle options with string values with embedded spaces). Thanks
2816 2820 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2817 2821 (magic_who_ls): added type matching to %who and %whos, so that one
2818 2822 can filter their output to only include variables of certain
2819 2823 types. Another suggestion by Matthew.
2820 2824 (magic_whos): Added memory summaries in kb and Mb for arrays.
2821 2825 (magic_who): Improve formatting (break lines every 9 vars).
2822 2826
2823 2827 2004-11-28 Fernando Perez <fperez@colorado.edu>
2824 2828
2825 2829 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2826 2830 cache when empty lines were present.
2827 2831
2828 2832 2004-11-24 Fernando Perez <fperez@colorado.edu>
2829 2833
2830 2834 * IPython/usage.py (__doc__): document the re-activated threading
2831 2835 options for WX and GTK.
2832 2836
2833 2837 2004-11-23 Fernando Perez <fperez@colorado.edu>
2834 2838
2835 2839 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2836 2840 the -wthread and -gthread options, along with a new -tk one to try
2837 2841 and coordinate Tk threading with wx/gtk. The tk support is very
2838 2842 platform dependent, since it seems to require Tcl and Tk to be
2839 2843 built with threads (Fedora1/2 appears NOT to have it, but in
2840 2844 Prabhu's Debian boxes it works OK). But even with some Tk
2841 2845 limitations, this is a great improvement.
2842 2846
2843 2847 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2844 2848 info in user prompts. Patch by Prabhu.
2845 2849
2846 2850 2004-11-18 Fernando Perez <fperez@colorado.edu>
2847 2851
2848 2852 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2849 2853 EOFErrors and bail, to avoid infinite loops if a non-terminating
2850 2854 file is fed into ipython. Patch submitted in issue 19 by user,
2851 2855 many thanks.
2852 2856
2853 2857 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2854 2858 autoquote/parens in continuation prompts, which can cause lots of
2855 2859 problems. Closes roundup issue 20.
2856 2860
2857 2861 2004-11-17 Fernando Perez <fperez@colorado.edu>
2858 2862
2859 2863 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2860 2864 reported as debian bug #280505. I'm not sure my local changelog
2861 2865 entry has the proper debian format (Jack?).
2862 2866
2863 2867 2004-11-08 *** Released version 0.6.4
2864 2868
2865 2869 2004-11-08 Fernando Perez <fperez@colorado.edu>
2866 2870
2867 2871 * IPython/iplib.py (init_readline): Fix exit message for Windows
2868 2872 when readline is active. Thanks to a report by Eric Jones
2869 2873 <eric-AT-enthought.com>.
2870 2874
2871 2875 2004-11-07 Fernando Perez <fperez@colorado.edu>
2872 2876
2873 2877 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2874 2878 sometimes seen by win2k/cygwin users.
2875 2879
2876 2880 2004-11-06 Fernando Perez <fperez@colorado.edu>
2877 2881
2878 2882 * IPython/iplib.py (interact): Change the handling of %Exit from
2879 2883 trying to propagate a SystemExit to an internal ipython flag.
2880 2884 This is less elegant than using Python's exception mechanism, but
2881 2885 I can't get that to work reliably with threads, so under -pylab
2882 2886 %Exit was hanging IPython. Cross-thread exception handling is
2883 2887 really a bitch. Thaks to a bug report by Stephen Walton
2884 2888 <stephen.walton-AT-csun.edu>.
2885 2889
2886 2890 2004-11-04 Fernando Perez <fperez@colorado.edu>
2887 2891
2888 2892 * IPython/iplib.py (raw_input_original): store a pointer to the
2889 2893 true raw_input to harden against code which can modify it
2890 2894 (wx.py.PyShell does this and would otherwise crash ipython).
2891 2895 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2892 2896
2893 2897 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2894 2898 Ctrl-C problem, which does not mess up the input line.
2895 2899
2896 2900 2004-11-03 Fernando Perez <fperez@colorado.edu>
2897 2901
2898 2902 * IPython/Release.py: Changed licensing to BSD, in all files.
2899 2903 (name): lowercase name for tarball/RPM release.
2900 2904
2901 2905 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2902 2906 use throughout ipython.
2903 2907
2904 2908 * IPython/Magic.py (Magic._ofind): Switch to using the new
2905 2909 OInspect.getdoc() function.
2906 2910
2907 2911 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2908 2912 of the line currently being canceled via Ctrl-C. It's extremely
2909 2913 ugly, but I don't know how to do it better (the problem is one of
2910 2914 handling cross-thread exceptions).
2911 2915
2912 2916 2004-10-28 Fernando Perez <fperez@colorado.edu>
2913 2917
2914 2918 * IPython/Shell.py (signal_handler): add signal handlers to trap
2915 2919 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2916 2920 report by Francesc Alted.
2917 2921
2918 2922 2004-10-21 Fernando Perez <fperez@colorado.edu>
2919 2923
2920 2924 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2921 2925 to % for pysh syntax extensions.
2922 2926
2923 2927 2004-10-09 Fernando Perez <fperez@colorado.edu>
2924 2928
2925 2929 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2926 2930 arrays to print a more useful summary, without calling str(arr).
2927 2931 This avoids the problem of extremely lengthy computations which
2928 2932 occur if arr is large, and appear to the user as a system lockup
2929 2933 with 100% cpu activity. After a suggestion by Kristian Sandberg
2930 2934 <Kristian.Sandberg@colorado.edu>.
2931 2935 (Magic.__init__): fix bug in global magic escapes not being
2932 2936 correctly set.
2933 2937
2934 2938 2004-10-08 Fernando Perez <fperez@colorado.edu>
2935 2939
2936 2940 * IPython/Magic.py (__license__): change to absolute imports of
2937 2941 ipython's own internal packages, to start adapting to the absolute
2938 2942 import requirement of PEP-328.
2939 2943
2940 2944 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2941 2945 files, and standardize author/license marks through the Release
2942 2946 module instead of having per/file stuff (except for files with
2943 2947 particular licenses, like the MIT/PSF-licensed codes).
2944 2948
2945 2949 * IPython/Debugger.py: remove dead code for python 2.1
2946 2950
2947 2951 2004-10-04 Fernando Perez <fperez@colorado.edu>
2948 2952
2949 2953 * IPython/iplib.py (ipmagic): New function for accessing magics
2950 2954 via a normal python function call.
2951 2955
2952 2956 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2953 2957 from '@' to '%', to accomodate the new @decorator syntax of python
2954 2958 2.4.
2955 2959
2956 2960 2004-09-29 Fernando Perez <fperez@colorado.edu>
2957 2961
2958 2962 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2959 2963 matplotlib.use to prevent running scripts which try to switch
2960 2964 interactive backends from within ipython. This will just crash
2961 2965 the python interpreter, so we can't allow it (but a detailed error
2962 2966 is given to the user).
2963 2967
2964 2968 2004-09-28 Fernando Perez <fperez@colorado.edu>
2965 2969
2966 2970 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2967 2971 matplotlib-related fixes so that using @run with non-matplotlib
2968 2972 scripts doesn't pop up spurious plot windows. This requires
2969 2973 matplotlib >= 0.63, where I had to make some changes as well.
2970 2974
2971 2975 * IPython/ipmaker.py (make_IPython): update version requirement to
2972 2976 python 2.2.
2973 2977
2974 2978 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2975 2979 banner arg for embedded customization.
2976 2980
2977 2981 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2978 2982 explicit uses of __IP as the IPython's instance name. Now things
2979 2983 are properly handled via the shell.name value. The actual code
2980 2984 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2981 2985 is much better than before. I'll clean things completely when the
2982 2986 magic stuff gets a real overhaul.
2983 2987
2984 2988 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2985 2989 minor changes to debian dir.
2986 2990
2987 2991 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2988 2992 pointer to the shell itself in the interactive namespace even when
2989 2993 a user-supplied dict is provided. This is needed for embedding
2990 2994 purposes (found by tests with Michel Sanner).
2991 2995
2992 2996 2004-09-27 Fernando Perez <fperez@colorado.edu>
2993 2997
2994 2998 * IPython/UserConfig/ipythonrc: remove []{} from
2995 2999 readline_remove_delims, so that things like [modname.<TAB> do
2996 3000 proper completion. This disables [].TAB, but that's a less common
2997 3001 case than module names in list comprehensions, for example.
2998 3002 Thanks to a report by Andrea Riciputi.
2999 3003
3000 3004 2004-09-09 Fernando Perez <fperez@colorado.edu>
3001 3005
3002 3006 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3003 3007 blocking problems in win32 and osx. Fix by John.
3004 3008
3005 3009 2004-09-08 Fernando Perez <fperez@colorado.edu>
3006 3010
3007 3011 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3008 3012 for Win32 and OSX. Fix by John Hunter.
3009 3013
3010 3014 2004-08-30 *** Released version 0.6.3
3011 3015
3012 3016 2004-08-30 Fernando Perez <fperez@colorado.edu>
3013 3017
3014 3018 * setup.py (isfile): Add manpages to list of dependent files to be
3015 3019 updated.
3016 3020
3017 3021 2004-08-27 Fernando Perez <fperez@colorado.edu>
3018 3022
3019 3023 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3020 3024 for now. They don't really work with standalone WX/GTK code
3021 3025 (though matplotlib IS working fine with both of those backends).
3022 3026 This will neeed much more testing. I disabled most things with
3023 3027 comments, so turning it back on later should be pretty easy.
3024 3028
3025 3029 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3026 3030 autocalling of expressions like r'foo', by modifying the line
3027 3031 split regexp. Closes
3028 3032 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3029 3033 Riley <ipythonbugs-AT-sabi.net>.
3030 3034 (InteractiveShell.mainloop): honor --nobanner with banner
3031 3035 extensions.
3032 3036
3033 3037 * IPython/Shell.py: Significant refactoring of all classes, so
3034 3038 that we can really support ALL matplotlib backends and threading
3035 3039 models (John spotted a bug with Tk which required this). Now we
3036 3040 should support single-threaded, WX-threads and GTK-threads, both
3037 3041 for generic code and for matplotlib.
3038 3042
3039 3043 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3040 3044 -pylab, to simplify things for users. Will also remove the pylab
3041 3045 profile, since now all of matplotlib configuration is directly
3042 3046 handled here. This also reduces startup time.
3043 3047
3044 3048 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3045 3049 shell wasn't being correctly called. Also in IPShellWX.
3046 3050
3047 3051 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3048 3052 fine-tune banner.
3049 3053
3050 3054 * IPython/numutils.py (spike): Deprecate these spike functions,
3051 3055 delete (long deprecated) gnuplot_exec handler.
3052 3056
3053 3057 2004-08-26 Fernando Perez <fperez@colorado.edu>
3054 3058
3055 3059 * ipython.1: Update for threading options, plus some others which
3056 3060 were missing.
3057 3061
3058 3062 * IPython/ipmaker.py (__call__): Added -wthread option for
3059 3063 wxpython thread handling. Make sure threading options are only
3060 3064 valid at the command line.
3061 3065
3062 3066 * scripts/ipython: moved shell selection into a factory function
3063 3067 in Shell.py, to keep the starter script to a minimum.
3064 3068
3065 3069 2004-08-25 Fernando Perez <fperez@colorado.edu>
3066 3070
3067 3071 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3068 3072 John. Along with some recent changes he made to matplotlib, the
3069 3073 next versions of both systems should work very well together.
3070 3074
3071 3075 2004-08-24 Fernando Perez <fperez@colorado.edu>
3072 3076
3073 3077 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3074 3078 tried to switch the profiling to using hotshot, but I'm getting
3075 3079 strange errors from prof.runctx() there. I may be misreading the
3076 3080 docs, but it looks weird. For now the profiling code will
3077 3081 continue to use the standard profiler.
3078 3082
3079 3083 2004-08-23 Fernando Perez <fperez@colorado.edu>
3080 3084
3081 3085 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3082 3086 threaded shell, by John Hunter. It's not quite ready yet, but
3083 3087 close.
3084 3088
3085 3089 2004-08-22 Fernando Perez <fperez@colorado.edu>
3086 3090
3087 3091 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3088 3092 in Magic and ultraTB.
3089 3093
3090 3094 * ipython.1: document threading options in manpage.
3091 3095
3092 3096 * scripts/ipython: Changed name of -thread option to -gthread,
3093 3097 since this is GTK specific. I want to leave the door open for a
3094 3098 -wthread option for WX, which will most likely be necessary. This
3095 3099 change affects usage and ipmaker as well.
3096 3100
3097 3101 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3098 3102 handle the matplotlib shell issues. Code by John Hunter
3099 3103 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3100 3104 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3101 3105 broken (and disabled for end users) for now, but it puts the
3102 3106 infrastructure in place.
3103 3107
3104 3108 2004-08-21 Fernando Perez <fperez@colorado.edu>
3105 3109
3106 3110 * ipythonrc-pylab: Add matplotlib support.
3107 3111
3108 3112 * matplotlib_config.py: new files for matplotlib support, part of
3109 3113 the pylab profile.
3110 3114
3111 3115 * IPython/usage.py (__doc__): documented the threading options.
3112 3116
3113 3117 2004-08-20 Fernando Perez <fperez@colorado.edu>
3114 3118
3115 3119 * ipython: Modified the main calling routine to handle the -thread
3116 3120 and -mpthread options. This needs to be done as a top-level hack,
3117 3121 because it determines which class to instantiate for IPython
3118 3122 itself.
3119 3123
3120 3124 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3121 3125 classes to support multithreaded GTK operation without blocking,
3122 3126 and matplotlib with all backends. This is a lot of still very
3123 3127 experimental code, and threads are tricky. So it may still have a
3124 3128 few rough edges... This code owes a lot to
3125 3129 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3126 3130 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3127 3131 to John Hunter for all the matplotlib work.
3128 3132
3129 3133 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3130 3134 options for gtk thread and matplotlib support.
3131 3135
3132 3136 2004-08-16 Fernando Perez <fperez@colorado.edu>
3133 3137
3134 3138 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3135 3139 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3136 3140 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3137 3141
3138 3142 2004-08-11 Fernando Perez <fperez@colorado.edu>
3139 3143
3140 3144 * setup.py (isfile): Fix build so documentation gets updated for
3141 3145 rpms (it was only done for .tgz builds).
3142 3146
3143 3147 2004-08-10 Fernando Perez <fperez@colorado.edu>
3144 3148
3145 3149 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3146 3150
3147 3151 * iplib.py : Silence syntax error exceptions in tab-completion.
3148 3152
3149 3153 2004-08-05 Fernando Perez <fperez@colorado.edu>
3150 3154
3151 3155 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3152 3156 'color off' mark for continuation prompts. This was causing long
3153 3157 continuation lines to mis-wrap.
3154 3158
3155 3159 2004-08-01 Fernando Perez <fperez@colorado.edu>
3156 3160
3157 3161 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3158 3162 for building ipython to be a parameter. All this is necessary
3159 3163 right now to have a multithreaded version, but this insane
3160 3164 non-design will be cleaned up soon. For now, it's a hack that
3161 3165 works.
3162 3166
3163 3167 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3164 3168 args in various places. No bugs so far, but it's a dangerous
3165 3169 practice.
3166 3170
3167 3171 2004-07-31 Fernando Perez <fperez@colorado.edu>
3168 3172
3169 3173 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3170 3174 fix completion of files with dots in their names under most
3171 3175 profiles (pysh was OK because the completion order is different).
3172 3176
3173 3177 2004-07-27 Fernando Perez <fperez@colorado.edu>
3174 3178
3175 3179 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3176 3180 keywords manually, b/c the one in keyword.py was removed in python
3177 3181 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3178 3182 This is NOT a bug under python 2.3 and earlier.
3179 3183
3180 3184 2004-07-26 Fernando Perez <fperez@colorado.edu>
3181 3185
3182 3186 * IPython/ultraTB.py (VerboseTB.text): Add another
3183 3187 linecache.checkcache() call to try to prevent inspect.py from
3184 3188 crashing under python 2.3. I think this fixes
3185 3189 http://www.scipy.net/roundup/ipython/issue17.
3186 3190
3187 3191 2004-07-26 *** Released version 0.6.2
3188 3192
3189 3193 2004-07-26 Fernando Perez <fperez@colorado.edu>
3190 3194
3191 3195 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3192 3196 fail for any number.
3193 3197 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3194 3198 empty bookmarks.
3195 3199
3196 3200 2004-07-26 *** Released version 0.6.1
3197 3201
3198 3202 2004-07-26 Fernando Perez <fperez@colorado.edu>
3199 3203
3200 3204 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3201 3205
3202 3206 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3203 3207 escaping '()[]{}' in filenames.
3204 3208
3205 3209 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3206 3210 Python 2.2 users who lack a proper shlex.split.
3207 3211
3208 3212 2004-07-19 Fernando Perez <fperez@colorado.edu>
3209 3213
3210 3214 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3211 3215 for reading readline's init file. I follow the normal chain:
3212 3216 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3213 3217 report by Mike Heeter. This closes
3214 3218 http://www.scipy.net/roundup/ipython/issue16.
3215 3219
3216 3220 2004-07-18 Fernando Perez <fperez@colorado.edu>
3217 3221
3218 3222 * IPython/iplib.py (__init__): Add better handling of '\' under
3219 3223 Win32 for filenames. After a patch by Ville.
3220 3224
3221 3225 2004-07-17 Fernando Perez <fperez@colorado.edu>
3222 3226
3223 3227 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3224 3228 autocalling would be triggered for 'foo is bar' if foo is
3225 3229 callable. I also cleaned up the autocall detection code to use a
3226 3230 regexp, which is faster. Bug reported by Alexander Schmolck.
3227 3231
3228 3232 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3229 3233 '?' in them would confuse the help system. Reported by Alex
3230 3234 Schmolck.
3231 3235
3232 3236 2004-07-16 Fernando Perez <fperez@colorado.edu>
3233 3237
3234 3238 * IPython/GnuplotInteractive.py (__all__): added plot2.
3235 3239
3236 3240 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3237 3241 plotting dictionaries, lists or tuples of 1d arrays.
3238 3242
3239 3243 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3240 3244 optimizations.
3241 3245
3242 3246 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3243 3247 the information which was there from Janko's original IPP code:
3244 3248
3245 3249 03.05.99 20:53 porto.ifm.uni-kiel.de
3246 3250 --Started changelog.
3247 3251 --make clear do what it say it does
3248 3252 --added pretty output of lines from inputcache
3249 3253 --Made Logger a mixin class, simplifies handling of switches
3250 3254 --Added own completer class. .string<TAB> expands to last history
3251 3255 line which starts with string. The new expansion is also present
3252 3256 with Ctrl-r from the readline library. But this shows, who this
3253 3257 can be done for other cases.
3254 3258 --Added convention that all shell functions should accept a
3255 3259 parameter_string This opens the door for different behaviour for
3256 3260 each function. @cd is a good example of this.
3257 3261
3258 3262 04.05.99 12:12 porto.ifm.uni-kiel.de
3259 3263 --added logfile rotation
3260 3264 --added new mainloop method which freezes first the namespace
3261 3265
3262 3266 07.05.99 21:24 porto.ifm.uni-kiel.de
3263 3267 --added the docreader classes. Now there is a help system.
3264 3268 -This is only a first try. Currently it's not easy to put new
3265 3269 stuff in the indices. But this is the way to go. Info would be
3266 3270 better, but HTML is every where and not everybody has an info
3267 3271 system installed and it's not so easy to change html-docs to info.
3268 3272 --added global logfile option
3269 3273 --there is now a hook for object inspection method pinfo needs to
3270 3274 be provided for this. Can be reached by two '??'.
3271 3275
3272 3276 08.05.99 20:51 porto.ifm.uni-kiel.de
3273 3277 --added a README
3274 3278 --bug in rc file. Something has changed so functions in the rc
3275 3279 file need to reference the shell and not self. Not clear if it's a
3276 3280 bug or feature.
3277 3281 --changed rc file for new behavior
3278 3282
3279 3283 2004-07-15 Fernando Perez <fperez@colorado.edu>
3280 3284
3281 3285 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3282 3286 cache was falling out of sync in bizarre manners when multi-line
3283 3287 input was present. Minor optimizations and cleanup.
3284 3288
3285 3289 (Logger): Remove old Changelog info for cleanup. This is the
3286 3290 information which was there from Janko's original code:
3287 3291
3288 3292 Changes to Logger: - made the default log filename a parameter
3289 3293
3290 3294 - put a check for lines beginning with !@? in log(). Needed
3291 3295 (even if the handlers properly log their lines) for mid-session
3292 3296 logging activation to work properly. Without this, lines logged
3293 3297 in mid session, which get read from the cache, would end up
3294 3298 'bare' (with !@? in the open) in the log. Now they are caught
3295 3299 and prepended with a #.
3296 3300
3297 3301 * IPython/iplib.py (InteractiveShell.init_readline): added check
3298 3302 in case MagicCompleter fails to be defined, so we don't crash.
3299 3303
3300 3304 2004-07-13 Fernando Perez <fperez@colorado.edu>
3301 3305
3302 3306 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3303 3307 of EPS if the requested filename ends in '.eps'.
3304 3308
3305 3309 2004-07-04 Fernando Perez <fperez@colorado.edu>
3306 3310
3307 3311 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3308 3312 escaping of quotes when calling the shell.
3309 3313
3310 3314 2004-07-02 Fernando Perez <fperez@colorado.edu>
3311 3315
3312 3316 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3313 3317 gettext not working because we were clobbering '_'. Fixes
3314 3318 http://www.scipy.net/roundup/ipython/issue6.
3315 3319
3316 3320 2004-07-01 Fernando Perez <fperez@colorado.edu>
3317 3321
3318 3322 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3319 3323 into @cd. Patch by Ville.
3320 3324
3321 3325 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3322 3326 new function to store things after ipmaker runs. Patch by Ville.
3323 3327 Eventually this will go away once ipmaker is removed and the class
3324 3328 gets cleaned up, but for now it's ok. Key functionality here is
3325 3329 the addition of the persistent storage mechanism, a dict for
3326 3330 keeping data across sessions (for now just bookmarks, but more can
3327 3331 be implemented later).
3328 3332
3329 3333 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3330 3334 persistent across sections. Patch by Ville, I modified it
3331 3335 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3332 3336 added a '-l' option to list all bookmarks.
3333 3337
3334 3338 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3335 3339 center for cleanup. Registered with atexit.register(). I moved
3336 3340 here the old exit_cleanup(). After a patch by Ville.
3337 3341
3338 3342 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3339 3343 characters in the hacked shlex_split for python 2.2.
3340 3344
3341 3345 * IPython/iplib.py (file_matches): more fixes to filenames with
3342 3346 whitespace in them. It's not perfect, but limitations in python's
3343 3347 readline make it impossible to go further.
3344 3348
3345 3349 2004-06-29 Fernando Perez <fperez@colorado.edu>
3346 3350
3347 3351 * IPython/iplib.py (file_matches): escape whitespace correctly in
3348 3352 filename completions. Bug reported by Ville.
3349 3353
3350 3354 2004-06-28 Fernando Perez <fperez@colorado.edu>
3351 3355
3352 3356 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3353 3357 the history file will be called 'history-PROFNAME' (or just
3354 3358 'history' if no profile is loaded). I was getting annoyed at
3355 3359 getting my Numerical work history clobbered by pysh sessions.
3356 3360
3357 3361 * IPython/iplib.py (InteractiveShell.__init__): Internal
3358 3362 getoutputerror() function so that we can honor the system_verbose
3359 3363 flag for _all_ system calls. I also added escaping of #
3360 3364 characters here to avoid confusing Itpl.
3361 3365
3362 3366 * IPython/Magic.py (shlex_split): removed call to shell in
3363 3367 parse_options and replaced it with shlex.split(). The annoying
3364 3368 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3365 3369 to backport it from 2.3, with several frail hacks (the shlex
3366 3370 module is rather limited in 2.2). Thanks to a suggestion by Ville
3367 3371 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3368 3372 problem.
3369 3373
3370 3374 (Magic.magic_system_verbose): new toggle to print the actual
3371 3375 system calls made by ipython. Mainly for debugging purposes.
3372 3376
3373 3377 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3374 3378 doesn't support persistence. Reported (and fix suggested) by
3375 3379 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3376 3380
3377 3381 2004-06-26 Fernando Perez <fperez@colorado.edu>
3378 3382
3379 3383 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3380 3384 continue prompts.
3381 3385
3382 3386 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3383 3387 function (basically a big docstring) and a few more things here to
3384 3388 speedup startup. pysh.py is now very lightweight. We want because
3385 3389 it gets execfile'd, while InterpreterExec gets imported, so
3386 3390 byte-compilation saves time.
3387 3391
3388 3392 2004-06-25 Fernando Perez <fperez@colorado.edu>
3389 3393
3390 3394 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3391 3395 -NUM', which was recently broken.
3392 3396
3393 3397 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3394 3398 in multi-line input (but not !!, which doesn't make sense there).
3395 3399
3396 3400 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3397 3401 It's just too useful, and people can turn it off in the less
3398 3402 common cases where it's a problem.
3399 3403
3400 3404 2004-06-24 Fernando Perez <fperez@colorado.edu>
3401 3405
3402 3406 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3403 3407 special syntaxes (like alias calling) is now allied in multi-line
3404 3408 input. This is still _very_ experimental, but it's necessary for
3405 3409 efficient shell usage combining python looping syntax with system
3406 3410 calls. For now it's restricted to aliases, I don't think it
3407 3411 really even makes sense to have this for magics.
3408 3412
3409 3413 2004-06-23 Fernando Perez <fperez@colorado.edu>
3410 3414
3411 3415 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3412 3416 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3413 3417
3414 3418 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3415 3419 extensions under Windows (after code sent by Gary Bishop). The
3416 3420 extensions considered 'executable' are stored in IPython's rc
3417 3421 structure as win_exec_ext.
3418 3422
3419 3423 * IPython/genutils.py (shell): new function, like system() but
3420 3424 without return value. Very useful for interactive shell work.
3421 3425
3422 3426 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3423 3427 delete aliases.
3424 3428
3425 3429 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3426 3430 sure that the alias table doesn't contain python keywords.
3427 3431
3428 3432 2004-06-21 Fernando Perez <fperez@colorado.edu>
3429 3433
3430 3434 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3431 3435 non-existent items are found in $PATH. Reported by Thorsten.
3432 3436
3433 3437 2004-06-20 Fernando Perez <fperez@colorado.edu>
3434 3438
3435 3439 * IPython/iplib.py (complete): modified the completer so that the
3436 3440 order of priorities can be easily changed at runtime.
3437 3441
3438 3442 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3439 3443 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3440 3444
3441 3445 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3442 3446 expand Python variables prepended with $ in all system calls. The
3443 3447 same was done to InteractiveShell.handle_shell_escape. Now all
3444 3448 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3445 3449 expansion of python variables and expressions according to the
3446 3450 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3447 3451
3448 3452 Though PEP-215 has been rejected, a similar (but simpler) one
3449 3453 seems like it will go into Python 2.4, PEP-292 -
3450 3454 http://www.python.org/peps/pep-0292.html.
3451 3455
3452 3456 I'll keep the full syntax of PEP-215, since IPython has since the
3453 3457 start used Ka-Ping Yee's reference implementation discussed there
3454 3458 (Itpl), and I actually like the powerful semantics it offers.
3455 3459
3456 3460 In order to access normal shell variables, the $ has to be escaped
3457 3461 via an extra $. For example:
3458 3462
3459 3463 In [7]: PATH='a python variable'
3460 3464
3461 3465 In [8]: !echo $PATH
3462 3466 a python variable
3463 3467
3464 3468 In [9]: !echo $$PATH
3465 3469 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3466 3470
3467 3471 (Magic.parse_options): escape $ so the shell doesn't evaluate
3468 3472 things prematurely.
3469 3473
3470 3474 * IPython/iplib.py (InteractiveShell.call_alias): added the
3471 3475 ability for aliases to expand python variables via $.
3472 3476
3473 3477 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3474 3478 system, now there's a @rehash/@rehashx pair of magics. These work
3475 3479 like the csh rehash command, and can be invoked at any time. They
3476 3480 build a table of aliases to everything in the user's $PATH
3477 3481 (@rehash uses everything, @rehashx is slower but only adds
3478 3482 executable files). With this, the pysh.py-based shell profile can
3479 3483 now simply call rehash upon startup, and full access to all
3480 3484 programs in the user's path is obtained.
3481 3485
3482 3486 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3483 3487 functionality is now fully in place. I removed the old dynamic
3484 3488 code generation based approach, in favor of a much lighter one
3485 3489 based on a simple dict. The advantage is that this allows me to
3486 3490 now have thousands of aliases with negligible cost (unthinkable
3487 3491 with the old system).
3488 3492
3489 3493 2004-06-19 Fernando Perez <fperez@colorado.edu>
3490 3494
3491 3495 * IPython/iplib.py (__init__): extended MagicCompleter class to
3492 3496 also complete (last in priority) on user aliases.
3493 3497
3494 3498 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3495 3499 call to eval.
3496 3500 (ItplNS.__init__): Added a new class which functions like Itpl,
3497 3501 but allows configuring the namespace for the evaluation to occur
3498 3502 in.
3499 3503
3500 3504 2004-06-18 Fernando Perez <fperez@colorado.edu>
3501 3505
3502 3506 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3503 3507 better message when 'exit' or 'quit' are typed (a common newbie
3504 3508 confusion).
3505 3509
3506 3510 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3507 3511 check for Windows users.
3508 3512
3509 3513 * IPython/iplib.py (InteractiveShell.user_setup): removed
3510 3514 disabling of colors for Windows. I'll test at runtime and issue a
3511 3515 warning if Gary's readline isn't found, as to nudge users to
3512 3516 download it.
3513 3517
3514 3518 2004-06-16 Fernando Perez <fperez@colorado.edu>
3515 3519
3516 3520 * IPython/genutils.py (Stream.__init__): changed to print errors
3517 3521 to sys.stderr. I had a circular dependency here. Now it's
3518 3522 possible to run ipython as IDLE's shell (consider this pre-alpha,
3519 3523 since true stdout things end up in the starting terminal instead
3520 3524 of IDLE's out).
3521 3525
3522 3526 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3523 3527 users who haven't # updated their prompt_in2 definitions. Remove
3524 3528 eventually.
3525 3529 (multiple_replace): added credit to original ASPN recipe.
3526 3530
3527 3531 2004-06-15 Fernando Perez <fperez@colorado.edu>
3528 3532
3529 3533 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3530 3534 list of auto-defined aliases.
3531 3535
3532 3536 2004-06-13 Fernando Perez <fperez@colorado.edu>
3533 3537
3534 3538 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3535 3539 install was really requested (so setup.py can be used for other
3536 3540 things under Windows).
3537 3541
3538 3542 2004-06-10 Fernando Perez <fperez@colorado.edu>
3539 3543
3540 3544 * IPython/Logger.py (Logger.create_log): Manually remove any old
3541 3545 backup, since os.remove may fail under Windows. Fixes bug
3542 3546 reported by Thorsten.
3543 3547
3544 3548 2004-06-09 Fernando Perez <fperez@colorado.edu>
3545 3549
3546 3550 * examples/example-embed.py: fixed all references to %n (replaced
3547 3551 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3548 3552 for all examples and the manual as well.
3549 3553
3550 3554 2004-06-08 Fernando Perez <fperez@colorado.edu>
3551 3555
3552 3556 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3553 3557 alignment and color management. All 3 prompt subsystems now
3554 3558 inherit from BasePrompt.
3555 3559
3556 3560 * tools/release: updates for windows installer build and tag rpms
3557 3561 with python version (since paths are fixed).
3558 3562
3559 3563 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3560 3564 which will become eventually obsolete. Also fixed the default
3561 3565 prompt_in2 to use \D, so at least new users start with the correct
3562 3566 defaults.
3563 3567 WARNING: Users with existing ipythonrc files will need to apply
3564 3568 this fix manually!
3565 3569
3566 3570 * setup.py: make windows installer (.exe). This is finally the
3567 3571 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3568 3572 which I hadn't included because it required Python 2.3 (or recent
3569 3573 distutils).
3570 3574
3571 3575 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3572 3576 usage of new '\D' escape.
3573 3577
3574 3578 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3575 3579 lacks os.getuid())
3576 3580 (CachedOutput.set_colors): Added the ability to turn coloring
3577 3581 on/off with @colors even for manually defined prompt colors. It
3578 3582 uses a nasty global, but it works safely and via the generic color
3579 3583 handling mechanism.
3580 3584 (Prompt2.__init__): Introduced new escape '\D' for continuation
3581 3585 prompts. It represents the counter ('\#') as dots.
3582 3586 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3583 3587 need to update their ipythonrc files and replace '%n' with '\D' in
3584 3588 their prompt_in2 settings everywhere. Sorry, but there's
3585 3589 otherwise no clean way to get all prompts to properly align. The
3586 3590 ipythonrc shipped with IPython has been updated.
3587 3591
3588 3592 2004-06-07 Fernando Perez <fperez@colorado.edu>
3589 3593
3590 3594 * setup.py (isfile): Pass local_icons option to latex2html, so the
3591 3595 resulting HTML file is self-contained. Thanks to
3592 3596 dryice-AT-liu.com.cn for the tip.
3593 3597
3594 3598 * pysh.py: I created a new profile 'shell', which implements a
3595 3599 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3596 3600 system shell, nor will it become one anytime soon. It's mainly
3597 3601 meant to illustrate the use of the new flexible bash-like prompts.
3598 3602 I guess it could be used by hardy souls for true shell management,
3599 3603 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3600 3604 profile. This uses the InterpreterExec extension provided by
3601 3605 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3602 3606
3603 3607 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3604 3608 auto-align itself with the length of the previous input prompt
3605 3609 (taking into account the invisible color escapes).
3606 3610 (CachedOutput.__init__): Large restructuring of this class. Now
3607 3611 all three prompts (primary1, primary2, output) are proper objects,
3608 3612 managed by the 'parent' CachedOutput class. The code is still a
3609 3613 bit hackish (all prompts share state via a pointer to the cache),
3610 3614 but it's overall far cleaner than before.
3611 3615
3612 3616 * IPython/genutils.py (getoutputerror): modified to add verbose,
3613 3617 debug and header options. This makes the interface of all getout*
3614 3618 functions uniform.
3615 3619 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3616 3620
3617 3621 * IPython/Magic.py (Magic.default_option): added a function to
3618 3622 allow registering default options for any magic command. This
3619 3623 makes it easy to have profiles which customize the magics globally
3620 3624 for a certain use. The values set through this function are
3621 3625 picked up by the parse_options() method, which all magics should
3622 3626 use to parse their options.
3623 3627
3624 3628 * IPython/genutils.py (warn): modified the warnings framework to
3625 3629 use the Term I/O class. I'm trying to slowly unify all of
3626 3630 IPython's I/O operations to pass through Term.
3627 3631
3628 3632 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3629 3633 the secondary prompt to correctly match the length of the primary
3630 3634 one for any prompt. Now multi-line code will properly line up
3631 3635 even for path dependent prompts, such as the new ones available
3632 3636 via the prompt_specials.
3633 3637
3634 3638 2004-06-06 Fernando Perez <fperez@colorado.edu>
3635 3639
3636 3640 * IPython/Prompts.py (prompt_specials): Added the ability to have
3637 3641 bash-like special sequences in the prompts, which get
3638 3642 automatically expanded. Things like hostname, current working
3639 3643 directory and username are implemented already, but it's easy to
3640 3644 add more in the future. Thanks to a patch by W.J. van der Laan
3641 3645 <gnufnork-AT-hetdigitalegat.nl>
3642 3646 (prompt_specials): Added color support for prompt strings, so
3643 3647 users can define arbitrary color setups for their prompts.
3644 3648
3645 3649 2004-06-05 Fernando Perez <fperez@colorado.edu>
3646 3650
3647 3651 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3648 3652 code to load Gary Bishop's readline and configure it
3649 3653 automatically. Thanks to Gary for help on this.
3650 3654
3651 3655 2004-06-01 Fernando Perez <fperez@colorado.edu>
3652 3656
3653 3657 * IPython/Logger.py (Logger.create_log): fix bug for logging
3654 3658 with no filename (previous fix was incomplete).
3655 3659
3656 3660 2004-05-25 Fernando Perez <fperez@colorado.edu>
3657 3661
3658 3662 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3659 3663 parens would get passed to the shell.
3660 3664
3661 3665 2004-05-20 Fernando Perez <fperez@colorado.edu>
3662 3666
3663 3667 * IPython/Magic.py (Magic.magic_prun): changed default profile
3664 3668 sort order to 'time' (the more common profiling need).
3665 3669
3666 3670 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3667 3671 so that source code shown is guaranteed in sync with the file on
3668 3672 disk (also changed in psource). Similar fix to the one for
3669 3673 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3670 3674 <yann.ledu-AT-noos.fr>.
3671 3675
3672 3676 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3673 3677 with a single option would not be correctly parsed. Closes
3674 3678 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3675 3679 introduced in 0.6.0 (on 2004-05-06).
3676 3680
3677 3681 2004-05-13 *** Released version 0.6.0
3678 3682
3679 3683 2004-05-13 Fernando Perez <fperez@colorado.edu>
3680 3684
3681 3685 * debian/: Added debian/ directory to CVS, so that debian support
3682 3686 is publicly accessible. The debian package is maintained by Jack
3683 3687 Moffit <jack-AT-xiph.org>.
3684 3688
3685 3689 * Documentation: included the notes about an ipython-based system
3686 3690 shell (the hypothetical 'pysh') into the new_design.pdf document,
3687 3691 so that these ideas get distributed to users along with the
3688 3692 official documentation.
3689 3693
3690 3694 2004-05-10 Fernando Perez <fperez@colorado.edu>
3691 3695
3692 3696 * IPython/Logger.py (Logger.create_log): fix recently introduced
3693 3697 bug (misindented line) where logstart would fail when not given an
3694 3698 explicit filename.
3695 3699
3696 3700 2004-05-09 Fernando Perez <fperez@colorado.edu>
3697 3701
3698 3702 * IPython/Magic.py (Magic.parse_options): skip system call when
3699 3703 there are no options to look for. Faster, cleaner for the common
3700 3704 case.
3701 3705
3702 3706 * Documentation: many updates to the manual: describing Windows
3703 3707 support better, Gnuplot updates, credits, misc small stuff. Also
3704 3708 updated the new_design doc a bit.
3705 3709
3706 3710 2004-05-06 *** Released version 0.6.0.rc1
3707 3711
3708 3712 2004-05-06 Fernando Perez <fperez@colorado.edu>
3709 3713
3710 3714 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3711 3715 operations to use the vastly more efficient list/''.join() method.
3712 3716 (FormattedTB.text): Fix
3713 3717 http://www.scipy.net/roundup/ipython/issue12 - exception source
3714 3718 extract not updated after reload. Thanks to Mike Salib
3715 3719 <msalib-AT-mit.edu> for pinning the source of the problem.
3716 3720 Fortunately, the solution works inside ipython and doesn't require
3717 3721 any changes to python proper.
3718 3722
3719 3723 * IPython/Magic.py (Magic.parse_options): Improved to process the
3720 3724 argument list as a true shell would (by actually using the
3721 3725 underlying system shell). This way, all @magics automatically get
3722 3726 shell expansion for variables. Thanks to a comment by Alex
3723 3727 Schmolck.
3724 3728
3725 3729 2004-04-04 Fernando Perez <fperez@colorado.edu>
3726 3730
3727 3731 * IPython/iplib.py (InteractiveShell.interact): Added a special
3728 3732 trap for a debugger quit exception, which is basically impossible
3729 3733 to handle by normal mechanisms, given what pdb does to the stack.
3730 3734 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3731 3735
3732 3736 2004-04-03 Fernando Perez <fperez@colorado.edu>
3733 3737
3734 3738 * IPython/genutils.py (Term): Standardized the names of the Term
3735 3739 class streams to cin/cout/cerr, following C++ naming conventions
3736 3740 (I can't use in/out/err because 'in' is not a valid attribute
3737 3741 name).
3738 3742
3739 3743 * IPython/iplib.py (InteractiveShell.interact): don't increment
3740 3744 the prompt if there's no user input. By Daniel 'Dang' Griffith
3741 3745 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3742 3746 Francois Pinard.
3743 3747
3744 3748 2004-04-02 Fernando Perez <fperez@colorado.edu>
3745 3749
3746 3750 * IPython/genutils.py (Stream.__init__): Modified to survive at
3747 3751 least importing in contexts where stdin/out/err aren't true file
3748 3752 objects, such as PyCrust (they lack fileno() and mode). However,
3749 3753 the recovery facilities which rely on these things existing will
3750 3754 not work.
3751 3755
3752 3756 2004-04-01 Fernando Perez <fperez@colorado.edu>
3753 3757
3754 3758 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3755 3759 use the new getoutputerror() function, so it properly
3756 3760 distinguishes stdout/err.
3757 3761
3758 3762 * IPython/genutils.py (getoutputerror): added a function to
3759 3763 capture separately the standard output and error of a command.
3760 3764 After a comment from dang on the mailing lists. This code is
3761 3765 basically a modified version of commands.getstatusoutput(), from
3762 3766 the standard library.
3763 3767
3764 3768 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3765 3769 '!!' as a special syntax (shorthand) to access @sx.
3766 3770
3767 3771 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3768 3772 command and return its output as a list split on '\n'.
3769 3773
3770 3774 2004-03-31 Fernando Perez <fperez@colorado.edu>
3771 3775
3772 3776 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3773 3777 method to dictionaries used as FakeModule instances if they lack
3774 3778 it. At least pydoc in python2.3 breaks for runtime-defined
3775 3779 functions without this hack. At some point I need to _really_
3776 3780 understand what FakeModule is doing, because it's a gross hack.
3777 3781 But it solves Arnd's problem for now...
3778 3782
3779 3783 2004-02-27 Fernando Perez <fperez@colorado.edu>
3780 3784
3781 3785 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3782 3786 mode would behave erratically. Also increased the number of
3783 3787 possible logs in rotate mod to 999. Thanks to Rod Holland
3784 3788 <rhh@StructureLABS.com> for the report and fixes.
3785 3789
3786 3790 2004-02-26 Fernando Perez <fperez@colorado.edu>
3787 3791
3788 3792 * IPython/genutils.py (page): Check that the curses module really
3789 3793 has the initscr attribute before trying to use it. For some
3790 3794 reason, the Solaris curses module is missing this. I think this
3791 3795 should be considered a Solaris python bug, but I'm not sure.
3792 3796
3793 3797 2004-01-17 Fernando Perez <fperez@colorado.edu>
3794 3798
3795 3799 * IPython/genutils.py (Stream.__init__): Changes to try to make
3796 3800 ipython robust against stdin/out/err being closed by the user.
3797 3801 This is 'user error' (and blocks a normal python session, at least
3798 3802 the stdout case). However, Ipython should be able to survive such
3799 3803 instances of abuse as gracefully as possible. To simplify the
3800 3804 coding and maintain compatibility with Gary Bishop's Term
3801 3805 contributions, I've made use of classmethods for this. I think
3802 3806 this introduces a dependency on python 2.2.
3803 3807
3804 3808 2004-01-13 Fernando Perez <fperez@colorado.edu>
3805 3809
3806 3810 * IPython/numutils.py (exp_safe): simplified the code a bit and
3807 3811 removed the need for importing the kinds module altogether.
3808 3812
3809 3813 2004-01-06 Fernando Perez <fperez@colorado.edu>
3810 3814
3811 3815 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3812 3816 a magic function instead, after some community feedback. No
3813 3817 special syntax will exist for it, but its name is deliberately
3814 3818 very short.
3815 3819
3816 3820 2003-12-20 Fernando Perez <fperez@colorado.edu>
3817 3821
3818 3822 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3819 3823 new functionality, to automagically assign the result of a shell
3820 3824 command to a variable. I'll solicit some community feedback on
3821 3825 this before making it permanent.
3822 3826
3823 3827 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3824 3828 requested about callables for which inspect couldn't obtain a
3825 3829 proper argspec. Thanks to a crash report sent by Etienne
3826 3830 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3827 3831
3828 3832 2003-12-09 Fernando Perez <fperez@colorado.edu>
3829 3833
3830 3834 * IPython/genutils.py (page): patch for the pager to work across
3831 3835 various versions of Windows. By Gary Bishop.
3832 3836
3833 3837 2003-12-04 Fernando Perez <fperez@colorado.edu>
3834 3838
3835 3839 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3836 3840 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3837 3841 While I tested this and it looks ok, there may still be corner
3838 3842 cases I've missed.
3839 3843
3840 3844 2003-12-01 Fernando Perez <fperez@colorado.edu>
3841 3845
3842 3846 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3843 3847 where a line like 'p,q=1,2' would fail because the automagic
3844 3848 system would be triggered for @p.
3845 3849
3846 3850 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3847 3851 cleanups, code unmodified.
3848 3852
3849 3853 * IPython/genutils.py (Term): added a class for IPython to handle
3850 3854 output. In most cases it will just be a proxy for stdout/err, but
3851 3855 having this allows modifications to be made for some platforms,
3852 3856 such as handling color escapes under Windows. All of this code
3853 3857 was contributed by Gary Bishop, with minor modifications by me.
3854 3858 The actual changes affect many files.
3855 3859
3856 3860 2003-11-30 Fernando Perez <fperez@colorado.edu>
3857 3861
3858 3862 * IPython/iplib.py (file_matches): new completion code, courtesy
3859 3863 of Jeff Collins. This enables filename completion again under
3860 3864 python 2.3, which disabled it at the C level.
3861 3865
3862 3866 2003-11-11 Fernando Perez <fperez@colorado.edu>
3863 3867
3864 3868 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3865 3869 for Numeric.array(map(...)), but often convenient.
3866 3870
3867 3871 2003-11-05 Fernando Perez <fperez@colorado.edu>
3868 3872
3869 3873 * IPython/numutils.py (frange): Changed a call from int() to
3870 3874 int(round()) to prevent a problem reported with arange() in the
3871 3875 numpy list.
3872 3876
3873 3877 2003-10-06 Fernando Perez <fperez@colorado.edu>
3874 3878
3875 3879 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3876 3880 prevent crashes if sys lacks an argv attribute (it happens with
3877 3881 embedded interpreters which build a bare-bones sys module).
3878 3882 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3879 3883
3880 3884 2003-09-24 Fernando Perez <fperez@colorado.edu>
3881 3885
3882 3886 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3883 3887 to protect against poorly written user objects where __getattr__
3884 3888 raises exceptions other than AttributeError. Thanks to a bug
3885 3889 report by Oliver Sander <osander-AT-gmx.de>.
3886 3890
3887 3891 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3888 3892 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3889 3893
3890 3894 2003-09-09 Fernando Perez <fperez@colorado.edu>
3891 3895
3892 3896 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3893 3897 unpacking a list whith a callable as first element would
3894 3898 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3895 3899 Collins.
3896 3900
3897 3901 2003-08-25 *** Released version 0.5.0
3898 3902
3899 3903 2003-08-22 Fernando Perez <fperez@colorado.edu>
3900 3904
3901 3905 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3902 3906 improperly defined user exceptions. Thanks to feedback from Mark
3903 3907 Russell <mrussell-AT-verio.net>.
3904 3908
3905 3909 2003-08-20 Fernando Perez <fperez@colorado.edu>
3906 3910
3907 3911 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3908 3912 printing so that it would print multi-line string forms starting
3909 3913 with a new line. This way the formatting is better respected for
3910 3914 objects which work hard to make nice string forms.
3911 3915
3912 3916 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3913 3917 autocall would overtake data access for objects with both
3914 3918 __getitem__ and __call__.
3915 3919
3916 3920 2003-08-19 *** Released version 0.5.0-rc1
3917 3921
3918 3922 2003-08-19 Fernando Perez <fperez@colorado.edu>
3919 3923
3920 3924 * IPython/deep_reload.py (load_tail): single tiny change here
3921 3925 seems to fix the long-standing bug of dreload() failing to work
3922 3926 for dotted names. But this module is pretty tricky, so I may have
3923 3927 missed some subtlety. Needs more testing!.
3924 3928
3925 3929 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3926 3930 exceptions which have badly implemented __str__ methods.
3927 3931 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3928 3932 which I've been getting reports about from Python 2.3 users. I
3929 3933 wish I had a simple test case to reproduce the problem, so I could
3930 3934 either write a cleaner workaround or file a bug report if
3931 3935 necessary.
3932 3936
3933 3937 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3934 3938 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3935 3939 a bug report by Tjabo Kloppenburg.
3936 3940
3937 3941 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3938 3942 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3939 3943 seems rather unstable. Thanks to a bug report by Tjabo
3940 3944 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3941 3945
3942 3946 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3943 3947 this out soon because of the critical fixes in the inner loop for
3944 3948 generators.
3945 3949
3946 3950 * IPython/Magic.py (Magic.getargspec): removed. This (and
3947 3951 _get_def) have been obsoleted by OInspect for a long time, I
3948 3952 hadn't noticed that they were dead code.
3949 3953 (Magic._ofind): restored _ofind functionality for a few literals
3950 3954 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3951 3955 for things like "hello".capitalize?, since that would require a
3952 3956 potentially dangerous eval() again.
3953 3957
3954 3958 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3955 3959 logic a bit more to clean up the escapes handling and minimize the
3956 3960 use of _ofind to only necessary cases. The interactive 'feel' of
3957 3961 IPython should have improved quite a bit with the changes in
3958 3962 _prefilter and _ofind (besides being far safer than before).
3959 3963
3960 3964 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3961 3965 obscure, never reported). Edit would fail to find the object to
3962 3966 edit under some circumstances.
3963 3967 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3964 3968 which were causing double-calling of generators. Those eval calls
3965 3969 were _very_ dangerous, since code with side effects could be
3966 3970 triggered. As they say, 'eval is evil'... These were the
3967 3971 nastiest evals in IPython. Besides, _ofind is now far simpler,
3968 3972 and it should also be quite a bit faster. Its use of inspect is
3969 3973 also safer, so perhaps some of the inspect-related crashes I've
3970 3974 seen lately with Python 2.3 might be taken care of. That will
3971 3975 need more testing.
3972 3976
3973 3977 2003-08-17 Fernando Perez <fperez@colorado.edu>
3974 3978
3975 3979 * IPython/iplib.py (InteractiveShell._prefilter): significant
3976 3980 simplifications to the logic for handling user escapes. Faster
3977 3981 and simpler code.
3978 3982
3979 3983 2003-08-14 Fernando Perez <fperez@colorado.edu>
3980 3984
3981 3985 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3982 3986 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3983 3987 but it should be quite a bit faster. And the recursive version
3984 3988 generated O(log N) intermediate storage for all rank>1 arrays,
3985 3989 even if they were contiguous.
3986 3990 (l1norm): Added this function.
3987 3991 (norm): Added this function for arbitrary norms (including
3988 3992 l-infinity). l1 and l2 are still special cases for convenience
3989 3993 and speed.
3990 3994
3991 3995 2003-08-03 Fernando Perez <fperez@colorado.edu>
3992 3996
3993 3997 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3994 3998 exceptions, which now raise PendingDeprecationWarnings in Python
3995 3999 2.3. There were some in Magic and some in Gnuplot2.
3996 4000
3997 4001 2003-06-30 Fernando Perez <fperez@colorado.edu>
3998 4002
3999 4003 * IPython/genutils.py (page): modified to call curses only for
4000 4004 terminals where TERM=='xterm'. After problems under many other
4001 4005 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4002 4006
4003 4007 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4004 4008 would be triggered when readline was absent. This was just an old
4005 4009 debugging statement I'd forgotten to take out.
4006 4010
4007 4011 2003-06-20 Fernando Perez <fperez@colorado.edu>
4008 4012
4009 4013 * IPython/genutils.py (clock): modified to return only user time
4010 4014 (not counting system time), after a discussion on scipy. While
4011 4015 system time may be a useful quantity occasionally, it may much
4012 4016 more easily be skewed by occasional swapping or other similar
4013 4017 activity.
4014 4018
4015 4019 2003-06-05 Fernando Perez <fperez@colorado.edu>
4016 4020
4017 4021 * IPython/numutils.py (identity): new function, for building
4018 4022 arbitrary rank Kronecker deltas (mostly backwards compatible with
4019 4023 Numeric.identity)
4020 4024
4021 4025 2003-06-03 Fernando Perez <fperez@colorado.edu>
4022 4026
4023 4027 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4024 4028 arguments passed to magics with spaces, to allow trailing '\' to
4025 4029 work normally (mainly for Windows users).
4026 4030
4027 4031 2003-05-29 Fernando Perez <fperez@colorado.edu>
4028 4032
4029 4033 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4030 4034 instead of pydoc.help. This fixes a bizarre behavior where
4031 4035 printing '%s' % locals() would trigger the help system. Now
4032 4036 ipython behaves like normal python does.
4033 4037
4034 4038 Note that if one does 'from pydoc import help', the bizarre
4035 4039 behavior returns, but this will also happen in normal python, so
4036 4040 it's not an ipython bug anymore (it has to do with how pydoc.help
4037 4041 is implemented).
4038 4042
4039 4043 2003-05-22 Fernando Perez <fperez@colorado.edu>
4040 4044
4041 4045 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4042 4046 return [] instead of None when nothing matches, also match to end
4043 4047 of line. Patch by Gary Bishop.
4044 4048
4045 4049 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4046 4050 protection as before, for files passed on the command line. This
4047 4051 prevents the CrashHandler from kicking in if user files call into
4048 4052 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4049 4053 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4050 4054
4051 4055 2003-05-20 *** Released version 0.4.0
4052 4056
4053 4057 2003-05-20 Fernando Perez <fperez@colorado.edu>
4054 4058
4055 4059 * setup.py: added support for manpages. It's a bit hackish b/c of
4056 4060 a bug in the way the bdist_rpm distutils target handles gzipped
4057 4061 manpages, but it works. After a patch by Jack.
4058 4062
4059 4063 2003-05-19 Fernando Perez <fperez@colorado.edu>
4060 4064
4061 4065 * IPython/numutils.py: added a mockup of the kinds module, since
4062 4066 it was recently removed from Numeric. This way, numutils will
4063 4067 work for all users even if they are missing kinds.
4064 4068
4065 4069 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4066 4070 failure, which can occur with SWIG-wrapped extensions. After a
4067 4071 crash report from Prabhu.
4068 4072
4069 4073 2003-05-16 Fernando Perez <fperez@colorado.edu>
4070 4074
4071 4075 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4072 4076 protect ipython from user code which may call directly
4073 4077 sys.excepthook (this looks like an ipython crash to the user, even
4074 4078 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4075 4079 This is especially important to help users of WxWindows, but may
4076 4080 also be useful in other cases.
4077 4081
4078 4082 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4079 4083 an optional tb_offset to be specified, and to preserve exception
4080 4084 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4081 4085
4082 4086 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4083 4087
4084 4088 2003-05-15 Fernando Perez <fperez@colorado.edu>
4085 4089
4086 4090 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4087 4091 installing for a new user under Windows.
4088 4092
4089 4093 2003-05-12 Fernando Perez <fperez@colorado.edu>
4090 4094
4091 4095 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4092 4096 handler for Emacs comint-based lines. Currently it doesn't do
4093 4097 much (but importantly, it doesn't update the history cache). In
4094 4098 the future it may be expanded if Alex needs more functionality
4095 4099 there.
4096 4100
4097 4101 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4098 4102 info to crash reports.
4099 4103
4100 4104 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4101 4105 just like Python's -c. Also fixed crash with invalid -color
4102 4106 option value at startup. Thanks to Will French
4103 4107 <wfrench-AT-bestweb.net> for the bug report.
4104 4108
4105 4109 2003-05-09 Fernando Perez <fperez@colorado.edu>
4106 4110
4107 4111 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4108 4112 to EvalDict (it's a mapping, after all) and simplified its code
4109 4113 quite a bit, after a nice discussion on c.l.py where Gustavo
4110 4114 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4111 4115
4112 4116 2003-04-30 Fernando Perez <fperez@colorado.edu>
4113 4117
4114 4118 * IPython/genutils.py (timings_out): modified it to reduce its
4115 4119 overhead in the common reps==1 case.
4116 4120
4117 4121 2003-04-29 Fernando Perez <fperez@colorado.edu>
4118 4122
4119 4123 * IPython/genutils.py (timings_out): Modified to use the resource
4120 4124 module, which avoids the wraparound problems of time.clock().
4121 4125
4122 4126 2003-04-17 *** Released version 0.2.15pre4
4123 4127
4124 4128 2003-04-17 Fernando Perez <fperez@colorado.edu>
4125 4129
4126 4130 * setup.py (scriptfiles): Split windows-specific stuff over to a
4127 4131 separate file, in an attempt to have a Windows GUI installer.
4128 4132 That didn't work, but part of the groundwork is done.
4129 4133
4130 4134 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4131 4135 indent/unindent with 4 spaces. Particularly useful in combination
4132 4136 with the new auto-indent option.
4133 4137
4134 4138 2003-04-16 Fernando Perez <fperez@colorado.edu>
4135 4139
4136 4140 * IPython/Magic.py: various replacements of self.rc for
4137 4141 self.shell.rc. A lot more remains to be done to fully disentangle
4138 4142 this class from the main Shell class.
4139 4143
4140 4144 * IPython/GnuplotRuntime.py: added checks for mouse support so
4141 4145 that we don't try to enable it if the current gnuplot doesn't
4142 4146 really support it. Also added checks so that we don't try to
4143 4147 enable persist under Windows (where Gnuplot doesn't recognize the
4144 4148 option).
4145 4149
4146 4150 * IPython/iplib.py (InteractiveShell.interact): Added optional
4147 4151 auto-indenting code, after a patch by King C. Shu
4148 4152 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4149 4153 get along well with pasting indented code. If I ever figure out
4150 4154 how to make that part go well, it will become on by default.
4151 4155
4152 4156 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4153 4157 crash ipython if there was an unmatched '%' in the user's prompt
4154 4158 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4155 4159
4156 4160 * IPython/iplib.py (InteractiveShell.interact): removed the
4157 4161 ability to ask the user whether he wants to crash or not at the
4158 4162 'last line' exception handler. Calling functions at that point
4159 4163 changes the stack, and the error reports would have incorrect
4160 4164 tracebacks.
4161 4165
4162 4166 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4163 4167 pass through a peger a pretty-printed form of any object. After a
4164 4168 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4165 4169
4166 4170 2003-04-14 Fernando Perez <fperez@colorado.edu>
4167 4171
4168 4172 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4169 4173 all files in ~ would be modified at first install (instead of
4170 4174 ~/.ipython). This could be potentially disastrous, as the
4171 4175 modification (make line-endings native) could damage binary files.
4172 4176
4173 4177 2003-04-10 Fernando Perez <fperez@colorado.edu>
4174 4178
4175 4179 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4176 4180 handle only lines which are invalid python. This now means that
4177 4181 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4178 4182 for the bug report.
4179 4183
4180 4184 2003-04-01 Fernando Perez <fperez@colorado.edu>
4181 4185
4182 4186 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4183 4187 where failing to set sys.last_traceback would crash pdb.pm().
4184 4188 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4185 4189 report.
4186 4190
4187 4191 2003-03-25 Fernando Perez <fperez@colorado.edu>
4188 4192
4189 4193 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4190 4194 before printing it (it had a lot of spurious blank lines at the
4191 4195 end).
4192 4196
4193 4197 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4194 4198 output would be sent 21 times! Obviously people don't use this
4195 4199 too often, or I would have heard about it.
4196 4200
4197 4201 2003-03-24 Fernando Perez <fperez@colorado.edu>
4198 4202
4199 4203 * setup.py (scriptfiles): renamed the data_files parameter from
4200 4204 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4201 4205 for the patch.
4202 4206
4203 4207 2003-03-20 Fernando Perez <fperez@colorado.edu>
4204 4208
4205 4209 * IPython/genutils.py (error): added error() and fatal()
4206 4210 functions.
4207 4211
4208 4212 2003-03-18 *** Released version 0.2.15pre3
4209 4213
4210 4214 2003-03-18 Fernando Perez <fperez@colorado.edu>
4211 4215
4212 4216 * setupext/install_data_ext.py
4213 4217 (install_data_ext.initialize_options): Class contributed by Jack
4214 4218 Moffit for fixing the old distutils hack. He is sending this to
4215 4219 the distutils folks so in the future we may not need it as a
4216 4220 private fix.
4217 4221
4218 4222 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4219 4223 changes for Debian packaging. See his patch for full details.
4220 4224 The old distutils hack of making the ipythonrc* files carry a
4221 4225 bogus .py extension is gone, at last. Examples were moved to a
4222 4226 separate subdir under doc/, and the separate executable scripts
4223 4227 now live in their own directory. Overall a great cleanup. The
4224 4228 manual was updated to use the new files, and setup.py has been
4225 4229 fixed for this setup.
4226 4230
4227 4231 * IPython/PyColorize.py (Parser.usage): made non-executable and
4228 4232 created a pycolor wrapper around it to be included as a script.
4229 4233
4230 4234 2003-03-12 *** Released version 0.2.15pre2
4231 4235
4232 4236 2003-03-12 Fernando Perez <fperez@colorado.edu>
4233 4237
4234 4238 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4235 4239 long-standing problem with garbage characters in some terminals.
4236 4240 The issue was really that the \001 and \002 escapes must _only_ be
4237 4241 passed to input prompts (which call readline), but _never_ to
4238 4242 normal text to be printed on screen. I changed ColorANSI to have
4239 4243 two classes: TermColors and InputTermColors, each with the
4240 4244 appropriate escapes for input prompts or normal text. The code in
4241 4245 Prompts.py got slightly more complicated, but this very old and
4242 4246 annoying bug is finally fixed.
4243 4247
4244 4248 All the credit for nailing down the real origin of this problem
4245 4249 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4246 4250 *Many* thanks to him for spending quite a bit of effort on this.
4247 4251
4248 4252 2003-03-05 *** Released version 0.2.15pre1
4249 4253
4250 4254 2003-03-03 Fernando Perez <fperez@colorado.edu>
4251 4255
4252 4256 * IPython/FakeModule.py: Moved the former _FakeModule to a
4253 4257 separate file, because it's also needed by Magic (to fix a similar
4254 4258 pickle-related issue in @run).
4255 4259
4256 4260 2003-03-02 Fernando Perez <fperez@colorado.edu>
4257 4261
4258 4262 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4259 4263 the autocall option at runtime.
4260 4264 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4261 4265 across Magic.py to start separating Magic from InteractiveShell.
4262 4266 (Magic._ofind): Fixed to return proper namespace for dotted
4263 4267 names. Before, a dotted name would always return 'not currently
4264 4268 defined', because it would find the 'parent'. s.x would be found,
4265 4269 but since 'x' isn't defined by itself, it would get confused.
4266 4270 (Magic.magic_run): Fixed pickling problems reported by Ralf
4267 4271 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4268 4272 that I'd used when Mike Heeter reported similar issues at the
4269 4273 top-level, but now for @run. It boils down to injecting the
4270 4274 namespace where code is being executed with something that looks
4271 4275 enough like a module to fool pickle.dump(). Since a pickle stores
4272 4276 a named reference to the importing module, we need this for
4273 4277 pickles to save something sensible.
4274 4278
4275 4279 * IPython/ipmaker.py (make_IPython): added an autocall option.
4276 4280
4277 4281 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4278 4282 the auto-eval code. Now autocalling is an option, and the code is
4279 4283 also vastly safer. There is no more eval() involved at all.
4280 4284
4281 4285 2003-03-01 Fernando Perez <fperez@colorado.edu>
4282 4286
4283 4287 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4284 4288 dict with named keys instead of a tuple.
4285 4289
4286 4290 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4287 4291
4288 4292 * setup.py (make_shortcut): Fixed message about directories
4289 4293 created during Windows installation (the directories were ok, just
4290 4294 the printed message was misleading). Thanks to Chris Liechti
4291 4295 <cliechti-AT-gmx.net> for the heads up.
4292 4296
4293 4297 2003-02-21 Fernando Perez <fperez@colorado.edu>
4294 4298
4295 4299 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4296 4300 of ValueError exception when checking for auto-execution. This
4297 4301 one is raised by things like Numeric arrays arr.flat when the
4298 4302 array is non-contiguous.
4299 4303
4300 4304 2003-01-31 Fernando Perez <fperez@colorado.edu>
4301 4305
4302 4306 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4303 4307 not return any value at all (even though the command would get
4304 4308 executed).
4305 4309 (xsys): Flush stdout right after printing the command to ensure
4306 4310 proper ordering of commands and command output in the total
4307 4311 output.
4308 4312 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4309 4313 system/getoutput as defaults. The old ones are kept for
4310 4314 compatibility reasons, so no code which uses this library needs
4311 4315 changing.
4312 4316
4313 4317 2003-01-27 *** Released version 0.2.14
4314 4318
4315 4319 2003-01-25 Fernando Perez <fperez@colorado.edu>
4316 4320
4317 4321 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4318 4322 functions defined in previous edit sessions could not be re-edited
4319 4323 (because the temp files were immediately removed). Now temp files
4320 4324 are removed only at IPython's exit.
4321 4325 (Magic.magic_run): Improved @run to perform shell-like expansions
4322 4326 on its arguments (~users and $VARS). With this, @run becomes more
4323 4327 like a normal command-line.
4324 4328
4325 4329 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4326 4330 bugs related to embedding and cleaned up that code. A fairly
4327 4331 important one was the impossibility to access the global namespace
4328 4332 through the embedded IPython (only local variables were visible).
4329 4333
4330 4334 2003-01-14 Fernando Perez <fperez@colorado.edu>
4331 4335
4332 4336 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4333 4337 auto-calling to be a bit more conservative. Now it doesn't get
4334 4338 triggered if any of '!=()<>' are in the rest of the input line, to
4335 4339 allow comparing callables. Thanks to Alex for the heads up.
4336 4340
4337 4341 2003-01-07 Fernando Perez <fperez@colorado.edu>
4338 4342
4339 4343 * IPython/genutils.py (page): fixed estimation of the number of
4340 4344 lines in a string to be paged to simply count newlines. This
4341 4345 prevents over-guessing due to embedded escape sequences. A better
4342 4346 long-term solution would involve stripping out the control chars
4343 4347 for the count, but it's potentially so expensive I just don't
4344 4348 think it's worth doing.
4345 4349
4346 4350 2002-12-19 *** Released version 0.2.14pre50
4347 4351
4348 4352 2002-12-19 Fernando Perez <fperez@colorado.edu>
4349 4353
4350 4354 * tools/release (version): Changed release scripts to inform
4351 4355 Andrea and build a NEWS file with a list of recent changes.
4352 4356
4353 4357 * IPython/ColorANSI.py (__all__): changed terminal detection
4354 4358 code. Seems to work better for xterms without breaking
4355 4359 konsole. Will need more testing to determine if WinXP and Mac OSX
4356 4360 also work ok.
4357 4361
4358 4362 2002-12-18 *** Released version 0.2.14pre49
4359 4363
4360 4364 2002-12-18 Fernando Perez <fperez@colorado.edu>
4361 4365
4362 4366 * Docs: added new info about Mac OSX, from Andrea.
4363 4367
4364 4368 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4365 4369 allow direct plotting of python strings whose format is the same
4366 4370 of gnuplot data files.
4367 4371
4368 4372 2002-12-16 Fernando Perez <fperez@colorado.edu>
4369 4373
4370 4374 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4371 4375 value of exit question to be acknowledged.
4372 4376
4373 4377 2002-12-03 Fernando Perez <fperez@colorado.edu>
4374 4378
4375 4379 * IPython/ipmaker.py: removed generators, which had been added
4376 4380 by mistake in an earlier debugging run. This was causing trouble
4377 4381 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4378 4382 for pointing this out.
4379 4383
4380 4384 2002-11-17 Fernando Perez <fperez@colorado.edu>
4381 4385
4382 4386 * Manual: updated the Gnuplot section.
4383 4387
4384 4388 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4385 4389 a much better split of what goes in Runtime and what goes in
4386 4390 Interactive.
4387 4391
4388 4392 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4389 4393 being imported from iplib.
4390 4394
4391 4395 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4392 4396 for command-passing. Now the global Gnuplot instance is called
4393 4397 'gp' instead of 'g', which was really a far too fragile and
4394 4398 common name.
4395 4399
4396 4400 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4397 4401 bounding boxes generated by Gnuplot for square plots.
4398 4402
4399 4403 * IPython/genutils.py (popkey): new function added. I should
4400 4404 suggest this on c.l.py as a dict method, it seems useful.
4401 4405
4402 4406 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4403 4407 to transparently handle PostScript generation. MUCH better than
4404 4408 the previous plot_eps/replot_eps (which I removed now). The code
4405 4409 is also fairly clean and well documented now (including
4406 4410 docstrings).
4407 4411
4408 4412 2002-11-13 Fernando Perez <fperez@colorado.edu>
4409 4413
4410 4414 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4411 4415 (inconsistent with options).
4412 4416
4413 4417 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4414 4418 manually disabled, I don't know why. Fixed it.
4415 4419 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4416 4420 eps output.
4417 4421
4418 4422 2002-11-12 Fernando Perez <fperez@colorado.edu>
4419 4423
4420 4424 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4421 4425 don't propagate up to caller. Fixes crash reported by François
4422 4426 Pinard.
4423 4427
4424 4428 2002-11-09 Fernando Perez <fperez@colorado.edu>
4425 4429
4426 4430 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4427 4431 history file for new users.
4428 4432 (make_IPython): fixed bug where initial install would leave the
4429 4433 user running in the .ipython dir.
4430 4434 (make_IPython): fixed bug where config dir .ipython would be
4431 4435 created regardless of the given -ipythondir option. Thanks to Cory
4432 4436 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4433 4437
4434 4438 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4435 4439 type confirmations. Will need to use it in all of IPython's code
4436 4440 consistently.
4437 4441
4438 4442 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4439 4443 context to print 31 lines instead of the default 5. This will make
4440 4444 the crash reports extremely detailed in case the problem is in
4441 4445 libraries I don't have access to.
4442 4446
4443 4447 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4444 4448 line of defense' code to still crash, but giving users fair
4445 4449 warning. I don't want internal errors to go unreported: if there's
4446 4450 an internal problem, IPython should crash and generate a full
4447 4451 report.
4448 4452
4449 4453 2002-11-08 Fernando Perez <fperez@colorado.edu>
4450 4454
4451 4455 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4452 4456 otherwise uncaught exceptions which can appear if people set
4453 4457 sys.stdout to something badly broken. Thanks to a crash report
4454 4458 from henni-AT-mail.brainbot.com.
4455 4459
4456 4460 2002-11-04 Fernando Perez <fperez@colorado.edu>
4457 4461
4458 4462 * IPython/iplib.py (InteractiveShell.interact): added
4459 4463 __IPYTHON__active to the builtins. It's a flag which goes on when
4460 4464 the interaction starts and goes off again when it stops. This
4461 4465 allows embedding code to detect being inside IPython. Before this
4462 4466 was done via __IPYTHON__, but that only shows that an IPython
4463 4467 instance has been created.
4464 4468
4465 4469 * IPython/Magic.py (Magic.magic_env): I realized that in a
4466 4470 UserDict, instance.data holds the data as a normal dict. So I
4467 4471 modified @env to return os.environ.data instead of rebuilding a
4468 4472 dict by hand.
4469 4473
4470 4474 2002-11-02 Fernando Perez <fperez@colorado.edu>
4471 4475
4472 4476 * IPython/genutils.py (warn): changed so that level 1 prints no
4473 4477 header. Level 2 is now the default (with 'WARNING' header, as
4474 4478 before). I think I tracked all places where changes were needed in
4475 4479 IPython, but outside code using the old level numbering may have
4476 4480 broken.
4477 4481
4478 4482 * IPython/iplib.py (InteractiveShell.runcode): added this to
4479 4483 handle the tracebacks in SystemExit traps correctly. The previous
4480 4484 code (through interact) was printing more of the stack than
4481 4485 necessary, showing IPython internal code to the user.
4482 4486
4483 4487 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4484 4488 default. Now that the default at the confirmation prompt is yes,
4485 4489 it's not so intrusive. François' argument that ipython sessions
4486 4490 tend to be complex enough not to lose them from an accidental C-d,
4487 4491 is a valid one.
4488 4492
4489 4493 * IPython/iplib.py (InteractiveShell.interact): added a
4490 4494 showtraceback() call to the SystemExit trap, and modified the exit
4491 4495 confirmation to have yes as the default.
4492 4496
4493 4497 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4494 4498 this file. It's been gone from the code for a long time, this was
4495 4499 simply leftover junk.
4496 4500
4497 4501 2002-11-01 Fernando Perez <fperez@colorado.edu>
4498 4502
4499 4503 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4500 4504 added. If set, IPython now traps EOF and asks for
4501 4505 confirmation. After a request by François Pinard.
4502 4506
4503 4507 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4504 4508 of @abort, and with a new (better) mechanism for handling the
4505 4509 exceptions.
4506 4510
4507 4511 2002-10-27 Fernando Perez <fperez@colorado.edu>
4508 4512
4509 4513 * IPython/usage.py (__doc__): updated the --help information and
4510 4514 the ipythonrc file to indicate that -log generates
4511 4515 ./ipython.log. Also fixed the corresponding info in @logstart.
4512 4516 This and several other fixes in the manuals thanks to reports by
4513 4517 François Pinard <pinard-AT-iro.umontreal.ca>.
4514 4518
4515 4519 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4516 4520 refer to @logstart (instead of @log, which doesn't exist).
4517 4521
4518 4522 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4519 4523 AttributeError crash. Thanks to Christopher Armstrong
4520 4524 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4521 4525 introduced recently (in 0.2.14pre37) with the fix to the eval
4522 4526 problem mentioned below.
4523 4527
4524 4528 2002-10-17 Fernando Perez <fperez@colorado.edu>
4525 4529
4526 4530 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4527 4531 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4528 4532
4529 4533 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4530 4534 this function to fix a problem reported by Alex Schmolck. He saw
4531 4535 it with list comprehensions and generators, which were getting
4532 4536 called twice. The real problem was an 'eval' call in testing for
4533 4537 automagic which was evaluating the input line silently.
4534 4538
4535 4539 This is a potentially very nasty bug, if the input has side
4536 4540 effects which must not be repeated. The code is much cleaner now,
4537 4541 without any blanket 'except' left and with a regexp test for
4538 4542 actual function names.
4539 4543
4540 4544 But an eval remains, which I'm not fully comfortable with. I just
4541 4545 don't know how to find out if an expression could be a callable in
4542 4546 the user's namespace without doing an eval on the string. However
4543 4547 that string is now much more strictly checked so that no code
4544 4548 slips by, so the eval should only happen for things that can
4545 4549 really be only function/method names.
4546 4550
4547 4551 2002-10-15 Fernando Perez <fperez@colorado.edu>
4548 4552
4549 4553 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4550 4554 OSX information to main manual, removed README_Mac_OSX file from
4551 4555 distribution. Also updated credits for recent additions.
4552 4556
4553 4557 2002-10-10 Fernando Perez <fperez@colorado.edu>
4554 4558
4555 4559 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4556 4560 terminal-related issues. Many thanks to Andrea Riciputi
4557 4561 <andrea.riciputi-AT-libero.it> for writing it.
4558 4562
4559 4563 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4560 4564 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4561 4565
4562 4566 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4563 4567 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4564 4568 <syver-en-AT-online.no> who both submitted patches for this problem.
4565 4569
4566 4570 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4567 4571 global embedding to make sure that things don't overwrite user
4568 4572 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4569 4573
4570 4574 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4571 4575 compatibility. Thanks to Hayden Callow
4572 4576 <h.callow-AT-elec.canterbury.ac.nz>
4573 4577
4574 4578 2002-10-04 Fernando Perez <fperez@colorado.edu>
4575 4579
4576 4580 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4577 4581 Gnuplot.File objects.
4578 4582
4579 4583 2002-07-23 Fernando Perez <fperez@colorado.edu>
4580 4584
4581 4585 * IPython/genutils.py (timing): Added timings() and timing() for
4582 4586 quick access to the most commonly needed data, the execution
4583 4587 times. Old timing() renamed to timings_out().
4584 4588
4585 4589 2002-07-18 Fernando Perez <fperez@colorado.edu>
4586 4590
4587 4591 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4588 4592 bug with nested instances disrupting the parent's tab completion.
4589 4593
4590 4594 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4591 4595 all_completions code to begin the emacs integration.
4592 4596
4593 4597 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4594 4598 argument to allow titling individual arrays when plotting.
4595 4599
4596 4600 2002-07-15 Fernando Perez <fperez@colorado.edu>
4597 4601
4598 4602 * setup.py (make_shortcut): changed to retrieve the value of
4599 4603 'Program Files' directory from the registry (this value changes in
4600 4604 non-english versions of Windows). Thanks to Thomas Fanslau
4601 4605 <tfanslau-AT-gmx.de> for the report.
4602 4606
4603 4607 2002-07-10 Fernando Perez <fperez@colorado.edu>
4604 4608
4605 4609 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4606 4610 a bug in pdb, which crashes if a line with only whitespace is
4607 4611 entered. Bug report submitted to sourceforge.
4608 4612
4609 4613 2002-07-09 Fernando Perez <fperez@colorado.edu>
4610 4614
4611 4615 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4612 4616 reporting exceptions (it's a bug in inspect.py, I just set a
4613 4617 workaround).
4614 4618
4615 4619 2002-07-08 Fernando Perez <fperez@colorado.edu>
4616 4620
4617 4621 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4618 4622 __IPYTHON__ in __builtins__ to show up in user_ns.
4619 4623
4620 4624 2002-07-03 Fernando Perez <fperez@colorado.edu>
4621 4625
4622 4626 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4623 4627 name from @gp_set_instance to @gp_set_default.
4624 4628
4625 4629 * IPython/ipmaker.py (make_IPython): default editor value set to
4626 4630 '0' (a string), to match the rc file. Otherwise will crash when
4627 4631 .strip() is called on it.
4628 4632
4629 4633
4630 4634 2002-06-28 Fernando Perez <fperez@colorado.edu>
4631 4635
4632 4636 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4633 4637 of files in current directory when a file is executed via
4634 4638 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4635 4639
4636 4640 * setup.py (manfiles): fix for rpm builds, submitted by RA
4637 4641 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4638 4642
4639 4643 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4640 4644 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4641 4645 string!). A. Schmolck caught this one.
4642 4646
4643 4647 2002-06-27 Fernando Perez <fperez@colorado.edu>
4644 4648
4645 4649 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4646 4650 defined files at the cmd line. __name__ wasn't being set to
4647 4651 __main__.
4648 4652
4649 4653 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4650 4654 regular lists and tuples besides Numeric arrays.
4651 4655
4652 4656 * IPython/Prompts.py (CachedOutput.__call__): Added output
4653 4657 supression for input ending with ';'. Similar to Mathematica and
4654 4658 Matlab. The _* vars and Out[] list are still updated, just like
4655 4659 Mathematica behaves.
4656 4660
4657 4661 2002-06-25 Fernando Perez <fperez@colorado.edu>
4658 4662
4659 4663 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4660 4664 .ini extensions for profiels under Windows.
4661 4665
4662 4666 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4663 4667 string form. Fix contributed by Alexander Schmolck
4664 4668 <a.schmolck-AT-gmx.net>
4665 4669
4666 4670 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4667 4671 pre-configured Gnuplot instance.
4668 4672
4669 4673 2002-06-21 Fernando Perez <fperez@colorado.edu>
4670 4674
4671 4675 * IPython/numutils.py (exp_safe): new function, works around the
4672 4676 underflow problems in Numeric.
4673 4677 (log2): New fn. Safe log in base 2: returns exact integer answer
4674 4678 for exact integer powers of 2.
4675 4679
4676 4680 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4677 4681 properly.
4678 4682
4679 4683 2002-06-20 Fernando Perez <fperez@colorado.edu>
4680 4684
4681 4685 * IPython/genutils.py (timing): new function like
4682 4686 Mathematica's. Similar to time_test, but returns more info.
4683 4687
4684 4688 2002-06-18 Fernando Perez <fperez@colorado.edu>
4685 4689
4686 4690 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4687 4691 according to Mike Heeter's suggestions.
4688 4692
4689 4693 2002-06-16 Fernando Perez <fperez@colorado.edu>
4690 4694
4691 4695 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4692 4696 system. GnuplotMagic is gone as a user-directory option. New files
4693 4697 make it easier to use all the gnuplot stuff both from external
4694 4698 programs as well as from IPython. Had to rewrite part of
4695 4699 hardcopy() b/c of a strange bug: often the ps files simply don't
4696 4700 get created, and require a repeat of the command (often several
4697 4701 times).
4698 4702
4699 4703 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4700 4704 resolve output channel at call time, so that if sys.stderr has
4701 4705 been redirected by user this gets honored.
4702 4706
4703 4707 2002-06-13 Fernando Perez <fperez@colorado.edu>
4704 4708
4705 4709 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4706 4710 IPShell. Kept a copy with the old names to avoid breaking people's
4707 4711 embedded code.
4708 4712
4709 4713 * IPython/ipython: simplified it to the bare minimum after
4710 4714 Holger's suggestions. Added info about how to use it in
4711 4715 PYTHONSTARTUP.
4712 4716
4713 4717 * IPython/Shell.py (IPythonShell): changed the options passing
4714 4718 from a string with funky %s replacements to a straight list. Maybe
4715 4719 a bit more typing, but it follows sys.argv conventions, so there's
4716 4720 less special-casing to remember.
4717 4721
4718 4722 2002-06-12 Fernando Perez <fperez@colorado.edu>
4719 4723
4720 4724 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4721 4725 command. Thanks to a suggestion by Mike Heeter.
4722 4726 (Magic.magic_pfile): added behavior to look at filenames if given
4723 4727 arg is not a defined object.
4724 4728 (Magic.magic_save): New @save function to save code snippets. Also
4725 4729 a Mike Heeter idea.
4726 4730
4727 4731 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4728 4732 plot() and replot(). Much more convenient now, especially for
4729 4733 interactive use.
4730 4734
4731 4735 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4732 4736 filenames.
4733 4737
4734 4738 2002-06-02 Fernando Perez <fperez@colorado.edu>
4735 4739
4736 4740 * IPython/Struct.py (Struct.__init__): modified to admit
4737 4741 initialization via another struct.
4738 4742
4739 4743 * IPython/genutils.py (SystemExec.__init__): New stateful
4740 4744 interface to xsys and bq. Useful for writing system scripts.
4741 4745
4742 4746 2002-05-30 Fernando Perez <fperez@colorado.edu>
4743 4747
4744 4748 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4745 4749 documents. This will make the user download smaller (it's getting
4746 4750 too big).
4747 4751
4748 4752 2002-05-29 Fernando Perez <fperez@colorado.edu>
4749 4753
4750 4754 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4751 4755 fix problems with shelve and pickle. Seems to work, but I don't
4752 4756 know if corner cases break it. Thanks to Mike Heeter
4753 4757 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4754 4758
4755 4759 2002-05-24 Fernando Perez <fperez@colorado.edu>
4756 4760
4757 4761 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4758 4762 macros having broken.
4759 4763
4760 4764 2002-05-21 Fernando Perez <fperez@colorado.edu>
4761 4765
4762 4766 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4763 4767 introduced logging bug: all history before logging started was
4764 4768 being written one character per line! This came from the redesign
4765 4769 of the input history as a special list which slices to strings,
4766 4770 not to lists.
4767 4771
4768 4772 2002-05-20 Fernando Perez <fperez@colorado.edu>
4769 4773
4770 4774 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4771 4775 be an attribute of all classes in this module. The design of these
4772 4776 classes needs some serious overhauling.
4773 4777
4774 4778 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4775 4779 which was ignoring '_' in option names.
4776 4780
4777 4781 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4778 4782 'Verbose_novars' to 'Context' and made it the new default. It's a
4779 4783 bit more readable and also safer than verbose.
4780 4784
4781 4785 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4782 4786 triple-quoted strings.
4783 4787
4784 4788 * IPython/OInspect.py (__all__): new module exposing the object
4785 4789 introspection facilities. Now the corresponding magics are dummy
4786 4790 wrappers around this. Having this module will make it much easier
4787 4791 to put these functions into our modified pdb.
4788 4792 This new object inspector system uses the new colorizing module,
4789 4793 so source code and other things are nicely syntax highlighted.
4790 4794
4791 4795 2002-05-18 Fernando Perez <fperez@colorado.edu>
4792 4796
4793 4797 * IPython/ColorANSI.py: Split the coloring tools into a separate
4794 4798 module so I can use them in other code easier (they were part of
4795 4799 ultraTB).
4796 4800
4797 4801 2002-05-17 Fernando Perez <fperez@colorado.edu>
4798 4802
4799 4803 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4800 4804 fixed it to set the global 'g' also to the called instance, as
4801 4805 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4802 4806 user's 'g' variables).
4803 4807
4804 4808 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4805 4809 global variables (aliases to _ih,_oh) so that users which expect
4806 4810 In[5] or Out[7] to work aren't unpleasantly surprised.
4807 4811 (InputList.__getslice__): new class to allow executing slices of
4808 4812 input history directly. Very simple class, complements the use of
4809 4813 macros.
4810 4814
4811 4815 2002-05-16 Fernando Perez <fperez@colorado.edu>
4812 4816
4813 4817 * setup.py (docdirbase): make doc directory be just doc/IPython
4814 4818 without version numbers, it will reduce clutter for users.
4815 4819
4816 4820 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4817 4821 execfile call to prevent possible memory leak. See for details:
4818 4822 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4819 4823
4820 4824 2002-05-15 Fernando Perez <fperez@colorado.edu>
4821 4825
4822 4826 * IPython/Magic.py (Magic.magic_psource): made the object
4823 4827 introspection names be more standard: pdoc, pdef, pfile and
4824 4828 psource. They all print/page their output, and it makes
4825 4829 remembering them easier. Kept old names for compatibility as
4826 4830 aliases.
4827 4831
4828 4832 2002-05-14 Fernando Perez <fperez@colorado.edu>
4829 4833
4830 4834 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4831 4835 what the mouse problem was. The trick is to use gnuplot with temp
4832 4836 files and NOT with pipes (for data communication), because having
4833 4837 both pipes and the mouse on is bad news.
4834 4838
4835 4839 2002-05-13 Fernando Perez <fperez@colorado.edu>
4836 4840
4837 4841 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4838 4842 bug. Information would be reported about builtins even when
4839 4843 user-defined functions overrode them.
4840 4844
4841 4845 2002-05-11 Fernando Perez <fperez@colorado.edu>
4842 4846
4843 4847 * IPython/__init__.py (__all__): removed FlexCompleter from
4844 4848 __all__ so that things don't fail in platforms without readline.
4845 4849
4846 4850 2002-05-10 Fernando Perez <fperez@colorado.edu>
4847 4851
4848 4852 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4849 4853 it requires Numeric, effectively making Numeric a dependency for
4850 4854 IPython.
4851 4855
4852 4856 * Released 0.2.13
4853 4857
4854 4858 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4855 4859 profiler interface. Now all the major options from the profiler
4856 4860 module are directly supported in IPython, both for single
4857 4861 expressions (@prun) and for full programs (@run -p).
4858 4862
4859 4863 2002-05-09 Fernando Perez <fperez@colorado.edu>
4860 4864
4861 4865 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4862 4866 magic properly formatted for screen.
4863 4867
4864 4868 * setup.py (make_shortcut): Changed things to put pdf version in
4865 4869 doc/ instead of doc/manual (had to change lyxport a bit).
4866 4870
4867 4871 * IPython/Magic.py (Profile.string_stats): made profile runs go
4868 4872 through pager (they are long and a pager allows searching, saving,
4869 4873 etc.)
4870 4874
4871 4875 2002-05-08 Fernando Perez <fperez@colorado.edu>
4872 4876
4873 4877 * Released 0.2.12
4874 4878
4875 4879 2002-05-06 Fernando Perez <fperez@colorado.edu>
4876 4880
4877 4881 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4878 4882 introduced); 'hist n1 n2' was broken.
4879 4883 (Magic.magic_pdb): added optional on/off arguments to @pdb
4880 4884 (Magic.magic_run): added option -i to @run, which executes code in
4881 4885 the IPython namespace instead of a clean one. Also added @irun as
4882 4886 an alias to @run -i.
4883 4887
4884 4888 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4885 4889 fixed (it didn't really do anything, the namespaces were wrong).
4886 4890
4887 4891 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4888 4892
4889 4893 * IPython/__init__.py (__all__): Fixed package namespace, now
4890 4894 'import IPython' does give access to IPython.<all> as
4891 4895 expected. Also renamed __release__ to Release.
4892 4896
4893 4897 * IPython/Debugger.py (__license__): created new Pdb class which
4894 4898 functions like a drop-in for the normal pdb.Pdb but does NOT
4895 4899 import readline by default. This way it doesn't muck up IPython's
4896 4900 readline handling, and now tab-completion finally works in the
4897 4901 debugger -- sort of. It completes things globally visible, but the
4898 4902 completer doesn't track the stack as pdb walks it. That's a bit
4899 4903 tricky, and I'll have to implement it later.
4900 4904
4901 4905 2002-05-05 Fernando Perez <fperez@colorado.edu>
4902 4906
4903 4907 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4904 4908 magic docstrings when printed via ? (explicit \'s were being
4905 4909 printed).
4906 4910
4907 4911 * IPython/ipmaker.py (make_IPython): fixed namespace
4908 4912 identification bug. Now variables loaded via logs or command-line
4909 4913 files are recognized in the interactive namespace by @who.
4910 4914
4911 4915 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4912 4916 log replay system stemming from the string form of Structs.
4913 4917
4914 4918 * IPython/Magic.py (Macro.__init__): improved macros to properly
4915 4919 handle magic commands in them.
4916 4920 (Magic.magic_logstart): usernames are now expanded so 'logstart
4917 4921 ~/mylog' now works.
4918 4922
4919 4923 * IPython/iplib.py (complete): fixed bug where paths starting with
4920 4924 '/' would be completed as magic names.
4921 4925
4922 4926 2002-05-04 Fernando Perez <fperez@colorado.edu>
4923 4927
4924 4928 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4925 4929 allow running full programs under the profiler's control.
4926 4930
4927 4931 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4928 4932 mode to report exceptions verbosely but without formatting
4929 4933 variables. This addresses the issue of ipython 'freezing' (it's
4930 4934 not frozen, but caught in an expensive formatting loop) when huge
4931 4935 variables are in the context of an exception.
4932 4936 (VerboseTB.text): Added '--->' markers at line where exception was
4933 4937 triggered. Much clearer to read, especially in NoColor modes.
4934 4938
4935 4939 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4936 4940 implemented in reverse when changing to the new parse_options().
4937 4941
4938 4942 2002-05-03 Fernando Perez <fperez@colorado.edu>
4939 4943
4940 4944 * IPython/Magic.py (Magic.parse_options): new function so that
4941 4945 magics can parse options easier.
4942 4946 (Magic.magic_prun): new function similar to profile.run(),
4943 4947 suggested by Chris Hart.
4944 4948 (Magic.magic_cd): fixed behavior so that it only changes if
4945 4949 directory actually is in history.
4946 4950
4947 4951 * IPython/usage.py (__doc__): added information about potential
4948 4952 slowness of Verbose exception mode when there are huge data
4949 4953 structures to be formatted (thanks to Archie Paulson).
4950 4954
4951 4955 * IPython/ipmaker.py (make_IPython): Changed default logging
4952 4956 (when simply called with -log) to use curr_dir/ipython.log in
4953 4957 rotate mode. Fixed crash which was occuring with -log before
4954 4958 (thanks to Jim Boyle).
4955 4959
4956 4960 2002-05-01 Fernando Perez <fperez@colorado.edu>
4957 4961
4958 4962 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4959 4963 was nasty -- though somewhat of a corner case).
4960 4964
4961 4965 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4962 4966 text (was a bug).
4963 4967
4964 4968 2002-04-30 Fernando Perez <fperez@colorado.edu>
4965 4969
4966 4970 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4967 4971 a print after ^D or ^C from the user so that the In[] prompt
4968 4972 doesn't over-run the gnuplot one.
4969 4973
4970 4974 2002-04-29 Fernando Perez <fperez@colorado.edu>
4971 4975
4972 4976 * Released 0.2.10
4973 4977
4974 4978 * IPython/__release__.py (version): get date dynamically.
4975 4979
4976 4980 * Misc. documentation updates thanks to Arnd's comments. Also ran
4977 4981 a full spellcheck on the manual (hadn't been done in a while).
4978 4982
4979 4983 2002-04-27 Fernando Perez <fperez@colorado.edu>
4980 4984
4981 4985 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4982 4986 starting a log in mid-session would reset the input history list.
4983 4987
4984 4988 2002-04-26 Fernando Perez <fperez@colorado.edu>
4985 4989
4986 4990 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4987 4991 all files were being included in an update. Now anything in
4988 4992 UserConfig that matches [A-Za-z]*.py will go (this excludes
4989 4993 __init__.py)
4990 4994
4991 4995 2002-04-25 Fernando Perez <fperez@colorado.edu>
4992 4996
4993 4997 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4994 4998 to __builtins__ so that any form of embedded or imported code can
4995 4999 test for being inside IPython.
4996 5000
4997 5001 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4998 5002 changed to GnuplotMagic because it's now an importable module,
4999 5003 this makes the name follow that of the standard Gnuplot module.
5000 5004 GnuplotMagic can now be loaded at any time in mid-session.
5001 5005
5002 5006 2002-04-24 Fernando Perez <fperez@colorado.edu>
5003 5007
5004 5008 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5005 5009 the globals (IPython has its own namespace) and the
5006 5010 PhysicalQuantity stuff is much better anyway.
5007 5011
5008 5012 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5009 5013 embedding example to standard user directory for
5010 5014 distribution. Also put it in the manual.
5011 5015
5012 5016 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5013 5017 instance as first argument (so it doesn't rely on some obscure
5014 5018 hidden global).
5015 5019
5016 5020 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5017 5021 delimiters. While it prevents ().TAB from working, it allows
5018 5022 completions in open (... expressions. This is by far a more common
5019 5023 case.
5020 5024
5021 5025 2002-04-23 Fernando Perez <fperez@colorado.edu>
5022 5026
5023 5027 * IPython/Extensions/InterpreterPasteInput.py: new
5024 5028 syntax-processing module for pasting lines with >>> or ... at the
5025 5029 start.
5026 5030
5027 5031 * IPython/Extensions/PhysicalQ_Interactive.py
5028 5032 (PhysicalQuantityInteractive.__int__): fixed to work with either
5029 5033 Numeric or math.
5030 5034
5031 5035 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5032 5036 provided profiles. Now we have:
5033 5037 -math -> math module as * and cmath with its own namespace.
5034 5038 -numeric -> Numeric as *, plus gnuplot & grace
5035 5039 -physics -> same as before
5036 5040
5037 5041 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5038 5042 user-defined magics wouldn't be found by @magic if they were
5039 5043 defined as class methods. Also cleaned up the namespace search
5040 5044 logic and the string building (to use %s instead of many repeated
5041 5045 string adds).
5042 5046
5043 5047 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5044 5048 of user-defined magics to operate with class methods (cleaner, in
5045 5049 line with the gnuplot code).
5046 5050
5047 5051 2002-04-22 Fernando Perez <fperez@colorado.edu>
5048 5052
5049 5053 * setup.py: updated dependency list so that manual is updated when
5050 5054 all included files change.
5051 5055
5052 5056 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5053 5057 the delimiter removal option (the fix is ugly right now).
5054 5058
5055 5059 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5056 5060 all of the math profile (quicker loading, no conflict between
5057 5061 g-9.8 and g-gnuplot).
5058 5062
5059 5063 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5060 5064 name of post-mortem files to IPython_crash_report.txt.
5061 5065
5062 5066 * Cleanup/update of the docs. Added all the new readline info and
5063 5067 formatted all lists as 'real lists'.
5064 5068
5065 5069 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5066 5070 tab-completion options, since the full readline parse_and_bind is
5067 5071 now accessible.
5068 5072
5069 5073 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5070 5074 handling of readline options. Now users can specify any string to
5071 5075 be passed to parse_and_bind(), as well as the delimiters to be
5072 5076 removed.
5073 5077 (InteractiveShell.__init__): Added __name__ to the global
5074 5078 namespace so that things like Itpl which rely on its existence
5075 5079 don't crash.
5076 5080 (InteractiveShell._prefilter): Defined the default with a _ so
5077 5081 that prefilter() is easier to override, while the default one
5078 5082 remains available.
5079 5083
5080 5084 2002-04-18 Fernando Perez <fperez@colorado.edu>
5081 5085
5082 5086 * Added information about pdb in the docs.
5083 5087
5084 5088 2002-04-17 Fernando Perez <fperez@colorado.edu>
5085 5089
5086 5090 * IPython/ipmaker.py (make_IPython): added rc_override option to
5087 5091 allow passing config options at creation time which may override
5088 5092 anything set in the config files or command line. This is
5089 5093 particularly useful for configuring embedded instances.
5090 5094
5091 5095 2002-04-15 Fernando Perez <fperez@colorado.edu>
5092 5096
5093 5097 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5094 5098 crash embedded instances because of the input cache falling out of
5095 5099 sync with the output counter.
5096 5100
5097 5101 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5098 5102 mode which calls pdb after an uncaught exception in IPython itself.
5099 5103
5100 5104 2002-04-14 Fernando Perez <fperez@colorado.edu>
5101 5105
5102 5106 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5103 5107 readline, fix it back after each call.
5104 5108
5105 5109 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5106 5110 method to force all access via __call__(), which guarantees that
5107 5111 traceback references are properly deleted.
5108 5112
5109 5113 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5110 5114 improve printing when pprint is in use.
5111 5115
5112 5116 2002-04-13 Fernando Perez <fperez@colorado.edu>
5113 5117
5114 5118 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5115 5119 exceptions aren't caught anymore. If the user triggers one, he
5116 5120 should know why he's doing it and it should go all the way up,
5117 5121 just like any other exception. So now @abort will fully kill the
5118 5122 embedded interpreter and the embedding code (unless that happens
5119 5123 to catch SystemExit).
5120 5124
5121 5125 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5122 5126 and a debugger() method to invoke the interactive pdb debugger
5123 5127 after printing exception information. Also added the corresponding
5124 5128 -pdb option and @pdb magic to control this feature, and updated
5125 5129 the docs. After a suggestion from Christopher Hart
5126 5130 (hart-AT-caltech.edu).
5127 5131
5128 5132 2002-04-12 Fernando Perez <fperez@colorado.edu>
5129 5133
5130 5134 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5131 5135 the exception handlers defined by the user (not the CrashHandler)
5132 5136 so that user exceptions don't trigger an ipython bug report.
5133 5137
5134 5138 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5135 5139 configurable (it should have always been so).
5136 5140
5137 5141 2002-03-26 Fernando Perez <fperez@colorado.edu>
5138 5142
5139 5143 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5140 5144 and there to fix embedding namespace issues. This should all be
5141 5145 done in a more elegant way.
5142 5146
5143 5147 2002-03-25 Fernando Perez <fperez@colorado.edu>
5144 5148
5145 5149 * IPython/genutils.py (get_home_dir): Try to make it work under
5146 5150 win9x also.
5147 5151
5148 5152 2002-03-20 Fernando Perez <fperez@colorado.edu>
5149 5153
5150 5154 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5151 5155 sys.displayhook untouched upon __init__.
5152 5156
5153 5157 2002-03-19 Fernando Perez <fperez@colorado.edu>
5154 5158
5155 5159 * Released 0.2.9 (for embedding bug, basically).
5156 5160
5157 5161 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5158 5162 exceptions so that enclosing shell's state can be restored.
5159 5163
5160 5164 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5161 5165 naming conventions in the .ipython/ dir.
5162 5166
5163 5167 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5164 5168 from delimiters list so filenames with - in them get expanded.
5165 5169
5166 5170 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5167 5171 sys.displayhook not being properly restored after an embedded call.
5168 5172
5169 5173 2002-03-18 Fernando Perez <fperez@colorado.edu>
5170 5174
5171 5175 * Released 0.2.8
5172 5176
5173 5177 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5174 5178 some files weren't being included in a -upgrade.
5175 5179 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5176 5180 on' so that the first tab completes.
5177 5181 (InteractiveShell.handle_magic): fixed bug with spaces around
5178 5182 quotes breaking many magic commands.
5179 5183
5180 5184 * setup.py: added note about ignoring the syntax error messages at
5181 5185 installation.
5182 5186
5183 5187 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5184 5188 streamlining the gnuplot interface, now there's only one magic @gp.
5185 5189
5186 5190 2002-03-17 Fernando Perez <fperez@colorado.edu>
5187 5191
5188 5192 * IPython/UserConfig/magic_gnuplot.py: new name for the
5189 5193 example-magic_pm.py file. Much enhanced system, now with a shell
5190 5194 for communicating directly with gnuplot, one command at a time.
5191 5195
5192 5196 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5193 5197 setting __name__=='__main__'.
5194 5198
5195 5199 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5196 5200 mini-shell for accessing gnuplot from inside ipython. Should
5197 5201 extend it later for grace access too. Inspired by Arnd's
5198 5202 suggestion.
5199 5203
5200 5204 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5201 5205 calling magic functions with () in their arguments. Thanks to Arnd
5202 5206 Baecker for pointing this to me.
5203 5207
5204 5208 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5205 5209 infinitely for integer or complex arrays (only worked with floats).
5206 5210
5207 5211 2002-03-16 Fernando Perez <fperez@colorado.edu>
5208 5212
5209 5213 * setup.py: Merged setup and setup_windows into a single script
5210 5214 which properly handles things for windows users.
5211 5215
5212 5216 2002-03-15 Fernando Perez <fperez@colorado.edu>
5213 5217
5214 5218 * Big change to the manual: now the magics are all automatically
5215 5219 documented. This information is generated from their docstrings
5216 5220 and put in a latex file included by the manual lyx file. This way
5217 5221 we get always up to date information for the magics. The manual
5218 5222 now also has proper version information, also auto-synced.
5219 5223
5220 5224 For this to work, an undocumented --magic_docstrings option was added.
5221 5225
5222 5226 2002-03-13 Fernando Perez <fperez@colorado.edu>
5223 5227
5224 5228 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5225 5229 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5226 5230
5227 5231 2002-03-12 Fernando Perez <fperez@colorado.edu>
5228 5232
5229 5233 * IPython/ultraTB.py (TermColors): changed color escapes again to
5230 5234 fix the (old, reintroduced) line-wrapping bug. Basically, if
5231 5235 \001..\002 aren't given in the color escapes, lines get wrapped
5232 5236 weirdly. But giving those screws up old xterms and emacs terms. So
5233 5237 I added some logic for emacs terms to be ok, but I can't identify old
5234 5238 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5235 5239
5236 5240 2002-03-10 Fernando Perez <fperez@colorado.edu>
5237 5241
5238 5242 * IPython/usage.py (__doc__): Various documentation cleanups and
5239 5243 updates, both in usage docstrings and in the manual.
5240 5244
5241 5245 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5242 5246 handling of caching. Set minimum acceptabe value for having a
5243 5247 cache at 20 values.
5244 5248
5245 5249 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5246 5250 install_first_time function to a method, renamed it and added an
5247 5251 'upgrade' mode. Now people can update their config directory with
5248 5252 a simple command line switch (-upgrade, also new).
5249 5253
5250 5254 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5251 5255 @file (convenient for automagic users under Python >= 2.2).
5252 5256 Removed @files (it seemed more like a plural than an abbrev. of
5253 5257 'file show').
5254 5258
5255 5259 * IPython/iplib.py (install_first_time): Fixed crash if there were
5256 5260 backup files ('~') in .ipython/ install directory.
5257 5261
5258 5262 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5259 5263 system. Things look fine, but these changes are fairly
5260 5264 intrusive. Test them for a few days.
5261 5265
5262 5266 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5263 5267 the prompts system. Now all in/out prompt strings are user
5264 5268 controllable. This is particularly useful for embedding, as one
5265 5269 can tag embedded instances with particular prompts.
5266 5270
5267 5271 Also removed global use of sys.ps1/2, which now allows nested
5268 5272 embeddings without any problems. Added command-line options for
5269 5273 the prompt strings.
5270 5274
5271 5275 2002-03-08 Fernando Perez <fperez@colorado.edu>
5272 5276
5273 5277 * IPython/UserConfig/example-embed-short.py (ipshell): added
5274 5278 example file with the bare minimum code for embedding.
5275 5279
5276 5280 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5277 5281 functionality for the embeddable shell to be activated/deactivated
5278 5282 either globally or at each call.
5279 5283
5280 5284 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5281 5285 rewriting the prompt with '--->' for auto-inputs with proper
5282 5286 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5283 5287 this is handled by the prompts class itself, as it should.
5284 5288
5285 5289 2002-03-05 Fernando Perez <fperez@colorado.edu>
5286 5290
5287 5291 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5288 5292 @logstart to avoid name clashes with the math log function.
5289 5293
5290 5294 * Big updates to X/Emacs section of the manual.
5291 5295
5292 5296 * Removed ipython_emacs. Milan explained to me how to pass
5293 5297 arguments to ipython through Emacs. Some day I'm going to end up
5294 5298 learning some lisp...
5295 5299
5296 5300 2002-03-04 Fernando Perez <fperez@colorado.edu>
5297 5301
5298 5302 * IPython/ipython_emacs: Created script to be used as the
5299 5303 py-python-command Emacs variable so we can pass IPython
5300 5304 parameters. I can't figure out how to tell Emacs directly to pass
5301 5305 parameters to IPython, so a dummy shell script will do it.
5302 5306
5303 5307 Other enhancements made for things to work better under Emacs'
5304 5308 various types of terminals. Many thanks to Milan Zamazal
5305 5309 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5306 5310
5307 5311 2002-03-01 Fernando Perez <fperez@colorado.edu>
5308 5312
5309 5313 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5310 5314 that loading of readline is now optional. This gives better
5311 5315 control to emacs users.
5312 5316
5313 5317 * IPython/ultraTB.py (__date__): Modified color escape sequences
5314 5318 and now things work fine under xterm and in Emacs' term buffers
5315 5319 (though not shell ones). Well, in emacs you get colors, but all
5316 5320 seem to be 'light' colors (no difference between dark and light
5317 5321 ones). But the garbage chars are gone, and also in xterms. It
5318 5322 seems that now I'm using 'cleaner' ansi sequences.
5319 5323
5320 5324 2002-02-21 Fernando Perez <fperez@colorado.edu>
5321 5325
5322 5326 * Released 0.2.7 (mainly to publish the scoping fix).
5323 5327
5324 5328 * IPython/Logger.py (Logger.logstate): added. A corresponding
5325 5329 @logstate magic was created.
5326 5330
5327 5331 * IPython/Magic.py: fixed nested scoping problem under Python
5328 5332 2.1.x (automagic wasn't working).
5329 5333
5330 5334 2002-02-20 Fernando Perez <fperez@colorado.edu>
5331 5335
5332 5336 * Released 0.2.6.
5333 5337
5334 5338 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5335 5339 option so that logs can come out without any headers at all.
5336 5340
5337 5341 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5338 5342 SciPy.
5339 5343
5340 5344 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5341 5345 that embedded IPython calls don't require vars() to be explicitly
5342 5346 passed. Now they are extracted from the caller's frame (code
5343 5347 snatched from Eric Jones' weave). Added better documentation to
5344 5348 the section on embedding and the example file.
5345 5349
5346 5350 * IPython/genutils.py (page): Changed so that under emacs, it just
5347 5351 prints the string. You can then page up and down in the emacs
5348 5352 buffer itself. This is how the builtin help() works.
5349 5353
5350 5354 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5351 5355 macro scoping: macros need to be executed in the user's namespace
5352 5356 to work as if they had been typed by the user.
5353 5357
5354 5358 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5355 5359 execute automatically (no need to type 'exec...'). They then
5356 5360 behave like 'true macros'. The printing system was also modified
5357 5361 for this to work.
5358 5362
5359 5363 2002-02-19 Fernando Perez <fperez@colorado.edu>
5360 5364
5361 5365 * IPython/genutils.py (page_file): new function for paging files
5362 5366 in an OS-independent way. Also necessary for file viewing to work
5363 5367 well inside Emacs buffers.
5364 5368 (page): Added checks for being in an emacs buffer.
5365 5369 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5366 5370 same bug in iplib.
5367 5371
5368 5372 2002-02-18 Fernando Perez <fperez@colorado.edu>
5369 5373
5370 5374 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5371 5375 of readline so that IPython can work inside an Emacs buffer.
5372 5376
5373 5377 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5374 5378 method signatures (they weren't really bugs, but it looks cleaner
5375 5379 and keeps PyChecker happy).
5376 5380
5377 5381 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5378 5382 for implementing various user-defined hooks. Currently only
5379 5383 display is done.
5380 5384
5381 5385 * IPython/Prompts.py (CachedOutput._display): changed display
5382 5386 functions so that they can be dynamically changed by users easily.
5383 5387
5384 5388 * IPython/Extensions/numeric_formats.py (num_display): added an
5385 5389 extension for printing NumPy arrays in flexible manners. It
5386 5390 doesn't do anything yet, but all the structure is in
5387 5391 place. Ultimately the plan is to implement output format control
5388 5392 like in Octave.
5389 5393
5390 5394 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5391 5395 methods are found at run-time by all the automatic machinery.
5392 5396
5393 5397 2002-02-17 Fernando Perez <fperez@colorado.edu>
5394 5398
5395 5399 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5396 5400 whole file a little.
5397 5401
5398 5402 * ToDo: closed this document. Now there's a new_design.lyx
5399 5403 document for all new ideas. Added making a pdf of it for the
5400 5404 end-user distro.
5401 5405
5402 5406 * IPython/Logger.py (Logger.switch_log): Created this to replace
5403 5407 logon() and logoff(). It also fixes a nasty crash reported by
5404 5408 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5405 5409
5406 5410 * IPython/iplib.py (complete): got auto-completion to work with
5407 5411 automagic (I had wanted this for a long time).
5408 5412
5409 5413 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5410 5414 to @file, since file() is now a builtin and clashes with automagic
5411 5415 for @file.
5412 5416
5413 5417 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5414 5418 of this was previously in iplib, which had grown to more than 2000
5415 5419 lines, way too long. No new functionality, but it makes managing
5416 5420 the code a bit easier.
5417 5421
5418 5422 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5419 5423 information to crash reports.
5420 5424
5421 5425 2002-02-12 Fernando Perez <fperez@colorado.edu>
5422 5426
5423 5427 * Released 0.2.5.
5424 5428
5425 5429 2002-02-11 Fernando Perez <fperez@colorado.edu>
5426 5430
5427 5431 * Wrote a relatively complete Windows installer. It puts
5428 5432 everything in place, creates Start Menu entries and fixes the
5429 5433 color issues. Nothing fancy, but it works.
5430 5434
5431 5435 2002-02-10 Fernando Perez <fperez@colorado.edu>
5432 5436
5433 5437 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5434 5438 os.path.expanduser() call so that we can type @run ~/myfile.py and
5435 5439 have thigs work as expected.
5436 5440
5437 5441 * IPython/genutils.py (page): fixed exception handling so things
5438 5442 work both in Unix and Windows correctly. Quitting a pager triggers
5439 5443 an IOError/broken pipe in Unix, and in windows not finding a pager
5440 5444 is also an IOError, so I had to actually look at the return value
5441 5445 of the exception, not just the exception itself. Should be ok now.
5442 5446
5443 5447 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5444 5448 modified to allow case-insensitive color scheme changes.
5445 5449
5446 5450 2002-02-09 Fernando Perez <fperez@colorado.edu>
5447 5451
5448 5452 * IPython/genutils.py (native_line_ends): new function to leave
5449 5453 user config files with os-native line-endings.
5450 5454
5451 5455 * README and manual updates.
5452 5456
5453 5457 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5454 5458 instead of StringType to catch Unicode strings.
5455 5459
5456 5460 * IPython/genutils.py (filefind): fixed bug for paths with
5457 5461 embedded spaces (very common in Windows).
5458 5462
5459 5463 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5460 5464 files under Windows, so that they get automatically associated
5461 5465 with a text editor. Windows makes it a pain to handle
5462 5466 extension-less files.
5463 5467
5464 5468 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5465 5469 warning about readline only occur for Posix. In Windows there's no
5466 5470 way to get readline, so why bother with the warning.
5467 5471
5468 5472 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5469 5473 for __str__ instead of dir(self), since dir() changed in 2.2.
5470 5474
5471 5475 * Ported to Windows! Tested on XP, I suspect it should work fine
5472 5476 on NT/2000, but I don't think it will work on 98 et al. That
5473 5477 series of Windows is such a piece of junk anyway that I won't try
5474 5478 porting it there. The XP port was straightforward, showed a few
5475 5479 bugs here and there (fixed all), in particular some string
5476 5480 handling stuff which required considering Unicode strings (which
5477 5481 Windows uses). This is good, but hasn't been too tested :) No
5478 5482 fancy installer yet, I'll put a note in the manual so people at
5479 5483 least make manually a shortcut.
5480 5484
5481 5485 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5482 5486 into a single one, "colors". This now controls both prompt and
5483 5487 exception color schemes, and can be changed both at startup
5484 5488 (either via command-line switches or via ipythonrc files) and at
5485 5489 runtime, with @colors.
5486 5490 (Magic.magic_run): renamed @prun to @run and removed the old
5487 5491 @run. The two were too similar to warrant keeping both.
5488 5492
5489 5493 2002-02-03 Fernando Perez <fperez@colorado.edu>
5490 5494
5491 5495 * IPython/iplib.py (install_first_time): Added comment on how to
5492 5496 configure the color options for first-time users. Put a <return>
5493 5497 request at the end so that small-terminal users get a chance to
5494 5498 read the startup info.
5495 5499
5496 5500 2002-01-23 Fernando Perez <fperez@colorado.edu>
5497 5501
5498 5502 * IPython/iplib.py (CachedOutput.update): Changed output memory
5499 5503 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5500 5504 input history we still use _i. Did this b/c these variable are
5501 5505 very commonly used in interactive work, so the less we need to
5502 5506 type the better off we are.
5503 5507 (Magic.magic_prun): updated @prun to better handle the namespaces
5504 5508 the file will run in, including a fix for __name__ not being set
5505 5509 before.
5506 5510
5507 5511 2002-01-20 Fernando Perez <fperez@colorado.edu>
5508 5512
5509 5513 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5510 5514 extra garbage for Python 2.2. Need to look more carefully into
5511 5515 this later.
5512 5516
5513 5517 2002-01-19 Fernando Perez <fperez@colorado.edu>
5514 5518
5515 5519 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5516 5520 display SyntaxError exceptions properly formatted when they occur
5517 5521 (they can be triggered by imported code).
5518 5522
5519 5523 2002-01-18 Fernando Perez <fperez@colorado.edu>
5520 5524
5521 5525 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5522 5526 SyntaxError exceptions are reported nicely formatted, instead of
5523 5527 spitting out only offset information as before.
5524 5528 (Magic.magic_prun): Added the @prun function for executing
5525 5529 programs with command line args inside IPython.
5526 5530
5527 5531 2002-01-16 Fernando Perez <fperez@colorado.edu>
5528 5532
5529 5533 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5530 5534 to *not* include the last item given in a range. This brings their
5531 5535 behavior in line with Python's slicing:
5532 5536 a[n1:n2] -> a[n1]...a[n2-1]
5533 5537 It may be a bit less convenient, but I prefer to stick to Python's
5534 5538 conventions *everywhere*, so users never have to wonder.
5535 5539 (Magic.magic_macro): Added @macro function to ease the creation of
5536 5540 macros.
5537 5541
5538 5542 2002-01-05 Fernando Perez <fperez@colorado.edu>
5539 5543
5540 5544 * Released 0.2.4.
5541 5545
5542 5546 * IPython/iplib.py (Magic.magic_pdef):
5543 5547 (InteractiveShell.safe_execfile): report magic lines and error
5544 5548 lines without line numbers so one can easily copy/paste them for
5545 5549 re-execution.
5546 5550
5547 5551 * Updated manual with recent changes.
5548 5552
5549 5553 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5550 5554 docstring printing when class? is called. Very handy for knowing
5551 5555 how to create class instances (as long as __init__ is well
5552 5556 documented, of course :)
5553 5557 (Magic.magic_doc): print both class and constructor docstrings.
5554 5558 (Magic.magic_pdef): give constructor info if passed a class and
5555 5559 __call__ info for callable object instances.
5556 5560
5557 5561 2002-01-04 Fernando Perez <fperez@colorado.edu>
5558 5562
5559 5563 * Made deep_reload() off by default. It doesn't always work
5560 5564 exactly as intended, so it's probably safer to have it off. It's
5561 5565 still available as dreload() anyway, so nothing is lost.
5562 5566
5563 5567 2002-01-02 Fernando Perez <fperez@colorado.edu>
5564 5568
5565 5569 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5566 5570 so I wanted an updated release).
5567 5571
5568 5572 2001-12-27 Fernando Perez <fperez@colorado.edu>
5569 5573
5570 5574 * IPython/iplib.py (InteractiveShell.interact): Added the original
5571 5575 code from 'code.py' for this module in order to change the
5572 5576 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5573 5577 the history cache would break when the user hit Ctrl-C, and
5574 5578 interact() offers no way to add any hooks to it.
5575 5579
5576 5580 2001-12-23 Fernando Perez <fperez@colorado.edu>
5577 5581
5578 5582 * setup.py: added check for 'MANIFEST' before trying to remove
5579 5583 it. Thanks to Sean Reifschneider.
5580 5584
5581 5585 2001-12-22 Fernando Perez <fperez@colorado.edu>
5582 5586
5583 5587 * Released 0.2.2.
5584 5588
5585 5589 * Finished (reasonably) writing the manual. Later will add the
5586 5590 python-standard navigation stylesheets, but for the time being
5587 5591 it's fairly complete. Distribution will include html and pdf
5588 5592 versions.
5589 5593
5590 5594 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5591 5595 (MayaVi author).
5592 5596
5593 5597 2001-12-21 Fernando Perez <fperez@colorado.edu>
5594 5598
5595 5599 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5596 5600 good public release, I think (with the manual and the distutils
5597 5601 installer). The manual can use some work, but that can go
5598 5602 slowly. Otherwise I think it's quite nice for end users. Next
5599 5603 summer, rewrite the guts of it...
5600 5604
5601 5605 * Changed format of ipythonrc files to use whitespace as the
5602 5606 separator instead of an explicit '='. Cleaner.
5603 5607
5604 5608 2001-12-20 Fernando Perez <fperez@colorado.edu>
5605 5609
5606 5610 * Started a manual in LyX. For now it's just a quick merge of the
5607 5611 various internal docstrings and READMEs. Later it may grow into a
5608 5612 nice, full-blown manual.
5609 5613
5610 5614 * Set up a distutils based installer. Installation should now be
5611 5615 trivially simple for end-users.
5612 5616
5613 5617 2001-12-11 Fernando Perez <fperez@colorado.edu>
5614 5618
5615 5619 * Released 0.2.0. First public release, announced it at
5616 5620 comp.lang.python. From now on, just bugfixes...
5617 5621
5618 5622 * Went through all the files, set copyright/license notices and
5619 5623 cleaned up things. Ready for release.
5620 5624
5621 5625 2001-12-10 Fernando Perez <fperez@colorado.edu>
5622 5626
5623 5627 * Changed the first-time installer not to use tarfiles. It's more
5624 5628 robust now and less unix-dependent. Also makes it easier for
5625 5629 people to later upgrade versions.
5626 5630
5627 5631 * Changed @exit to @abort to reflect the fact that it's pretty
5628 5632 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5629 5633 becomes significant only when IPyhton is embedded: in that case,
5630 5634 C-D closes IPython only, but @abort kills the enclosing program
5631 5635 too (unless it had called IPython inside a try catching
5632 5636 SystemExit).
5633 5637
5634 5638 * Created Shell module which exposes the actuall IPython Shell
5635 5639 classes, currently the normal and the embeddable one. This at
5636 5640 least offers a stable interface we won't need to change when
5637 5641 (later) the internals are rewritten. That rewrite will be confined
5638 5642 to iplib and ipmaker, but the Shell interface should remain as is.
5639 5643
5640 5644 * Added embed module which offers an embeddable IPShell object,
5641 5645 useful to fire up IPython *inside* a running program. Great for
5642 5646 debugging or dynamical data analysis.
5643 5647
5644 5648 2001-12-08 Fernando Perez <fperez@colorado.edu>
5645 5649
5646 5650 * Fixed small bug preventing seeing info from methods of defined
5647 5651 objects (incorrect namespace in _ofind()).
5648 5652
5649 5653 * Documentation cleanup. Moved the main usage docstrings to a
5650 5654 separate file, usage.py (cleaner to maintain, and hopefully in the
5651 5655 future some perlpod-like way of producing interactive, man and
5652 5656 html docs out of it will be found).
5653 5657
5654 5658 * Added @profile to see your profile at any time.
5655 5659
5656 5660 * Added @p as an alias for 'print'. It's especially convenient if
5657 5661 using automagic ('p x' prints x).
5658 5662
5659 5663 * Small cleanups and fixes after a pychecker run.
5660 5664
5661 5665 * Changed the @cd command to handle @cd - and @cd -<n> for
5662 5666 visiting any directory in _dh.
5663 5667
5664 5668 * Introduced _dh, a history of visited directories. @dhist prints
5665 5669 it out with numbers.
5666 5670
5667 5671 2001-12-07 Fernando Perez <fperez@colorado.edu>
5668 5672
5669 5673 * Released 0.1.22
5670 5674
5671 5675 * Made initialization a bit more robust against invalid color
5672 5676 options in user input (exit, not traceback-crash).
5673 5677
5674 5678 * Changed the bug crash reporter to write the report only in the
5675 5679 user's .ipython directory. That way IPython won't litter people's
5676 5680 hard disks with crash files all over the place. Also print on
5677 5681 screen the necessary mail command.
5678 5682
5679 5683 * With the new ultraTB, implemented LightBG color scheme for light
5680 5684 background terminals. A lot of people like white backgrounds, so I
5681 5685 guess we should at least give them something readable.
5682 5686
5683 5687 2001-12-06 Fernando Perez <fperez@colorado.edu>
5684 5688
5685 5689 * Modified the structure of ultraTB. Now there's a proper class
5686 5690 for tables of color schemes which allow adding schemes easily and
5687 5691 switching the active scheme without creating a new instance every
5688 5692 time (which was ridiculous). The syntax for creating new schemes
5689 5693 is also cleaner. I think ultraTB is finally done, with a clean
5690 5694 class structure. Names are also much cleaner (now there's proper
5691 5695 color tables, no need for every variable to also have 'color' in
5692 5696 its name).
5693 5697
5694 5698 * Broke down genutils into separate files. Now genutils only
5695 5699 contains utility functions, and classes have been moved to their
5696 5700 own files (they had enough independent functionality to warrant
5697 5701 it): ConfigLoader, OutputTrap, Struct.
5698 5702
5699 5703 2001-12-05 Fernando Perez <fperez@colorado.edu>
5700 5704
5701 5705 * IPython turns 21! Released version 0.1.21, as a candidate for
5702 5706 public consumption. If all goes well, release in a few days.
5703 5707
5704 5708 * Fixed path bug (files in Extensions/ directory wouldn't be found
5705 5709 unless IPython/ was explicitly in sys.path).
5706 5710
5707 5711 * Extended the FlexCompleter class as MagicCompleter to allow
5708 5712 completion of @-starting lines.
5709 5713
5710 5714 * Created __release__.py file as a central repository for release
5711 5715 info that other files can read from.
5712 5716
5713 5717 * Fixed small bug in logging: when logging was turned on in
5714 5718 mid-session, old lines with special meanings (!@?) were being
5715 5719 logged without the prepended comment, which is necessary since
5716 5720 they are not truly valid python syntax. This should make session
5717 5721 restores produce less errors.
5718 5722
5719 5723 * The namespace cleanup forced me to make a FlexCompleter class
5720 5724 which is nothing but a ripoff of rlcompleter, but with selectable
5721 5725 namespace (rlcompleter only works in __main__.__dict__). I'll try
5722 5726 to submit a note to the authors to see if this change can be
5723 5727 incorporated in future rlcompleter releases (Dec.6: done)
5724 5728
5725 5729 * More fixes to namespace handling. It was a mess! Now all
5726 5730 explicit references to __main__.__dict__ are gone (except when
5727 5731 really needed) and everything is handled through the namespace
5728 5732 dicts in the IPython instance. We seem to be getting somewhere
5729 5733 with this, finally...
5730 5734
5731 5735 * Small documentation updates.
5732 5736
5733 5737 * Created the Extensions directory under IPython (with an
5734 5738 __init__.py). Put the PhysicalQ stuff there. This directory should
5735 5739 be used for all special-purpose extensions.
5736 5740
5737 5741 * File renaming:
5738 5742 ipythonlib --> ipmaker
5739 5743 ipplib --> iplib
5740 5744 This makes a bit more sense in terms of what these files actually do.
5741 5745
5742 5746 * Moved all the classes and functions in ipythonlib to ipplib, so
5743 5747 now ipythonlib only has make_IPython(). This will ease up its
5744 5748 splitting in smaller functional chunks later.
5745 5749
5746 5750 * Cleaned up (done, I think) output of @whos. Better column
5747 5751 formatting, and now shows str(var) for as much as it can, which is
5748 5752 typically what one gets with a 'print var'.
5749 5753
5750 5754 2001-12-04 Fernando Perez <fperez@colorado.edu>
5751 5755
5752 5756 * Fixed namespace problems. Now builtin/IPyhton/user names get
5753 5757 properly reported in their namespace. Internal namespace handling
5754 5758 is finally getting decent (not perfect yet, but much better than
5755 5759 the ad-hoc mess we had).
5756 5760
5757 5761 * Removed -exit option. If people just want to run a python
5758 5762 script, that's what the normal interpreter is for. Less
5759 5763 unnecessary options, less chances for bugs.
5760 5764
5761 5765 * Added a crash handler which generates a complete post-mortem if
5762 5766 IPython crashes. This will help a lot in tracking bugs down the
5763 5767 road.
5764 5768
5765 5769 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5766 5770 which were boud to functions being reassigned would bypass the
5767 5771 logger, breaking the sync of _il with the prompt counter. This
5768 5772 would then crash IPython later when a new line was logged.
5769 5773
5770 5774 2001-12-02 Fernando Perez <fperez@colorado.edu>
5771 5775
5772 5776 * Made IPython a package. This means people don't have to clutter
5773 5777 their sys.path with yet another directory. Changed the INSTALL
5774 5778 file accordingly.
5775 5779
5776 5780 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5777 5781 sorts its output (so @who shows it sorted) and @whos formats the
5778 5782 table according to the width of the first column. Nicer, easier to
5779 5783 read. Todo: write a generic table_format() which takes a list of
5780 5784 lists and prints it nicely formatted, with optional row/column
5781 5785 separators and proper padding and justification.
5782 5786
5783 5787 * Released 0.1.20
5784 5788
5785 5789 * Fixed bug in @log which would reverse the inputcache list (a
5786 5790 copy operation was missing).
5787 5791
5788 5792 * Code cleanup. @config was changed to use page(). Better, since
5789 5793 its output is always quite long.
5790 5794
5791 5795 * Itpl is back as a dependency. I was having too many problems
5792 5796 getting the parametric aliases to work reliably, and it's just
5793 5797 easier to code weird string operations with it than playing %()s
5794 5798 games. It's only ~6k, so I don't think it's too big a deal.
5795 5799
5796 5800 * Found (and fixed) a very nasty bug with history. !lines weren't
5797 5801 getting cached, and the out of sync caches would crash
5798 5802 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5799 5803 division of labor a bit better. Bug fixed, cleaner structure.
5800 5804
5801 5805 2001-12-01 Fernando Perez <fperez@colorado.edu>
5802 5806
5803 5807 * Released 0.1.19
5804 5808
5805 5809 * Added option -n to @hist to prevent line number printing. Much
5806 5810 easier to copy/paste code this way.
5807 5811
5808 5812 * Created global _il to hold the input list. Allows easy
5809 5813 re-execution of blocks of code by slicing it (inspired by Janko's
5810 5814 comment on 'macros').
5811 5815
5812 5816 * Small fixes and doc updates.
5813 5817
5814 5818 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5815 5819 much too fragile with automagic. Handles properly multi-line
5816 5820 statements and takes parameters.
5817 5821
5818 5822 2001-11-30 Fernando Perez <fperez@colorado.edu>
5819 5823
5820 5824 * Version 0.1.18 released.
5821 5825
5822 5826 * Fixed nasty namespace bug in initial module imports.
5823 5827
5824 5828 * Added copyright/license notes to all code files (except
5825 5829 DPyGetOpt). For the time being, LGPL. That could change.
5826 5830
5827 5831 * Rewrote a much nicer README, updated INSTALL, cleaned up
5828 5832 ipythonrc-* samples.
5829 5833
5830 5834 * Overall code/documentation cleanup. Basically ready for
5831 5835 release. Only remaining thing: licence decision (LGPL?).
5832 5836
5833 5837 * Converted load_config to a class, ConfigLoader. Now recursion
5834 5838 control is better organized. Doesn't include the same file twice.
5835 5839
5836 5840 2001-11-29 Fernando Perez <fperez@colorado.edu>
5837 5841
5838 5842 * Got input history working. Changed output history variables from
5839 5843 _p to _o so that _i is for input and _o for output. Just cleaner
5840 5844 convention.
5841 5845
5842 5846 * Implemented parametric aliases. This pretty much allows the
5843 5847 alias system to offer full-blown shell convenience, I think.
5844 5848
5845 5849 * Version 0.1.17 released, 0.1.18 opened.
5846 5850
5847 5851 * dot_ipython/ipythonrc (alias): added documentation.
5848 5852 (xcolor): Fixed small bug (xcolors -> xcolor)
5849 5853
5850 5854 * Changed the alias system. Now alias is a magic command to define
5851 5855 aliases just like the shell. Rationale: the builtin magics should
5852 5856 be there for things deeply connected to IPython's
5853 5857 architecture. And this is a much lighter system for what I think
5854 5858 is the really important feature: allowing users to define quickly
5855 5859 magics that will do shell things for them, so they can customize
5856 5860 IPython easily to match their work habits. If someone is really
5857 5861 desperate to have another name for a builtin alias, they can
5858 5862 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5859 5863 works.
5860 5864
5861 5865 2001-11-28 Fernando Perez <fperez@colorado.edu>
5862 5866
5863 5867 * Changed @file so that it opens the source file at the proper
5864 5868 line. Since it uses less, if your EDITOR environment is
5865 5869 configured, typing v will immediately open your editor of choice
5866 5870 right at the line where the object is defined. Not as quick as
5867 5871 having a direct @edit command, but for all intents and purposes it
5868 5872 works. And I don't have to worry about writing @edit to deal with
5869 5873 all the editors, less does that.
5870 5874
5871 5875 * Version 0.1.16 released, 0.1.17 opened.
5872 5876
5873 5877 * Fixed some nasty bugs in the page/page_dumb combo that could
5874 5878 crash IPython.
5875 5879
5876 5880 2001-11-27 Fernando Perez <fperez@colorado.edu>
5877 5881
5878 5882 * Version 0.1.15 released, 0.1.16 opened.
5879 5883
5880 5884 * Finally got ? and ?? to work for undefined things: now it's
5881 5885 possible to type {}.get? and get information about the get method
5882 5886 of dicts, or os.path? even if only os is defined (so technically
5883 5887 os.path isn't). Works at any level. For example, after import os,
5884 5888 os?, os.path?, os.path.abspath? all work. This is great, took some
5885 5889 work in _ofind.
5886 5890
5887 5891 * Fixed more bugs with logging. The sanest way to do it was to add
5888 5892 to @log a 'mode' parameter. Killed two in one shot (this mode
5889 5893 option was a request of Janko's). I think it's finally clean
5890 5894 (famous last words).
5891 5895
5892 5896 * Added a page_dumb() pager which does a decent job of paging on
5893 5897 screen, if better things (like less) aren't available. One less
5894 5898 unix dependency (someday maybe somebody will port this to
5895 5899 windows).
5896 5900
5897 5901 * Fixed problem in magic_log: would lock of logging out if log
5898 5902 creation failed (because it would still think it had succeeded).
5899 5903
5900 5904 * Improved the page() function using curses to auto-detect screen
5901 5905 size. Now it can make a much better decision on whether to print
5902 5906 or page a string. Option screen_length was modified: a value 0
5903 5907 means auto-detect, and that's the default now.
5904 5908
5905 5909 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5906 5910 go out. I'll test it for a few days, then talk to Janko about
5907 5911 licences and announce it.
5908 5912
5909 5913 * Fixed the length of the auto-generated ---> prompt which appears
5910 5914 for auto-parens and auto-quotes. Getting this right isn't trivial,
5911 5915 with all the color escapes, different prompt types and optional
5912 5916 separators. But it seems to be working in all the combinations.
5913 5917
5914 5918 2001-11-26 Fernando Perez <fperez@colorado.edu>
5915 5919
5916 5920 * Wrote a regexp filter to get option types from the option names
5917 5921 string. This eliminates the need to manually keep two duplicate
5918 5922 lists.
5919 5923
5920 5924 * Removed the unneeded check_option_names. Now options are handled
5921 5925 in a much saner manner and it's easy to visually check that things
5922 5926 are ok.
5923 5927
5924 5928 * Updated version numbers on all files I modified to carry a
5925 5929 notice so Janko and Nathan have clear version markers.
5926 5930
5927 5931 * Updated docstring for ultraTB with my changes. I should send
5928 5932 this to Nathan.
5929 5933
5930 5934 * Lots of small fixes. Ran everything through pychecker again.
5931 5935
5932 5936 * Made loading of deep_reload an cmd line option. If it's not too
5933 5937 kosher, now people can just disable it. With -nodeep_reload it's
5934 5938 still available as dreload(), it just won't overwrite reload().
5935 5939
5936 5940 * Moved many options to the no| form (-opt and -noopt
5937 5941 accepted). Cleaner.
5938 5942
5939 5943 * Changed magic_log so that if called with no parameters, it uses
5940 5944 'rotate' mode. That way auto-generated logs aren't automatically
5941 5945 over-written. For normal logs, now a backup is made if it exists
5942 5946 (only 1 level of backups). A new 'backup' mode was added to the
5943 5947 Logger class to support this. This was a request by Janko.
5944 5948
5945 5949 * Added @logoff/@logon to stop/restart an active log.
5946 5950
5947 5951 * Fixed a lot of bugs in log saving/replay. It was pretty
5948 5952 broken. Now special lines (!@,/) appear properly in the command
5949 5953 history after a log replay.
5950 5954
5951 5955 * Tried and failed to implement full session saving via pickle. My
5952 5956 idea was to pickle __main__.__dict__, but modules can't be
5953 5957 pickled. This would be a better alternative to replaying logs, but
5954 5958 seems quite tricky to get to work. Changed -session to be called
5955 5959 -logplay, which more accurately reflects what it does. And if we
5956 5960 ever get real session saving working, -session is now available.
5957 5961
5958 5962 * Implemented color schemes for prompts also. As for tracebacks,
5959 5963 currently only NoColor and Linux are supported. But now the
5960 5964 infrastructure is in place, based on a generic ColorScheme
5961 5965 class. So writing and activating new schemes both for the prompts
5962 5966 and the tracebacks should be straightforward.
5963 5967
5964 5968 * Version 0.1.13 released, 0.1.14 opened.
5965 5969
5966 5970 * Changed handling of options for output cache. Now counter is
5967 5971 hardwired starting at 1 and one specifies the maximum number of
5968 5972 entries *in the outcache* (not the max prompt counter). This is
5969 5973 much better, since many statements won't increase the cache
5970 5974 count. It also eliminated some confusing options, now there's only
5971 5975 one: cache_size.
5972 5976
5973 5977 * Added 'alias' magic function and magic_alias option in the
5974 5978 ipythonrc file. Now the user can easily define whatever names he
5975 5979 wants for the magic functions without having to play weird
5976 5980 namespace games. This gives IPython a real shell-like feel.
5977 5981
5978 5982 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5979 5983 @ or not).
5980 5984
5981 5985 This was one of the last remaining 'visible' bugs (that I know
5982 5986 of). I think if I can clean up the session loading so it works
5983 5987 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5984 5988 about licensing).
5985 5989
5986 5990 2001-11-25 Fernando Perez <fperez@colorado.edu>
5987 5991
5988 5992 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5989 5993 there's a cleaner distinction between what ? and ?? show.
5990 5994
5991 5995 * Added screen_length option. Now the user can define his own
5992 5996 screen size for page() operations.
5993 5997
5994 5998 * Implemented magic shell-like functions with automatic code
5995 5999 generation. Now adding another function is just a matter of adding
5996 6000 an entry to a dict, and the function is dynamically generated at
5997 6001 run-time. Python has some really cool features!
5998 6002
5999 6003 * Renamed many options to cleanup conventions a little. Now all
6000 6004 are lowercase, and only underscores where needed. Also in the code
6001 6005 option name tables are clearer.
6002 6006
6003 6007 * Changed prompts a little. Now input is 'In [n]:' instead of
6004 6008 'In[n]:='. This allows it the numbers to be aligned with the
6005 6009 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6006 6010 Python (it was a Mathematica thing). The '...' continuation prompt
6007 6011 was also changed a little to align better.
6008 6012
6009 6013 * Fixed bug when flushing output cache. Not all _p<n> variables
6010 6014 exist, so their deletion needs to be wrapped in a try:
6011 6015
6012 6016 * Figured out how to properly use inspect.formatargspec() (it
6013 6017 requires the args preceded by *). So I removed all the code from
6014 6018 _get_pdef in Magic, which was just replicating that.
6015 6019
6016 6020 * Added test to prefilter to allow redefining magic function names
6017 6021 as variables. This is ok, since the @ form is always available,
6018 6022 but whe should allow the user to define a variable called 'ls' if
6019 6023 he needs it.
6020 6024
6021 6025 * Moved the ToDo information from README into a separate ToDo.
6022 6026
6023 6027 * General code cleanup and small bugfixes. I think it's close to a
6024 6028 state where it can be released, obviously with a big 'beta'
6025 6029 warning on it.
6026 6030
6027 6031 * Got the magic function split to work. Now all magics are defined
6028 6032 in a separate class. It just organizes things a bit, and now
6029 6033 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6030 6034 was too long).
6031 6035
6032 6036 * Changed @clear to @reset to avoid potential confusions with
6033 6037 the shell command clear. Also renamed @cl to @clear, which does
6034 6038 exactly what people expect it to from their shell experience.
6035 6039
6036 6040 Added a check to the @reset command (since it's so
6037 6041 destructive, it's probably a good idea to ask for confirmation).
6038 6042 But now reset only works for full namespace resetting. Since the
6039 6043 del keyword is already there for deleting a few specific
6040 6044 variables, I don't see the point of having a redundant magic
6041 6045 function for the same task.
6042 6046
6043 6047 2001-11-24 Fernando Perez <fperez@colorado.edu>
6044 6048
6045 6049 * Updated the builtin docs (esp. the ? ones).
6046 6050
6047 6051 * Ran all the code through pychecker. Not terribly impressed with
6048 6052 it: lots of spurious warnings and didn't really find anything of
6049 6053 substance (just a few modules being imported and not used).
6050 6054
6051 6055 * Implemented the new ultraTB functionality into IPython. New
6052 6056 option: xcolors. This chooses color scheme. xmode now only selects
6053 6057 between Plain and Verbose. Better orthogonality.
6054 6058
6055 6059 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6056 6060 mode and color scheme for the exception handlers. Now it's
6057 6061 possible to have the verbose traceback with no coloring.
6058 6062
6059 6063 2001-11-23 Fernando Perez <fperez@colorado.edu>
6060 6064
6061 6065 * Version 0.1.12 released, 0.1.13 opened.
6062 6066
6063 6067 * Removed option to set auto-quote and auto-paren escapes by
6064 6068 user. The chances of breaking valid syntax are just too high. If
6065 6069 someone *really* wants, they can always dig into the code.
6066 6070
6067 6071 * Made prompt separators configurable.
6068 6072
6069 6073 2001-11-22 Fernando Perez <fperez@colorado.edu>
6070 6074
6071 6075 * Small bugfixes in many places.
6072 6076
6073 6077 * Removed the MyCompleter class from ipplib. It seemed redundant
6074 6078 with the C-p,C-n history search functionality. Less code to
6075 6079 maintain.
6076 6080
6077 6081 * Moved all the original ipython.py code into ipythonlib.py. Right
6078 6082 now it's just one big dump into a function called make_IPython, so
6079 6083 no real modularity has been gained. But at least it makes the
6080 6084 wrapper script tiny, and since ipythonlib is a module, it gets
6081 6085 compiled and startup is much faster.
6082 6086
6083 6087 This is a reasobably 'deep' change, so we should test it for a
6084 6088 while without messing too much more with the code.
6085 6089
6086 6090 2001-11-21 Fernando Perez <fperez@colorado.edu>
6087 6091
6088 6092 * Version 0.1.11 released, 0.1.12 opened for further work.
6089 6093
6090 6094 * Removed dependency on Itpl. It was only needed in one place. It
6091 6095 would be nice if this became part of python, though. It makes life
6092 6096 *a lot* easier in some cases.
6093 6097
6094 6098 * Simplified the prefilter code a bit. Now all handlers are
6095 6099 expected to explicitly return a value (at least a blank string).
6096 6100
6097 6101 * Heavy edits in ipplib. Removed the help system altogether. Now
6098 6102 obj?/?? is used for inspecting objects, a magic @doc prints
6099 6103 docstrings, and full-blown Python help is accessed via the 'help'
6100 6104 keyword. This cleans up a lot of code (less to maintain) and does
6101 6105 the job. Since 'help' is now a standard Python component, might as
6102 6106 well use it and remove duplicate functionality.
6103 6107
6104 6108 Also removed the option to use ipplib as a standalone program. By
6105 6109 now it's too dependent on other parts of IPython to function alone.
6106 6110
6107 6111 * Fixed bug in genutils.pager. It would crash if the pager was
6108 6112 exited immediately after opening (broken pipe).
6109 6113
6110 6114 * Trimmed down the VerboseTB reporting a little. The header is
6111 6115 much shorter now and the repeated exception arguments at the end
6112 6116 have been removed. For interactive use the old header seemed a bit
6113 6117 excessive.
6114 6118
6115 6119 * Fixed small bug in output of @whos for variables with multi-word
6116 6120 types (only first word was displayed).
6117 6121
6118 6122 2001-11-17 Fernando Perez <fperez@colorado.edu>
6119 6123
6120 6124 * Version 0.1.10 released, 0.1.11 opened for further work.
6121 6125
6122 6126 * Modified dirs and friends. dirs now *returns* the stack (not
6123 6127 prints), so one can manipulate it as a variable. Convenient to
6124 6128 travel along many directories.
6125 6129
6126 6130 * Fixed bug in magic_pdef: would only work with functions with
6127 6131 arguments with default values.
6128 6132
6129 6133 2001-11-14 Fernando Perez <fperez@colorado.edu>
6130 6134
6131 6135 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6132 6136 example with IPython. Various other minor fixes and cleanups.
6133 6137
6134 6138 * Version 0.1.9 released, 0.1.10 opened for further work.
6135 6139
6136 6140 * Added sys.path to the list of directories searched in the
6137 6141 execfile= option. It used to be the current directory and the
6138 6142 user's IPYTHONDIR only.
6139 6143
6140 6144 2001-11-13 Fernando Perez <fperez@colorado.edu>
6141 6145
6142 6146 * Reinstated the raw_input/prefilter separation that Janko had
6143 6147 initially. This gives a more convenient setup for extending the
6144 6148 pre-processor from the outside: raw_input always gets a string,
6145 6149 and prefilter has to process it. We can then redefine prefilter
6146 6150 from the outside and implement extensions for special
6147 6151 purposes.
6148 6152
6149 6153 Today I got one for inputting PhysicalQuantity objects
6150 6154 (from Scientific) without needing any function calls at
6151 6155 all. Extremely convenient, and it's all done as a user-level
6152 6156 extension (no IPython code was touched). Now instead of:
6153 6157 a = PhysicalQuantity(4.2,'m/s**2')
6154 6158 one can simply say
6155 6159 a = 4.2 m/s**2
6156 6160 or even
6157 6161 a = 4.2 m/s^2
6158 6162
6159 6163 I use this, but it's also a proof of concept: IPython really is
6160 6164 fully user-extensible, even at the level of the parsing of the
6161 6165 command line. It's not trivial, but it's perfectly doable.
6162 6166
6163 6167 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6164 6168 the problem of modules being loaded in the inverse order in which
6165 6169 they were defined in
6166 6170
6167 6171 * Version 0.1.8 released, 0.1.9 opened for further work.
6168 6172
6169 6173 * Added magics pdef, source and file. They respectively show the
6170 6174 definition line ('prototype' in C), source code and full python
6171 6175 file for any callable object. The object inspector oinfo uses
6172 6176 these to show the same information.
6173 6177
6174 6178 * Version 0.1.7 released, 0.1.8 opened for further work.
6175 6179
6176 6180 * Separated all the magic functions into a class called Magic. The
6177 6181 InteractiveShell class was becoming too big for Xemacs to handle
6178 6182 (de-indenting a line would lock it up for 10 seconds while it
6179 6183 backtracked on the whole class!)
6180 6184
6181 6185 FIXME: didn't work. It can be done, but right now namespaces are
6182 6186 all messed up. Do it later (reverted it for now, so at least
6183 6187 everything works as before).
6184 6188
6185 6189 * Got the object introspection system (magic_oinfo) working! I
6186 6190 think this is pretty much ready for release to Janko, so he can
6187 6191 test it for a while and then announce it. Pretty much 100% of what
6188 6192 I wanted for the 'phase 1' release is ready. Happy, tired.
6189 6193
6190 6194 2001-11-12 Fernando Perez <fperez@colorado.edu>
6191 6195
6192 6196 * Version 0.1.6 released, 0.1.7 opened for further work.
6193 6197
6194 6198 * Fixed bug in printing: it used to test for truth before
6195 6199 printing, so 0 wouldn't print. Now checks for None.
6196 6200
6197 6201 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6198 6202 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6199 6203 reaches by hand into the outputcache. Think of a better way to do
6200 6204 this later.
6201 6205
6202 6206 * Various small fixes thanks to Nathan's comments.
6203 6207
6204 6208 * Changed magic_pprint to magic_Pprint. This way it doesn't
6205 6209 collide with pprint() and the name is consistent with the command
6206 6210 line option.
6207 6211
6208 6212 * Changed prompt counter behavior to be fully like
6209 6213 Mathematica's. That is, even input that doesn't return a result
6210 6214 raises the prompt counter. The old behavior was kind of confusing
6211 6215 (getting the same prompt number several times if the operation
6212 6216 didn't return a result).
6213 6217
6214 6218 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6215 6219
6216 6220 * Fixed -Classic mode (wasn't working anymore).
6217 6221
6218 6222 * Added colored prompts using Nathan's new code. Colors are
6219 6223 currently hardwired, they can be user-configurable. For
6220 6224 developers, they can be chosen in file ipythonlib.py, at the
6221 6225 beginning of the CachedOutput class def.
6222 6226
6223 6227 2001-11-11 Fernando Perez <fperez@colorado.edu>
6224 6228
6225 6229 * Version 0.1.5 released, 0.1.6 opened for further work.
6226 6230
6227 6231 * Changed magic_env to *return* the environment as a dict (not to
6228 6232 print it). This way it prints, but it can also be processed.
6229 6233
6230 6234 * Added Verbose exception reporting to interactive
6231 6235 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6232 6236 traceback. Had to make some changes to the ultraTB file. This is
6233 6237 probably the last 'big' thing in my mental todo list. This ties
6234 6238 in with the next entry:
6235 6239
6236 6240 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6237 6241 has to specify is Plain, Color or Verbose for all exception
6238 6242 handling.
6239 6243
6240 6244 * Removed ShellServices option. All this can really be done via
6241 6245 the magic system. It's easier to extend, cleaner and has automatic
6242 6246 namespace protection and documentation.
6243 6247
6244 6248 2001-11-09 Fernando Perez <fperez@colorado.edu>
6245 6249
6246 6250 * Fixed bug in output cache flushing (missing parameter to
6247 6251 __init__). Other small bugs fixed (found using pychecker).
6248 6252
6249 6253 * Version 0.1.4 opened for bugfixing.
6250 6254
6251 6255 2001-11-07 Fernando Perez <fperez@colorado.edu>
6252 6256
6253 6257 * Version 0.1.3 released, mainly because of the raw_input bug.
6254 6258
6255 6259 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6256 6260 and when testing for whether things were callable, a call could
6257 6261 actually be made to certain functions. They would get called again
6258 6262 once 'really' executed, with a resulting double call. A disaster
6259 6263 in many cases (list.reverse() would never work!).
6260 6264
6261 6265 * Removed prefilter() function, moved its code to raw_input (which
6262 6266 after all was just a near-empty caller for prefilter). This saves
6263 6267 a function call on every prompt, and simplifies the class a tiny bit.
6264 6268
6265 6269 * Fix _ip to __ip name in magic example file.
6266 6270
6267 6271 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6268 6272 work with non-gnu versions of tar.
6269 6273
6270 6274 2001-11-06 Fernando Perez <fperez@colorado.edu>
6271 6275
6272 6276 * Version 0.1.2. Just to keep track of the recent changes.
6273 6277
6274 6278 * Fixed nasty bug in output prompt routine. It used to check 'if
6275 6279 arg != None...'. Problem is, this fails if arg implements a
6276 6280 special comparison (__cmp__) which disallows comparing to
6277 6281 None. Found it when trying to use the PhysicalQuantity module from
6278 6282 ScientificPython.
6279 6283
6280 6284 2001-11-05 Fernando Perez <fperez@colorado.edu>
6281 6285
6282 6286 * Also added dirs. Now the pushd/popd/dirs family functions
6283 6287 basically like the shell, with the added convenience of going home
6284 6288 when called with no args.
6285 6289
6286 6290 * pushd/popd slightly modified to mimic shell behavior more
6287 6291 closely.
6288 6292
6289 6293 * Added env,pushd,popd from ShellServices as magic functions. I
6290 6294 think the cleanest will be to port all desired functions from
6291 6295 ShellServices as magics and remove ShellServices altogether. This
6292 6296 will provide a single, clean way of adding functionality
6293 6297 (shell-type or otherwise) to IP.
6294 6298
6295 6299 2001-11-04 Fernando Perez <fperez@colorado.edu>
6296 6300
6297 6301 * Added .ipython/ directory to sys.path. This way users can keep
6298 6302 customizations there and access them via import.
6299 6303
6300 6304 2001-11-03 Fernando Perez <fperez@colorado.edu>
6301 6305
6302 6306 * Opened version 0.1.1 for new changes.
6303 6307
6304 6308 * Changed version number to 0.1.0: first 'public' release, sent to
6305 6309 Nathan and Janko.
6306 6310
6307 6311 * Lots of small fixes and tweaks.
6308 6312
6309 6313 * Minor changes to whos format. Now strings are shown, snipped if
6310 6314 too long.
6311 6315
6312 6316 * Changed ShellServices to work on __main__ so they show up in @who
6313 6317
6314 6318 * Help also works with ? at the end of a line:
6315 6319 ?sin and sin?
6316 6320 both produce the same effect. This is nice, as often I use the
6317 6321 tab-complete to find the name of a method, but I used to then have
6318 6322 to go to the beginning of the line to put a ? if I wanted more
6319 6323 info. Now I can just add the ? and hit return. Convenient.
6320 6324
6321 6325 2001-11-02 Fernando Perez <fperez@colorado.edu>
6322 6326
6323 6327 * Python version check (>=2.1) added.
6324 6328
6325 6329 * Added LazyPython documentation. At this point the docs are quite
6326 6330 a mess. A cleanup is in order.
6327 6331
6328 6332 * Auto-installer created. For some bizarre reason, the zipfiles
6329 6333 module isn't working on my system. So I made a tar version
6330 6334 (hopefully the command line options in various systems won't kill
6331 6335 me).
6332 6336
6333 6337 * Fixes to Struct in genutils. Now all dictionary-like methods are
6334 6338 protected (reasonably).
6335 6339
6336 6340 * Added pager function to genutils and changed ? to print usage
6337 6341 note through it (it was too long).
6338 6342
6339 6343 * Added the LazyPython functionality. Works great! I changed the
6340 6344 auto-quote escape to ';', it's on home row and next to '. But
6341 6345 both auto-quote and auto-paren (still /) escapes are command-line
6342 6346 parameters.
6343 6347
6344 6348
6345 6349 2001-11-01 Fernando Perez <fperez@colorado.edu>
6346 6350
6347 6351 * Version changed to 0.0.7. Fairly large change: configuration now
6348 6352 is all stored in a directory, by default .ipython. There, all
6349 6353 config files have normal looking names (not .names)
6350 6354
6351 6355 * Version 0.0.6 Released first to Lucas and Archie as a test
6352 6356 run. Since it's the first 'semi-public' release, change version to
6353 6357 > 0.0.6 for any changes now.
6354 6358
6355 6359 * Stuff I had put in the ipplib.py changelog:
6356 6360
6357 6361 Changes to InteractiveShell:
6358 6362
6359 6363 - Made the usage message a parameter.
6360 6364
6361 6365 - Require the name of the shell variable to be given. It's a bit
6362 6366 of a hack, but allows the name 'shell' not to be hardwired in the
6363 6367 magic (@) handler, which is problematic b/c it requires
6364 6368 polluting the global namespace with 'shell'. This in turn is
6365 6369 fragile: if a user redefines a variable called shell, things
6366 6370 break.
6367 6371
6368 6372 - magic @: all functions available through @ need to be defined
6369 6373 as magic_<name>, even though they can be called simply as
6370 6374 @<name>. This allows the special command @magic to gather
6371 6375 information automatically about all existing magic functions,
6372 6376 even if they are run-time user extensions, by parsing the shell
6373 6377 instance __dict__ looking for special magic_ names.
6374 6378
6375 6379 - mainloop: added *two* local namespace parameters. This allows
6376 6380 the class to differentiate between parameters which were there
6377 6381 before and after command line initialization was processed. This
6378 6382 way, later @who can show things loaded at startup by the
6379 6383 user. This trick was necessary to make session saving/reloading
6380 6384 really work: ideally after saving/exiting/reloading a session,
6381 6385 *everything* should look the same, including the output of @who. I
6382 6386 was only able to make this work with this double namespace
6383 6387 trick.
6384 6388
6385 6389 - added a header to the logfile which allows (almost) full
6386 6390 session restoring.
6387 6391
6388 6392 - prepend lines beginning with @ or !, with a and log
6389 6393 them. Why? !lines: may be useful to know what you did @lines:
6390 6394 they may affect session state. So when restoring a session, at
6391 6395 least inform the user of their presence. I couldn't quite get
6392 6396 them to properly re-execute, but at least the user is warned.
6393 6397
6394 6398 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now