##// END OF EJS Templates
upgraded to path.py v2.1
vivainio -
Show More
@@ -1,818 +1,971 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@jorendorff.com> (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: 7 Mar 2004
16 """
16 """
17
17
18 # Original license statement:
19 #License: You may use path.py for whatever you wish, at your own risk. (For
20 #example, you may modify, relicense, and redistribute it.) It is provided
21 #without any guarantee or warranty of any kind, not even for merchantability or
22 #fitness for any purpose.
23
24 # IPython license note:
25 # For the sake of convenience, IPython includes this module
26 # in its directory structure in unmodified form, apart from
27 # these license statements. The same license still applies.
28
29
18
30 # TODO
19 # TODO
20 # - Tree-walking functions don't avoid symlink loops. Matt Harrison sent me a patch for this.
21 # - Tree-walking functions can't ignore errors. Matt Harrison asked for this.
22 #
23 # - Two people asked for path.chdir(). This just seems wrong to me,
24 # I dunno. chdir() is moderately evil anyway.
25 #
31 # - Bug in write_text(). It doesn't support Universal newline mode.
26 # - Bug in write_text(). It doesn't support Universal newline mode.
32 # - Better error message in listdir() when self isn't a
27 # - Better error message in listdir() when self isn't a
33 # directory. (On Windows, the error message really sucks.)
28 # directory. (On Windows, the error message really sucks.)
34 # - Make sure everything has a good docstring.
29 # - Make sure everything has a good docstring.
35 # - Add methods for regex find and replace.
30 # - Add methods for regex find and replace.
36 # - guess_content_type() method?
31 # - guess_content_type() method?
37 # - Perhaps support arguments to touch().
32 # - Perhaps support arguments to touch().
38 # - Could add split() and join() methods that generate warnings.
33 # - Could add split() and join() methods that generate warnings.
39 # - Note: __add__() technically has a bug, I think, where
40 # it doesn't play nice with other types that implement
41 # __radd__(). Test this.
42
34
43 from __future__ import generators
35 from __future__ import generators
44
36
45 import sys, os, fnmatch, glob, shutil, codecs
37 import sys, warnings, os, fnmatch, glob, shutil, codecs, md5
46
38
47 __version__ = '2.0.4'
39 __version__ = '2.1'
48 __all__ = ['path']
40 __all__ = ['path']
49
41
42 # Platform-specific support for path.owner
43 if os.name == 'nt':
44 try:
45 import win32security
46 except ImportError:
47 win32security = None
48 else:
49 try:
50 import pwd
51 except ImportError:
52 pwd = None
53
50 # Pre-2.3 support. Are unicode filenames supported?
54 # Pre-2.3 support. Are unicode filenames supported?
51 _base = str
55 _base = str
56 _getcwd = os.getcwd
52 try:
57 try:
53 if os.path.supports_unicode_filenames:
58 if os.path.supports_unicode_filenames:
54 _base = unicode
59 _base = unicode
60 _getcwd = os.getcwdu
55 except AttributeError:
61 except AttributeError:
56 pass
62 pass
57
63
64 # Pre-2.3 workaround for booleans
65 try:
66 True, False
67 except NameError:
68 True, False = 1, 0
69
58 # Pre-2.3 workaround for basestring.
70 # Pre-2.3 workaround for basestring.
59 try:
71 try:
60 basestring
72 basestring
61 except NameError:
73 except NameError:
62 basestring = (str, unicode)
74 basestring = (str, unicode)
63
75
64 # Universal newline support
76 # Universal newline support
65 _textmode = 'r'
77 _textmode = 'r'
66 if hasattr(file, 'newlines'):
78 if hasattr(file, 'newlines'):
67 _textmode = 'U'
79 _textmode = 'U'
68
80
69
81
82 class TreeWalkWarning(Warning):
83 pass
84
70 class path(_base):
85 class path(_base):
71 """ Represents a filesystem path.
86 """ Represents a filesystem path.
72
87
73 For documentation on individual methods, consult their
88 For documentation on individual methods, consult their
74 counterparts in os.path.
89 counterparts in os.path.
75 """
90 """
76
91
77 # --- Special Python methods.
92 # --- Special Python methods.
78
93
79 def __repr__(self):
94 def __repr__(self):
80 return 'path(%s)' % _base.__repr__(self)
95 return 'path(%s)' % _base.__repr__(self)
81
96
82 # Adding a path and a string yields a path.
97 # Adding a path and a string yields a path.
83 def __add__(self, more):
98 def __add__(self, more):
84 return path(_base(self) + more)
99 try:
100 resultStr = _base.__add__(self, more)
101 except TypeError: #Python bug
102 resultStr = NotImplemented
103 if resultStr is NotImplemented:
104 return resultStr
105 return self.__class__(resultStr)
85
106
86 def __radd__(self, other):
107 def __radd__(self, other):
87 return path(other + _base(self))
108 if isinstance(other, basestring):
109 return self.__class__(other.__add__(self))
110 else:
111 return NotImplemented
88
112
89 # The / operator joins paths.
113 # The / operator joins paths.
90 def __div__(self, rel):
114 def __div__(self, rel):
91 """ fp.__div__(rel) == fp / rel == fp.joinpath(rel)
115 """ fp.__div__(rel) == fp / rel == fp.joinpath(rel)
92
116
93 Join two path components, adding a separator character if
117 Join two path components, adding a separator character if
94 needed.
118 needed.
95 """
119 """
96 return path(os.path.join(self, rel))
120 return self.__class__(os.path.join(self, rel))
97
121
98 # Make the / operator work even when true division is enabled.
122 # Make the / operator work even when true division is enabled.
99 __truediv__ = __div__
123 __truediv__ = __div__
100
124
101 def getcwd():
125 def getcwd(cls):
102 """ Return the current working directory as a path object. """
126 """ Return the current working directory as a path object. """
103 return path(os.getcwd())
127 return cls(_getcwd())
104 getcwd = staticmethod(getcwd)
128 getcwd = classmethod(getcwd)
105
129
106
130
107 # --- Operations on path strings.
131 # --- Operations on path strings.
108
132
109 def abspath(self): return path(os.path.abspath(self))
133 isabs = os.path.isabs
110 def normcase(self): return path(os.path.normcase(self))
134 def abspath(self): return self.__class__(os.path.abspath(self))
111 def normpath(self): return path(os.path.normpath(self))
135 def normcase(self): return self.__class__(os.path.normcase(self))
112 def realpath(self): return path(os.path.realpath(self))
136 def normpath(self): return self.__class__(os.path.normpath(self))
113 def expanduser(self): return path(os.path.expanduser(self))
137 def realpath(self): return self.__class__(os.path.realpath(self))
114 def expandvars(self): return path(os.path.expandvars(self))
138 def expanduser(self): return self.__class__(os.path.expanduser(self))
115 def dirname(self): return path(os.path.dirname(self))
139 def expandvars(self): return self.__class__(os.path.expandvars(self))
140 def dirname(self): return self.__class__(os.path.dirname(self))
116 basename = os.path.basename
141 basename = os.path.basename
117
142
118 def expand(self):
143 def expand(self):
119 """ Clean up a filename by calling expandvars(),
144 """ Clean up a filename by calling expandvars(),
120 expanduser(), and normpath() on it.
145 expanduser(), and normpath() on it.
121
146
122 This is commonly everything needed to clean up a filename
147 This is commonly everything needed to clean up a filename
123 read from a configuration file, for example.
148 read from a configuration file, for example.
124 """
149 """
125 return self.expandvars().expanduser().normpath()
150 return self.expandvars().expanduser().normpath()
126
151
127 def _get_namebase(self):
152 def _get_namebase(self):
128 base, ext = os.path.splitext(self.name)
153 base, ext = os.path.splitext(self.name)
129 return base
154 return base
130
155
131 def _get_ext(self):
156 def _get_ext(self):
132 f, ext = os.path.splitext(_base(self))
157 f, ext = os.path.splitext(_base(self))
133 return ext
158 return ext
134
159
135 def _get_drive(self):
160 def _get_drive(self):
136 drive, r = os.path.splitdrive(self)
161 drive, r = os.path.splitdrive(self)
137 return path(drive)
162 return self.__class__(drive)
138
163
139 parent = property(
164 parent = property(
140 dirname, None, None,
165 dirname, None, None,
141 """ This path's parent directory, as a new path object.
166 """ This path's parent directory, as a new path object.
142
167
143 For example, path('/usr/local/lib/libpython.so').parent == path('/usr/local/lib')
168 For example, path('/usr/local/lib/libpython.so').parent == path('/usr/local/lib')
144 """)
169 """)
145
170
146 name = property(
171 name = property(
147 basename, None, None,
172 basename, None, None,
148 """ The name of this file or directory without the full path.
173 """ The name of this file or directory without the full path.
149
174
150 For example, path('/usr/local/lib/libpython.so').name == 'libpython.so'
175 For example, path('/usr/local/lib/libpython.so').name == 'libpython.so'
151 """)
176 """)
152
177
153 namebase = property(
178 namebase = property(
154 _get_namebase, None, None,
179 _get_namebase, None, None,
155 """ The same as path.name, but with one file extension stripped off.
180 """ The same as path.name, but with one file extension stripped off.
156
181
157 For example, path('/home/guido/python.tar.gz').name == 'python.tar.gz',
182 For example, path('/home/guido/python.tar.gz').name == 'python.tar.gz',
158 but path('/home/guido/python.tar.gz').namebase == 'python.tar'
183 but path('/home/guido/python.tar.gz').namebase == 'python.tar'
159 """)
184 """)
160
185
161 ext = property(
186 ext = property(
162 _get_ext, None, None,
187 _get_ext, None, None,
163 """ The file extension, for example '.py'. """)
188 """ The file extension, for example '.py'. """)
164
189
165 drive = property(
190 drive = property(
166 _get_drive, None, None,
191 _get_drive, None, None,
167 """ The drive specifier, for example 'C:'.
192 """ The drive specifier, for example 'C:'.
168 This is always empty on systems that don't use drive specifiers.
193 This is always empty on systems that don't use drive specifiers.
169 """)
194 """)
170
195
171 def splitpath(self):
196 def splitpath(self):
172 """ p.splitpath() -> Return (p.parent, p.name). """
197 """ p.splitpath() -> Return (p.parent, p.name). """
173 parent, child = os.path.split(self)
198 parent, child = os.path.split(self)
174 return path(parent), child
199 return self.__class__(parent), child
175
200
176 def splitdrive(self):
201 def splitdrive(self):
177 """ p.splitdrive() -> Return (p.drive, <the rest of p>).
202 """ p.splitdrive() -> Return (p.drive, <the rest of p>).
178
203
179 Split the drive specifier from this path. If there is
204 Split the drive specifier from this path. If there is
180 no drive specifier, p.drive is empty, so the return value
205 no drive specifier, p.drive is empty, so the return value
181 is simply (path(''), p). This is always the case on Unix.
206 is simply (path(''), p). This is always the case on Unix.
182 """
207 """
183 drive, rel = os.path.splitdrive(self)
208 drive, rel = os.path.splitdrive(self)
184 return path(drive), rel
209 return self.__class__(drive), rel
185
210
186 def splitext(self):
211 def splitext(self):
187 """ p.splitext() -> Return (p.stripext(), p.ext).
212 """ p.splitext() -> Return (p.stripext(), p.ext).
188
213
189 Split the filename extension from this path and return
214 Split the filename extension from this path and return
190 the two parts. Either part may be empty.
215 the two parts. Either part may be empty.
191
216
192 The extension is everything from '.' to the end of the
217 The extension is everything from '.' to the end of the
193 last path segment. This has the property that if
218 last path segment. This has the property that if
194 (a, b) == p.splitext(), then a + b == p.
219 (a, b) == p.splitext(), then a + b == p.
195 """
220 """
196 filename, ext = os.path.splitext(self)
221 filename, ext = os.path.splitext(self)
197 return path(filename), ext
222 return self.__class__(filename), ext
198
223
199 def stripext(self):
224 def stripext(self):
200 """ p.stripext() -> Remove one file extension from the path.
225 """ p.stripext() -> Remove one file extension from the path.
201
226
202 For example, path('/home/guido/python.tar.gz').stripext()
227 For example, path('/home/guido/python.tar.gz').stripext()
203 returns path('/home/guido/python.tar').
228 returns path('/home/guido/python.tar').
204 """
229 """
205 return self.splitext()[0]
230 return self.splitext()[0]
206
231
207 if hasattr(os.path, 'splitunc'):
232 if hasattr(os.path, 'splitunc'):
208 def splitunc(self):
233 def splitunc(self):
209 unc, rest = os.path.splitunc(self)
234 unc, rest = os.path.splitunc(self)
210 return path(unc), rest
235 return self.__class__(unc), rest
211
236
212 def _get_uncshare(self):
237 def _get_uncshare(self):
213 unc, r = os.path.splitunc(self)
238 unc, r = os.path.splitunc(self)
214 return path(unc)
239 return self.__class__(unc)
215
240
216 uncshare = property(
241 uncshare = property(
217 _get_uncshare, None, None,
242 _get_uncshare, None, None,
218 """ The UNC mount point for this path.
243 """ The UNC mount point for this path.
219 This is empty for paths on local drives. """)
244 This is empty for paths on local drives. """)
220
245
221 def joinpath(self, *args):
246 def joinpath(self, *args):
222 """ Join two or more path components, adding a separator
247 """ Join two or more path components, adding a separator
223 character (os.sep) if needed. Returns a new path
248 character (os.sep) if needed. Returns a new path
224 object.
249 object.
225 """
250 """
226 return path(os.path.join(self, *args))
251 return self.__class__(os.path.join(self, *args))
227
252
228 def splitall(self):
253 def splitall(self):
229 """ Return a list of the path components in this path.
254 r""" Return a list of the path components in this path.
230
255
231 The first item in the list will be a path. Its value will be
256 The first item in the list will be a path. Its value will be
232 either os.curdir, os.pardir, empty, or the root directory of
257 either os.curdir, os.pardir, empty, or the root directory of
233 this path (for example, '/' or 'C:\\'). The other items in
258 this path (for example, '/' or 'C:\\'). The other items in
234 the list will be strings.
259 the list will be strings.
235
260
236 path.path.joinpath(*result) will yield the original path.
261 path.path.joinpath(*result) will yield the original path.
237 """
262 """
238 parts = []
263 parts = []
239 loc = self
264 loc = self
240 while loc != os.curdir and loc != os.pardir:
265 while loc != os.curdir and loc != os.pardir:
241 prev = loc
266 prev = loc
242 loc, child = prev.splitpath()
267 loc, child = prev.splitpath()
243 if loc == prev:
268 if loc == prev:
244 break
269 break
245 parts.append(child)
270 parts.append(child)
246 parts.append(loc)
271 parts.append(loc)
247 parts.reverse()
272 parts.reverse()
248 return parts
273 return parts
249
274
250 def relpath(self):
275 def relpath(self):
251 """ Return this path as a relative path,
276 """ Return this path as a relative path,
252 based from the current working directory.
277 based from the current working directory.
253 """
278 """
254 cwd = path(os.getcwd())
279 cwd = self.__class__(os.getcwd())
255 return cwd.relpathto(self)
280 return cwd.relpathto(self)
256
281
257 def relpathto(self, dest):
282 def relpathto(self, dest):
258 """ Return a relative path from self to dest.
283 """ Return a relative path from self to dest.
259
284
260 If there is no relative path from self to dest, for example if
285 If there is no relative path from self to dest, for example if
261 they reside on different drives in Windows, then this returns
286 they reside on different drives in Windows, then this returns
262 dest.abspath().
287 dest.abspath().
263 """
288 """
264 origin = self.abspath()
289 origin = self.abspath()
265 dest = path(dest).abspath()
290 dest = self.__class__(dest).abspath()
266
291
267 orig_list = origin.normcase().splitall()
292 orig_list = origin.normcase().splitall()
268 # Don't normcase dest! We want to preserve the case.
293 # Don't normcase dest! We want to preserve the case.
269 dest_list = dest.splitall()
294 dest_list = dest.splitall()
270
295
271 if orig_list[0] != os.path.normcase(dest_list[0]):
296 if orig_list[0] != os.path.normcase(dest_list[0]):
272 # Can't get here from there.
297 # Can't get here from there.
273 return dest
298 return dest
274
299
275 # Find the location where the two paths start to differ.
300 # Find the location where the two paths start to differ.
276 i = 0
301 i = 0
277 for start_seg, dest_seg in zip(orig_list, dest_list):
302 for start_seg, dest_seg in zip(orig_list, dest_list):
278 if start_seg != os.path.normcase(dest_seg):
303 if start_seg != os.path.normcase(dest_seg):
279 break
304 break
280 i += 1
305 i += 1
281
306
282 # Now i is the point where the two paths diverge.
307 # Now i is the point where the two paths diverge.
283 # Need a certain number of "os.pardir"s to work up
308 # Need a certain number of "os.pardir"s to work up
284 # from the origin to the point of divergence.
309 # from the origin to the point of divergence.
285 segments = [os.pardir] * (len(orig_list) - i)
310 segments = [os.pardir] * (len(orig_list) - i)
286 # Need to add the diverging part of dest_list.
311 # Need to add the diverging part of dest_list.
287 segments += dest_list[i:]
312 segments += dest_list[i:]
288 if len(segments) == 0:
313 if len(segments) == 0:
289 # If they happen to be identical, use os.curdir.
314 # If they happen to be identical, use os.curdir.
290 return path(os.curdir)
315 relpath = os.curdir
291 else:
316 else:
292 return path(os.path.join(*segments))
317 relpath = os.path.join(*segments)
293
318 return self.__class__(relpath)
294
319
295 # --- Listing, searching, walking, and matching
320 # --- Listing, searching, walking, and matching
296
321
297 def listdir(self, pattern=None):
322 def listdir(self, pattern=None):
298 """ D.listdir() -> List of items in this directory.
323 """ D.listdir() -> List of items in this directory.
299
324
300 Use D.files() or D.dirs() instead if you want a listing
325 Use D.files() or D.dirs() instead if you want a listing
301 of just files or just subdirectories.
326 of just files or just subdirectories.
302
327
303 The elements of the list are path objects.
328 The elements of the list are path objects.
304
329
305 With the optional 'pattern' argument, this only lists
330 With the optional 'pattern' argument, this only lists
306 items whose names match the given pattern.
331 items whose names match the given pattern.
307 """
332 """
308 names = os.listdir(self)
333 names = os.listdir(self)
309 if pattern is not None:
334 if pattern is not None:
310 names = fnmatch.filter(names, pattern)
335 names = fnmatch.filter(names, pattern)
311 return [self / child for child in names]
336 return [self / child for child in names]
312
337
313 def dirs(self, pattern=None):
338 def dirs(self, pattern=None):
314 """ D.dirs() -> List of this directory's subdirectories.
339 """ D.dirs() -> List of this directory's subdirectories.
315
340
316 The elements of the list are path objects.
341 The elements of the list are path objects.
317 This does not walk recursively into subdirectories
342 This does not walk recursively into subdirectories
318 (but see path.walkdirs).
343 (but see path.walkdirs).
319
344
320 With the optional 'pattern' argument, this only lists
345 With the optional 'pattern' argument, this only lists
321 directories whose names match the given pattern. For
346 directories whose names match the given pattern. For
322 example, d.dirs('build-*').
347 example, d.dirs('build-*').
323 """
348 """
324 return [p for p in self.listdir(pattern) if p.isdir()]
349 return [p for p in self.listdir(pattern) if p.isdir()]
325
350
326 def files(self, pattern=None):
351 def files(self, pattern=None):
327 """ D.files() -> List of the files in this directory.
352 """ D.files() -> List of the files in this directory.
328
353
329 The elements of the list are path objects.
354 The elements of the list are path objects.
330 This does not walk into subdirectories (see path.walkfiles).
355 This does not walk into subdirectories (see path.walkfiles).
331
356
332 With the optional 'pattern' argument, this only lists files
357 With the optional 'pattern' argument, this only lists files
333 whose names match the given pattern. For example,
358 whose names match the given pattern. For example,
334 d.files('*.pyc').
359 d.files('*.pyc').
335 """
360 """
336
361
337 return [p for p in self.listdir(pattern) if p.isfile()]
362 return [p for p in self.listdir(pattern) if p.isfile()]
338
363
339 def walk(self, pattern=None):
364 def walk(self, pattern=None, errors='strict'):
340 """ D.walk() -> iterator over files and subdirs, recursively.
365 """ D.walk() -> iterator over files and subdirs, recursively.
341
366
342 The iterator yields path objects naming each child item of
367 The iterator yields path objects naming each child item of
343 this directory and its descendants. This requires that
368 this directory and its descendants. This requires that
344 D.isdir().
369 D.isdir().
345
370
346 This performs a depth-first traversal of the directory tree.
371 This performs a depth-first traversal of the directory tree.
347 Each directory is returned just before all its children.
372 Each directory is returned just before all its children.
373
374 The errors= keyword argument controls behavior when an
375 error occurs. The default is 'strict', which causes an
376 exception. The other allowed values are 'warn', which
377 reports the error via warnings.warn(), and 'ignore'.
348 """
378 """
349 for child in self.listdir():
379 if errors not in ('strict', 'warn', 'ignore'):
380 raise ValueError("invalid errors parameter")
381
382 try:
383 childList = self.listdir()
384 except Exception:
385 if errors == 'ignore':
386 return
387 elif errors == 'warn':
388 warnings.warn(
389 "Unable to list directory '%s': %s"
390 % (self, sys.exc_info()[1]),
391 TreeWalkWarning)
392 else:
393 raise
394
395 for child in childList:
350 if pattern is None or child.fnmatch(pattern):
396 if pattern is None or child.fnmatch(pattern):
351 yield child
397 yield child
352 if child.isdir():
398 try:
353 for item in child.walk(pattern):
399 isdir = child.isdir()
400 except Exception:
401 if errors == 'ignore':
402 isdir = False
403 elif errors == 'warn':
404 warnings.warn(
405 "Unable to access '%s': %s"
406 % (child, sys.exc_info()[1]),
407 TreeWalkWarning)
408 isdir = False
409 else:
410 raise
411
412 if isdir:
413 for item in child.walk(pattern, errors):
354 yield item
414 yield item
355
415
356 def walkdirs(self, pattern=None):
416 def walkdirs(self, pattern=None, errors='strict'):
357 """ D.walkdirs() -> iterator over subdirs, recursively.
417 """ D.walkdirs() -> iterator over subdirs, recursively.
358
418
359 With the optional 'pattern' argument, this yields only
419 With the optional 'pattern' argument, this yields only
360 directories whose names match the given pattern. For
420 directories whose names match the given pattern. For
361 example, mydir.walkdirs('*test') yields only directories
421 example, mydir.walkdirs('*test') yields only directories
362 with names ending in 'test'.
422 with names ending in 'test'.
423
424 The errors= keyword argument controls behavior when an
425 error occurs. The default is 'strict', which causes an
426 exception. The other allowed values are 'warn', which
427 reports the error via warnings.warn(), and 'ignore'.
363 """
428 """
364 for child in self.dirs():
429 if errors not in ('strict', 'warn', 'ignore'):
430 raise ValueError("invalid errors parameter")
431
432 try:
433 dirs = self.dirs()
434 except Exception:
435 if errors == 'ignore':
436 return
437 elif errors == 'warn':
438 warnings.warn(
439 "Unable to list directory '%s': %s"
440 % (self, sys.exc_info()[1]),
441 TreeWalkWarning)
442 else:
443 raise
444
445 for child in dirs:
365 if pattern is None or child.fnmatch(pattern):
446 if pattern is None or child.fnmatch(pattern):
366 yield child
447 yield child
367 for subsubdir in child.walkdirs(pattern):
448 for subsubdir in child.walkdirs(pattern, errors):
368 yield subsubdir
449 yield subsubdir
369
450
370 def walkfiles(self, pattern=None):
451 def walkfiles(self, pattern=None, errors='strict'):
371 """ D.walkfiles() -> iterator over files in D, recursively.
452 """ D.walkfiles() -> iterator over files in D, recursively.
372
453
373 The optional argument, pattern, limits the results to files
454 The optional argument, pattern, limits the results to files
374 with names that match the pattern. For example,
455 with names that match the pattern. For example,
375 mydir.walkfiles('*.tmp') yields only files with the .tmp
456 mydir.walkfiles('*.tmp') yields only files with the .tmp
376 extension.
457 extension.
377 """
458 """
378 for child in self.listdir():
459 if errors not in ('strict', 'warn', 'ignore'):
379 if child.isfile():
460 raise ValueError("invalid errors parameter")
461
462 try:
463 childList = self.listdir()
464 except Exception:
465 if errors == 'ignore':
466 return
467 elif errors == 'warn':
468 warnings.warn(
469 "Unable to list directory '%s': %s"
470 % (self, sys.exc_info()[1]),
471 TreeWalkWarning)
472 else:
473 raise
474
475 for child in childList:
476 try:
477 isfile = child.isfile()
478 isdir = not isfile and child.isdir()
479 except:
480 if errors == 'ignore':
481 return
482 elif errors == 'warn':
483 warnings.warn(
484 "Unable to access '%s': %s"
485 % (self, sys.exc_info()[1]),
486 TreeWalkWarning)
487 else:
488 raise
489
490 if isfile:
380 if pattern is None or child.fnmatch(pattern):
491 if pattern is None or child.fnmatch(pattern):
381 yield child
492 yield child
382 elif child.isdir():
493 elif isdir:
383 for f in child.walkfiles(pattern):
494 for f in child.walkfiles(pattern, errors):
384 yield f
495 yield f
385
496
386 def fnmatch(self, pattern):
497 def fnmatch(self, pattern):
387 """ Return True if self.name matches the given pattern.
498 """ Return True if self.name matches the given pattern.
388
499
389 pattern - A filename pattern with wildcards,
500 pattern - A filename pattern with wildcards,
390 for example '*.py'.
501 for example '*.py'.
391 """
502 """
392 return fnmatch.fnmatch(self.name, pattern)
503 return fnmatch.fnmatch(self.name, pattern)
393
504
394 def glob(self, pattern):
505 def glob(self, pattern):
395 """ Return a list of path objects that match the pattern.
506 """ Return a list of path objects that match the pattern.
396
507
397 pattern - a path relative to this directory, with wildcards.
508 pattern - a path relative to this directory, with wildcards.
398
509
399 For example, path('/users').glob('*/bin/*') returns a list
510 For example, path('/users').glob('*/bin/*') returns a list
400 of all the files users have in their bin directories.
511 of all the files users have in their bin directories.
401 """
512 """
402 return map(path, glob.glob(_base(self / pattern)))
513 cls = self.__class__
514 return [cls(s) for s in glob.glob(_base(self / pattern))]
403
515
404
516
405 # --- Reading or writing an entire file at once.
517 # --- Reading or writing an entire file at once.
406
518
407 def open(self, mode='r'):
519 def open(self, mode='r'):
408 """ Open this file. Return a file object. """
520 """ Open this file. Return a file object. """
409 return file(self, mode)
521 return file(self, mode)
410
522
411 def bytes(self):
523 def bytes(self):
412 """ Open this file, read all bytes, return them as a string. """
524 """ Open this file, read all bytes, return them as a string. """
413 f = self.open('rb')
525 f = self.open('rb')
414 try:
526 try:
415 return f.read()
527 return f.read()
416 finally:
528 finally:
417 f.close()
529 f.close()
418
530
419 def write_bytes(self, bytes, append=False):
531 def write_bytes(self, bytes, append=False):
420 """ Open this file and write the given bytes to it.
532 """ Open this file and write the given bytes to it.
421
533
422 Default behavior is to overwrite any existing file.
534 Default behavior is to overwrite any existing file.
423 Call this with write_bytes(bytes, append=True) to append instead.
535 Call p.write_bytes(bytes, append=True) to append instead.
424 """
536 """
425 if append:
537 if append:
426 mode = 'ab'
538 mode = 'ab'
427 else:
539 else:
428 mode = 'wb'
540 mode = 'wb'
429 f = self.open(mode)
541 f = self.open(mode)
430 try:
542 try:
431 f.write(bytes)
543 f.write(bytes)
432 finally:
544 finally:
433 f.close()
545 f.close()
434
546
435 def text(self, encoding=None, errors='strict'):
547 def text(self, encoding=None, errors='strict'):
436 """ Open this file, read it in, return the content as a string.
548 r""" Open this file, read it in, return the content as a string.
437
549
438 This uses 'U' mode in Python 2.3 and later, so '\r\n' and '\r'
550 This uses 'U' mode in Python 2.3 and later, so '\r\n' and '\r'
439 are automatically translated to '\n'.
551 are automatically translated to '\n'.
440
552
441 Optional arguments:
553 Optional arguments:
442
554
443 encoding - The Unicode encoding (or character set) of
555 encoding - The Unicode encoding (or character set) of
444 the file. If present, the content of the file is
556 the file. If present, the content of the file is
445 decoded and returned as a unicode object; otherwise
557 decoded and returned as a unicode object; otherwise
446 it is returned as an 8-bit str.
558 it is returned as an 8-bit str.
447 errors - How to handle Unicode errors; see help(str.decode)
559 errors - How to handle Unicode errors; see help(str.decode)
448 for the options. Default is 'strict'.
560 for the options. Default is 'strict'.
449 """
561 """
450 if encoding is None:
562 if encoding is None:
451 # 8-bit
563 # 8-bit
452 f = self.open(_textmode)
564 f = self.open(_textmode)
453 try:
565 try:
454 return f.read()
566 return f.read()
455 finally:
567 finally:
456 f.close()
568 f.close()
457 else:
569 else:
458 # Unicode
570 # Unicode
459 f = codecs.open(self, 'r', encoding, errors)
571 f = codecs.open(self, 'r', encoding, errors)
460 # (Note - Can't use 'U' mode here, since codecs.open
572 # (Note - Can't use 'U' mode here, since codecs.open
461 # doesn't support 'U' mode, even in Python 2.3.)
573 # doesn't support 'U' mode, even in Python 2.3.)
462 try:
574 try:
463 t = f.read()
575 t = f.read()
464 finally:
576 finally:
465 f.close()
577 f.close()
466 return (t.replace(u'\r\n', u'\n')
578 return (t.replace(u'\r\n', u'\n')
467 .replace(u'\r\x85', u'\n')
579 .replace(u'\r\x85', u'\n')
468 .replace(u'\r', u'\n')
580 .replace(u'\r', u'\n')
469 .replace(u'\x85', u'\n')
581 .replace(u'\x85', u'\n')
470 .replace(u'\u2028', u'\n'))
582 .replace(u'\u2028', u'\n'))
471
583
472 def write_text(self, text, encoding=None, errors='strict', linesep=os.linesep, append=False):
584 def write_text(self, text, encoding=None, errors='strict', linesep=os.linesep, append=False):
473 """ Write the given text to this file.
585 r""" Write the given text to this file.
474
586
475 The default behavior is to overwrite any existing file;
587 The default behavior is to overwrite any existing file;
476 to append instead, use the 'append=True' keyword argument.
588 to append instead, use the 'append=True' keyword argument.
477
589
478 There are two differences between path.write_text() and
590 There are two differences between path.write_text() and
479 path.write_bytes(): newline handling and Unicode handling.
591 path.write_bytes(): newline handling and Unicode handling.
480 See below.
592 See below.
481
593
482 Parameters:
594 Parameters:
483
595
484 - text - str/unicode - The text to be written.
596 - text - str/unicode - The text to be written.
485
597
486 - encoding - str - The Unicode encoding that will be used.
598 - encoding - str - The Unicode encoding that will be used.
487 This is ignored if 'text' isn't a Unicode string.
599 This is ignored if 'text' isn't a Unicode string.
488
600
489 - errors - str - How to handle Unicode encoding errors.
601 - errors - str - How to handle Unicode encoding errors.
490 Default is 'strict'. See help(unicode.encode) for the
602 Default is 'strict'. See help(unicode.encode) for the
491 options. This is ignored if 'text' isn't a Unicode
603 options. This is ignored if 'text' isn't a Unicode
492 string.
604 string.
493
605
494 - linesep - keyword argument - str/unicode - The sequence of
606 - linesep - keyword argument - str/unicode - The sequence of
495 characters to be used to mark end-of-line. The default is
607 characters to be used to mark end-of-line. The default is
496 os.linesep. You can also specify None; this means to
608 os.linesep. You can also specify None; this means to
497 leave all newlines as they are in 'text'.
609 leave all newlines as they are in 'text'.
498
610
499 - append - keyword argument - bool - Specifies what to do if
611 - append - keyword argument - bool - Specifies what to do if
500 the file already exists (True: append to the end of it;
612 the file already exists (True: append to the end of it;
501 False: overwrite it.) The default is False.
613 False: overwrite it.) The default is False.
502
614
503
615
504 --- Newline handling.
616 --- Newline handling.
505
617
506 write_text() converts all standard end-of-line sequences
618 write_text() converts all standard end-of-line sequences
507 ('\n', '\r', and '\r\n') to your platform's default end-of-line
619 ('\n', '\r', and '\r\n') to your platform's default end-of-line
508 sequence (see os.linesep; on Windows, for example, the
620 sequence (see os.linesep; on Windows, for example, the
509 end-of-line marker is '\r\n').
621 end-of-line marker is '\r\n').
510
622
511 If you don't like your platform's default, you can override it
623 If you don't like your platform's default, you can override it
512 using the 'linesep=' keyword argument. If you specifically want
624 using the 'linesep=' keyword argument. If you specifically want
513 write_text() to preserve the newlines as-is, use 'linesep=None'.
625 write_text() to preserve the newlines as-is, use 'linesep=None'.
514
626
515 This applies to Unicode text the same as to 8-bit text, except
627 This applies to Unicode text the same as to 8-bit text, except
516 there are three additional standard Unicode end-of-line sequences:
628 there are three additional standard Unicode end-of-line sequences:
517 u'\x85', u'\r\x85', and u'\u2028'.
629 u'\x85', u'\r\x85', and u'\u2028'.
518
630
519 (This is slightly different from when you open a file for
631 (This is slightly different from when you open a file for
520 writing with fopen(filename, "w") in C or file(filename, 'w')
632 writing with fopen(filename, "w") in C or file(filename, 'w')
521 in Python.)
633 in Python.)
522
634
523
635
524 --- Unicode
636 --- Unicode
525
637
526 If 'text' isn't Unicode, then apart from newline handling, the
638 If 'text' isn't Unicode, then apart from newline handling, the
527 bytes are written verbatim to the file. The 'encoding' and
639 bytes are written verbatim to the file. The 'encoding' and
528 'errors' arguments are not used and must be omitted.
640 'errors' arguments are not used and must be omitted.
529
641
530 If 'text' is Unicode, it is first converted to bytes using the
642 If 'text' is Unicode, it is first converted to bytes using the
531 specified 'encoding' (or the default encoding if 'encoding'
643 specified 'encoding' (or the default encoding if 'encoding'
532 isn't specified). The 'errors' argument applies only to this
644 isn't specified). The 'errors' argument applies only to this
533 conversion.
645 conversion.
534
646
535 """
647 """
536 if isinstance(text, unicode):
648 if isinstance(text, unicode):
537 if linesep is not None:
649 if linesep is not None:
538 # Convert all standard end-of-line sequences to
650 # Convert all standard end-of-line sequences to
539 # ordinary newline characters.
651 # ordinary newline characters.
540 text = (text.replace(u'\r\n', u'\n')
652 text = (text.replace(u'\r\n', u'\n')
541 .replace(u'\r\x85', u'\n')
653 .replace(u'\r\x85', u'\n')
542 .replace(u'\r', u'\n')
654 .replace(u'\r', u'\n')
543 .replace(u'\x85', u'\n')
655 .replace(u'\x85', u'\n')
544 .replace(u'\u2028', u'\n'))
656 .replace(u'\u2028', u'\n'))
545 text = text.replace(u'\n', linesep)
657 text = text.replace(u'\n', linesep)
546 if encoding is None:
658 if encoding is None:
547 encoding = sys.getdefaultencoding()
659 encoding = sys.getdefaultencoding()
548 bytes = text.encode(encoding, errors)
660 bytes = text.encode(encoding, errors)
549 else:
661 else:
550 # It is an error to specify an encoding if 'text' is
662 # It is an error to specify an encoding if 'text' is
551 # an 8-bit string.
663 # an 8-bit string.
552 assert encoding is None
664 assert encoding is None
553
665
554 if linesep is not None:
666 if linesep is not None:
555 text = (text.replace('\r\n', '\n')
667 text = (text.replace('\r\n', '\n')
556 .replace('\r', '\n'))
668 .replace('\r', '\n'))
557 bytes = text.replace('\n', linesep)
669 bytes = text.replace('\n', linesep)
558
670
559 self.write_bytes(bytes, append)
671 self.write_bytes(bytes, append)
560
672
561 def lines(self, encoding=None, errors='strict', retain=True):
673 def lines(self, encoding=None, errors='strict', retain=True):
562 """ Open this file, read all lines, return them in a list.
674 r""" Open this file, read all lines, return them in a list.
563
675
564 Optional arguments:
676 Optional arguments:
565 encoding - The Unicode encoding (or character set) of
677 encoding - The Unicode encoding (or character set) of
566 the file. The default is None, meaning the content
678 the file. The default is None, meaning the content
567 of the file is read as 8-bit characters and returned
679 of the file is read as 8-bit characters and returned
568 as a list of (non-Unicode) str objects.
680 as a list of (non-Unicode) str objects.
569 errors - How to handle Unicode errors; see help(str.decode)
681 errors - How to handle Unicode errors; see help(str.decode)
570 for the options. Default is 'strict'
682 for the options. Default is 'strict'
571 retain - If true, retain newline characters; but all newline
683 retain - If true, retain newline characters; but all newline
572 character combinations ('\r', '\n', '\r\n') are
684 character combinations ('\r', '\n', '\r\n') are
573 translated to '\n'. If false, newline characters are
685 translated to '\n'. If false, newline characters are
574 stripped off. Default is True.
686 stripped off. Default is True.
575
687
576 This uses 'U' mode in Python 2.3 and later.
688 This uses 'U' mode in Python 2.3 and later.
577 """
689 """
578 if encoding is None and retain:
690 if encoding is None and retain:
579 f = self.open(_textmode)
691 f = self.open(_textmode)
580 try:
692 try:
581 return f.readlines()
693 return f.readlines()
582 finally:
694 finally:
583 f.close()
695 f.close()
584 else:
696 else:
585 return self.text(encoding, errors).splitlines(retain)
697 return self.text(encoding, errors).splitlines(retain)
586
698
587 def write_lines(self, lines, encoding=None, errors='strict',
699 def write_lines(self, lines, encoding=None, errors='strict',
588 linesep=os.linesep, append=False):
700 linesep=os.linesep, append=False):
589 """ Write the given lines of text to this file.
701 r""" Write the given lines of text to this file.
590
702
591 By default this overwrites any existing file at this path.
703 By default this overwrites any existing file at this path.
592
704
593 This puts a platform-specific newline sequence on every line.
705 This puts a platform-specific newline sequence on every line.
594 See 'linesep' below.
706 See 'linesep' below.
595
707
596 lines - A list of strings.
708 lines - A list of strings.
597
709
598 encoding - A Unicode encoding to use. This applies only if
710 encoding - A Unicode encoding to use. This applies only if
599 'lines' contains any Unicode strings.
711 'lines' contains any Unicode strings.
600
712
601 errors - How to handle errors in Unicode encoding. This
713 errors - How to handle errors in Unicode encoding. This
602 also applies only to Unicode strings.
714 also applies only to Unicode strings.
603
715
604 linesep - The desired line-ending. This line-ending is
716 linesep - The desired line-ending. This line-ending is
605 applied to every line. If a line already has any
717 applied to every line. If a line already has any
606 standard line ending ('\r', '\n', '\r\n', u'\x85',
718 standard line ending ('\r', '\n', '\r\n', u'\x85',
607 u'\r\x85', u'\u2028'), that will be stripped off and
719 u'\r\x85', u'\u2028'), that will be stripped off and
608 this will be used instead. The default is os.linesep,
720 this will be used instead. The default is os.linesep,
609 which is platform-dependent ('\r\n' on Windows, '\n' on
721 which is platform-dependent ('\r\n' on Windows, '\n' on
610 Unix, etc.) Specify None to write the lines as-is,
722 Unix, etc.) Specify None to write the lines as-is,
611 like file.writelines().
723 like file.writelines().
612
724
613 Use the keyword argument append=True to append lines to the
725 Use the keyword argument append=True to append lines to the
614 file. The default is to overwrite the file. Warning:
726 file. The default is to overwrite the file. Warning:
615 When you use this with Unicode data, if the encoding of the
727 When you use this with Unicode data, if the encoding of the
616 existing data in the file is different from the encoding
728 existing data in the file is different from the encoding
617 you specify with the encoding= parameter, the result is
729 you specify with the encoding= parameter, the result is
618 mixed-encoding data, which can really confuse someone trying
730 mixed-encoding data, which can really confuse someone trying
619 to read the file later.
731 to read the file later.
620 """
732 """
621 if append:
733 if append:
622 mode = 'ab'
734 mode = 'ab'
623 else:
735 else:
624 mode = 'wb'
736 mode = 'wb'
625 f = self.open(mode)
737 f = self.open(mode)
626 try:
738 try:
627 for line in lines:
739 for line in lines:
628 isUnicode = isinstance(line, unicode)
740 isUnicode = isinstance(line, unicode)
629 if linesep is not None:
741 if linesep is not None:
630 # Strip off any existing line-end and add the
742 # Strip off any existing line-end and add the
631 # specified linesep string.
743 # specified linesep string.
632 if isUnicode:
744 if isUnicode:
633 if line[-2:] in (u'\r\n', u'\x0d\x85'):
745 if line[-2:] in (u'\r\n', u'\x0d\x85'):
634 line = line[:-2]
746 line = line[:-2]
635 elif line[-1:] in (u'\r', u'\n',
747 elif line[-1:] in (u'\r', u'\n',
636 u'\x85', u'\u2028'):
748 u'\x85', u'\u2028'):
637 line = line[:-1]
749 line = line[:-1]
638 else:
750 else:
639 if line[-2:] == '\r\n':
751 if line[-2:] == '\r\n':
640 line = line[:-2]
752 line = line[:-2]
641 elif line[-1:] in ('\r', '\n'):
753 elif line[-1:] in ('\r', '\n'):
642 line = line[:-1]
754 line = line[:-1]
643 line += linesep
755 line += linesep
644 if isUnicode:
756 if isUnicode:
645 if encoding is None:
757 if encoding is None:
646 encoding = sys.getdefaultencoding()
758 encoding = sys.getdefaultencoding()
647 line = line.encode(encoding, errors)
759 line = line.encode(encoding, errors)
648 f.write(line)
760 f.write(line)
649 finally:
761 finally:
650 f.close()
762 f.close()
651
763
764 def read_md5(self):
765 """ Calculate the md5 hash for this file.
766
767 This reads through the entire file.
768 """
769 f = self.open('rb')
770 try:
771 m = md5.new()
772 while True:
773 d = f.read(8192)
774 if not d:
775 break
776 m.update(d)
777 finally:
778 f.close()
779 return m.digest()
652
780
653 # --- Methods for querying the filesystem.
781 # --- Methods for querying the filesystem.
654
782
655 exists = os.path.exists
783 exists = os.path.exists
656 isabs = os.path.isabs
657 isdir = os.path.isdir
784 isdir = os.path.isdir
658 isfile = os.path.isfile
785 isfile = os.path.isfile
659 islink = os.path.islink
786 islink = os.path.islink
660 ismount = os.path.ismount
787 ismount = os.path.ismount
661
788
662 if hasattr(os.path, 'samefile'):
789 if hasattr(os.path, 'samefile'):
663 samefile = os.path.samefile
790 samefile = os.path.samefile
664
791
665 getatime = os.path.getatime
792 getatime = os.path.getatime
666 atime = property(
793 atime = property(
667 getatime, None, None,
794 getatime, None, None,
668 """ Last access time of the file. """)
795 """ Last access time of the file. """)
669
796
670 getmtime = os.path.getmtime
797 getmtime = os.path.getmtime
671 mtime = property(
798 mtime = property(
672 getmtime, None, None,
799 getmtime, None, None,
673 """ Last-modified time of the file. """)
800 """ Last-modified time of the file. """)
674
801
675 if hasattr(os.path, 'getctime'):
802 if hasattr(os.path, 'getctime'):
676 getctime = os.path.getctime
803 getctime = os.path.getctime
677 ctime = property(
804 ctime = property(
678 getctime, None, None,
805 getctime, None, None,
679 """ Creation time of the file. """)
806 """ Creation time of the file. """)
680
807
681 getsize = os.path.getsize
808 getsize = os.path.getsize
682 size = property(
809 size = property(
683 getsize, None, None,
810 getsize, None, None,
684 """ Size of the file, in bytes. """)
811 """ Size of the file, in bytes. """)
685
812
686 if hasattr(os, 'access'):
813 if hasattr(os, 'access'):
687 def access(self, mode):
814 def access(self, mode):
688 """ Return true if current user has access to this path.
815 """ Return true if current user has access to this path.
689
816
690 mode - One of the constants os.F_OK, os.R_OK, os.W_OK, os.X_OK
817 mode - One of the constants os.F_OK, os.R_OK, os.W_OK, os.X_OK
691 """
818 """
692 return os.access(self, mode)
819 return os.access(self, mode)
693
820
694 def stat(self):
821 def stat(self):
695 """ Perform a stat() system call on this path. """
822 """ Perform a stat() system call on this path. """
696 return os.stat(self)
823 return os.stat(self)
697
824
698 def lstat(self):
825 def lstat(self):
699 """ Like path.stat(), but do not follow symbolic links. """
826 """ Like path.stat(), but do not follow symbolic links. """
700 return os.lstat(self)
827 return os.lstat(self)
701
828
829 def get_owner(self):
830 r""" Return the name of the owner of this file or directory.
831
832 This follows symbolic links.
833
834 On Windows, this returns a name of the form ur'DOMAIN\User Name'.
835 On Windows, a group can own a file or directory.
836 """
837 if os.name == 'nt':
838 if win32security is None:
839 raise Exception("path.owner requires win32all to be installed")
840 desc = win32security.GetFileSecurity(
841 self, win32security.OWNER_SECURITY_INFORMATION)
842 sid = desc.GetSecurityDescriptorOwner()
843 account, domain, typecode = win32security.LookupAccountSid(None, sid)
844 return domain + u'\\' + account
845 else:
846 if pwd is None:
847 raise NotImplementedError("path.owner is not implemented on this platform.")
848 st = self.stat()
849 return pwd.getpwuid(st.st_uid).pw_name
850
851 owner = property(
852 get_owner, None, None,
853 """ Name of the owner of this file or directory. """)
854
702 if hasattr(os, 'statvfs'):
855 if hasattr(os, 'statvfs'):
703 def statvfs(self):
856 def statvfs(self):
704 """ Perform a statvfs() system call on this path. """
857 """ Perform a statvfs() system call on this path. """
705 return os.statvfs(self)
858 return os.statvfs(self)
706
859
707 if hasattr(os, 'pathconf'):
860 if hasattr(os, 'pathconf'):
708 def pathconf(self, name):
861 def pathconf(self, name):
709 return os.pathconf(self, name)
862 return os.pathconf(self, name)
710
863
711
864
712 # --- Modifying operations on files and directories
865 # --- Modifying operations on files and directories
713
866
714 def utime(self, times):
867 def utime(self, times):
715 """ Set the access and modified times of this file. """
868 """ Set the access and modified times of this file. """
716 os.utime(self, times)
869 os.utime(self, times)
717
870
718 def chmod(self, mode):
871 def chmod(self, mode):
719 os.chmod(self, mode)
872 os.chmod(self, mode)
720
873
721 if hasattr(os, 'chown'):
874 if hasattr(os, 'chown'):
722 def chown(self, uid, gid):
875 def chown(self, uid, gid):
723 os.chown(self, uid, gid)
876 os.chown(self, uid, gid)
724
877
725 def rename(self, new):
878 def rename(self, new):
726 os.rename(self, new)
879 os.rename(self, new)
727
880
728 def renames(self, new):
881 def renames(self, new):
729 os.renames(self, new)
882 os.renames(self, new)
730
883
731
884
732 # --- Create/delete operations on directories
885 # --- Create/delete operations on directories
733
886
734 def mkdir(self, mode=0777):
887 def mkdir(self, mode=0777):
735 os.mkdir(self, mode)
888 os.mkdir(self, mode)
736
889
737 def makedirs(self, mode=0777):
890 def makedirs(self, mode=0777):
738 os.makedirs(self, mode)
891 os.makedirs(self, mode)
739
892
740 def rmdir(self):
893 def rmdir(self):
741 os.rmdir(self)
894 os.rmdir(self)
742
895
743 def removedirs(self):
896 def removedirs(self):
744 os.removedirs(self)
897 os.removedirs(self)
745
898
746
899
747 # --- Modifying operations on files
900 # --- Modifying operations on files
748
901
749 def touch(self):
902 def touch(self):
750 """ Set the access/modified times of this file to the current time.
903 """ Set the access/modified times of this file to the current time.
751 Create the file if it does not exist.
904 Create the file if it does not exist.
752 """
905 """
753 fd = os.open(self, os.O_WRONLY | os.O_CREAT, 0666)
906 fd = os.open(self, os.O_WRONLY | os.O_CREAT, 0666)
754 os.close(fd)
907 os.close(fd)
755 os.utime(self, None)
908 os.utime(self, None)
756
909
757 def remove(self):
910 def remove(self):
758 os.remove(self)
911 os.remove(self)
759
912
760 def unlink(self):
913 def unlink(self):
761 os.unlink(self)
914 os.unlink(self)
762
915
763
916
764 # --- Links
917 # --- Links
765
918
766 if hasattr(os, 'link'):
919 if hasattr(os, 'link'):
767 def link(self, newpath):
920 def link(self, newpath):
768 """ Create a hard link at 'newpath', pointing to this file. """
921 """ Create a hard link at 'newpath', pointing to this file. """
769 os.link(self, newpath)
922 os.link(self, newpath)
770
923
771 if hasattr(os, 'symlink'):
924 if hasattr(os, 'symlink'):
772 def symlink(self, newlink):
925 def symlink(self, newlink):
773 """ Create a symbolic link at 'newlink', pointing here. """
926 """ Create a symbolic link at 'newlink', pointing here. """
774 os.symlink(self, newlink)
927 os.symlink(self, newlink)
775
928
776 if hasattr(os, 'readlink'):
929 if hasattr(os, 'readlink'):
777 def readlink(self):
930 def readlink(self):
778 """ Return the path to which this symbolic link points.
931 """ Return the path to which this symbolic link points.
779
932
780 The result may be an absolute or a relative path.
933 The result may be an absolute or a relative path.
781 """
934 """
782 return path(os.readlink(self))
935 return self.__class__(os.readlink(self))
783
936
784 def readlinkabs(self):
937 def readlinkabs(self):
785 """ Return the path to which this symbolic link points.
938 """ Return the path to which this symbolic link points.
786
939
787 The result is always an absolute path.
940 The result is always an absolute path.
788 """
941 """
789 p = self.readlink()
942 p = self.readlink()
790 if p.isabs():
943 if p.isabs():
791 return p
944 return p
792 else:
945 else:
793 return (self.parent / p).abspath()
946 return (self.parent / p).abspath()
794
947
795
948
796 # --- High-level functions from shutil
949 # --- High-level functions from shutil
797
950
798 copyfile = shutil.copyfile
951 copyfile = shutil.copyfile
799 copymode = shutil.copymode
952 copymode = shutil.copymode
800 copystat = shutil.copystat
953 copystat = shutil.copystat
801 copy = shutil.copy
954 copy = shutil.copy
802 copy2 = shutil.copy2
955 copy2 = shutil.copy2
803 copytree = shutil.copytree
956 copytree = shutil.copytree
804 if hasattr(shutil, 'move'):
957 if hasattr(shutil, 'move'):
805 move = shutil.move
958 move = shutil.move
806 rmtree = shutil.rmtree
959 rmtree = shutil.rmtree
807
960
808
961
809 # --- Special stuff from os
962 # --- Special stuff from os
810
963
811 if hasattr(os, 'chroot'):
964 if hasattr(os, 'chroot'):
812 def chroot(self):
965 def chroot(self):
813 os.chroot(self)
966 os.chroot(self)
814
967
815 if hasattr(os, 'startfile'):
968 if hasattr(os, 'startfile'):
816 def startfile(self):
969 def startfile(self):
817 os.startfile(self)
970 os.startfile(self)
818
971
@@ -1,5796 +1,5800 b''
1 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2
2
3 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
3 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
4 api: set_crash_handler(), to expose the ability to change the
4 api: set_crash_handler(), to expose the ability to change the
5 internal crash handler.
5 internal crash handler.
6
6
7 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
7 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
8 the various parameters of the crash handler so that apps using
8 the various parameters of the crash handler so that apps using
9 IPython as their engine can customize crash handling. Ipmlemented
9 IPython as their engine can customize crash handling. Ipmlemented
10 at the request of SAGE.
10 at the request of SAGE.
11
11
12 2006-10-14 Ville Vainio <vivainio@gmail.com>
12 2006-10-14 Ville Vainio <vivainio@gmail.com>
13
13
14 * Magic.py, ipython.el: applied first "safe" part of Rocky
14 * Magic.py, ipython.el: applied first "safe" part of Rocky
15 Bernstein's patch set for pydb integration.
15 Bernstein's patch set for pydb integration.
16
16
17 * Magic.py (%unalias, %alias): %store'd aliases can now be
17 * Magic.py (%unalias, %alias): %store'd aliases can now be
18 removed with '%unalias'. %alias w/o args now shows most
18 removed with '%unalias'. %alias w/o args now shows most
19 interesting (stored / manually defined) aliases last
19 interesting (stored / manually defined) aliases last
20 where they catch the eye w/o scrolling.
20 where they catch the eye w/o scrolling.
21
21
22 * Magic.py (%rehashx), ext_rehashdir.py: files with
23 'py' extension are always considered executable, even
24 when not in PATHEXT environment variable.
25
22 2006-10-12 Ville Vainio <vivainio@gmail.com>
26 2006-10-12 Ville Vainio <vivainio@gmail.com>
23
27
24 * jobctrl.py: Add new "jobctrl" extension for spawning background
28 * jobctrl.py: Add new "jobctrl" extension for spawning background
25 processes with "&find /". 'import jobctrl' to try it out. Requires
29 processes with "&find /". 'import jobctrl' to try it out. Requires
26 'subprocess' module, standard in python 2.4+.
30 'subprocess' module, standard in python 2.4+.
27
31
28 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
32 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
29 so if foo -> bar and bar -> baz, then foo -> baz.
33 so if foo -> bar and bar -> baz, then foo -> baz.
30
34
31 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
35 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
32
36
33 * IPython/Magic.py (Magic.parse_options): add a new posix option
37 * IPython/Magic.py (Magic.parse_options): add a new posix option
34 to allow parsing of input args in magics that doesn't strip quotes
38 to allow parsing of input args in magics that doesn't strip quotes
35 (if posix=False). This also closes %timeit bug reported by
39 (if posix=False). This also closes %timeit bug reported by
36 Stefan.
40 Stefan.
37
41
38 2006-10-03 Ville Vainio <vivainio@gmail.com>
42 2006-10-03 Ville Vainio <vivainio@gmail.com>
39
43
40 * iplib.py (raw_input, interact): Return ValueError catching for
44 * iplib.py (raw_input, interact): Return ValueError catching for
41 raw_input. Fixes infinite loop for sys.stdin.close() or
45 raw_input. Fixes infinite loop for sys.stdin.close() or
42 sys.stdout.close().
46 sys.stdout.close().
43
47
44 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
48 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
45
49
46 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
50 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
47 to help in handling doctests. irunner is now pretty useful for
51 to help in handling doctests. irunner is now pretty useful for
48 running standalone scripts and simulate a full interactive session
52 running standalone scripts and simulate a full interactive session
49 in a format that can be then pasted as a doctest.
53 in a format that can be then pasted as a doctest.
50
54
51 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
55 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
52 on top of the default (useless) ones. This also fixes the nasty
56 on top of the default (useless) ones. This also fixes the nasty
53 way in which 2.5's Quitter() exits (reverted [1785]).
57 way in which 2.5's Quitter() exits (reverted [1785]).
54
58
55 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
59 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
56 2.5.
60 2.5.
57
61
58 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
62 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
59 color scheme is updated as well when color scheme is changed
63 color scheme is updated as well when color scheme is changed
60 interactively.
64 interactively.
61
65
62 2006-09-27 Ville Vainio <vivainio@gmail.com>
66 2006-09-27 Ville Vainio <vivainio@gmail.com>
63
67
64 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
68 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
65 infinite loop and just exit. It's a hack, but will do for a while.
69 infinite loop and just exit. It's a hack, but will do for a while.
66
70
67 2006-08-25 Walter Doerwald <walter@livinglogic.de>
71 2006-08-25 Walter Doerwald <walter@livinglogic.de>
68
72
69 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
73 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
70 the constructor, this makes it possible to get a list of only directories
74 the constructor, this makes it possible to get a list of only directories
71 or only files.
75 or only files.
72
76
73 2006-08-12 Ville Vainio <vivainio@gmail.com>
77 2006-08-12 Ville Vainio <vivainio@gmail.com>
74
78
75 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
79 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
76 they broke unittest
80 they broke unittest
77
81
78 2006-08-11 Ville Vainio <vivainio@gmail.com>
82 2006-08-11 Ville Vainio <vivainio@gmail.com>
79
83
80 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
84 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
81 by resolving issue properly, i.e. by inheriting FakeModule
85 by resolving issue properly, i.e. by inheriting FakeModule
82 from types.ModuleType. Pickling ipython interactive data
86 from types.ModuleType. Pickling ipython interactive data
83 should still work as usual (testing appreciated).
87 should still work as usual (testing appreciated).
84
88
85 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
89 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
86
90
87 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
91 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
88 running under python 2.3 with code from 2.4 to fix a bug with
92 running under python 2.3 with code from 2.4 to fix a bug with
89 help(). Reported by the Debian maintainers, Norbert Tretkowski
93 help(). Reported by the Debian maintainers, Norbert Tretkowski
90 <norbert-AT-tretkowski.de> and Alexandre Fayolle
94 <norbert-AT-tretkowski.de> and Alexandre Fayolle
91 <afayolle-AT-debian.org>.
95 <afayolle-AT-debian.org>.
92
96
93 2006-08-04 Walter Doerwald <walter@livinglogic.de>
97 2006-08-04 Walter Doerwald <walter@livinglogic.de>
94
98
95 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
99 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
96 (which was displaying "quit" twice).
100 (which was displaying "quit" twice).
97
101
98 2006-07-28 Walter Doerwald <walter@livinglogic.de>
102 2006-07-28 Walter Doerwald <walter@livinglogic.de>
99
103
100 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
104 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
101 the mode argument).
105 the mode argument).
102
106
103 2006-07-27 Walter Doerwald <walter@livinglogic.de>
107 2006-07-27 Walter Doerwald <walter@livinglogic.de>
104
108
105 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
109 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
106 not running under IPython.
110 not running under IPython.
107
111
108 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
112 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
109 and make it iterable (iterating over the attribute itself). Add two new
113 and make it iterable (iterating over the attribute itself). Add two new
110 magic strings for __xattrs__(): If the string starts with "-", the attribute
114 magic strings for __xattrs__(): If the string starts with "-", the attribute
111 will not be displayed in ibrowse's detail view (but it can still be
115 will not be displayed in ibrowse's detail view (but it can still be
112 iterated over). This makes it possible to add attributes that are large
116 iterated over). This makes it possible to add attributes that are large
113 lists or generator methods to the detail view. Replace magic attribute names
117 lists or generator methods to the detail view. Replace magic attribute names
114 and _attrname() and _getattr() with "descriptors": For each type of magic
118 and _attrname() and _getattr() with "descriptors": For each type of magic
115 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
119 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
116 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
120 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
117 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
121 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
118 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
122 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
119 are still supported.
123 are still supported.
120
124
121 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
125 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
122 fails in ibrowse.fetch(), the exception object is added as the last item
126 fails in ibrowse.fetch(), the exception object is added as the last item
123 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
127 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
124 a generator throws an exception midway through execution.
128 a generator throws an exception midway through execution.
125
129
126 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
130 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
127 encoding into methods.
131 encoding into methods.
128
132
129 2006-07-26 Ville Vainio <vivainio@gmail.com>
133 2006-07-26 Ville Vainio <vivainio@gmail.com>
130
134
131 * iplib.py: history now stores multiline input as single
135 * iplib.py: history now stores multiline input as single
132 history entries. Patch by Jorgen Cederlof.
136 history entries. Patch by Jorgen Cederlof.
133
137
134 2006-07-18 Walter Doerwald <walter@livinglogic.de>
138 2006-07-18 Walter Doerwald <walter@livinglogic.de>
135
139
136 * IPython/Extensions/ibrowse.py: Make cursor visible over
140 * IPython/Extensions/ibrowse.py: Make cursor visible over
137 non existing attributes.
141 non existing attributes.
138
142
139 2006-07-14 Walter Doerwald <walter@livinglogic.de>
143 2006-07-14 Walter Doerwald <walter@livinglogic.de>
140
144
141 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
145 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
142 error output of the running command doesn't mess up the screen.
146 error output of the running command doesn't mess up the screen.
143
147
144 2006-07-13 Walter Doerwald <walter@livinglogic.de>
148 2006-07-13 Walter Doerwald <walter@livinglogic.de>
145
149
146 * IPython/Extensions/ipipe.py (isort): Make isort usable without
150 * IPython/Extensions/ipipe.py (isort): Make isort usable without
147 argument. This sorts the items themselves.
151 argument. This sorts the items themselves.
148
152
149 2006-07-12 Walter Doerwald <walter@livinglogic.de>
153 2006-07-12 Walter Doerwald <walter@livinglogic.de>
150
154
151 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
155 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
152 Compile expression strings into code objects. This should speed
156 Compile expression strings into code objects. This should speed
153 up ifilter and friends somewhat.
157 up ifilter and friends somewhat.
154
158
155 2006-07-08 Ville Vainio <vivainio@gmail.com>
159 2006-07-08 Ville Vainio <vivainio@gmail.com>
156
160
157 * Magic.py: %cpaste now strips > from the beginning of lines
161 * Magic.py: %cpaste now strips > from the beginning of lines
158 to ease pasting quoted code from emails. Contributed by
162 to ease pasting quoted code from emails. Contributed by
159 Stefan van der Walt.
163 Stefan van der Walt.
160
164
161 2006-06-29 Ville Vainio <vivainio@gmail.com>
165 2006-06-29 Ville Vainio <vivainio@gmail.com>
162
166
163 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
167 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
164 mode, patch contributed by Darren Dale. NEEDS TESTING!
168 mode, patch contributed by Darren Dale. NEEDS TESTING!
165
169
166 2006-06-28 Walter Doerwald <walter@livinglogic.de>
170 2006-06-28 Walter Doerwald <walter@livinglogic.de>
167
171
168 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
172 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
169 a blue background. Fix fetching new display rows when the browser
173 a blue background. Fix fetching new display rows when the browser
170 scrolls more than a screenful (e.g. by using the goto command).
174 scrolls more than a screenful (e.g. by using the goto command).
171
175
172 2006-06-27 Ville Vainio <vivainio@gmail.com>
176 2006-06-27 Ville Vainio <vivainio@gmail.com>
173
177
174 * Magic.py (_inspect, _ofind) Apply David Huard's
178 * Magic.py (_inspect, _ofind) Apply David Huard's
175 patch for displaying the correct docstring for 'property'
179 patch for displaying the correct docstring for 'property'
176 attributes.
180 attributes.
177
181
178 2006-06-23 Walter Doerwald <walter@livinglogic.de>
182 2006-06-23 Walter Doerwald <walter@livinglogic.de>
179
183
180 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
184 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
181 commands into the methods implementing them.
185 commands into the methods implementing them.
182
186
183 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
187 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
184
188
185 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
189 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
186 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
190 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
187 autoindent support was authored by Jin Liu.
191 autoindent support was authored by Jin Liu.
188
192
189 2006-06-22 Walter Doerwald <walter@livinglogic.de>
193 2006-06-22 Walter Doerwald <walter@livinglogic.de>
190
194
191 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
195 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
192 for keymaps with a custom class that simplifies handling.
196 for keymaps with a custom class that simplifies handling.
193
197
194 2006-06-19 Walter Doerwald <walter@livinglogic.de>
198 2006-06-19 Walter Doerwald <walter@livinglogic.de>
195
199
196 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
200 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
197 resizing. This requires Python 2.5 to work.
201 resizing. This requires Python 2.5 to work.
198
202
199 2006-06-16 Walter Doerwald <walter@livinglogic.de>
203 2006-06-16 Walter Doerwald <walter@livinglogic.de>
200
204
201 * IPython/Extensions/ibrowse.py: Add two new commands to
205 * IPython/Extensions/ibrowse.py: Add two new commands to
202 ibrowse: "hideattr" (mapped to "h") hides the attribute under
206 ibrowse: "hideattr" (mapped to "h") hides the attribute under
203 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
207 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
204 attributes again. Remapped the help command to "?". Display
208 attributes again. Remapped the help command to "?". Display
205 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
209 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
206 as keys for the "home" and "end" commands. Add three new commands
210 as keys for the "home" and "end" commands. Add three new commands
207 to the input mode for "find" and friends: "delend" (CTRL-K)
211 to the input mode for "find" and friends: "delend" (CTRL-K)
208 deletes to the end of line. "incsearchup" searches upwards in the
212 deletes to the end of line. "incsearchup" searches upwards in the
209 command history for an input that starts with the text before the cursor.
213 command history for an input that starts with the text before the cursor.
210 "incsearchdown" does the same downwards. Removed a bogus mapping of
214 "incsearchdown" does the same downwards. Removed a bogus mapping of
211 the x key to "delete".
215 the x key to "delete".
212
216
213 2006-06-15 Ville Vainio <vivainio@gmail.com>
217 2006-06-15 Ville Vainio <vivainio@gmail.com>
214
218
215 * iplib.py, hooks.py: Added new generate_prompt hook that can be
219 * iplib.py, hooks.py: Added new generate_prompt hook that can be
216 used to create prompts dynamically, instead of the "old" way of
220 used to create prompts dynamically, instead of the "old" way of
217 assigning "magic" strings to prompt_in1 and prompt_in2. The old
221 assigning "magic" strings to prompt_in1 and prompt_in2. The old
218 way still works (it's invoked by the default hook), of course.
222 way still works (it's invoked by the default hook), of course.
219
223
220 * Prompts.py: added generate_output_prompt hook for altering output
224 * Prompts.py: added generate_output_prompt hook for altering output
221 prompt
225 prompt
222
226
223 * Release.py: Changed version string to 0.7.3.svn.
227 * Release.py: Changed version string to 0.7.3.svn.
224
228
225 2006-06-15 Walter Doerwald <walter@livinglogic.de>
229 2006-06-15 Walter Doerwald <walter@livinglogic.de>
226
230
227 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
231 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
228 the call to fetch() always tries to fetch enough data for at least one
232 the call to fetch() always tries to fetch enough data for at least one
229 full screen. This makes it possible to simply call moveto(0,0,True) in
233 full screen. This makes it possible to simply call moveto(0,0,True) in
230 the constructor. Fix typos and removed the obsolete goto attribute.
234 the constructor. Fix typos and removed the obsolete goto attribute.
231
235
232 2006-06-12 Ville Vainio <vivainio@gmail.com>
236 2006-06-12 Ville Vainio <vivainio@gmail.com>
233
237
234 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
238 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
235 allowing $variable interpolation within multiline statements,
239 allowing $variable interpolation within multiline statements,
236 though so far only with "sh" profile for a testing period.
240 though so far only with "sh" profile for a testing period.
237 The patch also enables splitting long commands with \ but it
241 The patch also enables splitting long commands with \ but it
238 doesn't work properly yet.
242 doesn't work properly yet.
239
243
240 2006-06-12 Walter Doerwald <walter@livinglogic.de>
244 2006-06-12 Walter Doerwald <walter@livinglogic.de>
241
245
242 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
246 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
243 input history and the position of the cursor in the input history for
247 input history and the position of the cursor in the input history for
244 the find, findbackwards and goto command.
248 the find, findbackwards and goto command.
245
249
246 2006-06-10 Walter Doerwald <walter@livinglogic.de>
250 2006-06-10 Walter Doerwald <walter@livinglogic.de>
247
251
248 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
252 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
249 implements the basic functionality of browser commands that require
253 implements the basic functionality of browser commands that require
250 input. Reimplement the goto, find and findbackwards commands as
254 input. Reimplement the goto, find and findbackwards commands as
251 subclasses of _CommandInput. Add an input history and keymaps to those
255 subclasses of _CommandInput. Add an input history and keymaps to those
252 commands. Add "\r" as a keyboard shortcut for the enterdefault and
256 commands. Add "\r" as a keyboard shortcut for the enterdefault and
253 execute commands.
257 execute commands.
254
258
255 2006-06-07 Ville Vainio <vivainio@gmail.com>
259 2006-06-07 Ville Vainio <vivainio@gmail.com>
256
260
257 * iplib.py: ipython mybatch.ipy exits ipython immediately after
261 * iplib.py: ipython mybatch.ipy exits ipython immediately after
258 running the batch files instead of leaving the session open.
262 running the batch files instead of leaving the session open.
259
263
260 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
264 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
261
265
262 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
266 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
263 the original fix was incomplete. Patch submitted by W. Maier.
267 the original fix was incomplete. Patch submitted by W. Maier.
264
268
265 2006-06-07 Ville Vainio <vivainio@gmail.com>
269 2006-06-07 Ville Vainio <vivainio@gmail.com>
266
270
267 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
271 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
268 Confirmation prompts can be supressed by 'quiet' option.
272 Confirmation prompts can be supressed by 'quiet' option.
269 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
273 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
270
274
271 2006-06-06 *** Released version 0.7.2
275 2006-06-06 *** Released version 0.7.2
272
276
273 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
277 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
274
278
275 * IPython/Release.py (version): Made 0.7.2 final for release.
279 * IPython/Release.py (version): Made 0.7.2 final for release.
276 Repo tagged and release cut.
280 Repo tagged and release cut.
277
281
278 2006-06-05 Ville Vainio <vivainio@gmail.com>
282 2006-06-05 Ville Vainio <vivainio@gmail.com>
279
283
280 * Magic.py (magic_rehashx): Honor no_alias list earlier in
284 * Magic.py (magic_rehashx): Honor no_alias list earlier in
281 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
285 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
282
286
283 * upgrade_dir.py: try import 'path' module a bit harder
287 * upgrade_dir.py: try import 'path' module a bit harder
284 (for %upgrade)
288 (for %upgrade)
285
289
286 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
290 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
287
291
288 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
292 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
289 instead of looping 20 times.
293 instead of looping 20 times.
290
294
291 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
295 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
292 correctly at initialization time. Bug reported by Krishna Mohan
296 correctly at initialization time. Bug reported by Krishna Mohan
293 Gundu <gkmohan-AT-gmail.com> on the user list.
297 Gundu <gkmohan-AT-gmail.com> on the user list.
294
298
295 * IPython/Release.py (version): Mark 0.7.2 version to start
299 * IPython/Release.py (version): Mark 0.7.2 version to start
296 testing for release on 06/06.
300 testing for release on 06/06.
297
301
298 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
302 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
299
303
300 * scripts/irunner: thin script interface so users don't have to
304 * scripts/irunner: thin script interface so users don't have to
301 find the module and call it as an executable, since modules rarely
305 find the module and call it as an executable, since modules rarely
302 live in people's PATH.
306 live in people's PATH.
303
307
304 * IPython/irunner.py (InteractiveRunner.__init__): added
308 * IPython/irunner.py (InteractiveRunner.__init__): added
305 delaybeforesend attribute to control delays with newer versions of
309 delaybeforesend attribute to control delays with newer versions of
306 pexpect. Thanks to detailed help from pexpect's author, Noah
310 pexpect. Thanks to detailed help from pexpect's author, Noah
307 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
311 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
308 correctly (it works in NoColor mode).
312 correctly (it works in NoColor mode).
309
313
310 * IPython/iplib.py (handle_normal): fix nasty crash reported on
314 * IPython/iplib.py (handle_normal): fix nasty crash reported on
311 SAGE list, from improper log() calls.
315 SAGE list, from improper log() calls.
312
316
313 2006-05-31 Ville Vainio <vivainio@gmail.com>
317 2006-05-31 Ville Vainio <vivainio@gmail.com>
314
318
315 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
319 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
316 with args in parens to work correctly with dirs that have spaces.
320 with args in parens to work correctly with dirs that have spaces.
317
321
318 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
322 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
319
323
320 * IPython/Logger.py (Logger.logstart): add option to log raw input
324 * IPython/Logger.py (Logger.logstart): add option to log raw input
321 instead of the processed one. A -r flag was added to the
325 instead of the processed one. A -r flag was added to the
322 %logstart magic used for controlling logging.
326 %logstart magic used for controlling logging.
323
327
324 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
328 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
325
329
326 * IPython/iplib.py (InteractiveShell.__init__): add check for the
330 * IPython/iplib.py (InteractiveShell.__init__): add check for the
327 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
331 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
328 recognize the option. After a bug report by Will Maier. This
332 recognize the option. After a bug report by Will Maier. This
329 closes #64 (will do it after confirmation from W. Maier).
333 closes #64 (will do it after confirmation from W. Maier).
330
334
331 * IPython/irunner.py: New module to run scripts as if manually
335 * IPython/irunner.py: New module to run scripts as if manually
332 typed into an interactive environment, based on pexpect. After a
336 typed into an interactive environment, based on pexpect. After a
333 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
337 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
334 ipython-user list. Simple unittests in the tests/ directory.
338 ipython-user list. Simple unittests in the tests/ directory.
335
339
336 * tools/release: add Will Maier, OpenBSD port maintainer, to
340 * tools/release: add Will Maier, OpenBSD port maintainer, to
337 recepients list. We are now officially part of the OpenBSD ports:
341 recepients list. We are now officially part of the OpenBSD ports:
338 http://www.openbsd.org/ports.html ! Many thanks to Will for the
342 http://www.openbsd.org/ports.html ! Many thanks to Will for the
339 work.
343 work.
340
344
341 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
345 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
342
346
343 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
347 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
344 so that it doesn't break tkinter apps.
348 so that it doesn't break tkinter apps.
345
349
346 * IPython/iplib.py (_prefilter): fix bug where aliases would
350 * IPython/iplib.py (_prefilter): fix bug where aliases would
347 shadow variables when autocall was fully off. Reported by SAGE
351 shadow variables when autocall was fully off. Reported by SAGE
348 author William Stein.
352 author William Stein.
349
353
350 * IPython/OInspect.py (Inspector.__init__): add a flag to control
354 * IPython/OInspect.py (Inspector.__init__): add a flag to control
351 at what detail level strings are computed when foo? is requested.
355 at what detail level strings are computed when foo? is requested.
352 This allows users to ask for example that the string form of an
356 This allows users to ask for example that the string form of an
353 object is only computed when foo?? is called, or even never, by
357 object is only computed when foo?? is called, or even never, by
354 setting the object_info_string_level >= 2 in the configuration
358 setting the object_info_string_level >= 2 in the configuration
355 file. This new option has been added and documented. After a
359 file. This new option has been added and documented. After a
356 request by SAGE to be able to control the printing of very large
360 request by SAGE to be able to control the printing of very large
357 objects more easily.
361 objects more easily.
358
362
359 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
363 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
360
364
361 * IPython/ipmaker.py (make_IPython): remove the ipython call path
365 * IPython/ipmaker.py (make_IPython): remove the ipython call path
362 from sys.argv, to be 100% consistent with how Python itself works
366 from sys.argv, to be 100% consistent with how Python itself works
363 (as seen for example with python -i file.py). After a bug report
367 (as seen for example with python -i file.py). After a bug report
364 by Jeffrey Collins.
368 by Jeffrey Collins.
365
369
366 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
370 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
367 nasty bug which was preventing custom namespaces with -pylab,
371 nasty bug which was preventing custom namespaces with -pylab,
368 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
372 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
369 compatibility (long gone from mpl).
373 compatibility (long gone from mpl).
370
374
371 * IPython/ipapi.py (make_session): name change: create->make. We
375 * IPython/ipapi.py (make_session): name change: create->make. We
372 use make in other places (ipmaker,...), it's shorter and easier to
376 use make in other places (ipmaker,...), it's shorter and easier to
373 type and say, etc. I'm trying to clean things before 0.7.2 so
377 type and say, etc. I'm trying to clean things before 0.7.2 so
374 that I can keep things stable wrt to ipapi in the chainsaw branch.
378 that I can keep things stable wrt to ipapi in the chainsaw branch.
375
379
376 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
380 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
377 python-mode recognizes our debugger mode. Add support for
381 python-mode recognizes our debugger mode. Add support for
378 autoindent inside (X)emacs. After a patch sent in by Jin Liu
382 autoindent inside (X)emacs. After a patch sent in by Jin Liu
379 <m.liu.jin-AT-gmail.com> originally written by
383 <m.liu.jin-AT-gmail.com> originally written by
380 doxgen-AT-newsmth.net (with minor modifications for xemacs
384 doxgen-AT-newsmth.net (with minor modifications for xemacs
381 compatibility)
385 compatibility)
382
386
383 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
387 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
384 tracebacks when walking the stack so that the stack tracking system
388 tracebacks when walking the stack so that the stack tracking system
385 in emacs' python-mode can identify the frames correctly.
389 in emacs' python-mode can identify the frames correctly.
386
390
387 * IPython/ipmaker.py (make_IPython): make the internal (and
391 * IPython/ipmaker.py (make_IPython): make the internal (and
388 default config) autoedit_syntax value false by default. Too many
392 default config) autoedit_syntax value false by default. Too many
389 users have complained to me (both on and off-list) about problems
393 users have complained to me (both on and off-list) about problems
390 with this option being on by default, so I'm making it default to
394 with this option being on by default, so I'm making it default to
391 off. It can still be enabled by anyone via the usual mechanisms.
395 off. It can still be enabled by anyone via the usual mechanisms.
392
396
393 * IPython/completer.py (Completer.attr_matches): add support for
397 * IPython/completer.py (Completer.attr_matches): add support for
394 PyCrust-style _getAttributeNames magic method. Patch contributed
398 PyCrust-style _getAttributeNames magic method. Patch contributed
395 by <mscott-AT-goldenspud.com>. Closes #50.
399 by <mscott-AT-goldenspud.com>. Closes #50.
396
400
397 * IPython/iplib.py (InteractiveShell.__init__): remove the
401 * IPython/iplib.py (InteractiveShell.__init__): remove the
398 deletion of exit/quit from __builtin__, which can break
402 deletion of exit/quit from __builtin__, which can break
399 third-party tools like the Zope debugging console. The
403 third-party tools like the Zope debugging console. The
400 %exit/%quit magics remain. In general, it's probably a good idea
404 %exit/%quit magics remain. In general, it's probably a good idea
401 not to delete anything from __builtin__, since we never know what
405 not to delete anything from __builtin__, since we never know what
402 that will break. In any case, python now (for 2.5) will support
406 that will break. In any case, python now (for 2.5) will support
403 'real' exit/quit, so this issue is moot. Closes #55.
407 'real' exit/quit, so this issue is moot. Closes #55.
404
408
405 * IPython/genutils.py (with_obj): rename the 'with' function to
409 * IPython/genutils.py (with_obj): rename the 'with' function to
406 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
410 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
407 becomes a language keyword. Closes #53.
411 becomes a language keyword. Closes #53.
408
412
409 * IPython/FakeModule.py (FakeModule.__init__): add a proper
413 * IPython/FakeModule.py (FakeModule.__init__): add a proper
410 __file__ attribute to this so it fools more things into thinking
414 __file__ attribute to this so it fools more things into thinking
411 it is a real module. Closes #59.
415 it is a real module. Closes #59.
412
416
413 * IPython/Magic.py (magic_edit): add -n option to open the editor
417 * IPython/Magic.py (magic_edit): add -n option to open the editor
414 at a specific line number. After a patch by Stefan van der Walt.
418 at a specific line number. After a patch by Stefan van der Walt.
415
419
416 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
420 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
417
421
418 * IPython/iplib.py (edit_syntax_error): fix crash when for some
422 * IPython/iplib.py (edit_syntax_error): fix crash when for some
419 reason the file could not be opened. After automatic crash
423 reason the file could not be opened. After automatic crash
420 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
424 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
421 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
425 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
422 (_should_recompile): Don't fire editor if using %bg, since there
426 (_should_recompile): Don't fire editor if using %bg, since there
423 is no file in the first place. From the same report as above.
427 is no file in the first place. From the same report as above.
424 (raw_input): protect against faulty third-party prefilters. After
428 (raw_input): protect against faulty third-party prefilters. After
425 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
429 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
426 while running under SAGE.
430 while running under SAGE.
427
431
428 2006-05-23 Ville Vainio <vivainio@gmail.com>
432 2006-05-23 Ville Vainio <vivainio@gmail.com>
429
433
430 * ipapi.py: Stripped down ip.to_user_ns() to work only as
434 * ipapi.py: Stripped down ip.to_user_ns() to work only as
431 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
435 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
432 now returns None (again), unless dummy is specifically allowed by
436 now returns None (again), unless dummy is specifically allowed by
433 ipapi.get(allow_dummy=True).
437 ipapi.get(allow_dummy=True).
434
438
435 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
439 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
436
440
437 * IPython: remove all 2.2-compatibility objects and hacks from
441 * IPython: remove all 2.2-compatibility objects and hacks from
438 everywhere, since we only support 2.3 at this point. Docs
442 everywhere, since we only support 2.3 at this point. Docs
439 updated.
443 updated.
440
444
441 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
445 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
442 Anything requiring extra validation can be turned into a Python
446 Anything requiring extra validation can be turned into a Python
443 property in the future. I used a property for the db one b/c
447 property in the future. I used a property for the db one b/c
444 there was a nasty circularity problem with the initialization
448 there was a nasty circularity problem with the initialization
445 order, which right now I don't have time to clean up.
449 order, which right now I don't have time to clean up.
446
450
447 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
451 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
448 another locking bug reported by Jorgen. I'm not 100% sure though,
452 another locking bug reported by Jorgen. I'm not 100% sure though,
449 so more testing is needed...
453 so more testing is needed...
450
454
451 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
455 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
452
456
453 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
457 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
454 local variables from any routine in user code (typically executed
458 local variables from any routine in user code (typically executed
455 with %run) directly into the interactive namespace. Very useful
459 with %run) directly into the interactive namespace. Very useful
456 when doing complex debugging.
460 when doing complex debugging.
457 (IPythonNotRunning): Changed the default None object to a dummy
461 (IPythonNotRunning): Changed the default None object to a dummy
458 whose attributes can be queried as well as called without
462 whose attributes can be queried as well as called without
459 exploding, to ease writing code which works transparently both in
463 exploding, to ease writing code which works transparently both in
460 and out of ipython and uses some of this API.
464 and out of ipython and uses some of this API.
461
465
462 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
466 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
463
467
464 * IPython/hooks.py (result_display): Fix the fact that our display
468 * IPython/hooks.py (result_display): Fix the fact that our display
465 hook was using str() instead of repr(), as the default python
469 hook was using str() instead of repr(), as the default python
466 console does. This had gone unnoticed b/c it only happened if
470 console does. This had gone unnoticed b/c it only happened if
467 %Pprint was off, but the inconsistency was there.
471 %Pprint was off, but the inconsistency was there.
468
472
469 2006-05-15 Ville Vainio <vivainio@gmail.com>
473 2006-05-15 Ville Vainio <vivainio@gmail.com>
470
474
471 * Oinspect.py: Only show docstring for nonexisting/binary files
475 * Oinspect.py: Only show docstring for nonexisting/binary files
472 when doing object??, closing ticket #62
476 when doing object??, closing ticket #62
473
477
474 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
478 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
475
479
476 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
480 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
477 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
481 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
478 was being released in a routine which hadn't checked if it had
482 was being released in a routine which hadn't checked if it had
479 been the one to acquire it.
483 been the one to acquire it.
480
484
481 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
485 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
482
486
483 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
487 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
484
488
485 2006-04-11 Ville Vainio <vivainio@gmail.com>
489 2006-04-11 Ville Vainio <vivainio@gmail.com>
486
490
487 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
491 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
488 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
492 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
489 prefilters, allowing stuff like magics and aliases in the file.
493 prefilters, allowing stuff like magics and aliases in the file.
490
494
491 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
495 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
492 added. Supported now are "%clear in" and "%clear out" (clear input and
496 added. Supported now are "%clear in" and "%clear out" (clear input and
493 output history, respectively). Also fixed CachedOutput.flush to
497 output history, respectively). Also fixed CachedOutput.flush to
494 properly flush the output cache.
498 properly flush the output cache.
495
499
496 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
500 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
497 half-success (and fail explicitly).
501 half-success (and fail explicitly).
498
502
499 2006-03-28 Ville Vainio <vivainio@gmail.com>
503 2006-03-28 Ville Vainio <vivainio@gmail.com>
500
504
501 * iplib.py: Fix quoting of aliases so that only argless ones
505 * iplib.py: Fix quoting of aliases so that only argless ones
502 are quoted
506 are quoted
503
507
504 2006-03-28 Ville Vainio <vivainio@gmail.com>
508 2006-03-28 Ville Vainio <vivainio@gmail.com>
505
509
506 * iplib.py: Quote aliases with spaces in the name.
510 * iplib.py: Quote aliases with spaces in the name.
507 "c:\program files\blah\bin" is now legal alias target.
511 "c:\program files\blah\bin" is now legal alias target.
508
512
509 * ext_rehashdir.py: Space no longer allowed as arg
513 * ext_rehashdir.py: Space no longer allowed as arg
510 separator, since space is legal in path names.
514 separator, since space is legal in path names.
511
515
512 2006-03-16 Ville Vainio <vivainio@gmail.com>
516 2006-03-16 Ville Vainio <vivainio@gmail.com>
513
517
514 * upgrade_dir.py: Take path.py from Extensions, correcting
518 * upgrade_dir.py: Take path.py from Extensions, correcting
515 %upgrade magic
519 %upgrade magic
516
520
517 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
521 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
518
522
519 * hooks.py: Only enclose editor binary in quotes if legal and
523 * hooks.py: Only enclose editor binary in quotes if legal and
520 necessary (space in the name, and is an existing file). Fixes a bug
524 necessary (space in the name, and is an existing file). Fixes a bug
521 reported by Zachary Pincus.
525 reported by Zachary Pincus.
522
526
523 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
527 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
524
528
525 * Manual: thanks to a tip on proper color handling for Emacs, by
529 * Manual: thanks to a tip on proper color handling for Emacs, by
526 Eric J Haywiser <ejh1-AT-MIT.EDU>.
530 Eric J Haywiser <ejh1-AT-MIT.EDU>.
527
531
528 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
532 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
529 by applying the provided patch. Thanks to Liu Jin
533 by applying the provided patch. Thanks to Liu Jin
530 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
534 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
531 XEmacs/Linux, I'm trusting the submitter that it actually helps
535 XEmacs/Linux, I'm trusting the submitter that it actually helps
532 under win32/GNU Emacs. Will revisit if any problems are reported.
536 under win32/GNU Emacs. Will revisit if any problems are reported.
533
537
534 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
538 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
535
539
536 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
540 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
537 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
541 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
538
542
539 2006-03-12 Ville Vainio <vivainio@gmail.com>
543 2006-03-12 Ville Vainio <vivainio@gmail.com>
540
544
541 * Magic.py (magic_timeit): Added %timeit magic, contributed by
545 * Magic.py (magic_timeit): Added %timeit magic, contributed by
542 Torsten Marek.
546 Torsten Marek.
543
547
544 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
548 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
545
549
546 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
550 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
547 line ranges works again.
551 line ranges works again.
548
552
549 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
553 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
550
554
551 * IPython/iplib.py (showtraceback): add back sys.last_traceback
555 * IPython/iplib.py (showtraceback): add back sys.last_traceback
552 and friends, after a discussion with Zach Pincus on ipython-user.
556 and friends, after a discussion with Zach Pincus on ipython-user.
553 I'm not 100% sure, but after thinking about it quite a bit, it may
557 I'm not 100% sure, but after thinking about it quite a bit, it may
554 be OK. Testing with the multithreaded shells didn't reveal any
558 be OK. Testing with the multithreaded shells didn't reveal any
555 problems, but let's keep an eye out.
559 problems, but let's keep an eye out.
556
560
557 In the process, I fixed a few things which were calling
561 In the process, I fixed a few things which were calling
558 self.InteractiveTB() directly (like safe_execfile), which is a
562 self.InteractiveTB() directly (like safe_execfile), which is a
559 mistake: ALL exception reporting should be done by calling
563 mistake: ALL exception reporting should be done by calling
560 self.showtraceback(), which handles state and tab-completion and
564 self.showtraceback(), which handles state and tab-completion and
561 more.
565 more.
562
566
563 2006-03-01 Ville Vainio <vivainio@gmail.com>
567 2006-03-01 Ville Vainio <vivainio@gmail.com>
564
568
565 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
569 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
566 To use, do "from ipipe import *".
570 To use, do "from ipipe import *".
567
571
568 2006-02-24 Ville Vainio <vivainio@gmail.com>
572 2006-02-24 Ville Vainio <vivainio@gmail.com>
569
573
570 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
574 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
571 "cleanly" and safely than the older upgrade mechanism.
575 "cleanly" and safely than the older upgrade mechanism.
572
576
573 2006-02-21 Ville Vainio <vivainio@gmail.com>
577 2006-02-21 Ville Vainio <vivainio@gmail.com>
574
578
575 * Magic.py: %save works again.
579 * Magic.py: %save works again.
576
580
577 2006-02-15 Ville Vainio <vivainio@gmail.com>
581 2006-02-15 Ville Vainio <vivainio@gmail.com>
578
582
579 * Magic.py: %Pprint works again
583 * Magic.py: %Pprint works again
580
584
581 * Extensions/ipy_sane_defaults.py: Provide everything provided
585 * Extensions/ipy_sane_defaults.py: Provide everything provided
582 in default ipythonrc, to make it possible to have a completely empty
586 in default ipythonrc, to make it possible to have a completely empty
583 ipythonrc (and thus completely rc-file free configuration)
587 ipythonrc (and thus completely rc-file free configuration)
584
588
585 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
589 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
586
590
587 * IPython/hooks.py (editor): quote the call to the editor command,
591 * IPython/hooks.py (editor): quote the call to the editor command,
588 to allow commands with spaces in them. Problem noted by watching
592 to allow commands with spaces in them. Problem noted by watching
589 Ian Oswald's video about textpad under win32 at
593 Ian Oswald's video about textpad under win32 at
590 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
594 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
591
595
592 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
596 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
593 describing magics (we haven't used @ for a loong time).
597 describing magics (we haven't used @ for a loong time).
594
598
595 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
599 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
596 contributed by marienz to close
600 contributed by marienz to close
597 http://www.scipy.net/roundup/ipython/issue53.
601 http://www.scipy.net/roundup/ipython/issue53.
598
602
599 2006-02-10 Ville Vainio <vivainio@gmail.com>
603 2006-02-10 Ville Vainio <vivainio@gmail.com>
600
604
601 * genutils.py: getoutput now works in win32 too
605 * genutils.py: getoutput now works in win32 too
602
606
603 * completer.py: alias and magic completion only invoked
607 * completer.py: alias and magic completion only invoked
604 at the first "item" in the line, to avoid "cd %store"
608 at the first "item" in the line, to avoid "cd %store"
605 nonsense.
609 nonsense.
606
610
607 2006-02-09 Ville Vainio <vivainio@gmail.com>
611 2006-02-09 Ville Vainio <vivainio@gmail.com>
608
612
609 * test/*: Added a unit testing framework (finally).
613 * test/*: Added a unit testing framework (finally).
610 '%run runtests.py' to run test_*.
614 '%run runtests.py' to run test_*.
611
615
612 * ipapi.py: Exposed runlines and set_custom_exc
616 * ipapi.py: Exposed runlines and set_custom_exc
613
617
614 2006-02-07 Ville Vainio <vivainio@gmail.com>
618 2006-02-07 Ville Vainio <vivainio@gmail.com>
615
619
616 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
620 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
617 instead use "f(1 2)" as before.
621 instead use "f(1 2)" as before.
618
622
619 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
623 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
620
624
621 * IPython/demo.py (IPythonDemo): Add new classes to the demo
625 * IPython/demo.py (IPythonDemo): Add new classes to the demo
622 facilities, for demos processed by the IPython input filter
626 facilities, for demos processed by the IPython input filter
623 (IPythonDemo), and for running a script one-line-at-a-time as a
627 (IPythonDemo), and for running a script one-line-at-a-time as a
624 demo, both for pure Python (LineDemo) and for IPython-processed
628 demo, both for pure Python (LineDemo) and for IPython-processed
625 input (IPythonLineDemo). After a request by Dave Kohel, from the
629 input (IPythonLineDemo). After a request by Dave Kohel, from the
626 SAGE team.
630 SAGE team.
627 (Demo.edit): added an edit() method to the demo objects, to edit
631 (Demo.edit): added an edit() method to the demo objects, to edit
628 the in-memory copy of the last executed block.
632 the in-memory copy of the last executed block.
629
633
630 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
634 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
631 processing to %edit, %macro and %save. These commands can now be
635 processing to %edit, %macro and %save. These commands can now be
632 invoked on the unprocessed input as it was typed by the user
636 invoked on the unprocessed input as it was typed by the user
633 (without any prefilters applied). After requests by the SAGE team
637 (without any prefilters applied). After requests by the SAGE team
634 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
638 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
635
639
636 2006-02-01 Ville Vainio <vivainio@gmail.com>
640 2006-02-01 Ville Vainio <vivainio@gmail.com>
637
641
638 * setup.py, eggsetup.py: easy_install ipython==dev works
642 * setup.py, eggsetup.py: easy_install ipython==dev works
639 correctly now (on Linux)
643 correctly now (on Linux)
640
644
641 * ipy_user_conf,ipmaker: user config changes, removed spurious
645 * ipy_user_conf,ipmaker: user config changes, removed spurious
642 warnings
646 warnings
643
647
644 * iplib: if rc.banner is string, use it as is.
648 * iplib: if rc.banner is string, use it as is.
645
649
646 * Magic: %pycat accepts a string argument and pages it's contents.
650 * Magic: %pycat accepts a string argument and pages it's contents.
647
651
648
652
649 2006-01-30 Ville Vainio <vivainio@gmail.com>
653 2006-01-30 Ville Vainio <vivainio@gmail.com>
650
654
651 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
655 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
652 Now %store and bookmarks work through PickleShare, meaning that
656 Now %store and bookmarks work through PickleShare, meaning that
653 concurrent access is possible and all ipython sessions see the
657 concurrent access is possible and all ipython sessions see the
654 same database situation all the time, instead of snapshot of
658 same database situation all the time, instead of snapshot of
655 the situation when the session was started. Hence, %bookmark
659 the situation when the session was started. Hence, %bookmark
656 results are immediately accessible from othes sessions. The database
660 results are immediately accessible from othes sessions. The database
657 is also available for use by user extensions. See:
661 is also available for use by user extensions. See:
658 http://www.python.org/pypi/pickleshare
662 http://www.python.org/pypi/pickleshare
659
663
660 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
664 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
661
665
662 * aliases can now be %store'd
666 * aliases can now be %store'd
663
667
664 * path.py moved to Extensions so that pickleshare does not need
668 * path.py moved to Extensions so that pickleshare does not need
665 IPython-specific import. Extensions added to pythonpath right
669 IPython-specific import. Extensions added to pythonpath right
666 at __init__.
670 at __init__.
667
671
668 * iplib.py: ipalias deprecated/redundant; aliases are converted and
672 * iplib.py: ipalias deprecated/redundant; aliases are converted and
669 called with _ip.system and the pre-transformed command string.
673 called with _ip.system and the pre-transformed command string.
670
674
671 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
675 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
672
676
673 * IPython/iplib.py (interact): Fix that we were not catching
677 * IPython/iplib.py (interact): Fix that we were not catching
674 KeyboardInterrupt exceptions properly. I'm not quite sure why the
678 KeyboardInterrupt exceptions properly. I'm not quite sure why the
675 logic here had to change, but it's fixed now.
679 logic here had to change, but it's fixed now.
676
680
677 2006-01-29 Ville Vainio <vivainio@gmail.com>
681 2006-01-29 Ville Vainio <vivainio@gmail.com>
678
682
679 * iplib.py: Try to import pyreadline on Windows.
683 * iplib.py: Try to import pyreadline on Windows.
680
684
681 2006-01-27 Ville Vainio <vivainio@gmail.com>
685 2006-01-27 Ville Vainio <vivainio@gmail.com>
682
686
683 * iplib.py: Expose ipapi as _ip in builtin namespace.
687 * iplib.py: Expose ipapi as _ip in builtin namespace.
684 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
688 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
685 and ip_set_hook (-> _ip.set_hook) redundant. % and !
689 and ip_set_hook (-> _ip.set_hook) redundant. % and !
686 syntax now produce _ip.* variant of the commands.
690 syntax now produce _ip.* variant of the commands.
687
691
688 * "_ip.options().autoedit_syntax = 2" automatically throws
692 * "_ip.options().autoedit_syntax = 2" automatically throws
689 user to editor for syntax error correction without prompting.
693 user to editor for syntax error correction without prompting.
690
694
691 2006-01-27 Ville Vainio <vivainio@gmail.com>
695 2006-01-27 Ville Vainio <vivainio@gmail.com>
692
696
693 * ipmaker.py: Give "realistic" sys.argv for scripts (without
697 * ipmaker.py: Give "realistic" sys.argv for scripts (without
694 'ipython' at argv[0]) executed through command line.
698 'ipython' at argv[0]) executed through command line.
695 NOTE: this DEPRECATES calling ipython with multiple scripts
699 NOTE: this DEPRECATES calling ipython with multiple scripts
696 ("ipython a.py b.py c.py")
700 ("ipython a.py b.py c.py")
697
701
698 * iplib.py, hooks.py: Added configurable input prefilter,
702 * iplib.py, hooks.py: Added configurable input prefilter,
699 named 'input_prefilter'. See ext_rescapture.py for example
703 named 'input_prefilter'. See ext_rescapture.py for example
700 usage.
704 usage.
701
705
702 * ext_rescapture.py, Magic.py: Better system command output capture
706 * ext_rescapture.py, Magic.py: Better system command output capture
703 through 'var = !ls' (deprecates user-visible %sc). Same notation
707 through 'var = !ls' (deprecates user-visible %sc). Same notation
704 applies for magics, 'var = %alias' assigns alias list to var.
708 applies for magics, 'var = %alias' assigns alias list to var.
705
709
706 * ipapi.py: added meta() for accessing extension-usable data store.
710 * ipapi.py: added meta() for accessing extension-usable data store.
707
711
708 * iplib.py: added InteractiveShell.getapi(). New magics should be
712 * iplib.py: added InteractiveShell.getapi(). New magics should be
709 written doing self.getapi() instead of using the shell directly.
713 written doing self.getapi() instead of using the shell directly.
710
714
711 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
715 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
712 %store foo >> ~/myfoo.txt to store variables to files (in clean
716 %store foo >> ~/myfoo.txt to store variables to files (in clean
713 textual form, not a restorable pickle).
717 textual form, not a restorable pickle).
714
718
715 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
719 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
716
720
717 * usage.py, Magic.py: added %quickref
721 * usage.py, Magic.py: added %quickref
718
722
719 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
723 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
720
724
721 * GetoptErrors when invoking magics etc. with wrong args
725 * GetoptErrors when invoking magics etc. with wrong args
722 are now more helpful:
726 are now more helpful:
723 GetoptError: option -l not recognized (allowed: "qb" )
727 GetoptError: option -l not recognized (allowed: "qb" )
724
728
725 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
729 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
726
730
727 * IPython/demo.py (Demo.show): Flush stdout after each block, so
731 * IPython/demo.py (Demo.show): Flush stdout after each block, so
728 computationally intensive blocks don't appear to stall the demo.
732 computationally intensive blocks don't appear to stall the demo.
729
733
730 2006-01-24 Ville Vainio <vivainio@gmail.com>
734 2006-01-24 Ville Vainio <vivainio@gmail.com>
731
735
732 * iplib.py, hooks.py: 'result_display' hook can return a non-None
736 * iplib.py, hooks.py: 'result_display' hook can return a non-None
733 value to manipulate resulting history entry.
737 value to manipulate resulting history entry.
734
738
735 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
739 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
736 to instance methods of IPApi class, to make extending an embedded
740 to instance methods of IPApi class, to make extending an embedded
737 IPython feasible. See ext_rehashdir.py for example usage.
741 IPython feasible. See ext_rehashdir.py for example usage.
738
742
739 * Merged 1071-1076 from branches/0.7.1
743 * Merged 1071-1076 from branches/0.7.1
740
744
741
745
742 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
746 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
743
747
744 * tools/release (daystamp): Fix build tools to use the new
748 * tools/release (daystamp): Fix build tools to use the new
745 eggsetup.py script to build lightweight eggs.
749 eggsetup.py script to build lightweight eggs.
746
750
747 * Applied changesets 1062 and 1064 before 0.7.1 release.
751 * Applied changesets 1062 and 1064 before 0.7.1 release.
748
752
749 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
753 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
750 see the raw input history (without conversions like %ls ->
754 see the raw input history (without conversions like %ls ->
751 ipmagic("ls")). After a request from W. Stein, SAGE
755 ipmagic("ls")). After a request from W. Stein, SAGE
752 (http://modular.ucsd.edu/sage) developer. This information is
756 (http://modular.ucsd.edu/sage) developer. This information is
753 stored in the input_hist_raw attribute of the IPython instance, so
757 stored in the input_hist_raw attribute of the IPython instance, so
754 developers can access it if needed (it's an InputList instance).
758 developers can access it if needed (it's an InputList instance).
755
759
756 * Versionstring = 0.7.2.svn
760 * Versionstring = 0.7.2.svn
757
761
758 * eggsetup.py: A separate script for constructing eggs, creates
762 * eggsetup.py: A separate script for constructing eggs, creates
759 proper launch scripts even on Windows (an .exe file in
763 proper launch scripts even on Windows (an .exe file in
760 \python24\scripts).
764 \python24\scripts).
761
765
762 * ipapi.py: launch_new_instance, launch entry point needed for the
766 * ipapi.py: launch_new_instance, launch entry point needed for the
763 egg.
767 egg.
764
768
765 2006-01-23 Ville Vainio <vivainio@gmail.com>
769 2006-01-23 Ville Vainio <vivainio@gmail.com>
766
770
767 * Added %cpaste magic for pasting python code
771 * Added %cpaste magic for pasting python code
768
772
769 2006-01-22 Ville Vainio <vivainio@gmail.com>
773 2006-01-22 Ville Vainio <vivainio@gmail.com>
770
774
771 * Merge from branches/0.7.1 into trunk, revs 1052-1057
775 * Merge from branches/0.7.1 into trunk, revs 1052-1057
772
776
773 * Versionstring = 0.7.2.svn
777 * Versionstring = 0.7.2.svn
774
778
775 * eggsetup.py: A separate script for constructing eggs, creates
779 * eggsetup.py: A separate script for constructing eggs, creates
776 proper launch scripts even on Windows (an .exe file in
780 proper launch scripts even on Windows (an .exe file in
777 \python24\scripts).
781 \python24\scripts).
778
782
779 * ipapi.py: launch_new_instance, launch entry point needed for the
783 * ipapi.py: launch_new_instance, launch entry point needed for the
780 egg.
784 egg.
781
785
782 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
786 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
783
787
784 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
788 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
785 %pfile foo would print the file for foo even if it was a binary.
789 %pfile foo would print the file for foo even if it was a binary.
786 Now, extensions '.so' and '.dll' are skipped.
790 Now, extensions '.so' and '.dll' are skipped.
787
791
788 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
792 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
789 bug, where macros would fail in all threaded modes. I'm not 100%
793 bug, where macros would fail in all threaded modes. I'm not 100%
790 sure, so I'm going to put out an rc instead of making a release
794 sure, so I'm going to put out an rc instead of making a release
791 today, and wait for feedback for at least a few days.
795 today, and wait for feedback for at least a few days.
792
796
793 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
797 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
794 it...) the handling of pasting external code with autoindent on.
798 it...) the handling of pasting external code with autoindent on.
795 To get out of a multiline input, the rule will appear for most
799 To get out of a multiline input, the rule will appear for most
796 users unchanged: two blank lines or change the indent level
800 users unchanged: two blank lines or change the indent level
797 proposed by IPython. But there is a twist now: you can
801 proposed by IPython. But there is a twist now: you can
798 add/subtract only *one or two spaces*. If you add/subtract three
802 add/subtract only *one or two spaces*. If you add/subtract three
799 or more (unless you completely delete the line), IPython will
803 or more (unless you completely delete the line), IPython will
800 accept that line, and you'll need to enter a second one of pure
804 accept that line, and you'll need to enter a second one of pure
801 whitespace. I know it sounds complicated, but I can't find a
805 whitespace. I know it sounds complicated, but I can't find a
802 different solution that covers all the cases, with the right
806 different solution that covers all the cases, with the right
803 heuristics. Hopefully in actual use, nobody will really notice
807 heuristics. Hopefully in actual use, nobody will really notice
804 all these strange rules and things will 'just work'.
808 all these strange rules and things will 'just work'.
805
809
806 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
810 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
807
811
808 * IPython/iplib.py (interact): catch exceptions which can be
812 * IPython/iplib.py (interact): catch exceptions which can be
809 triggered asynchronously by signal handlers. Thanks to an
813 triggered asynchronously by signal handlers. Thanks to an
810 automatic crash report, submitted by Colin Kingsley
814 automatic crash report, submitted by Colin Kingsley
811 <tercel-AT-gentoo.org>.
815 <tercel-AT-gentoo.org>.
812
816
813 2006-01-20 Ville Vainio <vivainio@gmail.com>
817 2006-01-20 Ville Vainio <vivainio@gmail.com>
814
818
815 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
819 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
816 (%rehashdir, very useful, try it out) of how to extend ipython
820 (%rehashdir, very useful, try it out) of how to extend ipython
817 with new magics. Also added Extensions dir to pythonpath to make
821 with new magics. Also added Extensions dir to pythonpath to make
818 importing extensions easy.
822 importing extensions easy.
819
823
820 * %store now complains when trying to store interactively declared
824 * %store now complains when trying to store interactively declared
821 classes / instances of those classes.
825 classes / instances of those classes.
822
826
823 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
827 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
824 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
828 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
825 if they exist, and ipy_user_conf.py with some defaults is created for
829 if they exist, and ipy_user_conf.py with some defaults is created for
826 the user.
830 the user.
827
831
828 * Startup rehashing done by the config file, not InterpreterExec.
832 * Startup rehashing done by the config file, not InterpreterExec.
829 This means system commands are available even without selecting the
833 This means system commands are available even without selecting the
830 pysh profile. It's the sensible default after all.
834 pysh profile. It's the sensible default after all.
831
835
832 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
836 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
833
837
834 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
838 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
835 multiline code with autoindent on working. But I am really not
839 multiline code with autoindent on working. But I am really not
836 sure, so this needs more testing. Will commit a debug-enabled
840 sure, so this needs more testing. Will commit a debug-enabled
837 version for now, while I test it some more, so that Ville and
841 version for now, while I test it some more, so that Ville and
838 others may also catch any problems. Also made
842 others may also catch any problems. Also made
839 self.indent_current_str() a method, to ensure that there's no
843 self.indent_current_str() a method, to ensure that there's no
840 chance of the indent space count and the corresponding string
844 chance of the indent space count and the corresponding string
841 falling out of sync. All code needing the string should just call
845 falling out of sync. All code needing the string should just call
842 the method.
846 the method.
843
847
844 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
848 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
845
849
846 * IPython/Magic.py (magic_edit): fix check for when users don't
850 * IPython/Magic.py (magic_edit): fix check for when users don't
847 save their output files, the try/except was in the wrong section.
851 save their output files, the try/except was in the wrong section.
848
852
849 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
853 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
850
854
851 * IPython/Magic.py (magic_run): fix __file__ global missing from
855 * IPython/Magic.py (magic_run): fix __file__ global missing from
852 script's namespace when executed via %run. After a report by
856 script's namespace when executed via %run. After a report by
853 Vivian.
857 Vivian.
854
858
855 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
859 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
856 when using python 2.4. The parent constructor changed in 2.4, and
860 when using python 2.4. The parent constructor changed in 2.4, and
857 we need to track it directly (we can't call it, as it messes up
861 we need to track it directly (we can't call it, as it messes up
858 readline and tab-completion inside our pdb would stop working).
862 readline and tab-completion inside our pdb would stop working).
859 After a bug report by R. Bernstein <rocky-AT-panix.com>.
863 After a bug report by R. Bernstein <rocky-AT-panix.com>.
860
864
861 2006-01-16 Ville Vainio <vivainio@gmail.com>
865 2006-01-16 Ville Vainio <vivainio@gmail.com>
862
866
863 * Ipython/magic.py: Reverted back to old %edit functionality
867 * Ipython/magic.py: Reverted back to old %edit functionality
864 that returns file contents on exit.
868 that returns file contents on exit.
865
869
866 * IPython/path.py: Added Jason Orendorff's "path" module to
870 * IPython/path.py: Added Jason Orendorff's "path" module to
867 IPython tree, http://www.jorendorff.com/articles/python/path/.
871 IPython tree, http://www.jorendorff.com/articles/python/path/.
868 You can get path objects conveniently through %sc, and !!, e.g.:
872 You can get path objects conveniently through %sc, and !!, e.g.:
869 sc files=ls
873 sc files=ls
870 for p in files.paths: # or files.p
874 for p in files.paths: # or files.p
871 print p,p.mtime
875 print p,p.mtime
872
876
873 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
877 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
874 now work again without considering the exclusion regexp -
878 now work again without considering the exclusion regexp -
875 hence, things like ',foo my/path' turn to 'foo("my/path")'
879 hence, things like ',foo my/path' turn to 'foo("my/path")'
876 instead of syntax error.
880 instead of syntax error.
877
881
878
882
879 2006-01-14 Ville Vainio <vivainio@gmail.com>
883 2006-01-14 Ville Vainio <vivainio@gmail.com>
880
884
881 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
885 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
882 ipapi decorators for python 2.4 users, options() provides access to rc
886 ipapi decorators for python 2.4 users, options() provides access to rc
883 data.
887 data.
884
888
885 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
889 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
886 as path separators (even on Linux ;-). Space character after
890 as path separators (even on Linux ;-). Space character after
887 backslash (as yielded by tab completer) is still space;
891 backslash (as yielded by tab completer) is still space;
888 "%cd long\ name" works as expected.
892 "%cd long\ name" works as expected.
889
893
890 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
894 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
891 as "chain of command", with priority. API stays the same,
895 as "chain of command", with priority. API stays the same,
892 TryNext exception raised by a hook function signals that
896 TryNext exception raised by a hook function signals that
893 current hook failed and next hook should try handling it, as
897 current hook failed and next hook should try handling it, as
894 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
898 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
895 requested configurable display hook, which is now implemented.
899 requested configurable display hook, which is now implemented.
896
900
897 2006-01-13 Ville Vainio <vivainio@gmail.com>
901 2006-01-13 Ville Vainio <vivainio@gmail.com>
898
902
899 * IPython/platutils*.py: platform specific utility functions,
903 * IPython/platutils*.py: platform specific utility functions,
900 so far only set_term_title is implemented (change terminal
904 so far only set_term_title is implemented (change terminal
901 label in windowing systems). %cd now changes the title to
905 label in windowing systems). %cd now changes the title to
902 current dir.
906 current dir.
903
907
904 * IPython/Release.py: Added myself to "authors" list,
908 * IPython/Release.py: Added myself to "authors" list,
905 had to create new files.
909 had to create new files.
906
910
907 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
911 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
908 shell escape; not a known bug but had potential to be one in the
912 shell escape; not a known bug but had potential to be one in the
909 future.
913 future.
910
914
911 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
915 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
912 extension API for IPython! See the module for usage example. Fix
916 extension API for IPython! See the module for usage example. Fix
913 OInspect for docstring-less magic functions.
917 OInspect for docstring-less magic functions.
914
918
915
919
916 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
920 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
917
921
918 * IPython/iplib.py (raw_input): temporarily deactivate all
922 * IPython/iplib.py (raw_input): temporarily deactivate all
919 attempts at allowing pasting of code with autoindent on. It
923 attempts at allowing pasting of code with autoindent on. It
920 introduced bugs (reported by Prabhu) and I can't seem to find a
924 introduced bugs (reported by Prabhu) and I can't seem to find a
921 robust combination which works in all cases. Will have to revisit
925 robust combination which works in all cases. Will have to revisit
922 later.
926 later.
923
927
924 * IPython/genutils.py: remove isspace() function. We've dropped
928 * IPython/genutils.py: remove isspace() function. We've dropped
925 2.2 compatibility, so it's OK to use the string method.
929 2.2 compatibility, so it's OK to use the string method.
926
930
927 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
931 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
928
932
929 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
933 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
930 matching what NOT to autocall on, to include all python binary
934 matching what NOT to autocall on, to include all python binary
931 operators (including things like 'and', 'or', 'is' and 'in').
935 operators (including things like 'and', 'or', 'is' and 'in').
932 Prompted by a bug report on 'foo & bar', but I realized we had
936 Prompted by a bug report on 'foo & bar', but I realized we had
933 many more potential bug cases with other operators. The regexp is
937 many more potential bug cases with other operators. The regexp is
934 self.re_exclude_auto, it's fairly commented.
938 self.re_exclude_auto, it's fairly commented.
935
939
936 2006-01-12 Ville Vainio <vivainio@gmail.com>
940 2006-01-12 Ville Vainio <vivainio@gmail.com>
937
941
938 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
942 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
939 Prettified and hardened string/backslash quoting with ipsystem(),
943 Prettified and hardened string/backslash quoting with ipsystem(),
940 ipalias() and ipmagic(). Now even \ characters are passed to
944 ipalias() and ipmagic(). Now even \ characters are passed to
941 %magics, !shell escapes and aliases exactly as they are in the
945 %magics, !shell escapes and aliases exactly as they are in the
942 ipython command line. Should improve backslash experience,
946 ipython command line. Should improve backslash experience,
943 particularly in Windows (path delimiter for some commands that
947 particularly in Windows (path delimiter for some commands that
944 won't understand '/'), but Unix benefits as well (regexps). %cd
948 won't understand '/'), but Unix benefits as well (regexps). %cd
945 magic still doesn't support backslash path delimiters, though. Also
949 magic still doesn't support backslash path delimiters, though. Also
946 deleted all pretense of supporting multiline command strings in
950 deleted all pretense of supporting multiline command strings in
947 !system or %magic commands. Thanks to Jerry McRae for suggestions.
951 !system or %magic commands. Thanks to Jerry McRae for suggestions.
948
952
949 * doc/build_doc_instructions.txt added. Documentation on how to
953 * doc/build_doc_instructions.txt added. Documentation on how to
950 use doc/update_manual.py, added yesterday. Both files contributed
954 use doc/update_manual.py, added yesterday. Both files contributed
951 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
955 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
952 doc/*.sh for deprecation at a later date.
956 doc/*.sh for deprecation at a later date.
953
957
954 * /ipython.py Added ipython.py to root directory for
958 * /ipython.py Added ipython.py to root directory for
955 zero-installation (tar xzvf ipython.tgz; cd ipython; python
959 zero-installation (tar xzvf ipython.tgz; cd ipython; python
956 ipython.py) and development convenience (no need to keep doing
960 ipython.py) and development convenience (no need to keep doing
957 "setup.py install" between changes).
961 "setup.py install" between changes).
958
962
959 * Made ! and !! shell escapes work (again) in multiline expressions:
963 * Made ! and !! shell escapes work (again) in multiline expressions:
960 if 1:
964 if 1:
961 !ls
965 !ls
962 !!ls
966 !!ls
963
967
964 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
968 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
965
969
966 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
970 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
967 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
971 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
968 module in case-insensitive installation. Was causing crashes
972 module in case-insensitive installation. Was causing crashes
969 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
973 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
970
974
971 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
975 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
972 <marienz-AT-gentoo.org>, closes
976 <marienz-AT-gentoo.org>, closes
973 http://www.scipy.net/roundup/ipython/issue51.
977 http://www.scipy.net/roundup/ipython/issue51.
974
978
975 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
979 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
976
980
977 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
981 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
978 problem of excessive CPU usage under *nix and keyboard lag under
982 problem of excessive CPU usage under *nix and keyboard lag under
979 win32.
983 win32.
980
984
981 2006-01-10 *** Released version 0.7.0
985 2006-01-10 *** Released version 0.7.0
982
986
983 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
987 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
984
988
985 * IPython/Release.py (revision): tag version number to 0.7.0,
989 * IPython/Release.py (revision): tag version number to 0.7.0,
986 ready for release.
990 ready for release.
987
991
988 * IPython/Magic.py (magic_edit): Add print statement to %edit so
992 * IPython/Magic.py (magic_edit): Add print statement to %edit so
989 it informs the user of the name of the temp. file used. This can
993 it informs the user of the name of the temp. file used. This can
990 help if you decide later to reuse that same file, so you know
994 help if you decide later to reuse that same file, so you know
991 where to copy the info from.
995 where to copy the info from.
992
996
993 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
997 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
994
998
995 * setup_bdist_egg.py: little script to build an egg. Added
999 * setup_bdist_egg.py: little script to build an egg. Added
996 support in the release tools as well.
1000 support in the release tools as well.
997
1001
998 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1002 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
999
1003
1000 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1004 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1001 version selection (new -wxversion command line and ipythonrc
1005 version selection (new -wxversion command line and ipythonrc
1002 parameter). Patch contributed by Arnd Baecker
1006 parameter). Patch contributed by Arnd Baecker
1003 <arnd.baecker-AT-web.de>.
1007 <arnd.baecker-AT-web.de>.
1004
1008
1005 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1009 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1006 embedded instances, for variables defined at the interactive
1010 embedded instances, for variables defined at the interactive
1007 prompt of the embedded ipython. Reported by Arnd.
1011 prompt of the embedded ipython. Reported by Arnd.
1008
1012
1009 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1013 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1010 it can be used as a (stateful) toggle, or with a direct parameter.
1014 it can be used as a (stateful) toggle, or with a direct parameter.
1011
1015
1012 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1016 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1013 could be triggered in certain cases and cause the traceback
1017 could be triggered in certain cases and cause the traceback
1014 printer not to work.
1018 printer not to work.
1015
1019
1016 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1020 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1017
1021
1018 * IPython/iplib.py (_should_recompile): Small fix, closes
1022 * IPython/iplib.py (_should_recompile): Small fix, closes
1019 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1023 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1020
1024
1021 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1025 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1022
1026
1023 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1027 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1024 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1028 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1025 Moad for help with tracking it down.
1029 Moad for help with tracking it down.
1026
1030
1027 * IPython/iplib.py (handle_auto): fix autocall handling for
1031 * IPython/iplib.py (handle_auto): fix autocall handling for
1028 objects which support BOTH __getitem__ and __call__ (so that f [x]
1032 objects which support BOTH __getitem__ and __call__ (so that f [x]
1029 is left alone, instead of becoming f([x]) automatically).
1033 is left alone, instead of becoming f([x]) automatically).
1030
1034
1031 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1035 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1032 Ville's patch.
1036 Ville's patch.
1033
1037
1034 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1038 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1035
1039
1036 * IPython/iplib.py (handle_auto): changed autocall semantics to
1040 * IPython/iplib.py (handle_auto): changed autocall semantics to
1037 include 'smart' mode, where the autocall transformation is NOT
1041 include 'smart' mode, where the autocall transformation is NOT
1038 applied if there are no arguments on the line. This allows you to
1042 applied if there are no arguments on the line. This allows you to
1039 just type 'foo' if foo is a callable to see its internal form,
1043 just type 'foo' if foo is a callable to see its internal form,
1040 instead of having it called with no arguments (typically a
1044 instead of having it called with no arguments (typically a
1041 mistake). The old 'full' autocall still exists: for that, you
1045 mistake). The old 'full' autocall still exists: for that, you
1042 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1046 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1043
1047
1044 * IPython/completer.py (Completer.attr_matches): add
1048 * IPython/completer.py (Completer.attr_matches): add
1045 tab-completion support for Enthoughts' traits. After a report by
1049 tab-completion support for Enthoughts' traits. After a report by
1046 Arnd and a patch by Prabhu.
1050 Arnd and a patch by Prabhu.
1047
1051
1048 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1052 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1049
1053
1050 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1054 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1051 Schmolck's patch to fix inspect.getinnerframes().
1055 Schmolck's patch to fix inspect.getinnerframes().
1052
1056
1053 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1057 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1054 for embedded instances, regarding handling of namespaces and items
1058 for embedded instances, regarding handling of namespaces and items
1055 added to the __builtin__ one. Multiple embedded instances and
1059 added to the __builtin__ one. Multiple embedded instances and
1056 recursive embeddings should work better now (though I'm not sure
1060 recursive embeddings should work better now (though I'm not sure
1057 I've got all the corner cases fixed, that code is a bit of a brain
1061 I've got all the corner cases fixed, that code is a bit of a brain
1058 twister).
1062 twister).
1059
1063
1060 * IPython/Magic.py (magic_edit): added support to edit in-memory
1064 * IPython/Magic.py (magic_edit): added support to edit in-memory
1061 macros (automatically creates the necessary temp files). %edit
1065 macros (automatically creates the necessary temp files). %edit
1062 also doesn't return the file contents anymore, it's just noise.
1066 also doesn't return the file contents anymore, it's just noise.
1063
1067
1064 * IPython/completer.py (Completer.attr_matches): revert change to
1068 * IPython/completer.py (Completer.attr_matches): revert change to
1065 complete only on attributes listed in __all__. I realized it
1069 complete only on attributes listed in __all__. I realized it
1066 cripples the tab-completion system as a tool for exploring the
1070 cripples the tab-completion system as a tool for exploring the
1067 internals of unknown libraries (it renders any non-__all__
1071 internals of unknown libraries (it renders any non-__all__
1068 attribute off-limits). I got bit by this when trying to see
1072 attribute off-limits). I got bit by this when trying to see
1069 something inside the dis module.
1073 something inside the dis module.
1070
1074
1071 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1075 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1072
1076
1073 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1077 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1074 namespace for users and extension writers to hold data in. This
1078 namespace for users and extension writers to hold data in. This
1075 follows the discussion in
1079 follows the discussion in
1076 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1080 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1077
1081
1078 * IPython/completer.py (IPCompleter.complete): small patch to help
1082 * IPython/completer.py (IPCompleter.complete): small patch to help
1079 tab-completion under Emacs, after a suggestion by John Barnard
1083 tab-completion under Emacs, after a suggestion by John Barnard
1080 <barnarj-AT-ccf.org>.
1084 <barnarj-AT-ccf.org>.
1081
1085
1082 * IPython/Magic.py (Magic.extract_input_slices): added support for
1086 * IPython/Magic.py (Magic.extract_input_slices): added support for
1083 the slice notation in magics to use N-M to represent numbers N...M
1087 the slice notation in magics to use N-M to represent numbers N...M
1084 (closed endpoints). This is used by %macro and %save.
1088 (closed endpoints). This is used by %macro and %save.
1085
1089
1086 * IPython/completer.py (Completer.attr_matches): for modules which
1090 * IPython/completer.py (Completer.attr_matches): for modules which
1087 define __all__, complete only on those. After a patch by Jeffrey
1091 define __all__, complete only on those. After a patch by Jeffrey
1088 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1092 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1089 speed up this routine.
1093 speed up this routine.
1090
1094
1091 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1095 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1092 don't know if this is the end of it, but the behavior now is
1096 don't know if this is the end of it, but the behavior now is
1093 certainly much more correct. Note that coupled with macros,
1097 certainly much more correct. Note that coupled with macros,
1094 slightly surprising (at first) behavior may occur: a macro will in
1098 slightly surprising (at first) behavior may occur: a macro will in
1095 general expand to multiple lines of input, so upon exiting, the
1099 general expand to multiple lines of input, so upon exiting, the
1096 in/out counters will both be bumped by the corresponding amount
1100 in/out counters will both be bumped by the corresponding amount
1097 (as if the macro's contents had been typed interactively). Typing
1101 (as if the macro's contents had been typed interactively). Typing
1098 %hist will reveal the intermediate (silently processed) lines.
1102 %hist will reveal the intermediate (silently processed) lines.
1099
1103
1100 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1104 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1101 pickle to fail (%run was overwriting __main__ and not restoring
1105 pickle to fail (%run was overwriting __main__ and not restoring
1102 it, but pickle relies on __main__ to operate).
1106 it, but pickle relies on __main__ to operate).
1103
1107
1104 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1108 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1105 using properties, but forgot to make the main InteractiveShell
1109 using properties, but forgot to make the main InteractiveShell
1106 class a new-style class. Properties fail silently, and
1110 class a new-style class. Properties fail silently, and
1107 mysteriously, with old-style class (getters work, but
1111 mysteriously, with old-style class (getters work, but
1108 setters don't do anything).
1112 setters don't do anything).
1109
1113
1110 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1114 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1111
1115
1112 * IPython/Magic.py (magic_history): fix history reporting bug (I
1116 * IPython/Magic.py (magic_history): fix history reporting bug (I
1113 know some nasties are still there, I just can't seem to find a
1117 know some nasties are still there, I just can't seem to find a
1114 reproducible test case to track them down; the input history is
1118 reproducible test case to track them down; the input history is
1115 falling out of sync...)
1119 falling out of sync...)
1116
1120
1117 * IPython/iplib.py (handle_shell_escape): fix bug where both
1121 * IPython/iplib.py (handle_shell_escape): fix bug where both
1118 aliases and system accesses where broken for indented code (such
1122 aliases and system accesses where broken for indented code (such
1119 as loops).
1123 as loops).
1120
1124
1121 * IPython/genutils.py (shell): fix small but critical bug for
1125 * IPython/genutils.py (shell): fix small but critical bug for
1122 win32 system access.
1126 win32 system access.
1123
1127
1124 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1128 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1125
1129
1126 * IPython/iplib.py (showtraceback): remove use of the
1130 * IPython/iplib.py (showtraceback): remove use of the
1127 sys.last_{type/value/traceback} structures, which are non
1131 sys.last_{type/value/traceback} structures, which are non
1128 thread-safe.
1132 thread-safe.
1129 (_prefilter): change control flow to ensure that we NEVER
1133 (_prefilter): change control flow to ensure that we NEVER
1130 introspect objects when autocall is off. This will guarantee that
1134 introspect objects when autocall is off. This will guarantee that
1131 having an input line of the form 'x.y', where access to attribute
1135 having an input line of the form 'x.y', where access to attribute
1132 'y' has side effects, doesn't trigger the side effect TWICE. It
1136 'y' has side effects, doesn't trigger the side effect TWICE. It
1133 is important to note that, with autocall on, these side effects
1137 is important to note that, with autocall on, these side effects
1134 can still happen.
1138 can still happen.
1135 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1139 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1136 trio. IPython offers these three kinds of special calls which are
1140 trio. IPython offers these three kinds of special calls which are
1137 not python code, and it's a good thing to have their call method
1141 not python code, and it's a good thing to have their call method
1138 be accessible as pure python functions (not just special syntax at
1142 be accessible as pure python functions (not just special syntax at
1139 the command line). It gives us a better internal implementation
1143 the command line). It gives us a better internal implementation
1140 structure, as well as exposing these for user scripting more
1144 structure, as well as exposing these for user scripting more
1141 cleanly.
1145 cleanly.
1142
1146
1143 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1147 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1144 file. Now that they'll be more likely to be used with the
1148 file. Now that they'll be more likely to be used with the
1145 persistance system (%store), I want to make sure their module path
1149 persistance system (%store), I want to make sure their module path
1146 doesn't change in the future, so that we don't break things for
1150 doesn't change in the future, so that we don't break things for
1147 users' persisted data.
1151 users' persisted data.
1148
1152
1149 * IPython/iplib.py (autoindent_update): move indentation
1153 * IPython/iplib.py (autoindent_update): move indentation
1150 management into the _text_ processing loop, not the keyboard
1154 management into the _text_ processing loop, not the keyboard
1151 interactive one. This is necessary to correctly process non-typed
1155 interactive one. This is necessary to correctly process non-typed
1152 multiline input (such as macros).
1156 multiline input (such as macros).
1153
1157
1154 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1158 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1155 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1159 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1156 which was producing problems in the resulting manual.
1160 which was producing problems in the resulting manual.
1157 (magic_whos): improve reporting of instances (show their class,
1161 (magic_whos): improve reporting of instances (show their class,
1158 instead of simply printing 'instance' which isn't terribly
1162 instead of simply printing 'instance' which isn't terribly
1159 informative).
1163 informative).
1160
1164
1161 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1165 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1162 (minor mods) to support network shares under win32.
1166 (minor mods) to support network shares under win32.
1163
1167
1164 * IPython/winconsole.py (get_console_size): add new winconsole
1168 * IPython/winconsole.py (get_console_size): add new winconsole
1165 module and fixes to page_dumb() to improve its behavior under
1169 module and fixes to page_dumb() to improve its behavior under
1166 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1170 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1167
1171
1168 * IPython/Magic.py (Macro): simplified Macro class to just
1172 * IPython/Magic.py (Macro): simplified Macro class to just
1169 subclass list. We've had only 2.2 compatibility for a very long
1173 subclass list. We've had only 2.2 compatibility for a very long
1170 time, yet I was still avoiding subclassing the builtin types. No
1174 time, yet I was still avoiding subclassing the builtin types. No
1171 more (I'm also starting to use properties, though I won't shift to
1175 more (I'm also starting to use properties, though I won't shift to
1172 2.3-specific features quite yet).
1176 2.3-specific features quite yet).
1173 (magic_store): added Ville's patch for lightweight variable
1177 (magic_store): added Ville's patch for lightweight variable
1174 persistence, after a request on the user list by Matt Wilkie
1178 persistence, after a request on the user list by Matt Wilkie
1175 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1179 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1176 details.
1180 details.
1177
1181
1178 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1182 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1179 changed the default logfile name from 'ipython.log' to
1183 changed the default logfile name from 'ipython.log' to
1180 'ipython_log.py'. These logs are real python files, and now that
1184 'ipython_log.py'. These logs are real python files, and now that
1181 we have much better multiline support, people are more likely to
1185 we have much better multiline support, people are more likely to
1182 want to use them as such. Might as well name them correctly.
1186 want to use them as such. Might as well name them correctly.
1183
1187
1184 * IPython/Magic.py: substantial cleanup. While we can't stop
1188 * IPython/Magic.py: substantial cleanup. While we can't stop
1185 using magics as mixins, due to the existing customizations 'out
1189 using magics as mixins, due to the existing customizations 'out
1186 there' which rely on the mixin naming conventions, at least I
1190 there' which rely on the mixin naming conventions, at least I
1187 cleaned out all cross-class name usage. So once we are OK with
1191 cleaned out all cross-class name usage. So once we are OK with
1188 breaking compatibility, the two systems can be separated.
1192 breaking compatibility, the two systems can be separated.
1189
1193
1190 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1194 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1191 anymore, and the class is a fair bit less hideous as well. New
1195 anymore, and the class is a fair bit less hideous as well. New
1192 features were also introduced: timestamping of input, and logging
1196 features were also introduced: timestamping of input, and logging
1193 of output results. These are user-visible with the -t and -o
1197 of output results. These are user-visible with the -t and -o
1194 options to %logstart. Closes
1198 options to %logstart. Closes
1195 http://www.scipy.net/roundup/ipython/issue11 and a request by
1199 http://www.scipy.net/roundup/ipython/issue11 and a request by
1196 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1200 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1197
1201
1198 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1202 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1199
1203
1200 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1204 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1201 better handle backslashes in paths. See the thread 'More Windows
1205 better handle backslashes in paths. See the thread 'More Windows
1202 questions part 2 - \/ characters revisited' on the iypthon user
1206 questions part 2 - \/ characters revisited' on the iypthon user
1203 list:
1207 list:
1204 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1208 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1205
1209
1206 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1210 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1207
1211
1208 (InteractiveShell.__init__): change threaded shells to not use the
1212 (InteractiveShell.__init__): change threaded shells to not use the
1209 ipython crash handler. This was causing more problems than not,
1213 ipython crash handler. This was causing more problems than not,
1210 as exceptions in the main thread (GUI code, typically) would
1214 as exceptions in the main thread (GUI code, typically) would
1211 always show up as a 'crash', when they really weren't.
1215 always show up as a 'crash', when they really weren't.
1212
1216
1213 The colors and exception mode commands (%colors/%xmode) have been
1217 The colors and exception mode commands (%colors/%xmode) have been
1214 synchronized to also take this into account, so users can get
1218 synchronized to also take this into account, so users can get
1215 verbose exceptions for their threaded code as well. I also added
1219 verbose exceptions for their threaded code as well. I also added
1216 support for activating pdb inside this exception handler as well,
1220 support for activating pdb inside this exception handler as well,
1217 so now GUI authors can use IPython's enhanced pdb at runtime.
1221 so now GUI authors can use IPython's enhanced pdb at runtime.
1218
1222
1219 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1223 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1220 true by default, and add it to the shipped ipythonrc file. Since
1224 true by default, and add it to the shipped ipythonrc file. Since
1221 this asks the user before proceeding, I think it's OK to make it
1225 this asks the user before proceeding, I think it's OK to make it
1222 true by default.
1226 true by default.
1223
1227
1224 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1228 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1225 of the previous special-casing of input in the eval loop. I think
1229 of the previous special-casing of input in the eval loop. I think
1226 this is cleaner, as they really are commands and shouldn't have
1230 this is cleaner, as they really are commands and shouldn't have
1227 a special role in the middle of the core code.
1231 a special role in the middle of the core code.
1228
1232
1229 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1233 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1230
1234
1231 * IPython/iplib.py (edit_syntax_error): added support for
1235 * IPython/iplib.py (edit_syntax_error): added support for
1232 automatically reopening the editor if the file had a syntax error
1236 automatically reopening the editor if the file had a syntax error
1233 in it. Thanks to scottt who provided the patch at:
1237 in it. Thanks to scottt who provided the patch at:
1234 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1238 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1235 version committed).
1239 version committed).
1236
1240
1237 * IPython/iplib.py (handle_normal): add suport for multi-line
1241 * IPython/iplib.py (handle_normal): add suport for multi-line
1238 input with emtpy lines. This fixes
1242 input with emtpy lines. This fixes
1239 http://www.scipy.net/roundup/ipython/issue43 and a similar
1243 http://www.scipy.net/roundup/ipython/issue43 and a similar
1240 discussion on the user list.
1244 discussion on the user list.
1241
1245
1242 WARNING: a behavior change is necessarily introduced to support
1246 WARNING: a behavior change is necessarily introduced to support
1243 blank lines: now a single blank line with whitespace does NOT
1247 blank lines: now a single blank line with whitespace does NOT
1244 break the input loop, which means that when autoindent is on, by
1248 break the input loop, which means that when autoindent is on, by
1245 default hitting return on the next (indented) line does NOT exit.
1249 default hitting return on the next (indented) line does NOT exit.
1246
1250
1247 Instead, to exit a multiline input you can either have:
1251 Instead, to exit a multiline input you can either have:
1248
1252
1249 - TWO whitespace lines (just hit return again), or
1253 - TWO whitespace lines (just hit return again), or
1250 - a single whitespace line of a different length than provided
1254 - a single whitespace line of a different length than provided
1251 by the autoindent (add or remove a space).
1255 by the autoindent (add or remove a space).
1252
1256
1253 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1257 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1254 module to better organize all readline-related functionality.
1258 module to better organize all readline-related functionality.
1255 I've deleted FlexCompleter and put all completion clases here.
1259 I've deleted FlexCompleter and put all completion clases here.
1256
1260
1257 * IPython/iplib.py (raw_input): improve indentation management.
1261 * IPython/iplib.py (raw_input): improve indentation management.
1258 It is now possible to paste indented code with autoindent on, and
1262 It is now possible to paste indented code with autoindent on, and
1259 the code is interpreted correctly (though it still looks bad on
1263 the code is interpreted correctly (though it still looks bad on
1260 screen, due to the line-oriented nature of ipython).
1264 screen, due to the line-oriented nature of ipython).
1261 (MagicCompleter.complete): change behavior so that a TAB key on an
1265 (MagicCompleter.complete): change behavior so that a TAB key on an
1262 otherwise empty line actually inserts a tab, instead of completing
1266 otherwise empty line actually inserts a tab, instead of completing
1263 on the entire global namespace. This makes it easier to use the
1267 on the entire global namespace. This makes it easier to use the
1264 TAB key for indentation. After a request by Hans Meine
1268 TAB key for indentation. After a request by Hans Meine
1265 <hans_meine-AT-gmx.net>
1269 <hans_meine-AT-gmx.net>
1266 (_prefilter): add support so that typing plain 'exit' or 'quit'
1270 (_prefilter): add support so that typing plain 'exit' or 'quit'
1267 does a sensible thing. Originally I tried to deviate as little as
1271 does a sensible thing. Originally I tried to deviate as little as
1268 possible from the default python behavior, but even that one may
1272 possible from the default python behavior, but even that one may
1269 change in this direction (thread on python-dev to that effect).
1273 change in this direction (thread on python-dev to that effect).
1270 Regardless, ipython should do the right thing even if CPython's
1274 Regardless, ipython should do the right thing even if CPython's
1271 '>>>' prompt doesn't.
1275 '>>>' prompt doesn't.
1272 (InteractiveShell): removed subclassing code.InteractiveConsole
1276 (InteractiveShell): removed subclassing code.InteractiveConsole
1273 class. By now we'd overridden just about all of its methods: I've
1277 class. By now we'd overridden just about all of its methods: I've
1274 copied the remaining two over, and now ipython is a standalone
1278 copied the remaining two over, and now ipython is a standalone
1275 class. This will provide a clearer picture for the chainsaw
1279 class. This will provide a clearer picture for the chainsaw
1276 branch refactoring.
1280 branch refactoring.
1277
1281
1278 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1282 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1279
1283
1280 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1284 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1281 failures for objects which break when dir() is called on them.
1285 failures for objects which break when dir() is called on them.
1282
1286
1283 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1287 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1284 distinct local and global namespaces in the completer API. This
1288 distinct local and global namespaces in the completer API. This
1285 change allows us to properly handle completion with distinct
1289 change allows us to properly handle completion with distinct
1286 scopes, including in embedded instances (this had never really
1290 scopes, including in embedded instances (this had never really
1287 worked correctly).
1291 worked correctly).
1288
1292
1289 Note: this introduces a change in the constructor for
1293 Note: this introduces a change in the constructor for
1290 MagicCompleter, as a new global_namespace parameter is now the
1294 MagicCompleter, as a new global_namespace parameter is now the
1291 second argument (the others were bumped one position).
1295 second argument (the others were bumped one position).
1292
1296
1293 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1297 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1294
1298
1295 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1299 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1296 embedded instances (which can be done now thanks to Vivian's
1300 embedded instances (which can be done now thanks to Vivian's
1297 frame-handling fixes for pdb).
1301 frame-handling fixes for pdb).
1298 (InteractiveShell.__init__): Fix namespace handling problem in
1302 (InteractiveShell.__init__): Fix namespace handling problem in
1299 embedded instances. We were overwriting __main__ unconditionally,
1303 embedded instances. We were overwriting __main__ unconditionally,
1300 and this should only be done for 'full' (non-embedded) IPython;
1304 and this should only be done for 'full' (non-embedded) IPython;
1301 embedded instances must respect the caller's __main__. Thanks to
1305 embedded instances must respect the caller's __main__. Thanks to
1302 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1306 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1303
1307
1304 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1308 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1305
1309
1306 * setup.py: added download_url to setup(). This registers the
1310 * setup.py: added download_url to setup(). This registers the
1307 download address at PyPI, which is not only useful to humans
1311 download address at PyPI, which is not only useful to humans
1308 browsing the site, but is also picked up by setuptools (the Eggs
1312 browsing the site, but is also picked up by setuptools (the Eggs
1309 machinery). Thanks to Ville and R. Kern for the info/discussion
1313 machinery). Thanks to Ville and R. Kern for the info/discussion
1310 on this.
1314 on this.
1311
1315
1312 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1316 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1313
1317
1314 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1318 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1315 This brings a lot of nice functionality to the pdb mode, which now
1319 This brings a lot of nice functionality to the pdb mode, which now
1316 has tab-completion, syntax highlighting, and better stack handling
1320 has tab-completion, syntax highlighting, and better stack handling
1317 than before. Many thanks to Vivian De Smedt
1321 than before. Many thanks to Vivian De Smedt
1318 <vivian-AT-vdesmedt.com> for the original patches.
1322 <vivian-AT-vdesmedt.com> for the original patches.
1319
1323
1320 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1324 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1321
1325
1322 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1326 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1323 sequence to consistently accept the banner argument. The
1327 sequence to consistently accept the banner argument. The
1324 inconsistency was tripping SAGE, thanks to Gary Zablackis
1328 inconsistency was tripping SAGE, thanks to Gary Zablackis
1325 <gzabl-AT-yahoo.com> for the report.
1329 <gzabl-AT-yahoo.com> for the report.
1326
1330
1327 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1331 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1328
1332
1329 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1333 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1330 Fix bug where a naked 'alias' call in the ipythonrc file would
1334 Fix bug where a naked 'alias' call in the ipythonrc file would
1331 cause a crash. Bug reported by Jorgen Stenarson.
1335 cause a crash. Bug reported by Jorgen Stenarson.
1332
1336
1333 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1337 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1334
1338
1335 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1339 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1336 startup time.
1340 startup time.
1337
1341
1338 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1342 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1339 instances had introduced a bug with globals in normal code. Now
1343 instances had introduced a bug with globals in normal code. Now
1340 it's working in all cases.
1344 it's working in all cases.
1341
1345
1342 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1346 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1343 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1347 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1344 has been introduced to set the default case sensitivity of the
1348 has been introduced to set the default case sensitivity of the
1345 searches. Users can still select either mode at runtime on a
1349 searches. Users can still select either mode at runtime on a
1346 per-search basis.
1350 per-search basis.
1347
1351
1348 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1352 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1349
1353
1350 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1354 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1351 attributes in wildcard searches for subclasses. Modified version
1355 attributes in wildcard searches for subclasses. Modified version
1352 of a patch by Jorgen.
1356 of a patch by Jorgen.
1353
1357
1354 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1358 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1355
1359
1356 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1360 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1357 embedded instances. I added a user_global_ns attribute to the
1361 embedded instances. I added a user_global_ns attribute to the
1358 InteractiveShell class to handle this.
1362 InteractiveShell class to handle this.
1359
1363
1360 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1364 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1361
1365
1362 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1366 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1363 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1367 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1364 (reported under win32, but may happen also in other platforms).
1368 (reported under win32, but may happen also in other platforms).
1365 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1369 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1366
1370
1367 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1371 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1368
1372
1369 * IPython/Magic.py (magic_psearch): new support for wildcard
1373 * IPython/Magic.py (magic_psearch): new support for wildcard
1370 patterns. Now, typing ?a*b will list all names which begin with a
1374 patterns. Now, typing ?a*b will list all names which begin with a
1371 and end in b, for example. The %psearch magic has full
1375 and end in b, for example. The %psearch magic has full
1372 docstrings. Many thanks to JΓΆrgen Stenarson
1376 docstrings. Many thanks to JΓΆrgen Stenarson
1373 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1377 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1374 implementing this functionality.
1378 implementing this functionality.
1375
1379
1376 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1380 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1377
1381
1378 * Manual: fixed long-standing annoyance of double-dashes (as in
1382 * Manual: fixed long-standing annoyance of double-dashes (as in
1379 --prefix=~, for example) being stripped in the HTML version. This
1383 --prefix=~, for example) being stripped in the HTML version. This
1380 is a latex2html bug, but a workaround was provided. Many thanks
1384 is a latex2html bug, but a workaround was provided. Many thanks
1381 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1385 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1382 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1386 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1383 rolling. This seemingly small issue had tripped a number of users
1387 rolling. This seemingly small issue had tripped a number of users
1384 when first installing, so I'm glad to see it gone.
1388 when first installing, so I'm glad to see it gone.
1385
1389
1386 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1390 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1387
1391
1388 * IPython/Extensions/numeric_formats.py: fix missing import,
1392 * IPython/Extensions/numeric_formats.py: fix missing import,
1389 reported by Stephen Walton.
1393 reported by Stephen Walton.
1390
1394
1391 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1395 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1392
1396
1393 * IPython/demo.py: finish demo module, fully documented now.
1397 * IPython/demo.py: finish demo module, fully documented now.
1394
1398
1395 * IPython/genutils.py (file_read): simple little utility to read a
1399 * IPython/genutils.py (file_read): simple little utility to read a
1396 file and ensure it's closed afterwards.
1400 file and ensure it's closed afterwards.
1397
1401
1398 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1402 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1399
1403
1400 * IPython/demo.py (Demo.__init__): added support for individually
1404 * IPython/demo.py (Demo.__init__): added support for individually
1401 tagging blocks for automatic execution.
1405 tagging blocks for automatic execution.
1402
1406
1403 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1407 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1404 syntax-highlighted python sources, requested by John.
1408 syntax-highlighted python sources, requested by John.
1405
1409
1406 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1410 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1407
1411
1408 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1412 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1409 finishing.
1413 finishing.
1410
1414
1411 * IPython/genutils.py (shlex_split): moved from Magic to here,
1415 * IPython/genutils.py (shlex_split): moved from Magic to here,
1412 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1416 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1413
1417
1414 * IPython/demo.py (Demo.__init__): added support for silent
1418 * IPython/demo.py (Demo.__init__): added support for silent
1415 blocks, improved marks as regexps, docstrings written.
1419 blocks, improved marks as regexps, docstrings written.
1416 (Demo.__init__): better docstring, added support for sys.argv.
1420 (Demo.__init__): better docstring, added support for sys.argv.
1417
1421
1418 * IPython/genutils.py (marquee): little utility used by the demo
1422 * IPython/genutils.py (marquee): little utility used by the demo
1419 code, handy in general.
1423 code, handy in general.
1420
1424
1421 * IPython/demo.py (Demo.__init__): new class for interactive
1425 * IPython/demo.py (Demo.__init__): new class for interactive
1422 demos. Not documented yet, I just wrote it in a hurry for
1426 demos. Not documented yet, I just wrote it in a hurry for
1423 scipy'05. Will docstring later.
1427 scipy'05. Will docstring later.
1424
1428
1425 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1429 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1426
1430
1427 * IPython/Shell.py (sigint_handler): Drastic simplification which
1431 * IPython/Shell.py (sigint_handler): Drastic simplification which
1428 also seems to make Ctrl-C work correctly across threads! This is
1432 also seems to make Ctrl-C work correctly across threads! This is
1429 so simple, that I can't beleive I'd missed it before. Needs more
1433 so simple, that I can't beleive I'd missed it before. Needs more
1430 testing, though.
1434 testing, though.
1431 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1435 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1432 like this before...
1436 like this before...
1433
1437
1434 * IPython/genutils.py (get_home_dir): add protection against
1438 * IPython/genutils.py (get_home_dir): add protection against
1435 non-dirs in win32 registry.
1439 non-dirs in win32 registry.
1436
1440
1437 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1441 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1438 bug where dict was mutated while iterating (pysh crash).
1442 bug where dict was mutated while iterating (pysh crash).
1439
1443
1440 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1444 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1441
1445
1442 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1446 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1443 spurious newlines added by this routine. After a report by
1447 spurious newlines added by this routine. After a report by
1444 F. Mantegazza.
1448 F. Mantegazza.
1445
1449
1446 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1450 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1447
1451
1448 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1452 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1449 calls. These were a leftover from the GTK 1.x days, and can cause
1453 calls. These were a leftover from the GTK 1.x days, and can cause
1450 problems in certain cases (after a report by John Hunter).
1454 problems in certain cases (after a report by John Hunter).
1451
1455
1452 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1456 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1453 os.getcwd() fails at init time. Thanks to patch from David Remahl
1457 os.getcwd() fails at init time. Thanks to patch from David Remahl
1454 <chmod007-AT-mac.com>.
1458 <chmod007-AT-mac.com>.
1455 (InteractiveShell.__init__): prevent certain special magics from
1459 (InteractiveShell.__init__): prevent certain special magics from
1456 being shadowed by aliases. Closes
1460 being shadowed by aliases. Closes
1457 http://www.scipy.net/roundup/ipython/issue41.
1461 http://www.scipy.net/roundup/ipython/issue41.
1458
1462
1459 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1463 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1460
1464
1461 * IPython/iplib.py (InteractiveShell.complete): Added new
1465 * IPython/iplib.py (InteractiveShell.complete): Added new
1462 top-level completion method to expose the completion mechanism
1466 top-level completion method to expose the completion mechanism
1463 beyond readline-based environments.
1467 beyond readline-based environments.
1464
1468
1465 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1469 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1466
1470
1467 * tools/ipsvnc (svnversion): fix svnversion capture.
1471 * tools/ipsvnc (svnversion): fix svnversion capture.
1468
1472
1469 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1473 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1470 attribute to self, which was missing. Before, it was set by a
1474 attribute to self, which was missing. Before, it was set by a
1471 routine which in certain cases wasn't being called, so the
1475 routine which in certain cases wasn't being called, so the
1472 instance could end up missing the attribute. This caused a crash.
1476 instance could end up missing the attribute. This caused a crash.
1473 Closes http://www.scipy.net/roundup/ipython/issue40.
1477 Closes http://www.scipy.net/roundup/ipython/issue40.
1474
1478
1475 2005-08-16 Fernando Perez <fperez@colorado.edu>
1479 2005-08-16 Fernando Perez <fperez@colorado.edu>
1476
1480
1477 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1481 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1478 contains non-string attribute. Closes
1482 contains non-string attribute. Closes
1479 http://www.scipy.net/roundup/ipython/issue38.
1483 http://www.scipy.net/roundup/ipython/issue38.
1480
1484
1481 2005-08-14 Fernando Perez <fperez@colorado.edu>
1485 2005-08-14 Fernando Perez <fperez@colorado.edu>
1482
1486
1483 * tools/ipsvnc: Minor improvements, to add changeset info.
1487 * tools/ipsvnc: Minor improvements, to add changeset info.
1484
1488
1485 2005-08-12 Fernando Perez <fperez@colorado.edu>
1489 2005-08-12 Fernando Perez <fperez@colorado.edu>
1486
1490
1487 * IPython/iplib.py (runsource): remove self.code_to_run_src
1491 * IPython/iplib.py (runsource): remove self.code_to_run_src
1488 attribute. I realized this is nothing more than
1492 attribute. I realized this is nothing more than
1489 '\n'.join(self.buffer), and having the same data in two different
1493 '\n'.join(self.buffer), and having the same data in two different
1490 places is just asking for synchronization bugs. This may impact
1494 places is just asking for synchronization bugs. This may impact
1491 people who have custom exception handlers, so I need to warn
1495 people who have custom exception handlers, so I need to warn
1492 ipython-dev about it (F. Mantegazza may use them).
1496 ipython-dev about it (F. Mantegazza may use them).
1493
1497
1494 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1498 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1495
1499
1496 * IPython/genutils.py: fix 2.2 compatibility (generators)
1500 * IPython/genutils.py: fix 2.2 compatibility (generators)
1497
1501
1498 2005-07-18 Fernando Perez <fperez@colorado.edu>
1502 2005-07-18 Fernando Perez <fperez@colorado.edu>
1499
1503
1500 * IPython/genutils.py (get_home_dir): fix to help users with
1504 * IPython/genutils.py (get_home_dir): fix to help users with
1501 invalid $HOME under win32.
1505 invalid $HOME under win32.
1502
1506
1503 2005-07-17 Fernando Perez <fperez@colorado.edu>
1507 2005-07-17 Fernando Perez <fperez@colorado.edu>
1504
1508
1505 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1509 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1506 some old hacks and clean up a bit other routines; code should be
1510 some old hacks and clean up a bit other routines; code should be
1507 simpler and a bit faster.
1511 simpler and a bit faster.
1508
1512
1509 * IPython/iplib.py (interact): removed some last-resort attempts
1513 * IPython/iplib.py (interact): removed some last-resort attempts
1510 to survive broken stdout/stderr. That code was only making it
1514 to survive broken stdout/stderr. That code was only making it
1511 harder to abstract out the i/o (necessary for gui integration),
1515 harder to abstract out the i/o (necessary for gui integration),
1512 and the crashes it could prevent were extremely rare in practice
1516 and the crashes it could prevent were extremely rare in practice
1513 (besides being fully user-induced in a pretty violent manner).
1517 (besides being fully user-induced in a pretty violent manner).
1514
1518
1515 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1519 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1516 Nothing major yet, but the code is simpler to read; this should
1520 Nothing major yet, but the code is simpler to read; this should
1517 make it easier to do more serious modifications in the future.
1521 make it easier to do more serious modifications in the future.
1518
1522
1519 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1523 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1520 which broke in .15 (thanks to a report by Ville).
1524 which broke in .15 (thanks to a report by Ville).
1521
1525
1522 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1526 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1523 be quite correct, I know next to nothing about unicode). This
1527 be quite correct, I know next to nothing about unicode). This
1524 will allow unicode strings to be used in prompts, amongst other
1528 will allow unicode strings to be used in prompts, amongst other
1525 cases. It also will prevent ipython from crashing when unicode
1529 cases. It also will prevent ipython from crashing when unicode
1526 shows up unexpectedly in many places. If ascii encoding fails, we
1530 shows up unexpectedly in many places. If ascii encoding fails, we
1527 assume utf_8. Currently the encoding is not a user-visible
1531 assume utf_8. Currently the encoding is not a user-visible
1528 setting, though it could be made so if there is demand for it.
1532 setting, though it could be made so if there is demand for it.
1529
1533
1530 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1534 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1531
1535
1532 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1536 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1533
1537
1534 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1538 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1535
1539
1536 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1540 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1537 code can work transparently for 2.2/2.3.
1541 code can work transparently for 2.2/2.3.
1538
1542
1539 2005-07-16 Fernando Perez <fperez@colorado.edu>
1543 2005-07-16 Fernando Perez <fperez@colorado.edu>
1540
1544
1541 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1545 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1542 out of the color scheme table used for coloring exception
1546 out of the color scheme table used for coloring exception
1543 tracebacks. This allows user code to add new schemes at runtime.
1547 tracebacks. This allows user code to add new schemes at runtime.
1544 This is a minimally modified version of the patch at
1548 This is a minimally modified version of the patch at
1545 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1549 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1546 for the contribution.
1550 for the contribution.
1547
1551
1548 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1552 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1549 slightly modified version of the patch in
1553 slightly modified version of the patch in
1550 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1554 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1551 to remove the previous try/except solution (which was costlier).
1555 to remove the previous try/except solution (which was costlier).
1552 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1556 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1553
1557
1554 2005-06-08 Fernando Perez <fperez@colorado.edu>
1558 2005-06-08 Fernando Perez <fperez@colorado.edu>
1555
1559
1556 * IPython/iplib.py (write/write_err): Add methods to abstract all
1560 * IPython/iplib.py (write/write_err): Add methods to abstract all
1557 I/O a bit more.
1561 I/O a bit more.
1558
1562
1559 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1563 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1560 warning, reported by Aric Hagberg, fix by JD Hunter.
1564 warning, reported by Aric Hagberg, fix by JD Hunter.
1561
1565
1562 2005-06-02 *** Released version 0.6.15
1566 2005-06-02 *** Released version 0.6.15
1563
1567
1564 2005-06-01 Fernando Perez <fperez@colorado.edu>
1568 2005-06-01 Fernando Perez <fperez@colorado.edu>
1565
1569
1566 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1570 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1567 tab-completion of filenames within open-quoted strings. Note that
1571 tab-completion of filenames within open-quoted strings. Note that
1568 this requires that in ~/.ipython/ipythonrc, users change the
1572 this requires that in ~/.ipython/ipythonrc, users change the
1569 readline delimiters configuration to read:
1573 readline delimiters configuration to read:
1570
1574
1571 readline_remove_delims -/~
1575 readline_remove_delims -/~
1572
1576
1573
1577
1574 2005-05-31 *** Released version 0.6.14
1578 2005-05-31 *** Released version 0.6.14
1575
1579
1576 2005-05-29 Fernando Perez <fperez@colorado.edu>
1580 2005-05-29 Fernando Perez <fperez@colorado.edu>
1577
1581
1578 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1582 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1579 with files not on the filesystem. Reported by Eliyahu Sandler
1583 with files not on the filesystem. Reported by Eliyahu Sandler
1580 <eli@gondolin.net>
1584 <eli@gondolin.net>
1581
1585
1582 2005-05-22 Fernando Perez <fperez@colorado.edu>
1586 2005-05-22 Fernando Perez <fperez@colorado.edu>
1583
1587
1584 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1588 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1585 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1589 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1586
1590
1587 2005-05-19 Fernando Perez <fperez@colorado.edu>
1591 2005-05-19 Fernando Perez <fperez@colorado.edu>
1588
1592
1589 * IPython/iplib.py (safe_execfile): close a file which could be
1593 * IPython/iplib.py (safe_execfile): close a file which could be
1590 left open (causing problems in win32, which locks open files).
1594 left open (causing problems in win32, which locks open files).
1591 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1595 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1592
1596
1593 2005-05-18 Fernando Perez <fperez@colorado.edu>
1597 2005-05-18 Fernando Perez <fperez@colorado.edu>
1594
1598
1595 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1599 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1596 keyword arguments correctly to safe_execfile().
1600 keyword arguments correctly to safe_execfile().
1597
1601
1598 2005-05-13 Fernando Perez <fperez@colorado.edu>
1602 2005-05-13 Fernando Perez <fperez@colorado.edu>
1599
1603
1600 * ipython.1: Added info about Qt to manpage, and threads warning
1604 * ipython.1: Added info about Qt to manpage, and threads warning
1601 to usage page (invoked with --help).
1605 to usage page (invoked with --help).
1602
1606
1603 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1607 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1604 new matcher (it goes at the end of the priority list) to do
1608 new matcher (it goes at the end of the priority list) to do
1605 tab-completion on named function arguments. Submitted by George
1609 tab-completion on named function arguments. Submitted by George
1606 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1610 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1607 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1611 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1608 for more details.
1612 for more details.
1609
1613
1610 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1614 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1611 SystemExit exceptions in the script being run. Thanks to a report
1615 SystemExit exceptions in the script being run. Thanks to a report
1612 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1616 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1613 producing very annoying behavior when running unit tests.
1617 producing very annoying behavior when running unit tests.
1614
1618
1615 2005-05-12 Fernando Perez <fperez@colorado.edu>
1619 2005-05-12 Fernando Perez <fperez@colorado.edu>
1616
1620
1617 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1621 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1618 which I'd broken (again) due to a changed regexp. In the process,
1622 which I'd broken (again) due to a changed regexp. In the process,
1619 added ';' as an escape to auto-quote the whole line without
1623 added ';' as an escape to auto-quote the whole line without
1620 splitting its arguments. Thanks to a report by Jerry McRae
1624 splitting its arguments. Thanks to a report by Jerry McRae
1621 <qrs0xyc02-AT-sneakemail.com>.
1625 <qrs0xyc02-AT-sneakemail.com>.
1622
1626
1623 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1627 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1624 possible crashes caused by a TokenError. Reported by Ed Schofield
1628 possible crashes caused by a TokenError. Reported by Ed Schofield
1625 <schofield-AT-ftw.at>.
1629 <schofield-AT-ftw.at>.
1626
1630
1627 2005-05-06 Fernando Perez <fperez@colorado.edu>
1631 2005-05-06 Fernando Perez <fperez@colorado.edu>
1628
1632
1629 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1633 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1630
1634
1631 2005-04-29 Fernando Perez <fperez@colorado.edu>
1635 2005-04-29 Fernando Perez <fperez@colorado.edu>
1632
1636
1633 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1637 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1634 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1638 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1635 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1639 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1636 which provides support for Qt interactive usage (similar to the
1640 which provides support for Qt interactive usage (similar to the
1637 existing one for WX and GTK). This had been often requested.
1641 existing one for WX and GTK). This had been often requested.
1638
1642
1639 2005-04-14 *** Released version 0.6.13
1643 2005-04-14 *** Released version 0.6.13
1640
1644
1641 2005-04-08 Fernando Perez <fperez@colorado.edu>
1645 2005-04-08 Fernando Perez <fperez@colorado.edu>
1642
1646
1643 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1647 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1644 from _ofind, which gets called on almost every input line. Now,
1648 from _ofind, which gets called on almost every input line. Now,
1645 we only try to get docstrings if they are actually going to be
1649 we only try to get docstrings if they are actually going to be
1646 used (the overhead of fetching unnecessary docstrings can be
1650 used (the overhead of fetching unnecessary docstrings can be
1647 noticeable for certain objects, such as Pyro proxies).
1651 noticeable for certain objects, such as Pyro proxies).
1648
1652
1649 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1653 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1650 for completers. For some reason I had been passing them the state
1654 for completers. For some reason I had been passing them the state
1651 variable, which completers never actually need, and was in
1655 variable, which completers never actually need, and was in
1652 conflict with the rlcompleter API. Custom completers ONLY need to
1656 conflict with the rlcompleter API. Custom completers ONLY need to
1653 take the text parameter.
1657 take the text parameter.
1654
1658
1655 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1659 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1656 work correctly in pysh. I've also moved all the logic which used
1660 work correctly in pysh. I've also moved all the logic which used
1657 to be in pysh.py here, which will prevent problems with future
1661 to be in pysh.py here, which will prevent problems with future
1658 upgrades. However, this time I must warn users to update their
1662 upgrades. However, this time I must warn users to update their
1659 pysh profile to include the line
1663 pysh profile to include the line
1660
1664
1661 import_all IPython.Extensions.InterpreterExec
1665 import_all IPython.Extensions.InterpreterExec
1662
1666
1663 because otherwise things won't work for them. They MUST also
1667 because otherwise things won't work for them. They MUST also
1664 delete pysh.py and the line
1668 delete pysh.py and the line
1665
1669
1666 execfile pysh.py
1670 execfile pysh.py
1667
1671
1668 from their ipythonrc-pysh.
1672 from their ipythonrc-pysh.
1669
1673
1670 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1674 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1671 robust in the face of objects whose dir() returns non-strings
1675 robust in the face of objects whose dir() returns non-strings
1672 (which it shouldn't, but some broken libs like ITK do). Thanks to
1676 (which it shouldn't, but some broken libs like ITK do). Thanks to
1673 a patch by John Hunter (implemented differently, though). Also
1677 a patch by John Hunter (implemented differently, though). Also
1674 minor improvements by using .extend instead of + on lists.
1678 minor improvements by using .extend instead of + on lists.
1675
1679
1676 * pysh.py:
1680 * pysh.py:
1677
1681
1678 2005-04-06 Fernando Perez <fperez@colorado.edu>
1682 2005-04-06 Fernando Perez <fperez@colorado.edu>
1679
1683
1680 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1684 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1681 by default, so that all users benefit from it. Those who don't
1685 by default, so that all users benefit from it. Those who don't
1682 want it can still turn it off.
1686 want it can still turn it off.
1683
1687
1684 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1688 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1685 config file, I'd forgotten about this, so users were getting it
1689 config file, I'd forgotten about this, so users were getting it
1686 off by default.
1690 off by default.
1687
1691
1688 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1692 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1689 consistency. Now magics can be called in multiline statements,
1693 consistency. Now magics can be called in multiline statements,
1690 and python variables can be expanded in magic calls via $var.
1694 and python variables can be expanded in magic calls via $var.
1691 This makes the magic system behave just like aliases or !system
1695 This makes the magic system behave just like aliases or !system
1692 calls.
1696 calls.
1693
1697
1694 2005-03-28 Fernando Perez <fperez@colorado.edu>
1698 2005-03-28 Fernando Perez <fperez@colorado.edu>
1695
1699
1696 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1700 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1697 expensive string additions for building command. Add support for
1701 expensive string additions for building command. Add support for
1698 trailing ';' when autocall is used.
1702 trailing ';' when autocall is used.
1699
1703
1700 2005-03-26 Fernando Perez <fperez@colorado.edu>
1704 2005-03-26 Fernando Perez <fperez@colorado.edu>
1701
1705
1702 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1706 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1703 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1707 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1704 ipython.el robust against prompts with any number of spaces
1708 ipython.el robust against prompts with any number of spaces
1705 (including 0) after the ':' character.
1709 (including 0) after the ':' character.
1706
1710
1707 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1711 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1708 continuation prompt, which misled users to think the line was
1712 continuation prompt, which misled users to think the line was
1709 already indented. Closes debian Bug#300847, reported to me by
1713 already indented. Closes debian Bug#300847, reported to me by
1710 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1714 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1711
1715
1712 2005-03-23 Fernando Perez <fperez@colorado.edu>
1716 2005-03-23 Fernando Perez <fperez@colorado.edu>
1713
1717
1714 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1718 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1715 properly aligned if they have embedded newlines.
1719 properly aligned if they have embedded newlines.
1716
1720
1717 * IPython/iplib.py (runlines): Add a public method to expose
1721 * IPython/iplib.py (runlines): Add a public method to expose
1718 IPython's code execution machinery, so that users can run strings
1722 IPython's code execution machinery, so that users can run strings
1719 as if they had been typed at the prompt interactively.
1723 as if they had been typed at the prompt interactively.
1720 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1724 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1721 methods which can call the system shell, but with python variable
1725 methods which can call the system shell, but with python variable
1722 expansion. The three such methods are: __IPYTHON__.system,
1726 expansion. The three such methods are: __IPYTHON__.system,
1723 .getoutput and .getoutputerror. These need to be documented in a
1727 .getoutput and .getoutputerror. These need to be documented in a
1724 'public API' section (to be written) of the manual.
1728 'public API' section (to be written) of the manual.
1725
1729
1726 2005-03-20 Fernando Perez <fperez@colorado.edu>
1730 2005-03-20 Fernando Perez <fperez@colorado.edu>
1727
1731
1728 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1732 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1729 for custom exception handling. This is quite powerful, and it
1733 for custom exception handling. This is quite powerful, and it
1730 allows for user-installable exception handlers which can trap
1734 allows for user-installable exception handlers which can trap
1731 custom exceptions at runtime and treat them separately from
1735 custom exceptions at runtime and treat them separately from
1732 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1736 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1733 Mantegazza <mantegazza-AT-ill.fr>.
1737 Mantegazza <mantegazza-AT-ill.fr>.
1734 (InteractiveShell.set_custom_completer): public API function to
1738 (InteractiveShell.set_custom_completer): public API function to
1735 add new completers at runtime.
1739 add new completers at runtime.
1736
1740
1737 2005-03-19 Fernando Perez <fperez@colorado.edu>
1741 2005-03-19 Fernando Perez <fperez@colorado.edu>
1738
1742
1739 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1743 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1740 allow objects which provide their docstrings via non-standard
1744 allow objects which provide their docstrings via non-standard
1741 mechanisms (like Pyro proxies) to still be inspected by ipython's
1745 mechanisms (like Pyro proxies) to still be inspected by ipython's
1742 ? system.
1746 ? system.
1743
1747
1744 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1748 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1745 automatic capture system. I tried quite hard to make it work
1749 automatic capture system. I tried quite hard to make it work
1746 reliably, and simply failed. I tried many combinations with the
1750 reliably, and simply failed. I tried many combinations with the
1747 subprocess module, but eventually nothing worked in all needed
1751 subprocess module, but eventually nothing worked in all needed
1748 cases (not blocking stdin for the child, duplicating stdout
1752 cases (not blocking stdin for the child, duplicating stdout
1749 without blocking, etc). The new %sc/%sx still do capture to these
1753 without blocking, etc). The new %sc/%sx still do capture to these
1750 magical list/string objects which make shell use much more
1754 magical list/string objects which make shell use much more
1751 conveninent, so not all is lost.
1755 conveninent, so not all is lost.
1752
1756
1753 XXX - FIX MANUAL for the change above!
1757 XXX - FIX MANUAL for the change above!
1754
1758
1755 (runsource): I copied code.py's runsource() into ipython to modify
1759 (runsource): I copied code.py's runsource() into ipython to modify
1756 it a bit. Now the code object and source to be executed are
1760 it a bit. Now the code object and source to be executed are
1757 stored in ipython. This makes this info accessible to third-party
1761 stored in ipython. This makes this info accessible to third-party
1758 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1762 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1759 Mantegazza <mantegazza-AT-ill.fr>.
1763 Mantegazza <mantegazza-AT-ill.fr>.
1760
1764
1761 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1765 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1762 history-search via readline (like C-p/C-n). I'd wanted this for a
1766 history-search via readline (like C-p/C-n). I'd wanted this for a
1763 long time, but only recently found out how to do it. For users
1767 long time, but only recently found out how to do it. For users
1764 who already have their ipythonrc files made and want this, just
1768 who already have their ipythonrc files made and want this, just
1765 add:
1769 add:
1766
1770
1767 readline_parse_and_bind "\e[A": history-search-backward
1771 readline_parse_and_bind "\e[A": history-search-backward
1768 readline_parse_and_bind "\e[B": history-search-forward
1772 readline_parse_and_bind "\e[B": history-search-forward
1769
1773
1770 2005-03-18 Fernando Perez <fperez@colorado.edu>
1774 2005-03-18 Fernando Perez <fperez@colorado.edu>
1771
1775
1772 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1776 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1773 LSString and SList classes which allow transparent conversions
1777 LSString and SList classes which allow transparent conversions
1774 between list mode and whitespace-separated string.
1778 between list mode and whitespace-separated string.
1775 (magic_r): Fix recursion problem in %r.
1779 (magic_r): Fix recursion problem in %r.
1776
1780
1777 * IPython/genutils.py (LSString): New class to be used for
1781 * IPython/genutils.py (LSString): New class to be used for
1778 automatic storage of the results of all alias/system calls in _o
1782 automatic storage of the results of all alias/system calls in _o
1779 and _e (stdout/err). These provide a .l/.list attribute which
1783 and _e (stdout/err). These provide a .l/.list attribute which
1780 does automatic splitting on newlines. This means that for most
1784 does automatic splitting on newlines. This means that for most
1781 uses, you'll never need to do capturing of output with %sc/%sx
1785 uses, you'll never need to do capturing of output with %sc/%sx
1782 anymore, since ipython keeps this always done for you. Note that
1786 anymore, since ipython keeps this always done for you. Note that
1783 only the LAST results are stored, the _o/e variables are
1787 only the LAST results are stored, the _o/e variables are
1784 overwritten on each call. If you need to save their contents
1788 overwritten on each call. If you need to save their contents
1785 further, simply bind them to any other name.
1789 further, simply bind them to any other name.
1786
1790
1787 2005-03-17 Fernando Perez <fperez@colorado.edu>
1791 2005-03-17 Fernando Perez <fperez@colorado.edu>
1788
1792
1789 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1793 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1790 prompt namespace handling.
1794 prompt namespace handling.
1791
1795
1792 2005-03-16 Fernando Perez <fperez@colorado.edu>
1796 2005-03-16 Fernando Perez <fperez@colorado.edu>
1793
1797
1794 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1798 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1795 classic prompts to be '>>> ' (final space was missing, and it
1799 classic prompts to be '>>> ' (final space was missing, and it
1796 trips the emacs python mode).
1800 trips the emacs python mode).
1797 (BasePrompt.__str__): Added safe support for dynamic prompt
1801 (BasePrompt.__str__): Added safe support for dynamic prompt
1798 strings. Now you can set your prompt string to be '$x', and the
1802 strings. Now you can set your prompt string to be '$x', and the
1799 value of x will be printed from your interactive namespace. The
1803 value of x will be printed from your interactive namespace. The
1800 interpolation syntax includes the full Itpl support, so
1804 interpolation syntax includes the full Itpl support, so
1801 ${foo()+x+bar()} is a valid prompt string now, and the function
1805 ${foo()+x+bar()} is a valid prompt string now, and the function
1802 calls will be made at runtime.
1806 calls will be made at runtime.
1803
1807
1804 2005-03-15 Fernando Perez <fperez@colorado.edu>
1808 2005-03-15 Fernando Perez <fperez@colorado.edu>
1805
1809
1806 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1810 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1807 avoid name clashes in pylab. %hist still works, it just forwards
1811 avoid name clashes in pylab. %hist still works, it just forwards
1808 the call to %history.
1812 the call to %history.
1809
1813
1810 2005-03-02 *** Released version 0.6.12
1814 2005-03-02 *** Released version 0.6.12
1811
1815
1812 2005-03-02 Fernando Perez <fperez@colorado.edu>
1816 2005-03-02 Fernando Perez <fperez@colorado.edu>
1813
1817
1814 * IPython/iplib.py (handle_magic): log magic calls properly as
1818 * IPython/iplib.py (handle_magic): log magic calls properly as
1815 ipmagic() function calls.
1819 ipmagic() function calls.
1816
1820
1817 * IPython/Magic.py (magic_time): Improved %time to support
1821 * IPython/Magic.py (magic_time): Improved %time to support
1818 statements and provide wall-clock as well as CPU time.
1822 statements and provide wall-clock as well as CPU time.
1819
1823
1820 2005-02-27 Fernando Perez <fperez@colorado.edu>
1824 2005-02-27 Fernando Perez <fperez@colorado.edu>
1821
1825
1822 * IPython/hooks.py: New hooks module, to expose user-modifiable
1826 * IPython/hooks.py: New hooks module, to expose user-modifiable
1823 IPython functionality in a clean manner. For now only the editor
1827 IPython functionality in a clean manner. For now only the editor
1824 hook is actually written, and other thigns which I intend to turn
1828 hook is actually written, and other thigns which I intend to turn
1825 into proper hooks aren't yet there. The display and prefilter
1829 into proper hooks aren't yet there. The display and prefilter
1826 stuff, for example, should be hooks. But at least now the
1830 stuff, for example, should be hooks. But at least now the
1827 framework is in place, and the rest can be moved here with more
1831 framework is in place, and the rest can be moved here with more
1828 time later. IPython had had a .hooks variable for a long time for
1832 time later. IPython had had a .hooks variable for a long time for
1829 this purpose, but I'd never actually used it for anything.
1833 this purpose, but I'd never actually used it for anything.
1830
1834
1831 2005-02-26 Fernando Perez <fperez@colorado.edu>
1835 2005-02-26 Fernando Perez <fperez@colorado.edu>
1832
1836
1833 * IPython/ipmaker.py (make_IPython): make the default ipython
1837 * IPython/ipmaker.py (make_IPython): make the default ipython
1834 directory be called _ipython under win32, to follow more the
1838 directory be called _ipython under win32, to follow more the
1835 naming peculiarities of that platform (where buggy software like
1839 naming peculiarities of that platform (where buggy software like
1836 Visual Sourcesafe breaks with .named directories). Reported by
1840 Visual Sourcesafe breaks with .named directories). Reported by
1837 Ville Vainio.
1841 Ville Vainio.
1838
1842
1839 2005-02-23 Fernando Perez <fperez@colorado.edu>
1843 2005-02-23 Fernando Perez <fperez@colorado.edu>
1840
1844
1841 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1845 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1842 auto_aliases for win32 which were causing problems. Users can
1846 auto_aliases for win32 which were causing problems. Users can
1843 define the ones they personally like.
1847 define the ones they personally like.
1844
1848
1845 2005-02-21 Fernando Perez <fperez@colorado.edu>
1849 2005-02-21 Fernando Perez <fperez@colorado.edu>
1846
1850
1847 * IPython/Magic.py (magic_time): new magic to time execution of
1851 * IPython/Magic.py (magic_time): new magic to time execution of
1848 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1852 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1849
1853
1850 2005-02-19 Fernando Perez <fperez@colorado.edu>
1854 2005-02-19 Fernando Perez <fperez@colorado.edu>
1851
1855
1852 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1856 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1853 into keys (for prompts, for example).
1857 into keys (for prompts, for example).
1854
1858
1855 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1859 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1856 prompts in case users want them. This introduces a small behavior
1860 prompts in case users want them. This introduces a small behavior
1857 change: ipython does not automatically add a space to all prompts
1861 change: ipython does not automatically add a space to all prompts
1858 anymore. To get the old prompts with a space, users should add it
1862 anymore. To get the old prompts with a space, users should add it
1859 manually to their ipythonrc file, so for example prompt_in1 should
1863 manually to their ipythonrc file, so for example prompt_in1 should
1860 now read 'In [\#]: ' instead of 'In [\#]:'.
1864 now read 'In [\#]: ' instead of 'In [\#]:'.
1861 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1865 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1862 file) to control left-padding of secondary prompts.
1866 file) to control left-padding of secondary prompts.
1863
1867
1864 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1868 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1865 the profiler can't be imported. Fix for Debian, which removed
1869 the profiler can't be imported. Fix for Debian, which removed
1866 profile.py because of License issues. I applied a slightly
1870 profile.py because of License issues. I applied a slightly
1867 modified version of the original Debian patch at
1871 modified version of the original Debian patch at
1868 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1872 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1869
1873
1870 2005-02-17 Fernando Perez <fperez@colorado.edu>
1874 2005-02-17 Fernando Perez <fperez@colorado.edu>
1871
1875
1872 * IPython/genutils.py (native_line_ends): Fix bug which would
1876 * IPython/genutils.py (native_line_ends): Fix bug which would
1873 cause improper line-ends under win32 b/c I was not opening files
1877 cause improper line-ends under win32 b/c I was not opening files
1874 in binary mode. Bug report and fix thanks to Ville.
1878 in binary mode. Bug report and fix thanks to Ville.
1875
1879
1876 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1880 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1877 trying to catch spurious foo[1] autocalls. My fix actually broke
1881 trying to catch spurious foo[1] autocalls. My fix actually broke
1878 ',/' autoquote/call with explicit escape (bad regexp).
1882 ',/' autoquote/call with explicit escape (bad regexp).
1879
1883
1880 2005-02-15 *** Released version 0.6.11
1884 2005-02-15 *** Released version 0.6.11
1881
1885
1882 2005-02-14 Fernando Perez <fperez@colorado.edu>
1886 2005-02-14 Fernando Perez <fperez@colorado.edu>
1883
1887
1884 * IPython/background_jobs.py: New background job management
1888 * IPython/background_jobs.py: New background job management
1885 subsystem. This is implemented via a new set of classes, and
1889 subsystem. This is implemented via a new set of classes, and
1886 IPython now provides a builtin 'jobs' object for background job
1890 IPython now provides a builtin 'jobs' object for background job
1887 execution. A convenience %bg magic serves as a lightweight
1891 execution. A convenience %bg magic serves as a lightweight
1888 frontend for starting the more common type of calls. This was
1892 frontend for starting the more common type of calls. This was
1889 inspired by discussions with B. Granger and the BackgroundCommand
1893 inspired by discussions with B. Granger and the BackgroundCommand
1890 class described in the book Python Scripting for Computational
1894 class described in the book Python Scripting for Computational
1891 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1895 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1892 (although ultimately no code from this text was used, as IPython's
1896 (although ultimately no code from this text was used, as IPython's
1893 system is a separate implementation).
1897 system is a separate implementation).
1894
1898
1895 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1899 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1896 to control the completion of single/double underscore names
1900 to control the completion of single/double underscore names
1897 separately. As documented in the example ipytonrc file, the
1901 separately. As documented in the example ipytonrc file, the
1898 readline_omit__names variable can now be set to 2, to omit even
1902 readline_omit__names variable can now be set to 2, to omit even
1899 single underscore names. Thanks to a patch by Brian Wong
1903 single underscore names. Thanks to a patch by Brian Wong
1900 <BrianWong-AT-AirgoNetworks.Com>.
1904 <BrianWong-AT-AirgoNetworks.Com>.
1901 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1905 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1902 be autocalled as foo([1]) if foo were callable. A problem for
1906 be autocalled as foo([1]) if foo were callable. A problem for
1903 things which are both callable and implement __getitem__.
1907 things which are both callable and implement __getitem__.
1904 (init_readline): Fix autoindentation for win32. Thanks to a patch
1908 (init_readline): Fix autoindentation for win32. Thanks to a patch
1905 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1909 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1906
1910
1907 2005-02-12 Fernando Perez <fperez@colorado.edu>
1911 2005-02-12 Fernando Perez <fperez@colorado.edu>
1908
1912
1909 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1913 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1910 which I had written long ago to sort out user error messages which
1914 which I had written long ago to sort out user error messages which
1911 may occur during startup. This seemed like a good idea initially,
1915 may occur during startup. This seemed like a good idea initially,
1912 but it has proven a disaster in retrospect. I don't want to
1916 but it has proven a disaster in retrospect. I don't want to
1913 change much code for now, so my fix is to set the internal 'debug'
1917 change much code for now, so my fix is to set the internal 'debug'
1914 flag to true everywhere, whose only job was precisely to control
1918 flag to true everywhere, whose only job was precisely to control
1915 this subsystem. This closes issue 28 (as well as avoiding all
1919 this subsystem. This closes issue 28 (as well as avoiding all
1916 sorts of strange hangups which occur from time to time).
1920 sorts of strange hangups which occur from time to time).
1917
1921
1918 2005-02-07 Fernando Perez <fperez@colorado.edu>
1922 2005-02-07 Fernando Perez <fperez@colorado.edu>
1919
1923
1920 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1924 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1921 previous call produced a syntax error.
1925 previous call produced a syntax error.
1922
1926
1923 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1927 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1924 classes without constructor.
1928 classes without constructor.
1925
1929
1926 2005-02-06 Fernando Perez <fperez@colorado.edu>
1930 2005-02-06 Fernando Perez <fperez@colorado.edu>
1927
1931
1928 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1932 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1929 completions with the results of each matcher, so we return results
1933 completions with the results of each matcher, so we return results
1930 to the user from all namespaces. This breaks with ipython
1934 to the user from all namespaces. This breaks with ipython
1931 tradition, but I think it's a nicer behavior. Now you get all
1935 tradition, but I think it's a nicer behavior. Now you get all
1932 possible completions listed, from all possible namespaces (python,
1936 possible completions listed, from all possible namespaces (python,
1933 filesystem, magics...) After a request by John Hunter
1937 filesystem, magics...) After a request by John Hunter
1934 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1938 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1935
1939
1936 2005-02-05 Fernando Perez <fperez@colorado.edu>
1940 2005-02-05 Fernando Perez <fperez@colorado.edu>
1937
1941
1938 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1942 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1939 the call had quote characters in it (the quotes were stripped).
1943 the call had quote characters in it (the quotes were stripped).
1940
1944
1941 2005-01-31 Fernando Perez <fperez@colorado.edu>
1945 2005-01-31 Fernando Perez <fperez@colorado.edu>
1942
1946
1943 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1947 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1944 Itpl.itpl() to make the code more robust against psyco
1948 Itpl.itpl() to make the code more robust against psyco
1945 optimizations.
1949 optimizations.
1946
1950
1947 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1951 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1948 of causing an exception. Quicker, cleaner.
1952 of causing an exception. Quicker, cleaner.
1949
1953
1950 2005-01-28 Fernando Perez <fperez@colorado.edu>
1954 2005-01-28 Fernando Perez <fperez@colorado.edu>
1951
1955
1952 * scripts/ipython_win_post_install.py (install): hardcode
1956 * scripts/ipython_win_post_install.py (install): hardcode
1953 sys.prefix+'python.exe' as the executable path. It turns out that
1957 sys.prefix+'python.exe' as the executable path. It turns out that
1954 during the post-installation run, sys.executable resolves to the
1958 during the post-installation run, sys.executable resolves to the
1955 name of the binary installer! I should report this as a distutils
1959 name of the binary installer! I should report this as a distutils
1956 bug, I think. I updated the .10 release with this tiny fix, to
1960 bug, I think. I updated the .10 release with this tiny fix, to
1957 avoid annoying the lists further.
1961 avoid annoying the lists further.
1958
1962
1959 2005-01-27 *** Released version 0.6.10
1963 2005-01-27 *** Released version 0.6.10
1960
1964
1961 2005-01-27 Fernando Perez <fperez@colorado.edu>
1965 2005-01-27 Fernando Perez <fperez@colorado.edu>
1962
1966
1963 * IPython/numutils.py (norm): Added 'inf' as optional name for
1967 * IPython/numutils.py (norm): Added 'inf' as optional name for
1964 L-infinity norm, included references to mathworld.com for vector
1968 L-infinity norm, included references to mathworld.com for vector
1965 norm definitions.
1969 norm definitions.
1966 (amin/amax): added amin/amax for array min/max. Similar to what
1970 (amin/amax): added amin/amax for array min/max. Similar to what
1967 pylab ships with after the recent reorganization of names.
1971 pylab ships with after the recent reorganization of names.
1968 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1972 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1969
1973
1970 * ipython.el: committed Alex's recent fixes and improvements.
1974 * ipython.el: committed Alex's recent fixes and improvements.
1971 Tested with python-mode from CVS, and it looks excellent. Since
1975 Tested with python-mode from CVS, and it looks excellent. Since
1972 python-mode hasn't released anything in a while, I'm temporarily
1976 python-mode hasn't released anything in a while, I'm temporarily
1973 putting a copy of today's CVS (v 4.70) of python-mode in:
1977 putting a copy of today's CVS (v 4.70) of python-mode in:
1974 http://ipython.scipy.org/tmp/python-mode.el
1978 http://ipython.scipy.org/tmp/python-mode.el
1975
1979
1976 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1980 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1977 sys.executable for the executable name, instead of assuming it's
1981 sys.executable for the executable name, instead of assuming it's
1978 called 'python.exe' (the post-installer would have produced broken
1982 called 'python.exe' (the post-installer would have produced broken
1979 setups on systems with a differently named python binary).
1983 setups on systems with a differently named python binary).
1980
1984
1981 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1985 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1982 references to os.linesep, to make the code more
1986 references to os.linesep, to make the code more
1983 platform-independent. This is also part of the win32 coloring
1987 platform-independent. This is also part of the win32 coloring
1984 fixes.
1988 fixes.
1985
1989
1986 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1990 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1987 lines, which actually cause coloring bugs because the length of
1991 lines, which actually cause coloring bugs because the length of
1988 the line is very difficult to correctly compute with embedded
1992 the line is very difficult to correctly compute with embedded
1989 escapes. This was the source of all the coloring problems under
1993 escapes. This was the source of all the coloring problems under
1990 Win32. I think that _finally_, Win32 users have a properly
1994 Win32. I think that _finally_, Win32 users have a properly
1991 working ipython in all respects. This would never have happened
1995 working ipython in all respects. This would never have happened
1992 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1996 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1993
1997
1994 2005-01-26 *** Released version 0.6.9
1998 2005-01-26 *** Released version 0.6.9
1995
1999
1996 2005-01-25 Fernando Perez <fperez@colorado.edu>
2000 2005-01-25 Fernando Perez <fperez@colorado.edu>
1997
2001
1998 * setup.py: finally, we have a true Windows installer, thanks to
2002 * setup.py: finally, we have a true Windows installer, thanks to
1999 the excellent work of Viktor Ransmayr
2003 the excellent work of Viktor Ransmayr
2000 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2004 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2001 Windows users. The setup routine is quite a bit cleaner thanks to
2005 Windows users. The setup routine is quite a bit cleaner thanks to
2002 this, and the post-install script uses the proper functions to
2006 this, and the post-install script uses the proper functions to
2003 allow a clean de-installation using the standard Windows Control
2007 allow a clean de-installation using the standard Windows Control
2004 Panel.
2008 Panel.
2005
2009
2006 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2010 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2007 environment variable under all OSes (including win32) if
2011 environment variable under all OSes (including win32) if
2008 available. This will give consistency to win32 users who have set
2012 available. This will give consistency to win32 users who have set
2009 this variable for any reason. If os.environ['HOME'] fails, the
2013 this variable for any reason. If os.environ['HOME'] fails, the
2010 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2014 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2011
2015
2012 2005-01-24 Fernando Perez <fperez@colorado.edu>
2016 2005-01-24 Fernando Perez <fperez@colorado.edu>
2013
2017
2014 * IPython/numutils.py (empty_like): add empty_like(), similar to
2018 * IPython/numutils.py (empty_like): add empty_like(), similar to
2015 zeros_like() but taking advantage of the new empty() Numeric routine.
2019 zeros_like() but taking advantage of the new empty() Numeric routine.
2016
2020
2017 2005-01-23 *** Released version 0.6.8
2021 2005-01-23 *** Released version 0.6.8
2018
2022
2019 2005-01-22 Fernando Perez <fperez@colorado.edu>
2023 2005-01-22 Fernando Perez <fperez@colorado.edu>
2020
2024
2021 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2025 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2022 automatic show() calls. After discussing things with JDH, it
2026 automatic show() calls. After discussing things with JDH, it
2023 turns out there are too many corner cases where this can go wrong.
2027 turns out there are too many corner cases where this can go wrong.
2024 It's best not to try to be 'too smart', and simply have ipython
2028 It's best not to try to be 'too smart', and simply have ipython
2025 reproduce as much as possible the default behavior of a normal
2029 reproduce as much as possible the default behavior of a normal
2026 python shell.
2030 python shell.
2027
2031
2028 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2032 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2029 line-splitting regexp and _prefilter() to avoid calling getattr()
2033 line-splitting regexp and _prefilter() to avoid calling getattr()
2030 on assignments. This closes
2034 on assignments. This closes
2031 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2035 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2032 readline uses getattr(), so a simple <TAB> keypress is still
2036 readline uses getattr(), so a simple <TAB> keypress is still
2033 enough to trigger getattr() calls on an object.
2037 enough to trigger getattr() calls on an object.
2034
2038
2035 2005-01-21 Fernando Perez <fperez@colorado.edu>
2039 2005-01-21 Fernando Perez <fperez@colorado.edu>
2036
2040
2037 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2041 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2038 docstring under pylab so it doesn't mask the original.
2042 docstring under pylab so it doesn't mask the original.
2039
2043
2040 2005-01-21 *** Released version 0.6.7
2044 2005-01-21 *** Released version 0.6.7
2041
2045
2042 2005-01-21 Fernando Perez <fperez@colorado.edu>
2046 2005-01-21 Fernando Perez <fperez@colorado.edu>
2043
2047
2044 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2048 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2045 signal handling for win32 users in multithreaded mode.
2049 signal handling for win32 users in multithreaded mode.
2046
2050
2047 2005-01-17 Fernando Perez <fperez@colorado.edu>
2051 2005-01-17 Fernando Perez <fperez@colorado.edu>
2048
2052
2049 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2053 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2050 instances with no __init__. After a crash report by Norbert Nemec
2054 instances with no __init__. After a crash report by Norbert Nemec
2051 <Norbert-AT-nemec-online.de>.
2055 <Norbert-AT-nemec-online.de>.
2052
2056
2053 2005-01-14 Fernando Perez <fperez@colorado.edu>
2057 2005-01-14 Fernando Perez <fperez@colorado.edu>
2054
2058
2055 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2059 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2056 names for verbose exceptions, when multiple dotted names and the
2060 names for verbose exceptions, when multiple dotted names and the
2057 'parent' object were present on the same line.
2061 'parent' object were present on the same line.
2058
2062
2059 2005-01-11 Fernando Perez <fperez@colorado.edu>
2063 2005-01-11 Fernando Perez <fperez@colorado.edu>
2060
2064
2061 * IPython/genutils.py (flag_calls): new utility to trap and flag
2065 * IPython/genutils.py (flag_calls): new utility to trap and flag
2062 calls in functions. I need it to clean up matplotlib support.
2066 calls in functions. I need it to clean up matplotlib support.
2063 Also removed some deprecated code in genutils.
2067 Also removed some deprecated code in genutils.
2064
2068
2065 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2069 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2066 that matplotlib scripts called with %run, which don't call show()
2070 that matplotlib scripts called with %run, which don't call show()
2067 themselves, still have their plotting windows open.
2071 themselves, still have their plotting windows open.
2068
2072
2069 2005-01-05 Fernando Perez <fperez@colorado.edu>
2073 2005-01-05 Fernando Perez <fperez@colorado.edu>
2070
2074
2071 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2075 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2072 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2076 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2073
2077
2074 2004-12-19 Fernando Perez <fperez@colorado.edu>
2078 2004-12-19 Fernando Perez <fperez@colorado.edu>
2075
2079
2076 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2080 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2077 parent_runcode, which was an eyesore. The same result can be
2081 parent_runcode, which was an eyesore. The same result can be
2078 obtained with Python's regular superclass mechanisms.
2082 obtained with Python's regular superclass mechanisms.
2079
2083
2080 2004-12-17 Fernando Perez <fperez@colorado.edu>
2084 2004-12-17 Fernando Perez <fperez@colorado.edu>
2081
2085
2082 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2086 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2083 reported by Prabhu.
2087 reported by Prabhu.
2084 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2088 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2085 sys.stderr) instead of explicitly calling sys.stderr. This helps
2089 sys.stderr) instead of explicitly calling sys.stderr. This helps
2086 maintain our I/O abstractions clean, for future GUI embeddings.
2090 maintain our I/O abstractions clean, for future GUI embeddings.
2087
2091
2088 * IPython/genutils.py (info): added new utility for sys.stderr
2092 * IPython/genutils.py (info): added new utility for sys.stderr
2089 unified info message handling (thin wrapper around warn()).
2093 unified info message handling (thin wrapper around warn()).
2090
2094
2091 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2095 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2092 composite (dotted) names on verbose exceptions.
2096 composite (dotted) names on verbose exceptions.
2093 (VerboseTB.nullrepr): harden against another kind of errors which
2097 (VerboseTB.nullrepr): harden against another kind of errors which
2094 Python's inspect module can trigger, and which were crashing
2098 Python's inspect module can trigger, and which were crashing
2095 IPython. Thanks to a report by Marco Lombardi
2099 IPython. Thanks to a report by Marco Lombardi
2096 <mlombard-AT-ma010192.hq.eso.org>.
2100 <mlombard-AT-ma010192.hq.eso.org>.
2097
2101
2098 2004-12-13 *** Released version 0.6.6
2102 2004-12-13 *** Released version 0.6.6
2099
2103
2100 2004-12-12 Fernando Perez <fperez@colorado.edu>
2104 2004-12-12 Fernando Perez <fperez@colorado.edu>
2101
2105
2102 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2106 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2103 generated by pygtk upon initialization if it was built without
2107 generated by pygtk upon initialization if it was built without
2104 threads (for matplotlib users). After a crash reported by
2108 threads (for matplotlib users). After a crash reported by
2105 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2109 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2106
2110
2107 * IPython/ipmaker.py (make_IPython): fix small bug in the
2111 * IPython/ipmaker.py (make_IPython): fix small bug in the
2108 import_some parameter for multiple imports.
2112 import_some parameter for multiple imports.
2109
2113
2110 * IPython/iplib.py (ipmagic): simplified the interface of
2114 * IPython/iplib.py (ipmagic): simplified the interface of
2111 ipmagic() to take a single string argument, just as it would be
2115 ipmagic() to take a single string argument, just as it would be
2112 typed at the IPython cmd line.
2116 typed at the IPython cmd line.
2113 (ipalias): Added new ipalias() with an interface identical to
2117 (ipalias): Added new ipalias() with an interface identical to
2114 ipmagic(). This completes exposing a pure python interface to the
2118 ipmagic(). This completes exposing a pure python interface to the
2115 alias and magic system, which can be used in loops or more complex
2119 alias and magic system, which can be used in loops or more complex
2116 code where IPython's automatic line mangling is not active.
2120 code where IPython's automatic line mangling is not active.
2117
2121
2118 * IPython/genutils.py (timing): changed interface of timing to
2122 * IPython/genutils.py (timing): changed interface of timing to
2119 simply run code once, which is the most common case. timings()
2123 simply run code once, which is the most common case. timings()
2120 remains unchanged, for the cases where you want multiple runs.
2124 remains unchanged, for the cases where you want multiple runs.
2121
2125
2122 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2126 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2123 bug where Python2.2 crashes with exec'ing code which does not end
2127 bug where Python2.2 crashes with exec'ing code which does not end
2124 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2128 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2125 before.
2129 before.
2126
2130
2127 2004-12-10 Fernando Perez <fperez@colorado.edu>
2131 2004-12-10 Fernando Perez <fperez@colorado.edu>
2128
2132
2129 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2133 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2130 -t to -T, to accomodate the new -t flag in %run (the %run and
2134 -t to -T, to accomodate the new -t flag in %run (the %run and
2131 %prun options are kind of intermixed, and it's not easy to change
2135 %prun options are kind of intermixed, and it's not easy to change
2132 this with the limitations of python's getopt).
2136 this with the limitations of python's getopt).
2133
2137
2134 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2138 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2135 the execution of scripts. It's not as fine-tuned as timeit.py,
2139 the execution of scripts. It's not as fine-tuned as timeit.py,
2136 but it works from inside ipython (and under 2.2, which lacks
2140 but it works from inside ipython (and under 2.2, which lacks
2137 timeit.py). Optionally a number of runs > 1 can be given for
2141 timeit.py). Optionally a number of runs > 1 can be given for
2138 timing very short-running code.
2142 timing very short-running code.
2139
2143
2140 * IPython/genutils.py (uniq_stable): new routine which returns a
2144 * IPython/genutils.py (uniq_stable): new routine which returns a
2141 list of unique elements in any iterable, but in stable order of
2145 list of unique elements in any iterable, but in stable order of
2142 appearance. I needed this for the ultraTB fixes, and it's a handy
2146 appearance. I needed this for the ultraTB fixes, and it's a handy
2143 utility.
2147 utility.
2144
2148
2145 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2149 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2146 dotted names in Verbose exceptions. This had been broken since
2150 dotted names in Verbose exceptions. This had been broken since
2147 the very start, now x.y will properly be printed in a Verbose
2151 the very start, now x.y will properly be printed in a Verbose
2148 traceback, instead of x being shown and y appearing always as an
2152 traceback, instead of x being shown and y appearing always as an
2149 'undefined global'. Getting this to work was a bit tricky,
2153 'undefined global'. Getting this to work was a bit tricky,
2150 because by default python tokenizers are stateless. Saved by
2154 because by default python tokenizers are stateless. Saved by
2151 python's ability to easily add a bit of state to an arbitrary
2155 python's ability to easily add a bit of state to an arbitrary
2152 function (without needing to build a full-blown callable object).
2156 function (without needing to build a full-blown callable object).
2153
2157
2154 Also big cleanup of this code, which had horrendous runtime
2158 Also big cleanup of this code, which had horrendous runtime
2155 lookups of zillions of attributes for colorization. Moved all
2159 lookups of zillions of attributes for colorization. Moved all
2156 this code into a few templates, which make it cleaner and quicker.
2160 this code into a few templates, which make it cleaner and quicker.
2157
2161
2158 Printout quality was also improved for Verbose exceptions: one
2162 Printout quality was also improved for Verbose exceptions: one
2159 variable per line, and memory addresses are printed (this can be
2163 variable per line, and memory addresses are printed (this can be
2160 quite handy in nasty debugging situations, which is what Verbose
2164 quite handy in nasty debugging situations, which is what Verbose
2161 is for).
2165 is for).
2162
2166
2163 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2167 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2164 the command line as scripts to be loaded by embedded instances.
2168 the command line as scripts to be loaded by embedded instances.
2165 Doing so has the potential for an infinite recursion if there are
2169 Doing so has the potential for an infinite recursion if there are
2166 exceptions thrown in the process. This fixes a strange crash
2170 exceptions thrown in the process. This fixes a strange crash
2167 reported by Philippe MULLER <muller-AT-irit.fr>.
2171 reported by Philippe MULLER <muller-AT-irit.fr>.
2168
2172
2169 2004-12-09 Fernando Perez <fperez@colorado.edu>
2173 2004-12-09 Fernando Perez <fperez@colorado.edu>
2170
2174
2171 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2175 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2172 to reflect new names in matplotlib, which now expose the
2176 to reflect new names in matplotlib, which now expose the
2173 matlab-compatible interface via a pylab module instead of the
2177 matlab-compatible interface via a pylab module instead of the
2174 'matlab' name. The new code is backwards compatible, so users of
2178 'matlab' name. The new code is backwards compatible, so users of
2175 all matplotlib versions are OK. Patch by J. Hunter.
2179 all matplotlib versions are OK. Patch by J. Hunter.
2176
2180
2177 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2181 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2178 of __init__ docstrings for instances (class docstrings are already
2182 of __init__ docstrings for instances (class docstrings are already
2179 automatically printed). Instances with customized docstrings
2183 automatically printed). Instances with customized docstrings
2180 (indep. of the class) are also recognized and all 3 separate
2184 (indep. of the class) are also recognized and all 3 separate
2181 docstrings are printed (instance, class, constructor). After some
2185 docstrings are printed (instance, class, constructor). After some
2182 comments/suggestions by J. Hunter.
2186 comments/suggestions by J. Hunter.
2183
2187
2184 2004-12-05 Fernando Perez <fperez@colorado.edu>
2188 2004-12-05 Fernando Perez <fperez@colorado.edu>
2185
2189
2186 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2190 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2187 warnings when tab-completion fails and triggers an exception.
2191 warnings when tab-completion fails and triggers an exception.
2188
2192
2189 2004-12-03 Fernando Perez <fperez@colorado.edu>
2193 2004-12-03 Fernando Perez <fperez@colorado.edu>
2190
2194
2191 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2195 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2192 be triggered when using 'run -p'. An incorrect option flag was
2196 be triggered when using 'run -p'. An incorrect option flag was
2193 being set ('d' instead of 'D').
2197 being set ('d' instead of 'D').
2194 (manpage): fix missing escaped \- sign.
2198 (manpage): fix missing escaped \- sign.
2195
2199
2196 2004-11-30 *** Released version 0.6.5
2200 2004-11-30 *** Released version 0.6.5
2197
2201
2198 2004-11-30 Fernando Perez <fperez@colorado.edu>
2202 2004-11-30 Fernando Perez <fperez@colorado.edu>
2199
2203
2200 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2204 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2201 setting with -d option.
2205 setting with -d option.
2202
2206
2203 * setup.py (docfiles): Fix problem where the doc glob I was using
2207 * setup.py (docfiles): Fix problem where the doc glob I was using
2204 was COMPLETELY BROKEN. It was giving the right files by pure
2208 was COMPLETELY BROKEN. It was giving the right files by pure
2205 accident, but failed once I tried to include ipython.el. Note:
2209 accident, but failed once I tried to include ipython.el. Note:
2206 glob() does NOT allow you to do exclusion on multiple endings!
2210 glob() does NOT allow you to do exclusion on multiple endings!
2207
2211
2208 2004-11-29 Fernando Perez <fperez@colorado.edu>
2212 2004-11-29 Fernando Perez <fperez@colorado.edu>
2209
2213
2210 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2214 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2211 the manpage as the source. Better formatting & consistency.
2215 the manpage as the source. Better formatting & consistency.
2212
2216
2213 * IPython/Magic.py (magic_run): Added new -d option, to run
2217 * IPython/Magic.py (magic_run): Added new -d option, to run
2214 scripts under the control of the python pdb debugger. Note that
2218 scripts under the control of the python pdb debugger. Note that
2215 this required changing the %prun option -d to -D, to avoid a clash
2219 this required changing the %prun option -d to -D, to avoid a clash
2216 (since %run must pass options to %prun, and getopt is too dumb to
2220 (since %run must pass options to %prun, and getopt is too dumb to
2217 handle options with string values with embedded spaces). Thanks
2221 handle options with string values with embedded spaces). Thanks
2218 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2222 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2219 (magic_who_ls): added type matching to %who and %whos, so that one
2223 (magic_who_ls): added type matching to %who and %whos, so that one
2220 can filter their output to only include variables of certain
2224 can filter their output to only include variables of certain
2221 types. Another suggestion by Matthew.
2225 types. Another suggestion by Matthew.
2222 (magic_whos): Added memory summaries in kb and Mb for arrays.
2226 (magic_whos): Added memory summaries in kb and Mb for arrays.
2223 (magic_who): Improve formatting (break lines every 9 vars).
2227 (magic_who): Improve formatting (break lines every 9 vars).
2224
2228
2225 2004-11-28 Fernando Perez <fperez@colorado.edu>
2229 2004-11-28 Fernando Perez <fperez@colorado.edu>
2226
2230
2227 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2231 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2228 cache when empty lines were present.
2232 cache when empty lines were present.
2229
2233
2230 2004-11-24 Fernando Perez <fperez@colorado.edu>
2234 2004-11-24 Fernando Perez <fperez@colorado.edu>
2231
2235
2232 * IPython/usage.py (__doc__): document the re-activated threading
2236 * IPython/usage.py (__doc__): document the re-activated threading
2233 options for WX and GTK.
2237 options for WX and GTK.
2234
2238
2235 2004-11-23 Fernando Perez <fperez@colorado.edu>
2239 2004-11-23 Fernando Perez <fperez@colorado.edu>
2236
2240
2237 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2241 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2238 the -wthread and -gthread options, along with a new -tk one to try
2242 the -wthread and -gthread options, along with a new -tk one to try
2239 and coordinate Tk threading with wx/gtk. The tk support is very
2243 and coordinate Tk threading with wx/gtk. The tk support is very
2240 platform dependent, since it seems to require Tcl and Tk to be
2244 platform dependent, since it seems to require Tcl and Tk to be
2241 built with threads (Fedora1/2 appears NOT to have it, but in
2245 built with threads (Fedora1/2 appears NOT to have it, but in
2242 Prabhu's Debian boxes it works OK). But even with some Tk
2246 Prabhu's Debian boxes it works OK). But even with some Tk
2243 limitations, this is a great improvement.
2247 limitations, this is a great improvement.
2244
2248
2245 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2249 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2246 info in user prompts. Patch by Prabhu.
2250 info in user prompts. Patch by Prabhu.
2247
2251
2248 2004-11-18 Fernando Perez <fperez@colorado.edu>
2252 2004-11-18 Fernando Perez <fperez@colorado.edu>
2249
2253
2250 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2254 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2251 EOFErrors and bail, to avoid infinite loops if a non-terminating
2255 EOFErrors and bail, to avoid infinite loops if a non-terminating
2252 file is fed into ipython. Patch submitted in issue 19 by user,
2256 file is fed into ipython. Patch submitted in issue 19 by user,
2253 many thanks.
2257 many thanks.
2254
2258
2255 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2259 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2256 autoquote/parens in continuation prompts, which can cause lots of
2260 autoquote/parens in continuation prompts, which can cause lots of
2257 problems. Closes roundup issue 20.
2261 problems. Closes roundup issue 20.
2258
2262
2259 2004-11-17 Fernando Perez <fperez@colorado.edu>
2263 2004-11-17 Fernando Perez <fperez@colorado.edu>
2260
2264
2261 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2265 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2262 reported as debian bug #280505. I'm not sure my local changelog
2266 reported as debian bug #280505. I'm not sure my local changelog
2263 entry has the proper debian format (Jack?).
2267 entry has the proper debian format (Jack?).
2264
2268
2265 2004-11-08 *** Released version 0.6.4
2269 2004-11-08 *** Released version 0.6.4
2266
2270
2267 2004-11-08 Fernando Perez <fperez@colorado.edu>
2271 2004-11-08 Fernando Perez <fperez@colorado.edu>
2268
2272
2269 * IPython/iplib.py (init_readline): Fix exit message for Windows
2273 * IPython/iplib.py (init_readline): Fix exit message for Windows
2270 when readline is active. Thanks to a report by Eric Jones
2274 when readline is active. Thanks to a report by Eric Jones
2271 <eric-AT-enthought.com>.
2275 <eric-AT-enthought.com>.
2272
2276
2273 2004-11-07 Fernando Perez <fperez@colorado.edu>
2277 2004-11-07 Fernando Perez <fperez@colorado.edu>
2274
2278
2275 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2279 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2276 sometimes seen by win2k/cygwin users.
2280 sometimes seen by win2k/cygwin users.
2277
2281
2278 2004-11-06 Fernando Perez <fperez@colorado.edu>
2282 2004-11-06 Fernando Perez <fperez@colorado.edu>
2279
2283
2280 * IPython/iplib.py (interact): Change the handling of %Exit from
2284 * IPython/iplib.py (interact): Change the handling of %Exit from
2281 trying to propagate a SystemExit to an internal ipython flag.
2285 trying to propagate a SystemExit to an internal ipython flag.
2282 This is less elegant than using Python's exception mechanism, but
2286 This is less elegant than using Python's exception mechanism, but
2283 I can't get that to work reliably with threads, so under -pylab
2287 I can't get that to work reliably with threads, so under -pylab
2284 %Exit was hanging IPython. Cross-thread exception handling is
2288 %Exit was hanging IPython. Cross-thread exception handling is
2285 really a bitch. Thaks to a bug report by Stephen Walton
2289 really a bitch. Thaks to a bug report by Stephen Walton
2286 <stephen.walton-AT-csun.edu>.
2290 <stephen.walton-AT-csun.edu>.
2287
2291
2288 2004-11-04 Fernando Perez <fperez@colorado.edu>
2292 2004-11-04 Fernando Perez <fperez@colorado.edu>
2289
2293
2290 * IPython/iplib.py (raw_input_original): store a pointer to the
2294 * IPython/iplib.py (raw_input_original): store a pointer to the
2291 true raw_input to harden against code which can modify it
2295 true raw_input to harden against code which can modify it
2292 (wx.py.PyShell does this and would otherwise crash ipython).
2296 (wx.py.PyShell does this and would otherwise crash ipython).
2293 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2297 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2294
2298
2295 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2299 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2296 Ctrl-C problem, which does not mess up the input line.
2300 Ctrl-C problem, which does not mess up the input line.
2297
2301
2298 2004-11-03 Fernando Perez <fperez@colorado.edu>
2302 2004-11-03 Fernando Perez <fperez@colorado.edu>
2299
2303
2300 * IPython/Release.py: Changed licensing to BSD, in all files.
2304 * IPython/Release.py: Changed licensing to BSD, in all files.
2301 (name): lowercase name for tarball/RPM release.
2305 (name): lowercase name for tarball/RPM release.
2302
2306
2303 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2307 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2304 use throughout ipython.
2308 use throughout ipython.
2305
2309
2306 * IPython/Magic.py (Magic._ofind): Switch to using the new
2310 * IPython/Magic.py (Magic._ofind): Switch to using the new
2307 OInspect.getdoc() function.
2311 OInspect.getdoc() function.
2308
2312
2309 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2313 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2310 of the line currently being canceled via Ctrl-C. It's extremely
2314 of the line currently being canceled via Ctrl-C. It's extremely
2311 ugly, but I don't know how to do it better (the problem is one of
2315 ugly, but I don't know how to do it better (the problem is one of
2312 handling cross-thread exceptions).
2316 handling cross-thread exceptions).
2313
2317
2314 2004-10-28 Fernando Perez <fperez@colorado.edu>
2318 2004-10-28 Fernando Perez <fperez@colorado.edu>
2315
2319
2316 * IPython/Shell.py (signal_handler): add signal handlers to trap
2320 * IPython/Shell.py (signal_handler): add signal handlers to trap
2317 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2321 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2318 report by Francesc Alted.
2322 report by Francesc Alted.
2319
2323
2320 2004-10-21 Fernando Perez <fperez@colorado.edu>
2324 2004-10-21 Fernando Perez <fperez@colorado.edu>
2321
2325
2322 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2326 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2323 to % for pysh syntax extensions.
2327 to % for pysh syntax extensions.
2324
2328
2325 2004-10-09 Fernando Perez <fperez@colorado.edu>
2329 2004-10-09 Fernando Perez <fperez@colorado.edu>
2326
2330
2327 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2331 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2328 arrays to print a more useful summary, without calling str(arr).
2332 arrays to print a more useful summary, without calling str(arr).
2329 This avoids the problem of extremely lengthy computations which
2333 This avoids the problem of extremely lengthy computations which
2330 occur if arr is large, and appear to the user as a system lockup
2334 occur if arr is large, and appear to the user as a system lockup
2331 with 100% cpu activity. After a suggestion by Kristian Sandberg
2335 with 100% cpu activity. After a suggestion by Kristian Sandberg
2332 <Kristian.Sandberg@colorado.edu>.
2336 <Kristian.Sandberg@colorado.edu>.
2333 (Magic.__init__): fix bug in global magic escapes not being
2337 (Magic.__init__): fix bug in global magic escapes not being
2334 correctly set.
2338 correctly set.
2335
2339
2336 2004-10-08 Fernando Perez <fperez@colorado.edu>
2340 2004-10-08 Fernando Perez <fperez@colorado.edu>
2337
2341
2338 * IPython/Magic.py (__license__): change to absolute imports of
2342 * IPython/Magic.py (__license__): change to absolute imports of
2339 ipython's own internal packages, to start adapting to the absolute
2343 ipython's own internal packages, to start adapting to the absolute
2340 import requirement of PEP-328.
2344 import requirement of PEP-328.
2341
2345
2342 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2346 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2343 files, and standardize author/license marks through the Release
2347 files, and standardize author/license marks through the Release
2344 module instead of having per/file stuff (except for files with
2348 module instead of having per/file stuff (except for files with
2345 particular licenses, like the MIT/PSF-licensed codes).
2349 particular licenses, like the MIT/PSF-licensed codes).
2346
2350
2347 * IPython/Debugger.py: remove dead code for python 2.1
2351 * IPython/Debugger.py: remove dead code for python 2.1
2348
2352
2349 2004-10-04 Fernando Perez <fperez@colorado.edu>
2353 2004-10-04 Fernando Perez <fperez@colorado.edu>
2350
2354
2351 * IPython/iplib.py (ipmagic): New function for accessing magics
2355 * IPython/iplib.py (ipmagic): New function for accessing magics
2352 via a normal python function call.
2356 via a normal python function call.
2353
2357
2354 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2358 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2355 from '@' to '%', to accomodate the new @decorator syntax of python
2359 from '@' to '%', to accomodate the new @decorator syntax of python
2356 2.4.
2360 2.4.
2357
2361
2358 2004-09-29 Fernando Perez <fperez@colorado.edu>
2362 2004-09-29 Fernando Perez <fperez@colorado.edu>
2359
2363
2360 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2364 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2361 matplotlib.use to prevent running scripts which try to switch
2365 matplotlib.use to prevent running scripts which try to switch
2362 interactive backends from within ipython. This will just crash
2366 interactive backends from within ipython. This will just crash
2363 the python interpreter, so we can't allow it (but a detailed error
2367 the python interpreter, so we can't allow it (but a detailed error
2364 is given to the user).
2368 is given to the user).
2365
2369
2366 2004-09-28 Fernando Perez <fperez@colorado.edu>
2370 2004-09-28 Fernando Perez <fperez@colorado.edu>
2367
2371
2368 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2372 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2369 matplotlib-related fixes so that using @run with non-matplotlib
2373 matplotlib-related fixes so that using @run with non-matplotlib
2370 scripts doesn't pop up spurious plot windows. This requires
2374 scripts doesn't pop up spurious plot windows. This requires
2371 matplotlib >= 0.63, where I had to make some changes as well.
2375 matplotlib >= 0.63, where I had to make some changes as well.
2372
2376
2373 * IPython/ipmaker.py (make_IPython): update version requirement to
2377 * IPython/ipmaker.py (make_IPython): update version requirement to
2374 python 2.2.
2378 python 2.2.
2375
2379
2376 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2380 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2377 banner arg for embedded customization.
2381 banner arg for embedded customization.
2378
2382
2379 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2383 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2380 explicit uses of __IP as the IPython's instance name. Now things
2384 explicit uses of __IP as the IPython's instance name. Now things
2381 are properly handled via the shell.name value. The actual code
2385 are properly handled via the shell.name value. The actual code
2382 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2386 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2383 is much better than before. I'll clean things completely when the
2387 is much better than before. I'll clean things completely when the
2384 magic stuff gets a real overhaul.
2388 magic stuff gets a real overhaul.
2385
2389
2386 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2390 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2387 minor changes to debian dir.
2391 minor changes to debian dir.
2388
2392
2389 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2393 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2390 pointer to the shell itself in the interactive namespace even when
2394 pointer to the shell itself in the interactive namespace even when
2391 a user-supplied dict is provided. This is needed for embedding
2395 a user-supplied dict is provided. This is needed for embedding
2392 purposes (found by tests with Michel Sanner).
2396 purposes (found by tests with Michel Sanner).
2393
2397
2394 2004-09-27 Fernando Perez <fperez@colorado.edu>
2398 2004-09-27 Fernando Perez <fperez@colorado.edu>
2395
2399
2396 * IPython/UserConfig/ipythonrc: remove []{} from
2400 * IPython/UserConfig/ipythonrc: remove []{} from
2397 readline_remove_delims, so that things like [modname.<TAB> do
2401 readline_remove_delims, so that things like [modname.<TAB> do
2398 proper completion. This disables [].TAB, but that's a less common
2402 proper completion. This disables [].TAB, but that's a less common
2399 case than module names in list comprehensions, for example.
2403 case than module names in list comprehensions, for example.
2400 Thanks to a report by Andrea Riciputi.
2404 Thanks to a report by Andrea Riciputi.
2401
2405
2402 2004-09-09 Fernando Perez <fperez@colorado.edu>
2406 2004-09-09 Fernando Perez <fperez@colorado.edu>
2403
2407
2404 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2408 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2405 blocking problems in win32 and osx. Fix by John.
2409 blocking problems in win32 and osx. Fix by John.
2406
2410
2407 2004-09-08 Fernando Perez <fperez@colorado.edu>
2411 2004-09-08 Fernando Perez <fperez@colorado.edu>
2408
2412
2409 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2413 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2410 for Win32 and OSX. Fix by John Hunter.
2414 for Win32 and OSX. Fix by John Hunter.
2411
2415
2412 2004-08-30 *** Released version 0.6.3
2416 2004-08-30 *** Released version 0.6.3
2413
2417
2414 2004-08-30 Fernando Perez <fperez@colorado.edu>
2418 2004-08-30 Fernando Perez <fperez@colorado.edu>
2415
2419
2416 * setup.py (isfile): Add manpages to list of dependent files to be
2420 * setup.py (isfile): Add manpages to list of dependent files to be
2417 updated.
2421 updated.
2418
2422
2419 2004-08-27 Fernando Perez <fperez@colorado.edu>
2423 2004-08-27 Fernando Perez <fperez@colorado.edu>
2420
2424
2421 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2425 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2422 for now. They don't really work with standalone WX/GTK code
2426 for now. They don't really work with standalone WX/GTK code
2423 (though matplotlib IS working fine with both of those backends).
2427 (though matplotlib IS working fine with both of those backends).
2424 This will neeed much more testing. I disabled most things with
2428 This will neeed much more testing. I disabled most things with
2425 comments, so turning it back on later should be pretty easy.
2429 comments, so turning it back on later should be pretty easy.
2426
2430
2427 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2431 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2428 autocalling of expressions like r'foo', by modifying the line
2432 autocalling of expressions like r'foo', by modifying the line
2429 split regexp. Closes
2433 split regexp. Closes
2430 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2434 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2431 Riley <ipythonbugs-AT-sabi.net>.
2435 Riley <ipythonbugs-AT-sabi.net>.
2432 (InteractiveShell.mainloop): honor --nobanner with banner
2436 (InteractiveShell.mainloop): honor --nobanner with banner
2433 extensions.
2437 extensions.
2434
2438
2435 * IPython/Shell.py: Significant refactoring of all classes, so
2439 * IPython/Shell.py: Significant refactoring of all classes, so
2436 that we can really support ALL matplotlib backends and threading
2440 that we can really support ALL matplotlib backends and threading
2437 models (John spotted a bug with Tk which required this). Now we
2441 models (John spotted a bug with Tk which required this). Now we
2438 should support single-threaded, WX-threads and GTK-threads, both
2442 should support single-threaded, WX-threads and GTK-threads, both
2439 for generic code and for matplotlib.
2443 for generic code and for matplotlib.
2440
2444
2441 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2445 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2442 -pylab, to simplify things for users. Will also remove the pylab
2446 -pylab, to simplify things for users. Will also remove the pylab
2443 profile, since now all of matplotlib configuration is directly
2447 profile, since now all of matplotlib configuration is directly
2444 handled here. This also reduces startup time.
2448 handled here. This also reduces startup time.
2445
2449
2446 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2450 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2447 shell wasn't being correctly called. Also in IPShellWX.
2451 shell wasn't being correctly called. Also in IPShellWX.
2448
2452
2449 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2453 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2450 fine-tune banner.
2454 fine-tune banner.
2451
2455
2452 * IPython/numutils.py (spike): Deprecate these spike functions,
2456 * IPython/numutils.py (spike): Deprecate these spike functions,
2453 delete (long deprecated) gnuplot_exec handler.
2457 delete (long deprecated) gnuplot_exec handler.
2454
2458
2455 2004-08-26 Fernando Perez <fperez@colorado.edu>
2459 2004-08-26 Fernando Perez <fperez@colorado.edu>
2456
2460
2457 * ipython.1: Update for threading options, plus some others which
2461 * ipython.1: Update for threading options, plus some others which
2458 were missing.
2462 were missing.
2459
2463
2460 * IPython/ipmaker.py (__call__): Added -wthread option for
2464 * IPython/ipmaker.py (__call__): Added -wthread option for
2461 wxpython thread handling. Make sure threading options are only
2465 wxpython thread handling. Make sure threading options are only
2462 valid at the command line.
2466 valid at the command line.
2463
2467
2464 * scripts/ipython: moved shell selection into a factory function
2468 * scripts/ipython: moved shell selection into a factory function
2465 in Shell.py, to keep the starter script to a minimum.
2469 in Shell.py, to keep the starter script to a minimum.
2466
2470
2467 2004-08-25 Fernando Perez <fperez@colorado.edu>
2471 2004-08-25 Fernando Perez <fperez@colorado.edu>
2468
2472
2469 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2473 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2470 John. Along with some recent changes he made to matplotlib, the
2474 John. Along with some recent changes he made to matplotlib, the
2471 next versions of both systems should work very well together.
2475 next versions of both systems should work very well together.
2472
2476
2473 2004-08-24 Fernando Perez <fperez@colorado.edu>
2477 2004-08-24 Fernando Perez <fperez@colorado.edu>
2474
2478
2475 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2479 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2476 tried to switch the profiling to using hotshot, but I'm getting
2480 tried to switch the profiling to using hotshot, but I'm getting
2477 strange errors from prof.runctx() there. I may be misreading the
2481 strange errors from prof.runctx() there. I may be misreading the
2478 docs, but it looks weird. For now the profiling code will
2482 docs, but it looks weird. For now the profiling code will
2479 continue to use the standard profiler.
2483 continue to use the standard profiler.
2480
2484
2481 2004-08-23 Fernando Perez <fperez@colorado.edu>
2485 2004-08-23 Fernando Perez <fperez@colorado.edu>
2482
2486
2483 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2487 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2484 threaded shell, by John Hunter. It's not quite ready yet, but
2488 threaded shell, by John Hunter. It's not quite ready yet, but
2485 close.
2489 close.
2486
2490
2487 2004-08-22 Fernando Perez <fperez@colorado.edu>
2491 2004-08-22 Fernando Perez <fperez@colorado.edu>
2488
2492
2489 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2493 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2490 in Magic and ultraTB.
2494 in Magic and ultraTB.
2491
2495
2492 * ipython.1: document threading options in manpage.
2496 * ipython.1: document threading options in manpage.
2493
2497
2494 * scripts/ipython: Changed name of -thread option to -gthread,
2498 * scripts/ipython: Changed name of -thread option to -gthread,
2495 since this is GTK specific. I want to leave the door open for a
2499 since this is GTK specific. I want to leave the door open for a
2496 -wthread option for WX, which will most likely be necessary. This
2500 -wthread option for WX, which will most likely be necessary. This
2497 change affects usage and ipmaker as well.
2501 change affects usage and ipmaker as well.
2498
2502
2499 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2503 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2500 handle the matplotlib shell issues. Code by John Hunter
2504 handle the matplotlib shell issues. Code by John Hunter
2501 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2505 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2502 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2506 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2503 broken (and disabled for end users) for now, but it puts the
2507 broken (and disabled for end users) for now, but it puts the
2504 infrastructure in place.
2508 infrastructure in place.
2505
2509
2506 2004-08-21 Fernando Perez <fperez@colorado.edu>
2510 2004-08-21 Fernando Perez <fperez@colorado.edu>
2507
2511
2508 * ipythonrc-pylab: Add matplotlib support.
2512 * ipythonrc-pylab: Add matplotlib support.
2509
2513
2510 * matplotlib_config.py: new files for matplotlib support, part of
2514 * matplotlib_config.py: new files for matplotlib support, part of
2511 the pylab profile.
2515 the pylab profile.
2512
2516
2513 * IPython/usage.py (__doc__): documented the threading options.
2517 * IPython/usage.py (__doc__): documented the threading options.
2514
2518
2515 2004-08-20 Fernando Perez <fperez@colorado.edu>
2519 2004-08-20 Fernando Perez <fperez@colorado.edu>
2516
2520
2517 * ipython: Modified the main calling routine to handle the -thread
2521 * ipython: Modified the main calling routine to handle the -thread
2518 and -mpthread options. This needs to be done as a top-level hack,
2522 and -mpthread options. This needs to be done as a top-level hack,
2519 because it determines which class to instantiate for IPython
2523 because it determines which class to instantiate for IPython
2520 itself.
2524 itself.
2521
2525
2522 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2526 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2523 classes to support multithreaded GTK operation without blocking,
2527 classes to support multithreaded GTK operation without blocking,
2524 and matplotlib with all backends. This is a lot of still very
2528 and matplotlib with all backends. This is a lot of still very
2525 experimental code, and threads are tricky. So it may still have a
2529 experimental code, and threads are tricky. So it may still have a
2526 few rough edges... This code owes a lot to
2530 few rough edges... This code owes a lot to
2527 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2531 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2528 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2532 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2529 to John Hunter for all the matplotlib work.
2533 to John Hunter for all the matplotlib work.
2530
2534
2531 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2535 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2532 options for gtk thread and matplotlib support.
2536 options for gtk thread and matplotlib support.
2533
2537
2534 2004-08-16 Fernando Perez <fperez@colorado.edu>
2538 2004-08-16 Fernando Perez <fperez@colorado.edu>
2535
2539
2536 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2540 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2537 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2541 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2538 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2542 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2539
2543
2540 2004-08-11 Fernando Perez <fperez@colorado.edu>
2544 2004-08-11 Fernando Perez <fperez@colorado.edu>
2541
2545
2542 * setup.py (isfile): Fix build so documentation gets updated for
2546 * setup.py (isfile): Fix build so documentation gets updated for
2543 rpms (it was only done for .tgz builds).
2547 rpms (it was only done for .tgz builds).
2544
2548
2545 2004-08-10 Fernando Perez <fperez@colorado.edu>
2549 2004-08-10 Fernando Perez <fperez@colorado.edu>
2546
2550
2547 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2551 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2548
2552
2549 * iplib.py : Silence syntax error exceptions in tab-completion.
2553 * iplib.py : Silence syntax error exceptions in tab-completion.
2550
2554
2551 2004-08-05 Fernando Perez <fperez@colorado.edu>
2555 2004-08-05 Fernando Perez <fperez@colorado.edu>
2552
2556
2553 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2557 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2554 'color off' mark for continuation prompts. This was causing long
2558 'color off' mark for continuation prompts. This was causing long
2555 continuation lines to mis-wrap.
2559 continuation lines to mis-wrap.
2556
2560
2557 2004-08-01 Fernando Perez <fperez@colorado.edu>
2561 2004-08-01 Fernando Perez <fperez@colorado.edu>
2558
2562
2559 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2563 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2560 for building ipython to be a parameter. All this is necessary
2564 for building ipython to be a parameter. All this is necessary
2561 right now to have a multithreaded version, but this insane
2565 right now to have a multithreaded version, but this insane
2562 non-design will be cleaned up soon. For now, it's a hack that
2566 non-design will be cleaned up soon. For now, it's a hack that
2563 works.
2567 works.
2564
2568
2565 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2569 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2566 args in various places. No bugs so far, but it's a dangerous
2570 args in various places. No bugs so far, but it's a dangerous
2567 practice.
2571 practice.
2568
2572
2569 2004-07-31 Fernando Perez <fperez@colorado.edu>
2573 2004-07-31 Fernando Perez <fperez@colorado.edu>
2570
2574
2571 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2575 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2572 fix completion of files with dots in their names under most
2576 fix completion of files with dots in their names under most
2573 profiles (pysh was OK because the completion order is different).
2577 profiles (pysh was OK because the completion order is different).
2574
2578
2575 2004-07-27 Fernando Perez <fperez@colorado.edu>
2579 2004-07-27 Fernando Perez <fperez@colorado.edu>
2576
2580
2577 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2581 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2578 keywords manually, b/c the one in keyword.py was removed in python
2582 keywords manually, b/c the one in keyword.py was removed in python
2579 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2583 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2580 This is NOT a bug under python 2.3 and earlier.
2584 This is NOT a bug under python 2.3 and earlier.
2581
2585
2582 2004-07-26 Fernando Perez <fperez@colorado.edu>
2586 2004-07-26 Fernando Perez <fperez@colorado.edu>
2583
2587
2584 * IPython/ultraTB.py (VerboseTB.text): Add another
2588 * IPython/ultraTB.py (VerboseTB.text): Add another
2585 linecache.checkcache() call to try to prevent inspect.py from
2589 linecache.checkcache() call to try to prevent inspect.py from
2586 crashing under python 2.3. I think this fixes
2590 crashing under python 2.3. I think this fixes
2587 http://www.scipy.net/roundup/ipython/issue17.
2591 http://www.scipy.net/roundup/ipython/issue17.
2588
2592
2589 2004-07-26 *** Released version 0.6.2
2593 2004-07-26 *** Released version 0.6.2
2590
2594
2591 2004-07-26 Fernando Perez <fperez@colorado.edu>
2595 2004-07-26 Fernando Perez <fperez@colorado.edu>
2592
2596
2593 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2597 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2594 fail for any number.
2598 fail for any number.
2595 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2599 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2596 empty bookmarks.
2600 empty bookmarks.
2597
2601
2598 2004-07-26 *** Released version 0.6.1
2602 2004-07-26 *** Released version 0.6.1
2599
2603
2600 2004-07-26 Fernando Perez <fperez@colorado.edu>
2604 2004-07-26 Fernando Perez <fperez@colorado.edu>
2601
2605
2602 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2606 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2603
2607
2604 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2608 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2605 escaping '()[]{}' in filenames.
2609 escaping '()[]{}' in filenames.
2606
2610
2607 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2611 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2608 Python 2.2 users who lack a proper shlex.split.
2612 Python 2.2 users who lack a proper shlex.split.
2609
2613
2610 2004-07-19 Fernando Perez <fperez@colorado.edu>
2614 2004-07-19 Fernando Perez <fperez@colorado.edu>
2611
2615
2612 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2616 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2613 for reading readline's init file. I follow the normal chain:
2617 for reading readline's init file. I follow the normal chain:
2614 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2618 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2615 report by Mike Heeter. This closes
2619 report by Mike Heeter. This closes
2616 http://www.scipy.net/roundup/ipython/issue16.
2620 http://www.scipy.net/roundup/ipython/issue16.
2617
2621
2618 2004-07-18 Fernando Perez <fperez@colorado.edu>
2622 2004-07-18 Fernando Perez <fperez@colorado.edu>
2619
2623
2620 * IPython/iplib.py (__init__): Add better handling of '\' under
2624 * IPython/iplib.py (__init__): Add better handling of '\' under
2621 Win32 for filenames. After a patch by Ville.
2625 Win32 for filenames. After a patch by Ville.
2622
2626
2623 2004-07-17 Fernando Perez <fperez@colorado.edu>
2627 2004-07-17 Fernando Perez <fperez@colorado.edu>
2624
2628
2625 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2629 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2626 autocalling would be triggered for 'foo is bar' if foo is
2630 autocalling would be triggered for 'foo is bar' if foo is
2627 callable. I also cleaned up the autocall detection code to use a
2631 callable. I also cleaned up the autocall detection code to use a
2628 regexp, which is faster. Bug reported by Alexander Schmolck.
2632 regexp, which is faster. Bug reported by Alexander Schmolck.
2629
2633
2630 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2634 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2631 '?' in them would confuse the help system. Reported by Alex
2635 '?' in them would confuse the help system. Reported by Alex
2632 Schmolck.
2636 Schmolck.
2633
2637
2634 2004-07-16 Fernando Perez <fperez@colorado.edu>
2638 2004-07-16 Fernando Perez <fperez@colorado.edu>
2635
2639
2636 * IPython/GnuplotInteractive.py (__all__): added plot2.
2640 * IPython/GnuplotInteractive.py (__all__): added plot2.
2637
2641
2638 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2642 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2639 plotting dictionaries, lists or tuples of 1d arrays.
2643 plotting dictionaries, lists or tuples of 1d arrays.
2640
2644
2641 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2645 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2642 optimizations.
2646 optimizations.
2643
2647
2644 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2648 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2645 the information which was there from Janko's original IPP code:
2649 the information which was there from Janko's original IPP code:
2646
2650
2647 03.05.99 20:53 porto.ifm.uni-kiel.de
2651 03.05.99 20:53 porto.ifm.uni-kiel.de
2648 --Started changelog.
2652 --Started changelog.
2649 --make clear do what it say it does
2653 --make clear do what it say it does
2650 --added pretty output of lines from inputcache
2654 --added pretty output of lines from inputcache
2651 --Made Logger a mixin class, simplifies handling of switches
2655 --Made Logger a mixin class, simplifies handling of switches
2652 --Added own completer class. .string<TAB> expands to last history
2656 --Added own completer class. .string<TAB> expands to last history
2653 line which starts with string. The new expansion is also present
2657 line which starts with string. The new expansion is also present
2654 with Ctrl-r from the readline library. But this shows, who this
2658 with Ctrl-r from the readline library. But this shows, who this
2655 can be done for other cases.
2659 can be done for other cases.
2656 --Added convention that all shell functions should accept a
2660 --Added convention that all shell functions should accept a
2657 parameter_string This opens the door for different behaviour for
2661 parameter_string This opens the door for different behaviour for
2658 each function. @cd is a good example of this.
2662 each function. @cd is a good example of this.
2659
2663
2660 04.05.99 12:12 porto.ifm.uni-kiel.de
2664 04.05.99 12:12 porto.ifm.uni-kiel.de
2661 --added logfile rotation
2665 --added logfile rotation
2662 --added new mainloop method which freezes first the namespace
2666 --added new mainloop method which freezes first the namespace
2663
2667
2664 07.05.99 21:24 porto.ifm.uni-kiel.de
2668 07.05.99 21:24 porto.ifm.uni-kiel.de
2665 --added the docreader classes. Now there is a help system.
2669 --added the docreader classes. Now there is a help system.
2666 -This is only a first try. Currently it's not easy to put new
2670 -This is only a first try. Currently it's not easy to put new
2667 stuff in the indices. But this is the way to go. Info would be
2671 stuff in the indices. But this is the way to go. Info would be
2668 better, but HTML is every where and not everybody has an info
2672 better, but HTML is every where and not everybody has an info
2669 system installed and it's not so easy to change html-docs to info.
2673 system installed and it's not so easy to change html-docs to info.
2670 --added global logfile option
2674 --added global logfile option
2671 --there is now a hook for object inspection method pinfo needs to
2675 --there is now a hook for object inspection method pinfo needs to
2672 be provided for this. Can be reached by two '??'.
2676 be provided for this. Can be reached by two '??'.
2673
2677
2674 08.05.99 20:51 porto.ifm.uni-kiel.de
2678 08.05.99 20:51 porto.ifm.uni-kiel.de
2675 --added a README
2679 --added a README
2676 --bug in rc file. Something has changed so functions in the rc
2680 --bug in rc file. Something has changed so functions in the rc
2677 file need to reference the shell and not self. Not clear if it's a
2681 file need to reference the shell and not self. Not clear if it's a
2678 bug or feature.
2682 bug or feature.
2679 --changed rc file for new behavior
2683 --changed rc file for new behavior
2680
2684
2681 2004-07-15 Fernando Perez <fperez@colorado.edu>
2685 2004-07-15 Fernando Perez <fperez@colorado.edu>
2682
2686
2683 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2687 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2684 cache was falling out of sync in bizarre manners when multi-line
2688 cache was falling out of sync in bizarre manners when multi-line
2685 input was present. Minor optimizations and cleanup.
2689 input was present. Minor optimizations and cleanup.
2686
2690
2687 (Logger): Remove old Changelog info for cleanup. This is the
2691 (Logger): Remove old Changelog info for cleanup. This is the
2688 information which was there from Janko's original code:
2692 information which was there from Janko's original code:
2689
2693
2690 Changes to Logger: - made the default log filename a parameter
2694 Changes to Logger: - made the default log filename a parameter
2691
2695
2692 - put a check for lines beginning with !@? in log(). Needed
2696 - put a check for lines beginning with !@? in log(). Needed
2693 (even if the handlers properly log their lines) for mid-session
2697 (even if the handlers properly log their lines) for mid-session
2694 logging activation to work properly. Without this, lines logged
2698 logging activation to work properly. Without this, lines logged
2695 in mid session, which get read from the cache, would end up
2699 in mid session, which get read from the cache, would end up
2696 'bare' (with !@? in the open) in the log. Now they are caught
2700 'bare' (with !@? in the open) in the log. Now they are caught
2697 and prepended with a #.
2701 and prepended with a #.
2698
2702
2699 * IPython/iplib.py (InteractiveShell.init_readline): added check
2703 * IPython/iplib.py (InteractiveShell.init_readline): added check
2700 in case MagicCompleter fails to be defined, so we don't crash.
2704 in case MagicCompleter fails to be defined, so we don't crash.
2701
2705
2702 2004-07-13 Fernando Perez <fperez@colorado.edu>
2706 2004-07-13 Fernando Perez <fperez@colorado.edu>
2703
2707
2704 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2708 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2705 of EPS if the requested filename ends in '.eps'.
2709 of EPS if the requested filename ends in '.eps'.
2706
2710
2707 2004-07-04 Fernando Perez <fperez@colorado.edu>
2711 2004-07-04 Fernando Perez <fperez@colorado.edu>
2708
2712
2709 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2713 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2710 escaping of quotes when calling the shell.
2714 escaping of quotes when calling the shell.
2711
2715
2712 2004-07-02 Fernando Perez <fperez@colorado.edu>
2716 2004-07-02 Fernando Perez <fperez@colorado.edu>
2713
2717
2714 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2718 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2715 gettext not working because we were clobbering '_'. Fixes
2719 gettext not working because we were clobbering '_'. Fixes
2716 http://www.scipy.net/roundup/ipython/issue6.
2720 http://www.scipy.net/roundup/ipython/issue6.
2717
2721
2718 2004-07-01 Fernando Perez <fperez@colorado.edu>
2722 2004-07-01 Fernando Perez <fperez@colorado.edu>
2719
2723
2720 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2724 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2721 into @cd. Patch by Ville.
2725 into @cd. Patch by Ville.
2722
2726
2723 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2727 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2724 new function to store things after ipmaker runs. Patch by Ville.
2728 new function to store things after ipmaker runs. Patch by Ville.
2725 Eventually this will go away once ipmaker is removed and the class
2729 Eventually this will go away once ipmaker is removed and the class
2726 gets cleaned up, but for now it's ok. Key functionality here is
2730 gets cleaned up, but for now it's ok. Key functionality here is
2727 the addition of the persistent storage mechanism, a dict for
2731 the addition of the persistent storage mechanism, a dict for
2728 keeping data across sessions (for now just bookmarks, but more can
2732 keeping data across sessions (for now just bookmarks, but more can
2729 be implemented later).
2733 be implemented later).
2730
2734
2731 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2735 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2732 persistent across sections. Patch by Ville, I modified it
2736 persistent across sections. Patch by Ville, I modified it
2733 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2737 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2734 added a '-l' option to list all bookmarks.
2738 added a '-l' option to list all bookmarks.
2735
2739
2736 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2740 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2737 center for cleanup. Registered with atexit.register(). I moved
2741 center for cleanup. Registered with atexit.register(). I moved
2738 here the old exit_cleanup(). After a patch by Ville.
2742 here the old exit_cleanup(). After a patch by Ville.
2739
2743
2740 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2744 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2741 characters in the hacked shlex_split for python 2.2.
2745 characters in the hacked shlex_split for python 2.2.
2742
2746
2743 * IPython/iplib.py (file_matches): more fixes to filenames with
2747 * IPython/iplib.py (file_matches): more fixes to filenames with
2744 whitespace in them. It's not perfect, but limitations in python's
2748 whitespace in them. It's not perfect, but limitations in python's
2745 readline make it impossible to go further.
2749 readline make it impossible to go further.
2746
2750
2747 2004-06-29 Fernando Perez <fperez@colorado.edu>
2751 2004-06-29 Fernando Perez <fperez@colorado.edu>
2748
2752
2749 * IPython/iplib.py (file_matches): escape whitespace correctly in
2753 * IPython/iplib.py (file_matches): escape whitespace correctly in
2750 filename completions. Bug reported by Ville.
2754 filename completions. Bug reported by Ville.
2751
2755
2752 2004-06-28 Fernando Perez <fperez@colorado.edu>
2756 2004-06-28 Fernando Perez <fperez@colorado.edu>
2753
2757
2754 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2758 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2755 the history file will be called 'history-PROFNAME' (or just
2759 the history file will be called 'history-PROFNAME' (or just
2756 'history' if no profile is loaded). I was getting annoyed at
2760 'history' if no profile is loaded). I was getting annoyed at
2757 getting my Numerical work history clobbered by pysh sessions.
2761 getting my Numerical work history clobbered by pysh sessions.
2758
2762
2759 * IPython/iplib.py (InteractiveShell.__init__): Internal
2763 * IPython/iplib.py (InteractiveShell.__init__): Internal
2760 getoutputerror() function so that we can honor the system_verbose
2764 getoutputerror() function so that we can honor the system_verbose
2761 flag for _all_ system calls. I also added escaping of #
2765 flag for _all_ system calls. I also added escaping of #
2762 characters here to avoid confusing Itpl.
2766 characters here to avoid confusing Itpl.
2763
2767
2764 * IPython/Magic.py (shlex_split): removed call to shell in
2768 * IPython/Magic.py (shlex_split): removed call to shell in
2765 parse_options and replaced it with shlex.split(). The annoying
2769 parse_options and replaced it with shlex.split(). The annoying
2766 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2770 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2767 to backport it from 2.3, with several frail hacks (the shlex
2771 to backport it from 2.3, with several frail hacks (the shlex
2768 module is rather limited in 2.2). Thanks to a suggestion by Ville
2772 module is rather limited in 2.2). Thanks to a suggestion by Ville
2769 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2773 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2770 problem.
2774 problem.
2771
2775
2772 (Magic.magic_system_verbose): new toggle to print the actual
2776 (Magic.magic_system_verbose): new toggle to print the actual
2773 system calls made by ipython. Mainly for debugging purposes.
2777 system calls made by ipython. Mainly for debugging purposes.
2774
2778
2775 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2779 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2776 doesn't support persistence. Reported (and fix suggested) by
2780 doesn't support persistence. Reported (and fix suggested) by
2777 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2781 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2778
2782
2779 2004-06-26 Fernando Perez <fperez@colorado.edu>
2783 2004-06-26 Fernando Perez <fperez@colorado.edu>
2780
2784
2781 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2785 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2782 continue prompts.
2786 continue prompts.
2783
2787
2784 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2788 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2785 function (basically a big docstring) and a few more things here to
2789 function (basically a big docstring) and a few more things here to
2786 speedup startup. pysh.py is now very lightweight. We want because
2790 speedup startup. pysh.py is now very lightweight. We want because
2787 it gets execfile'd, while InterpreterExec gets imported, so
2791 it gets execfile'd, while InterpreterExec gets imported, so
2788 byte-compilation saves time.
2792 byte-compilation saves time.
2789
2793
2790 2004-06-25 Fernando Perez <fperez@colorado.edu>
2794 2004-06-25 Fernando Perez <fperez@colorado.edu>
2791
2795
2792 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2796 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2793 -NUM', which was recently broken.
2797 -NUM', which was recently broken.
2794
2798
2795 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2799 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2796 in multi-line input (but not !!, which doesn't make sense there).
2800 in multi-line input (but not !!, which doesn't make sense there).
2797
2801
2798 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2802 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2799 It's just too useful, and people can turn it off in the less
2803 It's just too useful, and people can turn it off in the less
2800 common cases where it's a problem.
2804 common cases where it's a problem.
2801
2805
2802 2004-06-24 Fernando Perez <fperez@colorado.edu>
2806 2004-06-24 Fernando Perez <fperez@colorado.edu>
2803
2807
2804 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2808 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2805 special syntaxes (like alias calling) is now allied in multi-line
2809 special syntaxes (like alias calling) is now allied in multi-line
2806 input. This is still _very_ experimental, but it's necessary for
2810 input. This is still _very_ experimental, but it's necessary for
2807 efficient shell usage combining python looping syntax with system
2811 efficient shell usage combining python looping syntax with system
2808 calls. For now it's restricted to aliases, I don't think it
2812 calls. For now it's restricted to aliases, I don't think it
2809 really even makes sense to have this for magics.
2813 really even makes sense to have this for magics.
2810
2814
2811 2004-06-23 Fernando Perez <fperez@colorado.edu>
2815 2004-06-23 Fernando Perez <fperez@colorado.edu>
2812
2816
2813 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2817 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2814 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2818 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2815
2819
2816 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2820 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2817 extensions under Windows (after code sent by Gary Bishop). The
2821 extensions under Windows (after code sent by Gary Bishop). The
2818 extensions considered 'executable' are stored in IPython's rc
2822 extensions considered 'executable' are stored in IPython's rc
2819 structure as win_exec_ext.
2823 structure as win_exec_ext.
2820
2824
2821 * IPython/genutils.py (shell): new function, like system() but
2825 * IPython/genutils.py (shell): new function, like system() but
2822 without return value. Very useful for interactive shell work.
2826 without return value. Very useful for interactive shell work.
2823
2827
2824 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2828 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2825 delete aliases.
2829 delete aliases.
2826
2830
2827 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2831 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2828 sure that the alias table doesn't contain python keywords.
2832 sure that the alias table doesn't contain python keywords.
2829
2833
2830 2004-06-21 Fernando Perez <fperez@colorado.edu>
2834 2004-06-21 Fernando Perez <fperez@colorado.edu>
2831
2835
2832 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2836 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2833 non-existent items are found in $PATH. Reported by Thorsten.
2837 non-existent items are found in $PATH. Reported by Thorsten.
2834
2838
2835 2004-06-20 Fernando Perez <fperez@colorado.edu>
2839 2004-06-20 Fernando Perez <fperez@colorado.edu>
2836
2840
2837 * IPython/iplib.py (complete): modified the completer so that the
2841 * IPython/iplib.py (complete): modified the completer so that the
2838 order of priorities can be easily changed at runtime.
2842 order of priorities can be easily changed at runtime.
2839
2843
2840 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2844 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2841 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2845 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2842
2846
2843 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2847 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2844 expand Python variables prepended with $ in all system calls. The
2848 expand Python variables prepended with $ in all system calls. The
2845 same was done to InteractiveShell.handle_shell_escape. Now all
2849 same was done to InteractiveShell.handle_shell_escape. Now all
2846 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2850 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2847 expansion of python variables and expressions according to the
2851 expansion of python variables and expressions according to the
2848 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2852 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2849
2853
2850 Though PEP-215 has been rejected, a similar (but simpler) one
2854 Though PEP-215 has been rejected, a similar (but simpler) one
2851 seems like it will go into Python 2.4, PEP-292 -
2855 seems like it will go into Python 2.4, PEP-292 -
2852 http://www.python.org/peps/pep-0292.html.
2856 http://www.python.org/peps/pep-0292.html.
2853
2857
2854 I'll keep the full syntax of PEP-215, since IPython has since the
2858 I'll keep the full syntax of PEP-215, since IPython has since the
2855 start used Ka-Ping Yee's reference implementation discussed there
2859 start used Ka-Ping Yee's reference implementation discussed there
2856 (Itpl), and I actually like the powerful semantics it offers.
2860 (Itpl), and I actually like the powerful semantics it offers.
2857
2861
2858 In order to access normal shell variables, the $ has to be escaped
2862 In order to access normal shell variables, the $ has to be escaped
2859 via an extra $. For example:
2863 via an extra $. For example:
2860
2864
2861 In [7]: PATH='a python variable'
2865 In [7]: PATH='a python variable'
2862
2866
2863 In [8]: !echo $PATH
2867 In [8]: !echo $PATH
2864 a python variable
2868 a python variable
2865
2869
2866 In [9]: !echo $$PATH
2870 In [9]: !echo $$PATH
2867 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2871 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2868
2872
2869 (Magic.parse_options): escape $ so the shell doesn't evaluate
2873 (Magic.parse_options): escape $ so the shell doesn't evaluate
2870 things prematurely.
2874 things prematurely.
2871
2875
2872 * IPython/iplib.py (InteractiveShell.call_alias): added the
2876 * IPython/iplib.py (InteractiveShell.call_alias): added the
2873 ability for aliases to expand python variables via $.
2877 ability for aliases to expand python variables via $.
2874
2878
2875 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2879 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2876 system, now there's a @rehash/@rehashx pair of magics. These work
2880 system, now there's a @rehash/@rehashx pair of magics. These work
2877 like the csh rehash command, and can be invoked at any time. They
2881 like the csh rehash command, and can be invoked at any time. They
2878 build a table of aliases to everything in the user's $PATH
2882 build a table of aliases to everything in the user's $PATH
2879 (@rehash uses everything, @rehashx is slower but only adds
2883 (@rehash uses everything, @rehashx is slower but only adds
2880 executable files). With this, the pysh.py-based shell profile can
2884 executable files). With this, the pysh.py-based shell profile can
2881 now simply call rehash upon startup, and full access to all
2885 now simply call rehash upon startup, and full access to all
2882 programs in the user's path is obtained.
2886 programs in the user's path is obtained.
2883
2887
2884 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2888 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2885 functionality is now fully in place. I removed the old dynamic
2889 functionality is now fully in place. I removed the old dynamic
2886 code generation based approach, in favor of a much lighter one
2890 code generation based approach, in favor of a much lighter one
2887 based on a simple dict. The advantage is that this allows me to
2891 based on a simple dict. The advantage is that this allows me to
2888 now have thousands of aliases with negligible cost (unthinkable
2892 now have thousands of aliases with negligible cost (unthinkable
2889 with the old system).
2893 with the old system).
2890
2894
2891 2004-06-19 Fernando Perez <fperez@colorado.edu>
2895 2004-06-19 Fernando Perez <fperez@colorado.edu>
2892
2896
2893 * IPython/iplib.py (__init__): extended MagicCompleter class to
2897 * IPython/iplib.py (__init__): extended MagicCompleter class to
2894 also complete (last in priority) on user aliases.
2898 also complete (last in priority) on user aliases.
2895
2899
2896 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2900 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2897 call to eval.
2901 call to eval.
2898 (ItplNS.__init__): Added a new class which functions like Itpl,
2902 (ItplNS.__init__): Added a new class which functions like Itpl,
2899 but allows configuring the namespace for the evaluation to occur
2903 but allows configuring the namespace for the evaluation to occur
2900 in.
2904 in.
2901
2905
2902 2004-06-18 Fernando Perez <fperez@colorado.edu>
2906 2004-06-18 Fernando Perez <fperez@colorado.edu>
2903
2907
2904 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2908 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2905 better message when 'exit' or 'quit' are typed (a common newbie
2909 better message when 'exit' or 'quit' are typed (a common newbie
2906 confusion).
2910 confusion).
2907
2911
2908 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2912 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2909 check for Windows users.
2913 check for Windows users.
2910
2914
2911 * IPython/iplib.py (InteractiveShell.user_setup): removed
2915 * IPython/iplib.py (InteractiveShell.user_setup): removed
2912 disabling of colors for Windows. I'll test at runtime and issue a
2916 disabling of colors for Windows. I'll test at runtime and issue a
2913 warning if Gary's readline isn't found, as to nudge users to
2917 warning if Gary's readline isn't found, as to nudge users to
2914 download it.
2918 download it.
2915
2919
2916 2004-06-16 Fernando Perez <fperez@colorado.edu>
2920 2004-06-16 Fernando Perez <fperez@colorado.edu>
2917
2921
2918 * IPython/genutils.py (Stream.__init__): changed to print errors
2922 * IPython/genutils.py (Stream.__init__): changed to print errors
2919 to sys.stderr. I had a circular dependency here. Now it's
2923 to sys.stderr. I had a circular dependency here. Now it's
2920 possible to run ipython as IDLE's shell (consider this pre-alpha,
2924 possible to run ipython as IDLE's shell (consider this pre-alpha,
2921 since true stdout things end up in the starting terminal instead
2925 since true stdout things end up in the starting terminal instead
2922 of IDLE's out).
2926 of IDLE's out).
2923
2927
2924 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2928 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2925 users who haven't # updated their prompt_in2 definitions. Remove
2929 users who haven't # updated their prompt_in2 definitions. Remove
2926 eventually.
2930 eventually.
2927 (multiple_replace): added credit to original ASPN recipe.
2931 (multiple_replace): added credit to original ASPN recipe.
2928
2932
2929 2004-06-15 Fernando Perez <fperez@colorado.edu>
2933 2004-06-15 Fernando Perez <fperez@colorado.edu>
2930
2934
2931 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2935 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2932 list of auto-defined aliases.
2936 list of auto-defined aliases.
2933
2937
2934 2004-06-13 Fernando Perez <fperez@colorado.edu>
2938 2004-06-13 Fernando Perez <fperez@colorado.edu>
2935
2939
2936 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2940 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2937 install was really requested (so setup.py can be used for other
2941 install was really requested (so setup.py can be used for other
2938 things under Windows).
2942 things under Windows).
2939
2943
2940 2004-06-10 Fernando Perez <fperez@colorado.edu>
2944 2004-06-10 Fernando Perez <fperez@colorado.edu>
2941
2945
2942 * IPython/Logger.py (Logger.create_log): Manually remove any old
2946 * IPython/Logger.py (Logger.create_log): Manually remove any old
2943 backup, since os.remove may fail under Windows. Fixes bug
2947 backup, since os.remove may fail under Windows. Fixes bug
2944 reported by Thorsten.
2948 reported by Thorsten.
2945
2949
2946 2004-06-09 Fernando Perez <fperez@colorado.edu>
2950 2004-06-09 Fernando Perez <fperez@colorado.edu>
2947
2951
2948 * examples/example-embed.py: fixed all references to %n (replaced
2952 * examples/example-embed.py: fixed all references to %n (replaced
2949 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2953 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2950 for all examples and the manual as well.
2954 for all examples and the manual as well.
2951
2955
2952 2004-06-08 Fernando Perez <fperez@colorado.edu>
2956 2004-06-08 Fernando Perez <fperez@colorado.edu>
2953
2957
2954 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2958 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2955 alignment and color management. All 3 prompt subsystems now
2959 alignment and color management. All 3 prompt subsystems now
2956 inherit from BasePrompt.
2960 inherit from BasePrompt.
2957
2961
2958 * tools/release: updates for windows installer build and tag rpms
2962 * tools/release: updates for windows installer build and tag rpms
2959 with python version (since paths are fixed).
2963 with python version (since paths are fixed).
2960
2964
2961 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2965 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2962 which will become eventually obsolete. Also fixed the default
2966 which will become eventually obsolete. Also fixed the default
2963 prompt_in2 to use \D, so at least new users start with the correct
2967 prompt_in2 to use \D, so at least new users start with the correct
2964 defaults.
2968 defaults.
2965 WARNING: Users with existing ipythonrc files will need to apply
2969 WARNING: Users with existing ipythonrc files will need to apply
2966 this fix manually!
2970 this fix manually!
2967
2971
2968 * setup.py: make windows installer (.exe). This is finally the
2972 * setup.py: make windows installer (.exe). This is finally the
2969 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2973 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2970 which I hadn't included because it required Python 2.3 (or recent
2974 which I hadn't included because it required Python 2.3 (or recent
2971 distutils).
2975 distutils).
2972
2976
2973 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2977 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2974 usage of new '\D' escape.
2978 usage of new '\D' escape.
2975
2979
2976 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2980 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2977 lacks os.getuid())
2981 lacks os.getuid())
2978 (CachedOutput.set_colors): Added the ability to turn coloring
2982 (CachedOutput.set_colors): Added the ability to turn coloring
2979 on/off with @colors even for manually defined prompt colors. It
2983 on/off with @colors even for manually defined prompt colors. It
2980 uses a nasty global, but it works safely and via the generic color
2984 uses a nasty global, but it works safely and via the generic color
2981 handling mechanism.
2985 handling mechanism.
2982 (Prompt2.__init__): Introduced new escape '\D' for continuation
2986 (Prompt2.__init__): Introduced new escape '\D' for continuation
2983 prompts. It represents the counter ('\#') as dots.
2987 prompts. It represents the counter ('\#') as dots.
2984 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2988 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2985 need to update their ipythonrc files and replace '%n' with '\D' in
2989 need to update their ipythonrc files and replace '%n' with '\D' in
2986 their prompt_in2 settings everywhere. Sorry, but there's
2990 their prompt_in2 settings everywhere. Sorry, but there's
2987 otherwise no clean way to get all prompts to properly align. The
2991 otherwise no clean way to get all prompts to properly align. The
2988 ipythonrc shipped with IPython has been updated.
2992 ipythonrc shipped with IPython has been updated.
2989
2993
2990 2004-06-07 Fernando Perez <fperez@colorado.edu>
2994 2004-06-07 Fernando Perez <fperez@colorado.edu>
2991
2995
2992 * setup.py (isfile): Pass local_icons option to latex2html, so the
2996 * setup.py (isfile): Pass local_icons option to latex2html, so the
2993 resulting HTML file is self-contained. Thanks to
2997 resulting HTML file is self-contained. Thanks to
2994 dryice-AT-liu.com.cn for the tip.
2998 dryice-AT-liu.com.cn for the tip.
2995
2999
2996 * pysh.py: I created a new profile 'shell', which implements a
3000 * pysh.py: I created a new profile 'shell', which implements a
2997 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3001 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2998 system shell, nor will it become one anytime soon. It's mainly
3002 system shell, nor will it become one anytime soon. It's mainly
2999 meant to illustrate the use of the new flexible bash-like prompts.
3003 meant to illustrate the use of the new flexible bash-like prompts.
3000 I guess it could be used by hardy souls for true shell management,
3004 I guess it could be used by hardy souls for true shell management,
3001 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3005 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3002 profile. This uses the InterpreterExec extension provided by
3006 profile. This uses the InterpreterExec extension provided by
3003 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3007 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3004
3008
3005 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3009 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3006 auto-align itself with the length of the previous input prompt
3010 auto-align itself with the length of the previous input prompt
3007 (taking into account the invisible color escapes).
3011 (taking into account the invisible color escapes).
3008 (CachedOutput.__init__): Large restructuring of this class. Now
3012 (CachedOutput.__init__): Large restructuring of this class. Now
3009 all three prompts (primary1, primary2, output) are proper objects,
3013 all three prompts (primary1, primary2, output) are proper objects,
3010 managed by the 'parent' CachedOutput class. The code is still a
3014 managed by the 'parent' CachedOutput class. The code is still a
3011 bit hackish (all prompts share state via a pointer to the cache),
3015 bit hackish (all prompts share state via a pointer to the cache),
3012 but it's overall far cleaner than before.
3016 but it's overall far cleaner than before.
3013
3017
3014 * IPython/genutils.py (getoutputerror): modified to add verbose,
3018 * IPython/genutils.py (getoutputerror): modified to add verbose,
3015 debug and header options. This makes the interface of all getout*
3019 debug and header options. This makes the interface of all getout*
3016 functions uniform.
3020 functions uniform.
3017 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3021 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3018
3022
3019 * IPython/Magic.py (Magic.default_option): added a function to
3023 * IPython/Magic.py (Magic.default_option): added a function to
3020 allow registering default options for any magic command. This
3024 allow registering default options for any magic command. This
3021 makes it easy to have profiles which customize the magics globally
3025 makes it easy to have profiles which customize the magics globally
3022 for a certain use. The values set through this function are
3026 for a certain use. The values set through this function are
3023 picked up by the parse_options() method, which all magics should
3027 picked up by the parse_options() method, which all magics should
3024 use to parse their options.
3028 use to parse their options.
3025
3029
3026 * IPython/genutils.py (warn): modified the warnings framework to
3030 * IPython/genutils.py (warn): modified the warnings framework to
3027 use the Term I/O class. I'm trying to slowly unify all of
3031 use the Term I/O class. I'm trying to slowly unify all of
3028 IPython's I/O operations to pass through Term.
3032 IPython's I/O operations to pass through Term.
3029
3033
3030 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3034 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3031 the secondary prompt to correctly match the length of the primary
3035 the secondary prompt to correctly match the length of the primary
3032 one for any prompt. Now multi-line code will properly line up
3036 one for any prompt. Now multi-line code will properly line up
3033 even for path dependent prompts, such as the new ones available
3037 even for path dependent prompts, such as the new ones available
3034 via the prompt_specials.
3038 via the prompt_specials.
3035
3039
3036 2004-06-06 Fernando Perez <fperez@colorado.edu>
3040 2004-06-06 Fernando Perez <fperez@colorado.edu>
3037
3041
3038 * IPython/Prompts.py (prompt_specials): Added the ability to have
3042 * IPython/Prompts.py (prompt_specials): Added the ability to have
3039 bash-like special sequences in the prompts, which get
3043 bash-like special sequences in the prompts, which get
3040 automatically expanded. Things like hostname, current working
3044 automatically expanded. Things like hostname, current working
3041 directory and username are implemented already, but it's easy to
3045 directory and username are implemented already, but it's easy to
3042 add more in the future. Thanks to a patch by W.J. van der Laan
3046 add more in the future. Thanks to a patch by W.J. van der Laan
3043 <gnufnork-AT-hetdigitalegat.nl>
3047 <gnufnork-AT-hetdigitalegat.nl>
3044 (prompt_specials): Added color support for prompt strings, so
3048 (prompt_specials): Added color support for prompt strings, so
3045 users can define arbitrary color setups for their prompts.
3049 users can define arbitrary color setups for their prompts.
3046
3050
3047 2004-06-05 Fernando Perez <fperez@colorado.edu>
3051 2004-06-05 Fernando Perez <fperez@colorado.edu>
3048
3052
3049 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3053 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3050 code to load Gary Bishop's readline and configure it
3054 code to load Gary Bishop's readline and configure it
3051 automatically. Thanks to Gary for help on this.
3055 automatically. Thanks to Gary for help on this.
3052
3056
3053 2004-06-01 Fernando Perez <fperez@colorado.edu>
3057 2004-06-01 Fernando Perez <fperez@colorado.edu>
3054
3058
3055 * IPython/Logger.py (Logger.create_log): fix bug for logging
3059 * IPython/Logger.py (Logger.create_log): fix bug for logging
3056 with no filename (previous fix was incomplete).
3060 with no filename (previous fix was incomplete).
3057
3061
3058 2004-05-25 Fernando Perez <fperez@colorado.edu>
3062 2004-05-25 Fernando Perez <fperez@colorado.edu>
3059
3063
3060 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3064 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3061 parens would get passed to the shell.
3065 parens would get passed to the shell.
3062
3066
3063 2004-05-20 Fernando Perez <fperez@colorado.edu>
3067 2004-05-20 Fernando Perez <fperez@colorado.edu>
3064
3068
3065 * IPython/Magic.py (Magic.magic_prun): changed default profile
3069 * IPython/Magic.py (Magic.magic_prun): changed default profile
3066 sort order to 'time' (the more common profiling need).
3070 sort order to 'time' (the more common profiling need).
3067
3071
3068 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3072 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3069 so that source code shown is guaranteed in sync with the file on
3073 so that source code shown is guaranteed in sync with the file on
3070 disk (also changed in psource). Similar fix to the one for
3074 disk (also changed in psource). Similar fix to the one for
3071 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3075 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3072 <yann.ledu-AT-noos.fr>.
3076 <yann.ledu-AT-noos.fr>.
3073
3077
3074 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3078 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3075 with a single option would not be correctly parsed. Closes
3079 with a single option would not be correctly parsed. Closes
3076 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3080 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3077 introduced in 0.6.0 (on 2004-05-06).
3081 introduced in 0.6.0 (on 2004-05-06).
3078
3082
3079 2004-05-13 *** Released version 0.6.0
3083 2004-05-13 *** Released version 0.6.0
3080
3084
3081 2004-05-13 Fernando Perez <fperez@colorado.edu>
3085 2004-05-13 Fernando Perez <fperez@colorado.edu>
3082
3086
3083 * debian/: Added debian/ directory to CVS, so that debian support
3087 * debian/: Added debian/ directory to CVS, so that debian support
3084 is publicly accessible. The debian package is maintained by Jack
3088 is publicly accessible. The debian package is maintained by Jack
3085 Moffit <jack-AT-xiph.org>.
3089 Moffit <jack-AT-xiph.org>.
3086
3090
3087 * Documentation: included the notes about an ipython-based system
3091 * Documentation: included the notes about an ipython-based system
3088 shell (the hypothetical 'pysh') into the new_design.pdf document,
3092 shell (the hypothetical 'pysh') into the new_design.pdf document,
3089 so that these ideas get distributed to users along with the
3093 so that these ideas get distributed to users along with the
3090 official documentation.
3094 official documentation.
3091
3095
3092 2004-05-10 Fernando Perez <fperez@colorado.edu>
3096 2004-05-10 Fernando Perez <fperez@colorado.edu>
3093
3097
3094 * IPython/Logger.py (Logger.create_log): fix recently introduced
3098 * IPython/Logger.py (Logger.create_log): fix recently introduced
3095 bug (misindented line) where logstart would fail when not given an
3099 bug (misindented line) where logstart would fail when not given an
3096 explicit filename.
3100 explicit filename.
3097
3101
3098 2004-05-09 Fernando Perez <fperez@colorado.edu>
3102 2004-05-09 Fernando Perez <fperez@colorado.edu>
3099
3103
3100 * IPython/Magic.py (Magic.parse_options): skip system call when
3104 * IPython/Magic.py (Magic.parse_options): skip system call when
3101 there are no options to look for. Faster, cleaner for the common
3105 there are no options to look for. Faster, cleaner for the common
3102 case.
3106 case.
3103
3107
3104 * Documentation: many updates to the manual: describing Windows
3108 * Documentation: many updates to the manual: describing Windows
3105 support better, Gnuplot updates, credits, misc small stuff. Also
3109 support better, Gnuplot updates, credits, misc small stuff. Also
3106 updated the new_design doc a bit.
3110 updated the new_design doc a bit.
3107
3111
3108 2004-05-06 *** Released version 0.6.0.rc1
3112 2004-05-06 *** Released version 0.6.0.rc1
3109
3113
3110 2004-05-06 Fernando Perez <fperez@colorado.edu>
3114 2004-05-06 Fernando Perez <fperez@colorado.edu>
3111
3115
3112 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3116 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3113 operations to use the vastly more efficient list/''.join() method.
3117 operations to use the vastly more efficient list/''.join() method.
3114 (FormattedTB.text): Fix
3118 (FormattedTB.text): Fix
3115 http://www.scipy.net/roundup/ipython/issue12 - exception source
3119 http://www.scipy.net/roundup/ipython/issue12 - exception source
3116 extract not updated after reload. Thanks to Mike Salib
3120 extract not updated after reload. Thanks to Mike Salib
3117 <msalib-AT-mit.edu> for pinning the source of the problem.
3121 <msalib-AT-mit.edu> for pinning the source of the problem.
3118 Fortunately, the solution works inside ipython and doesn't require
3122 Fortunately, the solution works inside ipython and doesn't require
3119 any changes to python proper.
3123 any changes to python proper.
3120
3124
3121 * IPython/Magic.py (Magic.parse_options): Improved to process the
3125 * IPython/Magic.py (Magic.parse_options): Improved to process the
3122 argument list as a true shell would (by actually using the
3126 argument list as a true shell would (by actually using the
3123 underlying system shell). This way, all @magics automatically get
3127 underlying system shell). This way, all @magics automatically get
3124 shell expansion for variables. Thanks to a comment by Alex
3128 shell expansion for variables. Thanks to a comment by Alex
3125 Schmolck.
3129 Schmolck.
3126
3130
3127 2004-04-04 Fernando Perez <fperez@colorado.edu>
3131 2004-04-04 Fernando Perez <fperez@colorado.edu>
3128
3132
3129 * IPython/iplib.py (InteractiveShell.interact): Added a special
3133 * IPython/iplib.py (InteractiveShell.interact): Added a special
3130 trap for a debugger quit exception, which is basically impossible
3134 trap for a debugger quit exception, which is basically impossible
3131 to handle by normal mechanisms, given what pdb does to the stack.
3135 to handle by normal mechanisms, given what pdb does to the stack.
3132 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3136 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3133
3137
3134 2004-04-03 Fernando Perez <fperez@colorado.edu>
3138 2004-04-03 Fernando Perez <fperez@colorado.edu>
3135
3139
3136 * IPython/genutils.py (Term): Standardized the names of the Term
3140 * IPython/genutils.py (Term): Standardized the names of the Term
3137 class streams to cin/cout/cerr, following C++ naming conventions
3141 class streams to cin/cout/cerr, following C++ naming conventions
3138 (I can't use in/out/err because 'in' is not a valid attribute
3142 (I can't use in/out/err because 'in' is not a valid attribute
3139 name).
3143 name).
3140
3144
3141 * IPython/iplib.py (InteractiveShell.interact): don't increment
3145 * IPython/iplib.py (InteractiveShell.interact): don't increment
3142 the prompt if there's no user input. By Daniel 'Dang' Griffith
3146 the prompt if there's no user input. By Daniel 'Dang' Griffith
3143 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3147 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3144 Francois Pinard.
3148 Francois Pinard.
3145
3149
3146 2004-04-02 Fernando Perez <fperez@colorado.edu>
3150 2004-04-02 Fernando Perez <fperez@colorado.edu>
3147
3151
3148 * IPython/genutils.py (Stream.__init__): Modified to survive at
3152 * IPython/genutils.py (Stream.__init__): Modified to survive at
3149 least importing in contexts where stdin/out/err aren't true file
3153 least importing in contexts where stdin/out/err aren't true file
3150 objects, such as PyCrust (they lack fileno() and mode). However,
3154 objects, such as PyCrust (they lack fileno() and mode). However,
3151 the recovery facilities which rely on these things existing will
3155 the recovery facilities which rely on these things existing will
3152 not work.
3156 not work.
3153
3157
3154 2004-04-01 Fernando Perez <fperez@colorado.edu>
3158 2004-04-01 Fernando Perez <fperez@colorado.edu>
3155
3159
3156 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3160 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3157 use the new getoutputerror() function, so it properly
3161 use the new getoutputerror() function, so it properly
3158 distinguishes stdout/err.
3162 distinguishes stdout/err.
3159
3163
3160 * IPython/genutils.py (getoutputerror): added a function to
3164 * IPython/genutils.py (getoutputerror): added a function to
3161 capture separately the standard output and error of a command.
3165 capture separately the standard output and error of a command.
3162 After a comment from dang on the mailing lists. This code is
3166 After a comment from dang on the mailing lists. This code is
3163 basically a modified version of commands.getstatusoutput(), from
3167 basically a modified version of commands.getstatusoutput(), from
3164 the standard library.
3168 the standard library.
3165
3169
3166 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3170 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3167 '!!' as a special syntax (shorthand) to access @sx.
3171 '!!' as a special syntax (shorthand) to access @sx.
3168
3172
3169 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3173 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3170 command and return its output as a list split on '\n'.
3174 command and return its output as a list split on '\n'.
3171
3175
3172 2004-03-31 Fernando Perez <fperez@colorado.edu>
3176 2004-03-31 Fernando Perez <fperez@colorado.edu>
3173
3177
3174 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3178 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3175 method to dictionaries used as FakeModule instances if they lack
3179 method to dictionaries used as FakeModule instances if they lack
3176 it. At least pydoc in python2.3 breaks for runtime-defined
3180 it. At least pydoc in python2.3 breaks for runtime-defined
3177 functions without this hack. At some point I need to _really_
3181 functions without this hack. At some point I need to _really_
3178 understand what FakeModule is doing, because it's a gross hack.
3182 understand what FakeModule is doing, because it's a gross hack.
3179 But it solves Arnd's problem for now...
3183 But it solves Arnd's problem for now...
3180
3184
3181 2004-02-27 Fernando Perez <fperez@colorado.edu>
3185 2004-02-27 Fernando Perez <fperez@colorado.edu>
3182
3186
3183 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3187 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3184 mode would behave erratically. Also increased the number of
3188 mode would behave erratically. Also increased the number of
3185 possible logs in rotate mod to 999. Thanks to Rod Holland
3189 possible logs in rotate mod to 999. Thanks to Rod Holland
3186 <rhh@StructureLABS.com> for the report and fixes.
3190 <rhh@StructureLABS.com> for the report and fixes.
3187
3191
3188 2004-02-26 Fernando Perez <fperez@colorado.edu>
3192 2004-02-26 Fernando Perez <fperez@colorado.edu>
3189
3193
3190 * IPython/genutils.py (page): Check that the curses module really
3194 * IPython/genutils.py (page): Check that the curses module really
3191 has the initscr attribute before trying to use it. For some
3195 has the initscr attribute before trying to use it. For some
3192 reason, the Solaris curses module is missing this. I think this
3196 reason, the Solaris curses module is missing this. I think this
3193 should be considered a Solaris python bug, but I'm not sure.
3197 should be considered a Solaris python bug, but I'm not sure.
3194
3198
3195 2004-01-17 Fernando Perez <fperez@colorado.edu>
3199 2004-01-17 Fernando Perez <fperez@colorado.edu>
3196
3200
3197 * IPython/genutils.py (Stream.__init__): Changes to try to make
3201 * IPython/genutils.py (Stream.__init__): Changes to try to make
3198 ipython robust against stdin/out/err being closed by the user.
3202 ipython robust against stdin/out/err being closed by the user.
3199 This is 'user error' (and blocks a normal python session, at least
3203 This is 'user error' (and blocks a normal python session, at least
3200 the stdout case). However, Ipython should be able to survive such
3204 the stdout case). However, Ipython should be able to survive such
3201 instances of abuse as gracefully as possible. To simplify the
3205 instances of abuse as gracefully as possible. To simplify the
3202 coding and maintain compatibility with Gary Bishop's Term
3206 coding and maintain compatibility with Gary Bishop's Term
3203 contributions, I've made use of classmethods for this. I think
3207 contributions, I've made use of classmethods for this. I think
3204 this introduces a dependency on python 2.2.
3208 this introduces a dependency on python 2.2.
3205
3209
3206 2004-01-13 Fernando Perez <fperez@colorado.edu>
3210 2004-01-13 Fernando Perez <fperez@colorado.edu>
3207
3211
3208 * IPython/numutils.py (exp_safe): simplified the code a bit and
3212 * IPython/numutils.py (exp_safe): simplified the code a bit and
3209 removed the need for importing the kinds module altogether.
3213 removed the need for importing the kinds module altogether.
3210
3214
3211 2004-01-06 Fernando Perez <fperez@colorado.edu>
3215 2004-01-06 Fernando Perez <fperez@colorado.edu>
3212
3216
3213 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3217 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3214 a magic function instead, after some community feedback. No
3218 a magic function instead, after some community feedback. No
3215 special syntax will exist for it, but its name is deliberately
3219 special syntax will exist for it, but its name is deliberately
3216 very short.
3220 very short.
3217
3221
3218 2003-12-20 Fernando Perez <fperez@colorado.edu>
3222 2003-12-20 Fernando Perez <fperez@colorado.edu>
3219
3223
3220 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3224 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3221 new functionality, to automagically assign the result of a shell
3225 new functionality, to automagically assign the result of a shell
3222 command to a variable. I'll solicit some community feedback on
3226 command to a variable. I'll solicit some community feedback on
3223 this before making it permanent.
3227 this before making it permanent.
3224
3228
3225 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3229 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3226 requested about callables for which inspect couldn't obtain a
3230 requested about callables for which inspect couldn't obtain a
3227 proper argspec. Thanks to a crash report sent by Etienne
3231 proper argspec. Thanks to a crash report sent by Etienne
3228 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3232 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3229
3233
3230 2003-12-09 Fernando Perez <fperez@colorado.edu>
3234 2003-12-09 Fernando Perez <fperez@colorado.edu>
3231
3235
3232 * IPython/genutils.py (page): patch for the pager to work across
3236 * IPython/genutils.py (page): patch for the pager to work across
3233 various versions of Windows. By Gary Bishop.
3237 various versions of Windows. By Gary Bishop.
3234
3238
3235 2003-12-04 Fernando Perez <fperez@colorado.edu>
3239 2003-12-04 Fernando Perez <fperez@colorado.edu>
3236
3240
3237 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3241 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3238 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3242 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3239 While I tested this and it looks ok, there may still be corner
3243 While I tested this and it looks ok, there may still be corner
3240 cases I've missed.
3244 cases I've missed.
3241
3245
3242 2003-12-01 Fernando Perez <fperez@colorado.edu>
3246 2003-12-01 Fernando Perez <fperez@colorado.edu>
3243
3247
3244 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3248 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3245 where a line like 'p,q=1,2' would fail because the automagic
3249 where a line like 'p,q=1,2' would fail because the automagic
3246 system would be triggered for @p.
3250 system would be triggered for @p.
3247
3251
3248 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3252 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3249 cleanups, code unmodified.
3253 cleanups, code unmodified.
3250
3254
3251 * IPython/genutils.py (Term): added a class for IPython to handle
3255 * IPython/genutils.py (Term): added a class for IPython to handle
3252 output. In most cases it will just be a proxy for stdout/err, but
3256 output. In most cases it will just be a proxy for stdout/err, but
3253 having this allows modifications to be made for some platforms,
3257 having this allows modifications to be made for some platforms,
3254 such as handling color escapes under Windows. All of this code
3258 such as handling color escapes under Windows. All of this code
3255 was contributed by Gary Bishop, with minor modifications by me.
3259 was contributed by Gary Bishop, with minor modifications by me.
3256 The actual changes affect many files.
3260 The actual changes affect many files.
3257
3261
3258 2003-11-30 Fernando Perez <fperez@colorado.edu>
3262 2003-11-30 Fernando Perez <fperez@colorado.edu>
3259
3263
3260 * IPython/iplib.py (file_matches): new completion code, courtesy
3264 * IPython/iplib.py (file_matches): new completion code, courtesy
3261 of Jeff Collins. This enables filename completion again under
3265 of Jeff Collins. This enables filename completion again under
3262 python 2.3, which disabled it at the C level.
3266 python 2.3, which disabled it at the C level.
3263
3267
3264 2003-11-11 Fernando Perez <fperez@colorado.edu>
3268 2003-11-11 Fernando Perez <fperez@colorado.edu>
3265
3269
3266 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3270 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3267 for Numeric.array(map(...)), but often convenient.
3271 for Numeric.array(map(...)), but often convenient.
3268
3272
3269 2003-11-05 Fernando Perez <fperez@colorado.edu>
3273 2003-11-05 Fernando Perez <fperez@colorado.edu>
3270
3274
3271 * IPython/numutils.py (frange): Changed a call from int() to
3275 * IPython/numutils.py (frange): Changed a call from int() to
3272 int(round()) to prevent a problem reported with arange() in the
3276 int(round()) to prevent a problem reported with arange() in the
3273 numpy list.
3277 numpy list.
3274
3278
3275 2003-10-06 Fernando Perez <fperez@colorado.edu>
3279 2003-10-06 Fernando Perez <fperez@colorado.edu>
3276
3280
3277 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3281 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3278 prevent crashes if sys lacks an argv attribute (it happens with
3282 prevent crashes if sys lacks an argv attribute (it happens with
3279 embedded interpreters which build a bare-bones sys module).
3283 embedded interpreters which build a bare-bones sys module).
3280 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3284 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3281
3285
3282 2003-09-24 Fernando Perez <fperez@colorado.edu>
3286 2003-09-24 Fernando Perez <fperez@colorado.edu>
3283
3287
3284 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3288 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3285 to protect against poorly written user objects where __getattr__
3289 to protect against poorly written user objects where __getattr__
3286 raises exceptions other than AttributeError. Thanks to a bug
3290 raises exceptions other than AttributeError. Thanks to a bug
3287 report by Oliver Sander <osander-AT-gmx.de>.
3291 report by Oliver Sander <osander-AT-gmx.de>.
3288
3292
3289 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3293 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3290 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3294 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3291
3295
3292 2003-09-09 Fernando Perez <fperez@colorado.edu>
3296 2003-09-09 Fernando Perez <fperez@colorado.edu>
3293
3297
3294 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3298 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3295 unpacking a list whith a callable as first element would
3299 unpacking a list whith a callable as first element would
3296 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3300 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3297 Collins.
3301 Collins.
3298
3302
3299 2003-08-25 *** Released version 0.5.0
3303 2003-08-25 *** Released version 0.5.0
3300
3304
3301 2003-08-22 Fernando Perez <fperez@colorado.edu>
3305 2003-08-22 Fernando Perez <fperez@colorado.edu>
3302
3306
3303 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3307 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3304 improperly defined user exceptions. Thanks to feedback from Mark
3308 improperly defined user exceptions. Thanks to feedback from Mark
3305 Russell <mrussell-AT-verio.net>.
3309 Russell <mrussell-AT-verio.net>.
3306
3310
3307 2003-08-20 Fernando Perez <fperez@colorado.edu>
3311 2003-08-20 Fernando Perez <fperez@colorado.edu>
3308
3312
3309 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3313 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3310 printing so that it would print multi-line string forms starting
3314 printing so that it would print multi-line string forms starting
3311 with a new line. This way the formatting is better respected for
3315 with a new line. This way the formatting is better respected for
3312 objects which work hard to make nice string forms.
3316 objects which work hard to make nice string forms.
3313
3317
3314 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3318 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3315 autocall would overtake data access for objects with both
3319 autocall would overtake data access for objects with both
3316 __getitem__ and __call__.
3320 __getitem__ and __call__.
3317
3321
3318 2003-08-19 *** Released version 0.5.0-rc1
3322 2003-08-19 *** Released version 0.5.0-rc1
3319
3323
3320 2003-08-19 Fernando Perez <fperez@colorado.edu>
3324 2003-08-19 Fernando Perez <fperez@colorado.edu>
3321
3325
3322 * IPython/deep_reload.py (load_tail): single tiny change here
3326 * IPython/deep_reload.py (load_tail): single tiny change here
3323 seems to fix the long-standing bug of dreload() failing to work
3327 seems to fix the long-standing bug of dreload() failing to work
3324 for dotted names. But this module is pretty tricky, so I may have
3328 for dotted names. But this module is pretty tricky, so I may have
3325 missed some subtlety. Needs more testing!.
3329 missed some subtlety. Needs more testing!.
3326
3330
3327 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3331 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3328 exceptions which have badly implemented __str__ methods.
3332 exceptions which have badly implemented __str__ methods.
3329 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3333 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3330 which I've been getting reports about from Python 2.3 users. I
3334 which I've been getting reports about from Python 2.3 users. I
3331 wish I had a simple test case to reproduce the problem, so I could
3335 wish I had a simple test case to reproduce the problem, so I could
3332 either write a cleaner workaround or file a bug report if
3336 either write a cleaner workaround or file a bug report if
3333 necessary.
3337 necessary.
3334
3338
3335 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3339 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3336 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3340 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3337 a bug report by Tjabo Kloppenburg.
3341 a bug report by Tjabo Kloppenburg.
3338
3342
3339 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3343 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3340 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3344 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3341 seems rather unstable. Thanks to a bug report by Tjabo
3345 seems rather unstable. Thanks to a bug report by Tjabo
3342 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3346 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3343
3347
3344 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3348 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3345 this out soon because of the critical fixes in the inner loop for
3349 this out soon because of the critical fixes in the inner loop for
3346 generators.
3350 generators.
3347
3351
3348 * IPython/Magic.py (Magic.getargspec): removed. This (and
3352 * IPython/Magic.py (Magic.getargspec): removed. This (and
3349 _get_def) have been obsoleted by OInspect for a long time, I
3353 _get_def) have been obsoleted by OInspect for a long time, I
3350 hadn't noticed that they were dead code.
3354 hadn't noticed that they were dead code.
3351 (Magic._ofind): restored _ofind functionality for a few literals
3355 (Magic._ofind): restored _ofind functionality for a few literals
3352 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3356 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3353 for things like "hello".capitalize?, since that would require a
3357 for things like "hello".capitalize?, since that would require a
3354 potentially dangerous eval() again.
3358 potentially dangerous eval() again.
3355
3359
3356 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3360 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3357 logic a bit more to clean up the escapes handling and minimize the
3361 logic a bit more to clean up the escapes handling and minimize the
3358 use of _ofind to only necessary cases. The interactive 'feel' of
3362 use of _ofind to only necessary cases. The interactive 'feel' of
3359 IPython should have improved quite a bit with the changes in
3363 IPython should have improved quite a bit with the changes in
3360 _prefilter and _ofind (besides being far safer than before).
3364 _prefilter and _ofind (besides being far safer than before).
3361
3365
3362 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3366 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3363 obscure, never reported). Edit would fail to find the object to
3367 obscure, never reported). Edit would fail to find the object to
3364 edit under some circumstances.
3368 edit under some circumstances.
3365 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3369 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3366 which were causing double-calling of generators. Those eval calls
3370 which were causing double-calling of generators. Those eval calls
3367 were _very_ dangerous, since code with side effects could be
3371 were _very_ dangerous, since code with side effects could be
3368 triggered. As they say, 'eval is evil'... These were the
3372 triggered. As they say, 'eval is evil'... These were the
3369 nastiest evals in IPython. Besides, _ofind is now far simpler,
3373 nastiest evals in IPython. Besides, _ofind is now far simpler,
3370 and it should also be quite a bit faster. Its use of inspect is
3374 and it should also be quite a bit faster. Its use of inspect is
3371 also safer, so perhaps some of the inspect-related crashes I've
3375 also safer, so perhaps some of the inspect-related crashes I've
3372 seen lately with Python 2.3 might be taken care of. That will
3376 seen lately with Python 2.3 might be taken care of. That will
3373 need more testing.
3377 need more testing.
3374
3378
3375 2003-08-17 Fernando Perez <fperez@colorado.edu>
3379 2003-08-17 Fernando Perez <fperez@colorado.edu>
3376
3380
3377 * IPython/iplib.py (InteractiveShell._prefilter): significant
3381 * IPython/iplib.py (InteractiveShell._prefilter): significant
3378 simplifications to the logic for handling user escapes. Faster
3382 simplifications to the logic for handling user escapes. Faster
3379 and simpler code.
3383 and simpler code.
3380
3384
3381 2003-08-14 Fernando Perez <fperez@colorado.edu>
3385 2003-08-14 Fernando Perez <fperez@colorado.edu>
3382
3386
3383 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3387 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3384 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3388 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3385 but it should be quite a bit faster. And the recursive version
3389 but it should be quite a bit faster. And the recursive version
3386 generated O(log N) intermediate storage for all rank>1 arrays,
3390 generated O(log N) intermediate storage for all rank>1 arrays,
3387 even if they were contiguous.
3391 even if they were contiguous.
3388 (l1norm): Added this function.
3392 (l1norm): Added this function.
3389 (norm): Added this function for arbitrary norms (including
3393 (norm): Added this function for arbitrary norms (including
3390 l-infinity). l1 and l2 are still special cases for convenience
3394 l-infinity). l1 and l2 are still special cases for convenience
3391 and speed.
3395 and speed.
3392
3396
3393 2003-08-03 Fernando Perez <fperez@colorado.edu>
3397 2003-08-03 Fernando Perez <fperez@colorado.edu>
3394
3398
3395 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3399 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3396 exceptions, which now raise PendingDeprecationWarnings in Python
3400 exceptions, which now raise PendingDeprecationWarnings in Python
3397 2.3. There were some in Magic and some in Gnuplot2.
3401 2.3. There were some in Magic and some in Gnuplot2.
3398
3402
3399 2003-06-30 Fernando Perez <fperez@colorado.edu>
3403 2003-06-30 Fernando Perez <fperez@colorado.edu>
3400
3404
3401 * IPython/genutils.py (page): modified to call curses only for
3405 * IPython/genutils.py (page): modified to call curses only for
3402 terminals where TERM=='xterm'. After problems under many other
3406 terminals where TERM=='xterm'. After problems under many other
3403 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3407 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3404
3408
3405 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3409 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3406 would be triggered when readline was absent. This was just an old
3410 would be triggered when readline was absent. This was just an old
3407 debugging statement I'd forgotten to take out.
3411 debugging statement I'd forgotten to take out.
3408
3412
3409 2003-06-20 Fernando Perez <fperez@colorado.edu>
3413 2003-06-20 Fernando Perez <fperez@colorado.edu>
3410
3414
3411 * IPython/genutils.py (clock): modified to return only user time
3415 * IPython/genutils.py (clock): modified to return only user time
3412 (not counting system time), after a discussion on scipy. While
3416 (not counting system time), after a discussion on scipy. While
3413 system time may be a useful quantity occasionally, it may much
3417 system time may be a useful quantity occasionally, it may much
3414 more easily be skewed by occasional swapping or other similar
3418 more easily be skewed by occasional swapping or other similar
3415 activity.
3419 activity.
3416
3420
3417 2003-06-05 Fernando Perez <fperez@colorado.edu>
3421 2003-06-05 Fernando Perez <fperez@colorado.edu>
3418
3422
3419 * IPython/numutils.py (identity): new function, for building
3423 * IPython/numutils.py (identity): new function, for building
3420 arbitrary rank Kronecker deltas (mostly backwards compatible with
3424 arbitrary rank Kronecker deltas (mostly backwards compatible with
3421 Numeric.identity)
3425 Numeric.identity)
3422
3426
3423 2003-06-03 Fernando Perez <fperez@colorado.edu>
3427 2003-06-03 Fernando Perez <fperez@colorado.edu>
3424
3428
3425 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3429 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3426 arguments passed to magics with spaces, to allow trailing '\' to
3430 arguments passed to magics with spaces, to allow trailing '\' to
3427 work normally (mainly for Windows users).
3431 work normally (mainly for Windows users).
3428
3432
3429 2003-05-29 Fernando Perez <fperez@colorado.edu>
3433 2003-05-29 Fernando Perez <fperez@colorado.edu>
3430
3434
3431 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3435 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3432 instead of pydoc.help. This fixes a bizarre behavior where
3436 instead of pydoc.help. This fixes a bizarre behavior where
3433 printing '%s' % locals() would trigger the help system. Now
3437 printing '%s' % locals() would trigger the help system. Now
3434 ipython behaves like normal python does.
3438 ipython behaves like normal python does.
3435
3439
3436 Note that if one does 'from pydoc import help', the bizarre
3440 Note that if one does 'from pydoc import help', the bizarre
3437 behavior returns, but this will also happen in normal python, so
3441 behavior returns, but this will also happen in normal python, so
3438 it's not an ipython bug anymore (it has to do with how pydoc.help
3442 it's not an ipython bug anymore (it has to do with how pydoc.help
3439 is implemented).
3443 is implemented).
3440
3444
3441 2003-05-22 Fernando Perez <fperez@colorado.edu>
3445 2003-05-22 Fernando Perez <fperez@colorado.edu>
3442
3446
3443 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3447 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3444 return [] instead of None when nothing matches, also match to end
3448 return [] instead of None when nothing matches, also match to end
3445 of line. Patch by Gary Bishop.
3449 of line. Patch by Gary Bishop.
3446
3450
3447 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3451 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3448 protection as before, for files passed on the command line. This
3452 protection as before, for files passed on the command line. This
3449 prevents the CrashHandler from kicking in if user files call into
3453 prevents the CrashHandler from kicking in if user files call into
3450 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3454 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3451 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3455 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3452
3456
3453 2003-05-20 *** Released version 0.4.0
3457 2003-05-20 *** Released version 0.4.0
3454
3458
3455 2003-05-20 Fernando Perez <fperez@colorado.edu>
3459 2003-05-20 Fernando Perez <fperez@colorado.edu>
3456
3460
3457 * setup.py: added support for manpages. It's a bit hackish b/c of
3461 * setup.py: added support for manpages. It's a bit hackish b/c of
3458 a bug in the way the bdist_rpm distutils target handles gzipped
3462 a bug in the way the bdist_rpm distutils target handles gzipped
3459 manpages, but it works. After a patch by Jack.
3463 manpages, but it works. After a patch by Jack.
3460
3464
3461 2003-05-19 Fernando Perez <fperez@colorado.edu>
3465 2003-05-19 Fernando Perez <fperez@colorado.edu>
3462
3466
3463 * IPython/numutils.py: added a mockup of the kinds module, since
3467 * IPython/numutils.py: added a mockup of the kinds module, since
3464 it was recently removed from Numeric. This way, numutils will
3468 it was recently removed from Numeric. This way, numutils will
3465 work for all users even if they are missing kinds.
3469 work for all users even if they are missing kinds.
3466
3470
3467 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3471 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3468 failure, which can occur with SWIG-wrapped extensions. After a
3472 failure, which can occur with SWIG-wrapped extensions. After a
3469 crash report from Prabhu.
3473 crash report from Prabhu.
3470
3474
3471 2003-05-16 Fernando Perez <fperez@colorado.edu>
3475 2003-05-16 Fernando Perez <fperez@colorado.edu>
3472
3476
3473 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3477 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3474 protect ipython from user code which may call directly
3478 protect ipython from user code which may call directly
3475 sys.excepthook (this looks like an ipython crash to the user, even
3479 sys.excepthook (this looks like an ipython crash to the user, even
3476 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3480 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3477 This is especially important to help users of WxWindows, but may
3481 This is especially important to help users of WxWindows, but may
3478 also be useful in other cases.
3482 also be useful in other cases.
3479
3483
3480 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3484 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3481 an optional tb_offset to be specified, and to preserve exception
3485 an optional tb_offset to be specified, and to preserve exception
3482 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3486 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3483
3487
3484 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3488 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3485
3489
3486 2003-05-15 Fernando Perez <fperez@colorado.edu>
3490 2003-05-15 Fernando Perez <fperez@colorado.edu>
3487
3491
3488 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3492 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3489 installing for a new user under Windows.
3493 installing for a new user under Windows.
3490
3494
3491 2003-05-12 Fernando Perez <fperez@colorado.edu>
3495 2003-05-12 Fernando Perez <fperez@colorado.edu>
3492
3496
3493 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3497 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3494 handler for Emacs comint-based lines. Currently it doesn't do
3498 handler for Emacs comint-based lines. Currently it doesn't do
3495 much (but importantly, it doesn't update the history cache). In
3499 much (but importantly, it doesn't update the history cache). In
3496 the future it may be expanded if Alex needs more functionality
3500 the future it may be expanded if Alex needs more functionality
3497 there.
3501 there.
3498
3502
3499 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3503 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3500 info to crash reports.
3504 info to crash reports.
3501
3505
3502 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3506 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3503 just like Python's -c. Also fixed crash with invalid -color
3507 just like Python's -c. Also fixed crash with invalid -color
3504 option value at startup. Thanks to Will French
3508 option value at startup. Thanks to Will French
3505 <wfrench-AT-bestweb.net> for the bug report.
3509 <wfrench-AT-bestweb.net> for the bug report.
3506
3510
3507 2003-05-09 Fernando Perez <fperez@colorado.edu>
3511 2003-05-09 Fernando Perez <fperez@colorado.edu>
3508
3512
3509 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3513 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3510 to EvalDict (it's a mapping, after all) and simplified its code
3514 to EvalDict (it's a mapping, after all) and simplified its code
3511 quite a bit, after a nice discussion on c.l.py where Gustavo
3515 quite a bit, after a nice discussion on c.l.py where Gustavo
3512 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3516 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3513
3517
3514 2003-04-30 Fernando Perez <fperez@colorado.edu>
3518 2003-04-30 Fernando Perez <fperez@colorado.edu>
3515
3519
3516 * IPython/genutils.py (timings_out): modified it to reduce its
3520 * IPython/genutils.py (timings_out): modified it to reduce its
3517 overhead in the common reps==1 case.
3521 overhead in the common reps==1 case.
3518
3522
3519 2003-04-29 Fernando Perez <fperez@colorado.edu>
3523 2003-04-29 Fernando Perez <fperez@colorado.edu>
3520
3524
3521 * IPython/genutils.py (timings_out): Modified to use the resource
3525 * IPython/genutils.py (timings_out): Modified to use the resource
3522 module, which avoids the wraparound problems of time.clock().
3526 module, which avoids the wraparound problems of time.clock().
3523
3527
3524 2003-04-17 *** Released version 0.2.15pre4
3528 2003-04-17 *** Released version 0.2.15pre4
3525
3529
3526 2003-04-17 Fernando Perez <fperez@colorado.edu>
3530 2003-04-17 Fernando Perez <fperez@colorado.edu>
3527
3531
3528 * setup.py (scriptfiles): Split windows-specific stuff over to a
3532 * setup.py (scriptfiles): Split windows-specific stuff over to a
3529 separate file, in an attempt to have a Windows GUI installer.
3533 separate file, in an attempt to have a Windows GUI installer.
3530 That didn't work, but part of the groundwork is done.
3534 That didn't work, but part of the groundwork is done.
3531
3535
3532 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3536 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3533 indent/unindent with 4 spaces. Particularly useful in combination
3537 indent/unindent with 4 spaces. Particularly useful in combination
3534 with the new auto-indent option.
3538 with the new auto-indent option.
3535
3539
3536 2003-04-16 Fernando Perez <fperez@colorado.edu>
3540 2003-04-16 Fernando Perez <fperez@colorado.edu>
3537
3541
3538 * IPython/Magic.py: various replacements of self.rc for
3542 * IPython/Magic.py: various replacements of self.rc for
3539 self.shell.rc. A lot more remains to be done to fully disentangle
3543 self.shell.rc. A lot more remains to be done to fully disentangle
3540 this class from the main Shell class.
3544 this class from the main Shell class.
3541
3545
3542 * IPython/GnuplotRuntime.py: added checks for mouse support so
3546 * IPython/GnuplotRuntime.py: added checks for mouse support so
3543 that we don't try to enable it if the current gnuplot doesn't
3547 that we don't try to enable it if the current gnuplot doesn't
3544 really support it. Also added checks so that we don't try to
3548 really support it. Also added checks so that we don't try to
3545 enable persist under Windows (where Gnuplot doesn't recognize the
3549 enable persist under Windows (where Gnuplot doesn't recognize the
3546 option).
3550 option).
3547
3551
3548 * IPython/iplib.py (InteractiveShell.interact): Added optional
3552 * IPython/iplib.py (InteractiveShell.interact): Added optional
3549 auto-indenting code, after a patch by King C. Shu
3553 auto-indenting code, after a patch by King C. Shu
3550 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3554 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3551 get along well with pasting indented code. If I ever figure out
3555 get along well with pasting indented code. If I ever figure out
3552 how to make that part go well, it will become on by default.
3556 how to make that part go well, it will become on by default.
3553
3557
3554 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3558 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3555 crash ipython if there was an unmatched '%' in the user's prompt
3559 crash ipython if there was an unmatched '%' in the user's prompt
3556 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3560 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3557
3561
3558 * IPython/iplib.py (InteractiveShell.interact): removed the
3562 * IPython/iplib.py (InteractiveShell.interact): removed the
3559 ability to ask the user whether he wants to crash or not at the
3563 ability to ask the user whether he wants to crash or not at the
3560 'last line' exception handler. Calling functions at that point
3564 'last line' exception handler. Calling functions at that point
3561 changes the stack, and the error reports would have incorrect
3565 changes the stack, and the error reports would have incorrect
3562 tracebacks.
3566 tracebacks.
3563
3567
3564 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3568 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3565 pass through a peger a pretty-printed form of any object. After a
3569 pass through a peger a pretty-printed form of any object. After a
3566 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3570 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3567
3571
3568 2003-04-14 Fernando Perez <fperez@colorado.edu>
3572 2003-04-14 Fernando Perez <fperez@colorado.edu>
3569
3573
3570 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3574 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3571 all files in ~ would be modified at first install (instead of
3575 all files in ~ would be modified at first install (instead of
3572 ~/.ipython). This could be potentially disastrous, as the
3576 ~/.ipython). This could be potentially disastrous, as the
3573 modification (make line-endings native) could damage binary files.
3577 modification (make line-endings native) could damage binary files.
3574
3578
3575 2003-04-10 Fernando Perez <fperez@colorado.edu>
3579 2003-04-10 Fernando Perez <fperez@colorado.edu>
3576
3580
3577 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3581 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3578 handle only lines which are invalid python. This now means that
3582 handle only lines which are invalid python. This now means that
3579 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3583 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3580 for the bug report.
3584 for the bug report.
3581
3585
3582 2003-04-01 Fernando Perez <fperez@colorado.edu>
3586 2003-04-01 Fernando Perez <fperez@colorado.edu>
3583
3587
3584 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3588 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3585 where failing to set sys.last_traceback would crash pdb.pm().
3589 where failing to set sys.last_traceback would crash pdb.pm().
3586 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3590 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3587 report.
3591 report.
3588
3592
3589 2003-03-25 Fernando Perez <fperez@colorado.edu>
3593 2003-03-25 Fernando Perez <fperez@colorado.edu>
3590
3594
3591 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3595 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3592 before printing it (it had a lot of spurious blank lines at the
3596 before printing it (it had a lot of spurious blank lines at the
3593 end).
3597 end).
3594
3598
3595 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3599 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3596 output would be sent 21 times! Obviously people don't use this
3600 output would be sent 21 times! Obviously people don't use this
3597 too often, or I would have heard about it.
3601 too often, or I would have heard about it.
3598
3602
3599 2003-03-24 Fernando Perez <fperez@colorado.edu>
3603 2003-03-24 Fernando Perez <fperez@colorado.edu>
3600
3604
3601 * setup.py (scriptfiles): renamed the data_files parameter from
3605 * setup.py (scriptfiles): renamed the data_files parameter from
3602 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3606 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3603 for the patch.
3607 for the patch.
3604
3608
3605 2003-03-20 Fernando Perez <fperez@colorado.edu>
3609 2003-03-20 Fernando Perez <fperez@colorado.edu>
3606
3610
3607 * IPython/genutils.py (error): added error() and fatal()
3611 * IPython/genutils.py (error): added error() and fatal()
3608 functions.
3612 functions.
3609
3613
3610 2003-03-18 *** Released version 0.2.15pre3
3614 2003-03-18 *** Released version 0.2.15pre3
3611
3615
3612 2003-03-18 Fernando Perez <fperez@colorado.edu>
3616 2003-03-18 Fernando Perez <fperez@colorado.edu>
3613
3617
3614 * setupext/install_data_ext.py
3618 * setupext/install_data_ext.py
3615 (install_data_ext.initialize_options): Class contributed by Jack
3619 (install_data_ext.initialize_options): Class contributed by Jack
3616 Moffit for fixing the old distutils hack. He is sending this to
3620 Moffit for fixing the old distutils hack. He is sending this to
3617 the distutils folks so in the future we may not need it as a
3621 the distutils folks so in the future we may not need it as a
3618 private fix.
3622 private fix.
3619
3623
3620 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3624 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3621 changes for Debian packaging. See his patch for full details.
3625 changes for Debian packaging. See his patch for full details.
3622 The old distutils hack of making the ipythonrc* files carry a
3626 The old distutils hack of making the ipythonrc* files carry a
3623 bogus .py extension is gone, at last. Examples were moved to a
3627 bogus .py extension is gone, at last. Examples were moved to a
3624 separate subdir under doc/, and the separate executable scripts
3628 separate subdir under doc/, and the separate executable scripts
3625 now live in their own directory. Overall a great cleanup. The
3629 now live in their own directory. Overall a great cleanup. The
3626 manual was updated to use the new files, and setup.py has been
3630 manual was updated to use the new files, and setup.py has been
3627 fixed for this setup.
3631 fixed for this setup.
3628
3632
3629 * IPython/PyColorize.py (Parser.usage): made non-executable and
3633 * IPython/PyColorize.py (Parser.usage): made non-executable and
3630 created a pycolor wrapper around it to be included as a script.
3634 created a pycolor wrapper around it to be included as a script.
3631
3635
3632 2003-03-12 *** Released version 0.2.15pre2
3636 2003-03-12 *** Released version 0.2.15pre2
3633
3637
3634 2003-03-12 Fernando Perez <fperez@colorado.edu>
3638 2003-03-12 Fernando Perez <fperez@colorado.edu>
3635
3639
3636 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3640 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3637 long-standing problem with garbage characters in some terminals.
3641 long-standing problem with garbage characters in some terminals.
3638 The issue was really that the \001 and \002 escapes must _only_ be
3642 The issue was really that the \001 and \002 escapes must _only_ be
3639 passed to input prompts (which call readline), but _never_ to
3643 passed to input prompts (which call readline), but _never_ to
3640 normal text to be printed on screen. I changed ColorANSI to have
3644 normal text to be printed on screen. I changed ColorANSI to have
3641 two classes: TermColors and InputTermColors, each with the
3645 two classes: TermColors and InputTermColors, each with the
3642 appropriate escapes for input prompts or normal text. The code in
3646 appropriate escapes for input prompts or normal text. The code in
3643 Prompts.py got slightly more complicated, but this very old and
3647 Prompts.py got slightly more complicated, but this very old and
3644 annoying bug is finally fixed.
3648 annoying bug is finally fixed.
3645
3649
3646 All the credit for nailing down the real origin of this problem
3650 All the credit for nailing down the real origin of this problem
3647 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3651 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3648 *Many* thanks to him for spending quite a bit of effort on this.
3652 *Many* thanks to him for spending quite a bit of effort on this.
3649
3653
3650 2003-03-05 *** Released version 0.2.15pre1
3654 2003-03-05 *** Released version 0.2.15pre1
3651
3655
3652 2003-03-03 Fernando Perez <fperez@colorado.edu>
3656 2003-03-03 Fernando Perez <fperez@colorado.edu>
3653
3657
3654 * IPython/FakeModule.py: Moved the former _FakeModule to a
3658 * IPython/FakeModule.py: Moved the former _FakeModule to a
3655 separate file, because it's also needed by Magic (to fix a similar
3659 separate file, because it's also needed by Magic (to fix a similar
3656 pickle-related issue in @run).
3660 pickle-related issue in @run).
3657
3661
3658 2003-03-02 Fernando Perez <fperez@colorado.edu>
3662 2003-03-02 Fernando Perez <fperez@colorado.edu>
3659
3663
3660 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3664 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3661 the autocall option at runtime.
3665 the autocall option at runtime.
3662 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3666 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3663 across Magic.py to start separating Magic from InteractiveShell.
3667 across Magic.py to start separating Magic from InteractiveShell.
3664 (Magic._ofind): Fixed to return proper namespace for dotted
3668 (Magic._ofind): Fixed to return proper namespace for dotted
3665 names. Before, a dotted name would always return 'not currently
3669 names. Before, a dotted name would always return 'not currently
3666 defined', because it would find the 'parent'. s.x would be found,
3670 defined', because it would find the 'parent'. s.x would be found,
3667 but since 'x' isn't defined by itself, it would get confused.
3671 but since 'x' isn't defined by itself, it would get confused.
3668 (Magic.magic_run): Fixed pickling problems reported by Ralf
3672 (Magic.magic_run): Fixed pickling problems reported by Ralf
3669 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3673 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3670 that I'd used when Mike Heeter reported similar issues at the
3674 that I'd used when Mike Heeter reported similar issues at the
3671 top-level, but now for @run. It boils down to injecting the
3675 top-level, but now for @run. It boils down to injecting the
3672 namespace where code is being executed with something that looks
3676 namespace where code is being executed with something that looks
3673 enough like a module to fool pickle.dump(). Since a pickle stores
3677 enough like a module to fool pickle.dump(). Since a pickle stores
3674 a named reference to the importing module, we need this for
3678 a named reference to the importing module, we need this for
3675 pickles to save something sensible.
3679 pickles to save something sensible.
3676
3680
3677 * IPython/ipmaker.py (make_IPython): added an autocall option.
3681 * IPython/ipmaker.py (make_IPython): added an autocall option.
3678
3682
3679 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3683 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3680 the auto-eval code. Now autocalling is an option, and the code is
3684 the auto-eval code. Now autocalling is an option, and the code is
3681 also vastly safer. There is no more eval() involved at all.
3685 also vastly safer. There is no more eval() involved at all.
3682
3686
3683 2003-03-01 Fernando Perez <fperez@colorado.edu>
3687 2003-03-01 Fernando Perez <fperez@colorado.edu>
3684
3688
3685 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3689 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3686 dict with named keys instead of a tuple.
3690 dict with named keys instead of a tuple.
3687
3691
3688 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3692 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3689
3693
3690 * setup.py (make_shortcut): Fixed message about directories
3694 * setup.py (make_shortcut): Fixed message about directories
3691 created during Windows installation (the directories were ok, just
3695 created during Windows installation (the directories were ok, just
3692 the printed message was misleading). Thanks to Chris Liechti
3696 the printed message was misleading). Thanks to Chris Liechti
3693 <cliechti-AT-gmx.net> for the heads up.
3697 <cliechti-AT-gmx.net> for the heads up.
3694
3698
3695 2003-02-21 Fernando Perez <fperez@colorado.edu>
3699 2003-02-21 Fernando Perez <fperez@colorado.edu>
3696
3700
3697 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3701 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3698 of ValueError exception when checking for auto-execution. This
3702 of ValueError exception when checking for auto-execution. This
3699 one is raised by things like Numeric arrays arr.flat when the
3703 one is raised by things like Numeric arrays arr.flat when the
3700 array is non-contiguous.
3704 array is non-contiguous.
3701
3705
3702 2003-01-31 Fernando Perez <fperez@colorado.edu>
3706 2003-01-31 Fernando Perez <fperez@colorado.edu>
3703
3707
3704 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3708 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3705 not return any value at all (even though the command would get
3709 not return any value at all (even though the command would get
3706 executed).
3710 executed).
3707 (xsys): Flush stdout right after printing the command to ensure
3711 (xsys): Flush stdout right after printing the command to ensure
3708 proper ordering of commands and command output in the total
3712 proper ordering of commands and command output in the total
3709 output.
3713 output.
3710 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3714 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3711 system/getoutput as defaults. The old ones are kept for
3715 system/getoutput as defaults. The old ones are kept for
3712 compatibility reasons, so no code which uses this library needs
3716 compatibility reasons, so no code which uses this library needs
3713 changing.
3717 changing.
3714
3718
3715 2003-01-27 *** Released version 0.2.14
3719 2003-01-27 *** Released version 0.2.14
3716
3720
3717 2003-01-25 Fernando Perez <fperez@colorado.edu>
3721 2003-01-25 Fernando Perez <fperez@colorado.edu>
3718
3722
3719 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3723 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3720 functions defined in previous edit sessions could not be re-edited
3724 functions defined in previous edit sessions could not be re-edited
3721 (because the temp files were immediately removed). Now temp files
3725 (because the temp files were immediately removed). Now temp files
3722 are removed only at IPython's exit.
3726 are removed only at IPython's exit.
3723 (Magic.magic_run): Improved @run to perform shell-like expansions
3727 (Magic.magic_run): Improved @run to perform shell-like expansions
3724 on its arguments (~users and $VARS). With this, @run becomes more
3728 on its arguments (~users and $VARS). With this, @run becomes more
3725 like a normal command-line.
3729 like a normal command-line.
3726
3730
3727 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3731 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3728 bugs related to embedding and cleaned up that code. A fairly
3732 bugs related to embedding and cleaned up that code. A fairly
3729 important one was the impossibility to access the global namespace
3733 important one was the impossibility to access the global namespace
3730 through the embedded IPython (only local variables were visible).
3734 through the embedded IPython (only local variables were visible).
3731
3735
3732 2003-01-14 Fernando Perez <fperez@colorado.edu>
3736 2003-01-14 Fernando Perez <fperez@colorado.edu>
3733
3737
3734 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3738 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3735 auto-calling to be a bit more conservative. Now it doesn't get
3739 auto-calling to be a bit more conservative. Now it doesn't get
3736 triggered if any of '!=()<>' are in the rest of the input line, to
3740 triggered if any of '!=()<>' are in the rest of the input line, to
3737 allow comparing callables. Thanks to Alex for the heads up.
3741 allow comparing callables. Thanks to Alex for the heads up.
3738
3742
3739 2003-01-07 Fernando Perez <fperez@colorado.edu>
3743 2003-01-07 Fernando Perez <fperez@colorado.edu>
3740
3744
3741 * IPython/genutils.py (page): fixed estimation of the number of
3745 * IPython/genutils.py (page): fixed estimation of the number of
3742 lines in a string to be paged to simply count newlines. This
3746 lines in a string to be paged to simply count newlines. This
3743 prevents over-guessing due to embedded escape sequences. A better
3747 prevents over-guessing due to embedded escape sequences. A better
3744 long-term solution would involve stripping out the control chars
3748 long-term solution would involve stripping out the control chars
3745 for the count, but it's potentially so expensive I just don't
3749 for the count, but it's potentially so expensive I just don't
3746 think it's worth doing.
3750 think it's worth doing.
3747
3751
3748 2002-12-19 *** Released version 0.2.14pre50
3752 2002-12-19 *** Released version 0.2.14pre50
3749
3753
3750 2002-12-19 Fernando Perez <fperez@colorado.edu>
3754 2002-12-19 Fernando Perez <fperez@colorado.edu>
3751
3755
3752 * tools/release (version): Changed release scripts to inform
3756 * tools/release (version): Changed release scripts to inform
3753 Andrea and build a NEWS file with a list of recent changes.
3757 Andrea and build a NEWS file with a list of recent changes.
3754
3758
3755 * IPython/ColorANSI.py (__all__): changed terminal detection
3759 * IPython/ColorANSI.py (__all__): changed terminal detection
3756 code. Seems to work better for xterms without breaking
3760 code. Seems to work better for xterms without breaking
3757 konsole. Will need more testing to determine if WinXP and Mac OSX
3761 konsole. Will need more testing to determine if WinXP and Mac OSX
3758 also work ok.
3762 also work ok.
3759
3763
3760 2002-12-18 *** Released version 0.2.14pre49
3764 2002-12-18 *** Released version 0.2.14pre49
3761
3765
3762 2002-12-18 Fernando Perez <fperez@colorado.edu>
3766 2002-12-18 Fernando Perez <fperez@colorado.edu>
3763
3767
3764 * Docs: added new info about Mac OSX, from Andrea.
3768 * Docs: added new info about Mac OSX, from Andrea.
3765
3769
3766 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3770 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3767 allow direct plotting of python strings whose format is the same
3771 allow direct plotting of python strings whose format is the same
3768 of gnuplot data files.
3772 of gnuplot data files.
3769
3773
3770 2002-12-16 Fernando Perez <fperez@colorado.edu>
3774 2002-12-16 Fernando Perez <fperez@colorado.edu>
3771
3775
3772 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3776 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3773 value of exit question to be acknowledged.
3777 value of exit question to be acknowledged.
3774
3778
3775 2002-12-03 Fernando Perez <fperez@colorado.edu>
3779 2002-12-03 Fernando Perez <fperez@colorado.edu>
3776
3780
3777 * IPython/ipmaker.py: removed generators, which had been added
3781 * IPython/ipmaker.py: removed generators, which had been added
3778 by mistake in an earlier debugging run. This was causing trouble
3782 by mistake in an earlier debugging run. This was causing trouble
3779 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3783 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3780 for pointing this out.
3784 for pointing this out.
3781
3785
3782 2002-11-17 Fernando Perez <fperez@colorado.edu>
3786 2002-11-17 Fernando Perez <fperez@colorado.edu>
3783
3787
3784 * Manual: updated the Gnuplot section.
3788 * Manual: updated the Gnuplot section.
3785
3789
3786 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3790 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3787 a much better split of what goes in Runtime and what goes in
3791 a much better split of what goes in Runtime and what goes in
3788 Interactive.
3792 Interactive.
3789
3793
3790 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3794 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3791 being imported from iplib.
3795 being imported from iplib.
3792
3796
3793 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3797 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3794 for command-passing. Now the global Gnuplot instance is called
3798 for command-passing. Now the global Gnuplot instance is called
3795 'gp' instead of 'g', which was really a far too fragile and
3799 'gp' instead of 'g', which was really a far too fragile and
3796 common name.
3800 common name.
3797
3801
3798 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3802 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3799 bounding boxes generated by Gnuplot for square plots.
3803 bounding boxes generated by Gnuplot for square plots.
3800
3804
3801 * IPython/genutils.py (popkey): new function added. I should
3805 * IPython/genutils.py (popkey): new function added. I should
3802 suggest this on c.l.py as a dict method, it seems useful.
3806 suggest this on c.l.py as a dict method, it seems useful.
3803
3807
3804 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3808 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3805 to transparently handle PostScript generation. MUCH better than
3809 to transparently handle PostScript generation. MUCH better than
3806 the previous plot_eps/replot_eps (which I removed now). The code
3810 the previous plot_eps/replot_eps (which I removed now). The code
3807 is also fairly clean and well documented now (including
3811 is also fairly clean and well documented now (including
3808 docstrings).
3812 docstrings).
3809
3813
3810 2002-11-13 Fernando Perez <fperez@colorado.edu>
3814 2002-11-13 Fernando Perez <fperez@colorado.edu>
3811
3815
3812 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3816 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3813 (inconsistent with options).
3817 (inconsistent with options).
3814
3818
3815 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3819 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3816 manually disabled, I don't know why. Fixed it.
3820 manually disabled, I don't know why. Fixed it.
3817 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3821 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3818 eps output.
3822 eps output.
3819
3823
3820 2002-11-12 Fernando Perez <fperez@colorado.edu>
3824 2002-11-12 Fernando Perez <fperez@colorado.edu>
3821
3825
3822 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3826 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3823 don't propagate up to caller. Fixes crash reported by François
3827 don't propagate up to caller. Fixes crash reported by François
3824 Pinard.
3828 Pinard.
3825
3829
3826 2002-11-09 Fernando Perez <fperez@colorado.edu>
3830 2002-11-09 Fernando Perez <fperez@colorado.edu>
3827
3831
3828 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3832 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3829 history file for new users.
3833 history file for new users.
3830 (make_IPython): fixed bug where initial install would leave the
3834 (make_IPython): fixed bug where initial install would leave the
3831 user running in the .ipython dir.
3835 user running in the .ipython dir.
3832 (make_IPython): fixed bug where config dir .ipython would be
3836 (make_IPython): fixed bug where config dir .ipython would be
3833 created regardless of the given -ipythondir option. Thanks to Cory
3837 created regardless of the given -ipythondir option. Thanks to Cory
3834 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3838 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3835
3839
3836 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3840 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3837 type confirmations. Will need to use it in all of IPython's code
3841 type confirmations. Will need to use it in all of IPython's code
3838 consistently.
3842 consistently.
3839
3843
3840 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3844 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3841 context to print 31 lines instead of the default 5. This will make
3845 context to print 31 lines instead of the default 5. This will make
3842 the crash reports extremely detailed in case the problem is in
3846 the crash reports extremely detailed in case the problem is in
3843 libraries I don't have access to.
3847 libraries I don't have access to.
3844
3848
3845 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3849 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3846 line of defense' code to still crash, but giving users fair
3850 line of defense' code to still crash, but giving users fair
3847 warning. I don't want internal errors to go unreported: if there's
3851 warning. I don't want internal errors to go unreported: if there's
3848 an internal problem, IPython should crash and generate a full
3852 an internal problem, IPython should crash and generate a full
3849 report.
3853 report.
3850
3854
3851 2002-11-08 Fernando Perez <fperez@colorado.edu>
3855 2002-11-08 Fernando Perez <fperez@colorado.edu>
3852
3856
3853 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3857 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3854 otherwise uncaught exceptions which can appear if people set
3858 otherwise uncaught exceptions which can appear if people set
3855 sys.stdout to something badly broken. Thanks to a crash report
3859 sys.stdout to something badly broken. Thanks to a crash report
3856 from henni-AT-mail.brainbot.com.
3860 from henni-AT-mail.brainbot.com.
3857
3861
3858 2002-11-04 Fernando Perez <fperez@colorado.edu>
3862 2002-11-04 Fernando Perez <fperez@colorado.edu>
3859
3863
3860 * IPython/iplib.py (InteractiveShell.interact): added
3864 * IPython/iplib.py (InteractiveShell.interact): added
3861 __IPYTHON__active to the builtins. It's a flag which goes on when
3865 __IPYTHON__active to the builtins. It's a flag which goes on when
3862 the interaction starts and goes off again when it stops. This
3866 the interaction starts and goes off again when it stops. This
3863 allows embedding code to detect being inside IPython. Before this
3867 allows embedding code to detect being inside IPython. Before this
3864 was done via __IPYTHON__, but that only shows that an IPython
3868 was done via __IPYTHON__, but that only shows that an IPython
3865 instance has been created.
3869 instance has been created.
3866
3870
3867 * IPython/Magic.py (Magic.magic_env): I realized that in a
3871 * IPython/Magic.py (Magic.magic_env): I realized that in a
3868 UserDict, instance.data holds the data as a normal dict. So I
3872 UserDict, instance.data holds the data as a normal dict. So I
3869 modified @env to return os.environ.data instead of rebuilding a
3873 modified @env to return os.environ.data instead of rebuilding a
3870 dict by hand.
3874 dict by hand.
3871
3875
3872 2002-11-02 Fernando Perez <fperez@colorado.edu>
3876 2002-11-02 Fernando Perez <fperez@colorado.edu>
3873
3877
3874 * IPython/genutils.py (warn): changed so that level 1 prints no
3878 * IPython/genutils.py (warn): changed so that level 1 prints no
3875 header. Level 2 is now the default (with 'WARNING' header, as
3879 header. Level 2 is now the default (with 'WARNING' header, as
3876 before). I think I tracked all places where changes were needed in
3880 before). I think I tracked all places where changes were needed in
3877 IPython, but outside code using the old level numbering may have
3881 IPython, but outside code using the old level numbering may have
3878 broken.
3882 broken.
3879
3883
3880 * IPython/iplib.py (InteractiveShell.runcode): added this to
3884 * IPython/iplib.py (InteractiveShell.runcode): added this to
3881 handle the tracebacks in SystemExit traps correctly. The previous
3885 handle the tracebacks in SystemExit traps correctly. The previous
3882 code (through interact) was printing more of the stack than
3886 code (through interact) was printing more of the stack than
3883 necessary, showing IPython internal code to the user.
3887 necessary, showing IPython internal code to the user.
3884
3888
3885 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3889 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3886 default. Now that the default at the confirmation prompt is yes,
3890 default. Now that the default at the confirmation prompt is yes,
3887 it's not so intrusive. François' argument that ipython sessions
3891 it's not so intrusive. François' argument that ipython sessions
3888 tend to be complex enough not to lose them from an accidental C-d,
3892 tend to be complex enough not to lose them from an accidental C-d,
3889 is a valid one.
3893 is a valid one.
3890
3894
3891 * IPython/iplib.py (InteractiveShell.interact): added a
3895 * IPython/iplib.py (InteractiveShell.interact): added a
3892 showtraceback() call to the SystemExit trap, and modified the exit
3896 showtraceback() call to the SystemExit trap, and modified the exit
3893 confirmation to have yes as the default.
3897 confirmation to have yes as the default.
3894
3898
3895 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3899 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3896 this file. It's been gone from the code for a long time, this was
3900 this file. It's been gone from the code for a long time, this was
3897 simply leftover junk.
3901 simply leftover junk.
3898
3902
3899 2002-11-01 Fernando Perez <fperez@colorado.edu>
3903 2002-11-01 Fernando Perez <fperez@colorado.edu>
3900
3904
3901 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3905 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3902 added. If set, IPython now traps EOF and asks for
3906 added. If set, IPython now traps EOF and asks for
3903 confirmation. After a request by François Pinard.
3907 confirmation. After a request by François Pinard.
3904
3908
3905 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3909 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3906 of @abort, and with a new (better) mechanism for handling the
3910 of @abort, and with a new (better) mechanism for handling the
3907 exceptions.
3911 exceptions.
3908
3912
3909 2002-10-27 Fernando Perez <fperez@colorado.edu>
3913 2002-10-27 Fernando Perez <fperez@colorado.edu>
3910
3914
3911 * IPython/usage.py (__doc__): updated the --help information and
3915 * IPython/usage.py (__doc__): updated the --help information and
3912 the ipythonrc file to indicate that -log generates
3916 the ipythonrc file to indicate that -log generates
3913 ./ipython.log. Also fixed the corresponding info in @logstart.
3917 ./ipython.log. Also fixed the corresponding info in @logstart.
3914 This and several other fixes in the manuals thanks to reports by
3918 This and several other fixes in the manuals thanks to reports by
3915 François Pinard <pinard-AT-iro.umontreal.ca>.
3919 François Pinard <pinard-AT-iro.umontreal.ca>.
3916
3920
3917 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3921 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3918 refer to @logstart (instead of @log, which doesn't exist).
3922 refer to @logstart (instead of @log, which doesn't exist).
3919
3923
3920 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3924 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3921 AttributeError crash. Thanks to Christopher Armstrong
3925 AttributeError crash. Thanks to Christopher Armstrong
3922 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3926 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3923 introduced recently (in 0.2.14pre37) with the fix to the eval
3927 introduced recently (in 0.2.14pre37) with the fix to the eval
3924 problem mentioned below.
3928 problem mentioned below.
3925
3929
3926 2002-10-17 Fernando Perez <fperez@colorado.edu>
3930 2002-10-17 Fernando Perez <fperez@colorado.edu>
3927
3931
3928 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3932 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3929 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3933 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3930
3934
3931 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3935 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3932 this function to fix a problem reported by Alex Schmolck. He saw
3936 this function to fix a problem reported by Alex Schmolck. He saw
3933 it with list comprehensions and generators, which were getting
3937 it with list comprehensions and generators, which were getting
3934 called twice. The real problem was an 'eval' call in testing for
3938 called twice. The real problem was an 'eval' call in testing for
3935 automagic which was evaluating the input line silently.
3939 automagic which was evaluating the input line silently.
3936
3940
3937 This is a potentially very nasty bug, if the input has side
3941 This is a potentially very nasty bug, if the input has side
3938 effects which must not be repeated. The code is much cleaner now,
3942 effects which must not be repeated. The code is much cleaner now,
3939 without any blanket 'except' left and with a regexp test for
3943 without any blanket 'except' left and with a regexp test for
3940 actual function names.
3944 actual function names.
3941
3945
3942 But an eval remains, which I'm not fully comfortable with. I just
3946 But an eval remains, which I'm not fully comfortable with. I just
3943 don't know how to find out if an expression could be a callable in
3947 don't know how to find out if an expression could be a callable in
3944 the user's namespace without doing an eval on the string. However
3948 the user's namespace without doing an eval on the string. However
3945 that string is now much more strictly checked so that no code
3949 that string is now much more strictly checked so that no code
3946 slips by, so the eval should only happen for things that can
3950 slips by, so the eval should only happen for things that can
3947 really be only function/method names.
3951 really be only function/method names.
3948
3952
3949 2002-10-15 Fernando Perez <fperez@colorado.edu>
3953 2002-10-15 Fernando Perez <fperez@colorado.edu>
3950
3954
3951 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3955 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3952 OSX information to main manual, removed README_Mac_OSX file from
3956 OSX information to main manual, removed README_Mac_OSX file from
3953 distribution. Also updated credits for recent additions.
3957 distribution. Also updated credits for recent additions.
3954
3958
3955 2002-10-10 Fernando Perez <fperez@colorado.edu>
3959 2002-10-10 Fernando Perez <fperez@colorado.edu>
3956
3960
3957 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3961 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3958 terminal-related issues. Many thanks to Andrea Riciputi
3962 terminal-related issues. Many thanks to Andrea Riciputi
3959 <andrea.riciputi-AT-libero.it> for writing it.
3963 <andrea.riciputi-AT-libero.it> for writing it.
3960
3964
3961 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3965 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3962 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3966 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3963
3967
3964 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3968 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3965 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3969 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3966 <syver-en-AT-online.no> who both submitted patches for this problem.
3970 <syver-en-AT-online.no> who both submitted patches for this problem.
3967
3971
3968 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3972 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3969 global embedding to make sure that things don't overwrite user
3973 global embedding to make sure that things don't overwrite user
3970 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3974 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3971
3975
3972 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3976 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3973 compatibility. Thanks to Hayden Callow
3977 compatibility. Thanks to Hayden Callow
3974 <h.callow-AT-elec.canterbury.ac.nz>
3978 <h.callow-AT-elec.canterbury.ac.nz>
3975
3979
3976 2002-10-04 Fernando Perez <fperez@colorado.edu>
3980 2002-10-04 Fernando Perez <fperez@colorado.edu>
3977
3981
3978 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3982 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3979 Gnuplot.File objects.
3983 Gnuplot.File objects.
3980
3984
3981 2002-07-23 Fernando Perez <fperez@colorado.edu>
3985 2002-07-23 Fernando Perez <fperez@colorado.edu>
3982
3986
3983 * IPython/genutils.py (timing): Added timings() and timing() for
3987 * IPython/genutils.py (timing): Added timings() and timing() for
3984 quick access to the most commonly needed data, the execution
3988 quick access to the most commonly needed data, the execution
3985 times. Old timing() renamed to timings_out().
3989 times. Old timing() renamed to timings_out().
3986
3990
3987 2002-07-18 Fernando Perez <fperez@colorado.edu>
3991 2002-07-18 Fernando Perez <fperez@colorado.edu>
3988
3992
3989 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3993 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3990 bug with nested instances disrupting the parent's tab completion.
3994 bug with nested instances disrupting the parent's tab completion.
3991
3995
3992 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3996 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3993 all_completions code to begin the emacs integration.
3997 all_completions code to begin the emacs integration.
3994
3998
3995 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3999 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3996 argument to allow titling individual arrays when plotting.
4000 argument to allow titling individual arrays when plotting.
3997
4001
3998 2002-07-15 Fernando Perez <fperez@colorado.edu>
4002 2002-07-15 Fernando Perez <fperez@colorado.edu>
3999
4003
4000 * setup.py (make_shortcut): changed to retrieve the value of
4004 * setup.py (make_shortcut): changed to retrieve the value of
4001 'Program Files' directory from the registry (this value changes in
4005 'Program Files' directory from the registry (this value changes in
4002 non-english versions of Windows). Thanks to Thomas Fanslau
4006 non-english versions of Windows). Thanks to Thomas Fanslau
4003 <tfanslau-AT-gmx.de> for the report.
4007 <tfanslau-AT-gmx.de> for the report.
4004
4008
4005 2002-07-10 Fernando Perez <fperez@colorado.edu>
4009 2002-07-10 Fernando Perez <fperez@colorado.edu>
4006
4010
4007 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4011 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4008 a bug in pdb, which crashes if a line with only whitespace is
4012 a bug in pdb, which crashes if a line with only whitespace is
4009 entered. Bug report submitted to sourceforge.
4013 entered. Bug report submitted to sourceforge.
4010
4014
4011 2002-07-09 Fernando Perez <fperez@colorado.edu>
4015 2002-07-09 Fernando Perez <fperez@colorado.edu>
4012
4016
4013 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4017 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4014 reporting exceptions (it's a bug in inspect.py, I just set a
4018 reporting exceptions (it's a bug in inspect.py, I just set a
4015 workaround).
4019 workaround).
4016
4020
4017 2002-07-08 Fernando Perez <fperez@colorado.edu>
4021 2002-07-08 Fernando Perez <fperez@colorado.edu>
4018
4022
4019 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4023 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4020 __IPYTHON__ in __builtins__ to show up in user_ns.
4024 __IPYTHON__ in __builtins__ to show up in user_ns.
4021
4025
4022 2002-07-03 Fernando Perez <fperez@colorado.edu>
4026 2002-07-03 Fernando Perez <fperez@colorado.edu>
4023
4027
4024 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4028 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4025 name from @gp_set_instance to @gp_set_default.
4029 name from @gp_set_instance to @gp_set_default.
4026
4030
4027 * IPython/ipmaker.py (make_IPython): default editor value set to
4031 * IPython/ipmaker.py (make_IPython): default editor value set to
4028 '0' (a string), to match the rc file. Otherwise will crash when
4032 '0' (a string), to match the rc file. Otherwise will crash when
4029 .strip() is called on it.
4033 .strip() is called on it.
4030
4034
4031
4035
4032 2002-06-28 Fernando Perez <fperez@colorado.edu>
4036 2002-06-28 Fernando Perez <fperez@colorado.edu>
4033
4037
4034 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4038 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4035 of files in current directory when a file is executed via
4039 of files in current directory when a file is executed via
4036 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4040 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4037
4041
4038 * setup.py (manfiles): fix for rpm builds, submitted by RA
4042 * setup.py (manfiles): fix for rpm builds, submitted by RA
4039 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4043 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4040
4044
4041 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4045 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4042 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4046 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4043 string!). A. Schmolck caught this one.
4047 string!). A. Schmolck caught this one.
4044
4048
4045 2002-06-27 Fernando Perez <fperez@colorado.edu>
4049 2002-06-27 Fernando Perez <fperez@colorado.edu>
4046
4050
4047 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4051 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4048 defined files at the cmd line. __name__ wasn't being set to
4052 defined files at the cmd line. __name__ wasn't being set to
4049 __main__.
4053 __main__.
4050
4054
4051 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4055 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4052 regular lists and tuples besides Numeric arrays.
4056 regular lists and tuples besides Numeric arrays.
4053
4057
4054 * IPython/Prompts.py (CachedOutput.__call__): Added output
4058 * IPython/Prompts.py (CachedOutput.__call__): Added output
4055 supression for input ending with ';'. Similar to Mathematica and
4059 supression for input ending with ';'. Similar to Mathematica and
4056 Matlab. The _* vars and Out[] list are still updated, just like
4060 Matlab. The _* vars and Out[] list are still updated, just like
4057 Mathematica behaves.
4061 Mathematica behaves.
4058
4062
4059 2002-06-25 Fernando Perez <fperez@colorado.edu>
4063 2002-06-25 Fernando Perez <fperez@colorado.edu>
4060
4064
4061 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4065 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4062 .ini extensions for profiels under Windows.
4066 .ini extensions for profiels under Windows.
4063
4067
4064 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4068 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4065 string form. Fix contributed by Alexander Schmolck
4069 string form. Fix contributed by Alexander Schmolck
4066 <a.schmolck-AT-gmx.net>
4070 <a.schmolck-AT-gmx.net>
4067
4071
4068 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4072 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4069 pre-configured Gnuplot instance.
4073 pre-configured Gnuplot instance.
4070
4074
4071 2002-06-21 Fernando Perez <fperez@colorado.edu>
4075 2002-06-21 Fernando Perez <fperez@colorado.edu>
4072
4076
4073 * IPython/numutils.py (exp_safe): new function, works around the
4077 * IPython/numutils.py (exp_safe): new function, works around the
4074 underflow problems in Numeric.
4078 underflow problems in Numeric.
4075 (log2): New fn. Safe log in base 2: returns exact integer answer
4079 (log2): New fn. Safe log in base 2: returns exact integer answer
4076 for exact integer powers of 2.
4080 for exact integer powers of 2.
4077
4081
4078 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4082 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4079 properly.
4083 properly.
4080
4084
4081 2002-06-20 Fernando Perez <fperez@colorado.edu>
4085 2002-06-20 Fernando Perez <fperez@colorado.edu>
4082
4086
4083 * IPython/genutils.py (timing): new function like
4087 * IPython/genutils.py (timing): new function like
4084 Mathematica's. Similar to time_test, but returns more info.
4088 Mathematica's. Similar to time_test, but returns more info.
4085
4089
4086 2002-06-18 Fernando Perez <fperez@colorado.edu>
4090 2002-06-18 Fernando Perez <fperez@colorado.edu>
4087
4091
4088 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4092 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4089 according to Mike Heeter's suggestions.
4093 according to Mike Heeter's suggestions.
4090
4094
4091 2002-06-16 Fernando Perez <fperez@colorado.edu>
4095 2002-06-16 Fernando Perez <fperez@colorado.edu>
4092
4096
4093 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4097 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4094 system. GnuplotMagic is gone as a user-directory option. New files
4098 system. GnuplotMagic is gone as a user-directory option. New files
4095 make it easier to use all the gnuplot stuff both from external
4099 make it easier to use all the gnuplot stuff both from external
4096 programs as well as from IPython. Had to rewrite part of
4100 programs as well as from IPython. Had to rewrite part of
4097 hardcopy() b/c of a strange bug: often the ps files simply don't
4101 hardcopy() b/c of a strange bug: often the ps files simply don't
4098 get created, and require a repeat of the command (often several
4102 get created, and require a repeat of the command (often several
4099 times).
4103 times).
4100
4104
4101 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4105 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4102 resolve output channel at call time, so that if sys.stderr has
4106 resolve output channel at call time, so that if sys.stderr has
4103 been redirected by user this gets honored.
4107 been redirected by user this gets honored.
4104
4108
4105 2002-06-13 Fernando Perez <fperez@colorado.edu>
4109 2002-06-13 Fernando Perez <fperez@colorado.edu>
4106
4110
4107 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4111 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4108 IPShell. Kept a copy with the old names to avoid breaking people's
4112 IPShell. Kept a copy with the old names to avoid breaking people's
4109 embedded code.
4113 embedded code.
4110
4114
4111 * IPython/ipython: simplified it to the bare minimum after
4115 * IPython/ipython: simplified it to the bare minimum after
4112 Holger's suggestions. Added info about how to use it in
4116 Holger's suggestions. Added info about how to use it in
4113 PYTHONSTARTUP.
4117 PYTHONSTARTUP.
4114
4118
4115 * IPython/Shell.py (IPythonShell): changed the options passing
4119 * IPython/Shell.py (IPythonShell): changed the options passing
4116 from a string with funky %s replacements to a straight list. Maybe
4120 from a string with funky %s replacements to a straight list. Maybe
4117 a bit more typing, but it follows sys.argv conventions, so there's
4121 a bit more typing, but it follows sys.argv conventions, so there's
4118 less special-casing to remember.
4122 less special-casing to remember.
4119
4123
4120 2002-06-12 Fernando Perez <fperez@colorado.edu>
4124 2002-06-12 Fernando Perez <fperez@colorado.edu>
4121
4125
4122 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4126 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4123 command. Thanks to a suggestion by Mike Heeter.
4127 command. Thanks to a suggestion by Mike Heeter.
4124 (Magic.magic_pfile): added behavior to look at filenames if given
4128 (Magic.magic_pfile): added behavior to look at filenames if given
4125 arg is not a defined object.
4129 arg is not a defined object.
4126 (Magic.magic_save): New @save function to save code snippets. Also
4130 (Magic.magic_save): New @save function to save code snippets. Also
4127 a Mike Heeter idea.
4131 a Mike Heeter idea.
4128
4132
4129 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4133 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4130 plot() and replot(). Much more convenient now, especially for
4134 plot() and replot(). Much more convenient now, especially for
4131 interactive use.
4135 interactive use.
4132
4136
4133 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4137 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4134 filenames.
4138 filenames.
4135
4139
4136 2002-06-02 Fernando Perez <fperez@colorado.edu>
4140 2002-06-02 Fernando Perez <fperez@colorado.edu>
4137
4141
4138 * IPython/Struct.py (Struct.__init__): modified to admit
4142 * IPython/Struct.py (Struct.__init__): modified to admit
4139 initialization via another struct.
4143 initialization via another struct.
4140
4144
4141 * IPython/genutils.py (SystemExec.__init__): New stateful
4145 * IPython/genutils.py (SystemExec.__init__): New stateful
4142 interface to xsys and bq. Useful for writing system scripts.
4146 interface to xsys and bq. Useful for writing system scripts.
4143
4147
4144 2002-05-30 Fernando Perez <fperez@colorado.edu>
4148 2002-05-30 Fernando Perez <fperez@colorado.edu>
4145
4149
4146 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4150 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4147 documents. This will make the user download smaller (it's getting
4151 documents. This will make the user download smaller (it's getting
4148 too big).
4152 too big).
4149
4153
4150 2002-05-29 Fernando Perez <fperez@colorado.edu>
4154 2002-05-29 Fernando Perez <fperez@colorado.edu>
4151
4155
4152 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4156 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4153 fix problems with shelve and pickle. Seems to work, but I don't
4157 fix problems with shelve and pickle. Seems to work, but I don't
4154 know if corner cases break it. Thanks to Mike Heeter
4158 know if corner cases break it. Thanks to Mike Heeter
4155 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4159 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4156
4160
4157 2002-05-24 Fernando Perez <fperez@colorado.edu>
4161 2002-05-24 Fernando Perez <fperez@colorado.edu>
4158
4162
4159 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4163 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4160 macros having broken.
4164 macros having broken.
4161
4165
4162 2002-05-21 Fernando Perez <fperez@colorado.edu>
4166 2002-05-21 Fernando Perez <fperez@colorado.edu>
4163
4167
4164 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4168 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4165 introduced logging bug: all history before logging started was
4169 introduced logging bug: all history before logging started was
4166 being written one character per line! This came from the redesign
4170 being written one character per line! This came from the redesign
4167 of the input history as a special list which slices to strings,
4171 of the input history as a special list which slices to strings,
4168 not to lists.
4172 not to lists.
4169
4173
4170 2002-05-20 Fernando Perez <fperez@colorado.edu>
4174 2002-05-20 Fernando Perez <fperez@colorado.edu>
4171
4175
4172 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4176 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4173 be an attribute of all classes in this module. The design of these
4177 be an attribute of all classes in this module. The design of these
4174 classes needs some serious overhauling.
4178 classes needs some serious overhauling.
4175
4179
4176 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4180 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4177 which was ignoring '_' in option names.
4181 which was ignoring '_' in option names.
4178
4182
4179 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4183 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4180 'Verbose_novars' to 'Context' and made it the new default. It's a
4184 'Verbose_novars' to 'Context' and made it the new default. It's a
4181 bit more readable and also safer than verbose.
4185 bit more readable and also safer than verbose.
4182
4186
4183 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4187 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4184 triple-quoted strings.
4188 triple-quoted strings.
4185
4189
4186 * IPython/OInspect.py (__all__): new module exposing the object
4190 * IPython/OInspect.py (__all__): new module exposing the object
4187 introspection facilities. Now the corresponding magics are dummy
4191 introspection facilities. Now the corresponding magics are dummy
4188 wrappers around this. Having this module will make it much easier
4192 wrappers around this. Having this module will make it much easier
4189 to put these functions into our modified pdb.
4193 to put these functions into our modified pdb.
4190 This new object inspector system uses the new colorizing module,
4194 This new object inspector system uses the new colorizing module,
4191 so source code and other things are nicely syntax highlighted.
4195 so source code and other things are nicely syntax highlighted.
4192
4196
4193 2002-05-18 Fernando Perez <fperez@colorado.edu>
4197 2002-05-18 Fernando Perez <fperez@colorado.edu>
4194
4198
4195 * IPython/ColorANSI.py: Split the coloring tools into a separate
4199 * IPython/ColorANSI.py: Split the coloring tools into a separate
4196 module so I can use them in other code easier (they were part of
4200 module so I can use them in other code easier (they were part of
4197 ultraTB).
4201 ultraTB).
4198
4202
4199 2002-05-17 Fernando Perez <fperez@colorado.edu>
4203 2002-05-17 Fernando Perez <fperez@colorado.edu>
4200
4204
4201 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4205 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4202 fixed it to set the global 'g' also to the called instance, as
4206 fixed it to set the global 'g' also to the called instance, as
4203 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4207 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4204 user's 'g' variables).
4208 user's 'g' variables).
4205
4209
4206 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4210 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4207 global variables (aliases to _ih,_oh) so that users which expect
4211 global variables (aliases to _ih,_oh) so that users which expect
4208 In[5] or Out[7] to work aren't unpleasantly surprised.
4212 In[5] or Out[7] to work aren't unpleasantly surprised.
4209 (InputList.__getslice__): new class to allow executing slices of
4213 (InputList.__getslice__): new class to allow executing slices of
4210 input history directly. Very simple class, complements the use of
4214 input history directly. Very simple class, complements the use of
4211 macros.
4215 macros.
4212
4216
4213 2002-05-16 Fernando Perez <fperez@colorado.edu>
4217 2002-05-16 Fernando Perez <fperez@colorado.edu>
4214
4218
4215 * setup.py (docdirbase): make doc directory be just doc/IPython
4219 * setup.py (docdirbase): make doc directory be just doc/IPython
4216 without version numbers, it will reduce clutter for users.
4220 without version numbers, it will reduce clutter for users.
4217
4221
4218 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4222 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4219 execfile call to prevent possible memory leak. See for details:
4223 execfile call to prevent possible memory leak. See for details:
4220 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4224 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4221
4225
4222 2002-05-15 Fernando Perez <fperez@colorado.edu>
4226 2002-05-15 Fernando Perez <fperez@colorado.edu>
4223
4227
4224 * IPython/Magic.py (Magic.magic_psource): made the object
4228 * IPython/Magic.py (Magic.magic_psource): made the object
4225 introspection names be more standard: pdoc, pdef, pfile and
4229 introspection names be more standard: pdoc, pdef, pfile and
4226 psource. They all print/page their output, and it makes
4230 psource. They all print/page their output, and it makes
4227 remembering them easier. Kept old names for compatibility as
4231 remembering them easier. Kept old names for compatibility as
4228 aliases.
4232 aliases.
4229
4233
4230 2002-05-14 Fernando Perez <fperez@colorado.edu>
4234 2002-05-14 Fernando Perez <fperez@colorado.edu>
4231
4235
4232 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4236 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4233 what the mouse problem was. The trick is to use gnuplot with temp
4237 what the mouse problem was. The trick is to use gnuplot with temp
4234 files and NOT with pipes (for data communication), because having
4238 files and NOT with pipes (for data communication), because having
4235 both pipes and the mouse on is bad news.
4239 both pipes and the mouse on is bad news.
4236
4240
4237 2002-05-13 Fernando Perez <fperez@colorado.edu>
4241 2002-05-13 Fernando Perez <fperez@colorado.edu>
4238
4242
4239 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4243 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4240 bug. Information would be reported about builtins even when
4244 bug. Information would be reported about builtins even when
4241 user-defined functions overrode them.
4245 user-defined functions overrode them.
4242
4246
4243 2002-05-11 Fernando Perez <fperez@colorado.edu>
4247 2002-05-11 Fernando Perez <fperez@colorado.edu>
4244
4248
4245 * IPython/__init__.py (__all__): removed FlexCompleter from
4249 * IPython/__init__.py (__all__): removed FlexCompleter from
4246 __all__ so that things don't fail in platforms without readline.
4250 __all__ so that things don't fail in platforms without readline.
4247
4251
4248 2002-05-10 Fernando Perez <fperez@colorado.edu>
4252 2002-05-10 Fernando Perez <fperez@colorado.edu>
4249
4253
4250 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4254 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4251 it requires Numeric, effectively making Numeric a dependency for
4255 it requires Numeric, effectively making Numeric a dependency for
4252 IPython.
4256 IPython.
4253
4257
4254 * Released 0.2.13
4258 * Released 0.2.13
4255
4259
4256 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4260 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4257 profiler interface. Now all the major options from the profiler
4261 profiler interface. Now all the major options from the profiler
4258 module are directly supported in IPython, both for single
4262 module are directly supported in IPython, both for single
4259 expressions (@prun) and for full programs (@run -p).
4263 expressions (@prun) and for full programs (@run -p).
4260
4264
4261 2002-05-09 Fernando Perez <fperez@colorado.edu>
4265 2002-05-09 Fernando Perez <fperez@colorado.edu>
4262
4266
4263 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4267 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4264 magic properly formatted for screen.
4268 magic properly formatted for screen.
4265
4269
4266 * setup.py (make_shortcut): Changed things to put pdf version in
4270 * setup.py (make_shortcut): Changed things to put pdf version in
4267 doc/ instead of doc/manual (had to change lyxport a bit).
4271 doc/ instead of doc/manual (had to change lyxport a bit).
4268
4272
4269 * IPython/Magic.py (Profile.string_stats): made profile runs go
4273 * IPython/Magic.py (Profile.string_stats): made profile runs go
4270 through pager (they are long and a pager allows searching, saving,
4274 through pager (they are long and a pager allows searching, saving,
4271 etc.)
4275 etc.)
4272
4276
4273 2002-05-08 Fernando Perez <fperez@colorado.edu>
4277 2002-05-08 Fernando Perez <fperez@colorado.edu>
4274
4278
4275 * Released 0.2.12
4279 * Released 0.2.12
4276
4280
4277 2002-05-06 Fernando Perez <fperez@colorado.edu>
4281 2002-05-06 Fernando Perez <fperez@colorado.edu>
4278
4282
4279 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4283 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4280 introduced); 'hist n1 n2' was broken.
4284 introduced); 'hist n1 n2' was broken.
4281 (Magic.magic_pdb): added optional on/off arguments to @pdb
4285 (Magic.magic_pdb): added optional on/off arguments to @pdb
4282 (Magic.magic_run): added option -i to @run, which executes code in
4286 (Magic.magic_run): added option -i to @run, which executes code in
4283 the IPython namespace instead of a clean one. Also added @irun as
4287 the IPython namespace instead of a clean one. Also added @irun as
4284 an alias to @run -i.
4288 an alias to @run -i.
4285
4289
4286 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4290 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4287 fixed (it didn't really do anything, the namespaces were wrong).
4291 fixed (it didn't really do anything, the namespaces were wrong).
4288
4292
4289 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4293 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4290
4294
4291 * IPython/__init__.py (__all__): Fixed package namespace, now
4295 * IPython/__init__.py (__all__): Fixed package namespace, now
4292 'import IPython' does give access to IPython.<all> as
4296 'import IPython' does give access to IPython.<all> as
4293 expected. Also renamed __release__ to Release.
4297 expected. Also renamed __release__ to Release.
4294
4298
4295 * IPython/Debugger.py (__license__): created new Pdb class which
4299 * IPython/Debugger.py (__license__): created new Pdb class which
4296 functions like a drop-in for the normal pdb.Pdb but does NOT
4300 functions like a drop-in for the normal pdb.Pdb but does NOT
4297 import readline by default. This way it doesn't muck up IPython's
4301 import readline by default. This way it doesn't muck up IPython's
4298 readline handling, and now tab-completion finally works in the
4302 readline handling, and now tab-completion finally works in the
4299 debugger -- sort of. It completes things globally visible, but the
4303 debugger -- sort of. It completes things globally visible, but the
4300 completer doesn't track the stack as pdb walks it. That's a bit
4304 completer doesn't track the stack as pdb walks it. That's a bit
4301 tricky, and I'll have to implement it later.
4305 tricky, and I'll have to implement it later.
4302
4306
4303 2002-05-05 Fernando Perez <fperez@colorado.edu>
4307 2002-05-05 Fernando Perez <fperez@colorado.edu>
4304
4308
4305 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4309 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4306 magic docstrings when printed via ? (explicit \'s were being
4310 magic docstrings when printed via ? (explicit \'s were being
4307 printed).
4311 printed).
4308
4312
4309 * IPython/ipmaker.py (make_IPython): fixed namespace
4313 * IPython/ipmaker.py (make_IPython): fixed namespace
4310 identification bug. Now variables loaded via logs or command-line
4314 identification bug. Now variables loaded via logs or command-line
4311 files are recognized in the interactive namespace by @who.
4315 files are recognized in the interactive namespace by @who.
4312
4316
4313 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4317 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4314 log replay system stemming from the string form of Structs.
4318 log replay system stemming from the string form of Structs.
4315
4319
4316 * IPython/Magic.py (Macro.__init__): improved macros to properly
4320 * IPython/Magic.py (Macro.__init__): improved macros to properly
4317 handle magic commands in them.
4321 handle magic commands in them.
4318 (Magic.magic_logstart): usernames are now expanded so 'logstart
4322 (Magic.magic_logstart): usernames are now expanded so 'logstart
4319 ~/mylog' now works.
4323 ~/mylog' now works.
4320
4324
4321 * IPython/iplib.py (complete): fixed bug where paths starting with
4325 * IPython/iplib.py (complete): fixed bug where paths starting with
4322 '/' would be completed as magic names.
4326 '/' would be completed as magic names.
4323
4327
4324 2002-05-04 Fernando Perez <fperez@colorado.edu>
4328 2002-05-04 Fernando Perez <fperez@colorado.edu>
4325
4329
4326 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4330 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4327 allow running full programs under the profiler's control.
4331 allow running full programs under the profiler's control.
4328
4332
4329 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4333 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4330 mode to report exceptions verbosely but without formatting
4334 mode to report exceptions verbosely but without formatting
4331 variables. This addresses the issue of ipython 'freezing' (it's
4335 variables. This addresses the issue of ipython 'freezing' (it's
4332 not frozen, but caught in an expensive formatting loop) when huge
4336 not frozen, but caught in an expensive formatting loop) when huge
4333 variables are in the context of an exception.
4337 variables are in the context of an exception.
4334 (VerboseTB.text): Added '--->' markers at line where exception was
4338 (VerboseTB.text): Added '--->' markers at line where exception was
4335 triggered. Much clearer to read, especially in NoColor modes.
4339 triggered. Much clearer to read, especially in NoColor modes.
4336
4340
4337 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4341 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4338 implemented in reverse when changing to the new parse_options().
4342 implemented in reverse when changing to the new parse_options().
4339
4343
4340 2002-05-03 Fernando Perez <fperez@colorado.edu>
4344 2002-05-03 Fernando Perez <fperez@colorado.edu>
4341
4345
4342 * IPython/Magic.py (Magic.parse_options): new function so that
4346 * IPython/Magic.py (Magic.parse_options): new function so that
4343 magics can parse options easier.
4347 magics can parse options easier.
4344 (Magic.magic_prun): new function similar to profile.run(),
4348 (Magic.magic_prun): new function similar to profile.run(),
4345 suggested by Chris Hart.
4349 suggested by Chris Hart.
4346 (Magic.magic_cd): fixed behavior so that it only changes if
4350 (Magic.magic_cd): fixed behavior so that it only changes if
4347 directory actually is in history.
4351 directory actually is in history.
4348
4352
4349 * IPython/usage.py (__doc__): added information about potential
4353 * IPython/usage.py (__doc__): added information about potential
4350 slowness of Verbose exception mode when there are huge data
4354 slowness of Verbose exception mode when there are huge data
4351 structures to be formatted (thanks to Archie Paulson).
4355 structures to be formatted (thanks to Archie Paulson).
4352
4356
4353 * IPython/ipmaker.py (make_IPython): Changed default logging
4357 * IPython/ipmaker.py (make_IPython): Changed default logging
4354 (when simply called with -log) to use curr_dir/ipython.log in
4358 (when simply called with -log) to use curr_dir/ipython.log in
4355 rotate mode. Fixed crash which was occuring with -log before
4359 rotate mode. Fixed crash which was occuring with -log before
4356 (thanks to Jim Boyle).
4360 (thanks to Jim Boyle).
4357
4361
4358 2002-05-01 Fernando Perez <fperez@colorado.edu>
4362 2002-05-01 Fernando Perez <fperez@colorado.edu>
4359
4363
4360 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4364 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4361 was nasty -- though somewhat of a corner case).
4365 was nasty -- though somewhat of a corner case).
4362
4366
4363 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4367 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4364 text (was a bug).
4368 text (was a bug).
4365
4369
4366 2002-04-30 Fernando Perez <fperez@colorado.edu>
4370 2002-04-30 Fernando Perez <fperez@colorado.edu>
4367
4371
4368 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4372 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4369 a print after ^D or ^C from the user so that the In[] prompt
4373 a print after ^D or ^C from the user so that the In[] prompt
4370 doesn't over-run the gnuplot one.
4374 doesn't over-run the gnuplot one.
4371
4375
4372 2002-04-29 Fernando Perez <fperez@colorado.edu>
4376 2002-04-29 Fernando Perez <fperez@colorado.edu>
4373
4377
4374 * Released 0.2.10
4378 * Released 0.2.10
4375
4379
4376 * IPython/__release__.py (version): get date dynamically.
4380 * IPython/__release__.py (version): get date dynamically.
4377
4381
4378 * Misc. documentation updates thanks to Arnd's comments. Also ran
4382 * Misc. documentation updates thanks to Arnd's comments. Also ran
4379 a full spellcheck on the manual (hadn't been done in a while).
4383 a full spellcheck on the manual (hadn't been done in a while).
4380
4384
4381 2002-04-27 Fernando Perez <fperez@colorado.edu>
4385 2002-04-27 Fernando Perez <fperez@colorado.edu>
4382
4386
4383 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4387 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4384 starting a log in mid-session would reset the input history list.
4388 starting a log in mid-session would reset the input history list.
4385
4389
4386 2002-04-26 Fernando Perez <fperez@colorado.edu>
4390 2002-04-26 Fernando Perez <fperez@colorado.edu>
4387
4391
4388 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4392 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4389 all files were being included in an update. Now anything in
4393 all files were being included in an update. Now anything in
4390 UserConfig that matches [A-Za-z]*.py will go (this excludes
4394 UserConfig that matches [A-Za-z]*.py will go (this excludes
4391 __init__.py)
4395 __init__.py)
4392
4396
4393 2002-04-25 Fernando Perez <fperez@colorado.edu>
4397 2002-04-25 Fernando Perez <fperez@colorado.edu>
4394
4398
4395 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4399 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4396 to __builtins__ so that any form of embedded or imported code can
4400 to __builtins__ so that any form of embedded or imported code can
4397 test for being inside IPython.
4401 test for being inside IPython.
4398
4402
4399 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4403 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4400 changed to GnuplotMagic because it's now an importable module,
4404 changed to GnuplotMagic because it's now an importable module,
4401 this makes the name follow that of the standard Gnuplot module.
4405 this makes the name follow that of the standard Gnuplot module.
4402 GnuplotMagic can now be loaded at any time in mid-session.
4406 GnuplotMagic can now be loaded at any time in mid-session.
4403
4407
4404 2002-04-24 Fernando Perez <fperez@colorado.edu>
4408 2002-04-24 Fernando Perez <fperez@colorado.edu>
4405
4409
4406 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4410 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4407 the globals (IPython has its own namespace) and the
4411 the globals (IPython has its own namespace) and the
4408 PhysicalQuantity stuff is much better anyway.
4412 PhysicalQuantity stuff is much better anyway.
4409
4413
4410 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4414 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4411 embedding example to standard user directory for
4415 embedding example to standard user directory for
4412 distribution. Also put it in the manual.
4416 distribution. Also put it in the manual.
4413
4417
4414 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4418 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4415 instance as first argument (so it doesn't rely on some obscure
4419 instance as first argument (so it doesn't rely on some obscure
4416 hidden global).
4420 hidden global).
4417
4421
4418 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4422 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4419 delimiters. While it prevents ().TAB from working, it allows
4423 delimiters. While it prevents ().TAB from working, it allows
4420 completions in open (... expressions. This is by far a more common
4424 completions in open (... expressions. This is by far a more common
4421 case.
4425 case.
4422
4426
4423 2002-04-23 Fernando Perez <fperez@colorado.edu>
4427 2002-04-23 Fernando Perez <fperez@colorado.edu>
4424
4428
4425 * IPython/Extensions/InterpreterPasteInput.py: new
4429 * IPython/Extensions/InterpreterPasteInput.py: new
4426 syntax-processing module for pasting lines with >>> or ... at the
4430 syntax-processing module for pasting lines with >>> or ... at the
4427 start.
4431 start.
4428
4432
4429 * IPython/Extensions/PhysicalQ_Interactive.py
4433 * IPython/Extensions/PhysicalQ_Interactive.py
4430 (PhysicalQuantityInteractive.__int__): fixed to work with either
4434 (PhysicalQuantityInteractive.__int__): fixed to work with either
4431 Numeric or math.
4435 Numeric or math.
4432
4436
4433 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4437 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4434 provided profiles. Now we have:
4438 provided profiles. Now we have:
4435 -math -> math module as * and cmath with its own namespace.
4439 -math -> math module as * and cmath with its own namespace.
4436 -numeric -> Numeric as *, plus gnuplot & grace
4440 -numeric -> Numeric as *, plus gnuplot & grace
4437 -physics -> same as before
4441 -physics -> same as before
4438
4442
4439 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4443 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4440 user-defined magics wouldn't be found by @magic if they were
4444 user-defined magics wouldn't be found by @magic if they were
4441 defined as class methods. Also cleaned up the namespace search
4445 defined as class methods. Also cleaned up the namespace search
4442 logic and the string building (to use %s instead of many repeated
4446 logic and the string building (to use %s instead of many repeated
4443 string adds).
4447 string adds).
4444
4448
4445 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4449 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4446 of user-defined magics to operate with class methods (cleaner, in
4450 of user-defined magics to operate with class methods (cleaner, in
4447 line with the gnuplot code).
4451 line with the gnuplot code).
4448
4452
4449 2002-04-22 Fernando Perez <fperez@colorado.edu>
4453 2002-04-22 Fernando Perez <fperez@colorado.edu>
4450
4454
4451 * setup.py: updated dependency list so that manual is updated when
4455 * setup.py: updated dependency list so that manual is updated when
4452 all included files change.
4456 all included files change.
4453
4457
4454 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4458 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4455 the delimiter removal option (the fix is ugly right now).
4459 the delimiter removal option (the fix is ugly right now).
4456
4460
4457 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4461 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4458 all of the math profile (quicker loading, no conflict between
4462 all of the math profile (quicker loading, no conflict between
4459 g-9.8 and g-gnuplot).
4463 g-9.8 and g-gnuplot).
4460
4464
4461 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4465 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4462 name of post-mortem files to IPython_crash_report.txt.
4466 name of post-mortem files to IPython_crash_report.txt.
4463
4467
4464 * Cleanup/update of the docs. Added all the new readline info and
4468 * Cleanup/update of the docs. Added all the new readline info and
4465 formatted all lists as 'real lists'.
4469 formatted all lists as 'real lists'.
4466
4470
4467 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4471 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4468 tab-completion options, since the full readline parse_and_bind is
4472 tab-completion options, since the full readline parse_and_bind is
4469 now accessible.
4473 now accessible.
4470
4474
4471 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4475 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4472 handling of readline options. Now users can specify any string to
4476 handling of readline options. Now users can specify any string to
4473 be passed to parse_and_bind(), as well as the delimiters to be
4477 be passed to parse_and_bind(), as well as the delimiters to be
4474 removed.
4478 removed.
4475 (InteractiveShell.__init__): Added __name__ to the global
4479 (InteractiveShell.__init__): Added __name__ to the global
4476 namespace so that things like Itpl which rely on its existence
4480 namespace so that things like Itpl which rely on its existence
4477 don't crash.
4481 don't crash.
4478 (InteractiveShell._prefilter): Defined the default with a _ so
4482 (InteractiveShell._prefilter): Defined the default with a _ so
4479 that prefilter() is easier to override, while the default one
4483 that prefilter() is easier to override, while the default one
4480 remains available.
4484 remains available.
4481
4485
4482 2002-04-18 Fernando Perez <fperez@colorado.edu>
4486 2002-04-18 Fernando Perez <fperez@colorado.edu>
4483
4487
4484 * Added information about pdb in the docs.
4488 * Added information about pdb in the docs.
4485
4489
4486 2002-04-17 Fernando Perez <fperez@colorado.edu>
4490 2002-04-17 Fernando Perez <fperez@colorado.edu>
4487
4491
4488 * IPython/ipmaker.py (make_IPython): added rc_override option to
4492 * IPython/ipmaker.py (make_IPython): added rc_override option to
4489 allow passing config options at creation time which may override
4493 allow passing config options at creation time which may override
4490 anything set in the config files or command line. This is
4494 anything set in the config files or command line. This is
4491 particularly useful for configuring embedded instances.
4495 particularly useful for configuring embedded instances.
4492
4496
4493 2002-04-15 Fernando Perez <fperez@colorado.edu>
4497 2002-04-15 Fernando Perez <fperez@colorado.edu>
4494
4498
4495 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4499 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4496 crash embedded instances because of the input cache falling out of
4500 crash embedded instances because of the input cache falling out of
4497 sync with the output counter.
4501 sync with the output counter.
4498
4502
4499 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4503 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4500 mode which calls pdb after an uncaught exception in IPython itself.
4504 mode which calls pdb after an uncaught exception in IPython itself.
4501
4505
4502 2002-04-14 Fernando Perez <fperez@colorado.edu>
4506 2002-04-14 Fernando Perez <fperez@colorado.edu>
4503
4507
4504 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4508 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4505 readline, fix it back after each call.
4509 readline, fix it back after each call.
4506
4510
4507 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4511 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4508 method to force all access via __call__(), which guarantees that
4512 method to force all access via __call__(), which guarantees that
4509 traceback references are properly deleted.
4513 traceback references are properly deleted.
4510
4514
4511 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4515 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4512 improve printing when pprint is in use.
4516 improve printing when pprint is in use.
4513
4517
4514 2002-04-13 Fernando Perez <fperez@colorado.edu>
4518 2002-04-13 Fernando Perez <fperez@colorado.edu>
4515
4519
4516 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4520 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4517 exceptions aren't caught anymore. If the user triggers one, he
4521 exceptions aren't caught anymore. If the user triggers one, he
4518 should know why he's doing it and it should go all the way up,
4522 should know why he's doing it and it should go all the way up,
4519 just like any other exception. So now @abort will fully kill the
4523 just like any other exception. So now @abort will fully kill the
4520 embedded interpreter and the embedding code (unless that happens
4524 embedded interpreter and the embedding code (unless that happens
4521 to catch SystemExit).
4525 to catch SystemExit).
4522
4526
4523 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4527 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4524 and a debugger() method to invoke the interactive pdb debugger
4528 and a debugger() method to invoke the interactive pdb debugger
4525 after printing exception information. Also added the corresponding
4529 after printing exception information. Also added the corresponding
4526 -pdb option and @pdb magic to control this feature, and updated
4530 -pdb option and @pdb magic to control this feature, and updated
4527 the docs. After a suggestion from Christopher Hart
4531 the docs. After a suggestion from Christopher Hart
4528 (hart-AT-caltech.edu).
4532 (hart-AT-caltech.edu).
4529
4533
4530 2002-04-12 Fernando Perez <fperez@colorado.edu>
4534 2002-04-12 Fernando Perez <fperez@colorado.edu>
4531
4535
4532 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4536 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4533 the exception handlers defined by the user (not the CrashHandler)
4537 the exception handlers defined by the user (not the CrashHandler)
4534 so that user exceptions don't trigger an ipython bug report.
4538 so that user exceptions don't trigger an ipython bug report.
4535
4539
4536 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4540 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4537 configurable (it should have always been so).
4541 configurable (it should have always been so).
4538
4542
4539 2002-03-26 Fernando Perez <fperez@colorado.edu>
4543 2002-03-26 Fernando Perez <fperez@colorado.edu>
4540
4544
4541 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4545 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4542 and there to fix embedding namespace issues. This should all be
4546 and there to fix embedding namespace issues. This should all be
4543 done in a more elegant way.
4547 done in a more elegant way.
4544
4548
4545 2002-03-25 Fernando Perez <fperez@colorado.edu>
4549 2002-03-25 Fernando Perez <fperez@colorado.edu>
4546
4550
4547 * IPython/genutils.py (get_home_dir): Try to make it work under
4551 * IPython/genutils.py (get_home_dir): Try to make it work under
4548 win9x also.
4552 win9x also.
4549
4553
4550 2002-03-20 Fernando Perez <fperez@colorado.edu>
4554 2002-03-20 Fernando Perez <fperez@colorado.edu>
4551
4555
4552 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4556 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4553 sys.displayhook untouched upon __init__.
4557 sys.displayhook untouched upon __init__.
4554
4558
4555 2002-03-19 Fernando Perez <fperez@colorado.edu>
4559 2002-03-19 Fernando Perez <fperez@colorado.edu>
4556
4560
4557 * Released 0.2.9 (for embedding bug, basically).
4561 * Released 0.2.9 (for embedding bug, basically).
4558
4562
4559 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4563 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4560 exceptions so that enclosing shell's state can be restored.
4564 exceptions so that enclosing shell's state can be restored.
4561
4565
4562 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4566 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4563 naming conventions in the .ipython/ dir.
4567 naming conventions in the .ipython/ dir.
4564
4568
4565 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4569 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4566 from delimiters list so filenames with - in them get expanded.
4570 from delimiters list so filenames with - in them get expanded.
4567
4571
4568 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4572 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4569 sys.displayhook not being properly restored after an embedded call.
4573 sys.displayhook not being properly restored after an embedded call.
4570
4574
4571 2002-03-18 Fernando Perez <fperez@colorado.edu>
4575 2002-03-18 Fernando Perez <fperez@colorado.edu>
4572
4576
4573 * Released 0.2.8
4577 * Released 0.2.8
4574
4578
4575 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4579 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4576 some files weren't being included in a -upgrade.
4580 some files weren't being included in a -upgrade.
4577 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4581 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4578 on' so that the first tab completes.
4582 on' so that the first tab completes.
4579 (InteractiveShell.handle_magic): fixed bug with spaces around
4583 (InteractiveShell.handle_magic): fixed bug with spaces around
4580 quotes breaking many magic commands.
4584 quotes breaking many magic commands.
4581
4585
4582 * setup.py: added note about ignoring the syntax error messages at
4586 * setup.py: added note about ignoring the syntax error messages at
4583 installation.
4587 installation.
4584
4588
4585 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4589 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4586 streamlining the gnuplot interface, now there's only one magic @gp.
4590 streamlining the gnuplot interface, now there's only one magic @gp.
4587
4591
4588 2002-03-17 Fernando Perez <fperez@colorado.edu>
4592 2002-03-17 Fernando Perez <fperez@colorado.edu>
4589
4593
4590 * IPython/UserConfig/magic_gnuplot.py: new name for the
4594 * IPython/UserConfig/magic_gnuplot.py: new name for the
4591 example-magic_pm.py file. Much enhanced system, now with a shell
4595 example-magic_pm.py file. Much enhanced system, now with a shell
4592 for communicating directly with gnuplot, one command at a time.
4596 for communicating directly with gnuplot, one command at a time.
4593
4597
4594 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4598 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4595 setting __name__=='__main__'.
4599 setting __name__=='__main__'.
4596
4600
4597 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4601 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4598 mini-shell for accessing gnuplot from inside ipython. Should
4602 mini-shell for accessing gnuplot from inside ipython. Should
4599 extend it later for grace access too. Inspired by Arnd's
4603 extend it later for grace access too. Inspired by Arnd's
4600 suggestion.
4604 suggestion.
4601
4605
4602 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4606 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4603 calling magic functions with () in their arguments. Thanks to Arnd
4607 calling magic functions with () in their arguments. Thanks to Arnd
4604 Baecker for pointing this to me.
4608 Baecker for pointing this to me.
4605
4609
4606 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4610 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4607 infinitely for integer or complex arrays (only worked with floats).
4611 infinitely for integer or complex arrays (only worked with floats).
4608
4612
4609 2002-03-16 Fernando Perez <fperez@colorado.edu>
4613 2002-03-16 Fernando Perez <fperez@colorado.edu>
4610
4614
4611 * setup.py: Merged setup and setup_windows into a single script
4615 * setup.py: Merged setup and setup_windows into a single script
4612 which properly handles things for windows users.
4616 which properly handles things for windows users.
4613
4617
4614 2002-03-15 Fernando Perez <fperez@colorado.edu>
4618 2002-03-15 Fernando Perez <fperez@colorado.edu>
4615
4619
4616 * Big change to the manual: now the magics are all automatically
4620 * Big change to the manual: now the magics are all automatically
4617 documented. This information is generated from their docstrings
4621 documented. This information is generated from their docstrings
4618 and put in a latex file included by the manual lyx file. This way
4622 and put in a latex file included by the manual lyx file. This way
4619 we get always up to date information for the magics. The manual
4623 we get always up to date information for the magics. The manual
4620 now also has proper version information, also auto-synced.
4624 now also has proper version information, also auto-synced.
4621
4625
4622 For this to work, an undocumented --magic_docstrings option was added.
4626 For this to work, an undocumented --magic_docstrings option was added.
4623
4627
4624 2002-03-13 Fernando Perez <fperez@colorado.edu>
4628 2002-03-13 Fernando Perez <fperez@colorado.edu>
4625
4629
4626 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4630 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4627 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4631 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4628
4632
4629 2002-03-12 Fernando Perez <fperez@colorado.edu>
4633 2002-03-12 Fernando Perez <fperez@colorado.edu>
4630
4634
4631 * IPython/ultraTB.py (TermColors): changed color escapes again to
4635 * IPython/ultraTB.py (TermColors): changed color escapes again to
4632 fix the (old, reintroduced) line-wrapping bug. Basically, if
4636 fix the (old, reintroduced) line-wrapping bug. Basically, if
4633 \001..\002 aren't given in the color escapes, lines get wrapped
4637 \001..\002 aren't given in the color escapes, lines get wrapped
4634 weirdly. But giving those screws up old xterms and emacs terms. So
4638 weirdly. But giving those screws up old xterms and emacs terms. So
4635 I added some logic for emacs terms to be ok, but I can't identify old
4639 I added some logic for emacs terms to be ok, but I can't identify old
4636 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4640 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4637
4641
4638 2002-03-10 Fernando Perez <fperez@colorado.edu>
4642 2002-03-10 Fernando Perez <fperez@colorado.edu>
4639
4643
4640 * IPython/usage.py (__doc__): Various documentation cleanups and
4644 * IPython/usage.py (__doc__): Various documentation cleanups and
4641 updates, both in usage docstrings and in the manual.
4645 updates, both in usage docstrings and in the manual.
4642
4646
4643 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4647 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4644 handling of caching. Set minimum acceptabe value for having a
4648 handling of caching. Set minimum acceptabe value for having a
4645 cache at 20 values.
4649 cache at 20 values.
4646
4650
4647 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4651 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4648 install_first_time function to a method, renamed it and added an
4652 install_first_time function to a method, renamed it and added an
4649 'upgrade' mode. Now people can update their config directory with
4653 'upgrade' mode. Now people can update their config directory with
4650 a simple command line switch (-upgrade, also new).
4654 a simple command line switch (-upgrade, also new).
4651
4655
4652 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4656 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4653 @file (convenient for automagic users under Python >= 2.2).
4657 @file (convenient for automagic users under Python >= 2.2).
4654 Removed @files (it seemed more like a plural than an abbrev. of
4658 Removed @files (it seemed more like a plural than an abbrev. of
4655 'file show').
4659 'file show').
4656
4660
4657 * IPython/iplib.py (install_first_time): Fixed crash if there were
4661 * IPython/iplib.py (install_first_time): Fixed crash if there were
4658 backup files ('~') in .ipython/ install directory.
4662 backup files ('~') in .ipython/ install directory.
4659
4663
4660 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4664 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4661 system. Things look fine, but these changes are fairly
4665 system. Things look fine, but these changes are fairly
4662 intrusive. Test them for a few days.
4666 intrusive. Test them for a few days.
4663
4667
4664 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4668 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4665 the prompts system. Now all in/out prompt strings are user
4669 the prompts system. Now all in/out prompt strings are user
4666 controllable. This is particularly useful for embedding, as one
4670 controllable. This is particularly useful for embedding, as one
4667 can tag embedded instances with particular prompts.
4671 can tag embedded instances with particular prompts.
4668
4672
4669 Also removed global use of sys.ps1/2, which now allows nested
4673 Also removed global use of sys.ps1/2, which now allows nested
4670 embeddings without any problems. Added command-line options for
4674 embeddings without any problems. Added command-line options for
4671 the prompt strings.
4675 the prompt strings.
4672
4676
4673 2002-03-08 Fernando Perez <fperez@colorado.edu>
4677 2002-03-08 Fernando Perez <fperez@colorado.edu>
4674
4678
4675 * IPython/UserConfig/example-embed-short.py (ipshell): added
4679 * IPython/UserConfig/example-embed-short.py (ipshell): added
4676 example file with the bare minimum code for embedding.
4680 example file with the bare minimum code for embedding.
4677
4681
4678 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4682 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4679 functionality for the embeddable shell to be activated/deactivated
4683 functionality for the embeddable shell to be activated/deactivated
4680 either globally or at each call.
4684 either globally or at each call.
4681
4685
4682 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4686 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4683 rewriting the prompt with '--->' for auto-inputs with proper
4687 rewriting the prompt with '--->' for auto-inputs with proper
4684 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4688 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4685 this is handled by the prompts class itself, as it should.
4689 this is handled by the prompts class itself, as it should.
4686
4690
4687 2002-03-05 Fernando Perez <fperez@colorado.edu>
4691 2002-03-05 Fernando Perez <fperez@colorado.edu>
4688
4692
4689 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4693 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4690 @logstart to avoid name clashes with the math log function.
4694 @logstart to avoid name clashes with the math log function.
4691
4695
4692 * Big updates to X/Emacs section of the manual.
4696 * Big updates to X/Emacs section of the manual.
4693
4697
4694 * Removed ipython_emacs. Milan explained to me how to pass
4698 * Removed ipython_emacs. Milan explained to me how to pass
4695 arguments to ipython through Emacs. Some day I'm going to end up
4699 arguments to ipython through Emacs. Some day I'm going to end up
4696 learning some lisp...
4700 learning some lisp...
4697
4701
4698 2002-03-04 Fernando Perez <fperez@colorado.edu>
4702 2002-03-04 Fernando Perez <fperez@colorado.edu>
4699
4703
4700 * IPython/ipython_emacs: Created script to be used as the
4704 * IPython/ipython_emacs: Created script to be used as the
4701 py-python-command Emacs variable so we can pass IPython
4705 py-python-command Emacs variable so we can pass IPython
4702 parameters. I can't figure out how to tell Emacs directly to pass
4706 parameters. I can't figure out how to tell Emacs directly to pass
4703 parameters to IPython, so a dummy shell script will do it.
4707 parameters to IPython, so a dummy shell script will do it.
4704
4708
4705 Other enhancements made for things to work better under Emacs'
4709 Other enhancements made for things to work better under Emacs'
4706 various types of terminals. Many thanks to Milan Zamazal
4710 various types of terminals. Many thanks to Milan Zamazal
4707 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4711 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4708
4712
4709 2002-03-01 Fernando Perez <fperez@colorado.edu>
4713 2002-03-01 Fernando Perez <fperez@colorado.edu>
4710
4714
4711 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4715 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4712 that loading of readline is now optional. This gives better
4716 that loading of readline is now optional. This gives better
4713 control to emacs users.
4717 control to emacs users.
4714
4718
4715 * IPython/ultraTB.py (__date__): Modified color escape sequences
4719 * IPython/ultraTB.py (__date__): Modified color escape sequences
4716 and now things work fine under xterm and in Emacs' term buffers
4720 and now things work fine under xterm and in Emacs' term buffers
4717 (though not shell ones). Well, in emacs you get colors, but all
4721 (though not shell ones). Well, in emacs you get colors, but all
4718 seem to be 'light' colors (no difference between dark and light
4722 seem to be 'light' colors (no difference between dark and light
4719 ones). But the garbage chars are gone, and also in xterms. It
4723 ones). But the garbage chars are gone, and also in xterms. It
4720 seems that now I'm using 'cleaner' ansi sequences.
4724 seems that now I'm using 'cleaner' ansi sequences.
4721
4725
4722 2002-02-21 Fernando Perez <fperez@colorado.edu>
4726 2002-02-21 Fernando Perez <fperez@colorado.edu>
4723
4727
4724 * Released 0.2.7 (mainly to publish the scoping fix).
4728 * Released 0.2.7 (mainly to publish the scoping fix).
4725
4729
4726 * IPython/Logger.py (Logger.logstate): added. A corresponding
4730 * IPython/Logger.py (Logger.logstate): added. A corresponding
4727 @logstate magic was created.
4731 @logstate magic was created.
4728
4732
4729 * IPython/Magic.py: fixed nested scoping problem under Python
4733 * IPython/Magic.py: fixed nested scoping problem under Python
4730 2.1.x (automagic wasn't working).
4734 2.1.x (automagic wasn't working).
4731
4735
4732 2002-02-20 Fernando Perez <fperez@colorado.edu>
4736 2002-02-20 Fernando Perez <fperez@colorado.edu>
4733
4737
4734 * Released 0.2.6.
4738 * Released 0.2.6.
4735
4739
4736 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4740 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4737 option so that logs can come out without any headers at all.
4741 option so that logs can come out without any headers at all.
4738
4742
4739 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4743 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4740 SciPy.
4744 SciPy.
4741
4745
4742 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4746 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4743 that embedded IPython calls don't require vars() to be explicitly
4747 that embedded IPython calls don't require vars() to be explicitly
4744 passed. Now they are extracted from the caller's frame (code
4748 passed. Now they are extracted from the caller's frame (code
4745 snatched from Eric Jones' weave). Added better documentation to
4749 snatched from Eric Jones' weave). Added better documentation to
4746 the section on embedding and the example file.
4750 the section on embedding and the example file.
4747
4751
4748 * IPython/genutils.py (page): Changed so that under emacs, it just
4752 * IPython/genutils.py (page): Changed so that under emacs, it just
4749 prints the string. You can then page up and down in the emacs
4753 prints the string. You can then page up and down in the emacs
4750 buffer itself. This is how the builtin help() works.
4754 buffer itself. This is how the builtin help() works.
4751
4755
4752 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4756 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4753 macro scoping: macros need to be executed in the user's namespace
4757 macro scoping: macros need to be executed in the user's namespace
4754 to work as if they had been typed by the user.
4758 to work as if they had been typed by the user.
4755
4759
4756 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4760 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4757 execute automatically (no need to type 'exec...'). They then
4761 execute automatically (no need to type 'exec...'). They then
4758 behave like 'true macros'. The printing system was also modified
4762 behave like 'true macros'. The printing system was also modified
4759 for this to work.
4763 for this to work.
4760
4764
4761 2002-02-19 Fernando Perez <fperez@colorado.edu>
4765 2002-02-19 Fernando Perez <fperez@colorado.edu>
4762
4766
4763 * IPython/genutils.py (page_file): new function for paging files
4767 * IPython/genutils.py (page_file): new function for paging files
4764 in an OS-independent way. Also necessary for file viewing to work
4768 in an OS-independent way. Also necessary for file viewing to work
4765 well inside Emacs buffers.
4769 well inside Emacs buffers.
4766 (page): Added checks for being in an emacs buffer.
4770 (page): Added checks for being in an emacs buffer.
4767 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4771 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4768 same bug in iplib.
4772 same bug in iplib.
4769
4773
4770 2002-02-18 Fernando Perez <fperez@colorado.edu>
4774 2002-02-18 Fernando Perez <fperez@colorado.edu>
4771
4775
4772 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4776 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4773 of readline so that IPython can work inside an Emacs buffer.
4777 of readline so that IPython can work inside an Emacs buffer.
4774
4778
4775 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4779 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4776 method signatures (they weren't really bugs, but it looks cleaner
4780 method signatures (they weren't really bugs, but it looks cleaner
4777 and keeps PyChecker happy).
4781 and keeps PyChecker happy).
4778
4782
4779 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4783 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4780 for implementing various user-defined hooks. Currently only
4784 for implementing various user-defined hooks. Currently only
4781 display is done.
4785 display is done.
4782
4786
4783 * IPython/Prompts.py (CachedOutput._display): changed display
4787 * IPython/Prompts.py (CachedOutput._display): changed display
4784 functions so that they can be dynamically changed by users easily.
4788 functions so that they can be dynamically changed by users easily.
4785
4789
4786 * IPython/Extensions/numeric_formats.py (num_display): added an
4790 * IPython/Extensions/numeric_formats.py (num_display): added an
4787 extension for printing NumPy arrays in flexible manners. It
4791 extension for printing NumPy arrays in flexible manners. It
4788 doesn't do anything yet, but all the structure is in
4792 doesn't do anything yet, but all the structure is in
4789 place. Ultimately the plan is to implement output format control
4793 place. Ultimately the plan is to implement output format control
4790 like in Octave.
4794 like in Octave.
4791
4795
4792 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4796 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4793 methods are found at run-time by all the automatic machinery.
4797 methods are found at run-time by all the automatic machinery.
4794
4798
4795 2002-02-17 Fernando Perez <fperez@colorado.edu>
4799 2002-02-17 Fernando Perez <fperez@colorado.edu>
4796
4800
4797 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4801 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4798 whole file a little.
4802 whole file a little.
4799
4803
4800 * ToDo: closed this document. Now there's a new_design.lyx
4804 * ToDo: closed this document. Now there's a new_design.lyx
4801 document for all new ideas. Added making a pdf of it for the
4805 document for all new ideas. Added making a pdf of it for the
4802 end-user distro.
4806 end-user distro.
4803
4807
4804 * IPython/Logger.py (Logger.switch_log): Created this to replace
4808 * IPython/Logger.py (Logger.switch_log): Created this to replace
4805 logon() and logoff(). It also fixes a nasty crash reported by
4809 logon() and logoff(). It also fixes a nasty crash reported by
4806 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4810 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4807
4811
4808 * IPython/iplib.py (complete): got auto-completion to work with
4812 * IPython/iplib.py (complete): got auto-completion to work with
4809 automagic (I had wanted this for a long time).
4813 automagic (I had wanted this for a long time).
4810
4814
4811 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4815 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4812 to @file, since file() is now a builtin and clashes with automagic
4816 to @file, since file() is now a builtin and clashes with automagic
4813 for @file.
4817 for @file.
4814
4818
4815 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4819 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4816 of this was previously in iplib, which had grown to more than 2000
4820 of this was previously in iplib, which had grown to more than 2000
4817 lines, way too long. No new functionality, but it makes managing
4821 lines, way too long. No new functionality, but it makes managing
4818 the code a bit easier.
4822 the code a bit easier.
4819
4823
4820 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4824 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4821 information to crash reports.
4825 information to crash reports.
4822
4826
4823 2002-02-12 Fernando Perez <fperez@colorado.edu>
4827 2002-02-12 Fernando Perez <fperez@colorado.edu>
4824
4828
4825 * Released 0.2.5.
4829 * Released 0.2.5.
4826
4830
4827 2002-02-11 Fernando Perez <fperez@colorado.edu>
4831 2002-02-11 Fernando Perez <fperez@colorado.edu>
4828
4832
4829 * Wrote a relatively complete Windows installer. It puts
4833 * Wrote a relatively complete Windows installer. It puts
4830 everything in place, creates Start Menu entries and fixes the
4834 everything in place, creates Start Menu entries and fixes the
4831 color issues. Nothing fancy, but it works.
4835 color issues. Nothing fancy, but it works.
4832
4836
4833 2002-02-10 Fernando Perez <fperez@colorado.edu>
4837 2002-02-10 Fernando Perez <fperez@colorado.edu>
4834
4838
4835 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4839 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4836 os.path.expanduser() call so that we can type @run ~/myfile.py and
4840 os.path.expanduser() call so that we can type @run ~/myfile.py and
4837 have thigs work as expected.
4841 have thigs work as expected.
4838
4842
4839 * IPython/genutils.py (page): fixed exception handling so things
4843 * IPython/genutils.py (page): fixed exception handling so things
4840 work both in Unix and Windows correctly. Quitting a pager triggers
4844 work both in Unix and Windows correctly. Quitting a pager triggers
4841 an IOError/broken pipe in Unix, and in windows not finding a pager
4845 an IOError/broken pipe in Unix, and in windows not finding a pager
4842 is also an IOError, so I had to actually look at the return value
4846 is also an IOError, so I had to actually look at the return value
4843 of the exception, not just the exception itself. Should be ok now.
4847 of the exception, not just the exception itself. Should be ok now.
4844
4848
4845 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4849 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4846 modified to allow case-insensitive color scheme changes.
4850 modified to allow case-insensitive color scheme changes.
4847
4851
4848 2002-02-09 Fernando Perez <fperez@colorado.edu>
4852 2002-02-09 Fernando Perez <fperez@colorado.edu>
4849
4853
4850 * IPython/genutils.py (native_line_ends): new function to leave
4854 * IPython/genutils.py (native_line_ends): new function to leave
4851 user config files with os-native line-endings.
4855 user config files with os-native line-endings.
4852
4856
4853 * README and manual updates.
4857 * README and manual updates.
4854
4858
4855 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4859 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4856 instead of StringType to catch Unicode strings.
4860 instead of StringType to catch Unicode strings.
4857
4861
4858 * IPython/genutils.py (filefind): fixed bug for paths with
4862 * IPython/genutils.py (filefind): fixed bug for paths with
4859 embedded spaces (very common in Windows).
4863 embedded spaces (very common in Windows).
4860
4864
4861 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4865 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4862 files under Windows, so that they get automatically associated
4866 files under Windows, so that they get automatically associated
4863 with a text editor. Windows makes it a pain to handle
4867 with a text editor. Windows makes it a pain to handle
4864 extension-less files.
4868 extension-less files.
4865
4869
4866 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4870 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4867 warning about readline only occur for Posix. In Windows there's no
4871 warning about readline only occur for Posix. In Windows there's no
4868 way to get readline, so why bother with the warning.
4872 way to get readline, so why bother with the warning.
4869
4873
4870 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4874 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4871 for __str__ instead of dir(self), since dir() changed in 2.2.
4875 for __str__ instead of dir(self), since dir() changed in 2.2.
4872
4876
4873 * Ported to Windows! Tested on XP, I suspect it should work fine
4877 * Ported to Windows! Tested on XP, I suspect it should work fine
4874 on NT/2000, but I don't think it will work on 98 et al. That
4878 on NT/2000, but I don't think it will work on 98 et al. That
4875 series of Windows is such a piece of junk anyway that I won't try
4879 series of Windows is such a piece of junk anyway that I won't try
4876 porting it there. The XP port was straightforward, showed a few
4880 porting it there. The XP port was straightforward, showed a few
4877 bugs here and there (fixed all), in particular some string
4881 bugs here and there (fixed all), in particular some string
4878 handling stuff which required considering Unicode strings (which
4882 handling stuff which required considering Unicode strings (which
4879 Windows uses). This is good, but hasn't been too tested :) No
4883 Windows uses). This is good, but hasn't been too tested :) No
4880 fancy installer yet, I'll put a note in the manual so people at
4884 fancy installer yet, I'll put a note in the manual so people at
4881 least make manually a shortcut.
4885 least make manually a shortcut.
4882
4886
4883 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4887 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4884 into a single one, "colors". This now controls both prompt and
4888 into a single one, "colors". This now controls both prompt and
4885 exception color schemes, and can be changed both at startup
4889 exception color schemes, and can be changed both at startup
4886 (either via command-line switches or via ipythonrc files) and at
4890 (either via command-line switches or via ipythonrc files) and at
4887 runtime, with @colors.
4891 runtime, with @colors.
4888 (Magic.magic_run): renamed @prun to @run and removed the old
4892 (Magic.magic_run): renamed @prun to @run and removed the old
4889 @run. The two were too similar to warrant keeping both.
4893 @run. The two were too similar to warrant keeping both.
4890
4894
4891 2002-02-03 Fernando Perez <fperez@colorado.edu>
4895 2002-02-03 Fernando Perez <fperez@colorado.edu>
4892
4896
4893 * IPython/iplib.py (install_first_time): Added comment on how to
4897 * IPython/iplib.py (install_first_time): Added comment on how to
4894 configure the color options for first-time users. Put a <return>
4898 configure the color options for first-time users. Put a <return>
4895 request at the end so that small-terminal users get a chance to
4899 request at the end so that small-terminal users get a chance to
4896 read the startup info.
4900 read the startup info.
4897
4901
4898 2002-01-23 Fernando Perez <fperez@colorado.edu>
4902 2002-01-23 Fernando Perez <fperez@colorado.edu>
4899
4903
4900 * IPython/iplib.py (CachedOutput.update): Changed output memory
4904 * IPython/iplib.py (CachedOutput.update): Changed output memory
4901 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4905 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4902 input history we still use _i. Did this b/c these variable are
4906 input history we still use _i. Did this b/c these variable are
4903 very commonly used in interactive work, so the less we need to
4907 very commonly used in interactive work, so the less we need to
4904 type the better off we are.
4908 type the better off we are.
4905 (Magic.magic_prun): updated @prun to better handle the namespaces
4909 (Magic.magic_prun): updated @prun to better handle the namespaces
4906 the file will run in, including a fix for __name__ not being set
4910 the file will run in, including a fix for __name__ not being set
4907 before.
4911 before.
4908
4912
4909 2002-01-20 Fernando Perez <fperez@colorado.edu>
4913 2002-01-20 Fernando Perez <fperez@colorado.edu>
4910
4914
4911 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4915 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4912 extra garbage for Python 2.2. Need to look more carefully into
4916 extra garbage for Python 2.2. Need to look more carefully into
4913 this later.
4917 this later.
4914
4918
4915 2002-01-19 Fernando Perez <fperez@colorado.edu>
4919 2002-01-19 Fernando Perez <fperez@colorado.edu>
4916
4920
4917 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4921 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4918 display SyntaxError exceptions properly formatted when they occur
4922 display SyntaxError exceptions properly formatted when they occur
4919 (they can be triggered by imported code).
4923 (they can be triggered by imported code).
4920
4924
4921 2002-01-18 Fernando Perez <fperez@colorado.edu>
4925 2002-01-18 Fernando Perez <fperez@colorado.edu>
4922
4926
4923 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4927 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4924 SyntaxError exceptions are reported nicely formatted, instead of
4928 SyntaxError exceptions are reported nicely formatted, instead of
4925 spitting out only offset information as before.
4929 spitting out only offset information as before.
4926 (Magic.magic_prun): Added the @prun function for executing
4930 (Magic.magic_prun): Added the @prun function for executing
4927 programs with command line args inside IPython.
4931 programs with command line args inside IPython.
4928
4932
4929 2002-01-16 Fernando Perez <fperez@colorado.edu>
4933 2002-01-16 Fernando Perez <fperez@colorado.edu>
4930
4934
4931 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4935 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4932 to *not* include the last item given in a range. This brings their
4936 to *not* include the last item given in a range. This brings their
4933 behavior in line with Python's slicing:
4937 behavior in line with Python's slicing:
4934 a[n1:n2] -> a[n1]...a[n2-1]
4938 a[n1:n2] -> a[n1]...a[n2-1]
4935 It may be a bit less convenient, but I prefer to stick to Python's
4939 It may be a bit less convenient, but I prefer to stick to Python's
4936 conventions *everywhere*, so users never have to wonder.
4940 conventions *everywhere*, so users never have to wonder.
4937 (Magic.magic_macro): Added @macro function to ease the creation of
4941 (Magic.magic_macro): Added @macro function to ease the creation of
4938 macros.
4942 macros.
4939
4943
4940 2002-01-05 Fernando Perez <fperez@colorado.edu>
4944 2002-01-05 Fernando Perez <fperez@colorado.edu>
4941
4945
4942 * Released 0.2.4.
4946 * Released 0.2.4.
4943
4947
4944 * IPython/iplib.py (Magic.magic_pdef):
4948 * IPython/iplib.py (Magic.magic_pdef):
4945 (InteractiveShell.safe_execfile): report magic lines and error
4949 (InteractiveShell.safe_execfile): report magic lines and error
4946 lines without line numbers so one can easily copy/paste them for
4950 lines without line numbers so one can easily copy/paste them for
4947 re-execution.
4951 re-execution.
4948
4952
4949 * Updated manual with recent changes.
4953 * Updated manual with recent changes.
4950
4954
4951 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4955 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4952 docstring printing when class? is called. Very handy for knowing
4956 docstring printing when class? is called. Very handy for knowing
4953 how to create class instances (as long as __init__ is well
4957 how to create class instances (as long as __init__ is well
4954 documented, of course :)
4958 documented, of course :)
4955 (Magic.magic_doc): print both class and constructor docstrings.
4959 (Magic.magic_doc): print both class and constructor docstrings.
4956 (Magic.magic_pdef): give constructor info if passed a class and
4960 (Magic.magic_pdef): give constructor info if passed a class and
4957 __call__ info for callable object instances.
4961 __call__ info for callable object instances.
4958
4962
4959 2002-01-04 Fernando Perez <fperez@colorado.edu>
4963 2002-01-04 Fernando Perez <fperez@colorado.edu>
4960
4964
4961 * Made deep_reload() off by default. It doesn't always work
4965 * Made deep_reload() off by default. It doesn't always work
4962 exactly as intended, so it's probably safer to have it off. It's
4966 exactly as intended, so it's probably safer to have it off. It's
4963 still available as dreload() anyway, so nothing is lost.
4967 still available as dreload() anyway, so nothing is lost.
4964
4968
4965 2002-01-02 Fernando Perez <fperez@colorado.edu>
4969 2002-01-02 Fernando Perez <fperez@colorado.edu>
4966
4970
4967 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4971 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4968 so I wanted an updated release).
4972 so I wanted an updated release).
4969
4973
4970 2001-12-27 Fernando Perez <fperez@colorado.edu>
4974 2001-12-27 Fernando Perez <fperez@colorado.edu>
4971
4975
4972 * IPython/iplib.py (InteractiveShell.interact): Added the original
4976 * IPython/iplib.py (InteractiveShell.interact): Added the original
4973 code from 'code.py' for this module in order to change the
4977 code from 'code.py' for this module in order to change the
4974 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4978 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4975 the history cache would break when the user hit Ctrl-C, and
4979 the history cache would break when the user hit Ctrl-C, and
4976 interact() offers no way to add any hooks to it.
4980 interact() offers no way to add any hooks to it.
4977
4981
4978 2001-12-23 Fernando Perez <fperez@colorado.edu>
4982 2001-12-23 Fernando Perez <fperez@colorado.edu>
4979
4983
4980 * setup.py: added check for 'MANIFEST' before trying to remove
4984 * setup.py: added check for 'MANIFEST' before trying to remove
4981 it. Thanks to Sean Reifschneider.
4985 it. Thanks to Sean Reifschneider.
4982
4986
4983 2001-12-22 Fernando Perez <fperez@colorado.edu>
4987 2001-12-22 Fernando Perez <fperez@colorado.edu>
4984
4988
4985 * Released 0.2.2.
4989 * Released 0.2.2.
4986
4990
4987 * Finished (reasonably) writing the manual. Later will add the
4991 * Finished (reasonably) writing the manual. Later will add the
4988 python-standard navigation stylesheets, but for the time being
4992 python-standard navigation stylesheets, but for the time being
4989 it's fairly complete. Distribution will include html and pdf
4993 it's fairly complete. Distribution will include html and pdf
4990 versions.
4994 versions.
4991
4995
4992 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4996 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4993 (MayaVi author).
4997 (MayaVi author).
4994
4998
4995 2001-12-21 Fernando Perez <fperez@colorado.edu>
4999 2001-12-21 Fernando Perez <fperez@colorado.edu>
4996
5000
4997 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5001 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4998 good public release, I think (with the manual and the distutils
5002 good public release, I think (with the manual and the distutils
4999 installer). The manual can use some work, but that can go
5003 installer). The manual can use some work, but that can go
5000 slowly. Otherwise I think it's quite nice for end users. Next
5004 slowly. Otherwise I think it's quite nice for end users. Next
5001 summer, rewrite the guts of it...
5005 summer, rewrite the guts of it...
5002
5006
5003 * Changed format of ipythonrc files to use whitespace as the
5007 * Changed format of ipythonrc files to use whitespace as the
5004 separator instead of an explicit '='. Cleaner.
5008 separator instead of an explicit '='. Cleaner.
5005
5009
5006 2001-12-20 Fernando Perez <fperez@colorado.edu>
5010 2001-12-20 Fernando Perez <fperez@colorado.edu>
5007
5011
5008 * Started a manual in LyX. For now it's just a quick merge of the
5012 * Started a manual in LyX. For now it's just a quick merge of the
5009 various internal docstrings and READMEs. Later it may grow into a
5013 various internal docstrings and READMEs. Later it may grow into a
5010 nice, full-blown manual.
5014 nice, full-blown manual.
5011
5015
5012 * Set up a distutils based installer. Installation should now be
5016 * Set up a distutils based installer. Installation should now be
5013 trivially simple for end-users.
5017 trivially simple for end-users.
5014
5018
5015 2001-12-11 Fernando Perez <fperez@colorado.edu>
5019 2001-12-11 Fernando Perez <fperez@colorado.edu>
5016
5020
5017 * Released 0.2.0. First public release, announced it at
5021 * Released 0.2.0. First public release, announced it at
5018 comp.lang.python. From now on, just bugfixes...
5022 comp.lang.python. From now on, just bugfixes...
5019
5023
5020 * Went through all the files, set copyright/license notices and
5024 * Went through all the files, set copyright/license notices and
5021 cleaned up things. Ready for release.
5025 cleaned up things. Ready for release.
5022
5026
5023 2001-12-10 Fernando Perez <fperez@colorado.edu>
5027 2001-12-10 Fernando Perez <fperez@colorado.edu>
5024
5028
5025 * Changed the first-time installer not to use tarfiles. It's more
5029 * Changed the first-time installer not to use tarfiles. It's more
5026 robust now and less unix-dependent. Also makes it easier for
5030 robust now and less unix-dependent. Also makes it easier for
5027 people to later upgrade versions.
5031 people to later upgrade versions.
5028
5032
5029 * Changed @exit to @abort to reflect the fact that it's pretty
5033 * Changed @exit to @abort to reflect the fact that it's pretty
5030 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5034 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5031 becomes significant only when IPyhton is embedded: in that case,
5035 becomes significant only when IPyhton is embedded: in that case,
5032 C-D closes IPython only, but @abort kills the enclosing program
5036 C-D closes IPython only, but @abort kills the enclosing program
5033 too (unless it had called IPython inside a try catching
5037 too (unless it had called IPython inside a try catching
5034 SystemExit).
5038 SystemExit).
5035
5039
5036 * Created Shell module which exposes the actuall IPython Shell
5040 * Created Shell module which exposes the actuall IPython Shell
5037 classes, currently the normal and the embeddable one. This at
5041 classes, currently the normal and the embeddable one. This at
5038 least offers a stable interface we won't need to change when
5042 least offers a stable interface we won't need to change when
5039 (later) the internals are rewritten. That rewrite will be confined
5043 (later) the internals are rewritten. That rewrite will be confined
5040 to iplib and ipmaker, but the Shell interface should remain as is.
5044 to iplib and ipmaker, but the Shell interface should remain as is.
5041
5045
5042 * Added embed module which offers an embeddable IPShell object,
5046 * Added embed module which offers an embeddable IPShell object,
5043 useful to fire up IPython *inside* a running program. Great for
5047 useful to fire up IPython *inside* a running program. Great for
5044 debugging or dynamical data analysis.
5048 debugging or dynamical data analysis.
5045
5049
5046 2001-12-08 Fernando Perez <fperez@colorado.edu>
5050 2001-12-08 Fernando Perez <fperez@colorado.edu>
5047
5051
5048 * Fixed small bug preventing seeing info from methods of defined
5052 * Fixed small bug preventing seeing info from methods of defined
5049 objects (incorrect namespace in _ofind()).
5053 objects (incorrect namespace in _ofind()).
5050
5054
5051 * Documentation cleanup. Moved the main usage docstrings to a
5055 * Documentation cleanup. Moved the main usage docstrings to a
5052 separate file, usage.py (cleaner to maintain, and hopefully in the
5056 separate file, usage.py (cleaner to maintain, and hopefully in the
5053 future some perlpod-like way of producing interactive, man and
5057 future some perlpod-like way of producing interactive, man and
5054 html docs out of it will be found).
5058 html docs out of it will be found).
5055
5059
5056 * Added @profile to see your profile at any time.
5060 * Added @profile to see your profile at any time.
5057
5061
5058 * Added @p as an alias for 'print'. It's especially convenient if
5062 * Added @p as an alias for 'print'. It's especially convenient if
5059 using automagic ('p x' prints x).
5063 using automagic ('p x' prints x).
5060
5064
5061 * Small cleanups and fixes after a pychecker run.
5065 * Small cleanups and fixes after a pychecker run.
5062
5066
5063 * Changed the @cd command to handle @cd - and @cd -<n> for
5067 * Changed the @cd command to handle @cd - and @cd -<n> for
5064 visiting any directory in _dh.
5068 visiting any directory in _dh.
5065
5069
5066 * Introduced _dh, a history of visited directories. @dhist prints
5070 * Introduced _dh, a history of visited directories. @dhist prints
5067 it out with numbers.
5071 it out with numbers.
5068
5072
5069 2001-12-07 Fernando Perez <fperez@colorado.edu>
5073 2001-12-07 Fernando Perez <fperez@colorado.edu>
5070
5074
5071 * Released 0.1.22
5075 * Released 0.1.22
5072
5076
5073 * Made initialization a bit more robust against invalid color
5077 * Made initialization a bit more robust against invalid color
5074 options in user input (exit, not traceback-crash).
5078 options in user input (exit, not traceback-crash).
5075
5079
5076 * Changed the bug crash reporter to write the report only in the
5080 * Changed the bug crash reporter to write the report only in the
5077 user's .ipython directory. That way IPython won't litter people's
5081 user's .ipython directory. That way IPython won't litter people's
5078 hard disks with crash files all over the place. Also print on
5082 hard disks with crash files all over the place. Also print on
5079 screen the necessary mail command.
5083 screen the necessary mail command.
5080
5084
5081 * With the new ultraTB, implemented LightBG color scheme for light
5085 * With the new ultraTB, implemented LightBG color scheme for light
5082 background terminals. A lot of people like white backgrounds, so I
5086 background terminals. A lot of people like white backgrounds, so I
5083 guess we should at least give them something readable.
5087 guess we should at least give them something readable.
5084
5088
5085 2001-12-06 Fernando Perez <fperez@colorado.edu>
5089 2001-12-06 Fernando Perez <fperez@colorado.edu>
5086
5090
5087 * Modified the structure of ultraTB. Now there's a proper class
5091 * Modified the structure of ultraTB. Now there's a proper class
5088 for tables of color schemes which allow adding schemes easily and
5092 for tables of color schemes which allow adding schemes easily and
5089 switching the active scheme without creating a new instance every
5093 switching the active scheme without creating a new instance every
5090 time (which was ridiculous). The syntax for creating new schemes
5094 time (which was ridiculous). The syntax for creating new schemes
5091 is also cleaner. I think ultraTB is finally done, with a clean
5095 is also cleaner. I think ultraTB is finally done, with a clean
5092 class structure. Names are also much cleaner (now there's proper
5096 class structure. Names are also much cleaner (now there's proper
5093 color tables, no need for every variable to also have 'color' in
5097 color tables, no need for every variable to also have 'color' in
5094 its name).
5098 its name).
5095
5099
5096 * Broke down genutils into separate files. Now genutils only
5100 * Broke down genutils into separate files. Now genutils only
5097 contains utility functions, and classes have been moved to their
5101 contains utility functions, and classes have been moved to their
5098 own files (they had enough independent functionality to warrant
5102 own files (they had enough independent functionality to warrant
5099 it): ConfigLoader, OutputTrap, Struct.
5103 it): ConfigLoader, OutputTrap, Struct.
5100
5104
5101 2001-12-05 Fernando Perez <fperez@colorado.edu>
5105 2001-12-05 Fernando Perez <fperez@colorado.edu>
5102
5106
5103 * IPython turns 21! Released version 0.1.21, as a candidate for
5107 * IPython turns 21! Released version 0.1.21, as a candidate for
5104 public consumption. If all goes well, release in a few days.
5108 public consumption. If all goes well, release in a few days.
5105
5109
5106 * Fixed path bug (files in Extensions/ directory wouldn't be found
5110 * Fixed path bug (files in Extensions/ directory wouldn't be found
5107 unless IPython/ was explicitly in sys.path).
5111 unless IPython/ was explicitly in sys.path).
5108
5112
5109 * Extended the FlexCompleter class as MagicCompleter to allow
5113 * Extended the FlexCompleter class as MagicCompleter to allow
5110 completion of @-starting lines.
5114 completion of @-starting lines.
5111
5115
5112 * Created __release__.py file as a central repository for release
5116 * Created __release__.py file as a central repository for release
5113 info that other files can read from.
5117 info that other files can read from.
5114
5118
5115 * Fixed small bug in logging: when logging was turned on in
5119 * Fixed small bug in logging: when logging was turned on in
5116 mid-session, old lines with special meanings (!@?) were being
5120 mid-session, old lines with special meanings (!@?) were being
5117 logged without the prepended comment, which is necessary since
5121 logged without the prepended comment, which is necessary since
5118 they are not truly valid python syntax. This should make session
5122 they are not truly valid python syntax. This should make session
5119 restores produce less errors.
5123 restores produce less errors.
5120
5124
5121 * The namespace cleanup forced me to make a FlexCompleter class
5125 * The namespace cleanup forced me to make a FlexCompleter class
5122 which is nothing but a ripoff of rlcompleter, but with selectable
5126 which is nothing but a ripoff of rlcompleter, but with selectable
5123 namespace (rlcompleter only works in __main__.__dict__). I'll try
5127 namespace (rlcompleter only works in __main__.__dict__). I'll try
5124 to submit a note to the authors to see if this change can be
5128 to submit a note to the authors to see if this change can be
5125 incorporated in future rlcompleter releases (Dec.6: done)
5129 incorporated in future rlcompleter releases (Dec.6: done)
5126
5130
5127 * More fixes to namespace handling. It was a mess! Now all
5131 * More fixes to namespace handling. It was a mess! Now all
5128 explicit references to __main__.__dict__ are gone (except when
5132 explicit references to __main__.__dict__ are gone (except when
5129 really needed) and everything is handled through the namespace
5133 really needed) and everything is handled through the namespace
5130 dicts in the IPython instance. We seem to be getting somewhere
5134 dicts in the IPython instance. We seem to be getting somewhere
5131 with this, finally...
5135 with this, finally...
5132
5136
5133 * Small documentation updates.
5137 * Small documentation updates.
5134
5138
5135 * Created the Extensions directory under IPython (with an
5139 * Created the Extensions directory under IPython (with an
5136 __init__.py). Put the PhysicalQ stuff there. This directory should
5140 __init__.py). Put the PhysicalQ stuff there. This directory should
5137 be used for all special-purpose extensions.
5141 be used for all special-purpose extensions.
5138
5142
5139 * File renaming:
5143 * File renaming:
5140 ipythonlib --> ipmaker
5144 ipythonlib --> ipmaker
5141 ipplib --> iplib
5145 ipplib --> iplib
5142 This makes a bit more sense in terms of what these files actually do.
5146 This makes a bit more sense in terms of what these files actually do.
5143
5147
5144 * Moved all the classes and functions in ipythonlib to ipplib, so
5148 * Moved all the classes and functions in ipythonlib to ipplib, so
5145 now ipythonlib only has make_IPython(). This will ease up its
5149 now ipythonlib only has make_IPython(). This will ease up its
5146 splitting in smaller functional chunks later.
5150 splitting in smaller functional chunks later.
5147
5151
5148 * Cleaned up (done, I think) output of @whos. Better column
5152 * Cleaned up (done, I think) output of @whos. Better column
5149 formatting, and now shows str(var) for as much as it can, which is
5153 formatting, and now shows str(var) for as much as it can, which is
5150 typically what one gets with a 'print var'.
5154 typically what one gets with a 'print var'.
5151
5155
5152 2001-12-04 Fernando Perez <fperez@colorado.edu>
5156 2001-12-04 Fernando Perez <fperez@colorado.edu>
5153
5157
5154 * Fixed namespace problems. Now builtin/IPyhton/user names get
5158 * Fixed namespace problems. Now builtin/IPyhton/user names get
5155 properly reported in their namespace. Internal namespace handling
5159 properly reported in their namespace. Internal namespace handling
5156 is finally getting decent (not perfect yet, but much better than
5160 is finally getting decent (not perfect yet, but much better than
5157 the ad-hoc mess we had).
5161 the ad-hoc mess we had).
5158
5162
5159 * Removed -exit option. If people just want to run a python
5163 * Removed -exit option. If people just want to run a python
5160 script, that's what the normal interpreter is for. Less
5164 script, that's what the normal interpreter is for. Less
5161 unnecessary options, less chances for bugs.
5165 unnecessary options, less chances for bugs.
5162
5166
5163 * Added a crash handler which generates a complete post-mortem if
5167 * Added a crash handler which generates a complete post-mortem if
5164 IPython crashes. This will help a lot in tracking bugs down the
5168 IPython crashes. This will help a lot in tracking bugs down the
5165 road.
5169 road.
5166
5170
5167 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5171 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5168 which were boud to functions being reassigned would bypass the
5172 which were boud to functions being reassigned would bypass the
5169 logger, breaking the sync of _il with the prompt counter. This
5173 logger, breaking the sync of _il with the prompt counter. This
5170 would then crash IPython later when a new line was logged.
5174 would then crash IPython later when a new line was logged.
5171
5175
5172 2001-12-02 Fernando Perez <fperez@colorado.edu>
5176 2001-12-02 Fernando Perez <fperez@colorado.edu>
5173
5177
5174 * Made IPython a package. This means people don't have to clutter
5178 * Made IPython a package. This means people don't have to clutter
5175 their sys.path with yet another directory. Changed the INSTALL
5179 their sys.path with yet another directory. Changed the INSTALL
5176 file accordingly.
5180 file accordingly.
5177
5181
5178 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5182 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5179 sorts its output (so @who shows it sorted) and @whos formats the
5183 sorts its output (so @who shows it sorted) and @whos formats the
5180 table according to the width of the first column. Nicer, easier to
5184 table according to the width of the first column. Nicer, easier to
5181 read. Todo: write a generic table_format() which takes a list of
5185 read. Todo: write a generic table_format() which takes a list of
5182 lists and prints it nicely formatted, with optional row/column
5186 lists and prints it nicely formatted, with optional row/column
5183 separators and proper padding and justification.
5187 separators and proper padding and justification.
5184
5188
5185 * Released 0.1.20
5189 * Released 0.1.20
5186
5190
5187 * Fixed bug in @log which would reverse the inputcache list (a
5191 * Fixed bug in @log which would reverse the inputcache list (a
5188 copy operation was missing).
5192 copy operation was missing).
5189
5193
5190 * Code cleanup. @config was changed to use page(). Better, since
5194 * Code cleanup. @config was changed to use page(). Better, since
5191 its output is always quite long.
5195 its output is always quite long.
5192
5196
5193 * Itpl is back as a dependency. I was having too many problems
5197 * Itpl is back as a dependency. I was having too many problems
5194 getting the parametric aliases to work reliably, and it's just
5198 getting the parametric aliases to work reliably, and it's just
5195 easier to code weird string operations with it than playing %()s
5199 easier to code weird string operations with it than playing %()s
5196 games. It's only ~6k, so I don't think it's too big a deal.
5200 games. It's only ~6k, so I don't think it's too big a deal.
5197
5201
5198 * Found (and fixed) a very nasty bug with history. !lines weren't
5202 * Found (and fixed) a very nasty bug with history. !lines weren't
5199 getting cached, and the out of sync caches would crash
5203 getting cached, and the out of sync caches would crash
5200 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5204 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5201 division of labor a bit better. Bug fixed, cleaner structure.
5205 division of labor a bit better. Bug fixed, cleaner structure.
5202
5206
5203 2001-12-01 Fernando Perez <fperez@colorado.edu>
5207 2001-12-01 Fernando Perez <fperez@colorado.edu>
5204
5208
5205 * Released 0.1.19
5209 * Released 0.1.19
5206
5210
5207 * Added option -n to @hist to prevent line number printing. Much
5211 * Added option -n to @hist to prevent line number printing. Much
5208 easier to copy/paste code this way.
5212 easier to copy/paste code this way.
5209
5213
5210 * Created global _il to hold the input list. Allows easy
5214 * Created global _il to hold the input list. Allows easy
5211 re-execution of blocks of code by slicing it (inspired by Janko's
5215 re-execution of blocks of code by slicing it (inspired by Janko's
5212 comment on 'macros').
5216 comment on 'macros').
5213
5217
5214 * Small fixes and doc updates.
5218 * Small fixes and doc updates.
5215
5219
5216 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5220 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5217 much too fragile with automagic. Handles properly multi-line
5221 much too fragile with automagic. Handles properly multi-line
5218 statements and takes parameters.
5222 statements and takes parameters.
5219
5223
5220 2001-11-30 Fernando Perez <fperez@colorado.edu>
5224 2001-11-30 Fernando Perez <fperez@colorado.edu>
5221
5225
5222 * Version 0.1.18 released.
5226 * Version 0.1.18 released.
5223
5227
5224 * Fixed nasty namespace bug in initial module imports.
5228 * Fixed nasty namespace bug in initial module imports.
5225
5229
5226 * Added copyright/license notes to all code files (except
5230 * Added copyright/license notes to all code files (except
5227 DPyGetOpt). For the time being, LGPL. That could change.
5231 DPyGetOpt). For the time being, LGPL. That could change.
5228
5232
5229 * Rewrote a much nicer README, updated INSTALL, cleaned up
5233 * Rewrote a much nicer README, updated INSTALL, cleaned up
5230 ipythonrc-* samples.
5234 ipythonrc-* samples.
5231
5235
5232 * Overall code/documentation cleanup. Basically ready for
5236 * Overall code/documentation cleanup. Basically ready for
5233 release. Only remaining thing: licence decision (LGPL?).
5237 release. Only remaining thing: licence decision (LGPL?).
5234
5238
5235 * Converted load_config to a class, ConfigLoader. Now recursion
5239 * Converted load_config to a class, ConfigLoader. Now recursion
5236 control is better organized. Doesn't include the same file twice.
5240 control is better organized. Doesn't include the same file twice.
5237
5241
5238 2001-11-29 Fernando Perez <fperez@colorado.edu>
5242 2001-11-29 Fernando Perez <fperez@colorado.edu>
5239
5243
5240 * Got input history working. Changed output history variables from
5244 * Got input history working. Changed output history variables from
5241 _p to _o so that _i is for input and _o for output. Just cleaner
5245 _p to _o so that _i is for input and _o for output. Just cleaner
5242 convention.
5246 convention.
5243
5247
5244 * Implemented parametric aliases. This pretty much allows the
5248 * Implemented parametric aliases. This pretty much allows the
5245 alias system to offer full-blown shell convenience, I think.
5249 alias system to offer full-blown shell convenience, I think.
5246
5250
5247 * Version 0.1.17 released, 0.1.18 opened.
5251 * Version 0.1.17 released, 0.1.18 opened.
5248
5252
5249 * dot_ipython/ipythonrc (alias): added documentation.
5253 * dot_ipython/ipythonrc (alias): added documentation.
5250 (xcolor): Fixed small bug (xcolors -> xcolor)
5254 (xcolor): Fixed small bug (xcolors -> xcolor)
5251
5255
5252 * Changed the alias system. Now alias is a magic command to define
5256 * Changed the alias system. Now alias is a magic command to define
5253 aliases just like the shell. Rationale: the builtin magics should
5257 aliases just like the shell. Rationale: the builtin magics should
5254 be there for things deeply connected to IPython's
5258 be there for things deeply connected to IPython's
5255 architecture. And this is a much lighter system for what I think
5259 architecture. And this is a much lighter system for what I think
5256 is the really important feature: allowing users to define quickly
5260 is the really important feature: allowing users to define quickly
5257 magics that will do shell things for them, so they can customize
5261 magics that will do shell things for them, so they can customize
5258 IPython easily to match their work habits. If someone is really
5262 IPython easily to match their work habits. If someone is really
5259 desperate to have another name for a builtin alias, they can
5263 desperate to have another name for a builtin alias, they can
5260 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5264 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5261 works.
5265 works.
5262
5266
5263 2001-11-28 Fernando Perez <fperez@colorado.edu>
5267 2001-11-28 Fernando Perez <fperez@colorado.edu>
5264
5268
5265 * Changed @file so that it opens the source file at the proper
5269 * Changed @file so that it opens the source file at the proper
5266 line. Since it uses less, if your EDITOR environment is
5270 line. Since it uses less, if your EDITOR environment is
5267 configured, typing v will immediately open your editor of choice
5271 configured, typing v will immediately open your editor of choice
5268 right at the line where the object is defined. Not as quick as
5272 right at the line where the object is defined. Not as quick as
5269 having a direct @edit command, but for all intents and purposes it
5273 having a direct @edit command, but for all intents and purposes it
5270 works. And I don't have to worry about writing @edit to deal with
5274 works. And I don't have to worry about writing @edit to deal with
5271 all the editors, less does that.
5275 all the editors, less does that.
5272
5276
5273 * Version 0.1.16 released, 0.1.17 opened.
5277 * Version 0.1.16 released, 0.1.17 opened.
5274
5278
5275 * Fixed some nasty bugs in the page/page_dumb combo that could
5279 * Fixed some nasty bugs in the page/page_dumb combo that could
5276 crash IPython.
5280 crash IPython.
5277
5281
5278 2001-11-27 Fernando Perez <fperez@colorado.edu>
5282 2001-11-27 Fernando Perez <fperez@colorado.edu>
5279
5283
5280 * Version 0.1.15 released, 0.1.16 opened.
5284 * Version 0.1.15 released, 0.1.16 opened.
5281
5285
5282 * Finally got ? and ?? to work for undefined things: now it's
5286 * Finally got ? and ?? to work for undefined things: now it's
5283 possible to type {}.get? and get information about the get method
5287 possible to type {}.get? and get information about the get method
5284 of dicts, or os.path? even if only os is defined (so technically
5288 of dicts, or os.path? even if only os is defined (so technically
5285 os.path isn't). Works at any level. For example, after import os,
5289 os.path isn't). Works at any level. For example, after import os,
5286 os?, os.path?, os.path.abspath? all work. This is great, took some
5290 os?, os.path?, os.path.abspath? all work. This is great, took some
5287 work in _ofind.
5291 work in _ofind.
5288
5292
5289 * Fixed more bugs with logging. The sanest way to do it was to add
5293 * Fixed more bugs with logging. The sanest way to do it was to add
5290 to @log a 'mode' parameter. Killed two in one shot (this mode
5294 to @log a 'mode' parameter. Killed two in one shot (this mode
5291 option was a request of Janko's). I think it's finally clean
5295 option was a request of Janko's). I think it's finally clean
5292 (famous last words).
5296 (famous last words).
5293
5297
5294 * Added a page_dumb() pager which does a decent job of paging on
5298 * Added a page_dumb() pager which does a decent job of paging on
5295 screen, if better things (like less) aren't available. One less
5299 screen, if better things (like less) aren't available. One less
5296 unix dependency (someday maybe somebody will port this to
5300 unix dependency (someday maybe somebody will port this to
5297 windows).
5301 windows).
5298
5302
5299 * Fixed problem in magic_log: would lock of logging out if log
5303 * Fixed problem in magic_log: would lock of logging out if log
5300 creation failed (because it would still think it had succeeded).
5304 creation failed (because it would still think it had succeeded).
5301
5305
5302 * Improved the page() function using curses to auto-detect screen
5306 * Improved the page() function using curses to auto-detect screen
5303 size. Now it can make a much better decision on whether to print
5307 size. Now it can make a much better decision on whether to print
5304 or page a string. Option screen_length was modified: a value 0
5308 or page a string. Option screen_length was modified: a value 0
5305 means auto-detect, and that's the default now.
5309 means auto-detect, and that's the default now.
5306
5310
5307 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5311 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5308 go out. I'll test it for a few days, then talk to Janko about
5312 go out. I'll test it for a few days, then talk to Janko about
5309 licences and announce it.
5313 licences and announce it.
5310
5314
5311 * Fixed the length of the auto-generated ---> prompt which appears
5315 * Fixed the length of the auto-generated ---> prompt which appears
5312 for auto-parens and auto-quotes. Getting this right isn't trivial,
5316 for auto-parens and auto-quotes. Getting this right isn't trivial,
5313 with all the color escapes, different prompt types and optional
5317 with all the color escapes, different prompt types and optional
5314 separators. But it seems to be working in all the combinations.
5318 separators. But it seems to be working in all the combinations.
5315
5319
5316 2001-11-26 Fernando Perez <fperez@colorado.edu>
5320 2001-11-26 Fernando Perez <fperez@colorado.edu>
5317
5321
5318 * Wrote a regexp filter to get option types from the option names
5322 * Wrote a regexp filter to get option types from the option names
5319 string. This eliminates the need to manually keep two duplicate
5323 string. This eliminates the need to manually keep two duplicate
5320 lists.
5324 lists.
5321
5325
5322 * Removed the unneeded check_option_names. Now options are handled
5326 * Removed the unneeded check_option_names. Now options are handled
5323 in a much saner manner and it's easy to visually check that things
5327 in a much saner manner and it's easy to visually check that things
5324 are ok.
5328 are ok.
5325
5329
5326 * Updated version numbers on all files I modified to carry a
5330 * Updated version numbers on all files I modified to carry a
5327 notice so Janko and Nathan have clear version markers.
5331 notice so Janko and Nathan have clear version markers.
5328
5332
5329 * Updated docstring for ultraTB with my changes. I should send
5333 * Updated docstring for ultraTB with my changes. I should send
5330 this to Nathan.
5334 this to Nathan.
5331
5335
5332 * Lots of small fixes. Ran everything through pychecker again.
5336 * Lots of small fixes. Ran everything through pychecker again.
5333
5337
5334 * Made loading of deep_reload an cmd line option. If it's not too
5338 * Made loading of deep_reload an cmd line option. If it's not too
5335 kosher, now people can just disable it. With -nodeep_reload it's
5339 kosher, now people can just disable it. With -nodeep_reload it's
5336 still available as dreload(), it just won't overwrite reload().
5340 still available as dreload(), it just won't overwrite reload().
5337
5341
5338 * Moved many options to the no| form (-opt and -noopt
5342 * Moved many options to the no| form (-opt and -noopt
5339 accepted). Cleaner.
5343 accepted). Cleaner.
5340
5344
5341 * Changed magic_log so that if called with no parameters, it uses
5345 * Changed magic_log so that if called with no parameters, it uses
5342 'rotate' mode. That way auto-generated logs aren't automatically
5346 'rotate' mode. That way auto-generated logs aren't automatically
5343 over-written. For normal logs, now a backup is made if it exists
5347 over-written. For normal logs, now a backup is made if it exists
5344 (only 1 level of backups). A new 'backup' mode was added to the
5348 (only 1 level of backups). A new 'backup' mode was added to the
5345 Logger class to support this. This was a request by Janko.
5349 Logger class to support this. This was a request by Janko.
5346
5350
5347 * Added @logoff/@logon to stop/restart an active log.
5351 * Added @logoff/@logon to stop/restart an active log.
5348
5352
5349 * Fixed a lot of bugs in log saving/replay. It was pretty
5353 * Fixed a lot of bugs in log saving/replay. It was pretty
5350 broken. Now special lines (!@,/) appear properly in the command
5354 broken. Now special lines (!@,/) appear properly in the command
5351 history after a log replay.
5355 history after a log replay.
5352
5356
5353 * Tried and failed to implement full session saving via pickle. My
5357 * Tried and failed to implement full session saving via pickle. My
5354 idea was to pickle __main__.__dict__, but modules can't be
5358 idea was to pickle __main__.__dict__, but modules can't be
5355 pickled. This would be a better alternative to replaying logs, but
5359 pickled. This would be a better alternative to replaying logs, but
5356 seems quite tricky to get to work. Changed -session to be called
5360 seems quite tricky to get to work. Changed -session to be called
5357 -logplay, which more accurately reflects what it does. And if we
5361 -logplay, which more accurately reflects what it does. And if we
5358 ever get real session saving working, -session is now available.
5362 ever get real session saving working, -session is now available.
5359
5363
5360 * Implemented color schemes for prompts also. As for tracebacks,
5364 * Implemented color schemes for prompts also. As for tracebacks,
5361 currently only NoColor and Linux are supported. But now the
5365 currently only NoColor and Linux are supported. But now the
5362 infrastructure is in place, based on a generic ColorScheme
5366 infrastructure is in place, based on a generic ColorScheme
5363 class. So writing and activating new schemes both for the prompts
5367 class. So writing and activating new schemes both for the prompts
5364 and the tracebacks should be straightforward.
5368 and the tracebacks should be straightforward.
5365
5369
5366 * Version 0.1.13 released, 0.1.14 opened.
5370 * Version 0.1.13 released, 0.1.14 opened.
5367
5371
5368 * Changed handling of options for output cache. Now counter is
5372 * Changed handling of options for output cache. Now counter is
5369 hardwired starting at 1 and one specifies the maximum number of
5373 hardwired starting at 1 and one specifies the maximum number of
5370 entries *in the outcache* (not the max prompt counter). This is
5374 entries *in the outcache* (not the max prompt counter). This is
5371 much better, since many statements won't increase the cache
5375 much better, since many statements won't increase the cache
5372 count. It also eliminated some confusing options, now there's only
5376 count. It also eliminated some confusing options, now there's only
5373 one: cache_size.
5377 one: cache_size.
5374
5378
5375 * Added 'alias' magic function and magic_alias option in the
5379 * Added 'alias' magic function and magic_alias option in the
5376 ipythonrc file. Now the user can easily define whatever names he
5380 ipythonrc file. Now the user can easily define whatever names he
5377 wants for the magic functions without having to play weird
5381 wants for the magic functions without having to play weird
5378 namespace games. This gives IPython a real shell-like feel.
5382 namespace games. This gives IPython a real shell-like feel.
5379
5383
5380 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5384 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5381 @ or not).
5385 @ or not).
5382
5386
5383 This was one of the last remaining 'visible' bugs (that I know
5387 This was one of the last remaining 'visible' bugs (that I know
5384 of). I think if I can clean up the session loading so it works
5388 of). I think if I can clean up the session loading so it works
5385 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5389 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5386 about licensing).
5390 about licensing).
5387
5391
5388 2001-11-25 Fernando Perez <fperez@colorado.edu>
5392 2001-11-25 Fernando Perez <fperez@colorado.edu>
5389
5393
5390 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5394 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5391 there's a cleaner distinction between what ? and ?? show.
5395 there's a cleaner distinction between what ? and ?? show.
5392
5396
5393 * Added screen_length option. Now the user can define his own
5397 * Added screen_length option. Now the user can define his own
5394 screen size for page() operations.
5398 screen size for page() operations.
5395
5399
5396 * Implemented magic shell-like functions with automatic code
5400 * Implemented magic shell-like functions with automatic code
5397 generation. Now adding another function is just a matter of adding
5401 generation. Now adding another function is just a matter of adding
5398 an entry to a dict, and the function is dynamically generated at
5402 an entry to a dict, and the function is dynamically generated at
5399 run-time. Python has some really cool features!
5403 run-time. Python has some really cool features!
5400
5404
5401 * Renamed many options to cleanup conventions a little. Now all
5405 * Renamed many options to cleanup conventions a little. Now all
5402 are lowercase, and only underscores where needed. Also in the code
5406 are lowercase, and only underscores where needed. Also in the code
5403 option name tables are clearer.
5407 option name tables are clearer.
5404
5408
5405 * Changed prompts a little. Now input is 'In [n]:' instead of
5409 * Changed prompts a little. Now input is 'In [n]:' instead of
5406 'In[n]:='. This allows it the numbers to be aligned with the
5410 'In[n]:='. This allows it the numbers to be aligned with the
5407 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5411 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5408 Python (it was a Mathematica thing). The '...' continuation prompt
5412 Python (it was a Mathematica thing). The '...' continuation prompt
5409 was also changed a little to align better.
5413 was also changed a little to align better.
5410
5414
5411 * Fixed bug when flushing output cache. Not all _p<n> variables
5415 * Fixed bug when flushing output cache. Not all _p<n> variables
5412 exist, so their deletion needs to be wrapped in a try:
5416 exist, so their deletion needs to be wrapped in a try:
5413
5417
5414 * Figured out how to properly use inspect.formatargspec() (it
5418 * Figured out how to properly use inspect.formatargspec() (it
5415 requires the args preceded by *). So I removed all the code from
5419 requires the args preceded by *). So I removed all the code from
5416 _get_pdef in Magic, which was just replicating that.
5420 _get_pdef in Magic, which was just replicating that.
5417
5421
5418 * Added test to prefilter to allow redefining magic function names
5422 * Added test to prefilter to allow redefining magic function names
5419 as variables. This is ok, since the @ form is always available,
5423 as variables. This is ok, since the @ form is always available,
5420 but whe should allow the user to define a variable called 'ls' if
5424 but whe should allow the user to define a variable called 'ls' if
5421 he needs it.
5425 he needs it.
5422
5426
5423 * Moved the ToDo information from README into a separate ToDo.
5427 * Moved the ToDo information from README into a separate ToDo.
5424
5428
5425 * General code cleanup and small bugfixes. I think it's close to a
5429 * General code cleanup and small bugfixes. I think it's close to a
5426 state where it can be released, obviously with a big 'beta'
5430 state where it can be released, obviously with a big 'beta'
5427 warning on it.
5431 warning on it.
5428
5432
5429 * Got the magic function split to work. Now all magics are defined
5433 * Got the magic function split to work. Now all magics are defined
5430 in a separate class. It just organizes things a bit, and now
5434 in a separate class. It just organizes things a bit, and now
5431 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5435 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5432 was too long).
5436 was too long).
5433
5437
5434 * Changed @clear to @reset to avoid potential confusions with
5438 * Changed @clear to @reset to avoid potential confusions with
5435 the shell command clear. Also renamed @cl to @clear, which does
5439 the shell command clear. Also renamed @cl to @clear, which does
5436 exactly what people expect it to from their shell experience.
5440 exactly what people expect it to from their shell experience.
5437
5441
5438 Added a check to the @reset command (since it's so
5442 Added a check to the @reset command (since it's so
5439 destructive, it's probably a good idea to ask for confirmation).
5443 destructive, it's probably a good idea to ask for confirmation).
5440 But now reset only works for full namespace resetting. Since the
5444 But now reset only works for full namespace resetting. Since the
5441 del keyword is already there for deleting a few specific
5445 del keyword is already there for deleting a few specific
5442 variables, I don't see the point of having a redundant magic
5446 variables, I don't see the point of having a redundant magic
5443 function for the same task.
5447 function for the same task.
5444
5448
5445 2001-11-24 Fernando Perez <fperez@colorado.edu>
5449 2001-11-24 Fernando Perez <fperez@colorado.edu>
5446
5450
5447 * Updated the builtin docs (esp. the ? ones).
5451 * Updated the builtin docs (esp. the ? ones).
5448
5452
5449 * Ran all the code through pychecker. Not terribly impressed with
5453 * Ran all the code through pychecker. Not terribly impressed with
5450 it: lots of spurious warnings and didn't really find anything of
5454 it: lots of spurious warnings and didn't really find anything of
5451 substance (just a few modules being imported and not used).
5455 substance (just a few modules being imported and not used).
5452
5456
5453 * Implemented the new ultraTB functionality into IPython. New
5457 * Implemented the new ultraTB functionality into IPython. New
5454 option: xcolors. This chooses color scheme. xmode now only selects
5458 option: xcolors. This chooses color scheme. xmode now only selects
5455 between Plain and Verbose. Better orthogonality.
5459 between Plain and Verbose. Better orthogonality.
5456
5460
5457 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5461 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5458 mode and color scheme for the exception handlers. Now it's
5462 mode and color scheme for the exception handlers. Now it's
5459 possible to have the verbose traceback with no coloring.
5463 possible to have the verbose traceback with no coloring.
5460
5464
5461 2001-11-23 Fernando Perez <fperez@colorado.edu>
5465 2001-11-23 Fernando Perez <fperez@colorado.edu>
5462
5466
5463 * Version 0.1.12 released, 0.1.13 opened.
5467 * Version 0.1.12 released, 0.1.13 opened.
5464
5468
5465 * Removed option to set auto-quote and auto-paren escapes by
5469 * Removed option to set auto-quote and auto-paren escapes by
5466 user. The chances of breaking valid syntax are just too high. If
5470 user. The chances of breaking valid syntax are just too high. If
5467 someone *really* wants, they can always dig into the code.
5471 someone *really* wants, they can always dig into the code.
5468
5472
5469 * Made prompt separators configurable.
5473 * Made prompt separators configurable.
5470
5474
5471 2001-11-22 Fernando Perez <fperez@colorado.edu>
5475 2001-11-22 Fernando Perez <fperez@colorado.edu>
5472
5476
5473 * Small bugfixes in many places.
5477 * Small bugfixes in many places.
5474
5478
5475 * Removed the MyCompleter class from ipplib. It seemed redundant
5479 * Removed the MyCompleter class from ipplib. It seemed redundant
5476 with the C-p,C-n history search functionality. Less code to
5480 with the C-p,C-n history search functionality. Less code to
5477 maintain.
5481 maintain.
5478
5482
5479 * Moved all the original ipython.py code into ipythonlib.py. Right
5483 * Moved all the original ipython.py code into ipythonlib.py. Right
5480 now it's just one big dump into a function called make_IPython, so
5484 now it's just one big dump into a function called make_IPython, so
5481 no real modularity has been gained. But at least it makes the
5485 no real modularity has been gained. But at least it makes the
5482 wrapper script tiny, and since ipythonlib is a module, it gets
5486 wrapper script tiny, and since ipythonlib is a module, it gets
5483 compiled and startup is much faster.
5487 compiled and startup is much faster.
5484
5488
5485 This is a reasobably 'deep' change, so we should test it for a
5489 This is a reasobably 'deep' change, so we should test it for a
5486 while without messing too much more with the code.
5490 while without messing too much more with the code.
5487
5491
5488 2001-11-21 Fernando Perez <fperez@colorado.edu>
5492 2001-11-21 Fernando Perez <fperez@colorado.edu>
5489
5493
5490 * Version 0.1.11 released, 0.1.12 opened for further work.
5494 * Version 0.1.11 released, 0.1.12 opened for further work.
5491
5495
5492 * Removed dependency on Itpl. It was only needed in one place. It
5496 * Removed dependency on Itpl. It was only needed in one place. It
5493 would be nice if this became part of python, though. It makes life
5497 would be nice if this became part of python, though. It makes life
5494 *a lot* easier in some cases.
5498 *a lot* easier in some cases.
5495
5499
5496 * Simplified the prefilter code a bit. Now all handlers are
5500 * Simplified the prefilter code a bit. Now all handlers are
5497 expected to explicitly return a value (at least a blank string).
5501 expected to explicitly return a value (at least a blank string).
5498
5502
5499 * Heavy edits in ipplib. Removed the help system altogether. Now
5503 * Heavy edits in ipplib. Removed the help system altogether. Now
5500 obj?/?? is used for inspecting objects, a magic @doc prints
5504 obj?/?? is used for inspecting objects, a magic @doc prints
5501 docstrings, and full-blown Python help is accessed via the 'help'
5505 docstrings, and full-blown Python help is accessed via the 'help'
5502 keyword. This cleans up a lot of code (less to maintain) and does
5506 keyword. This cleans up a lot of code (less to maintain) and does
5503 the job. Since 'help' is now a standard Python component, might as
5507 the job. Since 'help' is now a standard Python component, might as
5504 well use it and remove duplicate functionality.
5508 well use it and remove duplicate functionality.
5505
5509
5506 Also removed the option to use ipplib as a standalone program. By
5510 Also removed the option to use ipplib as a standalone program. By
5507 now it's too dependent on other parts of IPython to function alone.
5511 now it's too dependent on other parts of IPython to function alone.
5508
5512
5509 * Fixed bug in genutils.pager. It would crash if the pager was
5513 * Fixed bug in genutils.pager. It would crash if the pager was
5510 exited immediately after opening (broken pipe).
5514 exited immediately after opening (broken pipe).
5511
5515
5512 * Trimmed down the VerboseTB reporting a little. The header is
5516 * Trimmed down the VerboseTB reporting a little. The header is
5513 much shorter now and the repeated exception arguments at the end
5517 much shorter now and the repeated exception arguments at the end
5514 have been removed. For interactive use the old header seemed a bit
5518 have been removed. For interactive use the old header seemed a bit
5515 excessive.
5519 excessive.
5516
5520
5517 * Fixed small bug in output of @whos for variables with multi-word
5521 * Fixed small bug in output of @whos for variables with multi-word
5518 types (only first word was displayed).
5522 types (only first word was displayed).
5519
5523
5520 2001-11-17 Fernando Perez <fperez@colorado.edu>
5524 2001-11-17 Fernando Perez <fperez@colorado.edu>
5521
5525
5522 * Version 0.1.10 released, 0.1.11 opened for further work.
5526 * Version 0.1.10 released, 0.1.11 opened for further work.
5523
5527
5524 * Modified dirs and friends. dirs now *returns* the stack (not
5528 * Modified dirs and friends. dirs now *returns* the stack (not
5525 prints), so one can manipulate it as a variable. Convenient to
5529 prints), so one can manipulate it as a variable. Convenient to
5526 travel along many directories.
5530 travel along many directories.
5527
5531
5528 * Fixed bug in magic_pdef: would only work with functions with
5532 * Fixed bug in magic_pdef: would only work with functions with
5529 arguments with default values.
5533 arguments with default values.
5530
5534
5531 2001-11-14 Fernando Perez <fperez@colorado.edu>
5535 2001-11-14 Fernando Perez <fperez@colorado.edu>
5532
5536
5533 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5537 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5534 example with IPython. Various other minor fixes and cleanups.
5538 example with IPython. Various other minor fixes and cleanups.
5535
5539
5536 * Version 0.1.9 released, 0.1.10 opened for further work.
5540 * Version 0.1.9 released, 0.1.10 opened for further work.
5537
5541
5538 * Added sys.path to the list of directories searched in the
5542 * Added sys.path to the list of directories searched in the
5539 execfile= option. It used to be the current directory and the
5543 execfile= option. It used to be the current directory and the
5540 user's IPYTHONDIR only.
5544 user's IPYTHONDIR only.
5541
5545
5542 2001-11-13 Fernando Perez <fperez@colorado.edu>
5546 2001-11-13 Fernando Perez <fperez@colorado.edu>
5543
5547
5544 * Reinstated the raw_input/prefilter separation that Janko had
5548 * Reinstated the raw_input/prefilter separation that Janko had
5545 initially. This gives a more convenient setup for extending the
5549 initially. This gives a more convenient setup for extending the
5546 pre-processor from the outside: raw_input always gets a string,
5550 pre-processor from the outside: raw_input always gets a string,
5547 and prefilter has to process it. We can then redefine prefilter
5551 and prefilter has to process it. We can then redefine prefilter
5548 from the outside and implement extensions for special
5552 from the outside and implement extensions for special
5549 purposes.
5553 purposes.
5550
5554
5551 Today I got one for inputting PhysicalQuantity objects
5555 Today I got one for inputting PhysicalQuantity objects
5552 (from Scientific) without needing any function calls at
5556 (from Scientific) without needing any function calls at
5553 all. Extremely convenient, and it's all done as a user-level
5557 all. Extremely convenient, and it's all done as a user-level
5554 extension (no IPython code was touched). Now instead of:
5558 extension (no IPython code was touched). Now instead of:
5555 a = PhysicalQuantity(4.2,'m/s**2')
5559 a = PhysicalQuantity(4.2,'m/s**2')
5556 one can simply say
5560 one can simply say
5557 a = 4.2 m/s**2
5561 a = 4.2 m/s**2
5558 or even
5562 or even
5559 a = 4.2 m/s^2
5563 a = 4.2 m/s^2
5560
5564
5561 I use this, but it's also a proof of concept: IPython really is
5565 I use this, but it's also a proof of concept: IPython really is
5562 fully user-extensible, even at the level of the parsing of the
5566 fully user-extensible, even at the level of the parsing of the
5563 command line. It's not trivial, but it's perfectly doable.
5567 command line. It's not trivial, but it's perfectly doable.
5564
5568
5565 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5569 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5566 the problem of modules being loaded in the inverse order in which
5570 the problem of modules being loaded in the inverse order in which
5567 they were defined in
5571 they were defined in
5568
5572
5569 * Version 0.1.8 released, 0.1.9 opened for further work.
5573 * Version 0.1.8 released, 0.1.9 opened for further work.
5570
5574
5571 * Added magics pdef, source and file. They respectively show the
5575 * Added magics pdef, source and file. They respectively show the
5572 definition line ('prototype' in C), source code and full python
5576 definition line ('prototype' in C), source code and full python
5573 file for any callable object. The object inspector oinfo uses
5577 file for any callable object. The object inspector oinfo uses
5574 these to show the same information.
5578 these to show the same information.
5575
5579
5576 * Version 0.1.7 released, 0.1.8 opened for further work.
5580 * Version 0.1.7 released, 0.1.8 opened for further work.
5577
5581
5578 * Separated all the magic functions into a class called Magic. The
5582 * Separated all the magic functions into a class called Magic. The
5579 InteractiveShell class was becoming too big for Xemacs to handle
5583 InteractiveShell class was becoming too big for Xemacs to handle
5580 (de-indenting a line would lock it up for 10 seconds while it
5584 (de-indenting a line would lock it up for 10 seconds while it
5581 backtracked on the whole class!)
5585 backtracked on the whole class!)
5582
5586
5583 FIXME: didn't work. It can be done, but right now namespaces are
5587 FIXME: didn't work. It can be done, but right now namespaces are
5584 all messed up. Do it later (reverted it for now, so at least
5588 all messed up. Do it later (reverted it for now, so at least
5585 everything works as before).
5589 everything works as before).
5586
5590
5587 * Got the object introspection system (magic_oinfo) working! I
5591 * Got the object introspection system (magic_oinfo) working! I
5588 think this is pretty much ready for release to Janko, so he can
5592 think this is pretty much ready for release to Janko, so he can
5589 test it for a while and then announce it. Pretty much 100% of what
5593 test it for a while and then announce it. Pretty much 100% of what
5590 I wanted for the 'phase 1' release is ready. Happy, tired.
5594 I wanted for the 'phase 1' release is ready. Happy, tired.
5591
5595
5592 2001-11-12 Fernando Perez <fperez@colorado.edu>
5596 2001-11-12 Fernando Perez <fperez@colorado.edu>
5593
5597
5594 * Version 0.1.6 released, 0.1.7 opened for further work.
5598 * Version 0.1.6 released, 0.1.7 opened for further work.
5595
5599
5596 * Fixed bug in printing: it used to test for truth before
5600 * Fixed bug in printing: it used to test for truth before
5597 printing, so 0 wouldn't print. Now checks for None.
5601 printing, so 0 wouldn't print. Now checks for None.
5598
5602
5599 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5603 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5600 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5604 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5601 reaches by hand into the outputcache. Think of a better way to do
5605 reaches by hand into the outputcache. Think of a better way to do
5602 this later.
5606 this later.
5603
5607
5604 * Various small fixes thanks to Nathan's comments.
5608 * Various small fixes thanks to Nathan's comments.
5605
5609
5606 * Changed magic_pprint to magic_Pprint. This way it doesn't
5610 * Changed magic_pprint to magic_Pprint. This way it doesn't
5607 collide with pprint() and the name is consistent with the command
5611 collide with pprint() and the name is consistent with the command
5608 line option.
5612 line option.
5609
5613
5610 * Changed prompt counter behavior to be fully like
5614 * Changed prompt counter behavior to be fully like
5611 Mathematica's. That is, even input that doesn't return a result
5615 Mathematica's. That is, even input that doesn't return a result
5612 raises the prompt counter. The old behavior was kind of confusing
5616 raises the prompt counter. The old behavior was kind of confusing
5613 (getting the same prompt number several times if the operation
5617 (getting the same prompt number several times if the operation
5614 didn't return a result).
5618 didn't return a result).
5615
5619
5616 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5620 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5617
5621
5618 * Fixed -Classic mode (wasn't working anymore).
5622 * Fixed -Classic mode (wasn't working anymore).
5619
5623
5620 * Added colored prompts using Nathan's new code. Colors are
5624 * Added colored prompts using Nathan's new code. Colors are
5621 currently hardwired, they can be user-configurable. For
5625 currently hardwired, they can be user-configurable. For
5622 developers, they can be chosen in file ipythonlib.py, at the
5626 developers, they can be chosen in file ipythonlib.py, at the
5623 beginning of the CachedOutput class def.
5627 beginning of the CachedOutput class def.
5624
5628
5625 2001-11-11 Fernando Perez <fperez@colorado.edu>
5629 2001-11-11 Fernando Perez <fperez@colorado.edu>
5626
5630
5627 * Version 0.1.5 released, 0.1.6 opened for further work.
5631 * Version 0.1.5 released, 0.1.6 opened for further work.
5628
5632
5629 * Changed magic_env to *return* the environment as a dict (not to
5633 * Changed magic_env to *return* the environment as a dict (not to
5630 print it). This way it prints, but it can also be processed.
5634 print it). This way it prints, but it can also be processed.
5631
5635
5632 * Added Verbose exception reporting to interactive
5636 * Added Verbose exception reporting to interactive
5633 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5637 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5634 traceback. Had to make some changes to the ultraTB file. This is
5638 traceback. Had to make some changes to the ultraTB file. This is
5635 probably the last 'big' thing in my mental todo list. This ties
5639 probably the last 'big' thing in my mental todo list. This ties
5636 in with the next entry:
5640 in with the next entry:
5637
5641
5638 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5642 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5639 has to specify is Plain, Color or Verbose for all exception
5643 has to specify is Plain, Color or Verbose for all exception
5640 handling.
5644 handling.
5641
5645
5642 * Removed ShellServices option. All this can really be done via
5646 * Removed ShellServices option. All this can really be done via
5643 the magic system. It's easier to extend, cleaner and has automatic
5647 the magic system. It's easier to extend, cleaner and has automatic
5644 namespace protection and documentation.
5648 namespace protection and documentation.
5645
5649
5646 2001-11-09 Fernando Perez <fperez@colorado.edu>
5650 2001-11-09 Fernando Perez <fperez@colorado.edu>
5647
5651
5648 * Fixed bug in output cache flushing (missing parameter to
5652 * Fixed bug in output cache flushing (missing parameter to
5649 __init__). Other small bugs fixed (found using pychecker).
5653 __init__). Other small bugs fixed (found using pychecker).
5650
5654
5651 * Version 0.1.4 opened for bugfixing.
5655 * Version 0.1.4 opened for bugfixing.
5652
5656
5653 2001-11-07 Fernando Perez <fperez@colorado.edu>
5657 2001-11-07 Fernando Perez <fperez@colorado.edu>
5654
5658
5655 * Version 0.1.3 released, mainly because of the raw_input bug.
5659 * Version 0.1.3 released, mainly because of the raw_input bug.
5656
5660
5657 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5661 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5658 and when testing for whether things were callable, a call could
5662 and when testing for whether things were callable, a call could
5659 actually be made to certain functions. They would get called again
5663 actually be made to certain functions. They would get called again
5660 once 'really' executed, with a resulting double call. A disaster
5664 once 'really' executed, with a resulting double call. A disaster
5661 in many cases (list.reverse() would never work!).
5665 in many cases (list.reverse() would never work!).
5662
5666
5663 * Removed prefilter() function, moved its code to raw_input (which
5667 * Removed prefilter() function, moved its code to raw_input (which
5664 after all was just a near-empty caller for prefilter). This saves
5668 after all was just a near-empty caller for prefilter). This saves
5665 a function call on every prompt, and simplifies the class a tiny bit.
5669 a function call on every prompt, and simplifies the class a tiny bit.
5666
5670
5667 * Fix _ip to __ip name in magic example file.
5671 * Fix _ip to __ip name in magic example file.
5668
5672
5669 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5673 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5670 work with non-gnu versions of tar.
5674 work with non-gnu versions of tar.
5671
5675
5672 2001-11-06 Fernando Perez <fperez@colorado.edu>
5676 2001-11-06 Fernando Perez <fperez@colorado.edu>
5673
5677
5674 * Version 0.1.2. Just to keep track of the recent changes.
5678 * Version 0.1.2. Just to keep track of the recent changes.
5675
5679
5676 * Fixed nasty bug in output prompt routine. It used to check 'if
5680 * Fixed nasty bug in output prompt routine. It used to check 'if
5677 arg != None...'. Problem is, this fails if arg implements a
5681 arg != None...'. Problem is, this fails if arg implements a
5678 special comparison (__cmp__) which disallows comparing to
5682 special comparison (__cmp__) which disallows comparing to
5679 None. Found it when trying to use the PhysicalQuantity module from
5683 None. Found it when trying to use the PhysicalQuantity module from
5680 ScientificPython.
5684 ScientificPython.
5681
5685
5682 2001-11-05 Fernando Perez <fperez@colorado.edu>
5686 2001-11-05 Fernando Perez <fperez@colorado.edu>
5683
5687
5684 * Also added dirs. Now the pushd/popd/dirs family functions
5688 * Also added dirs. Now the pushd/popd/dirs family functions
5685 basically like the shell, with the added convenience of going home
5689 basically like the shell, with the added convenience of going home
5686 when called with no args.
5690 when called with no args.
5687
5691
5688 * pushd/popd slightly modified to mimic shell behavior more
5692 * pushd/popd slightly modified to mimic shell behavior more
5689 closely.
5693 closely.
5690
5694
5691 * Added env,pushd,popd from ShellServices as magic functions. I
5695 * Added env,pushd,popd from ShellServices as magic functions. I
5692 think the cleanest will be to port all desired functions from
5696 think the cleanest will be to port all desired functions from
5693 ShellServices as magics and remove ShellServices altogether. This
5697 ShellServices as magics and remove ShellServices altogether. This
5694 will provide a single, clean way of adding functionality
5698 will provide a single, clean way of adding functionality
5695 (shell-type or otherwise) to IP.
5699 (shell-type or otherwise) to IP.
5696
5700
5697 2001-11-04 Fernando Perez <fperez@colorado.edu>
5701 2001-11-04 Fernando Perez <fperez@colorado.edu>
5698
5702
5699 * Added .ipython/ directory to sys.path. This way users can keep
5703 * Added .ipython/ directory to sys.path. This way users can keep
5700 customizations there and access them via import.
5704 customizations there and access them via import.
5701
5705
5702 2001-11-03 Fernando Perez <fperez@colorado.edu>
5706 2001-11-03 Fernando Perez <fperez@colorado.edu>
5703
5707
5704 * Opened version 0.1.1 for new changes.
5708 * Opened version 0.1.1 for new changes.
5705
5709
5706 * Changed version number to 0.1.0: first 'public' release, sent to
5710 * Changed version number to 0.1.0: first 'public' release, sent to
5707 Nathan and Janko.
5711 Nathan and Janko.
5708
5712
5709 * Lots of small fixes and tweaks.
5713 * Lots of small fixes and tweaks.
5710
5714
5711 * Minor changes to whos format. Now strings are shown, snipped if
5715 * Minor changes to whos format. Now strings are shown, snipped if
5712 too long.
5716 too long.
5713
5717
5714 * Changed ShellServices to work on __main__ so they show up in @who
5718 * Changed ShellServices to work on __main__ so they show up in @who
5715
5719
5716 * Help also works with ? at the end of a line:
5720 * Help also works with ? at the end of a line:
5717 ?sin and sin?
5721 ?sin and sin?
5718 both produce the same effect. This is nice, as often I use the
5722 both produce the same effect. This is nice, as often I use the
5719 tab-complete to find the name of a method, but I used to then have
5723 tab-complete to find the name of a method, but I used to then have
5720 to go to the beginning of the line to put a ? if I wanted more
5724 to go to the beginning of the line to put a ? if I wanted more
5721 info. Now I can just add the ? and hit return. Convenient.
5725 info. Now I can just add the ? and hit return. Convenient.
5722
5726
5723 2001-11-02 Fernando Perez <fperez@colorado.edu>
5727 2001-11-02 Fernando Perez <fperez@colorado.edu>
5724
5728
5725 * Python version check (>=2.1) added.
5729 * Python version check (>=2.1) added.
5726
5730
5727 * Added LazyPython documentation. At this point the docs are quite
5731 * Added LazyPython documentation. At this point the docs are quite
5728 a mess. A cleanup is in order.
5732 a mess. A cleanup is in order.
5729
5733
5730 * Auto-installer created. For some bizarre reason, the zipfiles
5734 * Auto-installer created. For some bizarre reason, the zipfiles
5731 module isn't working on my system. So I made a tar version
5735 module isn't working on my system. So I made a tar version
5732 (hopefully the command line options in various systems won't kill
5736 (hopefully the command line options in various systems won't kill
5733 me).
5737 me).
5734
5738
5735 * Fixes to Struct in genutils. Now all dictionary-like methods are
5739 * Fixes to Struct in genutils. Now all dictionary-like methods are
5736 protected (reasonably).
5740 protected (reasonably).
5737
5741
5738 * Added pager function to genutils and changed ? to print usage
5742 * Added pager function to genutils and changed ? to print usage
5739 note through it (it was too long).
5743 note through it (it was too long).
5740
5744
5741 * Added the LazyPython functionality. Works great! I changed the
5745 * Added the LazyPython functionality. Works great! I changed the
5742 auto-quote escape to ';', it's on home row and next to '. But
5746 auto-quote escape to ';', it's on home row and next to '. But
5743 both auto-quote and auto-paren (still /) escapes are command-line
5747 both auto-quote and auto-paren (still /) escapes are command-line
5744 parameters.
5748 parameters.
5745
5749
5746
5750
5747 2001-11-01 Fernando Perez <fperez@colorado.edu>
5751 2001-11-01 Fernando Perez <fperez@colorado.edu>
5748
5752
5749 * Version changed to 0.0.7. Fairly large change: configuration now
5753 * Version changed to 0.0.7. Fairly large change: configuration now
5750 is all stored in a directory, by default .ipython. There, all
5754 is all stored in a directory, by default .ipython. There, all
5751 config files have normal looking names (not .names)
5755 config files have normal looking names (not .names)
5752
5756
5753 * Version 0.0.6 Released first to Lucas and Archie as a test
5757 * Version 0.0.6 Released first to Lucas and Archie as a test
5754 run. Since it's the first 'semi-public' release, change version to
5758 run. Since it's the first 'semi-public' release, change version to
5755 > 0.0.6 for any changes now.
5759 > 0.0.6 for any changes now.
5756
5760
5757 * Stuff I had put in the ipplib.py changelog:
5761 * Stuff I had put in the ipplib.py changelog:
5758
5762
5759 Changes to InteractiveShell:
5763 Changes to InteractiveShell:
5760
5764
5761 - Made the usage message a parameter.
5765 - Made the usage message a parameter.
5762
5766
5763 - Require the name of the shell variable to be given. It's a bit
5767 - Require the name of the shell variable to be given. It's a bit
5764 of a hack, but allows the name 'shell' not to be hardwired in the
5768 of a hack, but allows the name 'shell' not to be hardwired in the
5765 magic (@) handler, which is problematic b/c it requires
5769 magic (@) handler, which is problematic b/c it requires
5766 polluting the global namespace with 'shell'. This in turn is
5770 polluting the global namespace with 'shell'. This in turn is
5767 fragile: if a user redefines a variable called shell, things
5771 fragile: if a user redefines a variable called shell, things
5768 break.
5772 break.
5769
5773
5770 - magic @: all functions available through @ need to be defined
5774 - magic @: all functions available through @ need to be defined
5771 as magic_<name>, even though they can be called simply as
5775 as magic_<name>, even though they can be called simply as
5772 @<name>. This allows the special command @magic to gather
5776 @<name>. This allows the special command @magic to gather
5773 information automatically about all existing magic functions,
5777 information automatically about all existing magic functions,
5774 even if they are run-time user extensions, by parsing the shell
5778 even if they are run-time user extensions, by parsing the shell
5775 instance __dict__ looking for special magic_ names.
5779 instance __dict__ looking for special magic_ names.
5776
5780
5777 - mainloop: added *two* local namespace parameters. This allows
5781 - mainloop: added *two* local namespace parameters. This allows
5778 the class to differentiate between parameters which were there
5782 the class to differentiate between parameters which were there
5779 before and after command line initialization was processed. This
5783 before and after command line initialization was processed. This
5780 way, later @who can show things loaded at startup by the
5784 way, later @who can show things loaded at startup by the
5781 user. This trick was necessary to make session saving/reloading
5785 user. This trick was necessary to make session saving/reloading
5782 really work: ideally after saving/exiting/reloading a session,
5786 really work: ideally after saving/exiting/reloading a session,
5783 *everything* should look the same, including the output of @who. I
5787 *everything* should look the same, including the output of @who. I
5784 was only able to make this work with this double namespace
5788 was only able to make this work with this double namespace
5785 trick.
5789 trick.
5786
5790
5787 - added a header to the logfile which allows (almost) full
5791 - added a header to the logfile which allows (almost) full
5788 session restoring.
5792 session restoring.
5789
5793
5790 - prepend lines beginning with @ or !, with a and log
5794 - prepend lines beginning with @ or !, with a and log
5791 them. Why? !lines: may be useful to know what you did @lines:
5795 them. Why? !lines: may be useful to know what you did @lines:
5792 they may affect session state. So when restoring a session, at
5796 they may affect session state. So when restoring a session, at
5793 least inform the user of their presence. I couldn't quite get
5797 least inform the user of their presence. I couldn't quite get
5794 them to properly re-execute, but at least the user is warned.
5798 them to properly re-execute, but at least the user is warned.
5795
5799
5796 * Started ChangeLog.
5800 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now