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