##// END OF EJS Templates
Update path.py to version 2.2.
walter.doerwald -
Show More
@@ -1,971 +1,970 b''
1 """ path.py - An object representing a path to a file or directory.
1 """ path.py - An object representing a path to a file or directory.
2
2
3 Example:
3 Example:
4
4
5 from path import path
5 from path import path
6 d = path('/home/guido/bin')
6 d = path('/home/guido/bin')
7 for f in d.files('*.py'):
7 for f in d.files('*.py'):
8 f.chmod(0755)
8 f.chmod(0755)
9
9
10 This module requires Python 2.2 or later.
10 This module requires Python 2.2 or later.
11
11
12
12
13 URL: http://www.jorendorff.com/articles/python/path
13 URL: http://www.jorendorff.com/articles/python/path
14 Author: Jason Orendorff <jason.orendorff\x40gmail\x2ecom> (and others - see the url!)
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 # TODO
19 # TODO
20 # - Tree-walking functions don't avoid symlink loops. Matt Harrison sent me a patch for this.
20 # - Tree-walking functions don't avoid symlink loops. Matt Harrison
21 # - Tree-walking functions can't ignore errors. Matt Harrison asked for this.
21 # sent me a patch 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 #
26 # - Bug in write_text(). It doesn't support Universal newline mode.
22 # - Bug in write_text(). It doesn't support Universal newline mode.
27 # - Better error message in listdir() when self isn't a
23 # - Better error message in listdir() when self isn't a
28 # directory. (On Windows, the error message really sucks.)
24 # directory. (On Windows, the error message really sucks.)
29 # - Make sure everything has a good docstring.
25 # - Make sure everything has a good docstring.
30 # - Add methods for regex find and replace.
26 # - Add methods for regex find and replace.
31 # - guess_content_type() method?
27 # - guess_content_type() method?
32 # - Perhaps support arguments to touch().
28 # - Perhaps support arguments to touch().
33 # - Could add split() and join() methods that generate warnings.
34
29
35 from __future__ import generators
30 from __future__ import generators
36
31
37 import sys, warnings, os, fnmatch, glob, shutil, codecs, md5
32 import sys, warnings, os, fnmatch, glob, shutil, codecs, md5
38
33
39 __version__ = '2.1'
34 __version__ = '2.2'
40 __all__ = ['path']
35 __all__ = ['path']
41
36
42 # Platform-specific support for path.owner
37 # Platform-specific support for path.owner
43 if os.name == 'nt':
38 if os.name == 'nt':
44 try:
39 try:
45 import win32security
40 import win32security
46 except ImportError:
41 except ImportError:
47 win32security = None
42 win32security = None
48 else:
43 else:
49 try:
44 try:
50 import pwd
45 import pwd
51 except ImportError:
46 except ImportError:
52 pwd = None
47 pwd = None
53
48
54 # Pre-2.3 support. Are unicode filenames supported?
49 # Pre-2.3 support. Are unicode filenames supported?
55 _base = str
50 _base = str
56 _getcwd = os.getcwd
51 _getcwd = os.getcwd
57 try:
52 try:
58 if os.path.supports_unicode_filenames:
53 if os.path.supports_unicode_filenames:
59 _base = unicode
54 _base = unicode
60 _getcwd = os.getcwdu
55 _getcwd = os.getcwdu
61 except AttributeError:
56 except AttributeError:
62 pass
57 pass
63
58
64 # Pre-2.3 workaround for booleans
59 # Pre-2.3 workaround for booleans
65 try:
60 try:
66 True, False
61 True, False
67 except NameError:
62 except NameError:
68 True, False = 1, 0
63 True, False = 1, 0
69
64
70 # Pre-2.3 workaround for basestring.
65 # Pre-2.3 workaround for basestring.
71 try:
66 try:
72 basestring
67 basestring
73 except NameError:
68 except NameError:
74 basestring = (str, unicode)
69 basestring = (str, unicode)
75
70
76 # Universal newline support
71 # Universal newline support
77 _textmode = 'r'
72 _textmode = 'r'
78 if hasattr(file, 'newlines'):
73 if hasattr(file, 'newlines'):
79 _textmode = 'U'
74 _textmode = 'U'
80
75
81
76
82 class TreeWalkWarning(Warning):
77 class TreeWalkWarning(Warning):
83 pass
78 pass
84
79
85 class path(_base):
80 class path(_base):
86 """ Represents a filesystem path.
81 """ Represents a filesystem path.
87
82
88 For documentation on individual methods, consult their
83 For documentation on individual methods, consult their
89 counterparts in os.path.
84 counterparts in os.path.
90 """
85 """
91
86
92 # --- Special Python methods.
87 # --- Special Python methods.
93
88
94 def __repr__(self):
89 def __repr__(self):
95 return 'path(%s)' % _base.__repr__(self)
90 return 'path(%s)' % _base.__repr__(self)
96
91
97 # Adding a path and a string yields a path.
92 # Adding a path and a string yields a path.
98 def __add__(self, more):
93 def __add__(self, more):
99 try:
94 try:
100 resultStr = _base.__add__(self, more)
95 resultStr = _base.__add__(self, more)
101 except TypeError: #Python bug
96 except TypeError: #Python bug
102 resultStr = NotImplemented
97 resultStr = NotImplemented
103 if resultStr is NotImplemented:
98 if resultStr is NotImplemented:
104 return resultStr
99 return resultStr
105 return self.__class__(resultStr)
100 return self.__class__(resultStr)
106
101
107 def __radd__(self, other):
102 def __radd__(self, other):
108 if isinstance(other, basestring):
103 if isinstance(other, basestring):
109 return self.__class__(other.__add__(self))
104 return self.__class__(other.__add__(self))
110 else:
105 else:
111 return NotImplemented
106 return NotImplemented
112
107
113 # The / operator joins paths.
108 # The / operator joins paths.
114 def __div__(self, rel):
109 def __div__(self, rel):
115 """ fp.__div__(rel) == fp / rel == fp.joinpath(rel)
110 """ fp.__div__(rel) == fp / rel == fp.joinpath(rel)
116
111
117 Join two path components, adding a separator character if
112 Join two path components, adding a separator character if
118 needed.
113 needed.
119 """
114 """
120 return self.__class__(os.path.join(self, rel))
115 return self.__class__(os.path.join(self, rel))
121
116
122 # Make the / operator work even when true division is enabled.
117 # Make the / operator work even when true division is enabled.
123 __truediv__ = __div__
118 __truediv__ = __div__
124
119
125 def getcwd(cls):
120 def getcwd(cls):
126 """ Return the current working directory as a path object. """
121 """ Return the current working directory as a path object. """
127 return cls(_getcwd())
122 return cls(_getcwd())
128 getcwd = classmethod(getcwd)
123 getcwd = classmethod(getcwd)
129
124
130
125
131 # --- Operations on path strings.
126 # --- Operations on path strings.
132
127
133 isabs = os.path.isabs
128 isabs = os.path.isabs
134 def abspath(self): return self.__class__(os.path.abspath(self))
129 def abspath(self): return self.__class__(os.path.abspath(self))
135 def normcase(self): return self.__class__(os.path.normcase(self))
130 def normcase(self): return self.__class__(os.path.normcase(self))
136 def normpath(self): return self.__class__(os.path.normpath(self))
131 def normpath(self): return self.__class__(os.path.normpath(self))
137 def realpath(self): return self.__class__(os.path.realpath(self))
132 def realpath(self): return self.__class__(os.path.realpath(self))
138 def expanduser(self): return self.__class__(os.path.expanduser(self))
133 def expanduser(self): return self.__class__(os.path.expanduser(self))
139 def expandvars(self): return self.__class__(os.path.expandvars(self))
134 def expandvars(self): return self.__class__(os.path.expandvars(self))
140 def dirname(self): return self.__class__(os.path.dirname(self))
135 def dirname(self): return self.__class__(os.path.dirname(self))
141 basename = os.path.basename
136 basename = os.path.basename
142
137
143 def expand(self):
138 def expand(self):
144 """ Clean up a filename by calling expandvars(),
139 """ Clean up a filename by calling expandvars(),
145 expanduser(), and normpath() on it.
140 expanduser(), and normpath() on it.
146
141
147 This is commonly everything needed to clean up a filename
142 This is commonly everything needed to clean up a filename
148 read from a configuration file, for example.
143 read from a configuration file, for example.
149 """
144 """
150 return self.expandvars().expanduser().normpath()
145 return self.expandvars().expanduser().normpath()
151
146
152 def _get_namebase(self):
147 def _get_namebase(self):
153 base, ext = os.path.splitext(self.name)
148 base, ext = os.path.splitext(self.name)
154 return base
149 return base
155
150
156 def _get_ext(self):
151 def _get_ext(self):
157 f, ext = os.path.splitext(_base(self))
152 f, ext = os.path.splitext(_base(self))
158 return ext
153 return ext
159
154
160 def _get_drive(self):
155 def _get_drive(self):
161 drive, r = os.path.splitdrive(self)
156 drive, r = os.path.splitdrive(self)
162 return self.__class__(drive)
157 return self.__class__(drive)
163
158
164 parent = property(
159 parent = property(
165 dirname, None, None,
160 dirname, None, None,
166 """ This path's parent directory, as a new path object.
161 """ This path's parent directory, as a new path object.
167
162
168 For example, path('/usr/local/lib/libpython.so').parent == path('/usr/local/lib')
163 For example, path('/usr/local/lib/libpython.so').parent == path('/usr/local/lib')
169 """)
164 """)
170
165
171 name = property(
166 name = property(
172 basename, None, None,
167 basename, None, None,
173 """ The name of this file or directory without the full path.
168 """ The name of this file or directory without the full path.
174
169
175 For example, path('/usr/local/lib/libpython.so').name == 'libpython.so'
170 For example, path('/usr/local/lib/libpython.so').name == 'libpython.so'
176 """)
171 """)
177
172
178 namebase = property(
173 namebase = property(
179 _get_namebase, None, None,
174 _get_namebase, None, None,
180 """ The same as path.name, but with one file extension stripped off.
175 """ The same as path.name, but with one file extension stripped off.
181
176
182 For example, path('/home/guido/python.tar.gz').name == 'python.tar.gz',
177 For example, path('/home/guido/python.tar.gz').name == 'python.tar.gz',
183 but path('/home/guido/python.tar.gz').namebase == 'python.tar'
178 but path('/home/guido/python.tar.gz').namebase == 'python.tar'
184 """)
179 """)
185
180
186 ext = property(
181 ext = property(
187 _get_ext, None, None,
182 _get_ext, None, None,
188 """ The file extension, for example '.py'. """)
183 """ The file extension, for example '.py'. """)
189
184
190 drive = property(
185 drive = property(
191 _get_drive, None, None,
186 _get_drive, None, None,
192 """ The drive specifier, for example 'C:'.
187 """ The drive specifier, for example 'C:'.
193 This is always empty on systems that don't use drive specifiers.
188 This is always empty on systems that don't use drive specifiers.
194 """)
189 """)
195
190
196 def splitpath(self):
191 def splitpath(self):
197 """ p.splitpath() -> Return (p.parent, p.name). """
192 """ p.splitpath() -> Return (p.parent, p.name). """
198 parent, child = os.path.split(self)
193 parent, child = os.path.split(self)
199 return self.__class__(parent), child
194 return self.__class__(parent), child
200
195
201 def splitdrive(self):
196 def splitdrive(self):
202 """ p.splitdrive() -> Return (p.drive, <the rest of p>).
197 """ p.splitdrive() -> Return (p.drive, <the rest of p>).
203
198
204 Split the drive specifier from this path. If there is
199 Split the drive specifier from this path. If there is
205 no drive specifier, p.drive is empty, so the return value
200 no drive specifier, p.drive is empty, so the return value
206 is simply (path(''), p). This is always the case on Unix.
201 is simply (path(''), p). This is always the case on Unix.
207 """
202 """
208 drive, rel = os.path.splitdrive(self)
203 drive, rel = os.path.splitdrive(self)
209 return self.__class__(drive), rel
204 return self.__class__(drive), rel
210
205
211 def splitext(self):
206 def splitext(self):
212 """ p.splitext() -> Return (p.stripext(), p.ext).
207 """ p.splitext() -> Return (p.stripext(), p.ext).
213
208
214 Split the filename extension from this path and return
209 Split the filename extension from this path and return
215 the two parts. Either part may be empty.
210 the two parts. Either part may be empty.
216
211
217 The extension is everything from '.' to the end of the
212 The extension is everything from '.' to the end of the
218 last path segment. This has the property that if
213 last path segment. This has the property that if
219 (a, b) == p.splitext(), then a + b == p.
214 (a, b) == p.splitext(), then a + b == p.
220 """
215 """
221 filename, ext = os.path.splitext(self)
216 filename, ext = os.path.splitext(self)
222 return self.__class__(filename), ext
217 return self.__class__(filename), ext
223
218
224 def stripext(self):
219 def stripext(self):
225 """ p.stripext() -> Remove one file extension from the path.
220 """ p.stripext() -> Remove one file extension from the path.
226
221
227 For example, path('/home/guido/python.tar.gz').stripext()
222 For example, path('/home/guido/python.tar.gz').stripext()
228 returns path('/home/guido/python.tar').
223 returns path('/home/guido/python.tar').
229 """
224 """
230 return self.splitext()[0]
225 return self.splitext()[0]
231
226
232 if hasattr(os.path, 'splitunc'):
227 if hasattr(os.path, 'splitunc'):
233 def splitunc(self):
228 def splitunc(self):
234 unc, rest = os.path.splitunc(self)
229 unc, rest = os.path.splitunc(self)
235 return self.__class__(unc), rest
230 return self.__class__(unc), rest
236
231
237 def _get_uncshare(self):
232 def _get_uncshare(self):
238 unc, r = os.path.splitunc(self)
233 unc, r = os.path.splitunc(self)
239 return self.__class__(unc)
234 return self.__class__(unc)
240
235
241 uncshare = property(
236 uncshare = property(
242 _get_uncshare, None, None,
237 _get_uncshare, None, None,
243 """ The UNC mount point for this path.
238 """ The UNC mount point for this path.
244 This is empty for paths on local drives. """)
239 This is empty for paths on local drives. """)
245
240
246 def joinpath(self, *args):
241 def joinpath(self, *args):
247 """ Join two or more path components, adding a separator
242 """ Join two or more path components, adding a separator
248 character (os.sep) if needed. Returns a new path
243 character (os.sep) if needed. Returns a new path
249 object.
244 object.
250 """
245 """
251 return self.__class__(os.path.join(self, *args))
246 return self.__class__(os.path.join(self, *args))
252
247
253 def splitall(self):
248 def splitall(self):
254 r""" Return a list of the path components in this path.
249 r""" Return a list of the path components in this path.
255
250
256 The first item in the list will be a path. Its value will be
251 The first item in the list will be a path. Its value will be
257 either os.curdir, os.pardir, empty, or the root directory of
252 either os.curdir, os.pardir, empty, or the root directory of
258 this path (for example, '/' or 'C:\\'). The other items in
253 this path (for example, '/' or 'C:\\'). The other items in
259 the list will be strings.
254 the list will be strings.
260
255
261 path.path.joinpath(*result) will yield the original path.
256 path.path.joinpath(*result) will yield the original path.
262 """
257 """
263 parts = []
258 parts = []
264 loc = self
259 loc = self
265 while loc != os.curdir and loc != os.pardir:
260 while loc != os.curdir and loc != os.pardir:
266 prev = loc
261 prev = loc
267 loc, child = prev.splitpath()
262 loc, child = prev.splitpath()
268 if loc == prev:
263 if loc == prev:
269 break
264 break
270 parts.append(child)
265 parts.append(child)
271 parts.append(loc)
266 parts.append(loc)
272 parts.reverse()
267 parts.reverse()
273 return parts
268 return parts
274
269
275 def relpath(self):
270 def relpath(self):
276 """ Return this path as a relative path,
271 """ Return this path as a relative path,
277 based from the current working directory.
272 based from the current working directory.
278 """
273 """
279 cwd = self.__class__(os.getcwd())
274 cwd = self.__class__(os.getcwd())
280 return cwd.relpathto(self)
275 return cwd.relpathto(self)
281
276
282 def relpathto(self, dest):
277 def relpathto(self, dest):
283 """ Return a relative path from self to dest.
278 """ Return a relative path from self to dest.
284
279
285 If there is no relative path from self to dest, for example if
280 If there is no relative path from self to dest, for example if
286 they reside on different drives in Windows, then this returns
281 they reside on different drives in Windows, then this returns
287 dest.abspath().
282 dest.abspath().
288 """
283 """
289 origin = self.abspath()
284 origin = self.abspath()
290 dest = self.__class__(dest).abspath()
285 dest = self.__class__(dest).abspath()
291
286
292 orig_list = origin.normcase().splitall()
287 orig_list = origin.normcase().splitall()
293 # Don't normcase dest! We want to preserve the case.
288 # Don't normcase dest! We want to preserve the case.
294 dest_list = dest.splitall()
289 dest_list = dest.splitall()
295
290
296 if orig_list[0] != os.path.normcase(dest_list[0]):
291 if orig_list[0] != os.path.normcase(dest_list[0]):
297 # Can't get here from there.
292 # Can't get here from there.
298 return dest
293 return dest
299
294
300 # Find the location where the two paths start to differ.
295 # Find the location where the two paths start to differ.
301 i = 0
296 i = 0
302 for start_seg, dest_seg in zip(orig_list, dest_list):
297 for start_seg, dest_seg in zip(orig_list, dest_list):
303 if start_seg != os.path.normcase(dest_seg):
298 if start_seg != os.path.normcase(dest_seg):
304 break
299 break
305 i += 1
300 i += 1
306
301
307 # Now i is the point where the two paths diverge.
302 # Now i is the point where the two paths diverge.
308 # Need a certain number of "os.pardir"s to work up
303 # Need a certain number of "os.pardir"s to work up
309 # from the origin to the point of divergence.
304 # from the origin to the point of divergence.
310 segments = [os.pardir] * (len(orig_list) - i)
305 segments = [os.pardir] * (len(orig_list) - i)
311 # Need to add the diverging part of dest_list.
306 # Need to add the diverging part of dest_list.
312 segments += dest_list[i:]
307 segments += dest_list[i:]
313 if len(segments) == 0:
308 if len(segments) == 0:
314 # If they happen to be identical, use os.curdir.
309 # If they happen to be identical, use os.curdir.
315 relpath = os.curdir
310 relpath = os.curdir
316 else:
311 else:
317 relpath = os.path.join(*segments)
312 relpath = os.path.join(*segments)
318 return self.__class__(relpath)
313 return self.__class__(relpath)
319
314
320 # --- Listing, searching, walking, and matching
315 # --- Listing, searching, walking, and matching
321
316
322 def listdir(self, pattern=None):
317 def listdir(self, pattern=None):
323 """ D.listdir() -> List of items in this directory.
318 """ D.listdir() -> List of items in this directory.
324
319
325 Use D.files() or D.dirs() instead if you want a listing
320 Use D.files() or D.dirs() instead if you want a listing
326 of just files or just subdirectories.
321 of just files or just subdirectories.
327
322
328 The elements of the list are path objects.
323 The elements of the list are path objects.
329
324
330 With the optional 'pattern' argument, this only lists
325 With the optional 'pattern' argument, this only lists
331 items whose names match the given pattern.
326 items whose names match the given pattern.
332 """
327 """
333 names = os.listdir(self)
328 names = os.listdir(self)
334 if pattern is not None:
329 if pattern is not None:
335 names = fnmatch.filter(names, pattern)
330 names = fnmatch.filter(names, pattern)
336 return [self / child for child in names]
331 return [self / child for child in names]
337
332
338 def dirs(self, pattern=None):
333 def dirs(self, pattern=None):
339 """ D.dirs() -> List of this directory's subdirectories.
334 """ D.dirs() -> List of this directory's subdirectories.
340
335
341 The elements of the list are path objects.
336 The elements of the list are path objects.
342 This does not walk recursively into subdirectories
337 This does not walk recursively into subdirectories
343 (but see path.walkdirs).
338 (but see path.walkdirs).
344
339
345 With the optional 'pattern' argument, this only lists
340 With the optional 'pattern' argument, this only lists
346 directories whose names match the given pattern. For
341 directories whose names match the given pattern. For
347 example, d.dirs('build-*').
342 example, d.dirs('build-*').
348 """
343 """
349 return [p for p in self.listdir(pattern) if p.isdir()]
344 return [p for p in self.listdir(pattern) if p.isdir()]
350
345
351 def files(self, pattern=None):
346 def files(self, pattern=None):
352 """ D.files() -> List of the files in this directory.
347 """ D.files() -> List of the files in this directory.
353
348
354 The elements of the list are path objects.
349 The elements of the list are path objects.
355 This does not walk into subdirectories (see path.walkfiles).
350 This does not walk into subdirectories (see path.walkfiles).
356
351
357 With the optional 'pattern' argument, this only lists files
352 With the optional 'pattern' argument, this only lists files
358 whose names match the given pattern. For example,
353 whose names match the given pattern. For example,
359 d.files('*.pyc').
354 d.files('*.pyc').
360 """
355 """
361
356
362 return [p for p in self.listdir(pattern) if p.isfile()]
357 return [p for p in self.listdir(pattern) if p.isfile()]
363
358
364 def walk(self, pattern=None, errors='strict'):
359 def walk(self, pattern=None, errors='strict'):
365 """ D.walk() -> iterator over files and subdirs, recursively.
360 """ D.walk() -> iterator over files and subdirs, recursively.
366
361
367 The iterator yields path objects naming each child item of
362 The iterator yields path objects naming each child item of
368 this directory and its descendants. This requires that
363 this directory and its descendants. This requires that
369 D.isdir().
364 D.isdir().
370
365
371 This performs a depth-first traversal of the directory tree.
366 This performs a depth-first traversal of the directory tree.
372 Each directory is returned just before all its children.
367 Each directory is returned just before all its children.
373
368
374 The errors= keyword argument controls behavior when an
369 The errors= keyword argument controls behavior when an
375 error occurs. The default is 'strict', which causes an
370 error occurs. The default is 'strict', which causes an
376 exception. The other allowed values are 'warn', which
371 exception. The other allowed values are 'warn', which
377 reports the error via warnings.warn(), and 'ignore'.
372 reports the error via warnings.warn(), and 'ignore'.
378 """
373 """
379 if errors not in ('strict', 'warn', 'ignore'):
374 if errors not in ('strict', 'warn', 'ignore'):
380 raise ValueError("invalid errors parameter")
375 raise ValueError("invalid errors parameter")
381
376
382 try:
377 try:
383 childList = self.listdir()
378 childList = self.listdir()
384 except Exception:
379 except Exception:
385 if errors == 'ignore':
380 if errors == 'ignore':
386 return
381 return
387 elif errors == 'warn':
382 elif errors == 'warn':
388 warnings.warn(
383 warnings.warn(
389 "Unable to list directory '%s': %s"
384 "Unable to list directory '%s': %s"
390 % (self, sys.exc_info()[1]),
385 % (self, sys.exc_info()[1]),
391 TreeWalkWarning)
386 TreeWalkWarning)
387 return
392 else:
388 else:
393 raise
389 raise
394
390
395 for child in childList:
391 for child in childList:
396 if pattern is None or child.fnmatch(pattern):
392 if pattern is None or child.fnmatch(pattern):
397 yield child
393 yield child
398 try:
394 try:
399 isdir = child.isdir()
395 isdir = child.isdir()
400 except Exception:
396 except Exception:
401 if errors == 'ignore':
397 if errors == 'ignore':
402 isdir = False
398 isdir = False
403 elif errors == 'warn':
399 elif errors == 'warn':
404 warnings.warn(
400 warnings.warn(
405 "Unable to access '%s': %s"
401 "Unable to access '%s': %s"
406 % (child, sys.exc_info()[1]),
402 % (child, sys.exc_info()[1]),
407 TreeWalkWarning)
403 TreeWalkWarning)
408 isdir = False
404 isdir = False
409 else:
405 else:
410 raise
406 raise
411
407
412 if isdir:
408 if isdir:
413 for item in child.walk(pattern, errors):
409 for item in child.walk(pattern, errors):
414 yield item
410 yield item
415
411
416 def walkdirs(self, pattern=None, errors='strict'):
412 def walkdirs(self, pattern=None, errors='strict'):
417 """ D.walkdirs() -> iterator over subdirs, recursively.
413 """ D.walkdirs() -> iterator over subdirs, recursively.
418
414
419 With the optional 'pattern' argument, this yields only
415 With the optional 'pattern' argument, this yields only
420 directories whose names match the given pattern. For
416 directories whose names match the given pattern. For
421 example, mydir.walkdirs('*test') yields only directories
417 example, mydir.walkdirs('*test') yields only directories
422 with names ending in 'test'.
418 with names ending in 'test'.
423
419
424 The errors= keyword argument controls behavior when an
420 The errors= keyword argument controls behavior when an
425 error occurs. The default is 'strict', which causes an
421 error occurs. The default is 'strict', which causes an
426 exception. The other allowed values are 'warn', which
422 exception. The other allowed values are 'warn', which
427 reports the error via warnings.warn(), and 'ignore'.
423 reports the error via warnings.warn(), and 'ignore'.
428 """
424 """
429 if errors not in ('strict', 'warn', 'ignore'):
425 if errors not in ('strict', 'warn', 'ignore'):
430 raise ValueError("invalid errors parameter")
426 raise ValueError("invalid errors parameter")
431
427
432 try:
428 try:
433 dirs = self.dirs()
429 dirs = self.dirs()
434 except Exception:
430 except Exception:
435 if errors == 'ignore':
431 if errors == 'ignore':
436 return
432 return
437 elif errors == 'warn':
433 elif errors == 'warn':
438 warnings.warn(
434 warnings.warn(
439 "Unable to list directory '%s': %s"
435 "Unable to list directory '%s': %s"
440 % (self, sys.exc_info()[1]),
436 % (self, sys.exc_info()[1]),
441 TreeWalkWarning)
437 TreeWalkWarning)
438 return
442 else:
439 else:
443 raise
440 raise
444
441
445 for child in dirs:
442 for child in dirs:
446 if pattern is None or child.fnmatch(pattern):
443 if pattern is None or child.fnmatch(pattern):
447 yield child
444 yield child
448 for subsubdir in child.walkdirs(pattern, errors):
445 for subsubdir in child.walkdirs(pattern, errors):
449 yield subsubdir
446 yield subsubdir
450
447
451 def walkfiles(self, pattern=None, errors='strict'):
448 def walkfiles(self, pattern=None, errors='strict'):
452 """ D.walkfiles() -> iterator over files in D, recursively.
449 """ D.walkfiles() -> iterator over files in D, recursively.
453
450
454 The optional argument, pattern, limits the results to files
451 The optional argument, pattern, limits the results to files
455 with names that match the pattern. For example,
452 with names that match the pattern. For example,
456 mydir.walkfiles('*.tmp') yields only files with the .tmp
453 mydir.walkfiles('*.tmp') yields only files with the .tmp
457 extension.
454 extension.
458 """
455 """
459 if errors not in ('strict', 'warn', 'ignore'):
456 if errors not in ('strict', 'warn', 'ignore'):
460 raise ValueError("invalid errors parameter")
457 raise ValueError("invalid errors parameter")
461
458
462 try:
459 try:
463 childList = self.listdir()
460 childList = self.listdir()
464 except Exception:
461 except Exception:
465 if errors == 'ignore':
462 if errors == 'ignore':
466 return
463 return
467 elif errors == 'warn':
464 elif errors == 'warn':
468 warnings.warn(
465 warnings.warn(
469 "Unable to list directory '%s': %s"
466 "Unable to list directory '%s': %s"
470 % (self, sys.exc_info()[1]),
467 % (self, sys.exc_info()[1]),
471 TreeWalkWarning)
468 TreeWalkWarning)
469 return
472 else:
470 else:
473 raise
471 raise
474
472
475 for child in childList:
473 for child in childList:
476 try:
474 try:
477 isfile = child.isfile()
475 isfile = child.isfile()
478 isdir = not isfile and child.isdir()
476 isdir = not isfile and child.isdir()
479 except:
477 except:
480 if errors == 'ignore':
478 if errors == 'ignore':
481 return
479 continue
482 elif errors == 'warn':
480 elif errors == 'warn':
483 warnings.warn(
481 warnings.warn(
484 "Unable to access '%s': %s"
482 "Unable to access '%s': %s"
485 % (self, sys.exc_info()[1]),
483 % (self, sys.exc_info()[1]),
486 TreeWalkWarning)
484 TreeWalkWarning)
485 continue
487 else:
486 else:
488 raise
487 raise
489
488
490 if isfile:
489 if isfile:
491 if pattern is None or child.fnmatch(pattern):
490 if pattern is None or child.fnmatch(pattern):
492 yield child
491 yield child
493 elif isdir:
492 elif isdir:
494 for f in child.walkfiles(pattern, errors):
493 for f in child.walkfiles(pattern, errors):
495 yield f
494 yield f
496
495
497 def fnmatch(self, pattern):
496 def fnmatch(self, pattern):
498 """ Return True if self.name matches the given pattern.
497 """ Return True if self.name matches the given pattern.
499
498
500 pattern - A filename pattern with wildcards,
499 pattern - A filename pattern with wildcards,
501 for example '*.py'.
500 for example '*.py'.
502 """
501 """
503 return fnmatch.fnmatch(self.name, pattern)
502 return fnmatch.fnmatch(self.name, pattern)
504
503
505 def glob(self, pattern):
504 def glob(self, pattern):
506 """ Return a list of path objects that match the pattern.
505 """ Return a list of path objects that match the pattern.
507
506
508 pattern - a path relative to this directory, with wildcards.
507 pattern - a path relative to this directory, with wildcards.
509
508
510 For example, path('/users').glob('*/bin/*') returns a list
509 For example, path('/users').glob('*/bin/*') returns a list
511 of all the files users have in their bin directories.
510 of all the files users have in their bin directories.
512 """
511 """
513 cls = self.__class__
512 cls = self.__class__
514 return [cls(s) for s in glob.glob(_base(self / pattern))]
513 return [cls(s) for s in glob.glob(_base(self / pattern))]
515
514
516
515
517 # --- Reading or writing an entire file at once.
516 # --- Reading or writing an entire file at once.
518
517
519 def open(self, mode='r'):
518 def open(self, mode='r'):
520 """ Open this file. Return a file object. """
519 """ Open this file. Return a file object. """
521 return file(self, mode)
520 return file(self, mode)
522
521
523 def bytes(self):
522 def bytes(self):
524 """ Open this file, read all bytes, return them as a string. """
523 """ Open this file, read all bytes, return them as a string. """
525 f = self.open('rb')
524 f = self.open('rb')
526 try:
525 try:
527 return f.read()
526 return f.read()
528 finally:
527 finally:
529 f.close()
528 f.close()
530
529
531 def write_bytes(self, bytes, append=False):
530 def write_bytes(self, bytes, append=False):
532 """ Open this file and write the given bytes to it.
531 """ Open this file and write the given bytes to it.
533
532
534 Default behavior is to overwrite any existing file.
533 Default behavior is to overwrite any existing file.
535 Call p.write_bytes(bytes, append=True) to append instead.
534 Call p.write_bytes(bytes, append=True) to append instead.
536 """
535 """
537 if append:
536 if append:
538 mode = 'ab'
537 mode = 'ab'
539 else:
538 else:
540 mode = 'wb'
539 mode = 'wb'
541 f = self.open(mode)
540 f = self.open(mode)
542 try:
541 try:
543 f.write(bytes)
542 f.write(bytes)
544 finally:
543 finally:
545 f.close()
544 f.close()
546
545
547 def text(self, encoding=None, errors='strict'):
546 def text(self, encoding=None, errors='strict'):
548 r""" Open this file, read it in, return the content as a string.
547 r""" Open this file, read it in, return the content as a string.
549
548
550 This uses 'U' mode in Python 2.3 and later, so '\r\n' and '\r'
549 This uses 'U' mode in Python 2.3 and later, so '\r\n' and '\r'
551 are automatically translated to '\n'.
550 are automatically translated to '\n'.
552
551
553 Optional arguments:
552 Optional arguments:
554
553
555 encoding - The Unicode encoding (or character set) of
554 encoding - The Unicode encoding (or character set) of
556 the file. If present, the content of the file is
555 the file. If present, the content of the file is
557 decoded and returned as a unicode object; otherwise
556 decoded and returned as a unicode object; otherwise
558 it is returned as an 8-bit str.
557 it is returned as an 8-bit str.
559 errors - How to handle Unicode errors; see help(str.decode)
558 errors - How to handle Unicode errors; see help(str.decode)
560 for the options. Default is 'strict'.
559 for the options. Default is 'strict'.
561 """
560 """
562 if encoding is None:
561 if encoding is None:
563 # 8-bit
562 # 8-bit
564 f = self.open(_textmode)
563 f = self.open(_textmode)
565 try:
564 try:
566 return f.read()
565 return f.read()
567 finally:
566 finally:
568 f.close()
567 f.close()
569 else:
568 else:
570 # Unicode
569 # Unicode
571 f = codecs.open(self, 'r', encoding, errors)
570 f = codecs.open(self, 'r', encoding, errors)
572 # (Note - Can't use 'U' mode here, since codecs.open
571 # (Note - Can't use 'U' mode here, since codecs.open
573 # doesn't support 'U' mode, even in Python 2.3.)
572 # doesn't support 'U' mode, even in Python 2.3.)
574 try:
573 try:
575 t = f.read()
574 t = f.read()
576 finally:
575 finally:
577 f.close()
576 f.close()
578 return (t.replace(u'\r\n', u'\n')
577 return (t.replace(u'\r\n', u'\n')
579 .replace(u'\r\x85', u'\n')
578 .replace(u'\r\x85', u'\n')
580 .replace(u'\r', u'\n')
579 .replace(u'\r', u'\n')
581 .replace(u'\x85', u'\n')
580 .replace(u'\x85', u'\n')
582 .replace(u'\u2028', u'\n'))
581 .replace(u'\u2028', u'\n'))
583
582
584 def write_text(self, text, encoding=None, errors='strict', linesep=os.linesep, append=False):
583 def write_text(self, text, encoding=None, errors='strict', linesep=os.linesep, append=False):
585 r""" Write the given text to this file.
584 r""" Write the given text to this file.
586
585
587 The default behavior is to overwrite any existing file;
586 The default behavior is to overwrite any existing file;
588 to append instead, use the 'append=True' keyword argument.
587 to append instead, use the 'append=True' keyword argument.
589
588
590 There are two differences between path.write_text() and
589 There are two differences between path.write_text() and
591 path.write_bytes(): newline handling and Unicode handling.
590 path.write_bytes(): newline handling and Unicode handling.
592 See below.
591 See below.
593
592
594 Parameters:
593 Parameters:
595
594
596 - text - str/unicode - The text to be written.
595 - text - str/unicode - The text to be written.
597
596
598 - encoding - str - The Unicode encoding that will be used.
597 - encoding - str - The Unicode encoding that will be used.
599 This is ignored if 'text' isn't a Unicode string.
598 This is ignored if 'text' isn't a Unicode string.
600
599
601 - errors - str - How to handle Unicode encoding errors.
600 - errors - str - How to handle Unicode encoding errors.
602 Default is 'strict'. See help(unicode.encode) for the
601 Default is 'strict'. See help(unicode.encode) for the
603 options. This is ignored if 'text' isn't a Unicode
602 options. This is ignored if 'text' isn't a Unicode
604 string.
603 string.
605
604
606 - linesep - keyword argument - str/unicode - The sequence of
605 - linesep - keyword argument - str/unicode - The sequence of
607 characters to be used to mark end-of-line. The default is
606 characters to be used to mark end-of-line. The default is
608 os.linesep. You can also specify None; this means to
607 os.linesep. You can also specify None; this means to
609 leave all newlines as they are in 'text'.
608 leave all newlines as they are in 'text'.
610
609
611 - append - keyword argument - bool - Specifies what to do if
610 - append - keyword argument - bool - Specifies what to do if
612 the file already exists (True: append to the end of it;
611 the file already exists (True: append to the end of it;
613 False: overwrite it.) The default is False.
612 False: overwrite it.) The default is False.
614
613
615
614
616 --- Newline handling.
615 --- Newline handling.
617
616
618 write_text() converts all standard end-of-line sequences
617 write_text() converts all standard end-of-line sequences
619 ('\n', '\r', and '\r\n') to your platform's default end-of-line
618 ('\n', '\r', and '\r\n') to your platform's default end-of-line
620 sequence (see os.linesep; on Windows, for example, the
619 sequence (see os.linesep; on Windows, for example, the
621 end-of-line marker is '\r\n').
620 end-of-line marker is '\r\n').
622
621
623 If you don't like your platform's default, you can override it
622 If you don't like your platform's default, you can override it
624 using the 'linesep=' keyword argument. If you specifically want
623 using the 'linesep=' keyword argument. If you specifically want
625 write_text() to preserve the newlines as-is, use 'linesep=None'.
624 write_text() to preserve the newlines as-is, use 'linesep=None'.
626
625
627 This applies to Unicode text the same as to 8-bit text, except
626 This applies to Unicode text the same as to 8-bit text, except
628 there are three additional standard Unicode end-of-line sequences:
627 there are three additional standard Unicode end-of-line sequences:
629 u'\x85', u'\r\x85', and u'\u2028'.
628 u'\x85', u'\r\x85', and u'\u2028'.
630
629
631 (This is slightly different from when you open a file for
630 (This is slightly different from when you open a file for
632 writing with fopen(filename, "w") in C or file(filename, 'w')
631 writing with fopen(filename, "w") in C or file(filename, 'w')
633 in Python.)
632 in Python.)
634
633
635
634
636 --- Unicode
635 --- Unicode
637
636
638 If 'text' isn't Unicode, then apart from newline handling, the
637 If 'text' isn't Unicode, then apart from newline handling, the
639 bytes are written verbatim to the file. The 'encoding' and
638 bytes are written verbatim to the file. The 'encoding' and
640 'errors' arguments are not used and must be omitted.
639 'errors' arguments are not used and must be omitted.
641
640
642 If 'text' is Unicode, it is first converted to bytes using the
641 If 'text' is Unicode, it is first converted to bytes using the
643 specified 'encoding' (or the default encoding if 'encoding'
642 specified 'encoding' (or the default encoding if 'encoding'
644 isn't specified). The 'errors' argument applies only to this
643 isn't specified). The 'errors' argument applies only to this
645 conversion.
644 conversion.
646
645
647 """
646 """
648 if isinstance(text, unicode):
647 if isinstance(text, unicode):
649 if linesep is not None:
648 if linesep is not None:
650 # Convert all standard end-of-line sequences to
649 # Convert all standard end-of-line sequences to
651 # ordinary newline characters.
650 # ordinary newline characters.
652 text = (text.replace(u'\r\n', u'\n')
651 text = (text.replace(u'\r\n', u'\n')
653 .replace(u'\r\x85', u'\n')
652 .replace(u'\r\x85', u'\n')
654 .replace(u'\r', u'\n')
653 .replace(u'\r', u'\n')
655 .replace(u'\x85', u'\n')
654 .replace(u'\x85', u'\n')
656 .replace(u'\u2028', u'\n'))
655 .replace(u'\u2028', u'\n'))
657 text = text.replace(u'\n', linesep)
656 text = text.replace(u'\n', linesep)
658 if encoding is None:
657 if encoding is None:
659 encoding = sys.getdefaultencoding()
658 encoding = sys.getdefaultencoding()
660 bytes = text.encode(encoding, errors)
659 bytes = text.encode(encoding, errors)
661 else:
660 else:
662 # It is an error to specify an encoding if 'text' is
661 # It is an error to specify an encoding if 'text' is
663 # an 8-bit string.
662 # an 8-bit string.
664 assert encoding is None
663 assert encoding is None
665
664
666 if linesep is not None:
665 if linesep is not None:
667 text = (text.replace('\r\n', '\n')
666 text = (text.replace('\r\n', '\n')
668 .replace('\r', '\n'))
667 .replace('\r', '\n'))
669 bytes = text.replace('\n', linesep)
668 bytes = text.replace('\n', linesep)
670
669
671 self.write_bytes(bytes, append)
670 self.write_bytes(bytes, append)
672
671
673 def lines(self, encoding=None, errors='strict', retain=True):
672 def lines(self, encoding=None, errors='strict', retain=True):
674 r""" Open this file, read all lines, return them in a list.
673 r""" Open this file, read all lines, return them in a list.
675
674
676 Optional arguments:
675 Optional arguments:
677 encoding - The Unicode encoding (or character set) of
676 encoding - The Unicode encoding (or character set) of
678 the file. The default is None, meaning the content
677 the file. The default is None, meaning the content
679 of the file is read as 8-bit characters and returned
678 of the file is read as 8-bit characters and returned
680 as a list of (non-Unicode) str objects.
679 as a list of (non-Unicode) str objects.
681 errors - How to handle Unicode errors; see help(str.decode)
680 errors - How to handle Unicode errors; see help(str.decode)
682 for the options. Default is 'strict'
681 for the options. Default is 'strict'
683 retain - If true, retain newline characters; but all newline
682 retain - If true, retain newline characters; but all newline
684 character combinations ('\r', '\n', '\r\n') are
683 character combinations ('\r', '\n', '\r\n') are
685 translated to '\n'. If false, newline characters are
684 translated to '\n'. If false, newline characters are
686 stripped off. Default is True.
685 stripped off. Default is True.
687
686
688 This uses 'U' mode in Python 2.3 and later.
687 This uses 'U' mode in Python 2.3 and later.
689 """
688 """
690 if encoding is None and retain:
689 if encoding is None and retain:
691 f = self.open(_textmode)
690 f = self.open(_textmode)
692 try:
691 try:
693 return f.readlines()
692 return f.readlines()
694 finally:
693 finally:
695 f.close()
694 f.close()
696 else:
695 else:
697 return self.text(encoding, errors).splitlines(retain)
696 return self.text(encoding, errors).splitlines(retain)
698
697
699 def write_lines(self, lines, encoding=None, errors='strict',
698 def write_lines(self, lines, encoding=None, errors='strict',
700 linesep=os.linesep, append=False):
699 linesep=os.linesep, append=False):
701 r""" Write the given lines of text to this file.
700 r""" Write the given lines of text to this file.
702
701
703 By default this overwrites any existing file at this path.
702 By default this overwrites any existing file at this path.
704
703
705 This puts a platform-specific newline sequence on every line.
704 This puts a platform-specific newline sequence on every line.
706 See 'linesep' below.
705 See 'linesep' below.
707
706
708 lines - A list of strings.
707 lines - A list of strings.
709
708
710 encoding - A Unicode encoding to use. This applies only if
709 encoding - A Unicode encoding to use. This applies only if
711 'lines' contains any Unicode strings.
710 'lines' contains any Unicode strings.
712
711
713 errors - How to handle errors in Unicode encoding. This
712 errors - How to handle errors in Unicode encoding. This
714 also applies only to Unicode strings.
713 also applies only to Unicode strings.
715
714
716 linesep - The desired line-ending. This line-ending is
715 linesep - The desired line-ending. This line-ending is
717 applied to every line. If a line already has any
716 applied to every line. If a line already has any
718 standard line ending ('\r', '\n', '\r\n', u'\x85',
717 standard line ending ('\r', '\n', '\r\n', u'\x85',
719 u'\r\x85', u'\u2028'), that will be stripped off and
718 u'\r\x85', u'\u2028'), that will be stripped off and
720 this will be used instead. The default is os.linesep,
719 this will be used instead. The default is os.linesep,
721 which is platform-dependent ('\r\n' on Windows, '\n' on
720 which is platform-dependent ('\r\n' on Windows, '\n' on
722 Unix, etc.) Specify None to write the lines as-is,
721 Unix, etc.) Specify None to write the lines as-is,
723 like file.writelines().
722 like file.writelines().
724
723
725 Use the keyword argument append=True to append lines to the
724 Use the keyword argument append=True to append lines to the
726 file. The default is to overwrite the file. Warning:
725 file. The default is to overwrite the file. Warning:
727 When you use this with Unicode data, if the encoding of the
726 When you use this with Unicode data, if the encoding of the
728 existing data in the file is different from the encoding
727 existing data in the file is different from the encoding
729 you specify with the encoding= parameter, the result is
728 you specify with the encoding= parameter, the result is
730 mixed-encoding data, which can really confuse someone trying
729 mixed-encoding data, which can really confuse someone trying
731 to read the file later.
730 to read the file later.
732 """
731 """
733 if append:
732 if append:
734 mode = 'ab'
733 mode = 'ab'
735 else:
734 else:
736 mode = 'wb'
735 mode = 'wb'
737 f = self.open(mode)
736 f = self.open(mode)
738 try:
737 try:
739 for line in lines:
738 for line in lines:
740 isUnicode = isinstance(line, unicode)
739 isUnicode = isinstance(line, unicode)
741 if linesep is not None:
740 if linesep is not None:
742 # Strip off any existing line-end and add the
741 # Strip off any existing line-end and add the
743 # specified linesep string.
742 # specified linesep string.
744 if isUnicode:
743 if isUnicode:
745 if line[-2:] in (u'\r\n', u'\x0d\x85'):
744 if line[-2:] in (u'\r\n', u'\x0d\x85'):
746 line = line[:-2]
745 line = line[:-2]
747 elif line[-1:] in (u'\r', u'\n',
746 elif line[-1:] in (u'\r', u'\n',
748 u'\x85', u'\u2028'):
747 u'\x85', u'\u2028'):
749 line = line[:-1]
748 line = line[:-1]
750 else:
749 else:
751 if line[-2:] == '\r\n':
750 if line[-2:] == '\r\n':
752 line = line[:-2]
751 line = line[:-2]
753 elif line[-1:] in ('\r', '\n'):
752 elif line[-1:] in ('\r', '\n'):
754 line = line[:-1]
753 line = line[:-1]
755 line += linesep
754 line += linesep
756 if isUnicode:
755 if isUnicode:
757 if encoding is None:
756 if encoding is None:
758 encoding = sys.getdefaultencoding()
757 encoding = sys.getdefaultencoding()
759 line = line.encode(encoding, errors)
758 line = line.encode(encoding, errors)
760 f.write(line)
759 f.write(line)
761 finally:
760 finally:
762 f.close()
761 f.close()
763
762
764 def read_md5(self):
763 def read_md5(self):
765 """ Calculate the md5 hash for this file.
764 """ Calculate the md5 hash for this file.
766
765
767 This reads through the entire file.
766 This reads through the entire file.
768 """
767 """
769 f = self.open('rb')
768 f = self.open('rb')
770 try:
769 try:
771 m = md5.new()
770 m = md5.new()
772 while True:
771 while True:
773 d = f.read(8192)
772 d = f.read(8192)
774 if not d:
773 if not d:
775 break
774 break
776 m.update(d)
775 m.update(d)
777 finally:
776 finally:
778 f.close()
777 f.close()
779 return m.digest()
778 return m.digest()
780
779
781 # --- Methods for querying the filesystem.
780 # --- Methods for querying the filesystem.
782
781
783 exists = os.path.exists
782 exists = os.path.exists
784 isdir = os.path.isdir
783 isdir = os.path.isdir
785 isfile = os.path.isfile
784 isfile = os.path.isfile
786 islink = os.path.islink
785 islink = os.path.islink
787 ismount = os.path.ismount
786 ismount = os.path.ismount
788
787
789 if hasattr(os.path, 'samefile'):
788 if hasattr(os.path, 'samefile'):
790 samefile = os.path.samefile
789 samefile = os.path.samefile
791
790
792 getatime = os.path.getatime
791 getatime = os.path.getatime
793 atime = property(
792 atime = property(
794 getatime, None, None,
793 getatime, None, None,
795 """ Last access time of the file. """)
794 """ Last access time of the file. """)
796
795
797 getmtime = os.path.getmtime
796 getmtime = os.path.getmtime
798 mtime = property(
797 mtime = property(
799 getmtime, None, None,
798 getmtime, None, None,
800 """ Last-modified time of the file. """)
799 """ Last-modified time of the file. """)
801
800
802 if hasattr(os.path, 'getctime'):
801 if hasattr(os.path, 'getctime'):
803 getctime = os.path.getctime
802 getctime = os.path.getctime
804 ctime = property(
803 ctime = property(
805 getctime, None, None,
804 getctime, None, None,
806 """ Creation time of the file. """)
805 """ Creation time of the file. """)
807
806
808 getsize = os.path.getsize
807 getsize = os.path.getsize
809 size = property(
808 size = property(
810 getsize, None, None,
809 getsize, None, None,
811 """ Size of the file, in bytes. """)
810 """ Size of the file, in bytes. """)
812
811
813 if hasattr(os, 'access'):
812 if hasattr(os, 'access'):
814 def access(self, mode):
813 def access(self, mode):
815 """ Return true if current user has access to this path.
814 """ Return true if current user has access to this path.
816
815
817 mode - One of the constants os.F_OK, os.R_OK, os.W_OK, os.X_OK
816 mode - One of the constants os.F_OK, os.R_OK, os.W_OK, os.X_OK
818 """
817 """
819 return os.access(self, mode)
818 return os.access(self, mode)
820
819
821 def stat(self):
820 def stat(self):
822 """ Perform a stat() system call on this path. """
821 """ Perform a stat() system call on this path. """
823 return os.stat(self)
822 return os.stat(self)
824
823
825 def lstat(self):
824 def lstat(self):
826 """ Like path.stat(), but do not follow symbolic links. """
825 """ Like path.stat(), but do not follow symbolic links. """
827 return os.lstat(self)
826 return os.lstat(self)
828
827
829 def get_owner(self):
828 def get_owner(self):
830 r""" Return the name of the owner of this file or directory.
829 r""" Return the name of the owner of this file or directory.
831
830
832 This follows symbolic links.
831 This follows symbolic links.
833
832
834 On Windows, this returns a name of the form ur'DOMAIN\User Name'.
833 On Windows, this returns a name of the form ur'DOMAIN\User Name'.
835 On Windows, a group can own a file or directory.
834 On Windows, a group can own a file or directory.
836 """
835 """
837 if os.name == 'nt':
836 if os.name == 'nt':
838 if win32security is None:
837 if win32security is None:
839 raise Exception("path.owner requires win32all to be installed")
838 raise Exception("path.owner requires win32all to be installed")
840 desc = win32security.GetFileSecurity(
839 desc = win32security.GetFileSecurity(
841 self, win32security.OWNER_SECURITY_INFORMATION)
840 self, win32security.OWNER_SECURITY_INFORMATION)
842 sid = desc.GetSecurityDescriptorOwner()
841 sid = desc.GetSecurityDescriptorOwner()
843 account, domain, typecode = win32security.LookupAccountSid(None, sid)
842 account, domain, typecode = win32security.LookupAccountSid(None, sid)
844 return domain + u'\\' + account
843 return domain + u'\\' + account
845 else:
844 else:
846 if pwd is None:
845 if pwd is None:
847 raise NotImplementedError("path.owner is not implemented on this platform.")
846 raise NotImplementedError("path.owner is not implemented on this platform.")
848 st = self.stat()
847 st = self.stat()
849 return pwd.getpwuid(st.st_uid).pw_name
848 return pwd.getpwuid(st.st_uid).pw_name
850
849
851 owner = property(
850 owner = property(
852 get_owner, None, None,
851 get_owner, None, None,
853 """ Name of the owner of this file or directory. """)
852 """ Name of the owner of this file or directory. """)
854
853
855 if hasattr(os, 'statvfs'):
854 if hasattr(os, 'statvfs'):
856 def statvfs(self):
855 def statvfs(self):
857 """ Perform a statvfs() system call on this path. """
856 """ Perform a statvfs() system call on this path. """
858 return os.statvfs(self)
857 return os.statvfs(self)
859
858
860 if hasattr(os, 'pathconf'):
859 if hasattr(os, 'pathconf'):
861 def pathconf(self, name):
860 def pathconf(self, name):
862 return os.pathconf(self, name)
861 return os.pathconf(self, name)
863
862
864
863
865 # --- Modifying operations on files and directories
864 # --- Modifying operations on files and directories
866
865
867 def utime(self, times):
866 def utime(self, times):
868 """ Set the access and modified times of this file. """
867 """ Set the access and modified times of this file. """
869 os.utime(self, times)
868 os.utime(self, times)
870
869
871 def chmod(self, mode):
870 def chmod(self, mode):
872 os.chmod(self, mode)
871 os.chmod(self, mode)
873
872
874 if hasattr(os, 'chown'):
873 if hasattr(os, 'chown'):
875 def chown(self, uid, gid):
874 def chown(self, uid, gid):
876 os.chown(self, uid, gid)
875 os.chown(self, uid, gid)
877
876
878 def rename(self, new):
877 def rename(self, new):
879 os.rename(self, new)
878 os.rename(self, new)
880
879
881 def renames(self, new):
880 def renames(self, new):
882 os.renames(self, new)
881 os.renames(self, new)
883
882
884
883
885 # --- Create/delete operations on directories
884 # --- Create/delete operations on directories
886
885
887 def mkdir(self, mode=0777):
886 def mkdir(self, mode=0777):
888 os.mkdir(self, mode)
887 os.mkdir(self, mode)
889
888
890 def makedirs(self, mode=0777):
889 def makedirs(self, mode=0777):
891 os.makedirs(self, mode)
890 os.makedirs(self, mode)
892
891
893 def rmdir(self):
892 def rmdir(self):
894 os.rmdir(self)
893 os.rmdir(self)
895
894
896 def removedirs(self):
895 def removedirs(self):
897 os.removedirs(self)
896 os.removedirs(self)
898
897
899
898
900 # --- Modifying operations on files
899 # --- Modifying operations on files
901
900
902 def touch(self):
901 def touch(self):
903 """ Set the access/modified times of this file to the current time.
902 """ Set the access/modified times of this file to the current time.
904 Create the file if it does not exist.
903 Create the file if it does not exist.
905 """
904 """
906 fd = os.open(self, os.O_WRONLY | os.O_CREAT, 0666)
905 fd = os.open(self, os.O_WRONLY | os.O_CREAT, 0666)
907 os.close(fd)
906 os.close(fd)
908 os.utime(self, None)
907 os.utime(self, None)
909
908
910 def remove(self):
909 def remove(self):
911 os.remove(self)
910 os.remove(self)
912
911
913 def unlink(self):
912 def unlink(self):
914 os.unlink(self)
913 os.unlink(self)
915
914
916
915
917 # --- Links
916 # --- Links
918
917
919 if hasattr(os, 'link'):
918 if hasattr(os, 'link'):
920 def link(self, newpath):
919 def link(self, newpath):
921 """ Create a hard link at 'newpath', pointing to this file. """
920 """ Create a hard link at 'newpath', pointing to this file. """
922 os.link(self, newpath)
921 os.link(self, newpath)
923
922
924 if hasattr(os, 'symlink'):
923 if hasattr(os, 'symlink'):
925 def symlink(self, newlink):
924 def symlink(self, newlink):
926 """ Create a symbolic link at 'newlink', pointing here. """
925 """ Create a symbolic link at 'newlink', pointing here. """
927 os.symlink(self, newlink)
926 os.symlink(self, newlink)
928
927
929 if hasattr(os, 'readlink'):
928 if hasattr(os, 'readlink'):
930 def readlink(self):
929 def readlink(self):
931 """ Return the path to which this symbolic link points.
930 """ Return the path to which this symbolic link points.
932
931
933 The result may be an absolute or a relative path.
932 The result may be an absolute or a relative path.
934 """
933 """
935 return self.__class__(os.readlink(self))
934 return self.__class__(os.readlink(self))
936
935
937 def readlinkabs(self):
936 def readlinkabs(self):
938 """ Return the path to which this symbolic link points.
937 """ Return the path to which this symbolic link points.
939
938
940 The result is always an absolute path.
939 The result is always an absolute path.
941 """
940 """
942 p = self.readlink()
941 p = self.readlink()
943 if p.isabs():
942 if p.isabs():
944 return p
943 return p
945 else:
944 else:
946 return (self.parent / p).abspath()
945 return (self.parent / p).abspath()
947
946
948
947
949 # --- High-level functions from shutil
948 # --- High-level functions from shutil
950
949
951 copyfile = shutil.copyfile
950 copyfile = shutil.copyfile
952 copymode = shutil.copymode
951 copymode = shutil.copymode
953 copystat = shutil.copystat
952 copystat = shutil.copystat
954 copy = shutil.copy
953 copy = shutil.copy
955 copy2 = shutil.copy2
954 copy2 = shutil.copy2
956 copytree = shutil.copytree
955 copytree = shutil.copytree
957 if hasattr(shutil, 'move'):
956 if hasattr(shutil, 'move'):
958 move = shutil.move
957 move = shutil.move
959 rmtree = shutil.rmtree
958 rmtree = shutil.rmtree
960
959
961
960
962 # --- Special stuff from os
961 # --- Special stuff from os
963
962
964 if hasattr(os, 'chroot'):
963 if hasattr(os, 'chroot'):
965 def chroot(self):
964 def chroot(self):
966 os.chroot(self)
965 os.chroot(self)
967
966
968 if hasattr(os, 'startfile'):
967 if hasattr(os, 'startfile'):
969 def startfile(self):
968 def startfile(self):
970 os.startfile(self)
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 2007-03-23 Ville Vainio <vivainio@gmail.com>
5 2007-03-23 Ville Vainio <vivainio@gmail.com>
2
6
3 * iplib.py: recursive alias expansion now works better, so that
7 * iplib.py: recursive alias expansion now works better, so that
4 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
8 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
5 doesn't trip up the process, if 'd' has been aliased to 'ls'.
9 doesn't trip up the process, if 'd' has been aliased to 'ls'.
6
10
7 * Extensions/ipy_gnuglobal.py added, provides %global magic
11 * Extensions/ipy_gnuglobal.py added, provides %global magic
8 for users of http://www.gnu.org/software/global
12 for users of http://www.gnu.org/software/global
9
13
10 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
14 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
11 Closes #52. Patch by Stefan van der Walt.
15 Closes #52. Patch by Stefan van der Walt.
12
16
13 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
17 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
14
18
15 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
19 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
16 respect the __file__ attribute when using %run. Thanks to a bug
20 respect the __file__ attribute when using %run. Thanks to a bug
17 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
21 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
18
22
19 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
23 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
20
24
21 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
25 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
22 input. Patch sent by Stefan.
26 input. Patch sent by Stefan.
23
27
24 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
28 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
25 * IPython/Extensions/ipy_stock_completer.py
29 * IPython/Extensions/ipy_stock_completer.py
26 shlex_split, fix bug in shlex_split. len function
30 shlex_split, fix bug in shlex_split. len function
27 call was missing in if statement. Caused shlex_split to
31 call was missing in if statement. Caused shlex_split to
28 sometimes return "" as last element.
32 sometimes return "" as last element.
29
33
30 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
34 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
31
35
32 * IPython/completer.py
36 * IPython/completer.py
33 (IPCompleter.file_matches.single_dir_expand): fix a problem
37 (IPCompleter.file_matches.single_dir_expand): fix a problem
34 reported by Stefan, where directories containign a single subdir
38 reported by Stefan, where directories containign a single subdir
35 would be completed too early.
39 would be completed too early.
36
40
37 * IPython/Shell.py (_load_pylab): Make the execution of 'from
41 * IPython/Shell.py (_load_pylab): Make the execution of 'from
38 pylab import *' when -pylab is given be optional. A new flag,
42 pylab import *' when -pylab is given be optional. A new flag,
39 pylab_import_all controls this behavior, the default is True for
43 pylab_import_all controls this behavior, the default is True for
40 backwards compatibility.
44 backwards compatibility.
41
45
42 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
46 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
43 modified) R. Bernstein's patch for fully syntax highlighted
47 modified) R. Bernstein's patch for fully syntax highlighted
44 tracebacks. The functionality is also available under ultraTB for
48 tracebacks. The functionality is also available under ultraTB for
45 non-ipython users (someone using ultraTB but outside an ipython
49 non-ipython users (someone using ultraTB but outside an ipython
46 session). They can select the color scheme by setting the
50 session). They can select the color scheme by setting the
47 module-level global DEFAULT_SCHEME. The highlight functionality
51 module-level global DEFAULT_SCHEME. The highlight functionality
48 also works when debugging.
52 also works when debugging.
49
53
50 * IPython/genutils.py (IOStream.close): small patch by
54 * IPython/genutils.py (IOStream.close): small patch by
51 R. Bernstein for improved pydb support.
55 R. Bernstein for improved pydb support.
52
56
53 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
57 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
54 DaveS <davls@telus.net> to improve support of debugging under
58 DaveS <davls@telus.net> to improve support of debugging under
55 NTEmacs, including improved pydb behavior.
59 NTEmacs, including improved pydb behavior.
56
60
57 * IPython/Magic.py (magic_prun): Fix saving of profile info for
61 * IPython/Magic.py (magic_prun): Fix saving of profile info for
58 Python 2.5, where the stats object API changed a little. Thanks
62 Python 2.5, where the stats object API changed a little. Thanks
59 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
63 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
60
64
61 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
65 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
62 Pernetty's patch to improve support for (X)Emacs under Win32.
66 Pernetty's patch to improve support for (X)Emacs under Win32.
63
67
64 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
68 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
65
69
66 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
70 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
67 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
71 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
68 a report by Nik Tautenhahn.
72 a report by Nik Tautenhahn.
69
73
70 2007-03-16 Walter Doerwald <walter@livinglogic.de>
74 2007-03-16 Walter Doerwald <walter@livinglogic.de>
71
75
72 * setup.py: Add the igrid help files to the list of data files
76 * setup.py: Add the igrid help files to the list of data files
73 to be installed alongside igrid.
77 to be installed alongside igrid.
74 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
78 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
75 Show the input object of the igrid browser as the window tile.
79 Show the input object of the igrid browser as the window tile.
76 Show the object the cursor is on in the statusbar.
80 Show the object the cursor is on in the statusbar.
77
81
78 2007-03-15 Ville Vainio <vivainio@gmail.com>
82 2007-03-15 Ville Vainio <vivainio@gmail.com>
79
83
80 * Extensions/ipy_stock_completers.py: Fixed exception
84 * Extensions/ipy_stock_completers.py: Fixed exception
81 on mismatching quotes in %run completer. Patch by
85 on mismatching quotes in %run completer. Patch by
82 JοΏ½rgen Stenarson. Closes #127.
86 JοΏ½rgen Stenarson. Closes #127.
83
87
84 2007-03-14 Ville Vainio <vivainio@gmail.com>
88 2007-03-14 Ville Vainio <vivainio@gmail.com>
85
89
86 * Extensions/ext_rehashdir.py: Do not do auto_alias
90 * Extensions/ext_rehashdir.py: Do not do auto_alias
87 in %rehashdir, it clobbers %store'd aliases.
91 in %rehashdir, it clobbers %store'd aliases.
88
92
89 * UserConfig/ipy_profile_sh.py: envpersist.py extension
93 * UserConfig/ipy_profile_sh.py: envpersist.py extension
90 (beefed up %env) imported for sh profile.
94 (beefed up %env) imported for sh profile.
91
95
92 2007-03-10 Walter Doerwald <walter@livinglogic.de>
96 2007-03-10 Walter Doerwald <walter@livinglogic.de>
93
97
94 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
98 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
95 as the default browser.
99 as the default browser.
96 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
100 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
97 As igrid displays all attributes it ever encounters, fetch() (which has
101 As igrid displays all attributes it ever encounters, fetch() (which has
98 been renamed to _fetch()) doesn't have to recalculate the display attributes
102 been renamed to _fetch()) doesn't have to recalculate the display attributes
99 every time a new item is fetched. This should speed up scrolling.
103 every time a new item is fetched. This should speed up scrolling.
100
104
101 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
105 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
102
106
103 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
107 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
104 Schmolck's recently reported tab-completion bug (my previous one
108 Schmolck's recently reported tab-completion bug (my previous one
105 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
109 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
106
110
107 2007-03-09 Walter Doerwald <walter@livinglogic.de>
111 2007-03-09 Walter Doerwald <walter@livinglogic.de>
108
112
109 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
113 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
110 Close help window if exiting igrid.
114 Close help window if exiting igrid.
111
115
112 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
116 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
113
117
114 * IPython/Extensions/ipy_defaults.py: Check if readline is available
118 * IPython/Extensions/ipy_defaults.py: Check if readline is available
115 before calling functions from readline.
119 before calling functions from readline.
116
120
117 2007-03-02 Walter Doerwald <walter@livinglogic.de>
121 2007-03-02 Walter Doerwald <walter@livinglogic.de>
118
122
119 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
123 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
120 igrid is a wxPython-based display object for ipipe. If your system has
124 igrid is a wxPython-based display object for ipipe. If your system has
121 wx installed igrid will be the default display. Without wx ipipe falls
125 wx installed igrid will be the default display. Without wx ipipe falls
122 back to ibrowse (which needs curses). If no curses is installed ipipe
126 back to ibrowse (which needs curses). If no curses is installed ipipe
123 falls back to idump.
127 falls back to idump.
124
128
125 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
129 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
126
130
127 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
131 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
128 my changes from yesterday, they introduced bugs. Will reactivate
132 my changes from yesterday, they introduced bugs. Will reactivate
129 once I get a correct solution, which will be much easier thanks to
133 once I get a correct solution, which will be much easier thanks to
130 Dan Milstein's new prefilter test suite.
134 Dan Milstein's new prefilter test suite.
131
135
132 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
136 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
133
137
134 * IPython/iplib.py (split_user_input): fix input splitting so we
138 * IPython/iplib.py (split_user_input): fix input splitting so we
135 don't attempt attribute accesses on things that can't possibly be
139 don't attempt attribute accesses on things that can't possibly be
136 valid Python attributes. After a bug report by Alex Schmolck.
140 valid Python attributes. After a bug report by Alex Schmolck.
137 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
141 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
138 %magic with explicit % prefix.
142 %magic with explicit % prefix.
139
143
140 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
144 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
141
145
142 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
146 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
143 avoid a DeprecationWarning from GTK.
147 avoid a DeprecationWarning from GTK.
144
148
145 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
149 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
146
150
147 * IPython/genutils.py (clock): I modified clock() to return total
151 * IPython/genutils.py (clock): I modified clock() to return total
148 time, user+system. This is a more commonly needed metric. I also
152 time, user+system. This is a more commonly needed metric. I also
149 introduced the new clocku/clocks to get only user/system time if
153 introduced the new clocku/clocks to get only user/system time if
150 one wants those instead.
154 one wants those instead.
151
155
152 ***WARNING: API CHANGE*** clock() used to return only user time,
156 ***WARNING: API CHANGE*** clock() used to return only user time,
153 so if you want exactly the same results as before, use clocku
157 so if you want exactly the same results as before, use clocku
154 instead.
158 instead.
155
159
156 2007-02-22 Ville Vainio <vivainio@gmail.com>
160 2007-02-22 Ville Vainio <vivainio@gmail.com>
157
161
158 * IPython/Extensions/ipy_p4.py: Extension for improved
162 * IPython/Extensions/ipy_p4.py: Extension for improved
159 p4 (perforce version control system) experience.
163 p4 (perforce version control system) experience.
160 Adds %p4 magic with p4 command completion and
164 Adds %p4 magic with p4 command completion and
161 automatic -G argument (marshall output as python dict)
165 automatic -G argument (marshall output as python dict)
162
166
163 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
167 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
164
168
165 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
169 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
166 stop marks.
170 stop marks.
167 (ClearingMixin): a simple mixin to easily make a Demo class clear
171 (ClearingMixin): a simple mixin to easily make a Demo class clear
168 the screen in between blocks and have empty marquees. The
172 the screen in between blocks and have empty marquees. The
169 ClearDemo and ClearIPDemo classes that use it are included.
173 ClearDemo and ClearIPDemo classes that use it are included.
170
174
171 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
175 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
172
176
173 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
177 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
174 protect against exceptions at Python shutdown time. Patch
178 protect against exceptions at Python shutdown time. Patch
175 sumbmitted to upstream.
179 sumbmitted to upstream.
176
180
177 2007-02-14 Walter Doerwald <walter@livinglogic.de>
181 2007-02-14 Walter Doerwald <walter@livinglogic.de>
178
182
179 * IPython/Extensions/ibrowse.py: If entering the first object level
183 * IPython/Extensions/ibrowse.py: If entering the first object level
180 (i.e. the object for which the browser has been started) fails,
184 (i.e. the object for which the browser has been started) fails,
181 now the error is raised directly (aborting the browser) instead of
185 now the error is raised directly (aborting the browser) instead of
182 running into an empty levels list later.
186 running into an empty levels list later.
183
187
184 2007-02-03 Walter Doerwald <walter@livinglogic.de>
188 2007-02-03 Walter Doerwald <walter@livinglogic.de>
185
189
186 * IPython/Extensions/ipipe.py: Add an xrepr implementation
190 * IPython/Extensions/ipipe.py: Add an xrepr implementation
187 for the noitem object.
191 for the noitem object.
188
192
189 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
193 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
190
194
191 * IPython/completer.py (Completer.attr_matches): Fix small
195 * IPython/completer.py (Completer.attr_matches): Fix small
192 tab-completion bug with Enthought Traits objects with units.
196 tab-completion bug with Enthought Traits objects with units.
193 Thanks to a bug report by Tom Denniston
197 Thanks to a bug report by Tom Denniston
194 <tom.denniston-AT-alum.dartmouth.org>.
198 <tom.denniston-AT-alum.dartmouth.org>.
195
199
196 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
200 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
197
201
198 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
202 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
199 bug where only .ipy or .py would be completed. Once the first
203 bug where only .ipy or .py would be completed. Once the first
200 argument to %run has been given, all completions are valid because
204 argument to %run has been given, all completions are valid because
201 they are the arguments to the script, which may well be non-python
205 they are the arguments to the script, which may well be non-python
202 filenames.
206 filenames.
203
207
204 * IPython/irunner.py (InteractiveRunner.run_source): major updates
208 * IPython/irunner.py (InteractiveRunner.run_source): major updates
205 to irunner to allow it to correctly support real doctesting of
209 to irunner to allow it to correctly support real doctesting of
206 out-of-process ipython code.
210 out-of-process ipython code.
207
211
208 * IPython/Magic.py (magic_cd): Make the setting of the terminal
212 * IPython/Magic.py (magic_cd): Make the setting of the terminal
209 title an option (-noterm_title) because it completely breaks
213 title an option (-noterm_title) because it completely breaks
210 doctesting.
214 doctesting.
211
215
212 * IPython/demo.py: fix IPythonDemo class that was not actually working.
216 * IPython/demo.py: fix IPythonDemo class that was not actually working.
213
217
214 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
218 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
215
219
216 * IPython/irunner.py (main): fix small bug where extensions were
220 * IPython/irunner.py (main): fix small bug where extensions were
217 not being correctly recognized.
221 not being correctly recognized.
218
222
219 2007-01-23 Walter Doerwald <walter@livinglogic.de>
223 2007-01-23 Walter Doerwald <walter@livinglogic.de>
220
224
221 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
225 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
222 a string containing a single line yields the string itself as the
226 a string containing a single line yields the string itself as the
223 only item.
227 only item.
224
228
225 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
229 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
226 object if it's the same as the one on the last level (This avoids
230 object if it's the same as the one on the last level (This avoids
227 infinite recursion for one line strings).
231 infinite recursion for one line strings).
228
232
229 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
233 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
230
234
231 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
235 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
232 all output streams before printing tracebacks. This ensures that
236 all output streams before printing tracebacks. This ensures that
233 user output doesn't end up interleaved with traceback output.
237 user output doesn't end up interleaved with traceback output.
234
238
235 2007-01-10 Ville Vainio <vivainio@gmail.com>
239 2007-01-10 Ville Vainio <vivainio@gmail.com>
236
240
237 * Extensions/envpersist.py: Turbocharged %env that remembers
241 * Extensions/envpersist.py: Turbocharged %env that remembers
238 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
242 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
239 "%env VISUAL=jed".
243 "%env VISUAL=jed".
240
244
241 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
245 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
242
246
243 * IPython/iplib.py (showtraceback): ensure that we correctly call
247 * IPython/iplib.py (showtraceback): ensure that we correctly call
244 custom handlers in all cases (some with pdb were slipping through,
248 custom handlers in all cases (some with pdb were slipping through,
245 but I'm not exactly sure why).
249 but I'm not exactly sure why).
246
250
247 * IPython/Debugger.py (Tracer.__init__): added new class to
251 * IPython/Debugger.py (Tracer.__init__): added new class to
248 support set_trace-like usage of IPython's enhanced debugger.
252 support set_trace-like usage of IPython's enhanced debugger.
249
253
250 2006-12-24 Ville Vainio <vivainio@gmail.com>
254 2006-12-24 Ville Vainio <vivainio@gmail.com>
251
255
252 * ipmaker.py: more informative message when ipy_user_conf
256 * ipmaker.py: more informative message when ipy_user_conf
253 import fails (suggest running %upgrade).
257 import fails (suggest running %upgrade).
254
258
255 * tools/run_ipy_in_profiler.py: Utility to see where
259 * tools/run_ipy_in_profiler.py: Utility to see where
256 the time during IPython startup is spent.
260 the time during IPython startup is spent.
257
261
258 2006-12-20 Ville Vainio <vivainio@gmail.com>
262 2006-12-20 Ville Vainio <vivainio@gmail.com>
259
263
260 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
264 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
261
265
262 * ipapi.py: Add new ipapi method, expand_alias.
266 * ipapi.py: Add new ipapi method, expand_alias.
263
267
264 * Release.py: Bump up version to 0.7.4.svn
268 * Release.py: Bump up version to 0.7.4.svn
265
269
266 2006-12-17 Ville Vainio <vivainio@gmail.com>
270 2006-12-17 Ville Vainio <vivainio@gmail.com>
267
271
268 * Extensions/jobctrl.py: Fixed &cmd arg arg...
272 * Extensions/jobctrl.py: Fixed &cmd arg arg...
269 to work properly on posix too
273 to work properly on posix too
270
274
271 * Release.py: Update revnum (version is still just 0.7.3).
275 * Release.py: Update revnum (version is still just 0.7.3).
272
276
273 2006-12-15 Ville Vainio <vivainio@gmail.com>
277 2006-12-15 Ville Vainio <vivainio@gmail.com>
274
278
275 * scripts/ipython_win_post_install: create ipython.py in
279 * scripts/ipython_win_post_install: create ipython.py in
276 prefix + "/scripts".
280 prefix + "/scripts".
277
281
278 * Release.py: Update version to 0.7.3.
282 * Release.py: Update version to 0.7.3.
279
283
280 2006-12-14 Ville Vainio <vivainio@gmail.com>
284 2006-12-14 Ville Vainio <vivainio@gmail.com>
281
285
282 * scripts/ipython_win_post_install: Overwrite old shortcuts
286 * scripts/ipython_win_post_install: Overwrite old shortcuts
283 if they already exist
287 if they already exist
284
288
285 * Release.py: release 0.7.3rc2
289 * Release.py: release 0.7.3rc2
286
290
287 2006-12-13 Ville Vainio <vivainio@gmail.com>
291 2006-12-13 Ville Vainio <vivainio@gmail.com>
288
292
289 * Branch and update Release.py for 0.7.3rc1
293 * Branch and update Release.py for 0.7.3rc1
290
294
291 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
295 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
292
296
293 * IPython/Shell.py (IPShellWX): update for current WX naming
297 * IPython/Shell.py (IPShellWX): update for current WX naming
294 conventions, to avoid a deprecation warning with current WX
298 conventions, to avoid a deprecation warning with current WX
295 versions. Thanks to a report by Danny Shevitz.
299 versions. Thanks to a report by Danny Shevitz.
296
300
297 2006-12-12 Ville Vainio <vivainio@gmail.com>
301 2006-12-12 Ville Vainio <vivainio@gmail.com>
298
302
299 * ipmaker.py: apply david cournapeau's patch to make
303 * ipmaker.py: apply david cournapeau's patch to make
300 import_some work properly even when ipythonrc does
304 import_some work properly even when ipythonrc does
301 import_some on empty list (it was an old bug!).
305 import_some on empty list (it was an old bug!).
302
306
303 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
307 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
304 Add deprecation note to ipythonrc and a url to wiki
308 Add deprecation note to ipythonrc and a url to wiki
305 in ipy_user_conf.py
309 in ipy_user_conf.py
306
310
307
311
308 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
312 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
309 as if it was typed on IPython command prompt, i.e.
313 as if it was typed on IPython command prompt, i.e.
310 as IPython script.
314 as IPython script.
311
315
312 * example-magic.py, magic_grepl.py: remove outdated examples
316 * example-magic.py, magic_grepl.py: remove outdated examples
313
317
314 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
318 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
315
319
316 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
320 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
317 is called before any exception has occurred.
321 is called before any exception has occurred.
318
322
319 2006-12-08 Ville Vainio <vivainio@gmail.com>
323 2006-12-08 Ville Vainio <vivainio@gmail.com>
320
324
321 * Extensions/ipy_stock_completers.py: fix cd completer
325 * Extensions/ipy_stock_completers.py: fix cd completer
322 to translate /'s to \'s again.
326 to translate /'s to \'s again.
323
327
324 * completer.py: prevent traceback on file completions w/
328 * completer.py: prevent traceback on file completions w/
325 backslash.
329 backslash.
326
330
327 * Release.py: Update release number to 0.7.3b3 for release
331 * Release.py: Update release number to 0.7.3b3 for release
328
332
329 2006-12-07 Ville Vainio <vivainio@gmail.com>
333 2006-12-07 Ville Vainio <vivainio@gmail.com>
330
334
331 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
335 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
332 while executing external code. Provides more shell-like behaviour
336 while executing external code. Provides more shell-like behaviour
333 and overall better response to ctrl + C / ctrl + break.
337 and overall better response to ctrl + C / ctrl + break.
334
338
335 * tools/make_tarball.py: new script to create tarball straight from svn
339 * tools/make_tarball.py: new script to create tarball straight from svn
336 (setup.py sdist doesn't work on win32).
340 (setup.py sdist doesn't work on win32).
337
341
338 * Extensions/ipy_stock_completers.py: fix cd completer to give up
342 * Extensions/ipy_stock_completers.py: fix cd completer to give up
339 on dirnames with spaces and use the default completer instead.
343 on dirnames with spaces and use the default completer instead.
340
344
341 * Revision.py: Change version to 0.7.3b2 for release.
345 * Revision.py: Change version to 0.7.3b2 for release.
342
346
343 2006-12-05 Ville Vainio <vivainio@gmail.com>
347 2006-12-05 Ville Vainio <vivainio@gmail.com>
344
348
345 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
349 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
346 pydb patch 4 (rm debug printing, py 2.5 checking)
350 pydb patch 4 (rm debug printing, py 2.5 checking)
347
351
348 2006-11-30 Walter Doerwald <walter@livinglogic.de>
352 2006-11-30 Walter Doerwald <walter@livinglogic.de>
349 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
353 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
350 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
354 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
351 "refreshfind" (mapped to "R") does the same but tries to go back to the same
355 "refreshfind" (mapped to "R") does the same but tries to go back to the same
352 object the cursor was on before the refresh. The command "markrange" is
356 object the cursor was on before the refresh. The command "markrange" is
353 mapped to "%" now.
357 mapped to "%" now.
354 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
358 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
355
359
356 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
360 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
357
361
358 * IPython/Magic.py (magic_debug): new %debug magic to activate the
362 * IPython/Magic.py (magic_debug): new %debug magic to activate the
359 interactive debugger on the last traceback, without having to call
363 interactive debugger on the last traceback, without having to call
360 %pdb and rerun your code. Made minor changes in various modules,
364 %pdb and rerun your code. Made minor changes in various modules,
361 should automatically recognize pydb if available.
365 should automatically recognize pydb if available.
362
366
363 2006-11-28 Ville Vainio <vivainio@gmail.com>
367 2006-11-28 Ville Vainio <vivainio@gmail.com>
364
368
365 * completer.py: If the text start with !, show file completions
369 * completer.py: If the text start with !, show file completions
366 properly. This helps when trying to complete command name
370 properly. This helps when trying to complete command name
367 for shell escapes.
371 for shell escapes.
368
372
369 2006-11-27 Ville Vainio <vivainio@gmail.com>
373 2006-11-27 Ville Vainio <vivainio@gmail.com>
370
374
371 * ipy_stock_completers.py: bzr completer submitted by Stefan van
375 * ipy_stock_completers.py: bzr completer submitted by Stefan van
372 der Walt. Clean up svn and hg completers by using a common
376 der Walt. Clean up svn and hg completers by using a common
373 vcs_completer.
377 vcs_completer.
374
378
375 2006-11-26 Ville Vainio <vivainio@gmail.com>
379 2006-11-26 Ville Vainio <vivainio@gmail.com>
376
380
377 * Remove ipconfig and %config; you should use _ip.options structure
381 * Remove ipconfig and %config; you should use _ip.options structure
378 directly instead!
382 directly instead!
379
383
380 * genutils.py: add wrap_deprecated function for deprecating callables
384 * genutils.py: add wrap_deprecated function for deprecating callables
381
385
382 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
386 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
383 _ip.system instead. ipalias is redundant.
387 _ip.system instead. ipalias is redundant.
384
388
385 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
389 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
386 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
390 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
387 explicit.
391 explicit.
388
392
389 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
393 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
390 completer. Try it by entering 'hg ' and pressing tab.
394 completer. Try it by entering 'hg ' and pressing tab.
391
395
392 * macro.py: Give Macro a useful __repr__ method
396 * macro.py: Give Macro a useful __repr__ method
393
397
394 * Magic.py: %whos abbreviates the typename of Macro for brevity.
398 * Magic.py: %whos abbreviates the typename of Macro for brevity.
395
399
396 2006-11-24 Walter Doerwald <walter@livinglogic.de>
400 2006-11-24 Walter Doerwald <walter@livinglogic.de>
397 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
401 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
398 we don't get a duplicate ipipe module, where registration of the xrepr
402 we don't get a duplicate ipipe module, where registration of the xrepr
399 implementation for Text is useless.
403 implementation for Text is useless.
400
404
401 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
405 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
402
406
403 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
407 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
404
408
405 2006-11-24 Ville Vainio <vivainio@gmail.com>
409 2006-11-24 Ville Vainio <vivainio@gmail.com>
406
410
407 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
411 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
408 try to use "cProfile" instead of the slower pure python
412 try to use "cProfile" instead of the slower pure python
409 "profile"
413 "profile"
410
414
411 2006-11-23 Ville Vainio <vivainio@gmail.com>
415 2006-11-23 Ville Vainio <vivainio@gmail.com>
412
416
413 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
417 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
414 Qt+IPython+Designer link in documentation.
418 Qt+IPython+Designer link in documentation.
415
419
416 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
420 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
417 correct Pdb object to %pydb.
421 correct Pdb object to %pydb.
418
422
419
423
420 2006-11-22 Walter Doerwald <walter@livinglogic.de>
424 2006-11-22 Walter Doerwald <walter@livinglogic.de>
421 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
425 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
422 generic xrepr(), otherwise the list implementation would kick in.
426 generic xrepr(), otherwise the list implementation would kick in.
423
427
424 2006-11-21 Ville Vainio <vivainio@gmail.com>
428 2006-11-21 Ville Vainio <vivainio@gmail.com>
425
429
426 * upgrade_dir.py: Now actually overwrites a nonmodified user file
430 * upgrade_dir.py: Now actually overwrites a nonmodified user file
427 with one from UserConfig.
431 with one from UserConfig.
428
432
429 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
433 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
430 it was missing which broke the sh profile.
434 it was missing which broke the sh profile.
431
435
432 * completer.py: file completer now uses explicit '/' instead
436 * completer.py: file completer now uses explicit '/' instead
433 of os.path.join, expansion of 'foo' was broken on win32
437 of os.path.join, expansion of 'foo' was broken on win32
434 if there was one directory with name 'foobar'.
438 if there was one directory with name 'foobar'.
435
439
436 * A bunch of patches from Kirill Smelkov:
440 * A bunch of patches from Kirill Smelkov:
437
441
438 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
442 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
439
443
440 * [patch 7/9] Implement %page -r (page in raw mode) -
444 * [patch 7/9] Implement %page -r (page in raw mode) -
441
445
442 * [patch 5/9] ScientificPython webpage has moved
446 * [patch 5/9] ScientificPython webpage has moved
443
447
444 * [patch 4/9] The manual mentions %ds, should be %dhist
448 * [patch 4/9] The manual mentions %ds, should be %dhist
445
449
446 * [patch 3/9] Kill old bits from %prun doc.
450 * [patch 3/9] Kill old bits from %prun doc.
447
451
448 * [patch 1/9] Fix typos here and there.
452 * [patch 1/9] Fix typos here and there.
449
453
450 2006-11-08 Ville Vainio <vivainio@gmail.com>
454 2006-11-08 Ville Vainio <vivainio@gmail.com>
451
455
452 * completer.py (attr_matches): catch all exceptions raised
456 * completer.py (attr_matches): catch all exceptions raised
453 by eval of expr with dots.
457 by eval of expr with dots.
454
458
455 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
459 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
456
460
457 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
461 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
458 input if it starts with whitespace. This allows you to paste
462 input if it starts with whitespace. This allows you to paste
459 indented input from any editor without manually having to type in
463 indented input from any editor without manually having to type in
460 the 'if 1:', which is convenient when working interactively.
464 the 'if 1:', which is convenient when working interactively.
461 Slightly modifed version of a patch by Bo Peng
465 Slightly modifed version of a patch by Bo Peng
462 <bpeng-AT-rice.edu>.
466 <bpeng-AT-rice.edu>.
463
467
464 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
468 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
465
469
466 * IPython/irunner.py (main): modified irunner so it automatically
470 * IPython/irunner.py (main): modified irunner so it automatically
467 recognizes the right runner to use based on the extension (.py for
471 recognizes the right runner to use based on the extension (.py for
468 python, .ipy for ipython and .sage for sage).
472 python, .ipy for ipython and .sage for sage).
469
473
470 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
474 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
471 visible in ipapi as ip.config(), to programatically control the
475 visible in ipapi as ip.config(), to programatically control the
472 internal rc object. There's an accompanying %config magic for
476 internal rc object. There's an accompanying %config magic for
473 interactive use, which has been enhanced to match the
477 interactive use, which has been enhanced to match the
474 funtionality in ipconfig.
478 funtionality in ipconfig.
475
479
476 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
480 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
477 so it's not just a toggle, it now takes an argument. Add support
481 so it's not just a toggle, it now takes an argument. Add support
478 for a customizable header when making system calls, as the new
482 for a customizable header when making system calls, as the new
479 system_header variable in the ipythonrc file.
483 system_header variable in the ipythonrc file.
480
484
481 2006-11-03 Walter Doerwald <walter@livinglogic.de>
485 2006-11-03 Walter Doerwald <walter@livinglogic.de>
482
486
483 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
487 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
484 generic functions (using Philip J. Eby's simplegeneric package).
488 generic functions (using Philip J. Eby's simplegeneric package).
485 This makes it possible to customize the display of third-party classes
489 This makes it possible to customize the display of third-party classes
486 without having to monkeypatch them. xiter() no longer supports a mode
490 without having to monkeypatch them. xiter() no longer supports a mode
487 argument and the XMode class has been removed. The same functionality can
491 argument and the XMode class has been removed. The same functionality can
488 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
492 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
489 One consequence of the switch to generic functions is that xrepr() and
493 One consequence of the switch to generic functions is that xrepr() and
490 xattrs() implementation must define the default value for the mode
494 xattrs() implementation must define the default value for the mode
491 argument themselves and xattrs() implementations must return real
495 argument themselves and xattrs() implementations must return real
492 descriptors.
496 descriptors.
493
497
494 * IPython/external: This new subpackage will contain all third-party
498 * IPython/external: This new subpackage will contain all third-party
495 packages that are bundled with IPython. (The first one is simplegeneric).
499 packages that are bundled with IPython. (The first one is simplegeneric).
496
500
497 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
501 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
498 directory which as been dropped in r1703.
502 directory which as been dropped in r1703.
499
503
500 * IPython/Extensions/ipipe.py (iless): Fixed.
504 * IPython/Extensions/ipipe.py (iless): Fixed.
501
505
502 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
506 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
503
507
504 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
508 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
505
509
506 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
510 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
507 handling in variable expansion so that shells and magics recognize
511 handling in variable expansion so that shells and magics recognize
508 function local scopes correctly. Bug reported by Brian.
512 function local scopes correctly. Bug reported by Brian.
509
513
510 * scripts/ipython: remove the very first entry in sys.path which
514 * scripts/ipython: remove the very first entry in sys.path which
511 Python auto-inserts for scripts, so that sys.path under IPython is
515 Python auto-inserts for scripts, so that sys.path under IPython is
512 as similar as possible to that under plain Python.
516 as similar as possible to that under plain Python.
513
517
514 * IPython/completer.py (IPCompleter.file_matches): Fix
518 * IPython/completer.py (IPCompleter.file_matches): Fix
515 tab-completion so that quotes are not closed unless the completion
519 tab-completion so that quotes are not closed unless the completion
516 is unambiguous. After a request by Stefan. Minor cleanups in
520 is unambiguous. After a request by Stefan. Minor cleanups in
517 ipy_stock_completers.
521 ipy_stock_completers.
518
522
519 2006-11-02 Ville Vainio <vivainio@gmail.com>
523 2006-11-02 Ville Vainio <vivainio@gmail.com>
520
524
521 * ipy_stock_completers.py: Add %run and %cd completers.
525 * ipy_stock_completers.py: Add %run and %cd completers.
522
526
523 * completer.py: Try running custom completer for both
527 * completer.py: Try running custom completer for both
524 "foo" and "%foo" if the command is just "foo". Ignore case
528 "foo" and "%foo" if the command is just "foo". Ignore case
525 when filtering possible completions.
529 when filtering possible completions.
526
530
527 * UserConfig/ipy_user_conf.py: install stock completers as default
531 * UserConfig/ipy_user_conf.py: install stock completers as default
528
532
529 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
533 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
530 simplified readline history save / restore through a wrapper
534 simplified readline history save / restore through a wrapper
531 function
535 function
532
536
533
537
534 2006-10-31 Ville Vainio <vivainio@gmail.com>
538 2006-10-31 Ville Vainio <vivainio@gmail.com>
535
539
536 * strdispatch.py, completer.py, ipy_stock_completers.py:
540 * strdispatch.py, completer.py, ipy_stock_completers.py:
537 Allow str_key ("command") in completer hooks. Implement
541 Allow str_key ("command") in completer hooks. Implement
538 trivial completer for 'import' (stdlib modules only). Rename
542 trivial completer for 'import' (stdlib modules only). Rename
539 ipy_linux_package_managers.py to ipy_stock_completers.py.
543 ipy_linux_package_managers.py to ipy_stock_completers.py.
540 SVN completer.
544 SVN completer.
541
545
542 * Extensions/ledit.py: %magic line editor for easily and
546 * Extensions/ledit.py: %magic line editor for easily and
543 incrementally manipulating lists of strings. The magic command
547 incrementally manipulating lists of strings. The magic command
544 name is %led.
548 name is %led.
545
549
546 2006-10-30 Ville Vainio <vivainio@gmail.com>
550 2006-10-30 Ville Vainio <vivainio@gmail.com>
547
551
548 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
552 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
549 Bernsteins's patches for pydb integration.
553 Bernsteins's patches for pydb integration.
550 http://bashdb.sourceforge.net/pydb/
554 http://bashdb.sourceforge.net/pydb/
551
555
552 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
556 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
553 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
557 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
554 custom completer hook to allow the users to implement their own
558 custom completer hook to allow the users to implement their own
555 completers. See ipy_linux_package_managers.py for example. The
559 completers. See ipy_linux_package_managers.py for example. The
556 hook name is 'complete_command'.
560 hook name is 'complete_command'.
557
561
558 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
562 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
559
563
560 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
564 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
561 Numeric leftovers.
565 Numeric leftovers.
562
566
563 * ipython.el (py-execute-region): apply Stefan's patch to fix
567 * ipython.el (py-execute-region): apply Stefan's patch to fix
564 garbled results if the python shell hasn't been previously started.
568 garbled results if the python shell hasn't been previously started.
565
569
566 * IPython/genutils.py (arg_split): moved to genutils, since it's a
570 * IPython/genutils.py (arg_split): moved to genutils, since it's a
567 pretty generic function and useful for other things.
571 pretty generic function and useful for other things.
568
572
569 * IPython/OInspect.py (getsource): Add customizable source
573 * IPython/OInspect.py (getsource): Add customizable source
570 extractor. After a request/patch form W. Stein (SAGE).
574 extractor. After a request/patch form W. Stein (SAGE).
571
575
572 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
576 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
573 window size to a more reasonable value from what pexpect does,
577 window size to a more reasonable value from what pexpect does,
574 since their choice causes wrapping bugs with long input lines.
578 since their choice causes wrapping bugs with long input lines.
575
579
576 2006-10-28 Ville Vainio <vivainio@gmail.com>
580 2006-10-28 Ville Vainio <vivainio@gmail.com>
577
581
578 * Magic.py (%run): Save and restore the readline history from
582 * Magic.py (%run): Save and restore the readline history from
579 file around %run commands to prevent side effects from
583 file around %run commands to prevent side effects from
580 %runned programs that might use readline (e.g. pydb).
584 %runned programs that might use readline (e.g. pydb).
581
585
582 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
586 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
583 invoking the pydb enhanced debugger.
587 invoking the pydb enhanced debugger.
584
588
585 2006-10-23 Walter Doerwald <walter@livinglogic.de>
589 2006-10-23 Walter Doerwald <walter@livinglogic.de>
586
590
587 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
591 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
588 call the base class method and propagate the return value to
592 call the base class method and propagate the return value to
589 ifile. This is now done by path itself.
593 ifile. This is now done by path itself.
590
594
591 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
595 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
592
596
593 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
597 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
594 api: set_crash_handler(), to expose the ability to change the
598 api: set_crash_handler(), to expose the ability to change the
595 internal crash handler.
599 internal crash handler.
596
600
597 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
601 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
598 the various parameters of the crash handler so that apps using
602 the various parameters of the crash handler so that apps using
599 IPython as their engine can customize crash handling. Ipmlemented
603 IPython as their engine can customize crash handling. Ipmlemented
600 at the request of SAGE.
604 at the request of SAGE.
601
605
602 2006-10-14 Ville Vainio <vivainio@gmail.com>
606 2006-10-14 Ville Vainio <vivainio@gmail.com>
603
607
604 * Magic.py, ipython.el: applied first "safe" part of Rocky
608 * Magic.py, ipython.el: applied first "safe" part of Rocky
605 Bernstein's patch set for pydb integration.
609 Bernstein's patch set for pydb integration.
606
610
607 * Magic.py (%unalias, %alias): %store'd aliases can now be
611 * Magic.py (%unalias, %alias): %store'd aliases can now be
608 removed with '%unalias'. %alias w/o args now shows most
612 removed with '%unalias'. %alias w/o args now shows most
609 interesting (stored / manually defined) aliases last
613 interesting (stored / manually defined) aliases last
610 where they catch the eye w/o scrolling.
614 where they catch the eye w/o scrolling.
611
615
612 * Magic.py (%rehashx), ext_rehashdir.py: files with
616 * Magic.py (%rehashx), ext_rehashdir.py: files with
613 'py' extension are always considered executable, even
617 'py' extension are always considered executable, even
614 when not in PATHEXT environment variable.
618 when not in PATHEXT environment variable.
615
619
616 2006-10-12 Ville Vainio <vivainio@gmail.com>
620 2006-10-12 Ville Vainio <vivainio@gmail.com>
617
621
618 * jobctrl.py: Add new "jobctrl" extension for spawning background
622 * jobctrl.py: Add new "jobctrl" extension for spawning background
619 processes with "&find /". 'import jobctrl' to try it out. Requires
623 processes with "&find /". 'import jobctrl' to try it out. Requires
620 'subprocess' module, standard in python 2.4+.
624 'subprocess' module, standard in python 2.4+.
621
625
622 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
626 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
623 so if foo -> bar and bar -> baz, then foo -> baz.
627 so if foo -> bar and bar -> baz, then foo -> baz.
624
628
625 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
629 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
626
630
627 * IPython/Magic.py (Magic.parse_options): add a new posix option
631 * IPython/Magic.py (Magic.parse_options): add a new posix option
628 to allow parsing of input args in magics that doesn't strip quotes
632 to allow parsing of input args in magics that doesn't strip quotes
629 (if posix=False). This also closes %timeit bug reported by
633 (if posix=False). This also closes %timeit bug reported by
630 Stefan.
634 Stefan.
631
635
632 2006-10-03 Ville Vainio <vivainio@gmail.com>
636 2006-10-03 Ville Vainio <vivainio@gmail.com>
633
637
634 * iplib.py (raw_input, interact): Return ValueError catching for
638 * iplib.py (raw_input, interact): Return ValueError catching for
635 raw_input. Fixes infinite loop for sys.stdin.close() or
639 raw_input. Fixes infinite loop for sys.stdin.close() or
636 sys.stdout.close().
640 sys.stdout.close().
637
641
638 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
642 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
639
643
640 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
644 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
641 to help in handling doctests. irunner is now pretty useful for
645 to help in handling doctests. irunner is now pretty useful for
642 running standalone scripts and simulate a full interactive session
646 running standalone scripts and simulate a full interactive session
643 in a format that can be then pasted as a doctest.
647 in a format that can be then pasted as a doctest.
644
648
645 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
649 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
646 on top of the default (useless) ones. This also fixes the nasty
650 on top of the default (useless) ones. This also fixes the nasty
647 way in which 2.5's Quitter() exits (reverted [1785]).
651 way in which 2.5's Quitter() exits (reverted [1785]).
648
652
649 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
653 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
650 2.5.
654 2.5.
651
655
652 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
656 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
653 color scheme is updated as well when color scheme is changed
657 color scheme is updated as well when color scheme is changed
654 interactively.
658 interactively.
655
659
656 2006-09-27 Ville Vainio <vivainio@gmail.com>
660 2006-09-27 Ville Vainio <vivainio@gmail.com>
657
661
658 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
662 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
659 infinite loop and just exit. It's a hack, but will do for a while.
663 infinite loop and just exit. It's a hack, but will do for a while.
660
664
661 2006-08-25 Walter Doerwald <walter@livinglogic.de>
665 2006-08-25 Walter Doerwald <walter@livinglogic.de>
662
666
663 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
667 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
664 the constructor, this makes it possible to get a list of only directories
668 the constructor, this makes it possible to get a list of only directories
665 or only files.
669 or only files.
666
670
667 2006-08-12 Ville Vainio <vivainio@gmail.com>
671 2006-08-12 Ville Vainio <vivainio@gmail.com>
668
672
669 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
673 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
670 they broke unittest
674 they broke unittest
671
675
672 2006-08-11 Ville Vainio <vivainio@gmail.com>
676 2006-08-11 Ville Vainio <vivainio@gmail.com>
673
677
674 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
678 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
675 by resolving issue properly, i.e. by inheriting FakeModule
679 by resolving issue properly, i.e. by inheriting FakeModule
676 from types.ModuleType. Pickling ipython interactive data
680 from types.ModuleType. Pickling ipython interactive data
677 should still work as usual (testing appreciated).
681 should still work as usual (testing appreciated).
678
682
679 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
683 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
680
684
681 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
685 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
682 running under python 2.3 with code from 2.4 to fix a bug with
686 running under python 2.3 with code from 2.4 to fix a bug with
683 help(). Reported by the Debian maintainers, Norbert Tretkowski
687 help(). Reported by the Debian maintainers, Norbert Tretkowski
684 <norbert-AT-tretkowski.de> and Alexandre Fayolle
688 <norbert-AT-tretkowski.de> and Alexandre Fayolle
685 <afayolle-AT-debian.org>.
689 <afayolle-AT-debian.org>.
686
690
687 2006-08-04 Walter Doerwald <walter@livinglogic.de>
691 2006-08-04 Walter Doerwald <walter@livinglogic.de>
688
692
689 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
693 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
690 (which was displaying "quit" twice).
694 (which was displaying "quit" twice).
691
695
692 2006-07-28 Walter Doerwald <walter@livinglogic.de>
696 2006-07-28 Walter Doerwald <walter@livinglogic.de>
693
697
694 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
698 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
695 the mode argument).
699 the mode argument).
696
700
697 2006-07-27 Walter Doerwald <walter@livinglogic.de>
701 2006-07-27 Walter Doerwald <walter@livinglogic.de>
698
702
699 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
703 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
700 not running under IPython.
704 not running under IPython.
701
705
702 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
706 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
703 and make it iterable (iterating over the attribute itself). Add two new
707 and make it iterable (iterating over the attribute itself). Add two new
704 magic strings for __xattrs__(): If the string starts with "-", the attribute
708 magic strings for __xattrs__(): If the string starts with "-", the attribute
705 will not be displayed in ibrowse's detail view (but it can still be
709 will not be displayed in ibrowse's detail view (but it can still be
706 iterated over). This makes it possible to add attributes that are large
710 iterated over). This makes it possible to add attributes that are large
707 lists or generator methods to the detail view. Replace magic attribute names
711 lists or generator methods to the detail view. Replace magic attribute names
708 and _attrname() and _getattr() with "descriptors": For each type of magic
712 and _attrname() and _getattr() with "descriptors": For each type of magic
709 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
713 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
710 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
714 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
711 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
715 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
712 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
716 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
713 are still supported.
717 are still supported.
714
718
715 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
719 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
716 fails in ibrowse.fetch(), the exception object is added as the last item
720 fails in ibrowse.fetch(), the exception object is added as the last item
717 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
721 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
718 a generator throws an exception midway through execution.
722 a generator throws an exception midway through execution.
719
723
720 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
724 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
721 encoding into methods.
725 encoding into methods.
722
726
723 2006-07-26 Ville Vainio <vivainio@gmail.com>
727 2006-07-26 Ville Vainio <vivainio@gmail.com>
724
728
725 * iplib.py: history now stores multiline input as single
729 * iplib.py: history now stores multiline input as single
726 history entries. Patch by Jorgen Cederlof.
730 history entries. Patch by Jorgen Cederlof.
727
731
728 2006-07-18 Walter Doerwald <walter@livinglogic.de>
732 2006-07-18 Walter Doerwald <walter@livinglogic.de>
729
733
730 * IPython/Extensions/ibrowse.py: Make cursor visible over
734 * IPython/Extensions/ibrowse.py: Make cursor visible over
731 non existing attributes.
735 non existing attributes.
732
736
733 2006-07-14 Walter Doerwald <walter@livinglogic.de>
737 2006-07-14 Walter Doerwald <walter@livinglogic.de>
734
738
735 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
739 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
736 error output of the running command doesn't mess up the screen.
740 error output of the running command doesn't mess up the screen.
737
741
738 2006-07-13 Walter Doerwald <walter@livinglogic.de>
742 2006-07-13 Walter Doerwald <walter@livinglogic.de>
739
743
740 * IPython/Extensions/ipipe.py (isort): Make isort usable without
744 * IPython/Extensions/ipipe.py (isort): Make isort usable without
741 argument. This sorts the items themselves.
745 argument. This sorts the items themselves.
742
746
743 2006-07-12 Walter Doerwald <walter@livinglogic.de>
747 2006-07-12 Walter Doerwald <walter@livinglogic.de>
744
748
745 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
749 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
746 Compile expression strings into code objects. This should speed
750 Compile expression strings into code objects. This should speed
747 up ifilter and friends somewhat.
751 up ifilter and friends somewhat.
748
752
749 2006-07-08 Ville Vainio <vivainio@gmail.com>
753 2006-07-08 Ville Vainio <vivainio@gmail.com>
750
754
751 * Magic.py: %cpaste now strips > from the beginning of lines
755 * Magic.py: %cpaste now strips > from the beginning of lines
752 to ease pasting quoted code from emails. Contributed by
756 to ease pasting quoted code from emails. Contributed by
753 Stefan van der Walt.
757 Stefan van der Walt.
754
758
755 2006-06-29 Ville Vainio <vivainio@gmail.com>
759 2006-06-29 Ville Vainio <vivainio@gmail.com>
756
760
757 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
761 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
758 mode, patch contributed by Darren Dale. NEEDS TESTING!
762 mode, patch contributed by Darren Dale. NEEDS TESTING!
759
763
760 2006-06-28 Walter Doerwald <walter@livinglogic.de>
764 2006-06-28 Walter Doerwald <walter@livinglogic.de>
761
765
762 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
766 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
763 a blue background. Fix fetching new display rows when the browser
767 a blue background. Fix fetching new display rows when the browser
764 scrolls more than a screenful (e.g. by using the goto command).
768 scrolls more than a screenful (e.g. by using the goto command).
765
769
766 2006-06-27 Ville Vainio <vivainio@gmail.com>
770 2006-06-27 Ville Vainio <vivainio@gmail.com>
767
771
768 * Magic.py (_inspect, _ofind) Apply David Huard's
772 * Magic.py (_inspect, _ofind) Apply David Huard's
769 patch for displaying the correct docstring for 'property'
773 patch for displaying the correct docstring for 'property'
770 attributes.
774 attributes.
771
775
772 2006-06-23 Walter Doerwald <walter@livinglogic.de>
776 2006-06-23 Walter Doerwald <walter@livinglogic.de>
773
777
774 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
778 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
775 commands into the methods implementing them.
779 commands into the methods implementing them.
776
780
777 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
781 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
778
782
779 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
783 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
780 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
784 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
781 autoindent support was authored by Jin Liu.
785 autoindent support was authored by Jin Liu.
782
786
783 2006-06-22 Walter Doerwald <walter@livinglogic.de>
787 2006-06-22 Walter Doerwald <walter@livinglogic.de>
784
788
785 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
789 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
786 for keymaps with a custom class that simplifies handling.
790 for keymaps with a custom class that simplifies handling.
787
791
788 2006-06-19 Walter Doerwald <walter@livinglogic.de>
792 2006-06-19 Walter Doerwald <walter@livinglogic.de>
789
793
790 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
794 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
791 resizing. This requires Python 2.5 to work.
795 resizing. This requires Python 2.5 to work.
792
796
793 2006-06-16 Walter Doerwald <walter@livinglogic.de>
797 2006-06-16 Walter Doerwald <walter@livinglogic.de>
794
798
795 * IPython/Extensions/ibrowse.py: Add two new commands to
799 * IPython/Extensions/ibrowse.py: Add two new commands to
796 ibrowse: "hideattr" (mapped to "h") hides the attribute under
800 ibrowse: "hideattr" (mapped to "h") hides the attribute under
797 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
801 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
798 attributes again. Remapped the help command to "?". Display
802 attributes again. Remapped the help command to "?". Display
799 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
803 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
800 as keys for the "home" and "end" commands. Add three new commands
804 as keys for the "home" and "end" commands. Add three new commands
801 to the input mode for "find" and friends: "delend" (CTRL-K)
805 to the input mode for "find" and friends: "delend" (CTRL-K)
802 deletes to the end of line. "incsearchup" searches upwards in the
806 deletes to the end of line. "incsearchup" searches upwards in the
803 command history for an input that starts with the text before the cursor.
807 command history for an input that starts with the text before the cursor.
804 "incsearchdown" does the same downwards. Removed a bogus mapping of
808 "incsearchdown" does the same downwards. Removed a bogus mapping of
805 the x key to "delete".
809 the x key to "delete".
806
810
807 2006-06-15 Ville Vainio <vivainio@gmail.com>
811 2006-06-15 Ville Vainio <vivainio@gmail.com>
808
812
809 * iplib.py, hooks.py: Added new generate_prompt hook that can be
813 * iplib.py, hooks.py: Added new generate_prompt hook that can be
810 used to create prompts dynamically, instead of the "old" way of
814 used to create prompts dynamically, instead of the "old" way of
811 assigning "magic" strings to prompt_in1 and prompt_in2. The old
815 assigning "magic" strings to prompt_in1 and prompt_in2. The old
812 way still works (it's invoked by the default hook), of course.
816 way still works (it's invoked by the default hook), of course.
813
817
814 * Prompts.py: added generate_output_prompt hook for altering output
818 * Prompts.py: added generate_output_prompt hook for altering output
815 prompt
819 prompt
816
820
817 * Release.py: Changed version string to 0.7.3.svn.
821 * Release.py: Changed version string to 0.7.3.svn.
818
822
819 2006-06-15 Walter Doerwald <walter@livinglogic.de>
823 2006-06-15 Walter Doerwald <walter@livinglogic.de>
820
824
821 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
825 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
822 the call to fetch() always tries to fetch enough data for at least one
826 the call to fetch() always tries to fetch enough data for at least one
823 full screen. This makes it possible to simply call moveto(0,0,True) in
827 full screen. This makes it possible to simply call moveto(0,0,True) in
824 the constructor. Fix typos and removed the obsolete goto attribute.
828 the constructor. Fix typos and removed the obsolete goto attribute.
825
829
826 2006-06-12 Ville Vainio <vivainio@gmail.com>
830 2006-06-12 Ville Vainio <vivainio@gmail.com>
827
831
828 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
832 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
829 allowing $variable interpolation within multiline statements,
833 allowing $variable interpolation within multiline statements,
830 though so far only with "sh" profile for a testing period.
834 though so far only with "sh" profile for a testing period.
831 The patch also enables splitting long commands with \ but it
835 The patch also enables splitting long commands with \ but it
832 doesn't work properly yet.
836 doesn't work properly yet.
833
837
834 2006-06-12 Walter Doerwald <walter@livinglogic.de>
838 2006-06-12 Walter Doerwald <walter@livinglogic.de>
835
839
836 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
840 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
837 input history and the position of the cursor in the input history for
841 input history and the position of the cursor in the input history for
838 the find, findbackwards and goto command.
842 the find, findbackwards and goto command.
839
843
840 2006-06-10 Walter Doerwald <walter@livinglogic.de>
844 2006-06-10 Walter Doerwald <walter@livinglogic.de>
841
845
842 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
846 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
843 implements the basic functionality of browser commands that require
847 implements the basic functionality of browser commands that require
844 input. Reimplement the goto, find and findbackwards commands as
848 input. Reimplement the goto, find and findbackwards commands as
845 subclasses of _CommandInput. Add an input history and keymaps to those
849 subclasses of _CommandInput. Add an input history and keymaps to those
846 commands. Add "\r" as a keyboard shortcut for the enterdefault and
850 commands. Add "\r" as a keyboard shortcut for the enterdefault and
847 execute commands.
851 execute commands.
848
852
849 2006-06-07 Ville Vainio <vivainio@gmail.com>
853 2006-06-07 Ville Vainio <vivainio@gmail.com>
850
854
851 * iplib.py: ipython mybatch.ipy exits ipython immediately after
855 * iplib.py: ipython mybatch.ipy exits ipython immediately after
852 running the batch files instead of leaving the session open.
856 running the batch files instead of leaving the session open.
853
857
854 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
858 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
855
859
856 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
860 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
857 the original fix was incomplete. Patch submitted by W. Maier.
861 the original fix was incomplete. Patch submitted by W. Maier.
858
862
859 2006-06-07 Ville Vainio <vivainio@gmail.com>
863 2006-06-07 Ville Vainio <vivainio@gmail.com>
860
864
861 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
865 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
862 Confirmation prompts can be supressed by 'quiet' option.
866 Confirmation prompts can be supressed by 'quiet' option.
863 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
867 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
864
868
865 2006-06-06 *** Released version 0.7.2
869 2006-06-06 *** Released version 0.7.2
866
870
867 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
871 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
868
872
869 * IPython/Release.py (version): Made 0.7.2 final for release.
873 * IPython/Release.py (version): Made 0.7.2 final for release.
870 Repo tagged and release cut.
874 Repo tagged and release cut.
871
875
872 2006-06-05 Ville Vainio <vivainio@gmail.com>
876 2006-06-05 Ville Vainio <vivainio@gmail.com>
873
877
874 * Magic.py (magic_rehashx): Honor no_alias list earlier in
878 * Magic.py (magic_rehashx): Honor no_alias list earlier in
875 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
879 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
876
880
877 * upgrade_dir.py: try import 'path' module a bit harder
881 * upgrade_dir.py: try import 'path' module a bit harder
878 (for %upgrade)
882 (for %upgrade)
879
883
880 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
884 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
881
885
882 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
886 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
883 instead of looping 20 times.
887 instead of looping 20 times.
884
888
885 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
889 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
886 correctly at initialization time. Bug reported by Krishna Mohan
890 correctly at initialization time. Bug reported by Krishna Mohan
887 Gundu <gkmohan-AT-gmail.com> on the user list.
891 Gundu <gkmohan-AT-gmail.com> on the user list.
888
892
889 * IPython/Release.py (version): Mark 0.7.2 version to start
893 * IPython/Release.py (version): Mark 0.7.2 version to start
890 testing for release on 06/06.
894 testing for release on 06/06.
891
895
892 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
896 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
893
897
894 * scripts/irunner: thin script interface so users don't have to
898 * scripts/irunner: thin script interface so users don't have to
895 find the module and call it as an executable, since modules rarely
899 find the module and call it as an executable, since modules rarely
896 live in people's PATH.
900 live in people's PATH.
897
901
898 * IPython/irunner.py (InteractiveRunner.__init__): added
902 * IPython/irunner.py (InteractiveRunner.__init__): added
899 delaybeforesend attribute to control delays with newer versions of
903 delaybeforesend attribute to control delays with newer versions of
900 pexpect. Thanks to detailed help from pexpect's author, Noah
904 pexpect. Thanks to detailed help from pexpect's author, Noah
901 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
905 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
902 correctly (it works in NoColor mode).
906 correctly (it works in NoColor mode).
903
907
904 * IPython/iplib.py (handle_normal): fix nasty crash reported on
908 * IPython/iplib.py (handle_normal): fix nasty crash reported on
905 SAGE list, from improper log() calls.
909 SAGE list, from improper log() calls.
906
910
907 2006-05-31 Ville Vainio <vivainio@gmail.com>
911 2006-05-31 Ville Vainio <vivainio@gmail.com>
908
912
909 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
913 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
910 with args in parens to work correctly with dirs that have spaces.
914 with args in parens to work correctly with dirs that have spaces.
911
915
912 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
916 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
913
917
914 * IPython/Logger.py (Logger.logstart): add option to log raw input
918 * IPython/Logger.py (Logger.logstart): add option to log raw input
915 instead of the processed one. A -r flag was added to the
919 instead of the processed one. A -r flag was added to the
916 %logstart magic used for controlling logging.
920 %logstart magic used for controlling logging.
917
921
918 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
922 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
919
923
920 * IPython/iplib.py (InteractiveShell.__init__): add check for the
924 * IPython/iplib.py (InteractiveShell.__init__): add check for the
921 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
925 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
922 recognize the option. After a bug report by Will Maier. This
926 recognize the option. After a bug report by Will Maier. This
923 closes #64 (will do it after confirmation from W. Maier).
927 closes #64 (will do it after confirmation from W. Maier).
924
928
925 * IPython/irunner.py: New module to run scripts as if manually
929 * IPython/irunner.py: New module to run scripts as if manually
926 typed into an interactive environment, based on pexpect. After a
930 typed into an interactive environment, based on pexpect. After a
927 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
931 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
928 ipython-user list. Simple unittests in the tests/ directory.
932 ipython-user list. Simple unittests in the tests/ directory.
929
933
930 * tools/release: add Will Maier, OpenBSD port maintainer, to
934 * tools/release: add Will Maier, OpenBSD port maintainer, to
931 recepients list. We are now officially part of the OpenBSD ports:
935 recepients list. We are now officially part of the OpenBSD ports:
932 http://www.openbsd.org/ports.html ! Many thanks to Will for the
936 http://www.openbsd.org/ports.html ! Many thanks to Will for the
933 work.
937 work.
934
938
935 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
939 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
936
940
937 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
941 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
938 so that it doesn't break tkinter apps.
942 so that it doesn't break tkinter apps.
939
943
940 * IPython/iplib.py (_prefilter): fix bug where aliases would
944 * IPython/iplib.py (_prefilter): fix bug where aliases would
941 shadow variables when autocall was fully off. Reported by SAGE
945 shadow variables when autocall was fully off. Reported by SAGE
942 author William Stein.
946 author William Stein.
943
947
944 * IPython/OInspect.py (Inspector.__init__): add a flag to control
948 * IPython/OInspect.py (Inspector.__init__): add a flag to control
945 at what detail level strings are computed when foo? is requested.
949 at what detail level strings are computed when foo? is requested.
946 This allows users to ask for example that the string form of an
950 This allows users to ask for example that the string form of an
947 object is only computed when foo?? is called, or even never, by
951 object is only computed when foo?? is called, or even never, by
948 setting the object_info_string_level >= 2 in the configuration
952 setting the object_info_string_level >= 2 in the configuration
949 file. This new option has been added and documented. After a
953 file. This new option has been added and documented. After a
950 request by SAGE to be able to control the printing of very large
954 request by SAGE to be able to control the printing of very large
951 objects more easily.
955 objects more easily.
952
956
953 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
957 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
954
958
955 * IPython/ipmaker.py (make_IPython): remove the ipython call path
959 * IPython/ipmaker.py (make_IPython): remove the ipython call path
956 from sys.argv, to be 100% consistent with how Python itself works
960 from sys.argv, to be 100% consistent with how Python itself works
957 (as seen for example with python -i file.py). After a bug report
961 (as seen for example with python -i file.py). After a bug report
958 by Jeffrey Collins.
962 by Jeffrey Collins.
959
963
960 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
964 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
961 nasty bug which was preventing custom namespaces with -pylab,
965 nasty bug which was preventing custom namespaces with -pylab,
962 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
966 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
963 compatibility (long gone from mpl).
967 compatibility (long gone from mpl).
964
968
965 * IPython/ipapi.py (make_session): name change: create->make. We
969 * IPython/ipapi.py (make_session): name change: create->make. We
966 use make in other places (ipmaker,...), it's shorter and easier to
970 use make in other places (ipmaker,...), it's shorter and easier to
967 type and say, etc. I'm trying to clean things before 0.7.2 so
971 type and say, etc. I'm trying to clean things before 0.7.2 so
968 that I can keep things stable wrt to ipapi in the chainsaw branch.
972 that I can keep things stable wrt to ipapi in the chainsaw branch.
969
973
970 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
974 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
971 python-mode recognizes our debugger mode. Add support for
975 python-mode recognizes our debugger mode. Add support for
972 autoindent inside (X)emacs. After a patch sent in by Jin Liu
976 autoindent inside (X)emacs. After a patch sent in by Jin Liu
973 <m.liu.jin-AT-gmail.com> originally written by
977 <m.liu.jin-AT-gmail.com> originally written by
974 doxgen-AT-newsmth.net (with minor modifications for xemacs
978 doxgen-AT-newsmth.net (with minor modifications for xemacs
975 compatibility)
979 compatibility)
976
980
977 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
981 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
978 tracebacks when walking the stack so that the stack tracking system
982 tracebacks when walking the stack so that the stack tracking system
979 in emacs' python-mode can identify the frames correctly.
983 in emacs' python-mode can identify the frames correctly.
980
984
981 * IPython/ipmaker.py (make_IPython): make the internal (and
985 * IPython/ipmaker.py (make_IPython): make the internal (and
982 default config) autoedit_syntax value false by default. Too many
986 default config) autoedit_syntax value false by default. Too many
983 users have complained to me (both on and off-list) about problems
987 users have complained to me (both on and off-list) about problems
984 with this option being on by default, so I'm making it default to
988 with this option being on by default, so I'm making it default to
985 off. It can still be enabled by anyone via the usual mechanisms.
989 off. It can still be enabled by anyone via the usual mechanisms.
986
990
987 * IPython/completer.py (Completer.attr_matches): add support for
991 * IPython/completer.py (Completer.attr_matches): add support for
988 PyCrust-style _getAttributeNames magic method. Patch contributed
992 PyCrust-style _getAttributeNames magic method. Patch contributed
989 by <mscott-AT-goldenspud.com>. Closes #50.
993 by <mscott-AT-goldenspud.com>. Closes #50.
990
994
991 * IPython/iplib.py (InteractiveShell.__init__): remove the
995 * IPython/iplib.py (InteractiveShell.__init__): remove the
992 deletion of exit/quit from __builtin__, which can break
996 deletion of exit/quit from __builtin__, which can break
993 third-party tools like the Zope debugging console. The
997 third-party tools like the Zope debugging console. The
994 %exit/%quit magics remain. In general, it's probably a good idea
998 %exit/%quit magics remain. In general, it's probably a good idea
995 not to delete anything from __builtin__, since we never know what
999 not to delete anything from __builtin__, since we never know what
996 that will break. In any case, python now (for 2.5) will support
1000 that will break. In any case, python now (for 2.5) will support
997 'real' exit/quit, so this issue is moot. Closes #55.
1001 'real' exit/quit, so this issue is moot. Closes #55.
998
1002
999 * IPython/genutils.py (with_obj): rename the 'with' function to
1003 * IPython/genutils.py (with_obj): rename the 'with' function to
1000 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1004 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1001 becomes a language keyword. Closes #53.
1005 becomes a language keyword. Closes #53.
1002
1006
1003 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1007 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1004 __file__ attribute to this so it fools more things into thinking
1008 __file__ attribute to this so it fools more things into thinking
1005 it is a real module. Closes #59.
1009 it is a real module. Closes #59.
1006
1010
1007 * IPython/Magic.py (magic_edit): add -n option to open the editor
1011 * IPython/Magic.py (magic_edit): add -n option to open the editor
1008 at a specific line number. After a patch by Stefan van der Walt.
1012 at a specific line number. After a patch by Stefan van der Walt.
1009
1013
1010 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1014 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1011
1015
1012 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1016 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1013 reason the file could not be opened. After automatic crash
1017 reason the file could not be opened. After automatic crash
1014 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1018 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1015 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1019 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1016 (_should_recompile): Don't fire editor if using %bg, since there
1020 (_should_recompile): Don't fire editor if using %bg, since there
1017 is no file in the first place. From the same report as above.
1021 is no file in the first place. From the same report as above.
1018 (raw_input): protect against faulty third-party prefilters. After
1022 (raw_input): protect against faulty third-party prefilters. After
1019 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1023 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1020 while running under SAGE.
1024 while running under SAGE.
1021
1025
1022 2006-05-23 Ville Vainio <vivainio@gmail.com>
1026 2006-05-23 Ville Vainio <vivainio@gmail.com>
1023
1027
1024 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1028 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1025 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1029 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1026 now returns None (again), unless dummy is specifically allowed by
1030 now returns None (again), unless dummy is specifically allowed by
1027 ipapi.get(allow_dummy=True).
1031 ipapi.get(allow_dummy=True).
1028
1032
1029 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1033 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1030
1034
1031 * IPython: remove all 2.2-compatibility objects and hacks from
1035 * IPython: remove all 2.2-compatibility objects and hacks from
1032 everywhere, since we only support 2.3 at this point. Docs
1036 everywhere, since we only support 2.3 at this point. Docs
1033 updated.
1037 updated.
1034
1038
1035 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1039 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1036 Anything requiring extra validation can be turned into a Python
1040 Anything requiring extra validation can be turned into a Python
1037 property in the future. I used a property for the db one b/c
1041 property in the future. I used a property for the db one b/c
1038 there was a nasty circularity problem with the initialization
1042 there was a nasty circularity problem with the initialization
1039 order, which right now I don't have time to clean up.
1043 order, which right now I don't have time to clean up.
1040
1044
1041 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1045 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1042 another locking bug reported by Jorgen. I'm not 100% sure though,
1046 another locking bug reported by Jorgen. I'm not 100% sure though,
1043 so more testing is needed...
1047 so more testing is needed...
1044
1048
1045 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1049 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1046
1050
1047 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1051 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1048 local variables from any routine in user code (typically executed
1052 local variables from any routine in user code (typically executed
1049 with %run) directly into the interactive namespace. Very useful
1053 with %run) directly into the interactive namespace. Very useful
1050 when doing complex debugging.
1054 when doing complex debugging.
1051 (IPythonNotRunning): Changed the default None object to a dummy
1055 (IPythonNotRunning): Changed the default None object to a dummy
1052 whose attributes can be queried as well as called without
1056 whose attributes can be queried as well as called without
1053 exploding, to ease writing code which works transparently both in
1057 exploding, to ease writing code which works transparently both in
1054 and out of ipython and uses some of this API.
1058 and out of ipython and uses some of this API.
1055
1059
1056 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1060 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1057
1061
1058 * IPython/hooks.py (result_display): Fix the fact that our display
1062 * IPython/hooks.py (result_display): Fix the fact that our display
1059 hook was using str() instead of repr(), as the default python
1063 hook was using str() instead of repr(), as the default python
1060 console does. This had gone unnoticed b/c it only happened if
1064 console does. This had gone unnoticed b/c it only happened if
1061 %Pprint was off, but the inconsistency was there.
1065 %Pprint was off, but the inconsistency was there.
1062
1066
1063 2006-05-15 Ville Vainio <vivainio@gmail.com>
1067 2006-05-15 Ville Vainio <vivainio@gmail.com>
1064
1068
1065 * Oinspect.py: Only show docstring for nonexisting/binary files
1069 * Oinspect.py: Only show docstring for nonexisting/binary files
1066 when doing object??, closing ticket #62
1070 when doing object??, closing ticket #62
1067
1071
1068 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1072 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1069
1073
1070 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1074 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1071 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1075 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1072 was being released in a routine which hadn't checked if it had
1076 was being released in a routine which hadn't checked if it had
1073 been the one to acquire it.
1077 been the one to acquire it.
1074
1078
1075 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1079 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1076
1080
1077 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1081 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1078
1082
1079 2006-04-11 Ville Vainio <vivainio@gmail.com>
1083 2006-04-11 Ville Vainio <vivainio@gmail.com>
1080
1084
1081 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1085 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1082 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1086 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1083 prefilters, allowing stuff like magics and aliases in the file.
1087 prefilters, allowing stuff like magics and aliases in the file.
1084
1088
1085 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1089 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1086 added. Supported now are "%clear in" and "%clear out" (clear input and
1090 added. Supported now are "%clear in" and "%clear out" (clear input and
1087 output history, respectively). Also fixed CachedOutput.flush to
1091 output history, respectively). Also fixed CachedOutput.flush to
1088 properly flush the output cache.
1092 properly flush the output cache.
1089
1093
1090 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1094 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1091 half-success (and fail explicitly).
1095 half-success (and fail explicitly).
1092
1096
1093 2006-03-28 Ville Vainio <vivainio@gmail.com>
1097 2006-03-28 Ville Vainio <vivainio@gmail.com>
1094
1098
1095 * iplib.py: Fix quoting of aliases so that only argless ones
1099 * iplib.py: Fix quoting of aliases so that only argless ones
1096 are quoted
1100 are quoted
1097
1101
1098 2006-03-28 Ville Vainio <vivainio@gmail.com>
1102 2006-03-28 Ville Vainio <vivainio@gmail.com>
1099
1103
1100 * iplib.py: Quote aliases with spaces in the name.
1104 * iplib.py: Quote aliases with spaces in the name.
1101 "c:\program files\blah\bin" is now legal alias target.
1105 "c:\program files\blah\bin" is now legal alias target.
1102
1106
1103 * ext_rehashdir.py: Space no longer allowed as arg
1107 * ext_rehashdir.py: Space no longer allowed as arg
1104 separator, since space is legal in path names.
1108 separator, since space is legal in path names.
1105
1109
1106 2006-03-16 Ville Vainio <vivainio@gmail.com>
1110 2006-03-16 Ville Vainio <vivainio@gmail.com>
1107
1111
1108 * upgrade_dir.py: Take path.py from Extensions, correcting
1112 * upgrade_dir.py: Take path.py from Extensions, correcting
1109 %upgrade magic
1113 %upgrade magic
1110
1114
1111 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1115 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1112
1116
1113 * hooks.py: Only enclose editor binary in quotes if legal and
1117 * hooks.py: Only enclose editor binary in quotes if legal and
1114 necessary (space in the name, and is an existing file). Fixes a bug
1118 necessary (space in the name, and is an existing file). Fixes a bug
1115 reported by Zachary Pincus.
1119 reported by Zachary Pincus.
1116
1120
1117 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1121 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1118
1122
1119 * Manual: thanks to a tip on proper color handling for Emacs, by
1123 * Manual: thanks to a tip on proper color handling for Emacs, by
1120 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1124 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1121
1125
1122 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1126 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1123 by applying the provided patch. Thanks to Liu Jin
1127 by applying the provided patch. Thanks to Liu Jin
1124 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1128 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1125 XEmacs/Linux, I'm trusting the submitter that it actually helps
1129 XEmacs/Linux, I'm trusting the submitter that it actually helps
1126 under win32/GNU Emacs. Will revisit if any problems are reported.
1130 under win32/GNU Emacs. Will revisit if any problems are reported.
1127
1131
1128 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1132 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1129
1133
1130 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1134 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1131 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1135 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1132
1136
1133 2006-03-12 Ville Vainio <vivainio@gmail.com>
1137 2006-03-12 Ville Vainio <vivainio@gmail.com>
1134
1138
1135 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1139 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1136 Torsten Marek.
1140 Torsten Marek.
1137
1141
1138 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1142 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1139
1143
1140 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1144 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1141 line ranges works again.
1145 line ranges works again.
1142
1146
1143 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1147 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1144
1148
1145 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1149 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1146 and friends, after a discussion with Zach Pincus on ipython-user.
1150 and friends, after a discussion with Zach Pincus on ipython-user.
1147 I'm not 100% sure, but after thinking about it quite a bit, it may
1151 I'm not 100% sure, but after thinking about it quite a bit, it may
1148 be OK. Testing with the multithreaded shells didn't reveal any
1152 be OK. Testing with the multithreaded shells didn't reveal any
1149 problems, but let's keep an eye out.
1153 problems, but let's keep an eye out.
1150
1154
1151 In the process, I fixed a few things which were calling
1155 In the process, I fixed a few things which were calling
1152 self.InteractiveTB() directly (like safe_execfile), which is a
1156 self.InteractiveTB() directly (like safe_execfile), which is a
1153 mistake: ALL exception reporting should be done by calling
1157 mistake: ALL exception reporting should be done by calling
1154 self.showtraceback(), which handles state and tab-completion and
1158 self.showtraceback(), which handles state and tab-completion and
1155 more.
1159 more.
1156
1160
1157 2006-03-01 Ville Vainio <vivainio@gmail.com>
1161 2006-03-01 Ville Vainio <vivainio@gmail.com>
1158
1162
1159 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1163 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1160 To use, do "from ipipe import *".
1164 To use, do "from ipipe import *".
1161
1165
1162 2006-02-24 Ville Vainio <vivainio@gmail.com>
1166 2006-02-24 Ville Vainio <vivainio@gmail.com>
1163
1167
1164 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1168 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1165 "cleanly" and safely than the older upgrade mechanism.
1169 "cleanly" and safely than the older upgrade mechanism.
1166
1170
1167 2006-02-21 Ville Vainio <vivainio@gmail.com>
1171 2006-02-21 Ville Vainio <vivainio@gmail.com>
1168
1172
1169 * Magic.py: %save works again.
1173 * Magic.py: %save works again.
1170
1174
1171 2006-02-15 Ville Vainio <vivainio@gmail.com>
1175 2006-02-15 Ville Vainio <vivainio@gmail.com>
1172
1176
1173 * Magic.py: %Pprint works again
1177 * Magic.py: %Pprint works again
1174
1178
1175 * Extensions/ipy_sane_defaults.py: Provide everything provided
1179 * Extensions/ipy_sane_defaults.py: Provide everything provided
1176 in default ipythonrc, to make it possible to have a completely empty
1180 in default ipythonrc, to make it possible to have a completely empty
1177 ipythonrc (and thus completely rc-file free configuration)
1181 ipythonrc (and thus completely rc-file free configuration)
1178
1182
1179 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1183 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1180
1184
1181 * IPython/hooks.py (editor): quote the call to the editor command,
1185 * IPython/hooks.py (editor): quote the call to the editor command,
1182 to allow commands with spaces in them. Problem noted by watching
1186 to allow commands with spaces in them. Problem noted by watching
1183 Ian Oswald's video about textpad under win32 at
1187 Ian Oswald's video about textpad under win32 at
1184 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1188 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1185
1189
1186 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1190 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1187 describing magics (we haven't used @ for a loong time).
1191 describing magics (we haven't used @ for a loong time).
1188
1192
1189 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1193 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1190 contributed by marienz to close
1194 contributed by marienz to close
1191 http://www.scipy.net/roundup/ipython/issue53.
1195 http://www.scipy.net/roundup/ipython/issue53.
1192
1196
1193 2006-02-10 Ville Vainio <vivainio@gmail.com>
1197 2006-02-10 Ville Vainio <vivainio@gmail.com>
1194
1198
1195 * genutils.py: getoutput now works in win32 too
1199 * genutils.py: getoutput now works in win32 too
1196
1200
1197 * completer.py: alias and magic completion only invoked
1201 * completer.py: alias and magic completion only invoked
1198 at the first "item" in the line, to avoid "cd %store"
1202 at the first "item" in the line, to avoid "cd %store"
1199 nonsense.
1203 nonsense.
1200
1204
1201 2006-02-09 Ville Vainio <vivainio@gmail.com>
1205 2006-02-09 Ville Vainio <vivainio@gmail.com>
1202
1206
1203 * test/*: Added a unit testing framework (finally).
1207 * test/*: Added a unit testing framework (finally).
1204 '%run runtests.py' to run test_*.
1208 '%run runtests.py' to run test_*.
1205
1209
1206 * ipapi.py: Exposed runlines and set_custom_exc
1210 * ipapi.py: Exposed runlines and set_custom_exc
1207
1211
1208 2006-02-07 Ville Vainio <vivainio@gmail.com>
1212 2006-02-07 Ville Vainio <vivainio@gmail.com>
1209
1213
1210 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1214 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1211 instead use "f(1 2)" as before.
1215 instead use "f(1 2)" as before.
1212
1216
1213 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1217 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1214
1218
1215 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1219 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1216 facilities, for demos processed by the IPython input filter
1220 facilities, for demos processed by the IPython input filter
1217 (IPythonDemo), and for running a script one-line-at-a-time as a
1221 (IPythonDemo), and for running a script one-line-at-a-time as a
1218 demo, both for pure Python (LineDemo) and for IPython-processed
1222 demo, both for pure Python (LineDemo) and for IPython-processed
1219 input (IPythonLineDemo). After a request by Dave Kohel, from the
1223 input (IPythonLineDemo). After a request by Dave Kohel, from the
1220 SAGE team.
1224 SAGE team.
1221 (Demo.edit): added an edit() method to the demo objects, to edit
1225 (Demo.edit): added an edit() method to the demo objects, to edit
1222 the in-memory copy of the last executed block.
1226 the in-memory copy of the last executed block.
1223
1227
1224 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1228 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1225 processing to %edit, %macro and %save. These commands can now be
1229 processing to %edit, %macro and %save. These commands can now be
1226 invoked on the unprocessed input as it was typed by the user
1230 invoked on the unprocessed input as it was typed by the user
1227 (without any prefilters applied). After requests by the SAGE team
1231 (without any prefilters applied). After requests by the SAGE team
1228 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1232 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1229
1233
1230 2006-02-01 Ville Vainio <vivainio@gmail.com>
1234 2006-02-01 Ville Vainio <vivainio@gmail.com>
1231
1235
1232 * setup.py, eggsetup.py: easy_install ipython==dev works
1236 * setup.py, eggsetup.py: easy_install ipython==dev works
1233 correctly now (on Linux)
1237 correctly now (on Linux)
1234
1238
1235 * ipy_user_conf,ipmaker: user config changes, removed spurious
1239 * ipy_user_conf,ipmaker: user config changes, removed spurious
1236 warnings
1240 warnings
1237
1241
1238 * iplib: if rc.banner is string, use it as is.
1242 * iplib: if rc.banner is string, use it as is.
1239
1243
1240 * Magic: %pycat accepts a string argument and pages it's contents.
1244 * Magic: %pycat accepts a string argument and pages it's contents.
1241
1245
1242
1246
1243 2006-01-30 Ville Vainio <vivainio@gmail.com>
1247 2006-01-30 Ville Vainio <vivainio@gmail.com>
1244
1248
1245 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1249 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1246 Now %store and bookmarks work through PickleShare, meaning that
1250 Now %store and bookmarks work through PickleShare, meaning that
1247 concurrent access is possible and all ipython sessions see the
1251 concurrent access is possible and all ipython sessions see the
1248 same database situation all the time, instead of snapshot of
1252 same database situation all the time, instead of snapshot of
1249 the situation when the session was started. Hence, %bookmark
1253 the situation when the session was started. Hence, %bookmark
1250 results are immediately accessible from othes sessions. The database
1254 results are immediately accessible from othes sessions. The database
1251 is also available for use by user extensions. See:
1255 is also available for use by user extensions. See:
1252 http://www.python.org/pypi/pickleshare
1256 http://www.python.org/pypi/pickleshare
1253
1257
1254 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1258 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1255
1259
1256 * aliases can now be %store'd
1260 * aliases can now be %store'd
1257
1261
1258 * path.py moved to Extensions so that pickleshare does not need
1262 * path.py moved to Extensions so that pickleshare does not need
1259 IPython-specific import. Extensions added to pythonpath right
1263 IPython-specific import. Extensions added to pythonpath right
1260 at __init__.
1264 at __init__.
1261
1265
1262 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1266 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1263 called with _ip.system and the pre-transformed command string.
1267 called with _ip.system and the pre-transformed command string.
1264
1268
1265 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1269 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1266
1270
1267 * IPython/iplib.py (interact): Fix that we were not catching
1271 * IPython/iplib.py (interact): Fix that we were not catching
1268 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1272 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1269 logic here had to change, but it's fixed now.
1273 logic here had to change, but it's fixed now.
1270
1274
1271 2006-01-29 Ville Vainio <vivainio@gmail.com>
1275 2006-01-29 Ville Vainio <vivainio@gmail.com>
1272
1276
1273 * iplib.py: Try to import pyreadline on Windows.
1277 * iplib.py: Try to import pyreadline on Windows.
1274
1278
1275 2006-01-27 Ville Vainio <vivainio@gmail.com>
1279 2006-01-27 Ville Vainio <vivainio@gmail.com>
1276
1280
1277 * iplib.py: Expose ipapi as _ip in builtin namespace.
1281 * iplib.py: Expose ipapi as _ip in builtin namespace.
1278 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1282 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1279 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1283 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1280 syntax now produce _ip.* variant of the commands.
1284 syntax now produce _ip.* variant of the commands.
1281
1285
1282 * "_ip.options().autoedit_syntax = 2" automatically throws
1286 * "_ip.options().autoedit_syntax = 2" automatically throws
1283 user to editor for syntax error correction without prompting.
1287 user to editor for syntax error correction without prompting.
1284
1288
1285 2006-01-27 Ville Vainio <vivainio@gmail.com>
1289 2006-01-27 Ville Vainio <vivainio@gmail.com>
1286
1290
1287 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1291 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1288 'ipython' at argv[0]) executed through command line.
1292 'ipython' at argv[0]) executed through command line.
1289 NOTE: this DEPRECATES calling ipython with multiple scripts
1293 NOTE: this DEPRECATES calling ipython with multiple scripts
1290 ("ipython a.py b.py c.py")
1294 ("ipython a.py b.py c.py")
1291
1295
1292 * iplib.py, hooks.py: Added configurable input prefilter,
1296 * iplib.py, hooks.py: Added configurable input prefilter,
1293 named 'input_prefilter'. See ext_rescapture.py for example
1297 named 'input_prefilter'. See ext_rescapture.py for example
1294 usage.
1298 usage.
1295
1299
1296 * ext_rescapture.py, Magic.py: Better system command output capture
1300 * ext_rescapture.py, Magic.py: Better system command output capture
1297 through 'var = !ls' (deprecates user-visible %sc). Same notation
1301 through 'var = !ls' (deprecates user-visible %sc). Same notation
1298 applies for magics, 'var = %alias' assigns alias list to var.
1302 applies for magics, 'var = %alias' assigns alias list to var.
1299
1303
1300 * ipapi.py: added meta() for accessing extension-usable data store.
1304 * ipapi.py: added meta() for accessing extension-usable data store.
1301
1305
1302 * iplib.py: added InteractiveShell.getapi(). New magics should be
1306 * iplib.py: added InteractiveShell.getapi(). New magics should be
1303 written doing self.getapi() instead of using the shell directly.
1307 written doing self.getapi() instead of using the shell directly.
1304
1308
1305 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1309 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1306 %store foo >> ~/myfoo.txt to store variables to files (in clean
1310 %store foo >> ~/myfoo.txt to store variables to files (in clean
1307 textual form, not a restorable pickle).
1311 textual form, not a restorable pickle).
1308
1312
1309 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1313 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1310
1314
1311 * usage.py, Magic.py: added %quickref
1315 * usage.py, Magic.py: added %quickref
1312
1316
1313 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1317 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1314
1318
1315 * GetoptErrors when invoking magics etc. with wrong args
1319 * GetoptErrors when invoking magics etc. with wrong args
1316 are now more helpful:
1320 are now more helpful:
1317 GetoptError: option -l not recognized (allowed: "qb" )
1321 GetoptError: option -l not recognized (allowed: "qb" )
1318
1322
1319 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1323 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1320
1324
1321 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1325 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1322 computationally intensive blocks don't appear to stall the demo.
1326 computationally intensive blocks don't appear to stall the demo.
1323
1327
1324 2006-01-24 Ville Vainio <vivainio@gmail.com>
1328 2006-01-24 Ville Vainio <vivainio@gmail.com>
1325
1329
1326 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1330 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1327 value to manipulate resulting history entry.
1331 value to manipulate resulting history entry.
1328
1332
1329 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1333 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1330 to instance methods of IPApi class, to make extending an embedded
1334 to instance methods of IPApi class, to make extending an embedded
1331 IPython feasible. See ext_rehashdir.py for example usage.
1335 IPython feasible. See ext_rehashdir.py for example usage.
1332
1336
1333 * Merged 1071-1076 from branches/0.7.1
1337 * Merged 1071-1076 from branches/0.7.1
1334
1338
1335
1339
1336 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1340 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1337
1341
1338 * tools/release (daystamp): Fix build tools to use the new
1342 * tools/release (daystamp): Fix build tools to use the new
1339 eggsetup.py script to build lightweight eggs.
1343 eggsetup.py script to build lightweight eggs.
1340
1344
1341 * Applied changesets 1062 and 1064 before 0.7.1 release.
1345 * Applied changesets 1062 and 1064 before 0.7.1 release.
1342
1346
1343 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1347 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1344 see the raw input history (without conversions like %ls ->
1348 see the raw input history (without conversions like %ls ->
1345 ipmagic("ls")). After a request from W. Stein, SAGE
1349 ipmagic("ls")). After a request from W. Stein, SAGE
1346 (http://modular.ucsd.edu/sage) developer. This information is
1350 (http://modular.ucsd.edu/sage) developer. This information is
1347 stored in the input_hist_raw attribute of the IPython instance, so
1351 stored in the input_hist_raw attribute of the IPython instance, so
1348 developers can access it if needed (it's an InputList instance).
1352 developers can access it if needed (it's an InputList instance).
1349
1353
1350 * Versionstring = 0.7.2.svn
1354 * Versionstring = 0.7.2.svn
1351
1355
1352 * eggsetup.py: A separate script for constructing eggs, creates
1356 * eggsetup.py: A separate script for constructing eggs, creates
1353 proper launch scripts even on Windows (an .exe file in
1357 proper launch scripts even on Windows (an .exe file in
1354 \python24\scripts).
1358 \python24\scripts).
1355
1359
1356 * ipapi.py: launch_new_instance, launch entry point needed for the
1360 * ipapi.py: launch_new_instance, launch entry point needed for the
1357 egg.
1361 egg.
1358
1362
1359 2006-01-23 Ville Vainio <vivainio@gmail.com>
1363 2006-01-23 Ville Vainio <vivainio@gmail.com>
1360
1364
1361 * Added %cpaste magic for pasting python code
1365 * Added %cpaste magic for pasting python code
1362
1366
1363 2006-01-22 Ville Vainio <vivainio@gmail.com>
1367 2006-01-22 Ville Vainio <vivainio@gmail.com>
1364
1368
1365 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1369 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1366
1370
1367 * Versionstring = 0.7.2.svn
1371 * Versionstring = 0.7.2.svn
1368
1372
1369 * eggsetup.py: A separate script for constructing eggs, creates
1373 * eggsetup.py: A separate script for constructing eggs, creates
1370 proper launch scripts even on Windows (an .exe file in
1374 proper launch scripts even on Windows (an .exe file in
1371 \python24\scripts).
1375 \python24\scripts).
1372
1376
1373 * ipapi.py: launch_new_instance, launch entry point needed for the
1377 * ipapi.py: launch_new_instance, launch entry point needed for the
1374 egg.
1378 egg.
1375
1379
1376 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1380 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1377
1381
1378 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1382 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1379 %pfile foo would print the file for foo even if it was a binary.
1383 %pfile foo would print the file for foo even if it was a binary.
1380 Now, extensions '.so' and '.dll' are skipped.
1384 Now, extensions '.so' and '.dll' are skipped.
1381
1385
1382 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1386 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1383 bug, where macros would fail in all threaded modes. I'm not 100%
1387 bug, where macros would fail in all threaded modes. I'm not 100%
1384 sure, so I'm going to put out an rc instead of making a release
1388 sure, so I'm going to put out an rc instead of making a release
1385 today, and wait for feedback for at least a few days.
1389 today, and wait for feedback for at least a few days.
1386
1390
1387 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1391 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1388 it...) the handling of pasting external code with autoindent on.
1392 it...) the handling of pasting external code with autoindent on.
1389 To get out of a multiline input, the rule will appear for most
1393 To get out of a multiline input, the rule will appear for most
1390 users unchanged: two blank lines or change the indent level
1394 users unchanged: two blank lines or change the indent level
1391 proposed by IPython. But there is a twist now: you can
1395 proposed by IPython. But there is a twist now: you can
1392 add/subtract only *one or two spaces*. If you add/subtract three
1396 add/subtract only *one or two spaces*. If you add/subtract three
1393 or more (unless you completely delete the line), IPython will
1397 or more (unless you completely delete the line), IPython will
1394 accept that line, and you'll need to enter a second one of pure
1398 accept that line, and you'll need to enter a second one of pure
1395 whitespace. I know it sounds complicated, but I can't find a
1399 whitespace. I know it sounds complicated, but I can't find a
1396 different solution that covers all the cases, with the right
1400 different solution that covers all the cases, with the right
1397 heuristics. Hopefully in actual use, nobody will really notice
1401 heuristics. Hopefully in actual use, nobody will really notice
1398 all these strange rules and things will 'just work'.
1402 all these strange rules and things will 'just work'.
1399
1403
1400 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1404 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1401
1405
1402 * IPython/iplib.py (interact): catch exceptions which can be
1406 * IPython/iplib.py (interact): catch exceptions which can be
1403 triggered asynchronously by signal handlers. Thanks to an
1407 triggered asynchronously by signal handlers. Thanks to an
1404 automatic crash report, submitted by Colin Kingsley
1408 automatic crash report, submitted by Colin Kingsley
1405 <tercel-AT-gentoo.org>.
1409 <tercel-AT-gentoo.org>.
1406
1410
1407 2006-01-20 Ville Vainio <vivainio@gmail.com>
1411 2006-01-20 Ville Vainio <vivainio@gmail.com>
1408
1412
1409 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1413 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1410 (%rehashdir, very useful, try it out) of how to extend ipython
1414 (%rehashdir, very useful, try it out) of how to extend ipython
1411 with new magics. Also added Extensions dir to pythonpath to make
1415 with new magics. Also added Extensions dir to pythonpath to make
1412 importing extensions easy.
1416 importing extensions easy.
1413
1417
1414 * %store now complains when trying to store interactively declared
1418 * %store now complains when trying to store interactively declared
1415 classes / instances of those classes.
1419 classes / instances of those classes.
1416
1420
1417 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1421 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1418 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1422 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1419 if they exist, and ipy_user_conf.py with some defaults is created for
1423 if they exist, and ipy_user_conf.py with some defaults is created for
1420 the user.
1424 the user.
1421
1425
1422 * Startup rehashing done by the config file, not InterpreterExec.
1426 * Startup rehashing done by the config file, not InterpreterExec.
1423 This means system commands are available even without selecting the
1427 This means system commands are available even without selecting the
1424 pysh profile. It's the sensible default after all.
1428 pysh profile. It's the sensible default after all.
1425
1429
1426 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1430 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1427
1431
1428 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1432 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1429 multiline code with autoindent on working. But I am really not
1433 multiline code with autoindent on working. But I am really not
1430 sure, so this needs more testing. Will commit a debug-enabled
1434 sure, so this needs more testing. Will commit a debug-enabled
1431 version for now, while I test it some more, so that Ville and
1435 version for now, while I test it some more, so that Ville and
1432 others may also catch any problems. Also made
1436 others may also catch any problems. Also made
1433 self.indent_current_str() a method, to ensure that there's no
1437 self.indent_current_str() a method, to ensure that there's no
1434 chance of the indent space count and the corresponding string
1438 chance of the indent space count and the corresponding string
1435 falling out of sync. All code needing the string should just call
1439 falling out of sync. All code needing the string should just call
1436 the method.
1440 the method.
1437
1441
1438 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1442 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1439
1443
1440 * IPython/Magic.py (magic_edit): fix check for when users don't
1444 * IPython/Magic.py (magic_edit): fix check for when users don't
1441 save their output files, the try/except was in the wrong section.
1445 save their output files, the try/except was in the wrong section.
1442
1446
1443 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1447 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1444
1448
1445 * IPython/Magic.py (magic_run): fix __file__ global missing from
1449 * IPython/Magic.py (magic_run): fix __file__ global missing from
1446 script's namespace when executed via %run. After a report by
1450 script's namespace when executed via %run. After a report by
1447 Vivian.
1451 Vivian.
1448
1452
1449 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1453 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1450 when using python 2.4. The parent constructor changed in 2.4, and
1454 when using python 2.4. The parent constructor changed in 2.4, and
1451 we need to track it directly (we can't call it, as it messes up
1455 we need to track it directly (we can't call it, as it messes up
1452 readline and tab-completion inside our pdb would stop working).
1456 readline and tab-completion inside our pdb would stop working).
1453 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1457 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1454
1458
1455 2006-01-16 Ville Vainio <vivainio@gmail.com>
1459 2006-01-16 Ville Vainio <vivainio@gmail.com>
1456
1460
1457 * Ipython/magic.py: Reverted back to old %edit functionality
1461 * Ipython/magic.py: Reverted back to old %edit functionality
1458 that returns file contents on exit.
1462 that returns file contents on exit.
1459
1463
1460 * IPython/path.py: Added Jason Orendorff's "path" module to
1464 * IPython/path.py: Added Jason Orendorff's "path" module to
1461 IPython tree, http://www.jorendorff.com/articles/python/path/.
1465 IPython tree, http://www.jorendorff.com/articles/python/path/.
1462 You can get path objects conveniently through %sc, and !!, e.g.:
1466 You can get path objects conveniently through %sc, and !!, e.g.:
1463 sc files=ls
1467 sc files=ls
1464 for p in files.paths: # or files.p
1468 for p in files.paths: # or files.p
1465 print p,p.mtime
1469 print p,p.mtime
1466
1470
1467 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1471 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1468 now work again without considering the exclusion regexp -
1472 now work again without considering the exclusion regexp -
1469 hence, things like ',foo my/path' turn to 'foo("my/path")'
1473 hence, things like ',foo my/path' turn to 'foo("my/path")'
1470 instead of syntax error.
1474 instead of syntax error.
1471
1475
1472
1476
1473 2006-01-14 Ville Vainio <vivainio@gmail.com>
1477 2006-01-14 Ville Vainio <vivainio@gmail.com>
1474
1478
1475 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1479 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1476 ipapi decorators for python 2.4 users, options() provides access to rc
1480 ipapi decorators for python 2.4 users, options() provides access to rc
1477 data.
1481 data.
1478
1482
1479 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1483 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1480 as path separators (even on Linux ;-). Space character after
1484 as path separators (even on Linux ;-). Space character after
1481 backslash (as yielded by tab completer) is still space;
1485 backslash (as yielded by tab completer) is still space;
1482 "%cd long\ name" works as expected.
1486 "%cd long\ name" works as expected.
1483
1487
1484 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1488 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1485 as "chain of command", with priority. API stays the same,
1489 as "chain of command", with priority. API stays the same,
1486 TryNext exception raised by a hook function signals that
1490 TryNext exception raised by a hook function signals that
1487 current hook failed and next hook should try handling it, as
1491 current hook failed and next hook should try handling it, as
1488 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1492 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1489 requested configurable display hook, which is now implemented.
1493 requested configurable display hook, which is now implemented.
1490
1494
1491 2006-01-13 Ville Vainio <vivainio@gmail.com>
1495 2006-01-13 Ville Vainio <vivainio@gmail.com>
1492
1496
1493 * IPython/platutils*.py: platform specific utility functions,
1497 * IPython/platutils*.py: platform specific utility functions,
1494 so far only set_term_title is implemented (change terminal
1498 so far only set_term_title is implemented (change terminal
1495 label in windowing systems). %cd now changes the title to
1499 label in windowing systems). %cd now changes the title to
1496 current dir.
1500 current dir.
1497
1501
1498 * IPython/Release.py: Added myself to "authors" list,
1502 * IPython/Release.py: Added myself to "authors" list,
1499 had to create new files.
1503 had to create new files.
1500
1504
1501 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1505 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1502 shell escape; not a known bug but had potential to be one in the
1506 shell escape; not a known bug but had potential to be one in the
1503 future.
1507 future.
1504
1508
1505 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1509 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1506 extension API for IPython! See the module for usage example. Fix
1510 extension API for IPython! See the module for usage example. Fix
1507 OInspect for docstring-less magic functions.
1511 OInspect for docstring-less magic functions.
1508
1512
1509
1513
1510 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1514 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1511
1515
1512 * IPython/iplib.py (raw_input): temporarily deactivate all
1516 * IPython/iplib.py (raw_input): temporarily deactivate all
1513 attempts at allowing pasting of code with autoindent on. It
1517 attempts at allowing pasting of code with autoindent on. It
1514 introduced bugs (reported by Prabhu) and I can't seem to find a
1518 introduced bugs (reported by Prabhu) and I can't seem to find a
1515 robust combination which works in all cases. Will have to revisit
1519 robust combination which works in all cases. Will have to revisit
1516 later.
1520 later.
1517
1521
1518 * IPython/genutils.py: remove isspace() function. We've dropped
1522 * IPython/genutils.py: remove isspace() function. We've dropped
1519 2.2 compatibility, so it's OK to use the string method.
1523 2.2 compatibility, so it's OK to use the string method.
1520
1524
1521 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1525 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1522
1526
1523 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1527 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1524 matching what NOT to autocall on, to include all python binary
1528 matching what NOT to autocall on, to include all python binary
1525 operators (including things like 'and', 'or', 'is' and 'in').
1529 operators (including things like 'and', 'or', 'is' and 'in').
1526 Prompted by a bug report on 'foo & bar', but I realized we had
1530 Prompted by a bug report on 'foo & bar', but I realized we had
1527 many more potential bug cases with other operators. The regexp is
1531 many more potential bug cases with other operators. The regexp is
1528 self.re_exclude_auto, it's fairly commented.
1532 self.re_exclude_auto, it's fairly commented.
1529
1533
1530 2006-01-12 Ville Vainio <vivainio@gmail.com>
1534 2006-01-12 Ville Vainio <vivainio@gmail.com>
1531
1535
1532 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1536 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1533 Prettified and hardened string/backslash quoting with ipsystem(),
1537 Prettified and hardened string/backslash quoting with ipsystem(),
1534 ipalias() and ipmagic(). Now even \ characters are passed to
1538 ipalias() and ipmagic(). Now even \ characters are passed to
1535 %magics, !shell escapes and aliases exactly as they are in the
1539 %magics, !shell escapes and aliases exactly as they are in the
1536 ipython command line. Should improve backslash experience,
1540 ipython command line. Should improve backslash experience,
1537 particularly in Windows (path delimiter for some commands that
1541 particularly in Windows (path delimiter for some commands that
1538 won't understand '/'), but Unix benefits as well (regexps). %cd
1542 won't understand '/'), but Unix benefits as well (regexps). %cd
1539 magic still doesn't support backslash path delimiters, though. Also
1543 magic still doesn't support backslash path delimiters, though. Also
1540 deleted all pretense of supporting multiline command strings in
1544 deleted all pretense of supporting multiline command strings in
1541 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1545 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1542
1546
1543 * doc/build_doc_instructions.txt added. Documentation on how to
1547 * doc/build_doc_instructions.txt added. Documentation on how to
1544 use doc/update_manual.py, added yesterday. Both files contributed
1548 use doc/update_manual.py, added yesterday. Both files contributed
1545 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1549 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1546 doc/*.sh for deprecation at a later date.
1550 doc/*.sh for deprecation at a later date.
1547
1551
1548 * /ipython.py Added ipython.py to root directory for
1552 * /ipython.py Added ipython.py to root directory for
1549 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1553 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1550 ipython.py) and development convenience (no need to keep doing
1554 ipython.py) and development convenience (no need to keep doing
1551 "setup.py install" between changes).
1555 "setup.py install" between changes).
1552
1556
1553 * Made ! and !! shell escapes work (again) in multiline expressions:
1557 * Made ! and !! shell escapes work (again) in multiline expressions:
1554 if 1:
1558 if 1:
1555 !ls
1559 !ls
1556 !!ls
1560 !!ls
1557
1561
1558 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1562 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1559
1563
1560 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1564 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1561 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1565 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1562 module in case-insensitive installation. Was causing crashes
1566 module in case-insensitive installation. Was causing crashes
1563 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1567 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1564
1568
1565 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1569 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1566 <marienz-AT-gentoo.org>, closes
1570 <marienz-AT-gentoo.org>, closes
1567 http://www.scipy.net/roundup/ipython/issue51.
1571 http://www.scipy.net/roundup/ipython/issue51.
1568
1572
1569 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1573 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1570
1574
1571 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1575 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1572 problem of excessive CPU usage under *nix and keyboard lag under
1576 problem of excessive CPU usage under *nix and keyboard lag under
1573 win32.
1577 win32.
1574
1578
1575 2006-01-10 *** Released version 0.7.0
1579 2006-01-10 *** Released version 0.7.0
1576
1580
1577 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1581 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1578
1582
1579 * IPython/Release.py (revision): tag version number to 0.7.0,
1583 * IPython/Release.py (revision): tag version number to 0.7.0,
1580 ready for release.
1584 ready for release.
1581
1585
1582 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1586 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1583 it informs the user of the name of the temp. file used. This can
1587 it informs the user of the name of the temp. file used. This can
1584 help if you decide later to reuse that same file, so you know
1588 help if you decide later to reuse that same file, so you know
1585 where to copy the info from.
1589 where to copy the info from.
1586
1590
1587 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1591 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1588
1592
1589 * setup_bdist_egg.py: little script to build an egg. Added
1593 * setup_bdist_egg.py: little script to build an egg. Added
1590 support in the release tools as well.
1594 support in the release tools as well.
1591
1595
1592 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1596 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1593
1597
1594 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1598 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1595 version selection (new -wxversion command line and ipythonrc
1599 version selection (new -wxversion command line and ipythonrc
1596 parameter). Patch contributed by Arnd Baecker
1600 parameter). Patch contributed by Arnd Baecker
1597 <arnd.baecker-AT-web.de>.
1601 <arnd.baecker-AT-web.de>.
1598
1602
1599 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1603 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1600 embedded instances, for variables defined at the interactive
1604 embedded instances, for variables defined at the interactive
1601 prompt of the embedded ipython. Reported by Arnd.
1605 prompt of the embedded ipython. Reported by Arnd.
1602
1606
1603 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1607 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1604 it can be used as a (stateful) toggle, or with a direct parameter.
1608 it can be used as a (stateful) toggle, or with a direct parameter.
1605
1609
1606 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1610 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1607 could be triggered in certain cases and cause the traceback
1611 could be triggered in certain cases and cause the traceback
1608 printer not to work.
1612 printer not to work.
1609
1613
1610 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1614 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1611
1615
1612 * IPython/iplib.py (_should_recompile): Small fix, closes
1616 * IPython/iplib.py (_should_recompile): Small fix, closes
1613 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1617 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1614
1618
1615 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1619 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1616
1620
1617 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1621 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1618 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1622 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1619 Moad for help with tracking it down.
1623 Moad for help with tracking it down.
1620
1624
1621 * IPython/iplib.py (handle_auto): fix autocall handling for
1625 * IPython/iplib.py (handle_auto): fix autocall handling for
1622 objects which support BOTH __getitem__ and __call__ (so that f [x]
1626 objects which support BOTH __getitem__ and __call__ (so that f [x]
1623 is left alone, instead of becoming f([x]) automatically).
1627 is left alone, instead of becoming f([x]) automatically).
1624
1628
1625 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1629 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1626 Ville's patch.
1630 Ville's patch.
1627
1631
1628 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1632 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1629
1633
1630 * IPython/iplib.py (handle_auto): changed autocall semantics to
1634 * IPython/iplib.py (handle_auto): changed autocall semantics to
1631 include 'smart' mode, where the autocall transformation is NOT
1635 include 'smart' mode, where the autocall transformation is NOT
1632 applied if there are no arguments on the line. This allows you to
1636 applied if there are no arguments on the line. This allows you to
1633 just type 'foo' if foo is a callable to see its internal form,
1637 just type 'foo' if foo is a callable to see its internal form,
1634 instead of having it called with no arguments (typically a
1638 instead of having it called with no arguments (typically a
1635 mistake). The old 'full' autocall still exists: for that, you
1639 mistake). The old 'full' autocall still exists: for that, you
1636 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1640 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1637
1641
1638 * IPython/completer.py (Completer.attr_matches): add
1642 * IPython/completer.py (Completer.attr_matches): add
1639 tab-completion support for Enthoughts' traits. After a report by
1643 tab-completion support for Enthoughts' traits. After a report by
1640 Arnd and a patch by Prabhu.
1644 Arnd and a patch by Prabhu.
1641
1645
1642 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1646 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1643
1647
1644 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1648 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1645 Schmolck's patch to fix inspect.getinnerframes().
1649 Schmolck's patch to fix inspect.getinnerframes().
1646
1650
1647 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1651 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1648 for embedded instances, regarding handling of namespaces and items
1652 for embedded instances, regarding handling of namespaces and items
1649 added to the __builtin__ one. Multiple embedded instances and
1653 added to the __builtin__ one. Multiple embedded instances and
1650 recursive embeddings should work better now (though I'm not sure
1654 recursive embeddings should work better now (though I'm not sure
1651 I've got all the corner cases fixed, that code is a bit of a brain
1655 I've got all the corner cases fixed, that code is a bit of a brain
1652 twister).
1656 twister).
1653
1657
1654 * IPython/Magic.py (magic_edit): added support to edit in-memory
1658 * IPython/Magic.py (magic_edit): added support to edit in-memory
1655 macros (automatically creates the necessary temp files). %edit
1659 macros (automatically creates the necessary temp files). %edit
1656 also doesn't return the file contents anymore, it's just noise.
1660 also doesn't return the file contents anymore, it's just noise.
1657
1661
1658 * IPython/completer.py (Completer.attr_matches): revert change to
1662 * IPython/completer.py (Completer.attr_matches): revert change to
1659 complete only on attributes listed in __all__. I realized it
1663 complete only on attributes listed in __all__. I realized it
1660 cripples the tab-completion system as a tool for exploring the
1664 cripples the tab-completion system as a tool for exploring the
1661 internals of unknown libraries (it renders any non-__all__
1665 internals of unknown libraries (it renders any non-__all__
1662 attribute off-limits). I got bit by this when trying to see
1666 attribute off-limits). I got bit by this when trying to see
1663 something inside the dis module.
1667 something inside the dis module.
1664
1668
1665 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1669 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1666
1670
1667 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1671 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1668 namespace for users and extension writers to hold data in. This
1672 namespace for users and extension writers to hold data in. This
1669 follows the discussion in
1673 follows the discussion in
1670 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1674 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1671
1675
1672 * IPython/completer.py (IPCompleter.complete): small patch to help
1676 * IPython/completer.py (IPCompleter.complete): small patch to help
1673 tab-completion under Emacs, after a suggestion by John Barnard
1677 tab-completion under Emacs, after a suggestion by John Barnard
1674 <barnarj-AT-ccf.org>.
1678 <barnarj-AT-ccf.org>.
1675
1679
1676 * IPython/Magic.py (Magic.extract_input_slices): added support for
1680 * IPython/Magic.py (Magic.extract_input_slices): added support for
1677 the slice notation in magics to use N-M to represent numbers N...M
1681 the slice notation in magics to use N-M to represent numbers N...M
1678 (closed endpoints). This is used by %macro and %save.
1682 (closed endpoints). This is used by %macro and %save.
1679
1683
1680 * IPython/completer.py (Completer.attr_matches): for modules which
1684 * IPython/completer.py (Completer.attr_matches): for modules which
1681 define __all__, complete only on those. After a patch by Jeffrey
1685 define __all__, complete only on those. After a patch by Jeffrey
1682 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1686 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1683 speed up this routine.
1687 speed up this routine.
1684
1688
1685 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1689 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1686 don't know if this is the end of it, but the behavior now is
1690 don't know if this is the end of it, but the behavior now is
1687 certainly much more correct. Note that coupled with macros,
1691 certainly much more correct. Note that coupled with macros,
1688 slightly surprising (at first) behavior may occur: a macro will in
1692 slightly surprising (at first) behavior may occur: a macro will in
1689 general expand to multiple lines of input, so upon exiting, the
1693 general expand to multiple lines of input, so upon exiting, the
1690 in/out counters will both be bumped by the corresponding amount
1694 in/out counters will both be bumped by the corresponding amount
1691 (as if the macro's contents had been typed interactively). Typing
1695 (as if the macro's contents had been typed interactively). Typing
1692 %hist will reveal the intermediate (silently processed) lines.
1696 %hist will reveal the intermediate (silently processed) lines.
1693
1697
1694 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1698 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1695 pickle to fail (%run was overwriting __main__ and not restoring
1699 pickle to fail (%run was overwriting __main__ and not restoring
1696 it, but pickle relies on __main__ to operate).
1700 it, but pickle relies on __main__ to operate).
1697
1701
1698 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1702 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1699 using properties, but forgot to make the main InteractiveShell
1703 using properties, but forgot to make the main InteractiveShell
1700 class a new-style class. Properties fail silently, and
1704 class a new-style class. Properties fail silently, and
1701 mysteriously, with old-style class (getters work, but
1705 mysteriously, with old-style class (getters work, but
1702 setters don't do anything).
1706 setters don't do anything).
1703
1707
1704 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1708 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1705
1709
1706 * IPython/Magic.py (magic_history): fix history reporting bug (I
1710 * IPython/Magic.py (magic_history): fix history reporting bug (I
1707 know some nasties are still there, I just can't seem to find a
1711 know some nasties are still there, I just can't seem to find a
1708 reproducible test case to track them down; the input history is
1712 reproducible test case to track them down; the input history is
1709 falling out of sync...)
1713 falling out of sync...)
1710
1714
1711 * IPython/iplib.py (handle_shell_escape): fix bug where both
1715 * IPython/iplib.py (handle_shell_escape): fix bug where both
1712 aliases and system accesses where broken for indented code (such
1716 aliases and system accesses where broken for indented code (such
1713 as loops).
1717 as loops).
1714
1718
1715 * IPython/genutils.py (shell): fix small but critical bug for
1719 * IPython/genutils.py (shell): fix small but critical bug for
1716 win32 system access.
1720 win32 system access.
1717
1721
1718 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1722 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1719
1723
1720 * IPython/iplib.py (showtraceback): remove use of the
1724 * IPython/iplib.py (showtraceback): remove use of the
1721 sys.last_{type/value/traceback} structures, which are non
1725 sys.last_{type/value/traceback} structures, which are non
1722 thread-safe.
1726 thread-safe.
1723 (_prefilter): change control flow to ensure that we NEVER
1727 (_prefilter): change control flow to ensure that we NEVER
1724 introspect objects when autocall is off. This will guarantee that
1728 introspect objects when autocall is off. This will guarantee that
1725 having an input line of the form 'x.y', where access to attribute
1729 having an input line of the form 'x.y', where access to attribute
1726 'y' has side effects, doesn't trigger the side effect TWICE. It
1730 'y' has side effects, doesn't trigger the side effect TWICE. It
1727 is important to note that, with autocall on, these side effects
1731 is important to note that, with autocall on, these side effects
1728 can still happen.
1732 can still happen.
1729 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1733 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1730 trio. IPython offers these three kinds of special calls which are
1734 trio. IPython offers these three kinds of special calls which are
1731 not python code, and it's a good thing to have their call method
1735 not python code, and it's a good thing to have their call method
1732 be accessible as pure python functions (not just special syntax at
1736 be accessible as pure python functions (not just special syntax at
1733 the command line). It gives us a better internal implementation
1737 the command line). It gives us a better internal implementation
1734 structure, as well as exposing these for user scripting more
1738 structure, as well as exposing these for user scripting more
1735 cleanly.
1739 cleanly.
1736
1740
1737 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1741 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1738 file. Now that they'll be more likely to be used with the
1742 file. Now that they'll be more likely to be used with the
1739 persistance system (%store), I want to make sure their module path
1743 persistance system (%store), I want to make sure their module path
1740 doesn't change in the future, so that we don't break things for
1744 doesn't change in the future, so that we don't break things for
1741 users' persisted data.
1745 users' persisted data.
1742
1746
1743 * IPython/iplib.py (autoindent_update): move indentation
1747 * IPython/iplib.py (autoindent_update): move indentation
1744 management into the _text_ processing loop, not the keyboard
1748 management into the _text_ processing loop, not the keyboard
1745 interactive one. This is necessary to correctly process non-typed
1749 interactive one. This is necessary to correctly process non-typed
1746 multiline input (such as macros).
1750 multiline input (such as macros).
1747
1751
1748 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1752 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1749 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1753 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1750 which was producing problems in the resulting manual.
1754 which was producing problems in the resulting manual.
1751 (magic_whos): improve reporting of instances (show their class,
1755 (magic_whos): improve reporting of instances (show their class,
1752 instead of simply printing 'instance' which isn't terribly
1756 instead of simply printing 'instance' which isn't terribly
1753 informative).
1757 informative).
1754
1758
1755 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1759 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1756 (minor mods) to support network shares under win32.
1760 (minor mods) to support network shares under win32.
1757
1761
1758 * IPython/winconsole.py (get_console_size): add new winconsole
1762 * IPython/winconsole.py (get_console_size): add new winconsole
1759 module and fixes to page_dumb() to improve its behavior under
1763 module and fixes to page_dumb() to improve its behavior under
1760 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1764 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1761
1765
1762 * IPython/Magic.py (Macro): simplified Macro class to just
1766 * IPython/Magic.py (Macro): simplified Macro class to just
1763 subclass list. We've had only 2.2 compatibility for a very long
1767 subclass list. We've had only 2.2 compatibility for a very long
1764 time, yet I was still avoiding subclassing the builtin types. No
1768 time, yet I was still avoiding subclassing the builtin types. No
1765 more (I'm also starting to use properties, though I won't shift to
1769 more (I'm also starting to use properties, though I won't shift to
1766 2.3-specific features quite yet).
1770 2.3-specific features quite yet).
1767 (magic_store): added Ville's patch for lightweight variable
1771 (magic_store): added Ville's patch for lightweight variable
1768 persistence, after a request on the user list by Matt Wilkie
1772 persistence, after a request on the user list by Matt Wilkie
1769 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1773 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1770 details.
1774 details.
1771
1775
1772 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1776 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1773 changed the default logfile name from 'ipython.log' to
1777 changed the default logfile name from 'ipython.log' to
1774 'ipython_log.py'. These logs are real python files, and now that
1778 'ipython_log.py'. These logs are real python files, and now that
1775 we have much better multiline support, people are more likely to
1779 we have much better multiline support, people are more likely to
1776 want to use them as such. Might as well name them correctly.
1780 want to use them as such. Might as well name them correctly.
1777
1781
1778 * IPython/Magic.py: substantial cleanup. While we can't stop
1782 * IPython/Magic.py: substantial cleanup. While we can't stop
1779 using magics as mixins, due to the existing customizations 'out
1783 using magics as mixins, due to the existing customizations 'out
1780 there' which rely on the mixin naming conventions, at least I
1784 there' which rely on the mixin naming conventions, at least I
1781 cleaned out all cross-class name usage. So once we are OK with
1785 cleaned out all cross-class name usage. So once we are OK with
1782 breaking compatibility, the two systems can be separated.
1786 breaking compatibility, the two systems can be separated.
1783
1787
1784 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1788 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1785 anymore, and the class is a fair bit less hideous as well. New
1789 anymore, and the class is a fair bit less hideous as well. New
1786 features were also introduced: timestamping of input, and logging
1790 features were also introduced: timestamping of input, and logging
1787 of output results. These are user-visible with the -t and -o
1791 of output results. These are user-visible with the -t and -o
1788 options to %logstart. Closes
1792 options to %logstart. Closes
1789 http://www.scipy.net/roundup/ipython/issue11 and a request by
1793 http://www.scipy.net/roundup/ipython/issue11 and a request by
1790 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1794 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1791
1795
1792 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1796 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1793
1797
1794 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1798 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1795 better handle backslashes in paths. See the thread 'More Windows
1799 better handle backslashes in paths. See the thread 'More Windows
1796 questions part 2 - \/ characters revisited' on the iypthon user
1800 questions part 2 - \/ characters revisited' on the iypthon user
1797 list:
1801 list:
1798 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1802 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1799
1803
1800 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1804 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1801
1805
1802 (InteractiveShell.__init__): change threaded shells to not use the
1806 (InteractiveShell.__init__): change threaded shells to not use the
1803 ipython crash handler. This was causing more problems than not,
1807 ipython crash handler. This was causing more problems than not,
1804 as exceptions in the main thread (GUI code, typically) would
1808 as exceptions in the main thread (GUI code, typically) would
1805 always show up as a 'crash', when they really weren't.
1809 always show up as a 'crash', when they really weren't.
1806
1810
1807 The colors and exception mode commands (%colors/%xmode) have been
1811 The colors and exception mode commands (%colors/%xmode) have been
1808 synchronized to also take this into account, so users can get
1812 synchronized to also take this into account, so users can get
1809 verbose exceptions for their threaded code as well. I also added
1813 verbose exceptions for their threaded code as well. I also added
1810 support for activating pdb inside this exception handler as well,
1814 support for activating pdb inside this exception handler as well,
1811 so now GUI authors can use IPython's enhanced pdb at runtime.
1815 so now GUI authors can use IPython's enhanced pdb at runtime.
1812
1816
1813 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1817 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1814 true by default, and add it to the shipped ipythonrc file. Since
1818 true by default, and add it to the shipped ipythonrc file. Since
1815 this asks the user before proceeding, I think it's OK to make it
1819 this asks the user before proceeding, I think it's OK to make it
1816 true by default.
1820 true by default.
1817
1821
1818 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1822 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1819 of the previous special-casing of input in the eval loop. I think
1823 of the previous special-casing of input in the eval loop. I think
1820 this is cleaner, as they really are commands and shouldn't have
1824 this is cleaner, as they really are commands and shouldn't have
1821 a special role in the middle of the core code.
1825 a special role in the middle of the core code.
1822
1826
1823 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1827 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1824
1828
1825 * IPython/iplib.py (edit_syntax_error): added support for
1829 * IPython/iplib.py (edit_syntax_error): added support for
1826 automatically reopening the editor if the file had a syntax error
1830 automatically reopening the editor if the file had a syntax error
1827 in it. Thanks to scottt who provided the patch at:
1831 in it. Thanks to scottt who provided the patch at:
1828 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1832 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1829 version committed).
1833 version committed).
1830
1834
1831 * IPython/iplib.py (handle_normal): add suport for multi-line
1835 * IPython/iplib.py (handle_normal): add suport for multi-line
1832 input with emtpy lines. This fixes
1836 input with emtpy lines. This fixes
1833 http://www.scipy.net/roundup/ipython/issue43 and a similar
1837 http://www.scipy.net/roundup/ipython/issue43 and a similar
1834 discussion on the user list.
1838 discussion on the user list.
1835
1839
1836 WARNING: a behavior change is necessarily introduced to support
1840 WARNING: a behavior change is necessarily introduced to support
1837 blank lines: now a single blank line with whitespace does NOT
1841 blank lines: now a single blank line with whitespace does NOT
1838 break the input loop, which means that when autoindent is on, by
1842 break the input loop, which means that when autoindent is on, by
1839 default hitting return on the next (indented) line does NOT exit.
1843 default hitting return on the next (indented) line does NOT exit.
1840
1844
1841 Instead, to exit a multiline input you can either have:
1845 Instead, to exit a multiline input you can either have:
1842
1846
1843 - TWO whitespace lines (just hit return again), or
1847 - TWO whitespace lines (just hit return again), or
1844 - a single whitespace line of a different length than provided
1848 - a single whitespace line of a different length than provided
1845 by the autoindent (add or remove a space).
1849 by the autoindent (add or remove a space).
1846
1850
1847 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1851 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1848 module to better organize all readline-related functionality.
1852 module to better organize all readline-related functionality.
1849 I've deleted FlexCompleter and put all completion clases here.
1853 I've deleted FlexCompleter and put all completion clases here.
1850
1854
1851 * IPython/iplib.py (raw_input): improve indentation management.
1855 * IPython/iplib.py (raw_input): improve indentation management.
1852 It is now possible to paste indented code with autoindent on, and
1856 It is now possible to paste indented code with autoindent on, and
1853 the code is interpreted correctly (though it still looks bad on
1857 the code is interpreted correctly (though it still looks bad on
1854 screen, due to the line-oriented nature of ipython).
1858 screen, due to the line-oriented nature of ipython).
1855 (MagicCompleter.complete): change behavior so that a TAB key on an
1859 (MagicCompleter.complete): change behavior so that a TAB key on an
1856 otherwise empty line actually inserts a tab, instead of completing
1860 otherwise empty line actually inserts a tab, instead of completing
1857 on the entire global namespace. This makes it easier to use the
1861 on the entire global namespace. This makes it easier to use the
1858 TAB key for indentation. After a request by Hans Meine
1862 TAB key for indentation. After a request by Hans Meine
1859 <hans_meine-AT-gmx.net>
1863 <hans_meine-AT-gmx.net>
1860 (_prefilter): add support so that typing plain 'exit' or 'quit'
1864 (_prefilter): add support so that typing plain 'exit' or 'quit'
1861 does a sensible thing. Originally I tried to deviate as little as
1865 does a sensible thing. Originally I tried to deviate as little as
1862 possible from the default python behavior, but even that one may
1866 possible from the default python behavior, but even that one may
1863 change in this direction (thread on python-dev to that effect).
1867 change in this direction (thread on python-dev to that effect).
1864 Regardless, ipython should do the right thing even if CPython's
1868 Regardless, ipython should do the right thing even if CPython's
1865 '>>>' prompt doesn't.
1869 '>>>' prompt doesn't.
1866 (InteractiveShell): removed subclassing code.InteractiveConsole
1870 (InteractiveShell): removed subclassing code.InteractiveConsole
1867 class. By now we'd overridden just about all of its methods: I've
1871 class. By now we'd overridden just about all of its methods: I've
1868 copied the remaining two over, and now ipython is a standalone
1872 copied the remaining two over, and now ipython is a standalone
1869 class. This will provide a clearer picture for the chainsaw
1873 class. This will provide a clearer picture for the chainsaw
1870 branch refactoring.
1874 branch refactoring.
1871
1875
1872 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1876 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1873
1877
1874 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1878 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1875 failures for objects which break when dir() is called on them.
1879 failures for objects which break when dir() is called on them.
1876
1880
1877 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1881 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1878 distinct local and global namespaces in the completer API. This
1882 distinct local and global namespaces in the completer API. This
1879 change allows us to properly handle completion with distinct
1883 change allows us to properly handle completion with distinct
1880 scopes, including in embedded instances (this had never really
1884 scopes, including in embedded instances (this had never really
1881 worked correctly).
1885 worked correctly).
1882
1886
1883 Note: this introduces a change in the constructor for
1887 Note: this introduces a change in the constructor for
1884 MagicCompleter, as a new global_namespace parameter is now the
1888 MagicCompleter, as a new global_namespace parameter is now the
1885 second argument (the others were bumped one position).
1889 second argument (the others were bumped one position).
1886
1890
1887 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1891 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1888
1892
1889 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1893 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1890 embedded instances (which can be done now thanks to Vivian's
1894 embedded instances (which can be done now thanks to Vivian's
1891 frame-handling fixes for pdb).
1895 frame-handling fixes for pdb).
1892 (InteractiveShell.__init__): Fix namespace handling problem in
1896 (InteractiveShell.__init__): Fix namespace handling problem in
1893 embedded instances. We were overwriting __main__ unconditionally,
1897 embedded instances. We were overwriting __main__ unconditionally,
1894 and this should only be done for 'full' (non-embedded) IPython;
1898 and this should only be done for 'full' (non-embedded) IPython;
1895 embedded instances must respect the caller's __main__. Thanks to
1899 embedded instances must respect the caller's __main__. Thanks to
1896 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1900 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1897
1901
1898 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1902 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1899
1903
1900 * setup.py: added download_url to setup(). This registers the
1904 * setup.py: added download_url to setup(). This registers the
1901 download address at PyPI, which is not only useful to humans
1905 download address at PyPI, which is not only useful to humans
1902 browsing the site, but is also picked up by setuptools (the Eggs
1906 browsing the site, but is also picked up by setuptools (the Eggs
1903 machinery). Thanks to Ville and R. Kern for the info/discussion
1907 machinery). Thanks to Ville and R. Kern for the info/discussion
1904 on this.
1908 on this.
1905
1909
1906 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1910 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1907
1911
1908 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1912 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1909 This brings a lot of nice functionality to the pdb mode, which now
1913 This brings a lot of nice functionality to the pdb mode, which now
1910 has tab-completion, syntax highlighting, and better stack handling
1914 has tab-completion, syntax highlighting, and better stack handling
1911 than before. Many thanks to Vivian De Smedt
1915 than before. Many thanks to Vivian De Smedt
1912 <vivian-AT-vdesmedt.com> for the original patches.
1916 <vivian-AT-vdesmedt.com> for the original patches.
1913
1917
1914 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1918 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1915
1919
1916 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1920 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1917 sequence to consistently accept the banner argument. The
1921 sequence to consistently accept the banner argument. The
1918 inconsistency was tripping SAGE, thanks to Gary Zablackis
1922 inconsistency was tripping SAGE, thanks to Gary Zablackis
1919 <gzabl-AT-yahoo.com> for the report.
1923 <gzabl-AT-yahoo.com> for the report.
1920
1924
1921 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1925 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1922
1926
1923 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1927 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1924 Fix bug where a naked 'alias' call in the ipythonrc file would
1928 Fix bug where a naked 'alias' call in the ipythonrc file would
1925 cause a crash. Bug reported by Jorgen Stenarson.
1929 cause a crash. Bug reported by Jorgen Stenarson.
1926
1930
1927 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1931 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1928
1932
1929 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1933 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1930 startup time.
1934 startup time.
1931
1935
1932 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1936 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1933 instances had introduced a bug with globals in normal code. Now
1937 instances had introduced a bug with globals in normal code. Now
1934 it's working in all cases.
1938 it's working in all cases.
1935
1939
1936 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1940 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1937 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1941 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1938 has been introduced to set the default case sensitivity of the
1942 has been introduced to set the default case sensitivity of the
1939 searches. Users can still select either mode at runtime on a
1943 searches. Users can still select either mode at runtime on a
1940 per-search basis.
1944 per-search basis.
1941
1945
1942 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1946 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1943
1947
1944 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1948 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1945 attributes in wildcard searches for subclasses. Modified version
1949 attributes in wildcard searches for subclasses. Modified version
1946 of a patch by Jorgen.
1950 of a patch by Jorgen.
1947
1951
1948 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1952 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1949
1953
1950 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1954 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1951 embedded instances. I added a user_global_ns attribute to the
1955 embedded instances. I added a user_global_ns attribute to the
1952 InteractiveShell class to handle this.
1956 InteractiveShell class to handle this.
1953
1957
1954 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1958 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1955
1959
1956 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1960 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1957 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1961 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1958 (reported under win32, but may happen also in other platforms).
1962 (reported under win32, but may happen also in other platforms).
1959 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1963 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1960
1964
1961 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1965 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1962
1966
1963 * IPython/Magic.py (magic_psearch): new support for wildcard
1967 * IPython/Magic.py (magic_psearch): new support for wildcard
1964 patterns. Now, typing ?a*b will list all names which begin with a
1968 patterns. Now, typing ?a*b will list all names which begin with a
1965 and end in b, for example. The %psearch magic has full
1969 and end in b, for example. The %psearch magic has full
1966 docstrings. Many thanks to JΓΆrgen Stenarson
1970 docstrings. Many thanks to JΓΆrgen Stenarson
1967 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1971 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1968 implementing this functionality.
1972 implementing this functionality.
1969
1973
1970 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1974 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1971
1975
1972 * Manual: fixed long-standing annoyance of double-dashes (as in
1976 * Manual: fixed long-standing annoyance of double-dashes (as in
1973 --prefix=~, for example) being stripped in the HTML version. This
1977 --prefix=~, for example) being stripped in the HTML version. This
1974 is a latex2html bug, but a workaround was provided. Many thanks
1978 is a latex2html bug, but a workaround was provided. Many thanks
1975 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1979 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1976 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1980 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1977 rolling. This seemingly small issue had tripped a number of users
1981 rolling. This seemingly small issue had tripped a number of users
1978 when first installing, so I'm glad to see it gone.
1982 when first installing, so I'm glad to see it gone.
1979
1983
1980 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1984 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1981
1985
1982 * IPython/Extensions/numeric_formats.py: fix missing import,
1986 * IPython/Extensions/numeric_formats.py: fix missing import,
1983 reported by Stephen Walton.
1987 reported by Stephen Walton.
1984
1988
1985 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1989 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1986
1990
1987 * IPython/demo.py: finish demo module, fully documented now.
1991 * IPython/demo.py: finish demo module, fully documented now.
1988
1992
1989 * IPython/genutils.py (file_read): simple little utility to read a
1993 * IPython/genutils.py (file_read): simple little utility to read a
1990 file and ensure it's closed afterwards.
1994 file and ensure it's closed afterwards.
1991
1995
1992 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1996 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1993
1997
1994 * IPython/demo.py (Demo.__init__): added support for individually
1998 * IPython/demo.py (Demo.__init__): added support for individually
1995 tagging blocks for automatic execution.
1999 tagging blocks for automatic execution.
1996
2000
1997 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2001 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1998 syntax-highlighted python sources, requested by John.
2002 syntax-highlighted python sources, requested by John.
1999
2003
2000 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2004 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2001
2005
2002 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2006 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2003 finishing.
2007 finishing.
2004
2008
2005 * IPython/genutils.py (shlex_split): moved from Magic to here,
2009 * IPython/genutils.py (shlex_split): moved from Magic to here,
2006 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2010 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2007
2011
2008 * IPython/demo.py (Demo.__init__): added support for silent
2012 * IPython/demo.py (Demo.__init__): added support for silent
2009 blocks, improved marks as regexps, docstrings written.
2013 blocks, improved marks as regexps, docstrings written.
2010 (Demo.__init__): better docstring, added support for sys.argv.
2014 (Demo.__init__): better docstring, added support for sys.argv.
2011
2015
2012 * IPython/genutils.py (marquee): little utility used by the demo
2016 * IPython/genutils.py (marquee): little utility used by the demo
2013 code, handy in general.
2017 code, handy in general.
2014
2018
2015 * IPython/demo.py (Demo.__init__): new class for interactive
2019 * IPython/demo.py (Demo.__init__): new class for interactive
2016 demos. Not documented yet, I just wrote it in a hurry for
2020 demos. Not documented yet, I just wrote it in a hurry for
2017 scipy'05. Will docstring later.
2021 scipy'05. Will docstring later.
2018
2022
2019 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2023 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2020
2024
2021 * IPython/Shell.py (sigint_handler): Drastic simplification which
2025 * IPython/Shell.py (sigint_handler): Drastic simplification which
2022 also seems to make Ctrl-C work correctly across threads! This is
2026 also seems to make Ctrl-C work correctly across threads! This is
2023 so simple, that I can't beleive I'd missed it before. Needs more
2027 so simple, that I can't beleive I'd missed it before. Needs more
2024 testing, though.
2028 testing, though.
2025 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2029 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2026 like this before...
2030 like this before...
2027
2031
2028 * IPython/genutils.py (get_home_dir): add protection against
2032 * IPython/genutils.py (get_home_dir): add protection against
2029 non-dirs in win32 registry.
2033 non-dirs in win32 registry.
2030
2034
2031 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2035 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2032 bug where dict was mutated while iterating (pysh crash).
2036 bug where dict was mutated while iterating (pysh crash).
2033
2037
2034 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2038 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2035
2039
2036 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2040 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2037 spurious newlines added by this routine. After a report by
2041 spurious newlines added by this routine. After a report by
2038 F. Mantegazza.
2042 F. Mantegazza.
2039
2043
2040 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2044 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2041
2045
2042 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2046 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2043 calls. These were a leftover from the GTK 1.x days, and can cause
2047 calls. These were a leftover from the GTK 1.x days, and can cause
2044 problems in certain cases (after a report by John Hunter).
2048 problems in certain cases (after a report by John Hunter).
2045
2049
2046 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2050 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2047 os.getcwd() fails at init time. Thanks to patch from David Remahl
2051 os.getcwd() fails at init time. Thanks to patch from David Remahl
2048 <chmod007-AT-mac.com>.
2052 <chmod007-AT-mac.com>.
2049 (InteractiveShell.__init__): prevent certain special magics from
2053 (InteractiveShell.__init__): prevent certain special magics from
2050 being shadowed by aliases. Closes
2054 being shadowed by aliases. Closes
2051 http://www.scipy.net/roundup/ipython/issue41.
2055 http://www.scipy.net/roundup/ipython/issue41.
2052
2056
2053 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2057 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2054
2058
2055 * IPython/iplib.py (InteractiveShell.complete): Added new
2059 * IPython/iplib.py (InteractiveShell.complete): Added new
2056 top-level completion method to expose the completion mechanism
2060 top-level completion method to expose the completion mechanism
2057 beyond readline-based environments.
2061 beyond readline-based environments.
2058
2062
2059 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2063 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2060
2064
2061 * tools/ipsvnc (svnversion): fix svnversion capture.
2065 * tools/ipsvnc (svnversion): fix svnversion capture.
2062
2066
2063 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2067 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2064 attribute to self, which was missing. Before, it was set by a
2068 attribute to self, which was missing. Before, it was set by a
2065 routine which in certain cases wasn't being called, so the
2069 routine which in certain cases wasn't being called, so the
2066 instance could end up missing the attribute. This caused a crash.
2070 instance could end up missing the attribute. This caused a crash.
2067 Closes http://www.scipy.net/roundup/ipython/issue40.
2071 Closes http://www.scipy.net/roundup/ipython/issue40.
2068
2072
2069 2005-08-16 Fernando Perez <fperez@colorado.edu>
2073 2005-08-16 Fernando Perez <fperez@colorado.edu>
2070
2074
2071 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2075 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2072 contains non-string attribute. Closes
2076 contains non-string attribute. Closes
2073 http://www.scipy.net/roundup/ipython/issue38.
2077 http://www.scipy.net/roundup/ipython/issue38.
2074
2078
2075 2005-08-14 Fernando Perez <fperez@colorado.edu>
2079 2005-08-14 Fernando Perez <fperez@colorado.edu>
2076
2080
2077 * tools/ipsvnc: Minor improvements, to add changeset info.
2081 * tools/ipsvnc: Minor improvements, to add changeset info.
2078
2082
2079 2005-08-12 Fernando Perez <fperez@colorado.edu>
2083 2005-08-12 Fernando Perez <fperez@colorado.edu>
2080
2084
2081 * IPython/iplib.py (runsource): remove self.code_to_run_src
2085 * IPython/iplib.py (runsource): remove self.code_to_run_src
2082 attribute. I realized this is nothing more than
2086 attribute. I realized this is nothing more than
2083 '\n'.join(self.buffer), and having the same data in two different
2087 '\n'.join(self.buffer), and having the same data in two different
2084 places is just asking for synchronization bugs. This may impact
2088 places is just asking for synchronization bugs. This may impact
2085 people who have custom exception handlers, so I need to warn
2089 people who have custom exception handlers, so I need to warn
2086 ipython-dev about it (F. Mantegazza may use them).
2090 ipython-dev about it (F. Mantegazza may use them).
2087
2091
2088 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2092 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2089
2093
2090 * IPython/genutils.py: fix 2.2 compatibility (generators)
2094 * IPython/genutils.py: fix 2.2 compatibility (generators)
2091
2095
2092 2005-07-18 Fernando Perez <fperez@colorado.edu>
2096 2005-07-18 Fernando Perez <fperez@colorado.edu>
2093
2097
2094 * IPython/genutils.py (get_home_dir): fix to help users with
2098 * IPython/genutils.py (get_home_dir): fix to help users with
2095 invalid $HOME under win32.
2099 invalid $HOME under win32.
2096
2100
2097 2005-07-17 Fernando Perez <fperez@colorado.edu>
2101 2005-07-17 Fernando Perez <fperez@colorado.edu>
2098
2102
2099 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2103 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2100 some old hacks and clean up a bit other routines; code should be
2104 some old hacks and clean up a bit other routines; code should be
2101 simpler and a bit faster.
2105 simpler and a bit faster.
2102
2106
2103 * IPython/iplib.py (interact): removed some last-resort attempts
2107 * IPython/iplib.py (interact): removed some last-resort attempts
2104 to survive broken stdout/stderr. That code was only making it
2108 to survive broken stdout/stderr. That code was only making it
2105 harder to abstract out the i/o (necessary for gui integration),
2109 harder to abstract out the i/o (necessary for gui integration),
2106 and the crashes it could prevent were extremely rare in practice
2110 and the crashes it could prevent were extremely rare in practice
2107 (besides being fully user-induced in a pretty violent manner).
2111 (besides being fully user-induced in a pretty violent manner).
2108
2112
2109 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2113 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2110 Nothing major yet, but the code is simpler to read; this should
2114 Nothing major yet, but the code is simpler to read; this should
2111 make it easier to do more serious modifications in the future.
2115 make it easier to do more serious modifications in the future.
2112
2116
2113 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2117 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2114 which broke in .15 (thanks to a report by Ville).
2118 which broke in .15 (thanks to a report by Ville).
2115
2119
2116 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2120 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2117 be quite correct, I know next to nothing about unicode). This
2121 be quite correct, I know next to nothing about unicode). This
2118 will allow unicode strings to be used in prompts, amongst other
2122 will allow unicode strings to be used in prompts, amongst other
2119 cases. It also will prevent ipython from crashing when unicode
2123 cases. It also will prevent ipython from crashing when unicode
2120 shows up unexpectedly in many places. If ascii encoding fails, we
2124 shows up unexpectedly in many places. If ascii encoding fails, we
2121 assume utf_8. Currently the encoding is not a user-visible
2125 assume utf_8. Currently the encoding is not a user-visible
2122 setting, though it could be made so if there is demand for it.
2126 setting, though it could be made so if there is demand for it.
2123
2127
2124 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2128 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2125
2129
2126 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2130 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2127
2131
2128 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2132 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2129
2133
2130 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2134 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2131 code can work transparently for 2.2/2.3.
2135 code can work transparently for 2.2/2.3.
2132
2136
2133 2005-07-16 Fernando Perez <fperez@colorado.edu>
2137 2005-07-16 Fernando Perez <fperez@colorado.edu>
2134
2138
2135 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2139 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2136 out of the color scheme table used for coloring exception
2140 out of the color scheme table used for coloring exception
2137 tracebacks. This allows user code to add new schemes at runtime.
2141 tracebacks. This allows user code to add new schemes at runtime.
2138 This is a minimally modified version of the patch at
2142 This is a minimally modified version of the patch at
2139 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2143 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2140 for the contribution.
2144 for the contribution.
2141
2145
2142 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2146 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2143 slightly modified version of the patch in
2147 slightly modified version of the patch in
2144 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2148 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2145 to remove the previous try/except solution (which was costlier).
2149 to remove the previous try/except solution (which was costlier).
2146 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2150 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2147
2151
2148 2005-06-08 Fernando Perez <fperez@colorado.edu>
2152 2005-06-08 Fernando Perez <fperez@colorado.edu>
2149
2153
2150 * IPython/iplib.py (write/write_err): Add methods to abstract all
2154 * IPython/iplib.py (write/write_err): Add methods to abstract all
2151 I/O a bit more.
2155 I/O a bit more.
2152
2156
2153 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2157 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2154 warning, reported by Aric Hagberg, fix by JD Hunter.
2158 warning, reported by Aric Hagberg, fix by JD Hunter.
2155
2159
2156 2005-06-02 *** Released version 0.6.15
2160 2005-06-02 *** Released version 0.6.15
2157
2161
2158 2005-06-01 Fernando Perez <fperez@colorado.edu>
2162 2005-06-01 Fernando Perez <fperez@colorado.edu>
2159
2163
2160 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2164 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2161 tab-completion of filenames within open-quoted strings. Note that
2165 tab-completion of filenames within open-quoted strings. Note that
2162 this requires that in ~/.ipython/ipythonrc, users change the
2166 this requires that in ~/.ipython/ipythonrc, users change the
2163 readline delimiters configuration to read:
2167 readline delimiters configuration to read:
2164
2168
2165 readline_remove_delims -/~
2169 readline_remove_delims -/~
2166
2170
2167
2171
2168 2005-05-31 *** Released version 0.6.14
2172 2005-05-31 *** Released version 0.6.14
2169
2173
2170 2005-05-29 Fernando Perez <fperez@colorado.edu>
2174 2005-05-29 Fernando Perez <fperez@colorado.edu>
2171
2175
2172 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2176 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2173 with files not on the filesystem. Reported by Eliyahu Sandler
2177 with files not on the filesystem. Reported by Eliyahu Sandler
2174 <eli@gondolin.net>
2178 <eli@gondolin.net>
2175
2179
2176 2005-05-22 Fernando Perez <fperez@colorado.edu>
2180 2005-05-22 Fernando Perez <fperez@colorado.edu>
2177
2181
2178 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2182 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2179 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2183 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2180
2184
2181 2005-05-19 Fernando Perez <fperez@colorado.edu>
2185 2005-05-19 Fernando Perez <fperez@colorado.edu>
2182
2186
2183 * IPython/iplib.py (safe_execfile): close a file which could be
2187 * IPython/iplib.py (safe_execfile): close a file which could be
2184 left open (causing problems in win32, which locks open files).
2188 left open (causing problems in win32, which locks open files).
2185 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2189 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2186
2190
2187 2005-05-18 Fernando Perez <fperez@colorado.edu>
2191 2005-05-18 Fernando Perez <fperez@colorado.edu>
2188
2192
2189 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2193 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2190 keyword arguments correctly to safe_execfile().
2194 keyword arguments correctly to safe_execfile().
2191
2195
2192 2005-05-13 Fernando Perez <fperez@colorado.edu>
2196 2005-05-13 Fernando Perez <fperez@colorado.edu>
2193
2197
2194 * ipython.1: Added info about Qt to manpage, and threads warning
2198 * ipython.1: Added info about Qt to manpage, and threads warning
2195 to usage page (invoked with --help).
2199 to usage page (invoked with --help).
2196
2200
2197 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2201 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2198 new matcher (it goes at the end of the priority list) to do
2202 new matcher (it goes at the end of the priority list) to do
2199 tab-completion on named function arguments. Submitted by George
2203 tab-completion on named function arguments. Submitted by George
2200 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2204 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2201 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2205 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2202 for more details.
2206 for more details.
2203
2207
2204 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2208 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2205 SystemExit exceptions in the script being run. Thanks to a report
2209 SystemExit exceptions in the script being run. Thanks to a report
2206 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2210 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2207 producing very annoying behavior when running unit tests.
2211 producing very annoying behavior when running unit tests.
2208
2212
2209 2005-05-12 Fernando Perez <fperez@colorado.edu>
2213 2005-05-12 Fernando Perez <fperez@colorado.edu>
2210
2214
2211 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2215 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2212 which I'd broken (again) due to a changed regexp. In the process,
2216 which I'd broken (again) due to a changed regexp. In the process,
2213 added ';' as an escape to auto-quote the whole line without
2217 added ';' as an escape to auto-quote the whole line without
2214 splitting its arguments. Thanks to a report by Jerry McRae
2218 splitting its arguments. Thanks to a report by Jerry McRae
2215 <qrs0xyc02-AT-sneakemail.com>.
2219 <qrs0xyc02-AT-sneakemail.com>.
2216
2220
2217 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2221 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2218 possible crashes caused by a TokenError. Reported by Ed Schofield
2222 possible crashes caused by a TokenError. Reported by Ed Schofield
2219 <schofield-AT-ftw.at>.
2223 <schofield-AT-ftw.at>.
2220
2224
2221 2005-05-06 Fernando Perez <fperez@colorado.edu>
2225 2005-05-06 Fernando Perez <fperez@colorado.edu>
2222
2226
2223 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2227 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2224
2228
2225 2005-04-29 Fernando Perez <fperez@colorado.edu>
2229 2005-04-29 Fernando Perez <fperez@colorado.edu>
2226
2230
2227 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2231 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2228 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2232 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2229 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2233 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2230 which provides support for Qt interactive usage (similar to the
2234 which provides support for Qt interactive usage (similar to the
2231 existing one for WX and GTK). This had been often requested.
2235 existing one for WX and GTK). This had been often requested.
2232
2236
2233 2005-04-14 *** Released version 0.6.13
2237 2005-04-14 *** Released version 0.6.13
2234
2238
2235 2005-04-08 Fernando Perez <fperez@colorado.edu>
2239 2005-04-08 Fernando Perez <fperez@colorado.edu>
2236
2240
2237 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2241 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2238 from _ofind, which gets called on almost every input line. Now,
2242 from _ofind, which gets called on almost every input line. Now,
2239 we only try to get docstrings if they are actually going to be
2243 we only try to get docstrings if they are actually going to be
2240 used (the overhead of fetching unnecessary docstrings can be
2244 used (the overhead of fetching unnecessary docstrings can be
2241 noticeable for certain objects, such as Pyro proxies).
2245 noticeable for certain objects, such as Pyro proxies).
2242
2246
2243 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2247 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2244 for completers. For some reason I had been passing them the state
2248 for completers. For some reason I had been passing them the state
2245 variable, which completers never actually need, and was in
2249 variable, which completers never actually need, and was in
2246 conflict with the rlcompleter API. Custom completers ONLY need to
2250 conflict with the rlcompleter API. Custom completers ONLY need to
2247 take the text parameter.
2251 take the text parameter.
2248
2252
2249 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2253 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2250 work correctly in pysh. I've also moved all the logic which used
2254 work correctly in pysh. I've also moved all the logic which used
2251 to be in pysh.py here, which will prevent problems with future
2255 to be in pysh.py here, which will prevent problems with future
2252 upgrades. However, this time I must warn users to update their
2256 upgrades. However, this time I must warn users to update their
2253 pysh profile to include the line
2257 pysh profile to include the line
2254
2258
2255 import_all IPython.Extensions.InterpreterExec
2259 import_all IPython.Extensions.InterpreterExec
2256
2260
2257 because otherwise things won't work for them. They MUST also
2261 because otherwise things won't work for them. They MUST also
2258 delete pysh.py and the line
2262 delete pysh.py and the line
2259
2263
2260 execfile pysh.py
2264 execfile pysh.py
2261
2265
2262 from their ipythonrc-pysh.
2266 from their ipythonrc-pysh.
2263
2267
2264 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2268 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2265 robust in the face of objects whose dir() returns non-strings
2269 robust in the face of objects whose dir() returns non-strings
2266 (which it shouldn't, but some broken libs like ITK do). Thanks to
2270 (which it shouldn't, but some broken libs like ITK do). Thanks to
2267 a patch by John Hunter (implemented differently, though). Also
2271 a patch by John Hunter (implemented differently, though). Also
2268 minor improvements by using .extend instead of + on lists.
2272 minor improvements by using .extend instead of + on lists.
2269
2273
2270 * pysh.py:
2274 * pysh.py:
2271
2275
2272 2005-04-06 Fernando Perez <fperez@colorado.edu>
2276 2005-04-06 Fernando Perez <fperez@colorado.edu>
2273
2277
2274 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2278 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2275 by default, so that all users benefit from it. Those who don't
2279 by default, so that all users benefit from it. Those who don't
2276 want it can still turn it off.
2280 want it can still turn it off.
2277
2281
2278 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2282 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2279 config file, I'd forgotten about this, so users were getting it
2283 config file, I'd forgotten about this, so users were getting it
2280 off by default.
2284 off by default.
2281
2285
2282 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2286 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2283 consistency. Now magics can be called in multiline statements,
2287 consistency. Now magics can be called in multiline statements,
2284 and python variables can be expanded in magic calls via $var.
2288 and python variables can be expanded in magic calls via $var.
2285 This makes the magic system behave just like aliases or !system
2289 This makes the magic system behave just like aliases or !system
2286 calls.
2290 calls.
2287
2291
2288 2005-03-28 Fernando Perez <fperez@colorado.edu>
2292 2005-03-28 Fernando Perez <fperez@colorado.edu>
2289
2293
2290 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2294 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2291 expensive string additions for building command. Add support for
2295 expensive string additions for building command. Add support for
2292 trailing ';' when autocall is used.
2296 trailing ';' when autocall is used.
2293
2297
2294 2005-03-26 Fernando Perez <fperez@colorado.edu>
2298 2005-03-26 Fernando Perez <fperez@colorado.edu>
2295
2299
2296 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2300 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2297 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2301 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2298 ipython.el robust against prompts with any number of spaces
2302 ipython.el robust against prompts with any number of spaces
2299 (including 0) after the ':' character.
2303 (including 0) after the ':' character.
2300
2304
2301 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2305 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2302 continuation prompt, which misled users to think the line was
2306 continuation prompt, which misled users to think the line was
2303 already indented. Closes debian Bug#300847, reported to me by
2307 already indented. Closes debian Bug#300847, reported to me by
2304 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2308 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2305
2309
2306 2005-03-23 Fernando Perez <fperez@colorado.edu>
2310 2005-03-23 Fernando Perez <fperez@colorado.edu>
2307
2311
2308 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2312 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2309 properly aligned if they have embedded newlines.
2313 properly aligned if they have embedded newlines.
2310
2314
2311 * IPython/iplib.py (runlines): Add a public method to expose
2315 * IPython/iplib.py (runlines): Add a public method to expose
2312 IPython's code execution machinery, so that users can run strings
2316 IPython's code execution machinery, so that users can run strings
2313 as if they had been typed at the prompt interactively.
2317 as if they had been typed at the prompt interactively.
2314 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2318 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2315 methods which can call the system shell, but with python variable
2319 methods which can call the system shell, but with python variable
2316 expansion. The three such methods are: __IPYTHON__.system,
2320 expansion. The three such methods are: __IPYTHON__.system,
2317 .getoutput and .getoutputerror. These need to be documented in a
2321 .getoutput and .getoutputerror. These need to be documented in a
2318 'public API' section (to be written) of the manual.
2322 'public API' section (to be written) of the manual.
2319
2323
2320 2005-03-20 Fernando Perez <fperez@colorado.edu>
2324 2005-03-20 Fernando Perez <fperez@colorado.edu>
2321
2325
2322 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2326 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2323 for custom exception handling. This is quite powerful, and it
2327 for custom exception handling. This is quite powerful, and it
2324 allows for user-installable exception handlers which can trap
2328 allows for user-installable exception handlers which can trap
2325 custom exceptions at runtime and treat them separately from
2329 custom exceptions at runtime and treat them separately from
2326 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2330 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2327 Mantegazza <mantegazza-AT-ill.fr>.
2331 Mantegazza <mantegazza-AT-ill.fr>.
2328 (InteractiveShell.set_custom_completer): public API function to
2332 (InteractiveShell.set_custom_completer): public API function to
2329 add new completers at runtime.
2333 add new completers at runtime.
2330
2334
2331 2005-03-19 Fernando Perez <fperez@colorado.edu>
2335 2005-03-19 Fernando Perez <fperez@colorado.edu>
2332
2336
2333 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2337 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2334 allow objects which provide their docstrings via non-standard
2338 allow objects which provide their docstrings via non-standard
2335 mechanisms (like Pyro proxies) to still be inspected by ipython's
2339 mechanisms (like Pyro proxies) to still be inspected by ipython's
2336 ? system.
2340 ? system.
2337
2341
2338 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2342 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2339 automatic capture system. I tried quite hard to make it work
2343 automatic capture system. I tried quite hard to make it work
2340 reliably, and simply failed. I tried many combinations with the
2344 reliably, and simply failed. I tried many combinations with the
2341 subprocess module, but eventually nothing worked in all needed
2345 subprocess module, but eventually nothing worked in all needed
2342 cases (not blocking stdin for the child, duplicating stdout
2346 cases (not blocking stdin for the child, duplicating stdout
2343 without blocking, etc). The new %sc/%sx still do capture to these
2347 without blocking, etc). The new %sc/%sx still do capture to these
2344 magical list/string objects which make shell use much more
2348 magical list/string objects which make shell use much more
2345 conveninent, so not all is lost.
2349 conveninent, so not all is lost.
2346
2350
2347 XXX - FIX MANUAL for the change above!
2351 XXX - FIX MANUAL for the change above!
2348
2352
2349 (runsource): I copied code.py's runsource() into ipython to modify
2353 (runsource): I copied code.py's runsource() into ipython to modify
2350 it a bit. Now the code object and source to be executed are
2354 it a bit. Now the code object and source to be executed are
2351 stored in ipython. This makes this info accessible to third-party
2355 stored in ipython. This makes this info accessible to third-party
2352 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2356 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2353 Mantegazza <mantegazza-AT-ill.fr>.
2357 Mantegazza <mantegazza-AT-ill.fr>.
2354
2358
2355 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2359 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2356 history-search via readline (like C-p/C-n). I'd wanted this for a
2360 history-search via readline (like C-p/C-n). I'd wanted this for a
2357 long time, but only recently found out how to do it. For users
2361 long time, but only recently found out how to do it. For users
2358 who already have their ipythonrc files made and want this, just
2362 who already have their ipythonrc files made and want this, just
2359 add:
2363 add:
2360
2364
2361 readline_parse_and_bind "\e[A": history-search-backward
2365 readline_parse_and_bind "\e[A": history-search-backward
2362 readline_parse_and_bind "\e[B": history-search-forward
2366 readline_parse_and_bind "\e[B": history-search-forward
2363
2367
2364 2005-03-18 Fernando Perez <fperez@colorado.edu>
2368 2005-03-18 Fernando Perez <fperez@colorado.edu>
2365
2369
2366 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2370 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2367 LSString and SList classes which allow transparent conversions
2371 LSString and SList classes which allow transparent conversions
2368 between list mode and whitespace-separated string.
2372 between list mode and whitespace-separated string.
2369 (magic_r): Fix recursion problem in %r.
2373 (magic_r): Fix recursion problem in %r.
2370
2374
2371 * IPython/genutils.py (LSString): New class to be used for
2375 * IPython/genutils.py (LSString): New class to be used for
2372 automatic storage of the results of all alias/system calls in _o
2376 automatic storage of the results of all alias/system calls in _o
2373 and _e (stdout/err). These provide a .l/.list attribute which
2377 and _e (stdout/err). These provide a .l/.list attribute which
2374 does automatic splitting on newlines. This means that for most
2378 does automatic splitting on newlines. This means that for most
2375 uses, you'll never need to do capturing of output with %sc/%sx
2379 uses, you'll never need to do capturing of output with %sc/%sx
2376 anymore, since ipython keeps this always done for you. Note that
2380 anymore, since ipython keeps this always done for you. Note that
2377 only the LAST results are stored, the _o/e variables are
2381 only the LAST results are stored, the _o/e variables are
2378 overwritten on each call. If you need to save their contents
2382 overwritten on each call. If you need to save their contents
2379 further, simply bind them to any other name.
2383 further, simply bind them to any other name.
2380
2384
2381 2005-03-17 Fernando Perez <fperez@colorado.edu>
2385 2005-03-17 Fernando Perez <fperez@colorado.edu>
2382
2386
2383 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2387 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2384 prompt namespace handling.
2388 prompt namespace handling.
2385
2389
2386 2005-03-16 Fernando Perez <fperez@colorado.edu>
2390 2005-03-16 Fernando Perez <fperez@colorado.edu>
2387
2391
2388 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2392 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2389 classic prompts to be '>>> ' (final space was missing, and it
2393 classic prompts to be '>>> ' (final space was missing, and it
2390 trips the emacs python mode).
2394 trips the emacs python mode).
2391 (BasePrompt.__str__): Added safe support for dynamic prompt
2395 (BasePrompt.__str__): Added safe support for dynamic prompt
2392 strings. Now you can set your prompt string to be '$x', and the
2396 strings. Now you can set your prompt string to be '$x', and the
2393 value of x will be printed from your interactive namespace. The
2397 value of x will be printed from your interactive namespace. The
2394 interpolation syntax includes the full Itpl support, so
2398 interpolation syntax includes the full Itpl support, so
2395 ${foo()+x+bar()} is a valid prompt string now, and the function
2399 ${foo()+x+bar()} is a valid prompt string now, and the function
2396 calls will be made at runtime.
2400 calls will be made at runtime.
2397
2401
2398 2005-03-15 Fernando Perez <fperez@colorado.edu>
2402 2005-03-15 Fernando Perez <fperez@colorado.edu>
2399
2403
2400 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2404 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2401 avoid name clashes in pylab. %hist still works, it just forwards
2405 avoid name clashes in pylab. %hist still works, it just forwards
2402 the call to %history.
2406 the call to %history.
2403
2407
2404 2005-03-02 *** Released version 0.6.12
2408 2005-03-02 *** Released version 0.6.12
2405
2409
2406 2005-03-02 Fernando Perez <fperez@colorado.edu>
2410 2005-03-02 Fernando Perez <fperez@colorado.edu>
2407
2411
2408 * IPython/iplib.py (handle_magic): log magic calls properly as
2412 * IPython/iplib.py (handle_magic): log magic calls properly as
2409 ipmagic() function calls.
2413 ipmagic() function calls.
2410
2414
2411 * IPython/Magic.py (magic_time): Improved %time to support
2415 * IPython/Magic.py (magic_time): Improved %time to support
2412 statements and provide wall-clock as well as CPU time.
2416 statements and provide wall-clock as well as CPU time.
2413
2417
2414 2005-02-27 Fernando Perez <fperez@colorado.edu>
2418 2005-02-27 Fernando Perez <fperez@colorado.edu>
2415
2419
2416 * IPython/hooks.py: New hooks module, to expose user-modifiable
2420 * IPython/hooks.py: New hooks module, to expose user-modifiable
2417 IPython functionality in a clean manner. For now only the editor
2421 IPython functionality in a clean manner. For now only the editor
2418 hook is actually written, and other thigns which I intend to turn
2422 hook is actually written, and other thigns which I intend to turn
2419 into proper hooks aren't yet there. The display and prefilter
2423 into proper hooks aren't yet there. The display and prefilter
2420 stuff, for example, should be hooks. But at least now the
2424 stuff, for example, should be hooks. But at least now the
2421 framework is in place, and the rest can be moved here with more
2425 framework is in place, and the rest can be moved here with more
2422 time later. IPython had had a .hooks variable for a long time for
2426 time later. IPython had had a .hooks variable for a long time for
2423 this purpose, but I'd never actually used it for anything.
2427 this purpose, but I'd never actually used it for anything.
2424
2428
2425 2005-02-26 Fernando Perez <fperez@colorado.edu>
2429 2005-02-26 Fernando Perez <fperez@colorado.edu>
2426
2430
2427 * IPython/ipmaker.py (make_IPython): make the default ipython
2431 * IPython/ipmaker.py (make_IPython): make the default ipython
2428 directory be called _ipython under win32, to follow more the
2432 directory be called _ipython under win32, to follow more the
2429 naming peculiarities of that platform (where buggy software like
2433 naming peculiarities of that platform (where buggy software like
2430 Visual Sourcesafe breaks with .named directories). Reported by
2434 Visual Sourcesafe breaks with .named directories). Reported by
2431 Ville Vainio.
2435 Ville Vainio.
2432
2436
2433 2005-02-23 Fernando Perez <fperez@colorado.edu>
2437 2005-02-23 Fernando Perez <fperez@colorado.edu>
2434
2438
2435 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2439 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2436 auto_aliases for win32 which were causing problems. Users can
2440 auto_aliases for win32 which were causing problems. Users can
2437 define the ones they personally like.
2441 define the ones they personally like.
2438
2442
2439 2005-02-21 Fernando Perez <fperez@colorado.edu>
2443 2005-02-21 Fernando Perez <fperez@colorado.edu>
2440
2444
2441 * IPython/Magic.py (magic_time): new magic to time execution of
2445 * IPython/Magic.py (magic_time): new magic to time execution of
2442 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2446 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2443
2447
2444 2005-02-19 Fernando Perez <fperez@colorado.edu>
2448 2005-02-19 Fernando Perez <fperez@colorado.edu>
2445
2449
2446 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2450 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2447 into keys (for prompts, for example).
2451 into keys (for prompts, for example).
2448
2452
2449 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2453 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2450 prompts in case users want them. This introduces a small behavior
2454 prompts in case users want them. This introduces a small behavior
2451 change: ipython does not automatically add a space to all prompts
2455 change: ipython does not automatically add a space to all prompts
2452 anymore. To get the old prompts with a space, users should add it
2456 anymore. To get the old prompts with a space, users should add it
2453 manually to their ipythonrc file, so for example prompt_in1 should
2457 manually to their ipythonrc file, so for example prompt_in1 should
2454 now read 'In [\#]: ' instead of 'In [\#]:'.
2458 now read 'In [\#]: ' instead of 'In [\#]:'.
2455 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2459 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2456 file) to control left-padding of secondary prompts.
2460 file) to control left-padding of secondary prompts.
2457
2461
2458 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2462 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2459 the profiler can't be imported. Fix for Debian, which removed
2463 the profiler can't be imported. Fix for Debian, which removed
2460 profile.py because of License issues. I applied a slightly
2464 profile.py because of License issues. I applied a slightly
2461 modified version of the original Debian patch at
2465 modified version of the original Debian patch at
2462 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2466 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2463
2467
2464 2005-02-17 Fernando Perez <fperez@colorado.edu>
2468 2005-02-17 Fernando Perez <fperez@colorado.edu>
2465
2469
2466 * IPython/genutils.py (native_line_ends): Fix bug which would
2470 * IPython/genutils.py (native_line_ends): Fix bug which would
2467 cause improper line-ends under win32 b/c I was not opening files
2471 cause improper line-ends under win32 b/c I was not opening files
2468 in binary mode. Bug report and fix thanks to Ville.
2472 in binary mode. Bug report and fix thanks to Ville.
2469
2473
2470 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2474 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2471 trying to catch spurious foo[1] autocalls. My fix actually broke
2475 trying to catch spurious foo[1] autocalls. My fix actually broke
2472 ',/' autoquote/call with explicit escape (bad regexp).
2476 ',/' autoquote/call with explicit escape (bad regexp).
2473
2477
2474 2005-02-15 *** Released version 0.6.11
2478 2005-02-15 *** Released version 0.6.11
2475
2479
2476 2005-02-14 Fernando Perez <fperez@colorado.edu>
2480 2005-02-14 Fernando Perez <fperez@colorado.edu>
2477
2481
2478 * IPython/background_jobs.py: New background job management
2482 * IPython/background_jobs.py: New background job management
2479 subsystem. This is implemented via a new set of classes, and
2483 subsystem. This is implemented via a new set of classes, and
2480 IPython now provides a builtin 'jobs' object for background job
2484 IPython now provides a builtin 'jobs' object for background job
2481 execution. A convenience %bg magic serves as a lightweight
2485 execution. A convenience %bg magic serves as a lightweight
2482 frontend for starting the more common type of calls. This was
2486 frontend for starting the more common type of calls. This was
2483 inspired by discussions with B. Granger and the BackgroundCommand
2487 inspired by discussions with B. Granger and the BackgroundCommand
2484 class described in the book Python Scripting for Computational
2488 class described in the book Python Scripting for Computational
2485 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2489 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2486 (although ultimately no code from this text was used, as IPython's
2490 (although ultimately no code from this text was used, as IPython's
2487 system is a separate implementation).
2491 system is a separate implementation).
2488
2492
2489 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2493 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2490 to control the completion of single/double underscore names
2494 to control the completion of single/double underscore names
2491 separately. As documented in the example ipytonrc file, the
2495 separately. As documented in the example ipytonrc file, the
2492 readline_omit__names variable can now be set to 2, to omit even
2496 readline_omit__names variable can now be set to 2, to omit even
2493 single underscore names. Thanks to a patch by Brian Wong
2497 single underscore names. Thanks to a patch by Brian Wong
2494 <BrianWong-AT-AirgoNetworks.Com>.
2498 <BrianWong-AT-AirgoNetworks.Com>.
2495 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2499 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2496 be autocalled as foo([1]) if foo were callable. A problem for
2500 be autocalled as foo([1]) if foo were callable. A problem for
2497 things which are both callable and implement __getitem__.
2501 things which are both callable and implement __getitem__.
2498 (init_readline): Fix autoindentation for win32. Thanks to a patch
2502 (init_readline): Fix autoindentation for win32. Thanks to a patch
2499 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2503 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2500
2504
2501 2005-02-12 Fernando Perez <fperez@colorado.edu>
2505 2005-02-12 Fernando Perez <fperez@colorado.edu>
2502
2506
2503 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2507 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2504 which I had written long ago to sort out user error messages which
2508 which I had written long ago to sort out user error messages which
2505 may occur during startup. This seemed like a good idea initially,
2509 may occur during startup. This seemed like a good idea initially,
2506 but it has proven a disaster in retrospect. I don't want to
2510 but it has proven a disaster in retrospect. I don't want to
2507 change much code for now, so my fix is to set the internal 'debug'
2511 change much code for now, so my fix is to set the internal 'debug'
2508 flag to true everywhere, whose only job was precisely to control
2512 flag to true everywhere, whose only job was precisely to control
2509 this subsystem. This closes issue 28 (as well as avoiding all
2513 this subsystem. This closes issue 28 (as well as avoiding all
2510 sorts of strange hangups which occur from time to time).
2514 sorts of strange hangups which occur from time to time).
2511
2515
2512 2005-02-07 Fernando Perez <fperez@colorado.edu>
2516 2005-02-07 Fernando Perez <fperez@colorado.edu>
2513
2517
2514 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2518 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2515 previous call produced a syntax error.
2519 previous call produced a syntax error.
2516
2520
2517 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2521 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2518 classes without constructor.
2522 classes without constructor.
2519
2523
2520 2005-02-06 Fernando Perez <fperez@colorado.edu>
2524 2005-02-06 Fernando Perez <fperez@colorado.edu>
2521
2525
2522 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2526 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2523 completions with the results of each matcher, so we return results
2527 completions with the results of each matcher, so we return results
2524 to the user from all namespaces. This breaks with ipython
2528 to the user from all namespaces. This breaks with ipython
2525 tradition, but I think it's a nicer behavior. Now you get all
2529 tradition, but I think it's a nicer behavior. Now you get all
2526 possible completions listed, from all possible namespaces (python,
2530 possible completions listed, from all possible namespaces (python,
2527 filesystem, magics...) After a request by John Hunter
2531 filesystem, magics...) After a request by John Hunter
2528 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2532 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2529
2533
2530 2005-02-05 Fernando Perez <fperez@colorado.edu>
2534 2005-02-05 Fernando Perez <fperez@colorado.edu>
2531
2535
2532 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2536 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2533 the call had quote characters in it (the quotes were stripped).
2537 the call had quote characters in it (the quotes were stripped).
2534
2538
2535 2005-01-31 Fernando Perez <fperez@colorado.edu>
2539 2005-01-31 Fernando Perez <fperez@colorado.edu>
2536
2540
2537 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2541 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2538 Itpl.itpl() to make the code more robust against psyco
2542 Itpl.itpl() to make the code more robust against psyco
2539 optimizations.
2543 optimizations.
2540
2544
2541 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2545 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2542 of causing an exception. Quicker, cleaner.
2546 of causing an exception. Quicker, cleaner.
2543
2547
2544 2005-01-28 Fernando Perez <fperez@colorado.edu>
2548 2005-01-28 Fernando Perez <fperez@colorado.edu>
2545
2549
2546 * scripts/ipython_win_post_install.py (install): hardcode
2550 * scripts/ipython_win_post_install.py (install): hardcode
2547 sys.prefix+'python.exe' as the executable path. It turns out that
2551 sys.prefix+'python.exe' as the executable path. It turns out that
2548 during the post-installation run, sys.executable resolves to the
2552 during the post-installation run, sys.executable resolves to the
2549 name of the binary installer! I should report this as a distutils
2553 name of the binary installer! I should report this as a distutils
2550 bug, I think. I updated the .10 release with this tiny fix, to
2554 bug, I think. I updated the .10 release with this tiny fix, to
2551 avoid annoying the lists further.
2555 avoid annoying the lists further.
2552
2556
2553 2005-01-27 *** Released version 0.6.10
2557 2005-01-27 *** Released version 0.6.10
2554
2558
2555 2005-01-27 Fernando Perez <fperez@colorado.edu>
2559 2005-01-27 Fernando Perez <fperez@colorado.edu>
2556
2560
2557 * IPython/numutils.py (norm): Added 'inf' as optional name for
2561 * IPython/numutils.py (norm): Added 'inf' as optional name for
2558 L-infinity norm, included references to mathworld.com for vector
2562 L-infinity norm, included references to mathworld.com for vector
2559 norm definitions.
2563 norm definitions.
2560 (amin/amax): added amin/amax for array min/max. Similar to what
2564 (amin/amax): added amin/amax for array min/max. Similar to what
2561 pylab ships with after the recent reorganization of names.
2565 pylab ships with after the recent reorganization of names.
2562 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2566 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2563
2567
2564 * ipython.el: committed Alex's recent fixes and improvements.
2568 * ipython.el: committed Alex's recent fixes and improvements.
2565 Tested with python-mode from CVS, and it looks excellent. Since
2569 Tested with python-mode from CVS, and it looks excellent. Since
2566 python-mode hasn't released anything in a while, I'm temporarily
2570 python-mode hasn't released anything in a while, I'm temporarily
2567 putting a copy of today's CVS (v 4.70) of python-mode in:
2571 putting a copy of today's CVS (v 4.70) of python-mode in:
2568 http://ipython.scipy.org/tmp/python-mode.el
2572 http://ipython.scipy.org/tmp/python-mode.el
2569
2573
2570 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2574 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2571 sys.executable for the executable name, instead of assuming it's
2575 sys.executable for the executable name, instead of assuming it's
2572 called 'python.exe' (the post-installer would have produced broken
2576 called 'python.exe' (the post-installer would have produced broken
2573 setups on systems with a differently named python binary).
2577 setups on systems with a differently named python binary).
2574
2578
2575 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2579 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2576 references to os.linesep, to make the code more
2580 references to os.linesep, to make the code more
2577 platform-independent. This is also part of the win32 coloring
2581 platform-independent. This is also part of the win32 coloring
2578 fixes.
2582 fixes.
2579
2583
2580 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2584 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2581 lines, which actually cause coloring bugs because the length of
2585 lines, which actually cause coloring bugs because the length of
2582 the line is very difficult to correctly compute with embedded
2586 the line is very difficult to correctly compute with embedded
2583 escapes. This was the source of all the coloring problems under
2587 escapes. This was the source of all the coloring problems under
2584 Win32. I think that _finally_, Win32 users have a properly
2588 Win32. I think that _finally_, Win32 users have a properly
2585 working ipython in all respects. This would never have happened
2589 working ipython in all respects. This would never have happened
2586 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2590 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2587
2591
2588 2005-01-26 *** Released version 0.6.9
2592 2005-01-26 *** Released version 0.6.9
2589
2593
2590 2005-01-25 Fernando Perez <fperez@colorado.edu>
2594 2005-01-25 Fernando Perez <fperez@colorado.edu>
2591
2595
2592 * setup.py: finally, we have a true Windows installer, thanks to
2596 * setup.py: finally, we have a true Windows installer, thanks to
2593 the excellent work of Viktor Ransmayr
2597 the excellent work of Viktor Ransmayr
2594 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2598 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2595 Windows users. The setup routine is quite a bit cleaner thanks to
2599 Windows users. The setup routine is quite a bit cleaner thanks to
2596 this, and the post-install script uses the proper functions to
2600 this, and the post-install script uses the proper functions to
2597 allow a clean de-installation using the standard Windows Control
2601 allow a clean de-installation using the standard Windows Control
2598 Panel.
2602 Panel.
2599
2603
2600 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2604 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2601 environment variable under all OSes (including win32) if
2605 environment variable under all OSes (including win32) if
2602 available. This will give consistency to win32 users who have set
2606 available. This will give consistency to win32 users who have set
2603 this variable for any reason. If os.environ['HOME'] fails, the
2607 this variable for any reason. If os.environ['HOME'] fails, the
2604 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2608 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2605
2609
2606 2005-01-24 Fernando Perez <fperez@colorado.edu>
2610 2005-01-24 Fernando Perez <fperez@colorado.edu>
2607
2611
2608 * IPython/numutils.py (empty_like): add empty_like(), similar to
2612 * IPython/numutils.py (empty_like): add empty_like(), similar to
2609 zeros_like() but taking advantage of the new empty() Numeric routine.
2613 zeros_like() but taking advantage of the new empty() Numeric routine.
2610
2614
2611 2005-01-23 *** Released version 0.6.8
2615 2005-01-23 *** Released version 0.6.8
2612
2616
2613 2005-01-22 Fernando Perez <fperez@colorado.edu>
2617 2005-01-22 Fernando Perez <fperez@colorado.edu>
2614
2618
2615 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2619 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2616 automatic show() calls. After discussing things with JDH, it
2620 automatic show() calls. After discussing things with JDH, it
2617 turns out there are too many corner cases where this can go wrong.
2621 turns out there are too many corner cases where this can go wrong.
2618 It's best not to try to be 'too smart', and simply have ipython
2622 It's best not to try to be 'too smart', and simply have ipython
2619 reproduce as much as possible the default behavior of a normal
2623 reproduce as much as possible the default behavior of a normal
2620 python shell.
2624 python shell.
2621
2625
2622 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2626 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2623 line-splitting regexp and _prefilter() to avoid calling getattr()
2627 line-splitting regexp and _prefilter() to avoid calling getattr()
2624 on assignments. This closes
2628 on assignments. This closes
2625 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2629 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2626 readline uses getattr(), so a simple <TAB> keypress is still
2630 readline uses getattr(), so a simple <TAB> keypress is still
2627 enough to trigger getattr() calls on an object.
2631 enough to trigger getattr() calls on an object.
2628
2632
2629 2005-01-21 Fernando Perez <fperez@colorado.edu>
2633 2005-01-21 Fernando Perez <fperez@colorado.edu>
2630
2634
2631 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2635 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2632 docstring under pylab so it doesn't mask the original.
2636 docstring under pylab so it doesn't mask the original.
2633
2637
2634 2005-01-21 *** Released version 0.6.7
2638 2005-01-21 *** Released version 0.6.7
2635
2639
2636 2005-01-21 Fernando Perez <fperez@colorado.edu>
2640 2005-01-21 Fernando Perez <fperez@colorado.edu>
2637
2641
2638 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2642 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2639 signal handling for win32 users in multithreaded mode.
2643 signal handling for win32 users in multithreaded mode.
2640
2644
2641 2005-01-17 Fernando Perez <fperez@colorado.edu>
2645 2005-01-17 Fernando Perez <fperez@colorado.edu>
2642
2646
2643 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2647 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2644 instances with no __init__. After a crash report by Norbert Nemec
2648 instances with no __init__. After a crash report by Norbert Nemec
2645 <Norbert-AT-nemec-online.de>.
2649 <Norbert-AT-nemec-online.de>.
2646
2650
2647 2005-01-14 Fernando Perez <fperez@colorado.edu>
2651 2005-01-14 Fernando Perez <fperez@colorado.edu>
2648
2652
2649 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2653 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2650 names for verbose exceptions, when multiple dotted names and the
2654 names for verbose exceptions, when multiple dotted names and the
2651 'parent' object were present on the same line.
2655 'parent' object were present on the same line.
2652
2656
2653 2005-01-11 Fernando Perez <fperez@colorado.edu>
2657 2005-01-11 Fernando Perez <fperez@colorado.edu>
2654
2658
2655 * IPython/genutils.py (flag_calls): new utility to trap and flag
2659 * IPython/genutils.py (flag_calls): new utility to trap and flag
2656 calls in functions. I need it to clean up matplotlib support.
2660 calls in functions. I need it to clean up matplotlib support.
2657 Also removed some deprecated code in genutils.
2661 Also removed some deprecated code in genutils.
2658
2662
2659 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2663 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2660 that matplotlib scripts called with %run, which don't call show()
2664 that matplotlib scripts called with %run, which don't call show()
2661 themselves, still have their plotting windows open.
2665 themselves, still have their plotting windows open.
2662
2666
2663 2005-01-05 Fernando Perez <fperez@colorado.edu>
2667 2005-01-05 Fernando Perez <fperez@colorado.edu>
2664
2668
2665 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2669 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2666 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2670 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2667
2671
2668 2004-12-19 Fernando Perez <fperez@colorado.edu>
2672 2004-12-19 Fernando Perez <fperez@colorado.edu>
2669
2673
2670 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2674 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2671 parent_runcode, which was an eyesore. The same result can be
2675 parent_runcode, which was an eyesore. The same result can be
2672 obtained with Python's regular superclass mechanisms.
2676 obtained with Python's regular superclass mechanisms.
2673
2677
2674 2004-12-17 Fernando Perez <fperez@colorado.edu>
2678 2004-12-17 Fernando Perez <fperez@colorado.edu>
2675
2679
2676 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2680 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2677 reported by Prabhu.
2681 reported by Prabhu.
2678 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2682 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2679 sys.stderr) instead of explicitly calling sys.stderr. This helps
2683 sys.stderr) instead of explicitly calling sys.stderr. This helps
2680 maintain our I/O abstractions clean, for future GUI embeddings.
2684 maintain our I/O abstractions clean, for future GUI embeddings.
2681
2685
2682 * IPython/genutils.py (info): added new utility for sys.stderr
2686 * IPython/genutils.py (info): added new utility for sys.stderr
2683 unified info message handling (thin wrapper around warn()).
2687 unified info message handling (thin wrapper around warn()).
2684
2688
2685 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2689 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2686 composite (dotted) names on verbose exceptions.
2690 composite (dotted) names on verbose exceptions.
2687 (VerboseTB.nullrepr): harden against another kind of errors which
2691 (VerboseTB.nullrepr): harden against another kind of errors which
2688 Python's inspect module can trigger, and which were crashing
2692 Python's inspect module can trigger, and which were crashing
2689 IPython. Thanks to a report by Marco Lombardi
2693 IPython. Thanks to a report by Marco Lombardi
2690 <mlombard-AT-ma010192.hq.eso.org>.
2694 <mlombard-AT-ma010192.hq.eso.org>.
2691
2695
2692 2004-12-13 *** Released version 0.6.6
2696 2004-12-13 *** Released version 0.6.6
2693
2697
2694 2004-12-12 Fernando Perez <fperez@colorado.edu>
2698 2004-12-12 Fernando Perez <fperez@colorado.edu>
2695
2699
2696 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2700 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2697 generated by pygtk upon initialization if it was built without
2701 generated by pygtk upon initialization if it was built without
2698 threads (for matplotlib users). After a crash reported by
2702 threads (for matplotlib users). After a crash reported by
2699 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2703 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2700
2704
2701 * IPython/ipmaker.py (make_IPython): fix small bug in the
2705 * IPython/ipmaker.py (make_IPython): fix small bug in the
2702 import_some parameter for multiple imports.
2706 import_some parameter for multiple imports.
2703
2707
2704 * IPython/iplib.py (ipmagic): simplified the interface of
2708 * IPython/iplib.py (ipmagic): simplified the interface of
2705 ipmagic() to take a single string argument, just as it would be
2709 ipmagic() to take a single string argument, just as it would be
2706 typed at the IPython cmd line.
2710 typed at the IPython cmd line.
2707 (ipalias): Added new ipalias() with an interface identical to
2711 (ipalias): Added new ipalias() with an interface identical to
2708 ipmagic(). This completes exposing a pure python interface to the
2712 ipmagic(). This completes exposing a pure python interface to the
2709 alias and magic system, which can be used in loops or more complex
2713 alias and magic system, which can be used in loops or more complex
2710 code where IPython's automatic line mangling is not active.
2714 code where IPython's automatic line mangling is not active.
2711
2715
2712 * IPython/genutils.py (timing): changed interface of timing to
2716 * IPython/genutils.py (timing): changed interface of timing to
2713 simply run code once, which is the most common case. timings()
2717 simply run code once, which is the most common case. timings()
2714 remains unchanged, for the cases where you want multiple runs.
2718 remains unchanged, for the cases where you want multiple runs.
2715
2719
2716 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2720 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2717 bug where Python2.2 crashes with exec'ing code which does not end
2721 bug where Python2.2 crashes with exec'ing code which does not end
2718 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2722 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2719 before.
2723 before.
2720
2724
2721 2004-12-10 Fernando Perez <fperez@colorado.edu>
2725 2004-12-10 Fernando Perez <fperez@colorado.edu>
2722
2726
2723 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2727 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2724 -t to -T, to accomodate the new -t flag in %run (the %run and
2728 -t to -T, to accomodate the new -t flag in %run (the %run and
2725 %prun options are kind of intermixed, and it's not easy to change
2729 %prun options are kind of intermixed, and it's not easy to change
2726 this with the limitations of python's getopt).
2730 this with the limitations of python's getopt).
2727
2731
2728 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2732 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2729 the execution of scripts. It's not as fine-tuned as timeit.py,
2733 the execution of scripts. It's not as fine-tuned as timeit.py,
2730 but it works from inside ipython (and under 2.2, which lacks
2734 but it works from inside ipython (and under 2.2, which lacks
2731 timeit.py). Optionally a number of runs > 1 can be given for
2735 timeit.py). Optionally a number of runs > 1 can be given for
2732 timing very short-running code.
2736 timing very short-running code.
2733
2737
2734 * IPython/genutils.py (uniq_stable): new routine which returns a
2738 * IPython/genutils.py (uniq_stable): new routine which returns a
2735 list of unique elements in any iterable, but in stable order of
2739 list of unique elements in any iterable, but in stable order of
2736 appearance. I needed this for the ultraTB fixes, and it's a handy
2740 appearance. I needed this for the ultraTB fixes, and it's a handy
2737 utility.
2741 utility.
2738
2742
2739 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2743 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2740 dotted names in Verbose exceptions. This had been broken since
2744 dotted names in Verbose exceptions. This had been broken since
2741 the very start, now x.y will properly be printed in a Verbose
2745 the very start, now x.y will properly be printed in a Verbose
2742 traceback, instead of x being shown and y appearing always as an
2746 traceback, instead of x being shown and y appearing always as an
2743 'undefined global'. Getting this to work was a bit tricky,
2747 'undefined global'. Getting this to work was a bit tricky,
2744 because by default python tokenizers are stateless. Saved by
2748 because by default python tokenizers are stateless. Saved by
2745 python's ability to easily add a bit of state to an arbitrary
2749 python's ability to easily add a bit of state to an arbitrary
2746 function (without needing to build a full-blown callable object).
2750 function (without needing to build a full-blown callable object).
2747
2751
2748 Also big cleanup of this code, which had horrendous runtime
2752 Also big cleanup of this code, which had horrendous runtime
2749 lookups of zillions of attributes for colorization. Moved all
2753 lookups of zillions of attributes for colorization. Moved all
2750 this code into a few templates, which make it cleaner and quicker.
2754 this code into a few templates, which make it cleaner and quicker.
2751
2755
2752 Printout quality was also improved for Verbose exceptions: one
2756 Printout quality was also improved for Verbose exceptions: one
2753 variable per line, and memory addresses are printed (this can be
2757 variable per line, and memory addresses are printed (this can be
2754 quite handy in nasty debugging situations, which is what Verbose
2758 quite handy in nasty debugging situations, which is what Verbose
2755 is for).
2759 is for).
2756
2760
2757 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2761 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2758 the command line as scripts to be loaded by embedded instances.
2762 the command line as scripts to be loaded by embedded instances.
2759 Doing so has the potential for an infinite recursion if there are
2763 Doing so has the potential for an infinite recursion if there are
2760 exceptions thrown in the process. This fixes a strange crash
2764 exceptions thrown in the process. This fixes a strange crash
2761 reported by Philippe MULLER <muller-AT-irit.fr>.
2765 reported by Philippe MULLER <muller-AT-irit.fr>.
2762
2766
2763 2004-12-09 Fernando Perez <fperez@colorado.edu>
2767 2004-12-09 Fernando Perez <fperez@colorado.edu>
2764
2768
2765 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2769 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2766 to reflect new names in matplotlib, which now expose the
2770 to reflect new names in matplotlib, which now expose the
2767 matlab-compatible interface via a pylab module instead of the
2771 matlab-compatible interface via a pylab module instead of the
2768 'matlab' name. The new code is backwards compatible, so users of
2772 'matlab' name. The new code is backwards compatible, so users of
2769 all matplotlib versions are OK. Patch by J. Hunter.
2773 all matplotlib versions are OK. Patch by J. Hunter.
2770
2774
2771 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2775 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2772 of __init__ docstrings for instances (class docstrings are already
2776 of __init__ docstrings for instances (class docstrings are already
2773 automatically printed). Instances with customized docstrings
2777 automatically printed). Instances with customized docstrings
2774 (indep. of the class) are also recognized and all 3 separate
2778 (indep. of the class) are also recognized and all 3 separate
2775 docstrings are printed (instance, class, constructor). After some
2779 docstrings are printed (instance, class, constructor). After some
2776 comments/suggestions by J. Hunter.
2780 comments/suggestions by J. Hunter.
2777
2781
2778 2004-12-05 Fernando Perez <fperez@colorado.edu>
2782 2004-12-05 Fernando Perez <fperez@colorado.edu>
2779
2783
2780 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2784 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2781 warnings when tab-completion fails and triggers an exception.
2785 warnings when tab-completion fails and triggers an exception.
2782
2786
2783 2004-12-03 Fernando Perez <fperez@colorado.edu>
2787 2004-12-03 Fernando Perez <fperez@colorado.edu>
2784
2788
2785 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2789 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2786 be triggered when using 'run -p'. An incorrect option flag was
2790 be triggered when using 'run -p'. An incorrect option flag was
2787 being set ('d' instead of 'D').
2791 being set ('d' instead of 'D').
2788 (manpage): fix missing escaped \- sign.
2792 (manpage): fix missing escaped \- sign.
2789
2793
2790 2004-11-30 *** Released version 0.6.5
2794 2004-11-30 *** Released version 0.6.5
2791
2795
2792 2004-11-30 Fernando Perez <fperez@colorado.edu>
2796 2004-11-30 Fernando Perez <fperez@colorado.edu>
2793
2797
2794 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2798 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2795 setting with -d option.
2799 setting with -d option.
2796
2800
2797 * setup.py (docfiles): Fix problem where the doc glob I was using
2801 * setup.py (docfiles): Fix problem where the doc glob I was using
2798 was COMPLETELY BROKEN. It was giving the right files by pure
2802 was COMPLETELY BROKEN. It was giving the right files by pure
2799 accident, but failed once I tried to include ipython.el. Note:
2803 accident, but failed once I tried to include ipython.el. Note:
2800 glob() does NOT allow you to do exclusion on multiple endings!
2804 glob() does NOT allow you to do exclusion on multiple endings!
2801
2805
2802 2004-11-29 Fernando Perez <fperez@colorado.edu>
2806 2004-11-29 Fernando Perez <fperez@colorado.edu>
2803
2807
2804 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2808 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2805 the manpage as the source. Better formatting & consistency.
2809 the manpage as the source. Better formatting & consistency.
2806
2810
2807 * IPython/Magic.py (magic_run): Added new -d option, to run
2811 * IPython/Magic.py (magic_run): Added new -d option, to run
2808 scripts under the control of the python pdb debugger. Note that
2812 scripts under the control of the python pdb debugger. Note that
2809 this required changing the %prun option -d to -D, to avoid a clash
2813 this required changing the %prun option -d to -D, to avoid a clash
2810 (since %run must pass options to %prun, and getopt is too dumb to
2814 (since %run must pass options to %prun, and getopt is too dumb to
2811 handle options with string values with embedded spaces). Thanks
2815 handle options with string values with embedded spaces). Thanks
2812 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2816 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2813 (magic_who_ls): added type matching to %who and %whos, so that one
2817 (magic_who_ls): added type matching to %who and %whos, so that one
2814 can filter their output to only include variables of certain
2818 can filter their output to only include variables of certain
2815 types. Another suggestion by Matthew.
2819 types. Another suggestion by Matthew.
2816 (magic_whos): Added memory summaries in kb and Mb for arrays.
2820 (magic_whos): Added memory summaries in kb and Mb for arrays.
2817 (magic_who): Improve formatting (break lines every 9 vars).
2821 (magic_who): Improve formatting (break lines every 9 vars).
2818
2822
2819 2004-11-28 Fernando Perez <fperez@colorado.edu>
2823 2004-11-28 Fernando Perez <fperez@colorado.edu>
2820
2824
2821 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2825 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2822 cache when empty lines were present.
2826 cache when empty lines were present.
2823
2827
2824 2004-11-24 Fernando Perez <fperez@colorado.edu>
2828 2004-11-24 Fernando Perez <fperez@colorado.edu>
2825
2829
2826 * IPython/usage.py (__doc__): document the re-activated threading
2830 * IPython/usage.py (__doc__): document the re-activated threading
2827 options for WX and GTK.
2831 options for WX and GTK.
2828
2832
2829 2004-11-23 Fernando Perez <fperez@colorado.edu>
2833 2004-11-23 Fernando Perez <fperez@colorado.edu>
2830
2834
2831 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2835 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2832 the -wthread and -gthread options, along with a new -tk one to try
2836 the -wthread and -gthread options, along with a new -tk one to try
2833 and coordinate Tk threading with wx/gtk. The tk support is very
2837 and coordinate Tk threading with wx/gtk. The tk support is very
2834 platform dependent, since it seems to require Tcl and Tk to be
2838 platform dependent, since it seems to require Tcl and Tk to be
2835 built with threads (Fedora1/2 appears NOT to have it, but in
2839 built with threads (Fedora1/2 appears NOT to have it, but in
2836 Prabhu's Debian boxes it works OK). But even with some Tk
2840 Prabhu's Debian boxes it works OK). But even with some Tk
2837 limitations, this is a great improvement.
2841 limitations, this is a great improvement.
2838
2842
2839 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2843 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2840 info in user prompts. Patch by Prabhu.
2844 info in user prompts. Patch by Prabhu.
2841
2845
2842 2004-11-18 Fernando Perez <fperez@colorado.edu>
2846 2004-11-18 Fernando Perez <fperez@colorado.edu>
2843
2847
2844 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2848 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2845 EOFErrors and bail, to avoid infinite loops if a non-terminating
2849 EOFErrors and bail, to avoid infinite loops if a non-terminating
2846 file is fed into ipython. Patch submitted in issue 19 by user,
2850 file is fed into ipython. Patch submitted in issue 19 by user,
2847 many thanks.
2851 many thanks.
2848
2852
2849 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2853 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2850 autoquote/parens in continuation prompts, which can cause lots of
2854 autoquote/parens in continuation prompts, which can cause lots of
2851 problems. Closes roundup issue 20.
2855 problems. Closes roundup issue 20.
2852
2856
2853 2004-11-17 Fernando Perez <fperez@colorado.edu>
2857 2004-11-17 Fernando Perez <fperez@colorado.edu>
2854
2858
2855 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2859 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2856 reported as debian bug #280505. I'm not sure my local changelog
2860 reported as debian bug #280505. I'm not sure my local changelog
2857 entry has the proper debian format (Jack?).
2861 entry has the proper debian format (Jack?).
2858
2862
2859 2004-11-08 *** Released version 0.6.4
2863 2004-11-08 *** Released version 0.6.4
2860
2864
2861 2004-11-08 Fernando Perez <fperez@colorado.edu>
2865 2004-11-08 Fernando Perez <fperez@colorado.edu>
2862
2866
2863 * IPython/iplib.py (init_readline): Fix exit message for Windows
2867 * IPython/iplib.py (init_readline): Fix exit message for Windows
2864 when readline is active. Thanks to a report by Eric Jones
2868 when readline is active. Thanks to a report by Eric Jones
2865 <eric-AT-enthought.com>.
2869 <eric-AT-enthought.com>.
2866
2870
2867 2004-11-07 Fernando Perez <fperez@colorado.edu>
2871 2004-11-07 Fernando Perez <fperez@colorado.edu>
2868
2872
2869 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2873 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2870 sometimes seen by win2k/cygwin users.
2874 sometimes seen by win2k/cygwin users.
2871
2875
2872 2004-11-06 Fernando Perez <fperez@colorado.edu>
2876 2004-11-06 Fernando Perez <fperez@colorado.edu>
2873
2877
2874 * IPython/iplib.py (interact): Change the handling of %Exit from
2878 * IPython/iplib.py (interact): Change the handling of %Exit from
2875 trying to propagate a SystemExit to an internal ipython flag.
2879 trying to propagate a SystemExit to an internal ipython flag.
2876 This is less elegant than using Python's exception mechanism, but
2880 This is less elegant than using Python's exception mechanism, but
2877 I can't get that to work reliably with threads, so under -pylab
2881 I can't get that to work reliably with threads, so under -pylab
2878 %Exit was hanging IPython. Cross-thread exception handling is
2882 %Exit was hanging IPython. Cross-thread exception handling is
2879 really a bitch. Thaks to a bug report by Stephen Walton
2883 really a bitch. Thaks to a bug report by Stephen Walton
2880 <stephen.walton-AT-csun.edu>.
2884 <stephen.walton-AT-csun.edu>.
2881
2885
2882 2004-11-04 Fernando Perez <fperez@colorado.edu>
2886 2004-11-04 Fernando Perez <fperez@colorado.edu>
2883
2887
2884 * IPython/iplib.py (raw_input_original): store a pointer to the
2888 * IPython/iplib.py (raw_input_original): store a pointer to the
2885 true raw_input to harden against code which can modify it
2889 true raw_input to harden against code which can modify it
2886 (wx.py.PyShell does this and would otherwise crash ipython).
2890 (wx.py.PyShell does this and would otherwise crash ipython).
2887 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2891 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2888
2892
2889 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2893 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2890 Ctrl-C problem, which does not mess up the input line.
2894 Ctrl-C problem, which does not mess up the input line.
2891
2895
2892 2004-11-03 Fernando Perez <fperez@colorado.edu>
2896 2004-11-03 Fernando Perez <fperez@colorado.edu>
2893
2897
2894 * IPython/Release.py: Changed licensing to BSD, in all files.
2898 * IPython/Release.py: Changed licensing to BSD, in all files.
2895 (name): lowercase name for tarball/RPM release.
2899 (name): lowercase name for tarball/RPM release.
2896
2900
2897 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2901 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2898 use throughout ipython.
2902 use throughout ipython.
2899
2903
2900 * IPython/Magic.py (Magic._ofind): Switch to using the new
2904 * IPython/Magic.py (Magic._ofind): Switch to using the new
2901 OInspect.getdoc() function.
2905 OInspect.getdoc() function.
2902
2906
2903 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2907 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2904 of the line currently being canceled via Ctrl-C. It's extremely
2908 of the line currently being canceled via Ctrl-C. It's extremely
2905 ugly, but I don't know how to do it better (the problem is one of
2909 ugly, but I don't know how to do it better (the problem is one of
2906 handling cross-thread exceptions).
2910 handling cross-thread exceptions).
2907
2911
2908 2004-10-28 Fernando Perez <fperez@colorado.edu>
2912 2004-10-28 Fernando Perez <fperez@colorado.edu>
2909
2913
2910 * IPython/Shell.py (signal_handler): add signal handlers to trap
2914 * IPython/Shell.py (signal_handler): add signal handlers to trap
2911 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2915 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2912 report by Francesc Alted.
2916 report by Francesc Alted.
2913
2917
2914 2004-10-21 Fernando Perez <fperez@colorado.edu>
2918 2004-10-21 Fernando Perez <fperez@colorado.edu>
2915
2919
2916 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2920 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2917 to % for pysh syntax extensions.
2921 to % for pysh syntax extensions.
2918
2922
2919 2004-10-09 Fernando Perez <fperez@colorado.edu>
2923 2004-10-09 Fernando Perez <fperez@colorado.edu>
2920
2924
2921 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2925 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2922 arrays to print a more useful summary, without calling str(arr).
2926 arrays to print a more useful summary, without calling str(arr).
2923 This avoids the problem of extremely lengthy computations which
2927 This avoids the problem of extremely lengthy computations which
2924 occur if arr is large, and appear to the user as a system lockup
2928 occur if arr is large, and appear to the user as a system lockup
2925 with 100% cpu activity. After a suggestion by Kristian Sandberg
2929 with 100% cpu activity. After a suggestion by Kristian Sandberg
2926 <Kristian.Sandberg@colorado.edu>.
2930 <Kristian.Sandberg@colorado.edu>.
2927 (Magic.__init__): fix bug in global magic escapes not being
2931 (Magic.__init__): fix bug in global magic escapes not being
2928 correctly set.
2932 correctly set.
2929
2933
2930 2004-10-08 Fernando Perez <fperez@colorado.edu>
2934 2004-10-08 Fernando Perez <fperez@colorado.edu>
2931
2935
2932 * IPython/Magic.py (__license__): change to absolute imports of
2936 * IPython/Magic.py (__license__): change to absolute imports of
2933 ipython's own internal packages, to start adapting to the absolute
2937 ipython's own internal packages, to start adapting to the absolute
2934 import requirement of PEP-328.
2938 import requirement of PEP-328.
2935
2939
2936 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2940 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2937 files, and standardize author/license marks through the Release
2941 files, and standardize author/license marks through the Release
2938 module instead of having per/file stuff (except for files with
2942 module instead of having per/file stuff (except for files with
2939 particular licenses, like the MIT/PSF-licensed codes).
2943 particular licenses, like the MIT/PSF-licensed codes).
2940
2944
2941 * IPython/Debugger.py: remove dead code for python 2.1
2945 * IPython/Debugger.py: remove dead code for python 2.1
2942
2946
2943 2004-10-04 Fernando Perez <fperez@colorado.edu>
2947 2004-10-04 Fernando Perez <fperez@colorado.edu>
2944
2948
2945 * IPython/iplib.py (ipmagic): New function for accessing magics
2949 * IPython/iplib.py (ipmagic): New function for accessing magics
2946 via a normal python function call.
2950 via a normal python function call.
2947
2951
2948 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2952 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2949 from '@' to '%', to accomodate the new @decorator syntax of python
2953 from '@' to '%', to accomodate the new @decorator syntax of python
2950 2.4.
2954 2.4.
2951
2955
2952 2004-09-29 Fernando Perez <fperez@colorado.edu>
2956 2004-09-29 Fernando Perez <fperez@colorado.edu>
2953
2957
2954 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2958 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2955 matplotlib.use to prevent running scripts which try to switch
2959 matplotlib.use to prevent running scripts which try to switch
2956 interactive backends from within ipython. This will just crash
2960 interactive backends from within ipython. This will just crash
2957 the python interpreter, so we can't allow it (but a detailed error
2961 the python interpreter, so we can't allow it (but a detailed error
2958 is given to the user).
2962 is given to the user).
2959
2963
2960 2004-09-28 Fernando Perez <fperez@colorado.edu>
2964 2004-09-28 Fernando Perez <fperez@colorado.edu>
2961
2965
2962 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2966 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2963 matplotlib-related fixes so that using @run with non-matplotlib
2967 matplotlib-related fixes so that using @run with non-matplotlib
2964 scripts doesn't pop up spurious plot windows. This requires
2968 scripts doesn't pop up spurious plot windows. This requires
2965 matplotlib >= 0.63, where I had to make some changes as well.
2969 matplotlib >= 0.63, where I had to make some changes as well.
2966
2970
2967 * IPython/ipmaker.py (make_IPython): update version requirement to
2971 * IPython/ipmaker.py (make_IPython): update version requirement to
2968 python 2.2.
2972 python 2.2.
2969
2973
2970 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2974 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2971 banner arg for embedded customization.
2975 banner arg for embedded customization.
2972
2976
2973 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2977 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2974 explicit uses of __IP as the IPython's instance name. Now things
2978 explicit uses of __IP as the IPython's instance name. Now things
2975 are properly handled via the shell.name value. The actual code
2979 are properly handled via the shell.name value. The actual code
2976 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2980 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2977 is much better than before. I'll clean things completely when the
2981 is much better than before. I'll clean things completely when the
2978 magic stuff gets a real overhaul.
2982 magic stuff gets a real overhaul.
2979
2983
2980 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2984 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2981 minor changes to debian dir.
2985 minor changes to debian dir.
2982
2986
2983 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2987 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2984 pointer to the shell itself in the interactive namespace even when
2988 pointer to the shell itself in the interactive namespace even when
2985 a user-supplied dict is provided. This is needed for embedding
2989 a user-supplied dict is provided. This is needed for embedding
2986 purposes (found by tests with Michel Sanner).
2990 purposes (found by tests with Michel Sanner).
2987
2991
2988 2004-09-27 Fernando Perez <fperez@colorado.edu>
2992 2004-09-27 Fernando Perez <fperez@colorado.edu>
2989
2993
2990 * IPython/UserConfig/ipythonrc: remove []{} from
2994 * IPython/UserConfig/ipythonrc: remove []{} from
2991 readline_remove_delims, so that things like [modname.<TAB> do
2995 readline_remove_delims, so that things like [modname.<TAB> do
2992 proper completion. This disables [].TAB, but that's a less common
2996 proper completion. This disables [].TAB, but that's a less common
2993 case than module names in list comprehensions, for example.
2997 case than module names in list comprehensions, for example.
2994 Thanks to a report by Andrea Riciputi.
2998 Thanks to a report by Andrea Riciputi.
2995
2999
2996 2004-09-09 Fernando Perez <fperez@colorado.edu>
3000 2004-09-09 Fernando Perez <fperez@colorado.edu>
2997
3001
2998 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3002 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2999 blocking problems in win32 and osx. Fix by John.
3003 blocking problems in win32 and osx. Fix by John.
3000
3004
3001 2004-09-08 Fernando Perez <fperez@colorado.edu>
3005 2004-09-08 Fernando Perez <fperez@colorado.edu>
3002
3006
3003 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3007 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3004 for Win32 and OSX. Fix by John Hunter.
3008 for Win32 and OSX. Fix by John Hunter.
3005
3009
3006 2004-08-30 *** Released version 0.6.3
3010 2004-08-30 *** Released version 0.6.3
3007
3011
3008 2004-08-30 Fernando Perez <fperez@colorado.edu>
3012 2004-08-30 Fernando Perez <fperez@colorado.edu>
3009
3013
3010 * setup.py (isfile): Add manpages to list of dependent files to be
3014 * setup.py (isfile): Add manpages to list of dependent files to be
3011 updated.
3015 updated.
3012
3016
3013 2004-08-27 Fernando Perez <fperez@colorado.edu>
3017 2004-08-27 Fernando Perez <fperez@colorado.edu>
3014
3018
3015 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3019 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3016 for now. They don't really work with standalone WX/GTK code
3020 for now. They don't really work with standalone WX/GTK code
3017 (though matplotlib IS working fine with both of those backends).
3021 (though matplotlib IS working fine with both of those backends).
3018 This will neeed much more testing. I disabled most things with
3022 This will neeed much more testing. I disabled most things with
3019 comments, so turning it back on later should be pretty easy.
3023 comments, so turning it back on later should be pretty easy.
3020
3024
3021 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3025 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3022 autocalling of expressions like r'foo', by modifying the line
3026 autocalling of expressions like r'foo', by modifying the line
3023 split regexp. Closes
3027 split regexp. Closes
3024 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3028 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3025 Riley <ipythonbugs-AT-sabi.net>.
3029 Riley <ipythonbugs-AT-sabi.net>.
3026 (InteractiveShell.mainloop): honor --nobanner with banner
3030 (InteractiveShell.mainloop): honor --nobanner with banner
3027 extensions.
3031 extensions.
3028
3032
3029 * IPython/Shell.py: Significant refactoring of all classes, so
3033 * IPython/Shell.py: Significant refactoring of all classes, so
3030 that we can really support ALL matplotlib backends and threading
3034 that we can really support ALL matplotlib backends and threading
3031 models (John spotted a bug with Tk which required this). Now we
3035 models (John spotted a bug with Tk which required this). Now we
3032 should support single-threaded, WX-threads and GTK-threads, both
3036 should support single-threaded, WX-threads and GTK-threads, both
3033 for generic code and for matplotlib.
3037 for generic code and for matplotlib.
3034
3038
3035 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3039 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3036 -pylab, to simplify things for users. Will also remove the pylab
3040 -pylab, to simplify things for users. Will also remove the pylab
3037 profile, since now all of matplotlib configuration is directly
3041 profile, since now all of matplotlib configuration is directly
3038 handled here. This also reduces startup time.
3042 handled here. This also reduces startup time.
3039
3043
3040 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3044 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3041 shell wasn't being correctly called. Also in IPShellWX.
3045 shell wasn't being correctly called. Also in IPShellWX.
3042
3046
3043 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3047 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3044 fine-tune banner.
3048 fine-tune banner.
3045
3049
3046 * IPython/numutils.py (spike): Deprecate these spike functions,
3050 * IPython/numutils.py (spike): Deprecate these spike functions,
3047 delete (long deprecated) gnuplot_exec handler.
3051 delete (long deprecated) gnuplot_exec handler.
3048
3052
3049 2004-08-26 Fernando Perez <fperez@colorado.edu>
3053 2004-08-26 Fernando Perez <fperez@colorado.edu>
3050
3054
3051 * ipython.1: Update for threading options, plus some others which
3055 * ipython.1: Update for threading options, plus some others which
3052 were missing.
3056 were missing.
3053
3057
3054 * IPython/ipmaker.py (__call__): Added -wthread option for
3058 * IPython/ipmaker.py (__call__): Added -wthread option for
3055 wxpython thread handling. Make sure threading options are only
3059 wxpython thread handling. Make sure threading options are only
3056 valid at the command line.
3060 valid at the command line.
3057
3061
3058 * scripts/ipython: moved shell selection into a factory function
3062 * scripts/ipython: moved shell selection into a factory function
3059 in Shell.py, to keep the starter script to a minimum.
3063 in Shell.py, to keep the starter script to a minimum.
3060
3064
3061 2004-08-25 Fernando Perez <fperez@colorado.edu>
3065 2004-08-25 Fernando Perez <fperez@colorado.edu>
3062
3066
3063 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3067 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3064 John. Along with some recent changes he made to matplotlib, the
3068 John. Along with some recent changes he made to matplotlib, the
3065 next versions of both systems should work very well together.
3069 next versions of both systems should work very well together.
3066
3070
3067 2004-08-24 Fernando Perez <fperez@colorado.edu>
3071 2004-08-24 Fernando Perez <fperez@colorado.edu>
3068
3072
3069 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3073 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3070 tried to switch the profiling to using hotshot, but I'm getting
3074 tried to switch the profiling to using hotshot, but I'm getting
3071 strange errors from prof.runctx() there. I may be misreading the
3075 strange errors from prof.runctx() there. I may be misreading the
3072 docs, but it looks weird. For now the profiling code will
3076 docs, but it looks weird. For now the profiling code will
3073 continue to use the standard profiler.
3077 continue to use the standard profiler.
3074
3078
3075 2004-08-23 Fernando Perez <fperez@colorado.edu>
3079 2004-08-23 Fernando Perez <fperez@colorado.edu>
3076
3080
3077 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3081 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3078 threaded shell, by John Hunter. It's not quite ready yet, but
3082 threaded shell, by John Hunter. It's not quite ready yet, but
3079 close.
3083 close.
3080
3084
3081 2004-08-22 Fernando Perez <fperez@colorado.edu>
3085 2004-08-22 Fernando Perez <fperez@colorado.edu>
3082
3086
3083 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3087 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3084 in Magic and ultraTB.
3088 in Magic and ultraTB.
3085
3089
3086 * ipython.1: document threading options in manpage.
3090 * ipython.1: document threading options in manpage.
3087
3091
3088 * scripts/ipython: Changed name of -thread option to -gthread,
3092 * scripts/ipython: Changed name of -thread option to -gthread,
3089 since this is GTK specific. I want to leave the door open for a
3093 since this is GTK specific. I want to leave the door open for a
3090 -wthread option for WX, which will most likely be necessary. This
3094 -wthread option for WX, which will most likely be necessary. This
3091 change affects usage and ipmaker as well.
3095 change affects usage and ipmaker as well.
3092
3096
3093 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3097 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3094 handle the matplotlib shell issues. Code by John Hunter
3098 handle the matplotlib shell issues. Code by John Hunter
3095 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3099 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3096 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3100 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3097 broken (and disabled for end users) for now, but it puts the
3101 broken (and disabled for end users) for now, but it puts the
3098 infrastructure in place.
3102 infrastructure in place.
3099
3103
3100 2004-08-21 Fernando Perez <fperez@colorado.edu>
3104 2004-08-21 Fernando Perez <fperez@colorado.edu>
3101
3105
3102 * ipythonrc-pylab: Add matplotlib support.
3106 * ipythonrc-pylab: Add matplotlib support.
3103
3107
3104 * matplotlib_config.py: new files for matplotlib support, part of
3108 * matplotlib_config.py: new files for matplotlib support, part of
3105 the pylab profile.
3109 the pylab profile.
3106
3110
3107 * IPython/usage.py (__doc__): documented the threading options.
3111 * IPython/usage.py (__doc__): documented the threading options.
3108
3112
3109 2004-08-20 Fernando Perez <fperez@colorado.edu>
3113 2004-08-20 Fernando Perez <fperez@colorado.edu>
3110
3114
3111 * ipython: Modified the main calling routine to handle the -thread
3115 * ipython: Modified the main calling routine to handle the -thread
3112 and -mpthread options. This needs to be done as a top-level hack,
3116 and -mpthread options. This needs to be done as a top-level hack,
3113 because it determines which class to instantiate for IPython
3117 because it determines which class to instantiate for IPython
3114 itself.
3118 itself.
3115
3119
3116 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3120 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3117 classes to support multithreaded GTK operation without blocking,
3121 classes to support multithreaded GTK operation without blocking,
3118 and matplotlib with all backends. This is a lot of still very
3122 and matplotlib with all backends. This is a lot of still very
3119 experimental code, and threads are tricky. So it may still have a
3123 experimental code, and threads are tricky. So it may still have a
3120 few rough edges... This code owes a lot to
3124 few rough edges... This code owes a lot to
3121 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3125 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3122 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3126 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3123 to John Hunter for all the matplotlib work.
3127 to John Hunter for all the matplotlib work.
3124
3128
3125 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3129 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3126 options for gtk thread and matplotlib support.
3130 options for gtk thread and matplotlib support.
3127
3131
3128 2004-08-16 Fernando Perez <fperez@colorado.edu>
3132 2004-08-16 Fernando Perez <fperez@colorado.edu>
3129
3133
3130 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3134 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3131 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3135 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3132 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3136 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3133
3137
3134 2004-08-11 Fernando Perez <fperez@colorado.edu>
3138 2004-08-11 Fernando Perez <fperez@colorado.edu>
3135
3139
3136 * setup.py (isfile): Fix build so documentation gets updated for
3140 * setup.py (isfile): Fix build so documentation gets updated for
3137 rpms (it was only done for .tgz builds).
3141 rpms (it was only done for .tgz builds).
3138
3142
3139 2004-08-10 Fernando Perez <fperez@colorado.edu>
3143 2004-08-10 Fernando Perez <fperez@colorado.edu>
3140
3144
3141 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3145 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3142
3146
3143 * iplib.py : Silence syntax error exceptions in tab-completion.
3147 * iplib.py : Silence syntax error exceptions in tab-completion.
3144
3148
3145 2004-08-05 Fernando Perez <fperez@colorado.edu>
3149 2004-08-05 Fernando Perez <fperez@colorado.edu>
3146
3150
3147 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3151 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3148 'color off' mark for continuation prompts. This was causing long
3152 'color off' mark for continuation prompts. This was causing long
3149 continuation lines to mis-wrap.
3153 continuation lines to mis-wrap.
3150
3154
3151 2004-08-01 Fernando Perez <fperez@colorado.edu>
3155 2004-08-01 Fernando Perez <fperez@colorado.edu>
3152
3156
3153 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3157 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3154 for building ipython to be a parameter. All this is necessary
3158 for building ipython to be a parameter. All this is necessary
3155 right now to have a multithreaded version, but this insane
3159 right now to have a multithreaded version, but this insane
3156 non-design will be cleaned up soon. For now, it's a hack that
3160 non-design will be cleaned up soon. For now, it's a hack that
3157 works.
3161 works.
3158
3162
3159 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3163 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3160 args in various places. No bugs so far, but it's a dangerous
3164 args in various places. No bugs so far, but it's a dangerous
3161 practice.
3165 practice.
3162
3166
3163 2004-07-31 Fernando Perez <fperez@colorado.edu>
3167 2004-07-31 Fernando Perez <fperez@colorado.edu>
3164
3168
3165 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3169 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3166 fix completion of files with dots in their names under most
3170 fix completion of files with dots in their names under most
3167 profiles (pysh was OK because the completion order is different).
3171 profiles (pysh was OK because the completion order is different).
3168
3172
3169 2004-07-27 Fernando Perez <fperez@colorado.edu>
3173 2004-07-27 Fernando Perez <fperez@colorado.edu>
3170
3174
3171 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3175 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3172 keywords manually, b/c the one in keyword.py was removed in python
3176 keywords manually, b/c the one in keyword.py was removed in python
3173 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3177 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3174 This is NOT a bug under python 2.3 and earlier.
3178 This is NOT a bug under python 2.3 and earlier.
3175
3179
3176 2004-07-26 Fernando Perez <fperez@colorado.edu>
3180 2004-07-26 Fernando Perez <fperez@colorado.edu>
3177
3181
3178 * IPython/ultraTB.py (VerboseTB.text): Add another
3182 * IPython/ultraTB.py (VerboseTB.text): Add another
3179 linecache.checkcache() call to try to prevent inspect.py from
3183 linecache.checkcache() call to try to prevent inspect.py from
3180 crashing under python 2.3. I think this fixes
3184 crashing under python 2.3. I think this fixes
3181 http://www.scipy.net/roundup/ipython/issue17.
3185 http://www.scipy.net/roundup/ipython/issue17.
3182
3186
3183 2004-07-26 *** Released version 0.6.2
3187 2004-07-26 *** Released version 0.6.2
3184
3188
3185 2004-07-26 Fernando Perez <fperez@colorado.edu>
3189 2004-07-26 Fernando Perez <fperez@colorado.edu>
3186
3190
3187 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3191 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3188 fail for any number.
3192 fail for any number.
3189 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3193 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3190 empty bookmarks.
3194 empty bookmarks.
3191
3195
3192 2004-07-26 *** Released version 0.6.1
3196 2004-07-26 *** Released version 0.6.1
3193
3197
3194 2004-07-26 Fernando Perez <fperez@colorado.edu>
3198 2004-07-26 Fernando Perez <fperez@colorado.edu>
3195
3199
3196 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3200 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3197
3201
3198 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3202 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3199 escaping '()[]{}' in filenames.
3203 escaping '()[]{}' in filenames.
3200
3204
3201 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3205 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3202 Python 2.2 users who lack a proper shlex.split.
3206 Python 2.2 users who lack a proper shlex.split.
3203
3207
3204 2004-07-19 Fernando Perez <fperez@colorado.edu>
3208 2004-07-19 Fernando Perez <fperez@colorado.edu>
3205
3209
3206 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3210 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3207 for reading readline's init file. I follow the normal chain:
3211 for reading readline's init file. I follow the normal chain:
3208 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3212 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3209 report by Mike Heeter. This closes
3213 report by Mike Heeter. This closes
3210 http://www.scipy.net/roundup/ipython/issue16.
3214 http://www.scipy.net/roundup/ipython/issue16.
3211
3215
3212 2004-07-18 Fernando Perez <fperez@colorado.edu>
3216 2004-07-18 Fernando Perez <fperez@colorado.edu>
3213
3217
3214 * IPython/iplib.py (__init__): Add better handling of '\' under
3218 * IPython/iplib.py (__init__): Add better handling of '\' under
3215 Win32 for filenames. After a patch by Ville.
3219 Win32 for filenames. After a patch by Ville.
3216
3220
3217 2004-07-17 Fernando Perez <fperez@colorado.edu>
3221 2004-07-17 Fernando Perez <fperez@colorado.edu>
3218
3222
3219 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3223 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3220 autocalling would be triggered for 'foo is bar' if foo is
3224 autocalling would be triggered for 'foo is bar' if foo is
3221 callable. I also cleaned up the autocall detection code to use a
3225 callable. I also cleaned up the autocall detection code to use a
3222 regexp, which is faster. Bug reported by Alexander Schmolck.
3226 regexp, which is faster. Bug reported by Alexander Schmolck.
3223
3227
3224 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3228 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3225 '?' in them would confuse the help system. Reported by Alex
3229 '?' in them would confuse the help system. Reported by Alex
3226 Schmolck.
3230 Schmolck.
3227
3231
3228 2004-07-16 Fernando Perez <fperez@colorado.edu>
3232 2004-07-16 Fernando Perez <fperez@colorado.edu>
3229
3233
3230 * IPython/GnuplotInteractive.py (__all__): added plot2.
3234 * IPython/GnuplotInteractive.py (__all__): added plot2.
3231
3235
3232 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3236 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3233 plotting dictionaries, lists or tuples of 1d arrays.
3237 plotting dictionaries, lists or tuples of 1d arrays.
3234
3238
3235 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3239 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3236 optimizations.
3240 optimizations.
3237
3241
3238 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3242 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3239 the information which was there from Janko's original IPP code:
3243 the information which was there from Janko's original IPP code:
3240
3244
3241 03.05.99 20:53 porto.ifm.uni-kiel.de
3245 03.05.99 20:53 porto.ifm.uni-kiel.de
3242 --Started changelog.
3246 --Started changelog.
3243 --make clear do what it say it does
3247 --make clear do what it say it does
3244 --added pretty output of lines from inputcache
3248 --added pretty output of lines from inputcache
3245 --Made Logger a mixin class, simplifies handling of switches
3249 --Made Logger a mixin class, simplifies handling of switches
3246 --Added own completer class. .string<TAB> expands to last history
3250 --Added own completer class. .string<TAB> expands to last history
3247 line which starts with string. The new expansion is also present
3251 line which starts with string. The new expansion is also present
3248 with Ctrl-r from the readline library. But this shows, who this
3252 with Ctrl-r from the readline library. But this shows, who this
3249 can be done for other cases.
3253 can be done for other cases.
3250 --Added convention that all shell functions should accept a
3254 --Added convention that all shell functions should accept a
3251 parameter_string This opens the door for different behaviour for
3255 parameter_string This opens the door for different behaviour for
3252 each function. @cd is a good example of this.
3256 each function. @cd is a good example of this.
3253
3257
3254 04.05.99 12:12 porto.ifm.uni-kiel.de
3258 04.05.99 12:12 porto.ifm.uni-kiel.de
3255 --added logfile rotation
3259 --added logfile rotation
3256 --added new mainloop method which freezes first the namespace
3260 --added new mainloop method which freezes first the namespace
3257
3261
3258 07.05.99 21:24 porto.ifm.uni-kiel.de
3262 07.05.99 21:24 porto.ifm.uni-kiel.de
3259 --added the docreader classes. Now there is a help system.
3263 --added the docreader classes. Now there is a help system.
3260 -This is only a first try. Currently it's not easy to put new
3264 -This is only a first try. Currently it's not easy to put new
3261 stuff in the indices. But this is the way to go. Info would be
3265 stuff in the indices. But this is the way to go. Info would be
3262 better, but HTML is every where and not everybody has an info
3266 better, but HTML is every where and not everybody has an info
3263 system installed and it's not so easy to change html-docs to info.
3267 system installed and it's not so easy to change html-docs to info.
3264 --added global logfile option
3268 --added global logfile option
3265 --there is now a hook for object inspection method pinfo needs to
3269 --there is now a hook for object inspection method pinfo needs to
3266 be provided for this. Can be reached by two '??'.
3270 be provided for this. Can be reached by two '??'.
3267
3271
3268 08.05.99 20:51 porto.ifm.uni-kiel.de
3272 08.05.99 20:51 porto.ifm.uni-kiel.de
3269 --added a README
3273 --added a README
3270 --bug in rc file. Something has changed so functions in the rc
3274 --bug in rc file. Something has changed so functions in the rc
3271 file need to reference the shell and not self. Not clear if it's a
3275 file need to reference the shell and not self. Not clear if it's a
3272 bug or feature.
3276 bug or feature.
3273 --changed rc file for new behavior
3277 --changed rc file for new behavior
3274
3278
3275 2004-07-15 Fernando Perez <fperez@colorado.edu>
3279 2004-07-15 Fernando Perez <fperez@colorado.edu>
3276
3280
3277 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3281 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3278 cache was falling out of sync in bizarre manners when multi-line
3282 cache was falling out of sync in bizarre manners when multi-line
3279 input was present. Minor optimizations and cleanup.
3283 input was present. Minor optimizations and cleanup.
3280
3284
3281 (Logger): Remove old Changelog info for cleanup. This is the
3285 (Logger): Remove old Changelog info for cleanup. This is the
3282 information which was there from Janko's original code:
3286 information which was there from Janko's original code:
3283
3287
3284 Changes to Logger: - made the default log filename a parameter
3288 Changes to Logger: - made the default log filename a parameter
3285
3289
3286 - put a check for lines beginning with !@? in log(). Needed
3290 - put a check for lines beginning with !@? in log(). Needed
3287 (even if the handlers properly log their lines) for mid-session
3291 (even if the handlers properly log their lines) for mid-session
3288 logging activation to work properly. Without this, lines logged
3292 logging activation to work properly. Without this, lines logged
3289 in mid session, which get read from the cache, would end up
3293 in mid session, which get read from the cache, would end up
3290 'bare' (with !@? in the open) in the log. Now they are caught
3294 'bare' (with !@? in the open) in the log. Now they are caught
3291 and prepended with a #.
3295 and prepended with a #.
3292
3296
3293 * IPython/iplib.py (InteractiveShell.init_readline): added check
3297 * IPython/iplib.py (InteractiveShell.init_readline): added check
3294 in case MagicCompleter fails to be defined, so we don't crash.
3298 in case MagicCompleter fails to be defined, so we don't crash.
3295
3299
3296 2004-07-13 Fernando Perez <fperez@colorado.edu>
3300 2004-07-13 Fernando Perez <fperez@colorado.edu>
3297
3301
3298 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3302 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3299 of EPS if the requested filename ends in '.eps'.
3303 of EPS if the requested filename ends in '.eps'.
3300
3304
3301 2004-07-04 Fernando Perez <fperez@colorado.edu>
3305 2004-07-04 Fernando Perez <fperez@colorado.edu>
3302
3306
3303 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3307 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3304 escaping of quotes when calling the shell.
3308 escaping of quotes when calling the shell.
3305
3309
3306 2004-07-02 Fernando Perez <fperez@colorado.edu>
3310 2004-07-02 Fernando Perez <fperez@colorado.edu>
3307
3311
3308 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3312 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3309 gettext not working because we were clobbering '_'. Fixes
3313 gettext not working because we were clobbering '_'. Fixes
3310 http://www.scipy.net/roundup/ipython/issue6.
3314 http://www.scipy.net/roundup/ipython/issue6.
3311
3315
3312 2004-07-01 Fernando Perez <fperez@colorado.edu>
3316 2004-07-01 Fernando Perez <fperez@colorado.edu>
3313
3317
3314 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3318 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3315 into @cd. Patch by Ville.
3319 into @cd. Patch by Ville.
3316
3320
3317 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3321 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3318 new function to store things after ipmaker runs. Patch by Ville.
3322 new function to store things after ipmaker runs. Patch by Ville.
3319 Eventually this will go away once ipmaker is removed and the class
3323 Eventually this will go away once ipmaker is removed and the class
3320 gets cleaned up, but for now it's ok. Key functionality here is
3324 gets cleaned up, but for now it's ok. Key functionality here is
3321 the addition of the persistent storage mechanism, a dict for
3325 the addition of the persistent storage mechanism, a dict for
3322 keeping data across sessions (for now just bookmarks, but more can
3326 keeping data across sessions (for now just bookmarks, but more can
3323 be implemented later).
3327 be implemented later).
3324
3328
3325 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3329 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3326 persistent across sections. Patch by Ville, I modified it
3330 persistent across sections. Patch by Ville, I modified it
3327 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3331 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3328 added a '-l' option to list all bookmarks.
3332 added a '-l' option to list all bookmarks.
3329
3333
3330 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3334 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3331 center for cleanup. Registered with atexit.register(). I moved
3335 center for cleanup. Registered with atexit.register(). I moved
3332 here the old exit_cleanup(). After a patch by Ville.
3336 here the old exit_cleanup(). After a patch by Ville.
3333
3337
3334 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3338 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3335 characters in the hacked shlex_split for python 2.2.
3339 characters in the hacked shlex_split for python 2.2.
3336
3340
3337 * IPython/iplib.py (file_matches): more fixes to filenames with
3341 * IPython/iplib.py (file_matches): more fixes to filenames with
3338 whitespace in them. It's not perfect, but limitations in python's
3342 whitespace in them. It's not perfect, but limitations in python's
3339 readline make it impossible to go further.
3343 readline make it impossible to go further.
3340
3344
3341 2004-06-29 Fernando Perez <fperez@colorado.edu>
3345 2004-06-29 Fernando Perez <fperez@colorado.edu>
3342
3346
3343 * IPython/iplib.py (file_matches): escape whitespace correctly in
3347 * IPython/iplib.py (file_matches): escape whitespace correctly in
3344 filename completions. Bug reported by Ville.
3348 filename completions. Bug reported by Ville.
3345
3349
3346 2004-06-28 Fernando Perez <fperez@colorado.edu>
3350 2004-06-28 Fernando Perez <fperez@colorado.edu>
3347
3351
3348 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3352 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3349 the history file will be called 'history-PROFNAME' (or just
3353 the history file will be called 'history-PROFNAME' (or just
3350 'history' if no profile is loaded). I was getting annoyed at
3354 'history' if no profile is loaded). I was getting annoyed at
3351 getting my Numerical work history clobbered by pysh sessions.
3355 getting my Numerical work history clobbered by pysh sessions.
3352
3356
3353 * IPython/iplib.py (InteractiveShell.__init__): Internal
3357 * IPython/iplib.py (InteractiveShell.__init__): Internal
3354 getoutputerror() function so that we can honor the system_verbose
3358 getoutputerror() function so that we can honor the system_verbose
3355 flag for _all_ system calls. I also added escaping of #
3359 flag for _all_ system calls. I also added escaping of #
3356 characters here to avoid confusing Itpl.
3360 characters here to avoid confusing Itpl.
3357
3361
3358 * IPython/Magic.py (shlex_split): removed call to shell in
3362 * IPython/Magic.py (shlex_split): removed call to shell in
3359 parse_options and replaced it with shlex.split(). The annoying
3363 parse_options and replaced it with shlex.split(). The annoying
3360 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3364 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3361 to backport it from 2.3, with several frail hacks (the shlex
3365 to backport it from 2.3, with several frail hacks (the shlex
3362 module is rather limited in 2.2). Thanks to a suggestion by Ville
3366 module is rather limited in 2.2). Thanks to a suggestion by Ville
3363 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3367 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3364 problem.
3368 problem.
3365
3369
3366 (Magic.magic_system_verbose): new toggle to print the actual
3370 (Magic.magic_system_verbose): new toggle to print the actual
3367 system calls made by ipython. Mainly for debugging purposes.
3371 system calls made by ipython. Mainly for debugging purposes.
3368
3372
3369 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3373 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3370 doesn't support persistence. Reported (and fix suggested) by
3374 doesn't support persistence. Reported (and fix suggested) by
3371 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3375 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3372
3376
3373 2004-06-26 Fernando Perez <fperez@colorado.edu>
3377 2004-06-26 Fernando Perez <fperez@colorado.edu>
3374
3378
3375 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3379 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3376 continue prompts.
3380 continue prompts.
3377
3381
3378 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3382 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3379 function (basically a big docstring) and a few more things here to
3383 function (basically a big docstring) and a few more things here to
3380 speedup startup. pysh.py is now very lightweight. We want because
3384 speedup startup. pysh.py is now very lightweight. We want because
3381 it gets execfile'd, while InterpreterExec gets imported, so
3385 it gets execfile'd, while InterpreterExec gets imported, so
3382 byte-compilation saves time.
3386 byte-compilation saves time.
3383
3387
3384 2004-06-25 Fernando Perez <fperez@colorado.edu>
3388 2004-06-25 Fernando Perez <fperez@colorado.edu>
3385
3389
3386 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3390 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3387 -NUM', which was recently broken.
3391 -NUM', which was recently broken.
3388
3392
3389 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3393 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3390 in multi-line input (but not !!, which doesn't make sense there).
3394 in multi-line input (but not !!, which doesn't make sense there).
3391
3395
3392 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3396 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3393 It's just too useful, and people can turn it off in the less
3397 It's just too useful, and people can turn it off in the less
3394 common cases where it's a problem.
3398 common cases where it's a problem.
3395
3399
3396 2004-06-24 Fernando Perez <fperez@colorado.edu>
3400 2004-06-24 Fernando Perez <fperez@colorado.edu>
3397
3401
3398 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3402 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3399 special syntaxes (like alias calling) is now allied in multi-line
3403 special syntaxes (like alias calling) is now allied in multi-line
3400 input. This is still _very_ experimental, but it's necessary for
3404 input. This is still _very_ experimental, but it's necessary for
3401 efficient shell usage combining python looping syntax with system
3405 efficient shell usage combining python looping syntax with system
3402 calls. For now it's restricted to aliases, I don't think it
3406 calls. For now it's restricted to aliases, I don't think it
3403 really even makes sense to have this for magics.
3407 really even makes sense to have this for magics.
3404
3408
3405 2004-06-23 Fernando Perez <fperez@colorado.edu>
3409 2004-06-23 Fernando Perez <fperez@colorado.edu>
3406
3410
3407 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3411 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3408 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3412 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3409
3413
3410 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3414 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3411 extensions under Windows (after code sent by Gary Bishop). The
3415 extensions under Windows (after code sent by Gary Bishop). The
3412 extensions considered 'executable' are stored in IPython's rc
3416 extensions considered 'executable' are stored in IPython's rc
3413 structure as win_exec_ext.
3417 structure as win_exec_ext.
3414
3418
3415 * IPython/genutils.py (shell): new function, like system() but
3419 * IPython/genutils.py (shell): new function, like system() but
3416 without return value. Very useful for interactive shell work.
3420 without return value. Very useful for interactive shell work.
3417
3421
3418 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3422 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3419 delete aliases.
3423 delete aliases.
3420
3424
3421 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3425 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3422 sure that the alias table doesn't contain python keywords.
3426 sure that the alias table doesn't contain python keywords.
3423
3427
3424 2004-06-21 Fernando Perez <fperez@colorado.edu>
3428 2004-06-21 Fernando Perez <fperez@colorado.edu>
3425
3429
3426 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3430 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3427 non-existent items are found in $PATH. Reported by Thorsten.
3431 non-existent items are found in $PATH. Reported by Thorsten.
3428
3432
3429 2004-06-20 Fernando Perez <fperez@colorado.edu>
3433 2004-06-20 Fernando Perez <fperez@colorado.edu>
3430
3434
3431 * IPython/iplib.py (complete): modified the completer so that the
3435 * IPython/iplib.py (complete): modified the completer so that the
3432 order of priorities can be easily changed at runtime.
3436 order of priorities can be easily changed at runtime.
3433
3437
3434 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3438 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3435 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3439 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3436
3440
3437 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3441 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3438 expand Python variables prepended with $ in all system calls. The
3442 expand Python variables prepended with $ in all system calls. The
3439 same was done to InteractiveShell.handle_shell_escape. Now all
3443 same was done to InteractiveShell.handle_shell_escape. Now all
3440 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3444 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3441 expansion of python variables and expressions according to the
3445 expansion of python variables and expressions according to the
3442 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3446 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3443
3447
3444 Though PEP-215 has been rejected, a similar (but simpler) one
3448 Though PEP-215 has been rejected, a similar (but simpler) one
3445 seems like it will go into Python 2.4, PEP-292 -
3449 seems like it will go into Python 2.4, PEP-292 -
3446 http://www.python.org/peps/pep-0292.html.
3450 http://www.python.org/peps/pep-0292.html.
3447
3451
3448 I'll keep the full syntax of PEP-215, since IPython has since the
3452 I'll keep the full syntax of PEP-215, since IPython has since the
3449 start used Ka-Ping Yee's reference implementation discussed there
3453 start used Ka-Ping Yee's reference implementation discussed there
3450 (Itpl), and I actually like the powerful semantics it offers.
3454 (Itpl), and I actually like the powerful semantics it offers.
3451
3455
3452 In order to access normal shell variables, the $ has to be escaped
3456 In order to access normal shell variables, the $ has to be escaped
3453 via an extra $. For example:
3457 via an extra $. For example:
3454
3458
3455 In [7]: PATH='a python variable'
3459 In [7]: PATH='a python variable'
3456
3460
3457 In [8]: !echo $PATH
3461 In [8]: !echo $PATH
3458 a python variable
3462 a python variable
3459
3463
3460 In [9]: !echo $$PATH
3464 In [9]: !echo $$PATH
3461 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3465 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3462
3466
3463 (Magic.parse_options): escape $ so the shell doesn't evaluate
3467 (Magic.parse_options): escape $ so the shell doesn't evaluate
3464 things prematurely.
3468 things prematurely.
3465
3469
3466 * IPython/iplib.py (InteractiveShell.call_alias): added the
3470 * IPython/iplib.py (InteractiveShell.call_alias): added the
3467 ability for aliases to expand python variables via $.
3471 ability for aliases to expand python variables via $.
3468
3472
3469 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3473 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3470 system, now there's a @rehash/@rehashx pair of magics. These work
3474 system, now there's a @rehash/@rehashx pair of magics. These work
3471 like the csh rehash command, and can be invoked at any time. They
3475 like the csh rehash command, and can be invoked at any time. They
3472 build a table of aliases to everything in the user's $PATH
3476 build a table of aliases to everything in the user's $PATH
3473 (@rehash uses everything, @rehashx is slower but only adds
3477 (@rehash uses everything, @rehashx is slower but only adds
3474 executable files). With this, the pysh.py-based shell profile can
3478 executable files). With this, the pysh.py-based shell profile can
3475 now simply call rehash upon startup, and full access to all
3479 now simply call rehash upon startup, and full access to all
3476 programs in the user's path is obtained.
3480 programs in the user's path is obtained.
3477
3481
3478 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3482 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3479 functionality is now fully in place. I removed the old dynamic
3483 functionality is now fully in place. I removed the old dynamic
3480 code generation based approach, in favor of a much lighter one
3484 code generation based approach, in favor of a much lighter one
3481 based on a simple dict. The advantage is that this allows me to
3485 based on a simple dict. The advantage is that this allows me to
3482 now have thousands of aliases with negligible cost (unthinkable
3486 now have thousands of aliases with negligible cost (unthinkable
3483 with the old system).
3487 with the old system).
3484
3488
3485 2004-06-19 Fernando Perez <fperez@colorado.edu>
3489 2004-06-19 Fernando Perez <fperez@colorado.edu>
3486
3490
3487 * IPython/iplib.py (__init__): extended MagicCompleter class to
3491 * IPython/iplib.py (__init__): extended MagicCompleter class to
3488 also complete (last in priority) on user aliases.
3492 also complete (last in priority) on user aliases.
3489
3493
3490 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3494 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3491 call to eval.
3495 call to eval.
3492 (ItplNS.__init__): Added a new class which functions like Itpl,
3496 (ItplNS.__init__): Added a new class which functions like Itpl,
3493 but allows configuring the namespace for the evaluation to occur
3497 but allows configuring the namespace for the evaluation to occur
3494 in.
3498 in.
3495
3499
3496 2004-06-18 Fernando Perez <fperez@colorado.edu>
3500 2004-06-18 Fernando Perez <fperez@colorado.edu>
3497
3501
3498 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3502 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3499 better message when 'exit' or 'quit' are typed (a common newbie
3503 better message when 'exit' or 'quit' are typed (a common newbie
3500 confusion).
3504 confusion).
3501
3505
3502 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3506 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3503 check for Windows users.
3507 check for Windows users.
3504
3508
3505 * IPython/iplib.py (InteractiveShell.user_setup): removed
3509 * IPython/iplib.py (InteractiveShell.user_setup): removed
3506 disabling of colors for Windows. I'll test at runtime and issue a
3510 disabling of colors for Windows. I'll test at runtime and issue a
3507 warning if Gary's readline isn't found, as to nudge users to
3511 warning if Gary's readline isn't found, as to nudge users to
3508 download it.
3512 download it.
3509
3513
3510 2004-06-16 Fernando Perez <fperez@colorado.edu>
3514 2004-06-16 Fernando Perez <fperez@colorado.edu>
3511
3515
3512 * IPython/genutils.py (Stream.__init__): changed to print errors
3516 * IPython/genutils.py (Stream.__init__): changed to print errors
3513 to sys.stderr. I had a circular dependency here. Now it's
3517 to sys.stderr. I had a circular dependency here. Now it's
3514 possible to run ipython as IDLE's shell (consider this pre-alpha,
3518 possible to run ipython as IDLE's shell (consider this pre-alpha,
3515 since true stdout things end up in the starting terminal instead
3519 since true stdout things end up in the starting terminal instead
3516 of IDLE's out).
3520 of IDLE's out).
3517
3521
3518 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3522 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3519 users who haven't # updated their prompt_in2 definitions. Remove
3523 users who haven't # updated their prompt_in2 definitions. Remove
3520 eventually.
3524 eventually.
3521 (multiple_replace): added credit to original ASPN recipe.
3525 (multiple_replace): added credit to original ASPN recipe.
3522
3526
3523 2004-06-15 Fernando Perez <fperez@colorado.edu>
3527 2004-06-15 Fernando Perez <fperez@colorado.edu>
3524
3528
3525 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3529 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3526 list of auto-defined aliases.
3530 list of auto-defined aliases.
3527
3531
3528 2004-06-13 Fernando Perez <fperez@colorado.edu>
3532 2004-06-13 Fernando Perez <fperez@colorado.edu>
3529
3533
3530 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3534 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3531 install was really requested (so setup.py can be used for other
3535 install was really requested (so setup.py can be used for other
3532 things under Windows).
3536 things under Windows).
3533
3537
3534 2004-06-10 Fernando Perez <fperez@colorado.edu>
3538 2004-06-10 Fernando Perez <fperez@colorado.edu>
3535
3539
3536 * IPython/Logger.py (Logger.create_log): Manually remove any old
3540 * IPython/Logger.py (Logger.create_log): Manually remove any old
3537 backup, since os.remove may fail under Windows. Fixes bug
3541 backup, since os.remove may fail under Windows. Fixes bug
3538 reported by Thorsten.
3542 reported by Thorsten.
3539
3543
3540 2004-06-09 Fernando Perez <fperez@colorado.edu>
3544 2004-06-09 Fernando Perez <fperez@colorado.edu>
3541
3545
3542 * examples/example-embed.py: fixed all references to %n (replaced
3546 * examples/example-embed.py: fixed all references to %n (replaced
3543 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3547 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3544 for all examples and the manual as well.
3548 for all examples and the manual as well.
3545
3549
3546 2004-06-08 Fernando Perez <fperez@colorado.edu>
3550 2004-06-08 Fernando Perez <fperez@colorado.edu>
3547
3551
3548 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3552 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3549 alignment and color management. All 3 prompt subsystems now
3553 alignment and color management. All 3 prompt subsystems now
3550 inherit from BasePrompt.
3554 inherit from BasePrompt.
3551
3555
3552 * tools/release: updates for windows installer build and tag rpms
3556 * tools/release: updates for windows installer build and tag rpms
3553 with python version (since paths are fixed).
3557 with python version (since paths are fixed).
3554
3558
3555 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3559 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3556 which will become eventually obsolete. Also fixed the default
3560 which will become eventually obsolete. Also fixed the default
3557 prompt_in2 to use \D, so at least new users start with the correct
3561 prompt_in2 to use \D, so at least new users start with the correct
3558 defaults.
3562 defaults.
3559 WARNING: Users with existing ipythonrc files will need to apply
3563 WARNING: Users with existing ipythonrc files will need to apply
3560 this fix manually!
3564 this fix manually!
3561
3565
3562 * setup.py: make windows installer (.exe). This is finally the
3566 * setup.py: make windows installer (.exe). This is finally the
3563 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3567 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3564 which I hadn't included because it required Python 2.3 (or recent
3568 which I hadn't included because it required Python 2.3 (or recent
3565 distutils).
3569 distutils).
3566
3570
3567 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3571 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3568 usage of new '\D' escape.
3572 usage of new '\D' escape.
3569
3573
3570 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3574 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3571 lacks os.getuid())
3575 lacks os.getuid())
3572 (CachedOutput.set_colors): Added the ability to turn coloring
3576 (CachedOutput.set_colors): Added the ability to turn coloring
3573 on/off with @colors even for manually defined prompt colors. It
3577 on/off with @colors even for manually defined prompt colors. It
3574 uses a nasty global, but it works safely and via the generic color
3578 uses a nasty global, but it works safely and via the generic color
3575 handling mechanism.
3579 handling mechanism.
3576 (Prompt2.__init__): Introduced new escape '\D' for continuation
3580 (Prompt2.__init__): Introduced new escape '\D' for continuation
3577 prompts. It represents the counter ('\#') as dots.
3581 prompts. It represents the counter ('\#') as dots.
3578 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3582 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3579 need to update their ipythonrc files and replace '%n' with '\D' in
3583 need to update their ipythonrc files and replace '%n' with '\D' in
3580 their prompt_in2 settings everywhere. Sorry, but there's
3584 their prompt_in2 settings everywhere. Sorry, but there's
3581 otherwise no clean way to get all prompts to properly align. The
3585 otherwise no clean way to get all prompts to properly align. The
3582 ipythonrc shipped with IPython has been updated.
3586 ipythonrc shipped with IPython has been updated.
3583
3587
3584 2004-06-07 Fernando Perez <fperez@colorado.edu>
3588 2004-06-07 Fernando Perez <fperez@colorado.edu>
3585
3589
3586 * setup.py (isfile): Pass local_icons option to latex2html, so the
3590 * setup.py (isfile): Pass local_icons option to latex2html, so the
3587 resulting HTML file is self-contained. Thanks to
3591 resulting HTML file is self-contained. Thanks to
3588 dryice-AT-liu.com.cn for the tip.
3592 dryice-AT-liu.com.cn for the tip.
3589
3593
3590 * pysh.py: I created a new profile 'shell', which implements a
3594 * pysh.py: I created a new profile 'shell', which implements a
3591 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3595 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3592 system shell, nor will it become one anytime soon. It's mainly
3596 system shell, nor will it become one anytime soon. It's mainly
3593 meant to illustrate the use of the new flexible bash-like prompts.
3597 meant to illustrate the use of the new flexible bash-like prompts.
3594 I guess it could be used by hardy souls for true shell management,
3598 I guess it could be used by hardy souls for true shell management,
3595 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3599 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3596 profile. This uses the InterpreterExec extension provided by
3600 profile. This uses the InterpreterExec extension provided by
3597 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3601 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3598
3602
3599 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3603 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3600 auto-align itself with the length of the previous input prompt
3604 auto-align itself with the length of the previous input prompt
3601 (taking into account the invisible color escapes).
3605 (taking into account the invisible color escapes).
3602 (CachedOutput.__init__): Large restructuring of this class. Now
3606 (CachedOutput.__init__): Large restructuring of this class. Now
3603 all three prompts (primary1, primary2, output) are proper objects,
3607 all three prompts (primary1, primary2, output) are proper objects,
3604 managed by the 'parent' CachedOutput class. The code is still a
3608 managed by the 'parent' CachedOutput class. The code is still a
3605 bit hackish (all prompts share state via a pointer to the cache),
3609 bit hackish (all prompts share state via a pointer to the cache),
3606 but it's overall far cleaner than before.
3610 but it's overall far cleaner than before.
3607
3611
3608 * IPython/genutils.py (getoutputerror): modified to add verbose,
3612 * IPython/genutils.py (getoutputerror): modified to add verbose,
3609 debug and header options. This makes the interface of all getout*
3613 debug and header options. This makes the interface of all getout*
3610 functions uniform.
3614 functions uniform.
3611 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3615 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3612
3616
3613 * IPython/Magic.py (Magic.default_option): added a function to
3617 * IPython/Magic.py (Magic.default_option): added a function to
3614 allow registering default options for any magic command. This
3618 allow registering default options for any magic command. This
3615 makes it easy to have profiles which customize the magics globally
3619 makes it easy to have profiles which customize the magics globally
3616 for a certain use. The values set through this function are
3620 for a certain use. The values set through this function are
3617 picked up by the parse_options() method, which all magics should
3621 picked up by the parse_options() method, which all magics should
3618 use to parse their options.
3622 use to parse their options.
3619
3623
3620 * IPython/genutils.py (warn): modified the warnings framework to
3624 * IPython/genutils.py (warn): modified the warnings framework to
3621 use the Term I/O class. I'm trying to slowly unify all of
3625 use the Term I/O class. I'm trying to slowly unify all of
3622 IPython's I/O operations to pass through Term.
3626 IPython's I/O operations to pass through Term.
3623
3627
3624 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3628 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3625 the secondary prompt to correctly match the length of the primary
3629 the secondary prompt to correctly match the length of the primary
3626 one for any prompt. Now multi-line code will properly line up
3630 one for any prompt. Now multi-line code will properly line up
3627 even for path dependent prompts, such as the new ones available
3631 even for path dependent prompts, such as the new ones available
3628 via the prompt_specials.
3632 via the prompt_specials.
3629
3633
3630 2004-06-06 Fernando Perez <fperez@colorado.edu>
3634 2004-06-06 Fernando Perez <fperez@colorado.edu>
3631
3635
3632 * IPython/Prompts.py (prompt_specials): Added the ability to have
3636 * IPython/Prompts.py (prompt_specials): Added the ability to have
3633 bash-like special sequences in the prompts, which get
3637 bash-like special sequences in the prompts, which get
3634 automatically expanded. Things like hostname, current working
3638 automatically expanded. Things like hostname, current working
3635 directory and username are implemented already, but it's easy to
3639 directory and username are implemented already, but it's easy to
3636 add more in the future. Thanks to a patch by W.J. van der Laan
3640 add more in the future. Thanks to a patch by W.J. van der Laan
3637 <gnufnork-AT-hetdigitalegat.nl>
3641 <gnufnork-AT-hetdigitalegat.nl>
3638 (prompt_specials): Added color support for prompt strings, so
3642 (prompt_specials): Added color support for prompt strings, so
3639 users can define arbitrary color setups for their prompts.
3643 users can define arbitrary color setups for their prompts.
3640
3644
3641 2004-06-05 Fernando Perez <fperez@colorado.edu>
3645 2004-06-05 Fernando Perez <fperez@colorado.edu>
3642
3646
3643 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3647 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3644 code to load Gary Bishop's readline and configure it
3648 code to load Gary Bishop's readline and configure it
3645 automatically. Thanks to Gary for help on this.
3649 automatically. Thanks to Gary for help on this.
3646
3650
3647 2004-06-01 Fernando Perez <fperez@colorado.edu>
3651 2004-06-01 Fernando Perez <fperez@colorado.edu>
3648
3652
3649 * IPython/Logger.py (Logger.create_log): fix bug for logging
3653 * IPython/Logger.py (Logger.create_log): fix bug for logging
3650 with no filename (previous fix was incomplete).
3654 with no filename (previous fix was incomplete).
3651
3655
3652 2004-05-25 Fernando Perez <fperez@colorado.edu>
3656 2004-05-25 Fernando Perez <fperez@colorado.edu>
3653
3657
3654 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3658 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3655 parens would get passed to the shell.
3659 parens would get passed to the shell.
3656
3660
3657 2004-05-20 Fernando Perez <fperez@colorado.edu>
3661 2004-05-20 Fernando Perez <fperez@colorado.edu>
3658
3662
3659 * IPython/Magic.py (Magic.magic_prun): changed default profile
3663 * IPython/Magic.py (Magic.magic_prun): changed default profile
3660 sort order to 'time' (the more common profiling need).
3664 sort order to 'time' (the more common profiling need).
3661
3665
3662 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3666 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3663 so that source code shown is guaranteed in sync with the file on
3667 so that source code shown is guaranteed in sync with the file on
3664 disk (also changed in psource). Similar fix to the one for
3668 disk (also changed in psource). Similar fix to the one for
3665 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3669 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3666 <yann.ledu-AT-noos.fr>.
3670 <yann.ledu-AT-noos.fr>.
3667
3671
3668 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3672 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3669 with a single option would not be correctly parsed. Closes
3673 with a single option would not be correctly parsed. Closes
3670 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3674 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3671 introduced in 0.6.0 (on 2004-05-06).
3675 introduced in 0.6.0 (on 2004-05-06).
3672
3676
3673 2004-05-13 *** Released version 0.6.0
3677 2004-05-13 *** Released version 0.6.0
3674
3678
3675 2004-05-13 Fernando Perez <fperez@colorado.edu>
3679 2004-05-13 Fernando Perez <fperez@colorado.edu>
3676
3680
3677 * debian/: Added debian/ directory to CVS, so that debian support
3681 * debian/: Added debian/ directory to CVS, so that debian support
3678 is publicly accessible. The debian package is maintained by Jack
3682 is publicly accessible. The debian package is maintained by Jack
3679 Moffit <jack-AT-xiph.org>.
3683 Moffit <jack-AT-xiph.org>.
3680
3684
3681 * Documentation: included the notes about an ipython-based system
3685 * Documentation: included the notes about an ipython-based system
3682 shell (the hypothetical 'pysh') into the new_design.pdf document,
3686 shell (the hypothetical 'pysh') into the new_design.pdf document,
3683 so that these ideas get distributed to users along with the
3687 so that these ideas get distributed to users along with the
3684 official documentation.
3688 official documentation.
3685
3689
3686 2004-05-10 Fernando Perez <fperez@colorado.edu>
3690 2004-05-10 Fernando Perez <fperez@colorado.edu>
3687
3691
3688 * IPython/Logger.py (Logger.create_log): fix recently introduced
3692 * IPython/Logger.py (Logger.create_log): fix recently introduced
3689 bug (misindented line) where logstart would fail when not given an
3693 bug (misindented line) where logstart would fail when not given an
3690 explicit filename.
3694 explicit filename.
3691
3695
3692 2004-05-09 Fernando Perez <fperez@colorado.edu>
3696 2004-05-09 Fernando Perez <fperez@colorado.edu>
3693
3697
3694 * IPython/Magic.py (Magic.parse_options): skip system call when
3698 * IPython/Magic.py (Magic.parse_options): skip system call when
3695 there are no options to look for. Faster, cleaner for the common
3699 there are no options to look for. Faster, cleaner for the common
3696 case.
3700 case.
3697
3701
3698 * Documentation: many updates to the manual: describing Windows
3702 * Documentation: many updates to the manual: describing Windows
3699 support better, Gnuplot updates, credits, misc small stuff. Also
3703 support better, Gnuplot updates, credits, misc small stuff. Also
3700 updated the new_design doc a bit.
3704 updated the new_design doc a bit.
3701
3705
3702 2004-05-06 *** Released version 0.6.0.rc1
3706 2004-05-06 *** Released version 0.6.0.rc1
3703
3707
3704 2004-05-06 Fernando Perez <fperez@colorado.edu>
3708 2004-05-06 Fernando Perez <fperez@colorado.edu>
3705
3709
3706 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3710 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3707 operations to use the vastly more efficient list/''.join() method.
3711 operations to use the vastly more efficient list/''.join() method.
3708 (FormattedTB.text): Fix
3712 (FormattedTB.text): Fix
3709 http://www.scipy.net/roundup/ipython/issue12 - exception source
3713 http://www.scipy.net/roundup/ipython/issue12 - exception source
3710 extract not updated after reload. Thanks to Mike Salib
3714 extract not updated after reload. Thanks to Mike Salib
3711 <msalib-AT-mit.edu> for pinning the source of the problem.
3715 <msalib-AT-mit.edu> for pinning the source of the problem.
3712 Fortunately, the solution works inside ipython and doesn't require
3716 Fortunately, the solution works inside ipython and doesn't require
3713 any changes to python proper.
3717 any changes to python proper.
3714
3718
3715 * IPython/Magic.py (Magic.parse_options): Improved to process the
3719 * IPython/Magic.py (Magic.parse_options): Improved to process the
3716 argument list as a true shell would (by actually using the
3720 argument list as a true shell would (by actually using the
3717 underlying system shell). This way, all @magics automatically get
3721 underlying system shell). This way, all @magics automatically get
3718 shell expansion for variables. Thanks to a comment by Alex
3722 shell expansion for variables. Thanks to a comment by Alex
3719 Schmolck.
3723 Schmolck.
3720
3724
3721 2004-04-04 Fernando Perez <fperez@colorado.edu>
3725 2004-04-04 Fernando Perez <fperez@colorado.edu>
3722
3726
3723 * IPython/iplib.py (InteractiveShell.interact): Added a special
3727 * IPython/iplib.py (InteractiveShell.interact): Added a special
3724 trap for a debugger quit exception, which is basically impossible
3728 trap for a debugger quit exception, which is basically impossible
3725 to handle by normal mechanisms, given what pdb does to the stack.
3729 to handle by normal mechanisms, given what pdb does to the stack.
3726 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3730 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3727
3731
3728 2004-04-03 Fernando Perez <fperez@colorado.edu>
3732 2004-04-03 Fernando Perez <fperez@colorado.edu>
3729
3733
3730 * IPython/genutils.py (Term): Standardized the names of the Term
3734 * IPython/genutils.py (Term): Standardized the names of the Term
3731 class streams to cin/cout/cerr, following C++ naming conventions
3735 class streams to cin/cout/cerr, following C++ naming conventions
3732 (I can't use in/out/err because 'in' is not a valid attribute
3736 (I can't use in/out/err because 'in' is not a valid attribute
3733 name).
3737 name).
3734
3738
3735 * IPython/iplib.py (InteractiveShell.interact): don't increment
3739 * IPython/iplib.py (InteractiveShell.interact): don't increment
3736 the prompt if there's no user input. By Daniel 'Dang' Griffith
3740 the prompt if there's no user input. By Daniel 'Dang' Griffith
3737 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3741 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3738 Francois Pinard.
3742 Francois Pinard.
3739
3743
3740 2004-04-02 Fernando Perez <fperez@colorado.edu>
3744 2004-04-02 Fernando Perez <fperez@colorado.edu>
3741
3745
3742 * IPython/genutils.py (Stream.__init__): Modified to survive at
3746 * IPython/genutils.py (Stream.__init__): Modified to survive at
3743 least importing in contexts where stdin/out/err aren't true file
3747 least importing in contexts where stdin/out/err aren't true file
3744 objects, such as PyCrust (they lack fileno() and mode). However,
3748 objects, such as PyCrust (they lack fileno() and mode). However,
3745 the recovery facilities which rely on these things existing will
3749 the recovery facilities which rely on these things existing will
3746 not work.
3750 not work.
3747
3751
3748 2004-04-01 Fernando Perez <fperez@colorado.edu>
3752 2004-04-01 Fernando Perez <fperez@colorado.edu>
3749
3753
3750 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3754 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3751 use the new getoutputerror() function, so it properly
3755 use the new getoutputerror() function, so it properly
3752 distinguishes stdout/err.
3756 distinguishes stdout/err.
3753
3757
3754 * IPython/genutils.py (getoutputerror): added a function to
3758 * IPython/genutils.py (getoutputerror): added a function to
3755 capture separately the standard output and error of a command.
3759 capture separately the standard output and error of a command.
3756 After a comment from dang on the mailing lists. This code is
3760 After a comment from dang on the mailing lists. This code is
3757 basically a modified version of commands.getstatusoutput(), from
3761 basically a modified version of commands.getstatusoutput(), from
3758 the standard library.
3762 the standard library.
3759
3763
3760 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3764 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3761 '!!' as a special syntax (shorthand) to access @sx.
3765 '!!' as a special syntax (shorthand) to access @sx.
3762
3766
3763 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3767 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3764 command and return its output as a list split on '\n'.
3768 command and return its output as a list split on '\n'.
3765
3769
3766 2004-03-31 Fernando Perez <fperez@colorado.edu>
3770 2004-03-31 Fernando Perez <fperez@colorado.edu>
3767
3771
3768 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3772 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3769 method to dictionaries used as FakeModule instances if they lack
3773 method to dictionaries used as FakeModule instances if they lack
3770 it. At least pydoc in python2.3 breaks for runtime-defined
3774 it. At least pydoc in python2.3 breaks for runtime-defined
3771 functions without this hack. At some point I need to _really_
3775 functions without this hack. At some point I need to _really_
3772 understand what FakeModule is doing, because it's a gross hack.
3776 understand what FakeModule is doing, because it's a gross hack.
3773 But it solves Arnd's problem for now...
3777 But it solves Arnd's problem for now...
3774
3778
3775 2004-02-27 Fernando Perez <fperez@colorado.edu>
3779 2004-02-27 Fernando Perez <fperez@colorado.edu>
3776
3780
3777 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3781 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3778 mode would behave erratically. Also increased the number of
3782 mode would behave erratically. Also increased the number of
3779 possible logs in rotate mod to 999. Thanks to Rod Holland
3783 possible logs in rotate mod to 999. Thanks to Rod Holland
3780 <rhh@StructureLABS.com> for the report and fixes.
3784 <rhh@StructureLABS.com> for the report and fixes.
3781
3785
3782 2004-02-26 Fernando Perez <fperez@colorado.edu>
3786 2004-02-26 Fernando Perez <fperez@colorado.edu>
3783
3787
3784 * IPython/genutils.py (page): Check that the curses module really
3788 * IPython/genutils.py (page): Check that the curses module really
3785 has the initscr attribute before trying to use it. For some
3789 has the initscr attribute before trying to use it. For some
3786 reason, the Solaris curses module is missing this. I think this
3790 reason, the Solaris curses module is missing this. I think this
3787 should be considered a Solaris python bug, but I'm not sure.
3791 should be considered a Solaris python bug, but I'm not sure.
3788
3792
3789 2004-01-17 Fernando Perez <fperez@colorado.edu>
3793 2004-01-17 Fernando Perez <fperez@colorado.edu>
3790
3794
3791 * IPython/genutils.py (Stream.__init__): Changes to try to make
3795 * IPython/genutils.py (Stream.__init__): Changes to try to make
3792 ipython robust against stdin/out/err being closed by the user.
3796 ipython robust against stdin/out/err being closed by the user.
3793 This is 'user error' (and blocks a normal python session, at least
3797 This is 'user error' (and blocks a normal python session, at least
3794 the stdout case). However, Ipython should be able to survive such
3798 the stdout case). However, Ipython should be able to survive such
3795 instances of abuse as gracefully as possible. To simplify the
3799 instances of abuse as gracefully as possible. To simplify the
3796 coding and maintain compatibility with Gary Bishop's Term
3800 coding and maintain compatibility with Gary Bishop's Term
3797 contributions, I've made use of classmethods for this. I think
3801 contributions, I've made use of classmethods for this. I think
3798 this introduces a dependency on python 2.2.
3802 this introduces a dependency on python 2.2.
3799
3803
3800 2004-01-13 Fernando Perez <fperez@colorado.edu>
3804 2004-01-13 Fernando Perez <fperez@colorado.edu>
3801
3805
3802 * IPython/numutils.py (exp_safe): simplified the code a bit and
3806 * IPython/numutils.py (exp_safe): simplified the code a bit and
3803 removed the need for importing the kinds module altogether.
3807 removed the need for importing the kinds module altogether.
3804
3808
3805 2004-01-06 Fernando Perez <fperez@colorado.edu>
3809 2004-01-06 Fernando Perez <fperez@colorado.edu>
3806
3810
3807 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3811 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3808 a magic function instead, after some community feedback. No
3812 a magic function instead, after some community feedback. No
3809 special syntax will exist for it, but its name is deliberately
3813 special syntax will exist for it, but its name is deliberately
3810 very short.
3814 very short.
3811
3815
3812 2003-12-20 Fernando Perez <fperez@colorado.edu>
3816 2003-12-20 Fernando Perez <fperez@colorado.edu>
3813
3817
3814 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3818 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3815 new functionality, to automagically assign the result of a shell
3819 new functionality, to automagically assign the result of a shell
3816 command to a variable. I'll solicit some community feedback on
3820 command to a variable. I'll solicit some community feedback on
3817 this before making it permanent.
3821 this before making it permanent.
3818
3822
3819 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3823 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3820 requested about callables for which inspect couldn't obtain a
3824 requested about callables for which inspect couldn't obtain a
3821 proper argspec. Thanks to a crash report sent by Etienne
3825 proper argspec. Thanks to a crash report sent by Etienne
3822 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3826 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3823
3827
3824 2003-12-09 Fernando Perez <fperez@colorado.edu>
3828 2003-12-09 Fernando Perez <fperez@colorado.edu>
3825
3829
3826 * IPython/genutils.py (page): patch for the pager to work across
3830 * IPython/genutils.py (page): patch for the pager to work across
3827 various versions of Windows. By Gary Bishop.
3831 various versions of Windows. By Gary Bishop.
3828
3832
3829 2003-12-04 Fernando Perez <fperez@colorado.edu>
3833 2003-12-04 Fernando Perez <fperez@colorado.edu>
3830
3834
3831 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3835 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3832 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3836 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3833 While I tested this and it looks ok, there may still be corner
3837 While I tested this and it looks ok, there may still be corner
3834 cases I've missed.
3838 cases I've missed.
3835
3839
3836 2003-12-01 Fernando Perez <fperez@colorado.edu>
3840 2003-12-01 Fernando Perez <fperez@colorado.edu>
3837
3841
3838 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3842 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3839 where a line like 'p,q=1,2' would fail because the automagic
3843 where a line like 'p,q=1,2' would fail because the automagic
3840 system would be triggered for @p.
3844 system would be triggered for @p.
3841
3845
3842 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3846 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3843 cleanups, code unmodified.
3847 cleanups, code unmodified.
3844
3848
3845 * IPython/genutils.py (Term): added a class for IPython to handle
3849 * IPython/genutils.py (Term): added a class for IPython to handle
3846 output. In most cases it will just be a proxy for stdout/err, but
3850 output. In most cases it will just be a proxy for stdout/err, but
3847 having this allows modifications to be made for some platforms,
3851 having this allows modifications to be made for some platforms,
3848 such as handling color escapes under Windows. All of this code
3852 such as handling color escapes under Windows. All of this code
3849 was contributed by Gary Bishop, with minor modifications by me.
3853 was contributed by Gary Bishop, with minor modifications by me.
3850 The actual changes affect many files.
3854 The actual changes affect many files.
3851
3855
3852 2003-11-30 Fernando Perez <fperez@colorado.edu>
3856 2003-11-30 Fernando Perez <fperez@colorado.edu>
3853
3857
3854 * IPython/iplib.py (file_matches): new completion code, courtesy
3858 * IPython/iplib.py (file_matches): new completion code, courtesy
3855 of Jeff Collins. This enables filename completion again under
3859 of Jeff Collins. This enables filename completion again under
3856 python 2.3, which disabled it at the C level.
3860 python 2.3, which disabled it at the C level.
3857
3861
3858 2003-11-11 Fernando Perez <fperez@colorado.edu>
3862 2003-11-11 Fernando Perez <fperez@colorado.edu>
3859
3863
3860 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3864 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3861 for Numeric.array(map(...)), but often convenient.
3865 for Numeric.array(map(...)), but often convenient.
3862
3866
3863 2003-11-05 Fernando Perez <fperez@colorado.edu>
3867 2003-11-05 Fernando Perez <fperez@colorado.edu>
3864
3868
3865 * IPython/numutils.py (frange): Changed a call from int() to
3869 * IPython/numutils.py (frange): Changed a call from int() to
3866 int(round()) to prevent a problem reported with arange() in the
3870 int(round()) to prevent a problem reported with arange() in the
3867 numpy list.
3871 numpy list.
3868
3872
3869 2003-10-06 Fernando Perez <fperez@colorado.edu>
3873 2003-10-06 Fernando Perez <fperez@colorado.edu>
3870
3874
3871 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3875 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3872 prevent crashes if sys lacks an argv attribute (it happens with
3876 prevent crashes if sys lacks an argv attribute (it happens with
3873 embedded interpreters which build a bare-bones sys module).
3877 embedded interpreters which build a bare-bones sys module).
3874 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3878 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3875
3879
3876 2003-09-24 Fernando Perez <fperez@colorado.edu>
3880 2003-09-24 Fernando Perez <fperez@colorado.edu>
3877
3881
3878 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3882 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3879 to protect against poorly written user objects where __getattr__
3883 to protect against poorly written user objects where __getattr__
3880 raises exceptions other than AttributeError. Thanks to a bug
3884 raises exceptions other than AttributeError. Thanks to a bug
3881 report by Oliver Sander <osander-AT-gmx.de>.
3885 report by Oliver Sander <osander-AT-gmx.de>.
3882
3886
3883 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3887 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3884 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3888 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3885
3889
3886 2003-09-09 Fernando Perez <fperez@colorado.edu>
3890 2003-09-09 Fernando Perez <fperez@colorado.edu>
3887
3891
3888 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3892 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3889 unpacking a list whith a callable as first element would
3893 unpacking a list whith a callable as first element would
3890 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3894 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3891 Collins.
3895 Collins.
3892
3896
3893 2003-08-25 *** Released version 0.5.0
3897 2003-08-25 *** Released version 0.5.0
3894
3898
3895 2003-08-22 Fernando Perez <fperez@colorado.edu>
3899 2003-08-22 Fernando Perez <fperez@colorado.edu>
3896
3900
3897 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3901 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3898 improperly defined user exceptions. Thanks to feedback from Mark
3902 improperly defined user exceptions. Thanks to feedback from Mark
3899 Russell <mrussell-AT-verio.net>.
3903 Russell <mrussell-AT-verio.net>.
3900
3904
3901 2003-08-20 Fernando Perez <fperez@colorado.edu>
3905 2003-08-20 Fernando Perez <fperez@colorado.edu>
3902
3906
3903 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3907 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3904 printing so that it would print multi-line string forms starting
3908 printing so that it would print multi-line string forms starting
3905 with a new line. This way the formatting is better respected for
3909 with a new line. This way the formatting is better respected for
3906 objects which work hard to make nice string forms.
3910 objects which work hard to make nice string forms.
3907
3911
3908 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3912 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3909 autocall would overtake data access for objects with both
3913 autocall would overtake data access for objects with both
3910 __getitem__ and __call__.
3914 __getitem__ and __call__.
3911
3915
3912 2003-08-19 *** Released version 0.5.0-rc1
3916 2003-08-19 *** Released version 0.5.0-rc1
3913
3917
3914 2003-08-19 Fernando Perez <fperez@colorado.edu>
3918 2003-08-19 Fernando Perez <fperez@colorado.edu>
3915
3919
3916 * IPython/deep_reload.py (load_tail): single tiny change here
3920 * IPython/deep_reload.py (load_tail): single tiny change here
3917 seems to fix the long-standing bug of dreload() failing to work
3921 seems to fix the long-standing bug of dreload() failing to work
3918 for dotted names. But this module is pretty tricky, so I may have
3922 for dotted names. But this module is pretty tricky, so I may have
3919 missed some subtlety. Needs more testing!.
3923 missed some subtlety. Needs more testing!.
3920
3924
3921 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3925 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3922 exceptions which have badly implemented __str__ methods.
3926 exceptions which have badly implemented __str__ methods.
3923 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3927 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3924 which I've been getting reports about from Python 2.3 users. I
3928 which I've been getting reports about from Python 2.3 users. I
3925 wish I had a simple test case to reproduce the problem, so I could
3929 wish I had a simple test case to reproduce the problem, so I could
3926 either write a cleaner workaround or file a bug report if
3930 either write a cleaner workaround or file a bug report if
3927 necessary.
3931 necessary.
3928
3932
3929 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3933 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3930 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3934 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3931 a bug report by Tjabo Kloppenburg.
3935 a bug report by Tjabo Kloppenburg.
3932
3936
3933 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3937 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3934 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3938 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3935 seems rather unstable. Thanks to a bug report by Tjabo
3939 seems rather unstable. Thanks to a bug report by Tjabo
3936 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3940 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3937
3941
3938 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3942 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3939 this out soon because of the critical fixes in the inner loop for
3943 this out soon because of the critical fixes in the inner loop for
3940 generators.
3944 generators.
3941
3945
3942 * IPython/Magic.py (Magic.getargspec): removed. This (and
3946 * IPython/Magic.py (Magic.getargspec): removed. This (and
3943 _get_def) have been obsoleted by OInspect for a long time, I
3947 _get_def) have been obsoleted by OInspect for a long time, I
3944 hadn't noticed that they were dead code.
3948 hadn't noticed that they were dead code.
3945 (Magic._ofind): restored _ofind functionality for a few literals
3949 (Magic._ofind): restored _ofind functionality for a few literals
3946 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3950 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3947 for things like "hello".capitalize?, since that would require a
3951 for things like "hello".capitalize?, since that would require a
3948 potentially dangerous eval() again.
3952 potentially dangerous eval() again.
3949
3953
3950 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3954 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3951 logic a bit more to clean up the escapes handling and minimize the
3955 logic a bit more to clean up the escapes handling and minimize the
3952 use of _ofind to only necessary cases. The interactive 'feel' of
3956 use of _ofind to only necessary cases. The interactive 'feel' of
3953 IPython should have improved quite a bit with the changes in
3957 IPython should have improved quite a bit with the changes in
3954 _prefilter and _ofind (besides being far safer than before).
3958 _prefilter and _ofind (besides being far safer than before).
3955
3959
3956 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3960 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3957 obscure, never reported). Edit would fail to find the object to
3961 obscure, never reported). Edit would fail to find the object to
3958 edit under some circumstances.
3962 edit under some circumstances.
3959 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3963 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3960 which were causing double-calling of generators. Those eval calls
3964 which were causing double-calling of generators. Those eval calls
3961 were _very_ dangerous, since code with side effects could be
3965 were _very_ dangerous, since code with side effects could be
3962 triggered. As they say, 'eval is evil'... These were the
3966 triggered. As they say, 'eval is evil'... These were the
3963 nastiest evals in IPython. Besides, _ofind is now far simpler,
3967 nastiest evals in IPython. Besides, _ofind is now far simpler,
3964 and it should also be quite a bit faster. Its use of inspect is
3968 and it should also be quite a bit faster. Its use of inspect is
3965 also safer, so perhaps some of the inspect-related crashes I've
3969 also safer, so perhaps some of the inspect-related crashes I've
3966 seen lately with Python 2.3 might be taken care of. That will
3970 seen lately with Python 2.3 might be taken care of. That will
3967 need more testing.
3971 need more testing.
3968
3972
3969 2003-08-17 Fernando Perez <fperez@colorado.edu>
3973 2003-08-17 Fernando Perez <fperez@colorado.edu>
3970
3974
3971 * IPython/iplib.py (InteractiveShell._prefilter): significant
3975 * IPython/iplib.py (InteractiveShell._prefilter): significant
3972 simplifications to the logic for handling user escapes. Faster
3976 simplifications to the logic for handling user escapes. Faster
3973 and simpler code.
3977 and simpler code.
3974
3978
3975 2003-08-14 Fernando Perez <fperez@colorado.edu>
3979 2003-08-14 Fernando Perez <fperez@colorado.edu>
3976
3980
3977 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3981 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3978 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3982 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3979 but it should be quite a bit faster. And the recursive version
3983 but it should be quite a bit faster. And the recursive version
3980 generated O(log N) intermediate storage for all rank>1 arrays,
3984 generated O(log N) intermediate storage for all rank>1 arrays,
3981 even if they were contiguous.
3985 even if they were contiguous.
3982 (l1norm): Added this function.
3986 (l1norm): Added this function.
3983 (norm): Added this function for arbitrary norms (including
3987 (norm): Added this function for arbitrary norms (including
3984 l-infinity). l1 and l2 are still special cases for convenience
3988 l-infinity). l1 and l2 are still special cases for convenience
3985 and speed.
3989 and speed.
3986
3990
3987 2003-08-03 Fernando Perez <fperez@colorado.edu>
3991 2003-08-03 Fernando Perez <fperez@colorado.edu>
3988
3992
3989 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3993 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3990 exceptions, which now raise PendingDeprecationWarnings in Python
3994 exceptions, which now raise PendingDeprecationWarnings in Python
3991 2.3. There were some in Magic and some in Gnuplot2.
3995 2.3. There were some in Magic and some in Gnuplot2.
3992
3996
3993 2003-06-30 Fernando Perez <fperez@colorado.edu>
3997 2003-06-30 Fernando Perez <fperez@colorado.edu>
3994
3998
3995 * IPython/genutils.py (page): modified to call curses only for
3999 * IPython/genutils.py (page): modified to call curses only for
3996 terminals where TERM=='xterm'. After problems under many other
4000 terminals where TERM=='xterm'. After problems under many other
3997 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4001 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3998
4002
3999 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4003 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4000 would be triggered when readline was absent. This was just an old
4004 would be triggered when readline was absent. This was just an old
4001 debugging statement I'd forgotten to take out.
4005 debugging statement I'd forgotten to take out.
4002
4006
4003 2003-06-20 Fernando Perez <fperez@colorado.edu>
4007 2003-06-20 Fernando Perez <fperez@colorado.edu>
4004
4008
4005 * IPython/genutils.py (clock): modified to return only user time
4009 * IPython/genutils.py (clock): modified to return only user time
4006 (not counting system time), after a discussion on scipy. While
4010 (not counting system time), after a discussion on scipy. While
4007 system time may be a useful quantity occasionally, it may much
4011 system time may be a useful quantity occasionally, it may much
4008 more easily be skewed by occasional swapping or other similar
4012 more easily be skewed by occasional swapping or other similar
4009 activity.
4013 activity.
4010
4014
4011 2003-06-05 Fernando Perez <fperez@colorado.edu>
4015 2003-06-05 Fernando Perez <fperez@colorado.edu>
4012
4016
4013 * IPython/numutils.py (identity): new function, for building
4017 * IPython/numutils.py (identity): new function, for building
4014 arbitrary rank Kronecker deltas (mostly backwards compatible with
4018 arbitrary rank Kronecker deltas (mostly backwards compatible with
4015 Numeric.identity)
4019 Numeric.identity)
4016
4020
4017 2003-06-03 Fernando Perez <fperez@colorado.edu>
4021 2003-06-03 Fernando Perez <fperez@colorado.edu>
4018
4022
4019 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4023 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4020 arguments passed to magics with spaces, to allow trailing '\' to
4024 arguments passed to magics with spaces, to allow trailing '\' to
4021 work normally (mainly for Windows users).
4025 work normally (mainly for Windows users).
4022
4026
4023 2003-05-29 Fernando Perez <fperez@colorado.edu>
4027 2003-05-29 Fernando Perez <fperez@colorado.edu>
4024
4028
4025 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4029 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4026 instead of pydoc.help. This fixes a bizarre behavior where
4030 instead of pydoc.help. This fixes a bizarre behavior where
4027 printing '%s' % locals() would trigger the help system. Now
4031 printing '%s' % locals() would trigger the help system. Now
4028 ipython behaves like normal python does.
4032 ipython behaves like normal python does.
4029
4033
4030 Note that if one does 'from pydoc import help', the bizarre
4034 Note that if one does 'from pydoc import help', the bizarre
4031 behavior returns, but this will also happen in normal python, so
4035 behavior returns, but this will also happen in normal python, so
4032 it's not an ipython bug anymore (it has to do with how pydoc.help
4036 it's not an ipython bug anymore (it has to do with how pydoc.help
4033 is implemented).
4037 is implemented).
4034
4038
4035 2003-05-22 Fernando Perez <fperez@colorado.edu>
4039 2003-05-22 Fernando Perez <fperez@colorado.edu>
4036
4040
4037 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4041 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4038 return [] instead of None when nothing matches, also match to end
4042 return [] instead of None when nothing matches, also match to end
4039 of line. Patch by Gary Bishop.
4043 of line. Patch by Gary Bishop.
4040
4044
4041 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4045 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4042 protection as before, for files passed on the command line. This
4046 protection as before, for files passed on the command line. This
4043 prevents the CrashHandler from kicking in if user files call into
4047 prevents the CrashHandler from kicking in if user files call into
4044 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4048 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4045 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4049 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4046
4050
4047 2003-05-20 *** Released version 0.4.0
4051 2003-05-20 *** Released version 0.4.0
4048
4052
4049 2003-05-20 Fernando Perez <fperez@colorado.edu>
4053 2003-05-20 Fernando Perez <fperez@colorado.edu>
4050
4054
4051 * setup.py: added support for manpages. It's a bit hackish b/c of
4055 * setup.py: added support for manpages. It's a bit hackish b/c of
4052 a bug in the way the bdist_rpm distutils target handles gzipped
4056 a bug in the way the bdist_rpm distutils target handles gzipped
4053 manpages, but it works. After a patch by Jack.
4057 manpages, but it works. After a patch by Jack.
4054
4058
4055 2003-05-19 Fernando Perez <fperez@colorado.edu>
4059 2003-05-19 Fernando Perez <fperez@colorado.edu>
4056
4060
4057 * IPython/numutils.py: added a mockup of the kinds module, since
4061 * IPython/numutils.py: added a mockup of the kinds module, since
4058 it was recently removed from Numeric. This way, numutils will
4062 it was recently removed from Numeric. This way, numutils will
4059 work for all users even if they are missing kinds.
4063 work for all users even if they are missing kinds.
4060
4064
4061 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4065 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4062 failure, which can occur with SWIG-wrapped extensions. After a
4066 failure, which can occur with SWIG-wrapped extensions. After a
4063 crash report from Prabhu.
4067 crash report from Prabhu.
4064
4068
4065 2003-05-16 Fernando Perez <fperez@colorado.edu>
4069 2003-05-16 Fernando Perez <fperez@colorado.edu>
4066
4070
4067 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4071 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4068 protect ipython from user code which may call directly
4072 protect ipython from user code which may call directly
4069 sys.excepthook (this looks like an ipython crash to the user, even
4073 sys.excepthook (this looks like an ipython crash to the user, even
4070 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4074 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4071 This is especially important to help users of WxWindows, but may
4075 This is especially important to help users of WxWindows, but may
4072 also be useful in other cases.
4076 also be useful in other cases.
4073
4077
4074 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4078 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4075 an optional tb_offset to be specified, and to preserve exception
4079 an optional tb_offset to be specified, and to preserve exception
4076 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4080 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4077
4081
4078 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4082 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4079
4083
4080 2003-05-15 Fernando Perez <fperez@colorado.edu>
4084 2003-05-15 Fernando Perez <fperez@colorado.edu>
4081
4085
4082 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4086 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4083 installing for a new user under Windows.
4087 installing for a new user under Windows.
4084
4088
4085 2003-05-12 Fernando Perez <fperez@colorado.edu>
4089 2003-05-12 Fernando Perez <fperez@colorado.edu>
4086
4090
4087 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4091 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4088 handler for Emacs comint-based lines. Currently it doesn't do
4092 handler for Emacs comint-based lines. Currently it doesn't do
4089 much (but importantly, it doesn't update the history cache). In
4093 much (but importantly, it doesn't update the history cache). In
4090 the future it may be expanded if Alex needs more functionality
4094 the future it may be expanded if Alex needs more functionality
4091 there.
4095 there.
4092
4096
4093 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4097 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4094 info to crash reports.
4098 info to crash reports.
4095
4099
4096 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4100 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4097 just like Python's -c. Also fixed crash with invalid -color
4101 just like Python's -c. Also fixed crash with invalid -color
4098 option value at startup. Thanks to Will French
4102 option value at startup. Thanks to Will French
4099 <wfrench-AT-bestweb.net> for the bug report.
4103 <wfrench-AT-bestweb.net> for the bug report.
4100
4104
4101 2003-05-09 Fernando Perez <fperez@colorado.edu>
4105 2003-05-09 Fernando Perez <fperez@colorado.edu>
4102
4106
4103 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4107 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4104 to EvalDict (it's a mapping, after all) and simplified its code
4108 to EvalDict (it's a mapping, after all) and simplified its code
4105 quite a bit, after a nice discussion on c.l.py where Gustavo
4109 quite a bit, after a nice discussion on c.l.py where Gustavo
4106 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4110 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4107
4111
4108 2003-04-30 Fernando Perez <fperez@colorado.edu>
4112 2003-04-30 Fernando Perez <fperez@colorado.edu>
4109
4113
4110 * IPython/genutils.py (timings_out): modified it to reduce its
4114 * IPython/genutils.py (timings_out): modified it to reduce its
4111 overhead in the common reps==1 case.
4115 overhead in the common reps==1 case.
4112
4116
4113 2003-04-29 Fernando Perez <fperez@colorado.edu>
4117 2003-04-29 Fernando Perez <fperez@colorado.edu>
4114
4118
4115 * IPython/genutils.py (timings_out): Modified to use the resource
4119 * IPython/genutils.py (timings_out): Modified to use the resource
4116 module, which avoids the wraparound problems of time.clock().
4120 module, which avoids the wraparound problems of time.clock().
4117
4121
4118 2003-04-17 *** Released version 0.2.15pre4
4122 2003-04-17 *** Released version 0.2.15pre4
4119
4123
4120 2003-04-17 Fernando Perez <fperez@colorado.edu>
4124 2003-04-17 Fernando Perez <fperez@colorado.edu>
4121
4125
4122 * setup.py (scriptfiles): Split windows-specific stuff over to a
4126 * setup.py (scriptfiles): Split windows-specific stuff over to a
4123 separate file, in an attempt to have a Windows GUI installer.
4127 separate file, in an attempt to have a Windows GUI installer.
4124 That didn't work, but part of the groundwork is done.
4128 That didn't work, but part of the groundwork is done.
4125
4129
4126 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4130 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4127 indent/unindent with 4 spaces. Particularly useful in combination
4131 indent/unindent with 4 spaces. Particularly useful in combination
4128 with the new auto-indent option.
4132 with the new auto-indent option.
4129
4133
4130 2003-04-16 Fernando Perez <fperez@colorado.edu>
4134 2003-04-16 Fernando Perez <fperez@colorado.edu>
4131
4135
4132 * IPython/Magic.py: various replacements of self.rc for
4136 * IPython/Magic.py: various replacements of self.rc for
4133 self.shell.rc. A lot more remains to be done to fully disentangle
4137 self.shell.rc. A lot more remains to be done to fully disentangle
4134 this class from the main Shell class.
4138 this class from the main Shell class.
4135
4139
4136 * IPython/GnuplotRuntime.py: added checks for mouse support so
4140 * IPython/GnuplotRuntime.py: added checks for mouse support so
4137 that we don't try to enable it if the current gnuplot doesn't
4141 that we don't try to enable it if the current gnuplot doesn't
4138 really support it. Also added checks so that we don't try to
4142 really support it. Also added checks so that we don't try to
4139 enable persist under Windows (where Gnuplot doesn't recognize the
4143 enable persist under Windows (where Gnuplot doesn't recognize the
4140 option).
4144 option).
4141
4145
4142 * IPython/iplib.py (InteractiveShell.interact): Added optional
4146 * IPython/iplib.py (InteractiveShell.interact): Added optional
4143 auto-indenting code, after a patch by King C. Shu
4147 auto-indenting code, after a patch by King C. Shu
4144 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4148 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4145 get along well with pasting indented code. If I ever figure out
4149 get along well with pasting indented code. If I ever figure out
4146 how to make that part go well, it will become on by default.
4150 how to make that part go well, it will become on by default.
4147
4151
4148 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4152 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4149 crash ipython if there was an unmatched '%' in the user's prompt
4153 crash ipython if there was an unmatched '%' in the user's prompt
4150 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4154 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4151
4155
4152 * IPython/iplib.py (InteractiveShell.interact): removed the
4156 * IPython/iplib.py (InteractiveShell.interact): removed the
4153 ability to ask the user whether he wants to crash or not at the
4157 ability to ask the user whether he wants to crash or not at the
4154 'last line' exception handler. Calling functions at that point
4158 'last line' exception handler. Calling functions at that point
4155 changes the stack, and the error reports would have incorrect
4159 changes the stack, and the error reports would have incorrect
4156 tracebacks.
4160 tracebacks.
4157
4161
4158 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4162 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4159 pass through a peger a pretty-printed form of any object. After a
4163 pass through a peger a pretty-printed form of any object. After a
4160 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4164 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4161
4165
4162 2003-04-14 Fernando Perez <fperez@colorado.edu>
4166 2003-04-14 Fernando Perez <fperez@colorado.edu>
4163
4167
4164 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4168 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4165 all files in ~ would be modified at first install (instead of
4169 all files in ~ would be modified at first install (instead of
4166 ~/.ipython). This could be potentially disastrous, as the
4170 ~/.ipython). This could be potentially disastrous, as the
4167 modification (make line-endings native) could damage binary files.
4171 modification (make line-endings native) could damage binary files.
4168
4172
4169 2003-04-10 Fernando Perez <fperez@colorado.edu>
4173 2003-04-10 Fernando Perez <fperez@colorado.edu>
4170
4174
4171 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4175 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4172 handle only lines which are invalid python. This now means that
4176 handle only lines which are invalid python. This now means that
4173 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4177 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4174 for the bug report.
4178 for the bug report.
4175
4179
4176 2003-04-01 Fernando Perez <fperez@colorado.edu>
4180 2003-04-01 Fernando Perez <fperez@colorado.edu>
4177
4181
4178 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4182 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4179 where failing to set sys.last_traceback would crash pdb.pm().
4183 where failing to set sys.last_traceback would crash pdb.pm().
4180 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4184 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4181 report.
4185 report.
4182
4186
4183 2003-03-25 Fernando Perez <fperez@colorado.edu>
4187 2003-03-25 Fernando Perez <fperez@colorado.edu>
4184
4188
4185 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4189 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4186 before printing it (it had a lot of spurious blank lines at the
4190 before printing it (it had a lot of spurious blank lines at the
4187 end).
4191 end).
4188
4192
4189 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4193 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4190 output would be sent 21 times! Obviously people don't use this
4194 output would be sent 21 times! Obviously people don't use this
4191 too often, or I would have heard about it.
4195 too often, or I would have heard about it.
4192
4196
4193 2003-03-24 Fernando Perez <fperez@colorado.edu>
4197 2003-03-24 Fernando Perez <fperez@colorado.edu>
4194
4198
4195 * setup.py (scriptfiles): renamed the data_files parameter from
4199 * setup.py (scriptfiles): renamed the data_files parameter from
4196 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4200 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4197 for the patch.
4201 for the patch.
4198
4202
4199 2003-03-20 Fernando Perez <fperez@colorado.edu>
4203 2003-03-20 Fernando Perez <fperez@colorado.edu>
4200
4204
4201 * IPython/genutils.py (error): added error() and fatal()
4205 * IPython/genutils.py (error): added error() and fatal()
4202 functions.
4206 functions.
4203
4207
4204 2003-03-18 *** Released version 0.2.15pre3
4208 2003-03-18 *** Released version 0.2.15pre3
4205
4209
4206 2003-03-18 Fernando Perez <fperez@colorado.edu>
4210 2003-03-18 Fernando Perez <fperez@colorado.edu>
4207
4211
4208 * setupext/install_data_ext.py
4212 * setupext/install_data_ext.py
4209 (install_data_ext.initialize_options): Class contributed by Jack
4213 (install_data_ext.initialize_options): Class contributed by Jack
4210 Moffit for fixing the old distutils hack. He is sending this to
4214 Moffit for fixing the old distutils hack. He is sending this to
4211 the distutils folks so in the future we may not need it as a
4215 the distutils folks so in the future we may not need it as a
4212 private fix.
4216 private fix.
4213
4217
4214 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4218 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4215 changes for Debian packaging. See his patch for full details.
4219 changes for Debian packaging. See his patch for full details.
4216 The old distutils hack of making the ipythonrc* files carry a
4220 The old distutils hack of making the ipythonrc* files carry a
4217 bogus .py extension is gone, at last. Examples were moved to a
4221 bogus .py extension is gone, at last. Examples were moved to a
4218 separate subdir under doc/, and the separate executable scripts
4222 separate subdir under doc/, and the separate executable scripts
4219 now live in their own directory. Overall a great cleanup. The
4223 now live in their own directory. Overall a great cleanup. The
4220 manual was updated to use the new files, and setup.py has been
4224 manual was updated to use the new files, and setup.py has been
4221 fixed for this setup.
4225 fixed for this setup.
4222
4226
4223 * IPython/PyColorize.py (Parser.usage): made non-executable and
4227 * IPython/PyColorize.py (Parser.usage): made non-executable and
4224 created a pycolor wrapper around it to be included as a script.
4228 created a pycolor wrapper around it to be included as a script.
4225
4229
4226 2003-03-12 *** Released version 0.2.15pre2
4230 2003-03-12 *** Released version 0.2.15pre2
4227
4231
4228 2003-03-12 Fernando Perez <fperez@colorado.edu>
4232 2003-03-12 Fernando Perez <fperez@colorado.edu>
4229
4233
4230 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4234 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4231 long-standing problem with garbage characters in some terminals.
4235 long-standing problem with garbage characters in some terminals.
4232 The issue was really that the \001 and \002 escapes must _only_ be
4236 The issue was really that the \001 and \002 escapes must _only_ be
4233 passed to input prompts (which call readline), but _never_ to
4237 passed to input prompts (which call readline), but _never_ to
4234 normal text to be printed on screen. I changed ColorANSI to have
4238 normal text to be printed on screen. I changed ColorANSI to have
4235 two classes: TermColors and InputTermColors, each with the
4239 two classes: TermColors and InputTermColors, each with the
4236 appropriate escapes for input prompts or normal text. The code in
4240 appropriate escapes for input prompts or normal text. The code in
4237 Prompts.py got slightly more complicated, but this very old and
4241 Prompts.py got slightly more complicated, but this very old and
4238 annoying bug is finally fixed.
4242 annoying bug is finally fixed.
4239
4243
4240 All the credit for nailing down the real origin of this problem
4244 All the credit for nailing down the real origin of this problem
4241 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4245 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4242 *Many* thanks to him for spending quite a bit of effort on this.
4246 *Many* thanks to him for spending quite a bit of effort on this.
4243
4247
4244 2003-03-05 *** Released version 0.2.15pre1
4248 2003-03-05 *** Released version 0.2.15pre1
4245
4249
4246 2003-03-03 Fernando Perez <fperez@colorado.edu>
4250 2003-03-03 Fernando Perez <fperez@colorado.edu>
4247
4251
4248 * IPython/FakeModule.py: Moved the former _FakeModule to a
4252 * IPython/FakeModule.py: Moved the former _FakeModule to a
4249 separate file, because it's also needed by Magic (to fix a similar
4253 separate file, because it's also needed by Magic (to fix a similar
4250 pickle-related issue in @run).
4254 pickle-related issue in @run).
4251
4255
4252 2003-03-02 Fernando Perez <fperez@colorado.edu>
4256 2003-03-02 Fernando Perez <fperez@colorado.edu>
4253
4257
4254 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4258 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4255 the autocall option at runtime.
4259 the autocall option at runtime.
4256 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4260 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4257 across Magic.py to start separating Magic from InteractiveShell.
4261 across Magic.py to start separating Magic from InteractiveShell.
4258 (Magic._ofind): Fixed to return proper namespace for dotted
4262 (Magic._ofind): Fixed to return proper namespace for dotted
4259 names. Before, a dotted name would always return 'not currently
4263 names. Before, a dotted name would always return 'not currently
4260 defined', because it would find the 'parent'. s.x would be found,
4264 defined', because it would find the 'parent'. s.x would be found,
4261 but since 'x' isn't defined by itself, it would get confused.
4265 but since 'x' isn't defined by itself, it would get confused.
4262 (Magic.magic_run): Fixed pickling problems reported by Ralf
4266 (Magic.magic_run): Fixed pickling problems reported by Ralf
4263 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4267 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4264 that I'd used when Mike Heeter reported similar issues at the
4268 that I'd used when Mike Heeter reported similar issues at the
4265 top-level, but now for @run. It boils down to injecting the
4269 top-level, but now for @run. It boils down to injecting the
4266 namespace where code is being executed with something that looks
4270 namespace where code is being executed with something that looks
4267 enough like a module to fool pickle.dump(). Since a pickle stores
4271 enough like a module to fool pickle.dump(). Since a pickle stores
4268 a named reference to the importing module, we need this for
4272 a named reference to the importing module, we need this for
4269 pickles to save something sensible.
4273 pickles to save something sensible.
4270
4274
4271 * IPython/ipmaker.py (make_IPython): added an autocall option.
4275 * IPython/ipmaker.py (make_IPython): added an autocall option.
4272
4276
4273 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4277 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4274 the auto-eval code. Now autocalling is an option, and the code is
4278 the auto-eval code. Now autocalling is an option, and the code is
4275 also vastly safer. There is no more eval() involved at all.
4279 also vastly safer. There is no more eval() involved at all.
4276
4280
4277 2003-03-01 Fernando Perez <fperez@colorado.edu>
4281 2003-03-01 Fernando Perez <fperez@colorado.edu>
4278
4282
4279 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4283 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4280 dict with named keys instead of a tuple.
4284 dict with named keys instead of a tuple.
4281
4285
4282 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4286 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4283
4287
4284 * setup.py (make_shortcut): Fixed message about directories
4288 * setup.py (make_shortcut): Fixed message about directories
4285 created during Windows installation (the directories were ok, just
4289 created during Windows installation (the directories were ok, just
4286 the printed message was misleading). Thanks to Chris Liechti
4290 the printed message was misleading). Thanks to Chris Liechti
4287 <cliechti-AT-gmx.net> for the heads up.
4291 <cliechti-AT-gmx.net> for the heads up.
4288
4292
4289 2003-02-21 Fernando Perez <fperez@colorado.edu>
4293 2003-02-21 Fernando Perez <fperez@colorado.edu>
4290
4294
4291 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4295 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4292 of ValueError exception when checking for auto-execution. This
4296 of ValueError exception when checking for auto-execution. This
4293 one is raised by things like Numeric arrays arr.flat when the
4297 one is raised by things like Numeric arrays arr.flat when the
4294 array is non-contiguous.
4298 array is non-contiguous.
4295
4299
4296 2003-01-31 Fernando Perez <fperez@colorado.edu>
4300 2003-01-31 Fernando Perez <fperez@colorado.edu>
4297
4301
4298 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4302 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4299 not return any value at all (even though the command would get
4303 not return any value at all (even though the command would get
4300 executed).
4304 executed).
4301 (xsys): Flush stdout right after printing the command to ensure
4305 (xsys): Flush stdout right after printing the command to ensure
4302 proper ordering of commands and command output in the total
4306 proper ordering of commands and command output in the total
4303 output.
4307 output.
4304 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4308 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4305 system/getoutput as defaults. The old ones are kept for
4309 system/getoutput as defaults. The old ones are kept for
4306 compatibility reasons, so no code which uses this library needs
4310 compatibility reasons, so no code which uses this library needs
4307 changing.
4311 changing.
4308
4312
4309 2003-01-27 *** Released version 0.2.14
4313 2003-01-27 *** Released version 0.2.14
4310
4314
4311 2003-01-25 Fernando Perez <fperez@colorado.edu>
4315 2003-01-25 Fernando Perez <fperez@colorado.edu>
4312
4316
4313 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4317 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4314 functions defined in previous edit sessions could not be re-edited
4318 functions defined in previous edit sessions could not be re-edited
4315 (because the temp files were immediately removed). Now temp files
4319 (because the temp files were immediately removed). Now temp files
4316 are removed only at IPython's exit.
4320 are removed only at IPython's exit.
4317 (Magic.magic_run): Improved @run to perform shell-like expansions
4321 (Magic.magic_run): Improved @run to perform shell-like expansions
4318 on its arguments (~users and $VARS). With this, @run becomes more
4322 on its arguments (~users and $VARS). With this, @run becomes more
4319 like a normal command-line.
4323 like a normal command-line.
4320
4324
4321 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4325 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4322 bugs related to embedding and cleaned up that code. A fairly
4326 bugs related to embedding and cleaned up that code. A fairly
4323 important one was the impossibility to access the global namespace
4327 important one was the impossibility to access the global namespace
4324 through the embedded IPython (only local variables were visible).
4328 through the embedded IPython (only local variables were visible).
4325
4329
4326 2003-01-14 Fernando Perez <fperez@colorado.edu>
4330 2003-01-14 Fernando Perez <fperez@colorado.edu>
4327
4331
4328 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4332 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4329 auto-calling to be a bit more conservative. Now it doesn't get
4333 auto-calling to be a bit more conservative. Now it doesn't get
4330 triggered if any of '!=()<>' are in the rest of the input line, to
4334 triggered if any of '!=()<>' are in the rest of the input line, to
4331 allow comparing callables. Thanks to Alex for the heads up.
4335 allow comparing callables. Thanks to Alex for the heads up.
4332
4336
4333 2003-01-07 Fernando Perez <fperez@colorado.edu>
4337 2003-01-07 Fernando Perez <fperez@colorado.edu>
4334
4338
4335 * IPython/genutils.py (page): fixed estimation of the number of
4339 * IPython/genutils.py (page): fixed estimation of the number of
4336 lines in a string to be paged to simply count newlines. This
4340 lines in a string to be paged to simply count newlines. This
4337 prevents over-guessing due to embedded escape sequences. A better
4341 prevents over-guessing due to embedded escape sequences. A better
4338 long-term solution would involve stripping out the control chars
4342 long-term solution would involve stripping out the control chars
4339 for the count, but it's potentially so expensive I just don't
4343 for the count, but it's potentially so expensive I just don't
4340 think it's worth doing.
4344 think it's worth doing.
4341
4345
4342 2002-12-19 *** Released version 0.2.14pre50
4346 2002-12-19 *** Released version 0.2.14pre50
4343
4347
4344 2002-12-19 Fernando Perez <fperez@colorado.edu>
4348 2002-12-19 Fernando Perez <fperez@colorado.edu>
4345
4349
4346 * tools/release (version): Changed release scripts to inform
4350 * tools/release (version): Changed release scripts to inform
4347 Andrea and build a NEWS file with a list of recent changes.
4351 Andrea and build a NEWS file with a list of recent changes.
4348
4352
4349 * IPython/ColorANSI.py (__all__): changed terminal detection
4353 * IPython/ColorANSI.py (__all__): changed terminal detection
4350 code. Seems to work better for xterms without breaking
4354 code. Seems to work better for xterms without breaking
4351 konsole. Will need more testing to determine if WinXP and Mac OSX
4355 konsole. Will need more testing to determine if WinXP and Mac OSX
4352 also work ok.
4356 also work ok.
4353
4357
4354 2002-12-18 *** Released version 0.2.14pre49
4358 2002-12-18 *** Released version 0.2.14pre49
4355
4359
4356 2002-12-18 Fernando Perez <fperez@colorado.edu>
4360 2002-12-18 Fernando Perez <fperez@colorado.edu>
4357
4361
4358 * Docs: added new info about Mac OSX, from Andrea.
4362 * Docs: added new info about Mac OSX, from Andrea.
4359
4363
4360 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4364 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4361 allow direct plotting of python strings whose format is the same
4365 allow direct plotting of python strings whose format is the same
4362 of gnuplot data files.
4366 of gnuplot data files.
4363
4367
4364 2002-12-16 Fernando Perez <fperez@colorado.edu>
4368 2002-12-16 Fernando Perez <fperez@colorado.edu>
4365
4369
4366 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4370 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4367 value of exit question to be acknowledged.
4371 value of exit question to be acknowledged.
4368
4372
4369 2002-12-03 Fernando Perez <fperez@colorado.edu>
4373 2002-12-03 Fernando Perez <fperez@colorado.edu>
4370
4374
4371 * IPython/ipmaker.py: removed generators, which had been added
4375 * IPython/ipmaker.py: removed generators, which had been added
4372 by mistake in an earlier debugging run. This was causing trouble
4376 by mistake in an earlier debugging run. This was causing trouble
4373 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4377 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4374 for pointing this out.
4378 for pointing this out.
4375
4379
4376 2002-11-17 Fernando Perez <fperez@colorado.edu>
4380 2002-11-17 Fernando Perez <fperez@colorado.edu>
4377
4381
4378 * Manual: updated the Gnuplot section.
4382 * Manual: updated the Gnuplot section.
4379
4383
4380 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4384 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4381 a much better split of what goes in Runtime and what goes in
4385 a much better split of what goes in Runtime and what goes in
4382 Interactive.
4386 Interactive.
4383
4387
4384 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4388 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4385 being imported from iplib.
4389 being imported from iplib.
4386
4390
4387 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4391 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4388 for command-passing. Now the global Gnuplot instance is called
4392 for command-passing. Now the global Gnuplot instance is called
4389 'gp' instead of 'g', which was really a far too fragile and
4393 'gp' instead of 'g', which was really a far too fragile and
4390 common name.
4394 common name.
4391
4395
4392 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4396 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4393 bounding boxes generated by Gnuplot for square plots.
4397 bounding boxes generated by Gnuplot for square plots.
4394
4398
4395 * IPython/genutils.py (popkey): new function added. I should
4399 * IPython/genutils.py (popkey): new function added. I should
4396 suggest this on c.l.py as a dict method, it seems useful.
4400 suggest this on c.l.py as a dict method, it seems useful.
4397
4401
4398 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4402 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4399 to transparently handle PostScript generation. MUCH better than
4403 to transparently handle PostScript generation. MUCH better than
4400 the previous plot_eps/replot_eps (which I removed now). The code
4404 the previous plot_eps/replot_eps (which I removed now). The code
4401 is also fairly clean and well documented now (including
4405 is also fairly clean and well documented now (including
4402 docstrings).
4406 docstrings).
4403
4407
4404 2002-11-13 Fernando Perez <fperez@colorado.edu>
4408 2002-11-13 Fernando Perez <fperez@colorado.edu>
4405
4409
4406 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4410 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4407 (inconsistent with options).
4411 (inconsistent with options).
4408
4412
4409 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4413 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4410 manually disabled, I don't know why. Fixed it.
4414 manually disabled, I don't know why. Fixed it.
4411 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4415 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4412 eps output.
4416 eps output.
4413
4417
4414 2002-11-12 Fernando Perez <fperez@colorado.edu>
4418 2002-11-12 Fernando Perez <fperez@colorado.edu>
4415
4419
4416 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4420 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4417 don't propagate up to caller. Fixes crash reported by François
4421 don't propagate up to caller. Fixes crash reported by François
4418 Pinard.
4422 Pinard.
4419
4423
4420 2002-11-09 Fernando Perez <fperez@colorado.edu>
4424 2002-11-09 Fernando Perez <fperez@colorado.edu>
4421
4425
4422 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4426 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4423 history file for new users.
4427 history file for new users.
4424 (make_IPython): fixed bug where initial install would leave the
4428 (make_IPython): fixed bug where initial install would leave the
4425 user running in the .ipython dir.
4429 user running in the .ipython dir.
4426 (make_IPython): fixed bug where config dir .ipython would be
4430 (make_IPython): fixed bug where config dir .ipython would be
4427 created regardless of the given -ipythondir option. Thanks to Cory
4431 created regardless of the given -ipythondir option. Thanks to Cory
4428 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4432 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4429
4433
4430 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4434 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4431 type confirmations. Will need to use it in all of IPython's code
4435 type confirmations. Will need to use it in all of IPython's code
4432 consistently.
4436 consistently.
4433
4437
4434 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4438 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4435 context to print 31 lines instead of the default 5. This will make
4439 context to print 31 lines instead of the default 5. This will make
4436 the crash reports extremely detailed in case the problem is in
4440 the crash reports extremely detailed in case the problem is in
4437 libraries I don't have access to.
4441 libraries I don't have access to.
4438
4442
4439 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4443 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4440 line of defense' code to still crash, but giving users fair
4444 line of defense' code to still crash, but giving users fair
4441 warning. I don't want internal errors to go unreported: if there's
4445 warning. I don't want internal errors to go unreported: if there's
4442 an internal problem, IPython should crash and generate a full
4446 an internal problem, IPython should crash and generate a full
4443 report.
4447 report.
4444
4448
4445 2002-11-08 Fernando Perez <fperez@colorado.edu>
4449 2002-11-08 Fernando Perez <fperez@colorado.edu>
4446
4450
4447 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4451 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4448 otherwise uncaught exceptions which can appear if people set
4452 otherwise uncaught exceptions which can appear if people set
4449 sys.stdout to something badly broken. Thanks to a crash report
4453 sys.stdout to something badly broken. Thanks to a crash report
4450 from henni-AT-mail.brainbot.com.
4454 from henni-AT-mail.brainbot.com.
4451
4455
4452 2002-11-04 Fernando Perez <fperez@colorado.edu>
4456 2002-11-04 Fernando Perez <fperez@colorado.edu>
4453
4457
4454 * IPython/iplib.py (InteractiveShell.interact): added
4458 * IPython/iplib.py (InteractiveShell.interact): added
4455 __IPYTHON__active to the builtins. It's a flag which goes on when
4459 __IPYTHON__active to the builtins. It's a flag which goes on when
4456 the interaction starts and goes off again when it stops. This
4460 the interaction starts and goes off again when it stops. This
4457 allows embedding code to detect being inside IPython. Before this
4461 allows embedding code to detect being inside IPython. Before this
4458 was done via __IPYTHON__, but that only shows that an IPython
4462 was done via __IPYTHON__, but that only shows that an IPython
4459 instance has been created.
4463 instance has been created.
4460
4464
4461 * IPython/Magic.py (Magic.magic_env): I realized that in a
4465 * IPython/Magic.py (Magic.magic_env): I realized that in a
4462 UserDict, instance.data holds the data as a normal dict. So I
4466 UserDict, instance.data holds the data as a normal dict. So I
4463 modified @env to return os.environ.data instead of rebuilding a
4467 modified @env to return os.environ.data instead of rebuilding a
4464 dict by hand.
4468 dict by hand.
4465
4469
4466 2002-11-02 Fernando Perez <fperez@colorado.edu>
4470 2002-11-02 Fernando Perez <fperez@colorado.edu>
4467
4471
4468 * IPython/genutils.py (warn): changed so that level 1 prints no
4472 * IPython/genutils.py (warn): changed so that level 1 prints no
4469 header. Level 2 is now the default (with 'WARNING' header, as
4473 header. Level 2 is now the default (with 'WARNING' header, as
4470 before). I think I tracked all places where changes were needed in
4474 before). I think I tracked all places where changes were needed in
4471 IPython, but outside code using the old level numbering may have
4475 IPython, but outside code using the old level numbering may have
4472 broken.
4476 broken.
4473
4477
4474 * IPython/iplib.py (InteractiveShell.runcode): added this to
4478 * IPython/iplib.py (InteractiveShell.runcode): added this to
4475 handle the tracebacks in SystemExit traps correctly. The previous
4479 handle the tracebacks in SystemExit traps correctly. The previous
4476 code (through interact) was printing more of the stack than
4480 code (through interact) was printing more of the stack than
4477 necessary, showing IPython internal code to the user.
4481 necessary, showing IPython internal code to the user.
4478
4482
4479 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4483 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4480 default. Now that the default at the confirmation prompt is yes,
4484 default. Now that the default at the confirmation prompt is yes,
4481 it's not so intrusive. François' argument that ipython sessions
4485 it's not so intrusive. François' argument that ipython sessions
4482 tend to be complex enough not to lose them from an accidental C-d,
4486 tend to be complex enough not to lose them from an accidental C-d,
4483 is a valid one.
4487 is a valid one.
4484
4488
4485 * IPython/iplib.py (InteractiveShell.interact): added a
4489 * IPython/iplib.py (InteractiveShell.interact): added a
4486 showtraceback() call to the SystemExit trap, and modified the exit
4490 showtraceback() call to the SystemExit trap, and modified the exit
4487 confirmation to have yes as the default.
4491 confirmation to have yes as the default.
4488
4492
4489 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4493 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4490 this file. It's been gone from the code for a long time, this was
4494 this file. It's been gone from the code for a long time, this was
4491 simply leftover junk.
4495 simply leftover junk.
4492
4496
4493 2002-11-01 Fernando Perez <fperez@colorado.edu>
4497 2002-11-01 Fernando Perez <fperez@colorado.edu>
4494
4498
4495 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4499 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4496 added. If set, IPython now traps EOF and asks for
4500 added. If set, IPython now traps EOF and asks for
4497 confirmation. After a request by François Pinard.
4501 confirmation. After a request by François Pinard.
4498
4502
4499 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4503 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4500 of @abort, and with a new (better) mechanism for handling the
4504 of @abort, and with a new (better) mechanism for handling the
4501 exceptions.
4505 exceptions.
4502
4506
4503 2002-10-27 Fernando Perez <fperez@colorado.edu>
4507 2002-10-27 Fernando Perez <fperez@colorado.edu>
4504
4508
4505 * IPython/usage.py (__doc__): updated the --help information and
4509 * IPython/usage.py (__doc__): updated the --help information and
4506 the ipythonrc file to indicate that -log generates
4510 the ipythonrc file to indicate that -log generates
4507 ./ipython.log. Also fixed the corresponding info in @logstart.
4511 ./ipython.log. Also fixed the corresponding info in @logstart.
4508 This and several other fixes in the manuals thanks to reports by
4512 This and several other fixes in the manuals thanks to reports by
4509 François Pinard <pinard-AT-iro.umontreal.ca>.
4513 François Pinard <pinard-AT-iro.umontreal.ca>.
4510
4514
4511 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4515 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4512 refer to @logstart (instead of @log, which doesn't exist).
4516 refer to @logstart (instead of @log, which doesn't exist).
4513
4517
4514 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4518 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4515 AttributeError crash. Thanks to Christopher Armstrong
4519 AttributeError crash. Thanks to Christopher Armstrong
4516 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4520 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4517 introduced recently (in 0.2.14pre37) with the fix to the eval
4521 introduced recently (in 0.2.14pre37) with the fix to the eval
4518 problem mentioned below.
4522 problem mentioned below.
4519
4523
4520 2002-10-17 Fernando Perez <fperez@colorado.edu>
4524 2002-10-17 Fernando Perez <fperez@colorado.edu>
4521
4525
4522 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4526 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4523 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4527 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4524
4528
4525 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4529 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4526 this function to fix a problem reported by Alex Schmolck. He saw
4530 this function to fix a problem reported by Alex Schmolck. He saw
4527 it with list comprehensions and generators, which were getting
4531 it with list comprehensions and generators, which were getting
4528 called twice. The real problem was an 'eval' call in testing for
4532 called twice. The real problem was an 'eval' call in testing for
4529 automagic which was evaluating the input line silently.
4533 automagic which was evaluating the input line silently.
4530
4534
4531 This is a potentially very nasty bug, if the input has side
4535 This is a potentially very nasty bug, if the input has side
4532 effects which must not be repeated. The code is much cleaner now,
4536 effects which must not be repeated. The code is much cleaner now,
4533 without any blanket 'except' left and with a regexp test for
4537 without any blanket 'except' left and with a regexp test for
4534 actual function names.
4538 actual function names.
4535
4539
4536 But an eval remains, which I'm not fully comfortable with. I just
4540 But an eval remains, which I'm not fully comfortable with. I just
4537 don't know how to find out if an expression could be a callable in
4541 don't know how to find out if an expression could be a callable in
4538 the user's namespace without doing an eval on the string. However
4542 the user's namespace without doing an eval on the string. However
4539 that string is now much more strictly checked so that no code
4543 that string is now much more strictly checked so that no code
4540 slips by, so the eval should only happen for things that can
4544 slips by, so the eval should only happen for things that can
4541 really be only function/method names.
4545 really be only function/method names.
4542
4546
4543 2002-10-15 Fernando Perez <fperez@colorado.edu>
4547 2002-10-15 Fernando Perez <fperez@colorado.edu>
4544
4548
4545 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4549 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4546 OSX information to main manual, removed README_Mac_OSX file from
4550 OSX information to main manual, removed README_Mac_OSX file from
4547 distribution. Also updated credits for recent additions.
4551 distribution. Also updated credits for recent additions.
4548
4552
4549 2002-10-10 Fernando Perez <fperez@colorado.edu>
4553 2002-10-10 Fernando Perez <fperez@colorado.edu>
4550
4554
4551 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4555 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4552 terminal-related issues. Many thanks to Andrea Riciputi
4556 terminal-related issues. Many thanks to Andrea Riciputi
4553 <andrea.riciputi-AT-libero.it> for writing it.
4557 <andrea.riciputi-AT-libero.it> for writing it.
4554
4558
4555 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4559 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4556 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4560 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4557
4561
4558 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4562 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4559 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4563 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4560 <syver-en-AT-online.no> who both submitted patches for this problem.
4564 <syver-en-AT-online.no> who both submitted patches for this problem.
4561
4565
4562 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4566 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4563 global embedding to make sure that things don't overwrite user
4567 global embedding to make sure that things don't overwrite user
4564 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4568 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4565
4569
4566 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4570 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4567 compatibility. Thanks to Hayden Callow
4571 compatibility. Thanks to Hayden Callow
4568 <h.callow-AT-elec.canterbury.ac.nz>
4572 <h.callow-AT-elec.canterbury.ac.nz>
4569
4573
4570 2002-10-04 Fernando Perez <fperez@colorado.edu>
4574 2002-10-04 Fernando Perez <fperez@colorado.edu>
4571
4575
4572 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4576 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4573 Gnuplot.File objects.
4577 Gnuplot.File objects.
4574
4578
4575 2002-07-23 Fernando Perez <fperez@colorado.edu>
4579 2002-07-23 Fernando Perez <fperez@colorado.edu>
4576
4580
4577 * IPython/genutils.py (timing): Added timings() and timing() for
4581 * IPython/genutils.py (timing): Added timings() and timing() for
4578 quick access to the most commonly needed data, the execution
4582 quick access to the most commonly needed data, the execution
4579 times. Old timing() renamed to timings_out().
4583 times. Old timing() renamed to timings_out().
4580
4584
4581 2002-07-18 Fernando Perez <fperez@colorado.edu>
4585 2002-07-18 Fernando Perez <fperez@colorado.edu>
4582
4586
4583 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4587 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4584 bug with nested instances disrupting the parent's tab completion.
4588 bug with nested instances disrupting the parent's tab completion.
4585
4589
4586 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4590 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4587 all_completions code to begin the emacs integration.
4591 all_completions code to begin the emacs integration.
4588
4592
4589 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4593 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4590 argument to allow titling individual arrays when plotting.
4594 argument to allow titling individual arrays when plotting.
4591
4595
4592 2002-07-15 Fernando Perez <fperez@colorado.edu>
4596 2002-07-15 Fernando Perez <fperez@colorado.edu>
4593
4597
4594 * setup.py (make_shortcut): changed to retrieve the value of
4598 * setup.py (make_shortcut): changed to retrieve the value of
4595 'Program Files' directory from the registry (this value changes in
4599 'Program Files' directory from the registry (this value changes in
4596 non-english versions of Windows). Thanks to Thomas Fanslau
4600 non-english versions of Windows). Thanks to Thomas Fanslau
4597 <tfanslau-AT-gmx.de> for the report.
4601 <tfanslau-AT-gmx.de> for the report.
4598
4602
4599 2002-07-10 Fernando Perez <fperez@colorado.edu>
4603 2002-07-10 Fernando Perez <fperez@colorado.edu>
4600
4604
4601 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4605 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4602 a bug in pdb, which crashes if a line with only whitespace is
4606 a bug in pdb, which crashes if a line with only whitespace is
4603 entered. Bug report submitted to sourceforge.
4607 entered. Bug report submitted to sourceforge.
4604
4608
4605 2002-07-09 Fernando Perez <fperez@colorado.edu>
4609 2002-07-09 Fernando Perez <fperez@colorado.edu>
4606
4610
4607 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4611 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4608 reporting exceptions (it's a bug in inspect.py, I just set a
4612 reporting exceptions (it's a bug in inspect.py, I just set a
4609 workaround).
4613 workaround).
4610
4614
4611 2002-07-08 Fernando Perez <fperez@colorado.edu>
4615 2002-07-08 Fernando Perez <fperez@colorado.edu>
4612
4616
4613 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4617 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4614 __IPYTHON__ in __builtins__ to show up in user_ns.
4618 __IPYTHON__ in __builtins__ to show up in user_ns.
4615
4619
4616 2002-07-03 Fernando Perez <fperez@colorado.edu>
4620 2002-07-03 Fernando Perez <fperez@colorado.edu>
4617
4621
4618 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4622 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4619 name from @gp_set_instance to @gp_set_default.
4623 name from @gp_set_instance to @gp_set_default.
4620
4624
4621 * IPython/ipmaker.py (make_IPython): default editor value set to
4625 * IPython/ipmaker.py (make_IPython): default editor value set to
4622 '0' (a string), to match the rc file. Otherwise will crash when
4626 '0' (a string), to match the rc file. Otherwise will crash when
4623 .strip() is called on it.
4627 .strip() is called on it.
4624
4628
4625
4629
4626 2002-06-28 Fernando Perez <fperez@colorado.edu>
4630 2002-06-28 Fernando Perez <fperez@colorado.edu>
4627
4631
4628 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4632 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4629 of files in current directory when a file is executed via
4633 of files in current directory when a file is executed via
4630 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4634 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4631
4635
4632 * setup.py (manfiles): fix for rpm builds, submitted by RA
4636 * setup.py (manfiles): fix for rpm builds, submitted by RA
4633 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4637 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4634
4638
4635 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4639 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4636 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4640 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4637 string!). A. Schmolck caught this one.
4641 string!). A. Schmolck caught this one.
4638
4642
4639 2002-06-27 Fernando Perez <fperez@colorado.edu>
4643 2002-06-27 Fernando Perez <fperez@colorado.edu>
4640
4644
4641 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4645 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4642 defined files at the cmd line. __name__ wasn't being set to
4646 defined files at the cmd line. __name__ wasn't being set to
4643 __main__.
4647 __main__.
4644
4648
4645 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4649 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4646 regular lists and tuples besides Numeric arrays.
4650 regular lists and tuples besides Numeric arrays.
4647
4651
4648 * IPython/Prompts.py (CachedOutput.__call__): Added output
4652 * IPython/Prompts.py (CachedOutput.__call__): Added output
4649 supression for input ending with ';'. Similar to Mathematica and
4653 supression for input ending with ';'. Similar to Mathematica and
4650 Matlab. The _* vars and Out[] list are still updated, just like
4654 Matlab. The _* vars and Out[] list are still updated, just like
4651 Mathematica behaves.
4655 Mathematica behaves.
4652
4656
4653 2002-06-25 Fernando Perez <fperez@colorado.edu>
4657 2002-06-25 Fernando Perez <fperez@colorado.edu>
4654
4658
4655 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4659 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4656 .ini extensions for profiels under Windows.
4660 .ini extensions for profiels under Windows.
4657
4661
4658 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4662 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4659 string form. Fix contributed by Alexander Schmolck
4663 string form. Fix contributed by Alexander Schmolck
4660 <a.schmolck-AT-gmx.net>
4664 <a.schmolck-AT-gmx.net>
4661
4665
4662 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4666 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4663 pre-configured Gnuplot instance.
4667 pre-configured Gnuplot instance.
4664
4668
4665 2002-06-21 Fernando Perez <fperez@colorado.edu>
4669 2002-06-21 Fernando Perez <fperez@colorado.edu>
4666
4670
4667 * IPython/numutils.py (exp_safe): new function, works around the
4671 * IPython/numutils.py (exp_safe): new function, works around the
4668 underflow problems in Numeric.
4672 underflow problems in Numeric.
4669 (log2): New fn. Safe log in base 2: returns exact integer answer
4673 (log2): New fn. Safe log in base 2: returns exact integer answer
4670 for exact integer powers of 2.
4674 for exact integer powers of 2.
4671
4675
4672 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4676 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4673 properly.
4677 properly.
4674
4678
4675 2002-06-20 Fernando Perez <fperez@colorado.edu>
4679 2002-06-20 Fernando Perez <fperez@colorado.edu>
4676
4680
4677 * IPython/genutils.py (timing): new function like
4681 * IPython/genutils.py (timing): new function like
4678 Mathematica's. Similar to time_test, but returns more info.
4682 Mathematica's. Similar to time_test, but returns more info.
4679
4683
4680 2002-06-18 Fernando Perez <fperez@colorado.edu>
4684 2002-06-18 Fernando Perez <fperez@colorado.edu>
4681
4685
4682 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4686 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4683 according to Mike Heeter's suggestions.
4687 according to Mike Heeter's suggestions.
4684
4688
4685 2002-06-16 Fernando Perez <fperez@colorado.edu>
4689 2002-06-16 Fernando Perez <fperez@colorado.edu>
4686
4690
4687 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4691 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4688 system. GnuplotMagic is gone as a user-directory option. New files
4692 system. GnuplotMagic is gone as a user-directory option. New files
4689 make it easier to use all the gnuplot stuff both from external
4693 make it easier to use all the gnuplot stuff both from external
4690 programs as well as from IPython. Had to rewrite part of
4694 programs as well as from IPython. Had to rewrite part of
4691 hardcopy() b/c of a strange bug: often the ps files simply don't
4695 hardcopy() b/c of a strange bug: often the ps files simply don't
4692 get created, and require a repeat of the command (often several
4696 get created, and require a repeat of the command (often several
4693 times).
4697 times).
4694
4698
4695 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4699 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4696 resolve output channel at call time, so that if sys.stderr has
4700 resolve output channel at call time, so that if sys.stderr has
4697 been redirected by user this gets honored.
4701 been redirected by user this gets honored.
4698
4702
4699 2002-06-13 Fernando Perez <fperez@colorado.edu>
4703 2002-06-13 Fernando Perez <fperez@colorado.edu>
4700
4704
4701 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4705 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4702 IPShell. Kept a copy with the old names to avoid breaking people's
4706 IPShell. Kept a copy with the old names to avoid breaking people's
4703 embedded code.
4707 embedded code.
4704
4708
4705 * IPython/ipython: simplified it to the bare minimum after
4709 * IPython/ipython: simplified it to the bare minimum after
4706 Holger's suggestions. Added info about how to use it in
4710 Holger's suggestions. Added info about how to use it in
4707 PYTHONSTARTUP.
4711 PYTHONSTARTUP.
4708
4712
4709 * IPython/Shell.py (IPythonShell): changed the options passing
4713 * IPython/Shell.py (IPythonShell): changed the options passing
4710 from a string with funky %s replacements to a straight list. Maybe
4714 from a string with funky %s replacements to a straight list. Maybe
4711 a bit more typing, but it follows sys.argv conventions, so there's
4715 a bit more typing, but it follows sys.argv conventions, so there's
4712 less special-casing to remember.
4716 less special-casing to remember.
4713
4717
4714 2002-06-12 Fernando Perez <fperez@colorado.edu>
4718 2002-06-12 Fernando Perez <fperez@colorado.edu>
4715
4719
4716 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4720 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4717 command. Thanks to a suggestion by Mike Heeter.
4721 command. Thanks to a suggestion by Mike Heeter.
4718 (Magic.magic_pfile): added behavior to look at filenames if given
4722 (Magic.magic_pfile): added behavior to look at filenames if given
4719 arg is not a defined object.
4723 arg is not a defined object.
4720 (Magic.magic_save): New @save function to save code snippets. Also
4724 (Magic.magic_save): New @save function to save code snippets. Also
4721 a Mike Heeter idea.
4725 a Mike Heeter idea.
4722
4726
4723 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4727 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4724 plot() and replot(). Much more convenient now, especially for
4728 plot() and replot(). Much more convenient now, especially for
4725 interactive use.
4729 interactive use.
4726
4730
4727 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4731 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4728 filenames.
4732 filenames.
4729
4733
4730 2002-06-02 Fernando Perez <fperez@colorado.edu>
4734 2002-06-02 Fernando Perez <fperez@colorado.edu>
4731
4735
4732 * IPython/Struct.py (Struct.__init__): modified to admit
4736 * IPython/Struct.py (Struct.__init__): modified to admit
4733 initialization via another struct.
4737 initialization via another struct.
4734
4738
4735 * IPython/genutils.py (SystemExec.__init__): New stateful
4739 * IPython/genutils.py (SystemExec.__init__): New stateful
4736 interface to xsys and bq. Useful for writing system scripts.
4740 interface to xsys and bq. Useful for writing system scripts.
4737
4741
4738 2002-05-30 Fernando Perez <fperez@colorado.edu>
4742 2002-05-30 Fernando Perez <fperez@colorado.edu>
4739
4743
4740 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4744 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4741 documents. This will make the user download smaller (it's getting
4745 documents. This will make the user download smaller (it's getting
4742 too big).
4746 too big).
4743
4747
4744 2002-05-29 Fernando Perez <fperez@colorado.edu>
4748 2002-05-29 Fernando Perez <fperez@colorado.edu>
4745
4749
4746 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4750 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4747 fix problems with shelve and pickle. Seems to work, but I don't
4751 fix problems with shelve and pickle. Seems to work, but I don't
4748 know if corner cases break it. Thanks to Mike Heeter
4752 know if corner cases break it. Thanks to Mike Heeter
4749 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4753 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4750
4754
4751 2002-05-24 Fernando Perez <fperez@colorado.edu>
4755 2002-05-24 Fernando Perez <fperez@colorado.edu>
4752
4756
4753 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4757 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4754 macros having broken.
4758 macros having broken.
4755
4759
4756 2002-05-21 Fernando Perez <fperez@colorado.edu>
4760 2002-05-21 Fernando Perez <fperez@colorado.edu>
4757
4761
4758 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4762 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4759 introduced logging bug: all history before logging started was
4763 introduced logging bug: all history before logging started was
4760 being written one character per line! This came from the redesign
4764 being written one character per line! This came from the redesign
4761 of the input history as a special list which slices to strings,
4765 of the input history as a special list which slices to strings,
4762 not to lists.
4766 not to lists.
4763
4767
4764 2002-05-20 Fernando Perez <fperez@colorado.edu>
4768 2002-05-20 Fernando Perez <fperez@colorado.edu>
4765
4769
4766 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4770 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4767 be an attribute of all classes in this module. The design of these
4771 be an attribute of all classes in this module. The design of these
4768 classes needs some serious overhauling.
4772 classes needs some serious overhauling.
4769
4773
4770 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4774 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4771 which was ignoring '_' in option names.
4775 which was ignoring '_' in option names.
4772
4776
4773 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4777 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4774 'Verbose_novars' to 'Context' and made it the new default. It's a
4778 'Verbose_novars' to 'Context' and made it the new default. It's a
4775 bit more readable and also safer than verbose.
4779 bit more readable and also safer than verbose.
4776
4780
4777 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4781 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4778 triple-quoted strings.
4782 triple-quoted strings.
4779
4783
4780 * IPython/OInspect.py (__all__): new module exposing the object
4784 * IPython/OInspect.py (__all__): new module exposing the object
4781 introspection facilities. Now the corresponding magics are dummy
4785 introspection facilities. Now the corresponding magics are dummy
4782 wrappers around this. Having this module will make it much easier
4786 wrappers around this. Having this module will make it much easier
4783 to put these functions into our modified pdb.
4787 to put these functions into our modified pdb.
4784 This new object inspector system uses the new colorizing module,
4788 This new object inspector system uses the new colorizing module,
4785 so source code and other things are nicely syntax highlighted.
4789 so source code and other things are nicely syntax highlighted.
4786
4790
4787 2002-05-18 Fernando Perez <fperez@colorado.edu>
4791 2002-05-18 Fernando Perez <fperez@colorado.edu>
4788
4792
4789 * IPython/ColorANSI.py: Split the coloring tools into a separate
4793 * IPython/ColorANSI.py: Split the coloring tools into a separate
4790 module so I can use them in other code easier (they were part of
4794 module so I can use them in other code easier (they were part of
4791 ultraTB).
4795 ultraTB).
4792
4796
4793 2002-05-17 Fernando Perez <fperez@colorado.edu>
4797 2002-05-17 Fernando Perez <fperez@colorado.edu>
4794
4798
4795 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4799 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4796 fixed it to set the global 'g' also to the called instance, as
4800 fixed it to set the global 'g' also to the called instance, as
4797 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4801 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4798 user's 'g' variables).
4802 user's 'g' variables).
4799
4803
4800 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4804 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4801 global variables (aliases to _ih,_oh) so that users which expect
4805 global variables (aliases to _ih,_oh) so that users which expect
4802 In[5] or Out[7] to work aren't unpleasantly surprised.
4806 In[5] or Out[7] to work aren't unpleasantly surprised.
4803 (InputList.__getslice__): new class to allow executing slices of
4807 (InputList.__getslice__): new class to allow executing slices of
4804 input history directly. Very simple class, complements the use of
4808 input history directly. Very simple class, complements the use of
4805 macros.
4809 macros.
4806
4810
4807 2002-05-16 Fernando Perez <fperez@colorado.edu>
4811 2002-05-16 Fernando Perez <fperez@colorado.edu>
4808
4812
4809 * setup.py (docdirbase): make doc directory be just doc/IPython
4813 * setup.py (docdirbase): make doc directory be just doc/IPython
4810 without version numbers, it will reduce clutter for users.
4814 without version numbers, it will reduce clutter for users.
4811
4815
4812 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4816 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4813 execfile call to prevent possible memory leak. See for details:
4817 execfile call to prevent possible memory leak. See for details:
4814 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4818 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4815
4819
4816 2002-05-15 Fernando Perez <fperez@colorado.edu>
4820 2002-05-15 Fernando Perez <fperez@colorado.edu>
4817
4821
4818 * IPython/Magic.py (Magic.magic_psource): made the object
4822 * IPython/Magic.py (Magic.magic_psource): made the object
4819 introspection names be more standard: pdoc, pdef, pfile and
4823 introspection names be more standard: pdoc, pdef, pfile and
4820 psource. They all print/page their output, and it makes
4824 psource. They all print/page their output, and it makes
4821 remembering them easier. Kept old names for compatibility as
4825 remembering them easier. Kept old names for compatibility as
4822 aliases.
4826 aliases.
4823
4827
4824 2002-05-14 Fernando Perez <fperez@colorado.edu>
4828 2002-05-14 Fernando Perez <fperez@colorado.edu>
4825
4829
4826 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4830 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4827 what the mouse problem was. The trick is to use gnuplot with temp
4831 what the mouse problem was. The trick is to use gnuplot with temp
4828 files and NOT with pipes (for data communication), because having
4832 files and NOT with pipes (for data communication), because having
4829 both pipes and the mouse on is bad news.
4833 both pipes and the mouse on is bad news.
4830
4834
4831 2002-05-13 Fernando Perez <fperez@colorado.edu>
4835 2002-05-13 Fernando Perez <fperez@colorado.edu>
4832
4836
4833 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4837 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4834 bug. Information would be reported about builtins even when
4838 bug. Information would be reported about builtins even when
4835 user-defined functions overrode them.
4839 user-defined functions overrode them.
4836
4840
4837 2002-05-11 Fernando Perez <fperez@colorado.edu>
4841 2002-05-11 Fernando Perez <fperez@colorado.edu>
4838
4842
4839 * IPython/__init__.py (__all__): removed FlexCompleter from
4843 * IPython/__init__.py (__all__): removed FlexCompleter from
4840 __all__ so that things don't fail in platforms without readline.
4844 __all__ so that things don't fail in platforms without readline.
4841
4845
4842 2002-05-10 Fernando Perez <fperez@colorado.edu>
4846 2002-05-10 Fernando Perez <fperez@colorado.edu>
4843
4847
4844 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4848 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4845 it requires Numeric, effectively making Numeric a dependency for
4849 it requires Numeric, effectively making Numeric a dependency for
4846 IPython.
4850 IPython.
4847
4851
4848 * Released 0.2.13
4852 * Released 0.2.13
4849
4853
4850 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4854 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4851 profiler interface. Now all the major options from the profiler
4855 profiler interface. Now all the major options from the profiler
4852 module are directly supported in IPython, both for single
4856 module are directly supported in IPython, both for single
4853 expressions (@prun) and for full programs (@run -p).
4857 expressions (@prun) and for full programs (@run -p).
4854
4858
4855 2002-05-09 Fernando Perez <fperez@colorado.edu>
4859 2002-05-09 Fernando Perez <fperez@colorado.edu>
4856
4860
4857 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4861 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4858 magic properly formatted for screen.
4862 magic properly formatted for screen.
4859
4863
4860 * setup.py (make_shortcut): Changed things to put pdf version in
4864 * setup.py (make_shortcut): Changed things to put pdf version in
4861 doc/ instead of doc/manual (had to change lyxport a bit).
4865 doc/ instead of doc/manual (had to change lyxport a bit).
4862
4866
4863 * IPython/Magic.py (Profile.string_stats): made profile runs go
4867 * IPython/Magic.py (Profile.string_stats): made profile runs go
4864 through pager (they are long and a pager allows searching, saving,
4868 through pager (they are long and a pager allows searching, saving,
4865 etc.)
4869 etc.)
4866
4870
4867 2002-05-08 Fernando Perez <fperez@colorado.edu>
4871 2002-05-08 Fernando Perez <fperez@colorado.edu>
4868
4872
4869 * Released 0.2.12
4873 * Released 0.2.12
4870
4874
4871 2002-05-06 Fernando Perez <fperez@colorado.edu>
4875 2002-05-06 Fernando Perez <fperez@colorado.edu>
4872
4876
4873 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4877 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4874 introduced); 'hist n1 n2' was broken.
4878 introduced); 'hist n1 n2' was broken.
4875 (Magic.magic_pdb): added optional on/off arguments to @pdb
4879 (Magic.magic_pdb): added optional on/off arguments to @pdb
4876 (Magic.magic_run): added option -i to @run, which executes code in
4880 (Magic.magic_run): added option -i to @run, which executes code in
4877 the IPython namespace instead of a clean one. Also added @irun as
4881 the IPython namespace instead of a clean one. Also added @irun as
4878 an alias to @run -i.
4882 an alias to @run -i.
4879
4883
4880 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4884 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4881 fixed (it didn't really do anything, the namespaces were wrong).
4885 fixed (it didn't really do anything, the namespaces were wrong).
4882
4886
4883 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4887 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4884
4888
4885 * IPython/__init__.py (__all__): Fixed package namespace, now
4889 * IPython/__init__.py (__all__): Fixed package namespace, now
4886 'import IPython' does give access to IPython.<all> as
4890 'import IPython' does give access to IPython.<all> as
4887 expected. Also renamed __release__ to Release.
4891 expected. Also renamed __release__ to Release.
4888
4892
4889 * IPython/Debugger.py (__license__): created new Pdb class which
4893 * IPython/Debugger.py (__license__): created new Pdb class which
4890 functions like a drop-in for the normal pdb.Pdb but does NOT
4894 functions like a drop-in for the normal pdb.Pdb but does NOT
4891 import readline by default. This way it doesn't muck up IPython's
4895 import readline by default. This way it doesn't muck up IPython's
4892 readline handling, and now tab-completion finally works in the
4896 readline handling, and now tab-completion finally works in the
4893 debugger -- sort of. It completes things globally visible, but the
4897 debugger -- sort of. It completes things globally visible, but the
4894 completer doesn't track the stack as pdb walks it. That's a bit
4898 completer doesn't track the stack as pdb walks it. That's a bit
4895 tricky, and I'll have to implement it later.
4899 tricky, and I'll have to implement it later.
4896
4900
4897 2002-05-05 Fernando Perez <fperez@colorado.edu>
4901 2002-05-05 Fernando Perez <fperez@colorado.edu>
4898
4902
4899 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4903 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4900 magic docstrings when printed via ? (explicit \'s were being
4904 magic docstrings when printed via ? (explicit \'s were being
4901 printed).
4905 printed).
4902
4906
4903 * IPython/ipmaker.py (make_IPython): fixed namespace
4907 * IPython/ipmaker.py (make_IPython): fixed namespace
4904 identification bug. Now variables loaded via logs or command-line
4908 identification bug. Now variables loaded via logs or command-line
4905 files are recognized in the interactive namespace by @who.
4909 files are recognized in the interactive namespace by @who.
4906
4910
4907 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4911 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4908 log replay system stemming from the string form of Structs.
4912 log replay system stemming from the string form of Structs.
4909
4913
4910 * IPython/Magic.py (Macro.__init__): improved macros to properly
4914 * IPython/Magic.py (Macro.__init__): improved macros to properly
4911 handle magic commands in them.
4915 handle magic commands in them.
4912 (Magic.magic_logstart): usernames are now expanded so 'logstart
4916 (Magic.magic_logstart): usernames are now expanded so 'logstart
4913 ~/mylog' now works.
4917 ~/mylog' now works.
4914
4918
4915 * IPython/iplib.py (complete): fixed bug where paths starting with
4919 * IPython/iplib.py (complete): fixed bug where paths starting with
4916 '/' would be completed as magic names.
4920 '/' would be completed as magic names.
4917
4921
4918 2002-05-04 Fernando Perez <fperez@colorado.edu>
4922 2002-05-04 Fernando Perez <fperez@colorado.edu>
4919
4923
4920 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4924 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4921 allow running full programs under the profiler's control.
4925 allow running full programs under the profiler's control.
4922
4926
4923 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4927 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4924 mode to report exceptions verbosely but without formatting
4928 mode to report exceptions verbosely but without formatting
4925 variables. This addresses the issue of ipython 'freezing' (it's
4929 variables. This addresses the issue of ipython 'freezing' (it's
4926 not frozen, but caught in an expensive formatting loop) when huge
4930 not frozen, but caught in an expensive formatting loop) when huge
4927 variables are in the context of an exception.
4931 variables are in the context of an exception.
4928 (VerboseTB.text): Added '--->' markers at line where exception was
4932 (VerboseTB.text): Added '--->' markers at line where exception was
4929 triggered. Much clearer to read, especially in NoColor modes.
4933 triggered. Much clearer to read, especially in NoColor modes.
4930
4934
4931 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4935 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4932 implemented in reverse when changing to the new parse_options().
4936 implemented in reverse when changing to the new parse_options().
4933
4937
4934 2002-05-03 Fernando Perez <fperez@colorado.edu>
4938 2002-05-03 Fernando Perez <fperez@colorado.edu>
4935
4939
4936 * IPython/Magic.py (Magic.parse_options): new function so that
4940 * IPython/Magic.py (Magic.parse_options): new function so that
4937 magics can parse options easier.
4941 magics can parse options easier.
4938 (Magic.magic_prun): new function similar to profile.run(),
4942 (Magic.magic_prun): new function similar to profile.run(),
4939 suggested by Chris Hart.
4943 suggested by Chris Hart.
4940 (Magic.magic_cd): fixed behavior so that it only changes if
4944 (Magic.magic_cd): fixed behavior so that it only changes if
4941 directory actually is in history.
4945 directory actually is in history.
4942
4946
4943 * IPython/usage.py (__doc__): added information about potential
4947 * IPython/usage.py (__doc__): added information about potential
4944 slowness of Verbose exception mode when there are huge data
4948 slowness of Verbose exception mode when there are huge data
4945 structures to be formatted (thanks to Archie Paulson).
4949 structures to be formatted (thanks to Archie Paulson).
4946
4950
4947 * IPython/ipmaker.py (make_IPython): Changed default logging
4951 * IPython/ipmaker.py (make_IPython): Changed default logging
4948 (when simply called with -log) to use curr_dir/ipython.log in
4952 (when simply called with -log) to use curr_dir/ipython.log in
4949 rotate mode. Fixed crash which was occuring with -log before
4953 rotate mode. Fixed crash which was occuring with -log before
4950 (thanks to Jim Boyle).
4954 (thanks to Jim Boyle).
4951
4955
4952 2002-05-01 Fernando Perez <fperez@colorado.edu>
4956 2002-05-01 Fernando Perez <fperez@colorado.edu>
4953
4957
4954 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4958 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4955 was nasty -- though somewhat of a corner case).
4959 was nasty -- though somewhat of a corner case).
4956
4960
4957 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4961 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4958 text (was a bug).
4962 text (was a bug).
4959
4963
4960 2002-04-30 Fernando Perez <fperez@colorado.edu>
4964 2002-04-30 Fernando Perez <fperez@colorado.edu>
4961
4965
4962 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4966 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4963 a print after ^D or ^C from the user so that the In[] prompt
4967 a print after ^D or ^C from the user so that the In[] prompt
4964 doesn't over-run the gnuplot one.
4968 doesn't over-run the gnuplot one.
4965
4969
4966 2002-04-29 Fernando Perez <fperez@colorado.edu>
4970 2002-04-29 Fernando Perez <fperez@colorado.edu>
4967
4971
4968 * Released 0.2.10
4972 * Released 0.2.10
4969
4973
4970 * IPython/__release__.py (version): get date dynamically.
4974 * IPython/__release__.py (version): get date dynamically.
4971
4975
4972 * Misc. documentation updates thanks to Arnd's comments. Also ran
4976 * Misc. documentation updates thanks to Arnd's comments. Also ran
4973 a full spellcheck on the manual (hadn't been done in a while).
4977 a full spellcheck on the manual (hadn't been done in a while).
4974
4978
4975 2002-04-27 Fernando Perez <fperez@colorado.edu>
4979 2002-04-27 Fernando Perez <fperez@colorado.edu>
4976
4980
4977 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4981 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4978 starting a log in mid-session would reset the input history list.
4982 starting a log in mid-session would reset the input history list.
4979
4983
4980 2002-04-26 Fernando Perez <fperez@colorado.edu>
4984 2002-04-26 Fernando Perez <fperez@colorado.edu>
4981
4985
4982 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4986 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4983 all files were being included in an update. Now anything in
4987 all files were being included in an update. Now anything in
4984 UserConfig that matches [A-Za-z]*.py will go (this excludes
4988 UserConfig that matches [A-Za-z]*.py will go (this excludes
4985 __init__.py)
4989 __init__.py)
4986
4990
4987 2002-04-25 Fernando Perez <fperez@colorado.edu>
4991 2002-04-25 Fernando Perez <fperez@colorado.edu>
4988
4992
4989 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4993 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4990 to __builtins__ so that any form of embedded or imported code can
4994 to __builtins__ so that any form of embedded or imported code can
4991 test for being inside IPython.
4995 test for being inside IPython.
4992
4996
4993 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4997 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4994 changed to GnuplotMagic because it's now an importable module,
4998 changed to GnuplotMagic because it's now an importable module,
4995 this makes the name follow that of the standard Gnuplot module.
4999 this makes the name follow that of the standard Gnuplot module.
4996 GnuplotMagic can now be loaded at any time in mid-session.
5000 GnuplotMagic can now be loaded at any time in mid-session.
4997
5001
4998 2002-04-24 Fernando Perez <fperez@colorado.edu>
5002 2002-04-24 Fernando Perez <fperez@colorado.edu>
4999
5003
5000 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5004 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5001 the globals (IPython has its own namespace) and the
5005 the globals (IPython has its own namespace) and the
5002 PhysicalQuantity stuff is much better anyway.
5006 PhysicalQuantity stuff is much better anyway.
5003
5007
5004 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5008 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5005 embedding example to standard user directory for
5009 embedding example to standard user directory for
5006 distribution. Also put it in the manual.
5010 distribution. Also put it in the manual.
5007
5011
5008 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5012 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5009 instance as first argument (so it doesn't rely on some obscure
5013 instance as first argument (so it doesn't rely on some obscure
5010 hidden global).
5014 hidden global).
5011
5015
5012 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5016 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5013 delimiters. While it prevents ().TAB from working, it allows
5017 delimiters. While it prevents ().TAB from working, it allows
5014 completions in open (... expressions. This is by far a more common
5018 completions in open (... expressions. This is by far a more common
5015 case.
5019 case.
5016
5020
5017 2002-04-23 Fernando Perez <fperez@colorado.edu>
5021 2002-04-23 Fernando Perez <fperez@colorado.edu>
5018
5022
5019 * IPython/Extensions/InterpreterPasteInput.py: new
5023 * IPython/Extensions/InterpreterPasteInput.py: new
5020 syntax-processing module for pasting lines with >>> or ... at the
5024 syntax-processing module for pasting lines with >>> or ... at the
5021 start.
5025 start.
5022
5026
5023 * IPython/Extensions/PhysicalQ_Interactive.py
5027 * IPython/Extensions/PhysicalQ_Interactive.py
5024 (PhysicalQuantityInteractive.__int__): fixed to work with either
5028 (PhysicalQuantityInteractive.__int__): fixed to work with either
5025 Numeric or math.
5029 Numeric or math.
5026
5030
5027 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5031 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5028 provided profiles. Now we have:
5032 provided profiles. Now we have:
5029 -math -> math module as * and cmath with its own namespace.
5033 -math -> math module as * and cmath with its own namespace.
5030 -numeric -> Numeric as *, plus gnuplot & grace
5034 -numeric -> Numeric as *, plus gnuplot & grace
5031 -physics -> same as before
5035 -physics -> same as before
5032
5036
5033 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5037 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5034 user-defined magics wouldn't be found by @magic if they were
5038 user-defined magics wouldn't be found by @magic if they were
5035 defined as class methods. Also cleaned up the namespace search
5039 defined as class methods. Also cleaned up the namespace search
5036 logic and the string building (to use %s instead of many repeated
5040 logic and the string building (to use %s instead of many repeated
5037 string adds).
5041 string adds).
5038
5042
5039 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5043 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5040 of user-defined magics to operate with class methods (cleaner, in
5044 of user-defined magics to operate with class methods (cleaner, in
5041 line with the gnuplot code).
5045 line with the gnuplot code).
5042
5046
5043 2002-04-22 Fernando Perez <fperez@colorado.edu>
5047 2002-04-22 Fernando Perez <fperez@colorado.edu>
5044
5048
5045 * setup.py: updated dependency list so that manual is updated when
5049 * setup.py: updated dependency list so that manual is updated when
5046 all included files change.
5050 all included files change.
5047
5051
5048 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5052 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5049 the delimiter removal option (the fix is ugly right now).
5053 the delimiter removal option (the fix is ugly right now).
5050
5054
5051 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5055 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5052 all of the math profile (quicker loading, no conflict between
5056 all of the math profile (quicker loading, no conflict between
5053 g-9.8 and g-gnuplot).
5057 g-9.8 and g-gnuplot).
5054
5058
5055 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5059 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5056 name of post-mortem files to IPython_crash_report.txt.
5060 name of post-mortem files to IPython_crash_report.txt.
5057
5061
5058 * Cleanup/update of the docs. Added all the new readline info and
5062 * Cleanup/update of the docs. Added all the new readline info and
5059 formatted all lists as 'real lists'.
5063 formatted all lists as 'real lists'.
5060
5064
5061 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5065 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5062 tab-completion options, since the full readline parse_and_bind is
5066 tab-completion options, since the full readline parse_and_bind is
5063 now accessible.
5067 now accessible.
5064
5068
5065 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5069 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5066 handling of readline options. Now users can specify any string to
5070 handling of readline options. Now users can specify any string to
5067 be passed to parse_and_bind(), as well as the delimiters to be
5071 be passed to parse_and_bind(), as well as the delimiters to be
5068 removed.
5072 removed.
5069 (InteractiveShell.__init__): Added __name__ to the global
5073 (InteractiveShell.__init__): Added __name__ to the global
5070 namespace so that things like Itpl which rely on its existence
5074 namespace so that things like Itpl which rely on its existence
5071 don't crash.
5075 don't crash.
5072 (InteractiveShell._prefilter): Defined the default with a _ so
5076 (InteractiveShell._prefilter): Defined the default with a _ so
5073 that prefilter() is easier to override, while the default one
5077 that prefilter() is easier to override, while the default one
5074 remains available.
5078 remains available.
5075
5079
5076 2002-04-18 Fernando Perez <fperez@colorado.edu>
5080 2002-04-18 Fernando Perez <fperez@colorado.edu>
5077
5081
5078 * Added information about pdb in the docs.
5082 * Added information about pdb in the docs.
5079
5083
5080 2002-04-17 Fernando Perez <fperez@colorado.edu>
5084 2002-04-17 Fernando Perez <fperez@colorado.edu>
5081
5085
5082 * IPython/ipmaker.py (make_IPython): added rc_override option to
5086 * IPython/ipmaker.py (make_IPython): added rc_override option to
5083 allow passing config options at creation time which may override
5087 allow passing config options at creation time which may override
5084 anything set in the config files or command line. This is
5088 anything set in the config files or command line. This is
5085 particularly useful for configuring embedded instances.
5089 particularly useful for configuring embedded instances.
5086
5090
5087 2002-04-15 Fernando Perez <fperez@colorado.edu>
5091 2002-04-15 Fernando Perez <fperez@colorado.edu>
5088
5092
5089 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5093 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5090 crash embedded instances because of the input cache falling out of
5094 crash embedded instances because of the input cache falling out of
5091 sync with the output counter.
5095 sync with the output counter.
5092
5096
5093 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5097 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5094 mode which calls pdb after an uncaught exception in IPython itself.
5098 mode which calls pdb after an uncaught exception in IPython itself.
5095
5099
5096 2002-04-14 Fernando Perez <fperez@colorado.edu>
5100 2002-04-14 Fernando Perez <fperez@colorado.edu>
5097
5101
5098 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5102 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5099 readline, fix it back after each call.
5103 readline, fix it back after each call.
5100
5104
5101 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5105 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5102 method to force all access via __call__(), which guarantees that
5106 method to force all access via __call__(), which guarantees that
5103 traceback references are properly deleted.
5107 traceback references are properly deleted.
5104
5108
5105 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5109 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5106 improve printing when pprint is in use.
5110 improve printing when pprint is in use.
5107
5111
5108 2002-04-13 Fernando Perez <fperez@colorado.edu>
5112 2002-04-13 Fernando Perez <fperez@colorado.edu>
5109
5113
5110 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5114 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5111 exceptions aren't caught anymore. If the user triggers one, he
5115 exceptions aren't caught anymore. If the user triggers one, he
5112 should know why he's doing it and it should go all the way up,
5116 should know why he's doing it and it should go all the way up,
5113 just like any other exception. So now @abort will fully kill the
5117 just like any other exception. So now @abort will fully kill the
5114 embedded interpreter and the embedding code (unless that happens
5118 embedded interpreter and the embedding code (unless that happens
5115 to catch SystemExit).
5119 to catch SystemExit).
5116
5120
5117 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5121 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5118 and a debugger() method to invoke the interactive pdb debugger
5122 and a debugger() method to invoke the interactive pdb debugger
5119 after printing exception information. Also added the corresponding
5123 after printing exception information. Also added the corresponding
5120 -pdb option and @pdb magic to control this feature, and updated
5124 -pdb option and @pdb magic to control this feature, and updated
5121 the docs. After a suggestion from Christopher Hart
5125 the docs. After a suggestion from Christopher Hart
5122 (hart-AT-caltech.edu).
5126 (hart-AT-caltech.edu).
5123
5127
5124 2002-04-12 Fernando Perez <fperez@colorado.edu>
5128 2002-04-12 Fernando Perez <fperez@colorado.edu>
5125
5129
5126 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5130 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5127 the exception handlers defined by the user (not the CrashHandler)
5131 the exception handlers defined by the user (not the CrashHandler)
5128 so that user exceptions don't trigger an ipython bug report.
5132 so that user exceptions don't trigger an ipython bug report.
5129
5133
5130 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5134 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5131 configurable (it should have always been so).
5135 configurable (it should have always been so).
5132
5136
5133 2002-03-26 Fernando Perez <fperez@colorado.edu>
5137 2002-03-26 Fernando Perez <fperez@colorado.edu>
5134
5138
5135 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5139 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5136 and there to fix embedding namespace issues. This should all be
5140 and there to fix embedding namespace issues. This should all be
5137 done in a more elegant way.
5141 done in a more elegant way.
5138
5142
5139 2002-03-25 Fernando Perez <fperez@colorado.edu>
5143 2002-03-25 Fernando Perez <fperez@colorado.edu>
5140
5144
5141 * IPython/genutils.py (get_home_dir): Try to make it work under
5145 * IPython/genutils.py (get_home_dir): Try to make it work under
5142 win9x also.
5146 win9x also.
5143
5147
5144 2002-03-20 Fernando Perez <fperez@colorado.edu>
5148 2002-03-20 Fernando Perez <fperez@colorado.edu>
5145
5149
5146 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5150 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5147 sys.displayhook untouched upon __init__.
5151 sys.displayhook untouched upon __init__.
5148
5152
5149 2002-03-19 Fernando Perez <fperez@colorado.edu>
5153 2002-03-19 Fernando Perez <fperez@colorado.edu>
5150
5154
5151 * Released 0.2.9 (for embedding bug, basically).
5155 * Released 0.2.9 (for embedding bug, basically).
5152
5156
5153 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5157 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5154 exceptions so that enclosing shell's state can be restored.
5158 exceptions so that enclosing shell's state can be restored.
5155
5159
5156 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5160 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5157 naming conventions in the .ipython/ dir.
5161 naming conventions in the .ipython/ dir.
5158
5162
5159 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5163 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5160 from delimiters list so filenames with - in them get expanded.
5164 from delimiters list so filenames with - in them get expanded.
5161
5165
5162 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5166 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5163 sys.displayhook not being properly restored after an embedded call.
5167 sys.displayhook not being properly restored after an embedded call.
5164
5168
5165 2002-03-18 Fernando Perez <fperez@colorado.edu>
5169 2002-03-18 Fernando Perez <fperez@colorado.edu>
5166
5170
5167 * Released 0.2.8
5171 * Released 0.2.8
5168
5172
5169 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5173 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5170 some files weren't being included in a -upgrade.
5174 some files weren't being included in a -upgrade.
5171 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5175 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5172 on' so that the first tab completes.
5176 on' so that the first tab completes.
5173 (InteractiveShell.handle_magic): fixed bug with spaces around
5177 (InteractiveShell.handle_magic): fixed bug with spaces around
5174 quotes breaking many magic commands.
5178 quotes breaking many magic commands.
5175
5179
5176 * setup.py: added note about ignoring the syntax error messages at
5180 * setup.py: added note about ignoring the syntax error messages at
5177 installation.
5181 installation.
5178
5182
5179 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5183 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5180 streamlining the gnuplot interface, now there's only one magic @gp.
5184 streamlining the gnuplot interface, now there's only one magic @gp.
5181
5185
5182 2002-03-17 Fernando Perez <fperez@colorado.edu>
5186 2002-03-17 Fernando Perez <fperez@colorado.edu>
5183
5187
5184 * IPython/UserConfig/magic_gnuplot.py: new name for the
5188 * IPython/UserConfig/magic_gnuplot.py: new name for the
5185 example-magic_pm.py file. Much enhanced system, now with a shell
5189 example-magic_pm.py file. Much enhanced system, now with a shell
5186 for communicating directly with gnuplot, one command at a time.
5190 for communicating directly with gnuplot, one command at a time.
5187
5191
5188 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5192 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5189 setting __name__=='__main__'.
5193 setting __name__=='__main__'.
5190
5194
5191 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5195 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5192 mini-shell for accessing gnuplot from inside ipython. Should
5196 mini-shell for accessing gnuplot from inside ipython. Should
5193 extend it later for grace access too. Inspired by Arnd's
5197 extend it later for grace access too. Inspired by Arnd's
5194 suggestion.
5198 suggestion.
5195
5199
5196 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5200 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5197 calling magic functions with () in their arguments. Thanks to Arnd
5201 calling magic functions with () in their arguments. Thanks to Arnd
5198 Baecker for pointing this to me.
5202 Baecker for pointing this to me.
5199
5203
5200 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5204 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5201 infinitely for integer or complex arrays (only worked with floats).
5205 infinitely for integer or complex arrays (only worked with floats).
5202
5206
5203 2002-03-16 Fernando Perez <fperez@colorado.edu>
5207 2002-03-16 Fernando Perez <fperez@colorado.edu>
5204
5208
5205 * setup.py: Merged setup and setup_windows into a single script
5209 * setup.py: Merged setup and setup_windows into a single script
5206 which properly handles things for windows users.
5210 which properly handles things for windows users.
5207
5211
5208 2002-03-15 Fernando Perez <fperez@colorado.edu>
5212 2002-03-15 Fernando Perez <fperez@colorado.edu>
5209
5213
5210 * Big change to the manual: now the magics are all automatically
5214 * Big change to the manual: now the magics are all automatically
5211 documented. This information is generated from their docstrings
5215 documented. This information is generated from their docstrings
5212 and put in a latex file included by the manual lyx file. This way
5216 and put in a latex file included by the manual lyx file. This way
5213 we get always up to date information for the magics. The manual
5217 we get always up to date information for the magics. The manual
5214 now also has proper version information, also auto-synced.
5218 now also has proper version information, also auto-synced.
5215
5219
5216 For this to work, an undocumented --magic_docstrings option was added.
5220 For this to work, an undocumented --magic_docstrings option was added.
5217
5221
5218 2002-03-13 Fernando Perez <fperez@colorado.edu>
5222 2002-03-13 Fernando Perez <fperez@colorado.edu>
5219
5223
5220 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5224 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5221 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5225 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5222
5226
5223 2002-03-12 Fernando Perez <fperez@colorado.edu>
5227 2002-03-12 Fernando Perez <fperez@colorado.edu>
5224
5228
5225 * IPython/ultraTB.py (TermColors): changed color escapes again to
5229 * IPython/ultraTB.py (TermColors): changed color escapes again to
5226 fix the (old, reintroduced) line-wrapping bug. Basically, if
5230 fix the (old, reintroduced) line-wrapping bug. Basically, if
5227 \001..\002 aren't given in the color escapes, lines get wrapped
5231 \001..\002 aren't given in the color escapes, lines get wrapped
5228 weirdly. But giving those screws up old xterms and emacs terms. So
5232 weirdly. But giving those screws up old xterms and emacs terms. So
5229 I added some logic for emacs terms to be ok, but I can't identify old
5233 I added some logic for emacs terms to be ok, but I can't identify old
5230 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5234 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5231
5235
5232 2002-03-10 Fernando Perez <fperez@colorado.edu>
5236 2002-03-10 Fernando Perez <fperez@colorado.edu>
5233
5237
5234 * IPython/usage.py (__doc__): Various documentation cleanups and
5238 * IPython/usage.py (__doc__): Various documentation cleanups and
5235 updates, both in usage docstrings and in the manual.
5239 updates, both in usage docstrings and in the manual.
5236
5240
5237 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5241 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5238 handling of caching. Set minimum acceptabe value for having a
5242 handling of caching. Set minimum acceptabe value for having a
5239 cache at 20 values.
5243 cache at 20 values.
5240
5244
5241 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5245 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5242 install_first_time function to a method, renamed it and added an
5246 install_first_time function to a method, renamed it and added an
5243 'upgrade' mode. Now people can update their config directory with
5247 'upgrade' mode. Now people can update their config directory with
5244 a simple command line switch (-upgrade, also new).
5248 a simple command line switch (-upgrade, also new).
5245
5249
5246 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5250 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5247 @file (convenient for automagic users under Python >= 2.2).
5251 @file (convenient for automagic users under Python >= 2.2).
5248 Removed @files (it seemed more like a plural than an abbrev. of
5252 Removed @files (it seemed more like a plural than an abbrev. of
5249 'file show').
5253 'file show').
5250
5254
5251 * IPython/iplib.py (install_first_time): Fixed crash if there were
5255 * IPython/iplib.py (install_first_time): Fixed crash if there were
5252 backup files ('~') in .ipython/ install directory.
5256 backup files ('~') in .ipython/ install directory.
5253
5257
5254 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5258 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5255 system. Things look fine, but these changes are fairly
5259 system. Things look fine, but these changes are fairly
5256 intrusive. Test them for a few days.
5260 intrusive. Test them for a few days.
5257
5261
5258 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5262 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5259 the prompts system. Now all in/out prompt strings are user
5263 the prompts system. Now all in/out prompt strings are user
5260 controllable. This is particularly useful for embedding, as one
5264 controllable. This is particularly useful for embedding, as one
5261 can tag embedded instances with particular prompts.
5265 can tag embedded instances with particular prompts.
5262
5266
5263 Also removed global use of sys.ps1/2, which now allows nested
5267 Also removed global use of sys.ps1/2, which now allows nested
5264 embeddings without any problems. Added command-line options for
5268 embeddings without any problems. Added command-line options for
5265 the prompt strings.
5269 the prompt strings.
5266
5270
5267 2002-03-08 Fernando Perez <fperez@colorado.edu>
5271 2002-03-08 Fernando Perez <fperez@colorado.edu>
5268
5272
5269 * IPython/UserConfig/example-embed-short.py (ipshell): added
5273 * IPython/UserConfig/example-embed-short.py (ipshell): added
5270 example file with the bare minimum code for embedding.
5274 example file with the bare minimum code for embedding.
5271
5275
5272 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5276 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5273 functionality for the embeddable shell to be activated/deactivated
5277 functionality for the embeddable shell to be activated/deactivated
5274 either globally or at each call.
5278 either globally or at each call.
5275
5279
5276 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5280 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5277 rewriting the prompt with '--->' for auto-inputs with proper
5281 rewriting the prompt with '--->' for auto-inputs with proper
5278 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5282 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5279 this is handled by the prompts class itself, as it should.
5283 this is handled by the prompts class itself, as it should.
5280
5284
5281 2002-03-05 Fernando Perez <fperez@colorado.edu>
5285 2002-03-05 Fernando Perez <fperez@colorado.edu>
5282
5286
5283 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5287 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5284 @logstart to avoid name clashes with the math log function.
5288 @logstart to avoid name clashes with the math log function.
5285
5289
5286 * Big updates to X/Emacs section of the manual.
5290 * Big updates to X/Emacs section of the manual.
5287
5291
5288 * Removed ipython_emacs. Milan explained to me how to pass
5292 * Removed ipython_emacs. Milan explained to me how to pass
5289 arguments to ipython through Emacs. Some day I'm going to end up
5293 arguments to ipython through Emacs. Some day I'm going to end up
5290 learning some lisp...
5294 learning some lisp...
5291
5295
5292 2002-03-04 Fernando Perez <fperez@colorado.edu>
5296 2002-03-04 Fernando Perez <fperez@colorado.edu>
5293
5297
5294 * IPython/ipython_emacs: Created script to be used as the
5298 * IPython/ipython_emacs: Created script to be used as the
5295 py-python-command Emacs variable so we can pass IPython
5299 py-python-command Emacs variable so we can pass IPython
5296 parameters. I can't figure out how to tell Emacs directly to pass
5300 parameters. I can't figure out how to tell Emacs directly to pass
5297 parameters to IPython, so a dummy shell script will do it.
5301 parameters to IPython, so a dummy shell script will do it.
5298
5302
5299 Other enhancements made for things to work better under Emacs'
5303 Other enhancements made for things to work better under Emacs'
5300 various types of terminals. Many thanks to Milan Zamazal
5304 various types of terminals. Many thanks to Milan Zamazal
5301 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5305 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5302
5306
5303 2002-03-01 Fernando Perez <fperez@colorado.edu>
5307 2002-03-01 Fernando Perez <fperez@colorado.edu>
5304
5308
5305 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5309 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5306 that loading of readline is now optional. This gives better
5310 that loading of readline is now optional. This gives better
5307 control to emacs users.
5311 control to emacs users.
5308
5312
5309 * IPython/ultraTB.py (__date__): Modified color escape sequences
5313 * IPython/ultraTB.py (__date__): Modified color escape sequences
5310 and now things work fine under xterm and in Emacs' term buffers
5314 and now things work fine under xterm and in Emacs' term buffers
5311 (though not shell ones). Well, in emacs you get colors, but all
5315 (though not shell ones). Well, in emacs you get colors, but all
5312 seem to be 'light' colors (no difference between dark and light
5316 seem to be 'light' colors (no difference between dark and light
5313 ones). But the garbage chars are gone, and also in xterms. It
5317 ones). But the garbage chars are gone, and also in xterms. It
5314 seems that now I'm using 'cleaner' ansi sequences.
5318 seems that now I'm using 'cleaner' ansi sequences.
5315
5319
5316 2002-02-21 Fernando Perez <fperez@colorado.edu>
5320 2002-02-21 Fernando Perez <fperez@colorado.edu>
5317
5321
5318 * Released 0.2.7 (mainly to publish the scoping fix).
5322 * Released 0.2.7 (mainly to publish the scoping fix).
5319
5323
5320 * IPython/Logger.py (Logger.logstate): added. A corresponding
5324 * IPython/Logger.py (Logger.logstate): added. A corresponding
5321 @logstate magic was created.
5325 @logstate magic was created.
5322
5326
5323 * IPython/Magic.py: fixed nested scoping problem under Python
5327 * IPython/Magic.py: fixed nested scoping problem under Python
5324 2.1.x (automagic wasn't working).
5328 2.1.x (automagic wasn't working).
5325
5329
5326 2002-02-20 Fernando Perez <fperez@colorado.edu>
5330 2002-02-20 Fernando Perez <fperez@colorado.edu>
5327
5331
5328 * Released 0.2.6.
5332 * Released 0.2.6.
5329
5333
5330 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5334 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5331 option so that logs can come out without any headers at all.
5335 option so that logs can come out without any headers at all.
5332
5336
5333 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5337 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5334 SciPy.
5338 SciPy.
5335
5339
5336 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5340 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5337 that embedded IPython calls don't require vars() to be explicitly
5341 that embedded IPython calls don't require vars() to be explicitly
5338 passed. Now they are extracted from the caller's frame (code
5342 passed. Now they are extracted from the caller's frame (code
5339 snatched from Eric Jones' weave). Added better documentation to
5343 snatched from Eric Jones' weave). Added better documentation to
5340 the section on embedding and the example file.
5344 the section on embedding and the example file.
5341
5345
5342 * IPython/genutils.py (page): Changed so that under emacs, it just
5346 * IPython/genutils.py (page): Changed so that under emacs, it just
5343 prints the string. You can then page up and down in the emacs
5347 prints the string. You can then page up and down in the emacs
5344 buffer itself. This is how the builtin help() works.
5348 buffer itself. This is how the builtin help() works.
5345
5349
5346 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5350 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5347 macro scoping: macros need to be executed in the user's namespace
5351 macro scoping: macros need to be executed in the user's namespace
5348 to work as if they had been typed by the user.
5352 to work as if they had been typed by the user.
5349
5353
5350 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5354 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5351 execute automatically (no need to type 'exec...'). They then
5355 execute automatically (no need to type 'exec...'). They then
5352 behave like 'true macros'. The printing system was also modified
5356 behave like 'true macros'. The printing system was also modified
5353 for this to work.
5357 for this to work.
5354
5358
5355 2002-02-19 Fernando Perez <fperez@colorado.edu>
5359 2002-02-19 Fernando Perez <fperez@colorado.edu>
5356
5360
5357 * IPython/genutils.py (page_file): new function for paging files
5361 * IPython/genutils.py (page_file): new function for paging files
5358 in an OS-independent way. Also necessary for file viewing to work
5362 in an OS-independent way. Also necessary for file viewing to work
5359 well inside Emacs buffers.
5363 well inside Emacs buffers.
5360 (page): Added checks for being in an emacs buffer.
5364 (page): Added checks for being in an emacs buffer.
5361 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5365 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5362 same bug in iplib.
5366 same bug in iplib.
5363
5367
5364 2002-02-18 Fernando Perez <fperez@colorado.edu>
5368 2002-02-18 Fernando Perez <fperez@colorado.edu>
5365
5369
5366 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5370 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5367 of readline so that IPython can work inside an Emacs buffer.
5371 of readline so that IPython can work inside an Emacs buffer.
5368
5372
5369 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5373 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5370 method signatures (they weren't really bugs, but it looks cleaner
5374 method signatures (they weren't really bugs, but it looks cleaner
5371 and keeps PyChecker happy).
5375 and keeps PyChecker happy).
5372
5376
5373 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5377 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5374 for implementing various user-defined hooks. Currently only
5378 for implementing various user-defined hooks. Currently only
5375 display is done.
5379 display is done.
5376
5380
5377 * IPython/Prompts.py (CachedOutput._display): changed display
5381 * IPython/Prompts.py (CachedOutput._display): changed display
5378 functions so that they can be dynamically changed by users easily.
5382 functions so that they can be dynamically changed by users easily.
5379
5383
5380 * IPython/Extensions/numeric_formats.py (num_display): added an
5384 * IPython/Extensions/numeric_formats.py (num_display): added an
5381 extension for printing NumPy arrays in flexible manners. It
5385 extension for printing NumPy arrays in flexible manners. It
5382 doesn't do anything yet, but all the structure is in
5386 doesn't do anything yet, but all the structure is in
5383 place. Ultimately the plan is to implement output format control
5387 place. Ultimately the plan is to implement output format control
5384 like in Octave.
5388 like in Octave.
5385
5389
5386 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5390 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5387 methods are found at run-time by all the automatic machinery.
5391 methods are found at run-time by all the automatic machinery.
5388
5392
5389 2002-02-17 Fernando Perez <fperez@colorado.edu>
5393 2002-02-17 Fernando Perez <fperez@colorado.edu>
5390
5394
5391 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5395 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5392 whole file a little.
5396 whole file a little.
5393
5397
5394 * ToDo: closed this document. Now there's a new_design.lyx
5398 * ToDo: closed this document. Now there's a new_design.lyx
5395 document for all new ideas. Added making a pdf of it for the
5399 document for all new ideas. Added making a pdf of it for the
5396 end-user distro.
5400 end-user distro.
5397
5401
5398 * IPython/Logger.py (Logger.switch_log): Created this to replace
5402 * IPython/Logger.py (Logger.switch_log): Created this to replace
5399 logon() and logoff(). It also fixes a nasty crash reported by
5403 logon() and logoff(). It also fixes a nasty crash reported by
5400 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5404 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5401
5405
5402 * IPython/iplib.py (complete): got auto-completion to work with
5406 * IPython/iplib.py (complete): got auto-completion to work with
5403 automagic (I had wanted this for a long time).
5407 automagic (I had wanted this for a long time).
5404
5408
5405 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5409 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5406 to @file, since file() is now a builtin and clashes with automagic
5410 to @file, since file() is now a builtin and clashes with automagic
5407 for @file.
5411 for @file.
5408
5412
5409 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5413 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5410 of this was previously in iplib, which had grown to more than 2000
5414 of this was previously in iplib, which had grown to more than 2000
5411 lines, way too long. No new functionality, but it makes managing
5415 lines, way too long. No new functionality, but it makes managing
5412 the code a bit easier.
5416 the code a bit easier.
5413
5417
5414 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5418 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5415 information to crash reports.
5419 information to crash reports.
5416
5420
5417 2002-02-12 Fernando Perez <fperez@colorado.edu>
5421 2002-02-12 Fernando Perez <fperez@colorado.edu>
5418
5422
5419 * Released 0.2.5.
5423 * Released 0.2.5.
5420
5424
5421 2002-02-11 Fernando Perez <fperez@colorado.edu>
5425 2002-02-11 Fernando Perez <fperez@colorado.edu>
5422
5426
5423 * Wrote a relatively complete Windows installer. It puts
5427 * Wrote a relatively complete Windows installer. It puts
5424 everything in place, creates Start Menu entries and fixes the
5428 everything in place, creates Start Menu entries and fixes the
5425 color issues. Nothing fancy, but it works.
5429 color issues. Nothing fancy, but it works.
5426
5430
5427 2002-02-10 Fernando Perez <fperez@colorado.edu>
5431 2002-02-10 Fernando Perez <fperez@colorado.edu>
5428
5432
5429 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5433 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5430 os.path.expanduser() call so that we can type @run ~/myfile.py and
5434 os.path.expanduser() call so that we can type @run ~/myfile.py and
5431 have thigs work as expected.
5435 have thigs work as expected.
5432
5436
5433 * IPython/genutils.py (page): fixed exception handling so things
5437 * IPython/genutils.py (page): fixed exception handling so things
5434 work both in Unix and Windows correctly. Quitting a pager triggers
5438 work both in Unix and Windows correctly. Quitting a pager triggers
5435 an IOError/broken pipe in Unix, and in windows not finding a pager
5439 an IOError/broken pipe in Unix, and in windows not finding a pager
5436 is also an IOError, so I had to actually look at the return value
5440 is also an IOError, so I had to actually look at the return value
5437 of the exception, not just the exception itself. Should be ok now.
5441 of the exception, not just the exception itself. Should be ok now.
5438
5442
5439 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5443 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5440 modified to allow case-insensitive color scheme changes.
5444 modified to allow case-insensitive color scheme changes.
5441
5445
5442 2002-02-09 Fernando Perez <fperez@colorado.edu>
5446 2002-02-09 Fernando Perez <fperez@colorado.edu>
5443
5447
5444 * IPython/genutils.py (native_line_ends): new function to leave
5448 * IPython/genutils.py (native_line_ends): new function to leave
5445 user config files with os-native line-endings.
5449 user config files with os-native line-endings.
5446
5450
5447 * README and manual updates.
5451 * README and manual updates.
5448
5452
5449 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5453 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5450 instead of StringType to catch Unicode strings.
5454 instead of StringType to catch Unicode strings.
5451
5455
5452 * IPython/genutils.py (filefind): fixed bug for paths with
5456 * IPython/genutils.py (filefind): fixed bug for paths with
5453 embedded spaces (very common in Windows).
5457 embedded spaces (very common in Windows).
5454
5458
5455 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5459 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5456 files under Windows, so that they get automatically associated
5460 files under Windows, so that they get automatically associated
5457 with a text editor. Windows makes it a pain to handle
5461 with a text editor. Windows makes it a pain to handle
5458 extension-less files.
5462 extension-less files.
5459
5463
5460 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5464 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5461 warning about readline only occur for Posix. In Windows there's no
5465 warning about readline only occur for Posix. In Windows there's no
5462 way to get readline, so why bother with the warning.
5466 way to get readline, so why bother with the warning.
5463
5467
5464 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5468 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5465 for __str__ instead of dir(self), since dir() changed in 2.2.
5469 for __str__ instead of dir(self), since dir() changed in 2.2.
5466
5470
5467 * Ported to Windows! Tested on XP, I suspect it should work fine
5471 * Ported to Windows! Tested on XP, I suspect it should work fine
5468 on NT/2000, but I don't think it will work on 98 et al. That
5472 on NT/2000, but I don't think it will work on 98 et al. That
5469 series of Windows is such a piece of junk anyway that I won't try
5473 series of Windows is such a piece of junk anyway that I won't try
5470 porting it there. The XP port was straightforward, showed a few
5474 porting it there. The XP port was straightforward, showed a few
5471 bugs here and there (fixed all), in particular some string
5475 bugs here and there (fixed all), in particular some string
5472 handling stuff which required considering Unicode strings (which
5476 handling stuff which required considering Unicode strings (which
5473 Windows uses). This is good, but hasn't been too tested :) No
5477 Windows uses). This is good, but hasn't been too tested :) No
5474 fancy installer yet, I'll put a note in the manual so people at
5478 fancy installer yet, I'll put a note in the manual so people at
5475 least make manually a shortcut.
5479 least make manually a shortcut.
5476
5480
5477 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5481 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5478 into a single one, "colors". This now controls both prompt and
5482 into a single one, "colors". This now controls both prompt and
5479 exception color schemes, and can be changed both at startup
5483 exception color schemes, and can be changed both at startup
5480 (either via command-line switches or via ipythonrc files) and at
5484 (either via command-line switches or via ipythonrc files) and at
5481 runtime, with @colors.
5485 runtime, with @colors.
5482 (Magic.magic_run): renamed @prun to @run and removed the old
5486 (Magic.magic_run): renamed @prun to @run and removed the old
5483 @run. The two were too similar to warrant keeping both.
5487 @run. The two were too similar to warrant keeping both.
5484
5488
5485 2002-02-03 Fernando Perez <fperez@colorado.edu>
5489 2002-02-03 Fernando Perez <fperez@colorado.edu>
5486
5490
5487 * IPython/iplib.py (install_first_time): Added comment on how to
5491 * IPython/iplib.py (install_first_time): Added comment on how to
5488 configure the color options for first-time users. Put a <return>
5492 configure the color options for first-time users. Put a <return>
5489 request at the end so that small-terminal users get a chance to
5493 request at the end so that small-terminal users get a chance to
5490 read the startup info.
5494 read the startup info.
5491
5495
5492 2002-01-23 Fernando Perez <fperez@colorado.edu>
5496 2002-01-23 Fernando Perez <fperez@colorado.edu>
5493
5497
5494 * IPython/iplib.py (CachedOutput.update): Changed output memory
5498 * IPython/iplib.py (CachedOutput.update): Changed output memory
5495 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5499 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5496 input history we still use _i. Did this b/c these variable are
5500 input history we still use _i. Did this b/c these variable are
5497 very commonly used in interactive work, so the less we need to
5501 very commonly used in interactive work, so the less we need to
5498 type the better off we are.
5502 type the better off we are.
5499 (Magic.magic_prun): updated @prun to better handle the namespaces
5503 (Magic.magic_prun): updated @prun to better handle the namespaces
5500 the file will run in, including a fix for __name__ not being set
5504 the file will run in, including a fix for __name__ not being set
5501 before.
5505 before.
5502
5506
5503 2002-01-20 Fernando Perez <fperez@colorado.edu>
5507 2002-01-20 Fernando Perez <fperez@colorado.edu>
5504
5508
5505 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5509 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5506 extra garbage for Python 2.2. Need to look more carefully into
5510 extra garbage for Python 2.2. Need to look more carefully into
5507 this later.
5511 this later.
5508
5512
5509 2002-01-19 Fernando Perez <fperez@colorado.edu>
5513 2002-01-19 Fernando Perez <fperez@colorado.edu>
5510
5514
5511 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5515 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5512 display SyntaxError exceptions properly formatted when they occur
5516 display SyntaxError exceptions properly formatted when they occur
5513 (they can be triggered by imported code).
5517 (they can be triggered by imported code).
5514
5518
5515 2002-01-18 Fernando Perez <fperez@colorado.edu>
5519 2002-01-18 Fernando Perez <fperez@colorado.edu>
5516
5520
5517 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5521 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5518 SyntaxError exceptions are reported nicely formatted, instead of
5522 SyntaxError exceptions are reported nicely formatted, instead of
5519 spitting out only offset information as before.
5523 spitting out only offset information as before.
5520 (Magic.magic_prun): Added the @prun function for executing
5524 (Magic.magic_prun): Added the @prun function for executing
5521 programs with command line args inside IPython.
5525 programs with command line args inside IPython.
5522
5526
5523 2002-01-16 Fernando Perez <fperez@colorado.edu>
5527 2002-01-16 Fernando Perez <fperez@colorado.edu>
5524
5528
5525 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5529 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5526 to *not* include the last item given in a range. This brings their
5530 to *not* include the last item given in a range. This brings their
5527 behavior in line with Python's slicing:
5531 behavior in line with Python's slicing:
5528 a[n1:n2] -> a[n1]...a[n2-1]
5532 a[n1:n2] -> a[n1]...a[n2-1]
5529 It may be a bit less convenient, but I prefer to stick to Python's
5533 It may be a bit less convenient, but I prefer to stick to Python's
5530 conventions *everywhere*, so users never have to wonder.
5534 conventions *everywhere*, so users never have to wonder.
5531 (Magic.magic_macro): Added @macro function to ease the creation of
5535 (Magic.magic_macro): Added @macro function to ease the creation of
5532 macros.
5536 macros.
5533
5537
5534 2002-01-05 Fernando Perez <fperez@colorado.edu>
5538 2002-01-05 Fernando Perez <fperez@colorado.edu>
5535
5539
5536 * Released 0.2.4.
5540 * Released 0.2.4.
5537
5541
5538 * IPython/iplib.py (Magic.magic_pdef):
5542 * IPython/iplib.py (Magic.magic_pdef):
5539 (InteractiveShell.safe_execfile): report magic lines and error
5543 (InteractiveShell.safe_execfile): report magic lines and error
5540 lines without line numbers so one can easily copy/paste them for
5544 lines without line numbers so one can easily copy/paste them for
5541 re-execution.
5545 re-execution.
5542
5546
5543 * Updated manual with recent changes.
5547 * Updated manual with recent changes.
5544
5548
5545 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5549 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5546 docstring printing when class? is called. Very handy for knowing
5550 docstring printing when class? is called. Very handy for knowing
5547 how to create class instances (as long as __init__ is well
5551 how to create class instances (as long as __init__ is well
5548 documented, of course :)
5552 documented, of course :)
5549 (Magic.magic_doc): print both class and constructor docstrings.
5553 (Magic.magic_doc): print both class and constructor docstrings.
5550 (Magic.magic_pdef): give constructor info if passed a class and
5554 (Magic.magic_pdef): give constructor info if passed a class and
5551 __call__ info for callable object instances.
5555 __call__ info for callable object instances.
5552
5556
5553 2002-01-04 Fernando Perez <fperez@colorado.edu>
5557 2002-01-04 Fernando Perez <fperez@colorado.edu>
5554
5558
5555 * Made deep_reload() off by default. It doesn't always work
5559 * Made deep_reload() off by default. It doesn't always work
5556 exactly as intended, so it's probably safer to have it off. It's
5560 exactly as intended, so it's probably safer to have it off. It's
5557 still available as dreload() anyway, so nothing is lost.
5561 still available as dreload() anyway, so nothing is lost.
5558
5562
5559 2002-01-02 Fernando Perez <fperez@colorado.edu>
5563 2002-01-02 Fernando Perez <fperez@colorado.edu>
5560
5564
5561 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5565 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5562 so I wanted an updated release).
5566 so I wanted an updated release).
5563
5567
5564 2001-12-27 Fernando Perez <fperez@colorado.edu>
5568 2001-12-27 Fernando Perez <fperez@colorado.edu>
5565
5569
5566 * IPython/iplib.py (InteractiveShell.interact): Added the original
5570 * IPython/iplib.py (InteractiveShell.interact): Added the original
5567 code from 'code.py' for this module in order to change the
5571 code from 'code.py' for this module in order to change the
5568 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5572 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5569 the history cache would break when the user hit Ctrl-C, and
5573 the history cache would break when the user hit Ctrl-C, and
5570 interact() offers no way to add any hooks to it.
5574 interact() offers no way to add any hooks to it.
5571
5575
5572 2001-12-23 Fernando Perez <fperez@colorado.edu>
5576 2001-12-23 Fernando Perez <fperez@colorado.edu>
5573
5577
5574 * setup.py: added check for 'MANIFEST' before trying to remove
5578 * setup.py: added check for 'MANIFEST' before trying to remove
5575 it. Thanks to Sean Reifschneider.
5579 it. Thanks to Sean Reifschneider.
5576
5580
5577 2001-12-22 Fernando Perez <fperez@colorado.edu>
5581 2001-12-22 Fernando Perez <fperez@colorado.edu>
5578
5582
5579 * Released 0.2.2.
5583 * Released 0.2.2.
5580
5584
5581 * Finished (reasonably) writing the manual. Later will add the
5585 * Finished (reasonably) writing the manual. Later will add the
5582 python-standard navigation stylesheets, but for the time being
5586 python-standard navigation stylesheets, but for the time being
5583 it's fairly complete. Distribution will include html and pdf
5587 it's fairly complete. Distribution will include html and pdf
5584 versions.
5588 versions.
5585
5589
5586 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5590 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5587 (MayaVi author).
5591 (MayaVi author).
5588
5592
5589 2001-12-21 Fernando Perez <fperez@colorado.edu>
5593 2001-12-21 Fernando Perez <fperez@colorado.edu>
5590
5594
5591 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5595 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5592 good public release, I think (with the manual and the distutils
5596 good public release, I think (with the manual and the distutils
5593 installer). The manual can use some work, but that can go
5597 installer). The manual can use some work, but that can go
5594 slowly. Otherwise I think it's quite nice for end users. Next
5598 slowly. Otherwise I think it's quite nice for end users. Next
5595 summer, rewrite the guts of it...
5599 summer, rewrite the guts of it...
5596
5600
5597 * Changed format of ipythonrc files to use whitespace as the
5601 * Changed format of ipythonrc files to use whitespace as the
5598 separator instead of an explicit '='. Cleaner.
5602 separator instead of an explicit '='. Cleaner.
5599
5603
5600 2001-12-20 Fernando Perez <fperez@colorado.edu>
5604 2001-12-20 Fernando Perez <fperez@colorado.edu>
5601
5605
5602 * Started a manual in LyX. For now it's just a quick merge of the
5606 * Started a manual in LyX. For now it's just a quick merge of the
5603 various internal docstrings and READMEs. Later it may grow into a
5607 various internal docstrings and READMEs. Later it may grow into a
5604 nice, full-blown manual.
5608 nice, full-blown manual.
5605
5609
5606 * Set up a distutils based installer. Installation should now be
5610 * Set up a distutils based installer. Installation should now be
5607 trivially simple for end-users.
5611 trivially simple for end-users.
5608
5612
5609 2001-12-11 Fernando Perez <fperez@colorado.edu>
5613 2001-12-11 Fernando Perez <fperez@colorado.edu>
5610
5614
5611 * Released 0.2.0. First public release, announced it at
5615 * Released 0.2.0. First public release, announced it at
5612 comp.lang.python. From now on, just bugfixes...
5616 comp.lang.python. From now on, just bugfixes...
5613
5617
5614 * Went through all the files, set copyright/license notices and
5618 * Went through all the files, set copyright/license notices and
5615 cleaned up things. Ready for release.
5619 cleaned up things. Ready for release.
5616
5620
5617 2001-12-10 Fernando Perez <fperez@colorado.edu>
5621 2001-12-10 Fernando Perez <fperez@colorado.edu>
5618
5622
5619 * Changed the first-time installer not to use tarfiles. It's more
5623 * Changed the first-time installer not to use tarfiles. It's more
5620 robust now and less unix-dependent. Also makes it easier for
5624 robust now and less unix-dependent. Also makes it easier for
5621 people to later upgrade versions.
5625 people to later upgrade versions.
5622
5626
5623 * Changed @exit to @abort to reflect the fact that it's pretty
5627 * Changed @exit to @abort to reflect the fact that it's pretty
5624 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5628 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5625 becomes significant only when IPyhton is embedded: in that case,
5629 becomes significant only when IPyhton is embedded: in that case,
5626 C-D closes IPython only, but @abort kills the enclosing program
5630 C-D closes IPython only, but @abort kills the enclosing program
5627 too (unless it had called IPython inside a try catching
5631 too (unless it had called IPython inside a try catching
5628 SystemExit).
5632 SystemExit).
5629
5633
5630 * Created Shell module which exposes the actuall IPython Shell
5634 * Created Shell module which exposes the actuall IPython Shell
5631 classes, currently the normal and the embeddable one. This at
5635 classes, currently the normal and the embeddable one. This at
5632 least offers a stable interface we won't need to change when
5636 least offers a stable interface we won't need to change when
5633 (later) the internals are rewritten. That rewrite will be confined
5637 (later) the internals are rewritten. That rewrite will be confined
5634 to iplib and ipmaker, but the Shell interface should remain as is.
5638 to iplib and ipmaker, but the Shell interface should remain as is.
5635
5639
5636 * Added embed module which offers an embeddable IPShell object,
5640 * Added embed module which offers an embeddable IPShell object,
5637 useful to fire up IPython *inside* a running program. Great for
5641 useful to fire up IPython *inside* a running program. Great for
5638 debugging or dynamical data analysis.
5642 debugging or dynamical data analysis.
5639
5643
5640 2001-12-08 Fernando Perez <fperez@colorado.edu>
5644 2001-12-08 Fernando Perez <fperez@colorado.edu>
5641
5645
5642 * Fixed small bug preventing seeing info from methods of defined
5646 * Fixed small bug preventing seeing info from methods of defined
5643 objects (incorrect namespace in _ofind()).
5647 objects (incorrect namespace in _ofind()).
5644
5648
5645 * Documentation cleanup. Moved the main usage docstrings to a
5649 * Documentation cleanup. Moved the main usage docstrings to a
5646 separate file, usage.py (cleaner to maintain, and hopefully in the
5650 separate file, usage.py (cleaner to maintain, and hopefully in the
5647 future some perlpod-like way of producing interactive, man and
5651 future some perlpod-like way of producing interactive, man and
5648 html docs out of it will be found).
5652 html docs out of it will be found).
5649
5653
5650 * Added @profile to see your profile at any time.
5654 * Added @profile to see your profile at any time.
5651
5655
5652 * Added @p as an alias for 'print'. It's especially convenient if
5656 * Added @p as an alias for 'print'. It's especially convenient if
5653 using automagic ('p x' prints x).
5657 using automagic ('p x' prints x).
5654
5658
5655 * Small cleanups and fixes after a pychecker run.
5659 * Small cleanups and fixes after a pychecker run.
5656
5660
5657 * Changed the @cd command to handle @cd - and @cd -<n> for
5661 * Changed the @cd command to handle @cd - and @cd -<n> for
5658 visiting any directory in _dh.
5662 visiting any directory in _dh.
5659
5663
5660 * Introduced _dh, a history of visited directories. @dhist prints
5664 * Introduced _dh, a history of visited directories. @dhist prints
5661 it out with numbers.
5665 it out with numbers.
5662
5666
5663 2001-12-07 Fernando Perez <fperez@colorado.edu>
5667 2001-12-07 Fernando Perez <fperez@colorado.edu>
5664
5668
5665 * Released 0.1.22
5669 * Released 0.1.22
5666
5670
5667 * Made initialization a bit more robust against invalid color
5671 * Made initialization a bit more robust against invalid color
5668 options in user input (exit, not traceback-crash).
5672 options in user input (exit, not traceback-crash).
5669
5673
5670 * Changed the bug crash reporter to write the report only in the
5674 * Changed the bug crash reporter to write the report only in the
5671 user's .ipython directory. That way IPython won't litter people's
5675 user's .ipython directory. That way IPython won't litter people's
5672 hard disks with crash files all over the place. Also print on
5676 hard disks with crash files all over the place. Also print on
5673 screen the necessary mail command.
5677 screen the necessary mail command.
5674
5678
5675 * With the new ultraTB, implemented LightBG color scheme for light
5679 * With the new ultraTB, implemented LightBG color scheme for light
5676 background terminals. A lot of people like white backgrounds, so I
5680 background terminals. A lot of people like white backgrounds, so I
5677 guess we should at least give them something readable.
5681 guess we should at least give them something readable.
5678
5682
5679 2001-12-06 Fernando Perez <fperez@colorado.edu>
5683 2001-12-06 Fernando Perez <fperez@colorado.edu>
5680
5684
5681 * Modified the structure of ultraTB. Now there's a proper class
5685 * Modified the structure of ultraTB. Now there's a proper class
5682 for tables of color schemes which allow adding schemes easily and
5686 for tables of color schemes which allow adding schemes easily and
5683 switching the active scheme without creating a new instance every
5687 switching the active scheme without creating a new instance every
5684 time (which was ridiculous). The syntax for creating new schemes
5688 time (which was ridiculous). The syntax for creating new schemes
5685 is also cleaner. I think ultraTB is finally done, with a clean
5689 is also cleaner. I think ultraTB is finally done, with a clean
5686 class structure. Names are also much cleaner (now there's proper
5690 class structure. Names are also much cleaner (now there's proper
5687 color tables, no need for every variable to also have 'color' in
5691 color tables, no need for every variable to also have 'color' in
5688 its name).
5692 its name).
5689
5693
5690 * Broke down genutils into separate files. Now genutils only
5694 * Broke down genutils into separate files. Now genutils only
5691 contains utility functions, and classes have been moved to their
5695 contains utility functions, and classes have been moved to their
5692 own files (they had enough independent functionality to warrant
5696 own files (they had enough independent functionality to warrant
5693 it): ConfigLoader, OutputTrap, Struct.
5697 it): ConfigLoader, OutputTrap, Struct.
5694
5698
5695 2001-12-05 Fernando Perez <fperez@colorado.edu>
5699 2001-12-05 Fernando Perez <fperez@colorado.edu>
5696
5700
5697 * IPython turns 21! Released version 0.1.21, as a candidate for
5701 * IPython turns 21! Released version 0.1.21, as a candidate for
5698 public consumption. If all goes well, release in a few days.
5702 public consumption. If all goes well, release in a few days.
5699
5703
5700 * Fixed path bug (files in Extensions/ directory wouldn't be found
5704 * Fixed path bug (files in Extensions/ directory wouldn't be found
5701 unless IPython/ was explicitly in sys.path).
5705 unless IPython/ was explicitly in sys.path).
5702
5706
5703 * Extended the FlexCompleter class as MagicCompleter to allow
5707 * Extended the FlexCompleter class as MagicCompleter to allow
5704 completion of @-starting lines.
5708 completion of @-starting lines.
5705
5709
5706 * Created __release__.py file as a central repository for release
5710 * Created __release__.py file as a central repository for release
5707 info that other files can read from.
5711 info that other files can read from.
5708
5712
5709 * Fixed small bug in logging: when logging was turned on in
5713 * Fixed small bug in logging: when logging was turned on in
5710 mid-session, old lines with special meanings (!@?) were being
5714 mid-session, old lines with special meanings (!@?) were being
5711 logged without the prepended comment, which is necessary since
5715 logged without the prepended comment, which is necessary since
5712 they are not truly valid python syntax. This should make session
5716 they are not truly valid python syntax. This should make session
5713 restores produce less errors.
5717 restores produce less errors.
5714
5718
5715 * The namespace cleanup forced me to make a FlexCompleter class
5719 * The namespace cleanup forced me to make a FlexCompleter class
5716 which is nothing but a ripoff of rlcompleter, but with selectable
5720 which is nothing but a ripoff of rlcompleter, but with selectable
5717 namespace (rlcompleter only works in __main__.__dict__). I'll try
5721 namespace (rlcompleter only works in __main__.__dict__). I'll try
5718 to submit a note to the authors to see if this change can be
5722 to submit a note to the authors to see if this change can be
5719 incorporated in future rlcompleter releases (Dec.6: done)
5723 incorporated in future rlcompleter releases (Dec.6: done)
5720
5724
5721 * More fixes to namespace handling. It was a mess! Now all
5725 * More fixes to namespace handling. It was a mess! Now all
5722 explicit references to __main__.__dict__ are gone (except when
5726 explicit references to __main__.__dict__ are gone (except when
5723 really needed) and everything is handled through the namespace
5727 really needed) and everything is handled through the namespace
5724 dicts in the IPython instance. We seem to be getting somewhere
5728 dicts in the IPython instance. We seem to be getting somewhere
5725 with this, finally...
5729 with this, finally...
5726
5730
5727 * Small documentation updates.
5731 * Small documentation updates.
5728
5732
5729 * Created the Extensions directory under IPython (with an
5733 * Created the Extensions directory under IPython (with an
5730 __init__.py). Put the PhysicalQ stuff there. This directory should
5734 __init__.py). Put the PhysicalQ stuff there. This directory should
5731 be used for all special-purpose extensions.
5735 be used for all special-purpose extensions.
5732
5736
5733 * File renaming:
5737 * File renaming:
5734 ipythonlib --> ipmaker
5738 ipythonlib --> ipmaker
5735 ipplib --> iplib
5739 ipplib --> iplib
5736 This makes a bit more sense in terms of what these files actually do.
5740 This makes a bit more sense in terms of what these files actually do.
5737
5741
5738 * Moved all the classes and functions in ipythonlib to ipplib, so
5742 * Moved all the classes and functions in ipythonlib to ipplib, so
5739 now ipythonlib only has make_IPython(). This will ease up its
5743 now ipythonlib only has make_IPython(). This will ease up its
5740 splitting in smaller functional chunks later.
5744 splitting in smaller functional chunks later.
5741
5745
5742 * Cleaned up (done, I think) output of @whos. Better column
5746 * Cleaned up (done, I think) output of @whos. Better column
5743 formatting, and now shows str(var) for as much as it can, which is
5747 formatting, and now shows str(var) for as much as it can, which is
5744 typically what one gets with a 'print var'.
5748 typically what one gets with a 'print var'.
5745
5749
5746 2001-12-04 Fernando Perez <fperez@colorado.edu>
5750 2001-12-04 Fernando Perez <fperez@colorado.edu>
5747
5751
5748 * Fixed namespace problems. Now builtin/IPyhton/user names get
5752 * Fixed namespace problems. Now builtin/IPyhton/user names get
5749 properly reported in their namespace. Internal namespace handling
5753 properly reported in their namespace. Internal namespace handling
5750 is finally getting decent (not perfect yet, but much better than
5754 is finally getting decent (not perfect yet, but much better than
5751 the ad-hoc mess we had).
5755 the ad-hoc mess we had).
5752
5756
5753 * Removed -exit option. If people just want to run a python
5757 * Removed -exit option. If people just want to run a python
5754 script, that's what the normal interpreter is for. Less
5758 script, that's what the normal interpreter is for. Less
5755 unnecessary options, less chances for bugs.
5759 unnecessary options, less chances for bugs.
5756
5760
5757 * Added a crash handler which generates a complete post-mortem if
5761 * Added a crash handler which generates a complete post-mortem if
5758 IPython crashes. This will help a lot in tracking bugs down the
5762 IPython crashes. This will help a lot in tracking bugs down the
5759 road.
5763 road.
5760
5764
5761 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5765 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5762 which were boud to functions being reassigned would bypass the
5766 which were boud to functions being reassigned would bypass the
5763 logger, breaking the sync of _il with the prompt counter. This
5767 logger, breaking the sync of _il with the prompt counter. This
5764 would then crash IPython later when a new line was logged.
5768 would then crash IPython later when a new line was logged.
5765
5769
5766 2001-12-02 Fernando Perez <fperez@colorado.edu>
5770 2001-12-02 Fernando Perez <fperez@colorado.edu>
5767
5771
5768 * Made IPython a package. This means people don't have to clutter
5772 * Made IPython a package. This means people don't have to clutter
5769 their sys.path with yet another directory. Changed the INSTALL
5773 their sys.path with yet another directory. Changed the INSTALL
5770 file accordingly.
5774 file accordingly.
5771
5775
5772 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5776 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5773 sorts its output (so @who shows it sorted) and @whos formats the
5777 sorts its output (so @who shows it sorted) and @whos formats the
5774 table according to the width of the first column. Nicer, easier to
5778 table according to the width of the first column. Nicer, easier to
5775 read. Todo: write a generic table_format() which takes a list of
5779 read. Todo: write a generic table_format() which takes a list of
5776 lists and prints it nicely formatted, with optional row/column
5780 lists and prints it nicely formatted, with optional row/column
5777 separators and proper padding and justification.
5781 separators and proper padding and justification.
5778
5782
5779 * Released 0.1.20
5783 * Released 0.1.20
5780
5784
5781 * Fixed bug in @log which would reverse the inputcache list (a
5785 * Fixed bug in @log which would reverse the inputcache list (a
5782 copy operation was missing).
5786 copy operation was missing).
5783
5787
5784 * Code cleanup. @config was changed to use page(). Better, since
5788 * Code cleanup. @config was changed to use page(). Better, since
5785 its output is always quite long.
5789 its output is always quite long.
5786
5790
5787 * Itpl is back as a dependency. I was having too many problems
5791 * Itpl is back as a dependency. I was having too many problems
5788 getting the parametric aliases to work reliably, and it's just
5792 getting the parametric aliases to work reliably, and it's just
5789 easier to code weird string operations with it than playing %()s
5793 easier to code weird string operations with it than playing %()s
5790 games. It's only ~6k, so I don't think it's too big a deal.
5794 games. It's only ~6k, so I don't think it's too big a deal.
5791
5795
5792 * Found (and fixed) a very nasty bug with history. !lines weren't
5796 * Found (and fixed) a very nasty bug with history. !lines weren't
5793 getting cached, and the out of sync caches would crash
5797 getting cached, and the out of sync caches would crash
5794 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5798 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5795 division of labor a bit better. Bug fixed, cleaner structure.
5799 division of labor a bit better. Bug fixed, cleaner structure.
5796
5800
5797 2001-12-01 Fernando Perez <fperez@colorado.edu>
5801 2001-12-01 Fernando Perez <fperez@colorado.edu>
5798
5802
5799 * Released 0.1.19
5803 * Released 0.1.19
5800
5804
5801 * Added option -n to @hist to prevent line number printing. Much
5805 * Added option -n to @hist to prevent line number printing. Much
5802 easier to copy/paste code this way.
5806 easier to copy/paste code this way.
5803
5807
5804 * Created global _il to hold the input list. Allows easy
5808 * Created global _il to hold the input list. Allows easy
5805 re-execution of blocks of code by slicing it (inspired by Janko's
5809 re-execution of blocks of code by slicing it (inspired by Janko's
5806 comment on 'macros').
5810 comment on 'macros').
5807
5811
5808 * Small fixes and doc updates.
5812 * Small fixes and doc updates.
5809
5813
5810 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5814 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5811 much too fragile with automagic. Handles properly multi-line
5815 much too fragile with automagic. Handles properly multi-line
5812 statements and takes parameters.
5816 statements and takes parameters.
5813
5817
5814 2001-11-30 Fernando Perez <fperez@colorado.edu>
5818 2001-11-30 Fernando Perez <fperez@colorado.edu>
5815
5819
5816 * Version 0.1.18 released.
5820 * Version 0.1.18 released.
5817
5821
5818 * Fixed nasty namespace bug in initial module imports.
5822 * Fixed nasty namespace bug in initial module imports.
5819
5823
5820 * Added copyright/license notes to all code files (except
5824 * Added copyright/license notes to all code files (except
5821 DPyGetOpt). For the time being, LGPL. That could change.
5825 DPyGetOpt). For the time being, LGPL. That could change.
5822
5826
5823 * Rewrote a much nicer README, updated INSTALL, cleaned up
5827 * Rewrote a much nicer README, updated INSTALL, cleaned up
5824 ipythonrc-* samples.
5828 ipythonrc-* samples.
5825
5829
5826 * Overall code/documentation cleanup. Basically ready for
5830 * Overall code/documentation cleanup. Basically ready for
5827 release. Only remaining thing: licence decision (LGPL?).
5831 release. Only remaining thing: licence decision (LGPL?).
5828
5832
5829 * Converted load_config to a class, ConfigLoader. Now recursion
5833 * Converted load_config to a class, ConfigLoader. Now recursion
5830 control is better organized. Doesn't include the same file twice.
5834 control is better organized. Doesn't include the same file twice.
5831
5835
5832 2001-11-29 Fernando Perez <fperez@colorado.edu>
5836 2001-11-29 Fernando Perez <fperez@colorado.edu>
5833
5837
5834 * Got input history working. Changed output history variables from
5838 * Got input history working. Changed output history variables from
5835 _p to _o so that _i is for input and _o for output. Just cleaner
5839 _p to _o so that _i is for input and _o for output. Just cleaner
5836 convention.
5840 convention.
5837
5841
5838 * Implemented parametric aliases. This pretty much allows the
5842 * Implemented parametric aliases. This pretty much allows the
5839 alias system to offer full-blown shell convenience, I think.
5843 alias system to offer full-blown shell convenience, I think.
5840
5844
5841 * Version 0.1.17 released, 0.1.18 opened.
5845 * Version 0.1.17 released, 0.1.18 opened.
5842
5846
5843 * dot_ipython/ipythonrc (alias): added documentation.
5847 * dot_ipython/ipythonrc (alias): added documentation.
5844 (xcolor): Fixed small bug (xcolors -> xcolor)
5848 (xcolor): Fixed small bug (xcolors -> xcolor)
5845
5849
5846 * Changed the alias system. Now alias is a magic command to define
5850 * Changed the alias system. Now alias is a magic command to define
5847 aliases just like the shell. Rationale: the builtin magics should
5851 aliases just like the shell. Rationale: the builtin magics should
5848 be there for things deeply connected to IPython's
5852 be there for things deeply connected to IPython's
5849 architecture. And this is a much lighter system for what I think
5853 architecture. And this is a much lighter system for what I think
5850 is the really important feature: allowing users to define quickly
5854 is the really important feature: allowing users to define quickly
5851 magics that will do shell things for them, so they can customize
5855 magics that will do shell things for them, so they can customize
5852 IPython easily to match their work habits. If someone is really
5856 IPython easily to match their work habits. If someone is really
5853 desperate to have another name for a builtin alias, they can
5857 desperate to have another name for a builtin alias, they can
5854 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5858 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5855 works.
5859 works.
5856
5860
5857 2001-11-28 Fernando Perez <fperez@colorado.edu>
5861 2001-11-28 Fernando Perez <fperez@colorado.edu>
5858
5862
5859 * Changed @file so that it opens the source file at the proper
5863 * Changed @file so that it opens the source file at the proper
5860 line. Since it uses less, if your EDITOR environment is
5864 line. Since it uses less, if your EDITOR environment is
5861 configured, typing v will immediately open your editor of choice
5865 configured, typing v will immediately open your editor of choice
5862 right at the line where the object is defined. Not as quick as
5866 right at the line where the object is defined. Not as quick as
5863 having a direct @edit command, but for all intents and purposes it
5867 having a direct @edit command, but for all intents and purposes it
5864 works. And I don't have to worry about writing @edit to deal with
5868 works. And I don't have to worry about writing @edit to deal with
5865 all the editors, less does that.
5869 all the editors, less does that.
5866
5870
5867 * Version 0.1.16 released, 0.1.17 opened.
5871 * Version 0.1.16 released, 0.1.17 opened.
5868
5872
5869 * Fixed some nasty bugs in the page/page_dumb combo that could
5873 * Fixed some nasty bugs in the page/page_dumb combo that could
5870 crash IPython.
5874 crash IPython.
5871
5875
5872 2001-11-27 Fernando Perez <fperez@colorado.edu>
5876 2001-11-27 Fernando Perez <fperez@colorado.edu>
5873
5877
5874 * Version 0.1.15 released, 0.1.16 opened.
5878 * Version 0.1.15 released, 0.1.16 opened.
5875
5879
5876 * Finally got ? and ?? to work for undefined things: now it's
5880 * Finally got ? and ?? to work for undefined things: now it's
5877 possible to type {}.get? and get information about the get method
5881 possible to type {}.get? and get information about the get method
5878 of dicts, or os.path? even if only os is defined (so technically
5882 of dicts, or os.path? even if only os is defined (so technically
5879 os.path isn't). Works at any level. For example, after import os,
5883 os.path isn't). Works at any level. For example, after import os,
5880 os?, os.path?, os.path.abspath? all work. This is great, took some
5884 os?, os.path?, os.path.abspath? all work. This is great, took some
5881 work in _ofind.
5885 work in _ofind.
5882
5886
5883 * Fixed more bugs with logging. The sanest way to do it was to add
5887 * Fixed more bugs with logging. The sanest way to do it was to add
5884 to @log a 'mode' parameter. Killed two in one shot (this mode
5888 to @log a 'mode' parameter. Killed two in one shot (this mode
5885 option was a request of Janko's). I think it's finally clean
5889 option was a request of Janko's). I think it's finally clean
5886 (famous last words).
5890 (famous last words).
5887
5891
5888 * Added a page_dumb() pager which does a decent job of paging on
5892 * Added a page_dumb() pager which does a decent job of paging on
5889 screen, if better things (like less) aren't available. One less
5893 screen, if better things (like less) aren't available. One less
5890 unix dependency (someday maybe somebody will port this to
5894 unix dependency (someday maybe somebody will port this to
5891 windows).
5895 windows).
5892
5896
5893 * Fixed problem in magic_log: would lock of logging out if log
5897 * Fixed problem in magic_log: would lock of logging out if log
5894 creation failed (because it would still think it had succeeded).
5898 creation failed (because it would still think it had succeeded).
5895
5899
5896 * Improved the page() function using curses to auto-detect screen
5900 * Improved the page() function using curses to auto-detect screen
5897 size. Now it can make a much better decision on whether to print
5901 size. Now it can make a much better decision on whether to print
5898 or page a string. Option screen_length was modified: a value 0
5902 or page a string. Option screen_length was modified: a value 0
5899 means auto-detect, and that's the default now.
5903 means auto-detect, and that's the default now.
5900
5904
5901 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5905 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5902 go out. I'll test it for a few days, then talk to Janko about
5906 go out. I'll test it for a few days, then talk to Janko about
5903 licences and announce it.
5907 licences and announce it.
5904
5908
5905 * Fixed the length of the auto-generated ---> prompt which appears
5909 * Fixed the length of the auto-generated ---> prompt which appears
5906 for auto-parens and auto-quotes. Getting this right isn't trivial,
5910 for auto-parens and auto-quotes. Getting this right isn't trivial,
5907 with all the color escapes, different prompt types and optional
5911 with all the color escapes, different prompt types and optional
5908 separators. But it seems to be working in all the combinations.
5912 separators. But it seems to be working in all the combinations.
5909
5913
5910 2001-11-26 Fernando Perez <fperez@colorado.edu>
5914 2001-11-26 Fernando Perez <fperez@colorado.edu>
5911
5915
5912 * Wrote a regexp filter to get option types from the option names
5916 * Wrote a regexp filter to get option types from the option names
5913 string. This eliminates the need to manually keep two duplicate
5917 string. This eliminates the need to manually keep two duplicate
5914 lists.
5918 lists.
5915
5919
5916 * Removed the unneeded check_option_names. Now options are handled
5920 * Removed the unneeded check_option_names. Now options are handled
5917 in a much saner manner and it's easy to visually check that things
5921 in a much saner manner and it's easy to visually check that things
5918 are ok.
5922 are ok.
5919
5923
5920 * Updated version numbers on all files I modified to carry a
5924 * Updated version numbers on all files I modified to carry a
5921 notice so Janko and Nathan have clear version markers.
5925 notice so Janko and Nathan have clear version markers.
5922
5926
5923 * Updated docstring for ultraTB with my changes. I should send
5927 * Updated docstring for ultraTB with my changes. I should send
5924 this to Nathan.
5928 this to Nathan.
5925
5929
5926 * Lots of small fixes. Ran everything through pychecker again.
5930 * Lots of small fixes. Ran everything through pychecker again.
5927
5931
5928 * Made loading of deep_reload an cmd line option. If it's not too
5932 * Made loading of deep_reload an cmd line option. If it's not too
5929 kosher, now people can just disable it. With -nodeep_reload it's
5933 kosher, now people can just disable it. With -nodeep_reload it's
5930 still available as dreload(), it just won't overwrite reload().
5934 still available as dreload(), it just won't overwrite reload().
5931
5935
5932 * Moved many options to the no| form (-opt and -noopt
5936 * Moved many options to the no| form (-opt and -noopt
5933 accepted). Cleaner.
5937 accepted). Cleaner.
5934
5938
5935 * Changed magic_log so that if called with no parameters, it uses
5939 * Changed magic_log so that if called with no parameters, it uses
5936 'rotate' mode. That way auto-generated logs aren't automatically
5940 'rotate' mode. That way auto-generated logs aren't automatically
5937 over-written. For normal logs, now a backup is made if it exists
5941 over-written. For normal logs, now a backup is made if it exists
5938 (only 1 level of backups). A new 'backup' mode was added to the
5942 (only 1 level of backups). A new 'backup' mode was added to the
5939 Logger class to support this. This was a request by Janko.
5943 Logger class to support this. This was a request by Janko.
5940
5944
5941 * Added @logoff/@logon to stop/restart an active log.
5945 * Added @logoff/@logon to stop/restart an active log.
5942
5946
5943 * Fixed a lot of bugs in log saving/replay. It was pretty
5947 * Fixed a lot of bugs in log saving/replay. It was pretty
5944 broken. Now special lines (!@,/) appear properly in the command
5948 broken. Now special lines (!@,/) appear properly in the command
5945 history after a log replay.
5949 history after a log replay.
5946
5950
5947 * Tried and failed to implement full session saving via pickle. My
5951 * Tried and failed to implement full session saving via pickle. My
5948 idea was to pickle __main__.__dict__, but modules can't be
5952 idea was to pickle __main__.__dict__, but modules can't be
5949 pickled. This would be a better alternative to replaying logs, but
5953 pickled. This would be a better alternative to replaying logs, but
5950 seems quite tricky to get to work. Changed -session to be called
5954 seems quite tricky to get to work. Changed -session to be called
5951 -logplay, which more accurately reflects what it does. And if we
5955 -logplay, which more accurately reflects what it does. And if we
5952 ever get real session saving working, -session is now available.
5956 ever get real session saving working, -session is now available.
5953
5957
5954 * Implemented color schemes for prompts also. As for tracebacks,
5958 * Implemented color schemes for prompts also. As for tracebacks,
5955 currently only NoColor and Linux are supported. But now the
5959 currently only NoColor and Linux are supported. But now the
5956 infrastructure is in place, based on a generic ColorScheme
5960 infrastructure is in place, based on a generic ColorScheme
5957 class. So writing and activating new schemes both for the prompts
5961 class. So writing and activating new schemes both for the prompts
5958 and the tracebacks should be straightforward.
5962 and the tracebacks should be straightforward.
5959
5963
5960 * Version 0.1.13 released, 0.1.14 opened.
5964 * Version 0.1.13 released, 0.1.14 opened.
5961
5965
5962 * Changed handling of options for output cache. Now counter is
5966 * Changed handling of options for output cache. Now counter is
5963 hardwired starting at 1 and one specifies the maximum number of
5967 hardwired starting at 1 and one specifies the maximum number of
5964 entries *in the outcache* (not the max prompt counter). This is
5968 entries *in the outcache* (not the max prompt counter). This is
5965 much better, since many statements won't increase the cache
5969 much better, since many statements won't increase the cache
5966 count. It also eliminated some confusing options, now there's only
5970 count. It also eliminated some confusing options, now there's only
5967 one: cache_size.
5971 one: cache_size.
5968
5972
5969 * Added 'alias' magic function and magic_alias option in the
5973 * Added 'alias' magic function and magic_alias option in the
5970 ipythonrc file. Now the user can easily define whatever names he
5974 ipythonrc file. Now the user can easily define whatever names he
5971 wants for the magic functions without having to play weird
5975 wants for the magic functions without having to play weird
5972 namespace games. This gives IPython a real shell-like feel.
5976 namespace games. This gives IPython a real shell-like feel.
5973
5977
5974 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5978 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5975 @ or not).
5979 @ or not).
5976
5980
5977 This was one of the last remaining 'visible' bugs (that I know
5981 This was one of the last remaining 'visible' bugs (that I know
5978 of). I think if I can clean up the session loading so it works
5982 of). I think if I can clean up the session loading so it works
5979 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5983 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5980 about licensing).
5984 about licensing).
5981
5985
5982 2001-11-25 Fernando Perez <fperez@colorado.edu>
5986 2001-11-25 Fernando Perez <fperez@colorado.edu>
5983
5987
5984 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5988 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5985 there's a cleaner distinction between what ? and ?? show.
5989 there's a cleaner distinction between what ? and ?? show.
5986
5990
5987 * Added screen_length option. Now the user can define his own
5991 * Added screen_length option. Now the user can define his own
5988 screen size for page() operations.
5992 screen size for page() operations.
5989
5993
5990 * Implemented magic shell-like functions with automatic code
5994 * Implemented magic shell-like functions with automatic code
5991 generation. Now adding another function is just a matter of adding
5995 generation. Now adding another function is just a matter of adding
5992 an entry to a dict, and the function is dynamically generated at
5996 an entry to a dict, and the function is dynamically generated at
5993 run-time. Python has some really cool features!
5997 run-time. Python has some really cool features!
5994
5998
5995 * Renamed many options to cleanup conventions a little. Now all
5999 * Renamed many options to cleanup conventions a little. Now all
5996 are lowercase, and only underscores where needed. Also in the code
6000 are lowercase, and only underscores where needed. Also in the code
5997 option name tables are clearer.
6001 option name tables are clearer.
5998
6002
5999 * Changed prompts a little. Now input is 'In [n]:' instead of
6003 * Changed prompts a little. Now input is 'In [n]:' instead of
6000 'In[n]:='. This allows it the numbers to be aligned with the
6004 'In[n]:='. This allows it the numbers to be aligned with the
6001 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6005 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6002 Python (it was a Mathematica thing). The '...' continuation prompt
6006 Python (it was a Mathematica thing). The '...' continuation prompt
6003 was also changed a little to align better.
6007 was also changed a little to align better.
6004
6008
6005 * Fixed bug when flushing output cache. Not all _p<n> variables
6009 * Fixed bug when flushing output cache. Not all _p<n> variables
6006 exist, so their deletion needs to be wrapped in a try:
6010 exist, so their deletion needs to be wrapped in a try:
6007
6011
6008 * Figured out how to properly use inspect.formatargspec() (it
6012 * Figured out how to properly use inspect.formatargspec() (it
6009 requires the args preceded by *). So I removed all the code from
6013 requires the args preceded by *). So I removed all the code from
6010 _get_pdef in Magic, which was just replicating that.
6014 _get_pdef in Magic, which was just replicating that.
6011
6015
6012 * Added test to prefilter to allow redefining magic function names
6016 * Added test to prefilter to allow redefining magic function names
6013 as variables. This is ok, since the @ form is always available,
6017 as variables. This is ok, since the @ form is always available,
6014 but whe should allow the user to define a variable called 'ls' if
6018 but whe should allow the user to define a variable called 'ls' if
6015 he needs it.
6019 he needs it.
6016
6020
6017 * Moved the ToDo information from README into a separate ToDo.
6021 * Moved the ToDo information from README into a separate ToDo.
6018
6022
6019 * General code cleanup and small bugfixes. I think it's close to a
6023 * General code cleanup and small bugfixes. I think it's close to a
6020 state where it can be released, obviously with a big 'beta'
6024 state where it can be released, obviously with a big 'beta'
6021 warning on it.
6025 warning on it.
6022
6026
6023 * Got the magic function split to work. Now all magics are defined
6027 * Got the magic function split to work. Now all magics are defined
6024 in a separate class. It just organizes things a bit, and now
6028 in a separate class. It just organizes things a bit, and now
6025 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6029 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6026 was too long).
6030 was too long).
6027
6031
6028 * Changed @clear to @reset to avoid potential confusions with
6032 * Changed @clear to @reset to avoid potential confusions with
6029 the shell command clear. Also renamed @cl to @clear, which does
6033 the shell command clear. Also renamed @cl to @clear, which does
6030 exactly what people expect it to from their shell experience.
6034 exactly what people expect it to from their shell experience.
6031
6035
6032 Added a check to the @reset command (since it's so
6036 Added a check to the @reset command (since it's so
6033 destructive, it's probably a good idea to ask for confirmation).
6037 destructive, it's probably a good idea to ask for confirmation).
6034 But now reset only works for full namespace resetting. Since the
6038 But now reset only works for full namespace resetting. Since the
6035 del keyword is already there for deleting a few specific
6039 del keyword is already there for deleting a few specific
6036 variables, I don't see the point of having a redundant magic
6040 variables, I don't see the point of having a redundant magic
6037 function for the same task.
6041 function for the same task.
6038
6042
6039 2001-11-24 Fernando Perez <fperez@colorado.edu>
6043 2001-11-24 Fernando Perez <fperez@colorado.edu>
6040
6044
6041 * Updated the builtin docs (esp. the ? ones).
6045 * Updated the builtin docs (esp. the ? ones).
6042
6046
6043 * Ran all the code through pychecker. Not terribly impressed with
6047 * Ran all the code through pychecker. Not terribly impressed with
6044 it: lots of spurious warnings and didn't really find anything of
6048 it: lots of spurious warnings and didn't really find anything of
6045 substance (just a few modules being imported and not used).
6049 substance (just a few modules being imported and not used).
6046
6050
6047 * Implemented the new ultraTB functionality into IPython. New
6051 * Implemented the new ultraTB functionality into IPython. New
6048 option: xcolors. This chooses color scheme. xmode now only selects
6052 option: xcolors. This chooses color scheme. xmode now only selects
6049 between Plain and Verbose. Better orthogonality.
6053 between Plain and Verbose. Better orthogonality.
6050
6054
6051 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6055 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6052 mode and color scheme for the exception handlers. Now it's
6056 mode and color scheme for the exception handlers. Now it's
6053 possible to have the verbose traceback with no coloring.
6057 possible to have the verbose traceback with no coloring.
6054
6058
6055 2001-11-23 Fernando Perez <fperez@colorado.edu>
6059 2001-11-23 Fernando Perez <fperez@colorado.edu>
6056
6060
6057 * Version 0.1.12 released, 0.1.13 opened.
6061 * Version 0.1.12 released, 0.1.13 opened.
6058
6062
6059 * Removed option to set auto-quote and auto-paren escapes by
6063 * Removed option to set auto-quote and auto-paren escapes by
6060 user. The chances of breaking valid syntax are just too high. If
6064 user. The chances of breaking valid syntax are just too high. If
6061 someone *really* wants, they can always dig into the code.
6065 someone *really* wants, they can always dig into the code.
6062
6066
6063 * Made prompt separators configurable.
6067 * Made prompt separators configurable.
6064
6068
6065 2001-11-22 Fernando Perez <fperez@colorado.edu>
6069 2001-11-22 Fernando Perez <fperez@colorado.edu>
6066
6070
6067 * Small bugfixes in many places.
6071 * Small bugfixes in many places.
6068
6072
6069 * Removed the MyCompleter class from ipplib. It seemed redundant
6073 * Removed the MyCompleter class from ipplib. It seemed redundant
6070 with the C-p,C-n history search functionality. Less code to
6074 with the C-p,C-n history search functionality. Less code to
6071 maintain.
6075 maintain.
6072
6076
6073 * Moved all the original ipython.py code into ipythonlib.py. Right
6077 * Moved all the original ipython.py code into ipythonlib.py. Right
6074 now it's just one big dump into a function called make_IPython, so
6078 now it's just one big dump into a function called make_IPython, so
6075 no real modularity has been gained. But at least it makes the
6079 no real modularity has been gained. But at least it makes the
6076 wrapper script tiny, and since ipythonlib is a module, it gets
6080 wrapper script tiny, and since ipythonlib is a module, it gets
6077 compiled and startup is much faster.
6081 compiled and startup is much faster.
6078
6082
6079 This is a reasobably 'deep' change, so we should test it for a
6083 This is a reasobably 'deep' change, so we should test it for a
6080 while without messing too much more with the code.
6084 while without messing too much more with the code.
6081
6085
6082 2001-11-21 Fernando Perez <fperez@colorado.edu>
6086 2001-11-21 Fernando Perez <fperez@colorado.edu>
6083
6087
6084 * Version 0.1.11 released, 0.1.12 opened for further work.
6088 * Version 0.1.11 released, 0.1.12 opened for further work.
6085
6089
6086 * Removed dependency on Itpl. It was only needed in one place. It
6090 * Removed dependency on Itpl. It was only needed in one place. It
6087 would be nice if this became part of python, though. It makes life
6091 would be nice if this became part of python, though. It makes life
6088 *a lot* easier in some cases.
6092 *a lot* easier in some cases.
6089
6093
6090 * Simplified the prefilter code a bit. Now all handlers are
6094 * Simplified the prefilter code a bit. Now all handlers are
6091 expected to explicitly return a value (at least a blank string).
6095 expected to explicitly return a value (at least a blank string).
6092
6096
6093 * Heavy edits in ipplib. Removed the help system altogether. Now
6097 * Heavy edits in ipplib. Removed the help system altogether. Now
6094 obj?/?? is used for inspecting objects, a magic @doc prints
6098 obj?/?? is used for inspecting objects, a magic @doc prints
6095 docstrings, and full-blown Python help is accessed via the 'help'
6099 docstrings, and full-blown Python help is accessed via the 'help'
6096 keyword. This cleans up a lot of code (less to maintain) and does
6100 keyword. This cleans up a lot of code (less to maintain) and does
6097 the job. Since 'help' is now a standard Python component, might as
6101 the job. Since 'help' is now a standard Python component, might as
6098 well use it and remove duplicate functionality.
6102 well use it and remove duplicate functionality.
6099
6103
6100 Also removed the option to use ipplib as a standalone program. By
6104 Also removed the option to use ipplib as a standalone program. By
6101 now it's too dependent on other parts of IPython to function alone.
6105 now it's too dependent on other parts of IPython to function alone.
6102
6106
6103 * Fixed bug in genutils.pager. It would crash if the pager was
6107 * Fixed bug in genutils.pager. It would crash if the pager was
6104 exited immediately after opening (broken pipe).
6108 exited immediately after opening (broken pipe).
6105
6109
6106 * Trimmed down the VerboseTB reporting a little. The header is
6110 * Trimmed down the VerboseTB reporting a little. The header is
6107 much shorter now and the repeated exception arguments at the end
6111 much shorter now and the repeated exception arguments at the end
6108 have been removed. For interactive use the old header seemed a bit
6112 have been removed. For interactive use the old header seemed a bit
6109 excessive.
6113 excessive.
6110
6114
6111 * Fixed small bug in output of @whos for variables with multi-word
6115 * Fixed small bug in output of @whos for variables with multi-word
6112 types (only first word was displayed).
6116 types (only first word was displayed).
6113
6117
6114 2001-11-17 Fernando Perez <fperez@colorado.edu>
6118 2001-11-17 Fernando Perez <fperez@colorado.edu>
6115
6119
6116 * Version 0.1.10 released, 0.1.11 opened for further work.
6120 * Version 0.1.10 released, 0.1.11 opened for further work.
6117
6121
6118 * Modified dirs and friends. dirs now *returns* the stack (not
6122 * Modified dirs and friends. dirs now *returns* the stack (not
6119 prints), so one can manipulate it as a variable. Convenient to
6123 prints), so one can manipulate it as a variable. Convenient to
6120 travel along many directories.
6124 travel along many directories.
6121
6125
6122 * Fixed bug in magic_pdef: would only work with functions with
6126 * Fixed bug in magic_pdef: would only work with functions with
6123 arguments with default values.
6127 arguments with default values.
6124
6128
6125 2001-11-14 Fernando Perez <fperez@colorado.edu>
6129 2001-11-14 Fernando Perez <fperez@colorado.edu>
6126
6130
6127 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6131 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6128 example with IPython. Various other minor fixes and cleanups.
6132 example with IPython. Various other minor fixes and cleanups.
6129
6133
6130 * Version 0.1.9 released, 0.1.10 opened for further work.
6134 * Version 0.1.9 released, 0.1.10 opened for further work.
6131
6135
6132 * Added sys.path to the list of directories searched in the
6136 * Added sys.path to the list of directories searched in the
6133 execfile= option. It used to be the current directory and the
6137 execfile= option. It used to be the current directory and the
6134 user's IPYTHONDIR only.
6138 user's IPYTHONDIR only.
6135
6139
6136 2001-11-13 Fernando Perez <fperez@colorado.edu>
6140 2001-11-13 Fernando Perez <fperez@colorado.edu>
6137
6141
6138 * Reinstated the raw_input/prefilter separation that Janko had
6142 * Reinstated the raw_input/prefilter separation that Janko had
6139 initially. This gives a more convenient setup for extending the
6143 initially. This gives a more convenient setup for extending the
6140 pre-processor from the outside: raw_input always gets a string,
6144 pre-processor from the outside: raw_input always gets a string,
6141 and prefilter has to process it. We can then redefine prefilter
6145 and prefilter has to process it. We can then redefine prefilter
6142 from the outside and implement extensions for special
6146 from the outside and implement extensions for special
6143 purposes.
6147 purposes.
6144
6148
6145 Today I got one for inputting PhysicalQuantity objects
6149 Today I got one for inputting PhysicalQuantity objects
6146 (from Scientific) without needing any function calls at
6150 (from Scientific) without needing any function calls at
6147 all. Extremely convenient, and it's all done as a user-level
6151 all. Extremely convenient, and it's all done as a user-level
6148 extension (no IPython code was touched). Now instead of:
6152 extension (no IPython code was touched). Now instead of:
6149 a = PhysicalQuantity(4.2,'m/s**2')
6153 a = PhysicalQuantity(4.2,'m/s**2')
6150 one can simply say
6154 one can simply say
6151 a = 4.2 m/s**2
6155 a = 4.2 m/s**2
6152 or even
6156 or even
6153 a = 4.2 m/s^2
6157 a = 4.2 m/s^2
6154
6158
6155 I use this, but it's also a proof of concept: IPython really is
6159 I use this, but it's also a proof of concept: IPython really is
6156 fully user-extensible, even at the level of the parsing of the
6160 fully user-extensible, even at the level of the parsing of the
6157 command line. It's not trivial, but it's perfectly doable.
6161 command line. It's not trivial, but it's perfectly doable.
6158
6162
6159 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6163 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6160 the problem of modules being loaded in the inverse order in which
6164 the problem of modules being loaded in the inverse order in which
6161 they were defined in
6165 they were defined in
6162
6166
6163 * Version 0.1.8 released, 0.1.9 opened for further work.
6167 * Version 0.1.8 released, 0.1.9 opened for further work.
6164
6168
6165 * Added magics pdef, source and file. They respectively show the
6169 * Added magics pdef, source and file. They respectively show the
6166 definition line ('prototype' in C), source code and full python
6170 definition line ('prototype' in C), source code and full python
6167 file for any callable object. The object inspector oinfo uses
6171 file for any callable object. The object inspector oinfo uses
6168 these to show the same information.
6172 these to show the same information.
6169
6173
6170 * Version 0.1.7 released, 0.1.8 opened for further work.
6174 * Version 0.1.7 released, 0.1.8 opened for further work.
6171
6175
6172 * Separated all the magic functions into a class called Magic. The
6176 * Separated all the magic functions into a class called Magic. The
6173 InteractiveShell class was becoming too big for Xemacs to handle
6177 InteractiveShell class was becoming too big for Xemacs to handle
6174 (de-indenting a line would lock it up for 10 seconds while it
6178 (de-indenting a line would lock it up for 10 seconds while it
6175 backtracked on the whole class!)
6179 backtracked on the whole class!)
6176
6180
6177 FIXME: didn't work. It can be done, but right now namespaces are
6181 FIXME: didn't work. It can be done, but right now namespaces are
6178 all messed up. Do it later (reverted it for now, so at least
6182 all messed up. Do it later (reverted it for now, so at least
6179 everything works as before).
6183 everything works as before).
6180
6184
6181 * Got the object introspection system (magic_oinfo) working! I
6185 * Got the object introspection system (magic_oinfo) working! I
6182 think this is pretty much ready for release to Janko, so he can
6186 think this is pretty much ready for release to Janko, so he can
6183 test it for a while and then announce it. Pretty much 100% of what
6187 test it for a while and then announce it. Pretty much 100% of what
6184 I wanted for the 'phase 1' release is ready. Happy, tired.
6188 I wanted for the 'phase 1' release is ready. Happy, tired.
6185
6189
6186 2001-11-12 Fernando Perez <fperez@colorado.edu>
6190 2001-11-12 Fernando Perez <fperez@colorado.edu>
6187
6191
6188 * Version 0.1.6 released, 0.1.7 opened for further work.
6192 * Version 0.1.6 released, 0.1.7 opened for further work.
6189
6193
6190 * Fixed bug in printing: it used to test for truth before
6194 * Fixed bug in printing: it used to test for truth before
6191 printing, so 0 wouldn't print. Now checks for None.
6195 printing, so 0 wouldn't print. Now checks for None.
6192
6196
6193 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6197 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6194 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6198 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6195 reaches by hand into the outputcache. Think of a better way to do
6199 reaches by hand into the outputcache. Think of a better way to do
6196 this later.
6200 this later.
6197
6201
6198 * Various small fixes thanks to Nathan's comments.
6202 * Various small fixes thanks to Nathan's comments.
6199
6203
6200 * Changed magic_pprint to magic_Pprint. This way it doesn't
6204 * Changed magic_pprint to magic_Pprint. This way it doesn't
6201 collide with pprint() and the name is consistent with the command
6205 collide with pprint() and the name is consistent with the command
6202 line option.
6206 line option.
6203
6207
6204 * Changed prompt counter behavior to be fully like
6208 * Changed prompt counter behavior to be fully like
6205 Mathematica's. That is, even input that doesn't return a result
6209 Mathematica's. That is, even input that doesn't return a result
6206 raises the prompt counter. The old behavior was kind of confusing
6210 raises the prompt counter. The old behavior was kind of confusing
6207 (getting the same prompt number several times if the operation
6211 (getting the same prompt number several times if the operation
6208 didn't return a result).
6212 didn't return a result).
6209
6213
6210 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6214 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6211
6215
6212 * Fixed -Classic mode (wasn't working anymore).
6216 * Fixed -Classic mode (wasn't working anymore).
6213
6217
6214 * Added colored prompts using Nathan's new code. Colors are
6218 * Added colored prompts using Nathan's new code. Colors are
6215 currently hardwired, they can be user-configurable. For
6219 currently hardwired, they can be user-configurable. For
6216 developers, they can be chosen in file ipythonlib.py, at the
6220 developers, they can be chosen in file ipythonlib.py, at the
6217 beginning of the CachedOutput class def.
6221 beginning of the CachedOutput class def.
6218
6222
6219 2001-11-11 Fernando Perez <fperez@colorado.edu>
6223 2001-11-11 Fernando Perez <fperez@colorado.edu>
6220
6224
6221 * Version 0.1.5 released, 0.1.6 opened for further work.
6225 * Version 0.1.5 released, 0.1.6 opened for further work.
6222
6226
6223 * Changed magic_env to *return* the environment as a dict (not to
6227 * Changed magic_env to *return* the environment as a dict (not to
6224 print it). This way it prints, but it can also be processed.
6228 print it). This way it prints, but it can also be processed.
6225
6229
6226 * Added Verbose exception reporting to interactive
6230 * Added Verbose exception reporting to interactive
6227 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6231 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6228 traceback. Had to make some changes to the ultraTB file. This is
6232 traceback. Had to make some changes to the ultraTB file. This is
6229 probably the last 'big' thing in my mental todo list. This ties
6233 probably the last 'big' thing in my mental todo list. This ties
6230 in with the next entry:
6234 in with the next entry:
6231
6235
6232 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6236 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6233 has to specify is Plain, Color or Verbose for all exception
6237 has to specify is Plain, Color or Verbose for all exception
6234 handling.
6238 handling.
6235
6239
6236 * Removed ShellServices option. All this can really be done via
6240 * Removed ShellServices option. All this can really be done via
6237 the magic system. It's easier to extend, cleaner and has automatic
6241 the magic system. It's easier to extend, cleaner and has automatic
6238 namespace protection and documentation.
6242 namespace protection and documentation.
6239
6243
6240 2001-11-09 Fernando Perez <fperez@colorado.edu>
6244 2001-11-09 Fernando Perez <fperez@colorado.edu>
6241
6245
6242 * Fixed bug in output cache flushing (missing parameter to
6246 * Fixed bug in output cache flushing (missing parameter to
6243 __init__). Other small bugs fixed (found using pychecker).
6247 __init__). Other small bugs fixed (found using pychecker).
6244
6248
6245 * Version 0.1.4 opened for bugfixing.
6249 * Version 0.1.4 opened for bugfixing.
6246
6250
6247 2001-11-07 Fernando Perez <fperez@colorado.edu>
6251 2001-11-07 Fernando Perez <fperez@colorado.edu>
6248
6252
6249 * Version 0.1.3 released, mainly because of the raw_input bug.
6253 * Version 0.1.3 released, mainly because of the raw_input bug.
6250
6254
6251 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6255 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6252 and when testing for whether things were callable, a call could
6256 and when testing for whether things were callable, a call could
6253 actually be made to certain functions. They would get called again
6257 actually be made to certain functions. They would get called again
6254 once 'really' executed, with a resulting double call. A disaster
6258 once 'really' executed, with a resulting double call. A disaster
6255 in many cases (list.reverse() would never work!).
6259 in many cases (list.reverse() would never work!).
6256
6260
6257 * Removed prefilter() function, moved its code to raw_input (which
6261 * Removed prefilter() function, moved its code to raw_input (which
6258 after all was just a near-empty caller for prefilter). This saves
6262 after all was just a near-empty caller for prefilter). This saves
6259 a function call on every prompt, and simplifies the class a tiny bit.
6263 a function call on every prompt, and simplifies the class a tiny bit.
6260
6264
6261 * Fix _ip to __ip name in magic example file.
6265 * Fix _ip to __ip name in magic example file.
6262
6266
6263 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6267 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6264 work with non-gnu versions of tar.
6268 work with non-gnu versions of tar.
6265
6269
6266 2001-11-06 Fernando Perez <fperez@colorado.edu>
6270 2001-11-06 Fernando Perez <fperez@colorado.edu>
6267
6271
6268 * Version 0.1.2. Just to keep track of the recent changes.
6272 * Version 0.1.2. Just to keep track of the recent changes.
6269
6273
6270 * Fixed nasty bug in output prompt routine. It used to check 'if
6274 * Fixed nasty bug in output prompt routine. It used to check 'if
6271 arg != None...'. Problem is, this fails if arg implements a
6275 arg != None...'. Problem is, this fails if arg implements a
6272 special comparison (__cmp__) which disallows comparing to
6276 special comparison (__cmp__) which disallows comparing to
6273 None. Found it when trying to use the PhysicalQuantity module from
6277 None. Found it when trying to use the PhysicalQuantity module from
6274 ScientificPython.
6278 ScientificPython.
6275
6279
6276 2001-11-05 Fernando Perez <fperez@colorado.edu>
6280 2001-11-05 Fernando Perez <fperez@colorado.edu>
6277
6281
6278 * Also added dirs. Now the pushd/popd/dirs family functions
6282 * Also added dirs. Now the pushd/popd/dirs family functions
6279 basically like the shell, with the added convenience of going home
6283 basically like the shell, with the added convenience of going home
6280 when called with no args.
6284 when called with no args.
6281
6285
6282 * pushd/popd slightly modified to mimic shell behavior more
6286 * pushd/popd slightly modified to mimic shell behavior more
6283 closely.
6287 closely.
6284
6288
6285 * Added env,pushd,popd from ShellServices as magic functions. I
6289 * Added env,pushd,popd from ShellServices as magic functions. I
6286 think the cleanest will be to port all desired functions from
6290 think the cleanest will be to port all desired functions from
6287 ShellServices as magics and remove ShellServices altogether. This
6291 ShellServices as magics and remove ShellServices altogether. This
6288 will provide a single, clean way of adding functionality
6292 will provide a single, clean way of adding functionality
6289 (shell-type or otherwise) to IP.
6293 (shell-type or otherwise) to IP.
6290
6294
6291 2001-11-04 Fernando Perez <fperez@colorado.edu>
6295 2001-11-04 Fernando Perez <fperez@colorado.edu>
6292
6296
6293 * Added .ipython/ directory to sys.path. This way users can keep
6297 * Added .ipython/ directory to sys.path. This way users can keep
6294 customizations there and access them via import.
6298 customizations there and access them via import.
6295
6299
6296 2001-11-03 Fernando Perez <fperez@colorado.edu>
6300 2001-11-03 Fernando Perez <fperez@colorado.edu>
6297
6301
6298 * Opened version 0.1.1 for new changes.
6302 * Opened version 0.1.1 for new changes.
6299
6303
6300 * Changed version number to 0.1.0: first 'public' release, sent to
6304 * Changed version number to 0.1.0: first 'public' release, sent to
6301 Nathan and Janko.
6305 Nathan and Janko.
6302
6306
6303 * Lots of small fixes and tweaks.
6307 * Lots of small fixes and tweaks.
6304
6308
6305 * Minor changes to whos format. Now strings are shown, snipped if
6309 * Minor changes to whos format. Now strings are shown, snipped if
6306 too long.
6310 too long.
6307
6311
6308 * Changed ShellServices to work on __main__ so they show up in @who
6312 * Changed ShellServices to work on __main__ so they show up in @who
6309
6313
6310 * Help also works with ? at the end of a line:
6314 * Help also works with ? at the end of a line:
6311 ?sin and sin?
6315 ?sin and sin?
6312 both produce the same effect. This is nice, as often I use the
6316 both produce the same effect. This is nice, as often I use the
6313 tab-complete to find the name of a method, but I used to then have
6317 tab-complete to find the name of a method, but I used to then have
6314 to go to the beginning of the line to put a ? if I wanted more
6318 to go to the beginning of the line to put a ? if I wanted more
6315 info. Now I can just add the ? and hit return. Convenient.
6319 info. Now I can just add the ? and hit return. Convenient.
6316
6320
6317 2001-11-02 Fernando Perez <fperez@colorado.edu>
6321 2001-11-02 Fernando Perez <fperez@colorado.edu>
6318
6322
6319 * Python version check (>=2.1) added.
6323 * Python version check (>=2.1) added.
6320
6324
6321 * Added LazyPython documentation. At this point the docs are quite
6325 * Added LazyPython documentation. At this point the docs are quite
6322 a mess. A cleanup is in order.
6326 a mess. A cleanup is in order.
6323
6327
6324 * Auto-installer created. For some bizarre reason, the zipfiles
6328 * Auto-installer created. For some bizarre reason, the zipfiles
6325 module isn't working on my system. So I made a tar version
6329 module isn't working on my system. So I made a tar version
6326 (hopefully the command line options in various systems won't kill
6330 (hopefully the command line options in various systems won't kill
6327 me).
6331 me).
6328
6332
6329 * Fixes to Struct in genutils. Now all dictionary-like methods are
6333 * Fixes to Struct in genutils. Now all dictionary-like methods are
6330 protected (reasonably).
6334 protected (reasonably).
6331
6335
6332 * Added pager function to genutils and changed ? to print usage
6336 * Added pager function to genutils and changed ? to print usage
6333 note through it (it was too long).
6337 note through it (it was too long).
6334
6338
6335 * Added the LazyPython functionality. Works great! I changed the
6339 * Added the LazyPython functionality. Works great! I changed the
6336 auto-quote escape to ';', it's on home row and next to '. But
6340 auto-quote escape to ';', it's on home row and next to '. But
6337 both auto-quote and auto-paren (still /) escapes are command-line
6341 both auto-quote and auto-paren (still /) escapes are command-line
6338 parameters.
6342 parameters.
6339
6343
6340
6344
6341 2001-11-01 Fernando Perez <fperez@colorado.edu>
6345 2001-11-01 Fernando Perez <fperez@colorado.edu>
6342
6346
6343 * Version changed to 0.0.7. Fairly large change: configuration now
6347 * Version changed to 0.0.7. Fairly large change: configuration now
6344 is all stored in a directory, by default .ipython. There, all
6348 is all stored in a directory, by default .ipython. There, all
6345 config files have normal looking names (not .names)
6349 config files have normal looking names (not .names)
6346
6350
6347 * Version 0.0.6 Released first to Lucas and Archie as a test
6351 * Version 0.0.6 Released first to Lucas and Archie as a test
6348 run. Since it's the first 'semi-public' release, change version to
6352 run. Since it's the first 'semi-public' release, change version to
6349 > 0.0.6 for any changes now.
6353 > 0.0.6 for any changes now.
6350
6354
6351 * Stuff I had put in the ipplib.py changelog:
6355 * Stuff I had put in the ipplib.py changelog:
6352
6356
6353 Changes to InteractiveShell:
6357 Changes to InteractiveShell:
6354
6358
6355 - Made the usage message a parameter.
6359 - Made the usage message a parameter.
6356
6360
6357 - Require the name of the shell variable to be given. It's a bit
6361 - Require the name of the shell variable to be given. It's a bit
6358 of a hack, but allows the name 'shell' not to be hardwired in the
6362 of a hack, but allows the name 'shell' not to be hardwired in the
6359 magic (@) handler, which is problematic b/c it requires
6363 magic (@) handler, which is problematic b/c it requires
6360 polluting the global namespace with 'shell'. This in turn is
6364 polluting the global namespace with 'shell'. This in turn is
6361 fragile: if a user redefines a variable called shell, things
6365 fragile: if a user redefines a variable called shell, things
6362 break.
6366 break.
6363
6367
6364 - magic @: all functions available through @ need to be defined
6368 - magic @: all functions available through @ need to be defined
6365 as magic_<name>, even though they can be called simply as
6369 as magic_<name>, even though they can be called simply as
6366 @<name>. This allows the special command @magic to gather
6370 @<name>. This allows the special command @magic to gather
6367 information automatically about all existing magic functions,
6371 information automatically about all existing magic functions,
6368 even if they are run-time user extensions, by parsing the shell
6372 even if they are run-time user extensions, by parsing the shell
6369 instance __dict__ looking for special magic_ names.
6373 instance __dict__ looking for special magic_ names.
6370
6374
6371 - mainloop: added *two* local namespace parameters. This allows
6375 - mainloop: added *two* local namespace parameters. This allows
6372 the class to differentiate between parameters which were there
6376 the class to differentiate between parameters which were there
6373 before and after command line initialization was processed. This
6377 before and after command line initialization was processed. This
6374 way, later @who can show things loaded at startup by the
6378 way, later @who can show things loaded at startup by the
6375 user. This trick was necessary to make session saving/reloading
6379 user. This trick was necessary to make session saving/reloading
6376 really work: ideally after saving/exiting/reloading a session,
6380 really work: ideally after saving/exiting/reloading a session,
6377 *everything* should look the same, including the output of @who. I
6381 *everything* should look the same, including the output of @who. I
6378 was only able to make this work with this double namespace
6382 was only able to make this work with this double namespace
6379 trick.
6383 trick.
6380
6384
6381 - added a header to the logfile which allows (almost) full
6385 - added a header to the logfile which allows (almost) full
6382 session restoring.
6386 session restoring.
6383
6387
6384 - prepend lines beginning with @ or !, with a and log
6388 - prepend lines beginning with @ or !, with a and log
6385 them. Why? !lines: may be useful to know what you did @lines:
6389 them. Why? !lines: may be useful to know what you did @lines:
6386 they may affect session state. So when restoring a session, at
6390 they may affect session state. So when restoring a session, at
6387 least inform the user of their presence. I couldn't quite get
6391 least inform the user of their presence. I couldn't quite get
6388 them to properly re-execute, but at least the user is warned.
6392 them to properly re-execute, but at least the user is warned.
6389
6393
6390 * Started ChangeLog.
6394 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now