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